Während der Initialisierungsroutine meines Codes mache ich folgende Dinge:
clr r0 ; will always stay zero
und:
out PORTA, r0; initialize ports
out DDRA, r0
out PORTB, r0
...
Ist das eigentlich nötig? Oder kann ich sicher sein, dass dies beim Zurücksetzen automatisch erfolgt? Kann ich mich insbesondere darauf verlassen, dass alle Ports standardmäßig als Eingaben festgelegt sind, damit bei externen Abstimmungen kein Problem auftritt, wenn kein Code ausgeführt wird?
Die Portinitialisierung ist IMMER eine gute Idee, unabhängig davon, was im Datenblatt angegeben ist.
Wenn das Datenblatt nichts aussagt, ist es eine äußerst wichtige Idee.
Sie müssen den Inhalt der Portdaten nur definieren, wenn Sie sich darum kümmern, was passiert, wenn Ihr Programm ausgeführt wird.
Wenn Ihnen das Ergebnis egal ist, müssen Sie die Portdatenbits nicht setzen :-).
Wenn Hersteller in den Datenblättern ausdrücklich sagen, dass Portdatenbits gesetzt oder gelöscht sind, sind sie möglicherweise ABER es ist NOCH eine wirklich sehr gute Idee, sie trotzdem selbst zu initialisieren. Unter "Randbedingungen" gehen die meisten Dinge schief - z. B. Beginn einer Schleife, Ende einer Schleife, runder Pufferumlaufpunkt, .... Der Prozessorstart ist ein Hardware-Äquivalent. In einer realen Welt mit Lärm und Störungen und Menschen darin ist es eine wirklich gute Idee, so viel wie möglich für das Schicksal Ihres Programms verantwortlich zu sein. Die Portinitialisierung ist ein einfacher Teil davon.
quelle
Weder Register noch SRAM werden beim Zurücksetzen initialisiert, nur einige der Peripherieregister. Sie sollten die von Ihnen verwendeten Elemente initialisieren.
quelle
UCSRC
im Datenblatt. Was ist mit den E / A-Ports, insbesondere der Datenrichtung?