Hallo, auf meinem AVR (AT90S2313) sind lt. Doku die oberen acht Register jeweils als Registerpaar anzusprechen, also r24/r25 quasi als ein Register. Ich habe nun folgenden Code: .def pulsesL = r24 .def pulsesH = r25 adiw pulsesL, 1 ; Zaehlerwert inkrementieren Wenn ich die Doku zu adiw richtig verstanden habe, dann wird beim Overflow von r24 dieser nach r25 weitergegeben. Ich müsste also bis 65535 zählen können. Bei mir wird aber nach 255 wieder auf Null gesprungen. Warum? Gruß Uwe
Hallo Uwe, versuche mal das: .def pulsesL = r24 .def pulsesH = r25 adiw pulsesH:pulsesL, 1 ; Zaehlerwert inkrementieren Gruß, Arno
Hmpf. Hätte man eigentlich selber drauf kommen können. Steht ja auch genauso in der Befehlsreferenz. Das wars aber nicht. Das Problem scheint zu sein, das es trotz das es so in der Doku steht einfach nicht mit r24/r25 funktioniert. Ich habe es testweise mal mit XL/XH versucht (also r26/r27), und siehe da: adiw r26, 1 macht genau das was es soll. Beim Overflow von r26 wird entsprechend r27 hochgezählt. Also werde ich wohl für meine Zwecke r26/r27 missbrauchen, auch wenns mir nicht so recht gefällt. Gruß Uwe
Ich habe mal beide Versionen mit r24/r25 im Studio simuliert und es gingen beide. Der Fehler liegt nicht bei den beiden Registern, sondern woanders. Womit hast du das Program geschrieben und assembliert? Gruß, Arno
Hast du vergessen auf AT90S2313 umzustellen, im Listing steht oben noch: ;* Target : AT90S1200 @ 4Mhz Der AT90S1200 kennt den Befehl "adiw" nicht, kann es sein das da was falsch eingestellt ist im Studio oder Assembler? Gruß, Arno
Nee, passt schon, war nur noch ein alter Kommentar. Gruß Uwe
Könnte es sein, daß der 2313 das nicht kann? Im Datenblatt des 2313 ist nur die Rede von X,Y,Z. Das Addieren von R24/R25 steht nur im allgemeinen Instruction Set. Wäre nicht der einzige Befehl, der beim 2313 nicht zur Verfügung steht.
Hallo, "Das Addieren von R24/R25 steht nur im allgemeinen Instruction Set." Das geht beim 2313 auch. r25 wird dann bei Überlauf des r24 weitergezählt. Erfordert Befehl adiw. GRuß
kann ich bestätigen, habe ich auch schon mal in einem Programm eingesetzt.
Also ich habe nicht ins Datenblatt geschaut, sondern in zwei meiner Bücher. Und die behaupten auch beide, das es beim 2313 geht. Es werden wohl kaum beide Autoren falsch abgeschrieben haben ;-) Na ja, jetzt läufts via XL/XH, bei dem projekt brauche ich die nicht. Gruß Uwe
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.