Podczas procedury inicjalizacji mojego kodu używam do takich rzeczy jak:
clr r0 ; will always stay zero
i:
out PORTA, r0; initialize ports
out DDRA, r0
out PORTB, r0
...
Czy to jest rzeczywiście konieczne? Czy mogę być pewien, że nastąpi to automatycznie po zresetowaniu? W szczególności, czy mogę polegać na domyślnym ustawieniu wszystkich portów jako danych wejściowych, aby nie było problemu z głosowaniem zewnętrznym, gdy żaden kod nie jest wykonywany?
Inicjalizacja portu ZAWSZE jest dobrym pomysłem, niezależnie od tego, co mówi karta danych.
Jeśli arkusz danych nic nie mówi, jest to absolutnie niezbędny pomysł.
Musisz tylko zdefiniować zawartość danych portu, jeśli zależy Ci na tym, co stanie się po uruchomieniu programu.
Jeśli nie zależy ci na wyniku, nie musisz ustawiać bitów danych portu :-).
Jeśli producenci wyraźnie stwierdzają w arkuszach danych, że bity danych portu są ustawione lub wyczyszczone, mogą być, ALE to i tak naprawdę naprawdę dobry pomysł, aby je zainicjować. „Warunki brzegowe” są tam, gdzie większość rzeczy idzie źle - np. Początek pętli, koniec pętli, okrągły punkt owinięcia bufora, ... Uruchamianie procesora jest równoważne sprzętowo. W prawdziwym świecie, w którym panuje hałas, usterki i ludzie, bycie odpowiedzialnym za losy swoich programów jest naprawdę dobrym pomysłem. Inicjalizacja portu jest łatwą częścią tego.
źródło
Ani rejestry, ani SRAM nie są inicjowane po resecie, tylko niektóre rejestry peryferyjne. Powinieneś zainicjować rzeczy, których używasz.
źródło
UCSRC
w arkuszu danych. A co z portami I / O, szczególnie w kierunku danych?