Durante la rutina de inicialización de mi código, suelo hacer cosas como:
clr r0 ; will always stay zero
y:
out PORTA, r0; initialize ports
out DDRA, r0
out PORTB, r0
...
¿Es esto realmente necesario? ¿O puedo estar seguro de que esto se hace automáticamente al reiniciar? Especialmente, ¿puedo confiar en que todos los puertos se configuren como entradas de forma predeterminada para que no haya problemas con los votos externos cuando no se ejecuta ningún código?
Los puertos de E/S de un AVR se configuran en INPUT / Tri-State / Hi-Z (DDRx = 0x00) al reiniciar. La mayoría de los microcontroladores (¿si no todos?) tienen este comportamiento. Es el estado más seguro para un pin. Así que sí, puede confiar en que los puertos se configurarán automáticamente como entradas.
Algunos extractos del ATmega16 muestran exactamente eso:
Los pines del puerto C tienen tres estados cuando se activa una condición de reinicio, incluso si el reloj no está funcionando.
La inicialización del puerto SIEMPRE es una buena idea, independientemente de lo que diga la hoja de datos.
Si la hoja de datos no dice nada, entonces es una idea absolutamente vital.
Solo necesita definir el contenido de los datos del puerto si le importa lo que sucederá cuando se ejecute su programa.
Si no le importa el resultado, no tiene que configurar los bits de datos del puerto :-).
Si los fabricantes dicen explícitamente en las hojas de datos que los bits de datos del puerto están configurados o borrados, entonces pueden estarlo, PERO TODAVÍA es una muy buena idea inicializarlos usted mismo de todos modos. Las "condiciones de contorno" son donde la mayoría de las cosas van mal, por ejemplo, el comienzo de un bucle, el final de un bucle, el punto de redondeo del búfer circular, ... . El inicio del procesador es un equivalente de hardware. En un mundo real con ruido y fallas y gente en él, estar a cargo del destino de tus programas tanto como puedas es una muy buena idea. La inicialización del puerto es una parte fácil de esto.
Ni los registros ni la SRAM se inicializan al reiniciar, solo algunos de los registros periféricos. Debes inicializar las cosas que usas.
UCSRC
en la hoja de datos. ¿Qué pasa con los puertos de E/S, especialmente la dirección de datos?
Stefan Paul Noack
ratones
m.alin
Stefan Paul Noack
ratones