Во время процедуры инициализации моего кода я использую такие вещи, как:
clr r0 ; will always stay zero
а также:
out PORTA, r0; initialize ports
out DDRA, r0
out PORTB, r0
...
Это действительно необходимо? Или я могу быть уверен, что это происходит автоматически после сброса? В частности, могу ли я полагаться на то, что все порты будут установлены как входы по умолчанию, чтобы не было проблем с внешними напряжениями, когда код не выполняется?
Инициализация порта ВСЕГДА хорошая идея, независимо от того, что указано в техническом описании.
Если в техническом описании ничего не сказано, тогда это жизненно важная идея.
Вам нужно только определить содержимое данных порта, если вы заботитесь о том, что произойдет при запуске вашей программы.
Если вас не волнует результат, вам не нужно устанавливать биты данных порта :-).
Если производители прямо указывают в листах данных, что биты данных порта установлены или очищены, то они могут быть НО, но это все-таки действительно хорошая идея - инициализировать их самостоятельно в любом случае. «Граничные условия» - это то, где большинство вещей идет не так, как надо - например, начало цикла, конец цикла, круговая точка циклического переноса буфера, .... Запуск процессора является аппаратным эквивалентом. В реальном мире с шумом, глюками и людьми в нем, если вы отвечаете за судьбу ваших программ, то это действительно хорошая идея. Инициализация порта является легкой частью этого.
источник
Ни регистры, ни SRAM не инициализируются при сбросе, только некоторые из периферийных регистров. Вы должны инициализировать вещи, которые вы используете.
источник
UCSRC
в таблице. А как насчет портов ввода / вывода, особенно направления данных?