Durante la rutina de inicialización de mi código, uso para 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 manera predeterminada para que no haya problemas con las votaciones externas cuando no se ejecuta ningún código?
La inicialización de puertos 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 completamente vital.
Solo necesita definir el contenido de los datos del puerto si le preocupa 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 ser 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 salen mal, por ejemplo, el inicio de un bucle, el final de un bucle, el punto circular de envoltura del búfer circular, .... El inicio del procesador es un equivalente de hardware. En un mundo real con ruido, problemas técnicos y personas, estar a cargo del destino de sus programas tanto como sea posible es una muy buena idea. La inicialización de puertos es una parte fácil de esto.
fuente
Ni los registros ni la SRAM se inicializan al reiniciar, solo algunos de los registros periféricos. Debes inicializar las cosas que usas.
fuente
UCSRC
en la hoja de datos. ¿Qué pasa con los puertos de E / S, especialmente la dirección de datos?