Daten aus Flash lesen

Gast #61774
Lesenswert?
• ▲
▼
Hallo,
ich versuche ein programm zu schreiben, dass beliebige bitfolgen aus
dem flash liest und diese dann einfach ausgibt.
dazu habe  ich mir das tutorial auf dieser seite durchgelesen und ein
programm danach geschrieben, aber es funzt zum verrecken nicht.
zwischendurch werden irgendwelche bitfolgen ausgegeben, aber nicht das
was ich haben will.
das ganze soll mal ein lichtspiel werden, die anordnung der leds kann
man in der angehängten datei sehen.
eigentlich dürfte es ja kein prob sein, die daten abwechselnd auf port
b bzw c auszugeben. (bei nem AT90S4433)
es soll jetzt so sein, dass ich ein paar bytes in den flash schreibe,
die dann in einer endlosschleife ausgegeben werden, therotisch kein
ding, aber praktisch.... g
wenn sich jetzt vielleicht mal jemand das prog anschauen könnte und mir
sagen könnte wo da die fehler sind, wär das schon sehr praktisch!
ich danke jetzt schonmal für jeden hinweis!
gruß
martin
Angehängte Dateien:
Gast #61775
Lesenswert?
• ▲
▼
du testest zwar auf ein Ende-Zeichen (0), aber das kommt in der
Datentabelle gar nicht vor. Also läuft es immer munter weiter, wenn der
flash-Bereich zu Ende ist, gehts wieder auf Adresse 0 mit dem
Programmcode als Daten weiter. Unprogrammierte Zellen haben den Wert
0xff, insofern ist deine Datentabelle nicht terminiert. Schreib ganz
hinten noch ein .db 0 ran, dann sollte es funktionieren.
Gast #61776
Lesenswert?
• ▲
▼
danke!
jetzt tut's zumindest besser als vorher, aber eigentlich müsste die
prozedur einen eintrag nach dem andren abarbeiten, tut sie aber nicht,
sonder er gibt kurz 0xff aus, und nach nem bestimmten abstand wieder.
wie kann das sein?
Gast #61778
Lesenswert?
• ▲
▼
ok, angenommen wir haben ein programmabschnitt

   daten:
     .db 0byyyyyyyyxxxxxxxx

wenn ich jetzt sage

   ldi ZL, LOW(daten*2)
   ldi ZH, HIGH(daten*2)
   lpm

was ist dann in r0 ?

und wenn ich jetzt sage

   adiw ZL,1
   lpm

was kommt dann?

kanns sein, dass erst ein byte aus der adresse gelesen wird (xxxxxxxx),
und dann nach "adiw ZL,1" das andere (yyyyyyyy) ?
aber in welcher reihenfolge?
Gast #61779
Lesenswert?
• ▲
▼
ja, an der ganzen Sache mit den 16bit ist was dran, lange nichts mehr in
Assembler gemacht :-)
Aber so wirds was:

.db 0b11110110, 0b11110110
.db 0b11101101, 0b11101101
.db 0b11011011, 0b11011011

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren