Hallo Forumsteilnehmer, habe bereits vor zwei Wochen mal mein Problem geschildert und auch gute Hilfe bekommen, bin beim Programmieren eines ATTiny12 aber auf noch ein Problem gestossen das ich gar nicht verstehe. Ich will anhand eines Wertes einen anderen Wert aus einer Tabelle im ROM auslesen. Hier meine zwei Beispiele, eines funktioniert, das andere nicht: ;************************************ ;so geht es... .def var = R21 .def delay = R23 ldi Zh, $02 ;setzt Zeiger auf $200 mov Zl, var ;pickt mir meinen Wert aus der Tabelle ab $200 lpm ;kopiert Wert aus Tabelle in R0 mov delay, R0 ;kopiert diesen Wert in meine Variable delay ;*************************************** ;hier bekomme ich als Ergebnis immer 0 in delay .def var = R21 .def delay = R23 ldi Zh, $02 ;setzt Zeiger auf $200 mov Zl, var ;pickt mir meinen Wert aus der Tabelle ab $200 lpm delay, Z ;kopiert Wert aus Tabelle angeblich direkt in delay (R23) ;Ergebnis hier: delay ist IMMER 0 !!! ; Meine Tabelle: .org $100 .DB 0,0,0,0,0,0,0,0,0,0,0,0,132,131,131,130,130,129,129,128 .DB 127 ; und so weiter, insgeamt 256 werte Der Befehl lpm delay, Z ist legal für den ATTiny12 und bringt keine Fehlermeldung. Der Simulator macht es (AVRStudio), das Register ist mit dem ausgelesenen Wert gefüllt. Mein delay im richtigen Leben ist aber immer 0, ist das ein Bug bei ATMEL? Warum muß ich über den Umweg R0 gehen? Frohe Ostern noch und danke für Eure Hilfe. Gruß Thomas
beim TINY12 ist halt nur der Befehl LPM implementiert mit R0 als Zielregister, ist halt kein ATmega Core.
Muß ich da noch dankbar für sein daß es den Befehl überhaupt gibt? Spaß beiseite, ich habe vorher definiert daß ich den Winzling benutze, wieso gibt das Studio dann keinen Fehler aus? Wenn es den Befehl für diesen Baustein nicht gibt sollte es solch einen Hinweis geben, kommt ja auch bei anderen Gelegenheiten. Trotzdem DANKE, Gruß Thomas
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.