AVR (attiny24) se reinicia y controla más de 5 salidas sin carga

3

Tengo el siguiente código de parpadeo ejecutándose en un attiny24 con los fusibles predeterminados, a través de Atmel Studio 6. Si configuro DDRA en cualquier combinación de 5 pines (o establezco DDRA en 0xFF y luego parpadeo, configurando PORTA en cualquier combinación de 5 pines) entonces funciona, pero tan pronto como uso 6 pines, se restablece. El interruptor PORTB.0 al inicio muestra el restablecimiento.

La causa habitual de este tipo de comportamiento es el suministro o el consumo excesivo de la corriente en las salidas, sin embargo, esto sucede cuando las salidas se dejan abiertas, no hay nada adjunto, por lo que no puedo ver su causa. ¿Alguna sugerencia?

int main(void)
{
  // DEBUG: Toggle PORTB.0 to demonstrate AVR reset.
  DDRB = 0x01; PORTB ^= 0x01; _delay_ms(10); PORTB ^= 0x01;

  // Output 6 pins at once (change to 5 pins and AVR does not reset).
  DDRA = 0b00111111;
  for (;;)
  {
    PORTA = 0xff;
    _delay_ms(1000);
    PORTA = 0x00;
    _delay_ms(1000);
  }
}

He probado los sospechosos habituales, la fuente de alimentación, la ejecución con AVRISP desconectado y asegurando que hay un límite entre + VE y GND. También probé la configuración de pines individualmente y tan pronto como llega a 6 se restablece.

    
pregunta dibnah

1 respuesta

1

El problema es que hay un pico al encender todos los pines, a pesar de que no están cargados, y esto consumió suficiente energía como para causar un apagón.

Las notas de diseño de Atmel especifican que la tapa debe estar lo más cerca posible de los pines y funcionó cuando coloco una tapa de 100nF directamente en el VCC y GND del chip en la placa de pruebas. No había una gran brecha entre el chip y mis rieles de energía, solo un poco más de una pulgada, por lo que esto demuestra lo importante que es colocar la tapa correctamente.

He usado muchos AVR y este parece ser particularmente implacable en este aspecto, especialmente porque las salidas no generaban ninguna corriente externa.

    
respondido por el dibnah

Lea otras preguntas en las etiquetas