Durante a rotina de inicialização do meu código, eu uso para fazer coisas como:
clr r0 ; will always stay zero
e:
out PORTA, r0; initialize ports
out DDRA, r0
out PORTB, r0
...
Isso é realmente necessário? Ou posso ter certeza de que isso é feito automaticamente após a redefinição? Especialmente, posso confiar em todas as portas para serem definidas como entradas por padrão, para que não haja problemas com votações externas quando nenhum código for executado?
A inicialização da porta é SEMPRE uma boa idéia, independentemente do que diz a folha de dados.
Se a folha de dados não diz nada, é uma ideia absolutamente vital.
Você só precisa definir o conteúdo dos dados da porta se se preocupa com o que acontecerá quando o programa for executado.
Se você não se importa com o resultado, não precisa definir os bits de dados da porta :-).
Se os fabricantes disserem explicitamente nas folhas de dados que os bits de dados da porta estão configurados ou limpos, eles podem ser, mas ainda é realmente uma boa idéia inicializá-los de qualquer maneira. "Condições de contorno" são onde a maioria das coisas dá errado - por exemplo, início de um loop, final de um loop, ponto redondo de quebra circular do buffer, .... A inicialização do processador é um equivalente de hardware. Em um mundo real com ruídos, falhas e pessoas nele, estar no comando do destino de seus programas o máximo que puder é uma boa idéia. A inicialização da porta é uma parte fácil disso.
fonte
Nem os registros nem a SRAM são inicializados após a redefinição, apenas alguns dos registros periféricos. Você deve inicializar as coisas que usa.
fonte
UCSRC
na folha de dados. E as portas de E / S, especialmente a direção dos dados?