Dies ist eher eine theoretische Frage ... (Auch meine erste auf Stack Overflow)
Ich frage mich, was mit den Registern des Atmel AVR-Mikrocontrollers (dh ATTINY85) während eines Befehls mit mehreren Zyklen passiert.
dh ADIW
es dauert zwei Zyklen, um einem Zwei-Byte-(Wort-)Register ein Direktwert 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 irgendwo definiert, wo ich ihn lesen kann? Und was ist mit den anderen Multi-Cycle-Anweisungen?
Im Wesentlichen interessiert mich der Zustand des Mikrocontrollers nach jedem einzelnen Zyklus, auch innerhalb von Anweisungen mit mehreren Zyklen.
Hier meine Deutung:
Damit ein 8-Bit-uC 16-Bit-Mathematik durchführen kann, muss es zuerst die niedrigstwertigen Bits berechnen und dann zu den höchstwertigen Bits wechseln, sodass der erste Zyklus 8 Bits mit einem Übertrag hinzufügt und dann diesen Übertrag zu den höheren 8 hinzufügt -Bits.
Im abstrakten Sinne kann 8-Bit keine 16-Bit-Berechnung in einem einzigen Befehl durchführen, da sich die Ergebnisse gegenseitig beeinflussen.
Ignacio Vazquez-Abrams
Tristan
Chris Stratton
Tristan
Tristan
ADIW
das untere Ergebnisregister nach dem ersten Zyklus und das obere Ergebnisregister nach dem zweiten Zyklus aktualisiert wird. Dazu habe ich die MCU manuell über den Ausgang eines anderen Chips extern getaktet und die ursprüngliche MCU mitten in derADIW
Anweisung zurückgesetzt. Beim Zurücksetzen testete die MCU dann ihre unteren und oberen Ergebnisregister, und interessanterweise wurde nur das untere Ergebnisregister aktualisiert. Wenn ich stattdessen die MCU nach dem vollständigenADIW
Befehl zurücksetze, wurden sowohl das untere als auch das höhere Ergebnisregister aktualisiert.Chintalagiri Shashank
Herr Jo Black
DreiPhasenEel