Forum: Mikrocontroller und Digitale Elektronik Tabelle auslesen in AVRStudio


von Thomas Schattat (Gast)


Lesenswert?

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

von mmerten (Gast)


Lesenswert?

beim TINY12 ist halt nur der Befehl LPM implementiert mit R0 als
Zielregister, ist halt kein ATmega Core.

von Thomas Schattat (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.