www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Aus dem Flasch Werte Laden...


Autor: Freak5 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"Für das Lesen aus dem Programmspeicher gibt es nur den Zeiger Z und
den Befehl LPM. Er lädt das Byte an der Adresse Z in das Register R0.
Da im Programmspeicher jeweils Worte, also zwei Bytes stehen, wird die
Adresse mit zwei multipliziert und das unterste Bit gibt jeweils an, ob
das untere oder obere Byte des Wortes im Programmspeicher geladen werden
soll. Also etwa so:

   LDI ZH,HIGH(2*Adresse)
   LDI ZL,LOW(2*Adresse)
   LPM
"
Da das Register r0 nur 8Bit breit ist, wie kann ich das Word, was ich
gespeichert habe z.B.:
.db 0b00000000, 0b11111111
Einlesen? Kann ich jetzt zweimal LPM aufrufen und habe erst die 0 und
danach die 1 im ersten Register?

Autor: ...HanneS... (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kommt auf den AVR an.
Bei einigen neueren AVRs kannst du nämlich bei LPM auch das
Zielregister angeben und das Inkrementieren des Pointers veranlassen.

 lpm r16,z+
 lpm r17,z+

Sollte dein AVR das noch nicht können, dann musst du nach dem ersten
LPM den Z-Pointer erhöhen (adiw zh:zl,1) und den Inhalt von r0
woandershin kopieren (mov r1,r0).

...

Autor: dave (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nur weil du LPM aufrufst, wird das Z-Register (r31:r30) nicht erhöht.

Du musst also sowas machen:

   LDI ZH,HIGH(2*Adresse)
   LDI ZL,LOW(2*Adresse)
   LPM r0, z+
;  LPM r16, z+
Mit dem Befehl "LPM Rd, z+" wird das Byte geladen und Z erhöht. Ich
denke, den Befehl gibts nur bei den Mega (jedenfalls habe ich den im
m32 Datenblatt und im Tutorial ist es auf die Methode:
 LPM          ;(in r0)
 ADIW zl, 1
 LPM          ;(in r0)

dave

Autor: Freak5 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also kann der Z-Pointer nicht nur Words, sondern auch Bytes adressieren?
Tanke! Das mit der Registerangabe versuche ich mal. Ich habe einen
mega16.

Autor: ...HanneS... (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tippe doch mal in AVR-Studio "lpm" ein und drück mal die F1-Taste,
während der Cursor in "lpm" steht.

...

Autor: Freak5 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich wusste gar nicht, dass es Assembler mit so einem Luxus geht. Danke.

Das Problem ist mehr als gelöst.

Autor: ...HanneS... (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Na irgendwas Sinnvolles muss doch in einem über 31MB großen Archiv drin
sein...

;-)

...

Autor: Martin S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"Aus dem Flasch Werte Laden"

Und ich frag mich beim Anblick des Betreffs, was der wohl mit der
Flasch(e) macht, und welcher Laden(geschäft) da wohl gemeint sei ...

DAs wahr wohl die ganz falsche Assoziation....

Autor: ...HanneS... (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kommt aber gut...

Aber als Leser dieses Forums ist man inzwischen sehr tolerant, was
Schreibfehler betrifft.

...

Autor: Freak5 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Verdammt. Aber wenigstens lernt man dabei was. Wenn ich weiterhin so
wenig schlafe, dann mache ich die Fehler in der Schule auch noch. Und
ich mus noch Bibelstellen interpretieren und Latein übersetzen...
Naja ich fange mal lieber an, bevor ich dazu nicht mehr fähig bin.

Das Programm ist jetzt übrigens fertig. Ich kann alle Werte, die ich in
ein Display schreiben will in das Flash schreiben. Daraus werden diese
geladen, umgestellt und über ein Schiftregister ausgegeben. Ich hoffe
nur, dass ich jetzt nicht die High und die Low Bits vertauscht habe...

Naja ich muss Hausarbeiten machen Cu

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.