mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Daten aus Flash lesen


Autor: Martin Jansen (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Martin Jansen (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Ano Nymus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
.db 0bxxxxxxxx
.db 0byyyyyyyy

macht im Speicher 11111111 xxxxxxxx 11111111 yyyyyyyy
Der Speicher ist doch 16-bittig!

also besser

.dw 0byyyyyyyyxxxxxxxx

Autor: Martin Jansen (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Martin Jansen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
danke euch, ich werds versuchen!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.