Dies ist eher eine theoretische Frage ... (Auch meine erste zu Stack Overflow)
Ich frage mich, was mit den Registern des Atmel AVR-Mikrocontrollers (dh ATTINY85) während eines Mehrzyklusbefehls passiert.
Das heißt, es ADIW
dauert zwei Zyklen, um einem Zwei-Byte-Register (Wortregister) ein Sofortregister hinzuzufügen.
Ich stelle mir vor, dass während des ersten Zyklus eines der Bytes bearbeitet wird und dann im nächsten Zyklus das andere Byte bearbeitet wird. Aber ist dieser Prozess überall dort definiert, wo ich lesen kann? Und was ist mit den anderen Mehrzyklusanweisungen?
Im Wesentlichen interessiert mich der Zustand des Mikrocontrollers nach jedem einzelnen Zyklus, auch innerhalb von Anweisungen mit mehreren Zyklen.
ADIW
das untere Ergebnisregister nach dem ersten Zyklus und das obere Ergebnisregister nach dem zweiten Zyklus aktualisiert werden. Dazu habe ich die MCU manuell extern über den Ausgang eines anderen Chips getaktet und die ursprüngliche MCU in der Mitte des ADIW
Befehls zurückgesetzt. Beim Zurücksetzen testete die MCU dann ihre niedrigeren und höheren Ergebnisregister, und interessanterweise wurde nur das niedrigere Ergebnisregister aktualisiert. Wenn ich stattdessen die MCU nach der vollständigen ADIW
Anweisung zurücksetze , wurden sowohl das niedrigere als auch das höhere Ergebnisregister aktualisiert.