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 ADIWdauert 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.
ADIWdas 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 ADIWBefehls 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 ADIWAnweisung zurücksetze , wurden sowohl das niedrigere als auch das höhere Ergebnisregister aktualisiert.