mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik LCD-Tutorial - Routine springt falsch


Autor: Matthias S. (da_user)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe mir hier aus dem Tutorial die LCD-Routine heruntergeladen und 
wollte mit der einen Text ausgeben, hier der kurze Quellcode:

.include "m32def.inc"
.include "lcd_routines.asm"


.def temp1 = r16
.def temp2 = r17
.def temp3 = r18

    ldi temp1, LOW(RAMEND)
    out SPL, temp1
    ldi temp1, HIGH(RAMEND)
    out SPH, temp1

    rcall lcd_init
    rcall lcd_clear

    ldi ZL, LOW(text*2)
    ldi ZH, HIGH(text*2)

    rcall lcd_flash_string


loop: rjmp loop

text:
  .db "Hallo Welt!",0

Durch den Debugger habe ich herausbekommen, dass die lcd_routines beim 
intialisieren des Displays beim ersten "ret" in der Routine LCD_Enable 
falsch zurückspringt:

 ;sendet ein Datenbyte an das LCD
lcd_data:
[...]
           rcall lcd_enable
           andi  temp2, 0b00001111
[...]
lcd_enable:
[...]
           ret
[...]

Hier springt der Debugger nicht zu der Zeile "andi [...]" sondern auf 
den ersten Befehl nach lcd_data. Da ich noch relativ unerfahren mit dem 
Zeug bin: Wo kann ich nach meinem Fehler suchen? Wie gesagt, die Routine 
selbst ist hier heruntergeladen und es wurden nur die Portpins geändert.

Autor: Matthias S. (da_user)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok, gerade den Fehler herausbekommen:

dadurch dass ich die Routine der übersichtlichkeit halber am Anfang 
"includen" wollte, wird diese als erstes durchgearbeitet und dann 
stimmen die Stack-Adressen noch nicht.

Trotzdem scheint das Ding das LCD nicht richtig zu initialisieren... 
erst seitdem ich die runtergeladene Routine benutze, mit der alten gings 
einwandfrei... hmm.. ma weitergucken ;-)

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.