mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik 2.Zeile LCD nicht erreichbar


Autor: Nico L. (nico_l)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Ich habe mir von MyAVR ein Entwicklungsboard gekauft und selber 
zusammengelötet. Doch funktioniert dieses nicht so richtig. Wenn ich in 
die 2. Zeile springen will dann funktioniert es einfach nicht. Dasselbe 
gilt auch wenn ich keine Libs nutze sondern alles von Hand mache. Das 
heisst dass ich die Adresse 145 nutze, also irgendwo zweite Zeile, und 
ich die Position auslese dann zeigt er mir trotzdem 128 an(Ende erste 
Zeile). Aus meiner Sicht stimmt auch die Initialisierung da ich sie vom 
Datenblatt übernommen habe.

Ich weiss echt nicht was das Problem sein könnte. Auch alle 
Beispielprogramme funktionieren nicht.

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

> Das heisst dass ich die Adresse 145 nutze, also irgendwo zweite Zeile, und
>ich die Position auslese dann zeigt er mir trotzdem 128 an(Ende erste
>Zeile). Aus meiner Sicht stimmt auch die Initialisierung da ich sie vom
>Datenblatt übernommen habe.

Wie kommst du auf diese Adressen?

Erste Zeile:  0x00...0x0F
Zweite Zeile: 0x40...0x4F

MfG Spess

Autor: Nico L. (nico_l)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ist ein 2x16 Display. 145 ist nur ein Test-Wert und völlig erfunden. 
128 ist die höchste erreichbare Adresse, welche ich setzen kann. 
Allerdings stimmt deine Theorie dass die Adresse 64 der Anfang der 
2.Zeile sei nicht.

Wen ich versuche einen so langen String auszugeben dass er auf die 
nächste Zeile springen sollte dann fängt er auf der 1. Zeile vorne an.

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>128 ist die höchste erreichbare Adresse, welche ich setzen kann.

Nein. Die höchste Adresse, die der 'Set DD-Ram Address'-Befehl zulässt, 
ist 127

>Allerdings stimmt deine Theorie dass die Adresse 64 der Anfang der
>2.Zeile sei nicht.

Keine Theorie, sondern dein Datenblatt S.10.

MfG Spess

Autor: Nico L. (nico_l)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Problem hat sich von selbst erledigt!?!??? Ich habe das Projekt 
nicht geändert oder sonst etwas gemacht. Nur einmal neu kompliert und 
siehe da, es funktioniert. Ich habe mich jetzt immer wieder drangesetzt 
und versuchte alles mögliche und funktioniert hat es nie.

Wahrscheinlich hab ich immer zu weit gesucht.

Danke.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast du deinen Code ohne Warnungen/Errors durch den Compiler gebracht?

Schau dir mal diesen Auszug aus lcd_init an
  lcd_write(0b00100000, 0);
  lcd_enable();
  _delay_ms(5);
  lcd_write(ob00101000, 0);

Achte auf die letzte Binärzahl. Das ist da vorne keine 0 sondern ein 
kleines o.
Was immer das auch macht, es macht auf jeden Fall nicht das Gewünschte, 
nämlich das Display auf 2 Zeilen zu setzen und damit gilt der SetFunc 
Befehl unmittelbar davor, der das LCD auf 1 Zeile setzt.

Ob ich jetzt noch rausfinden will, wieso das überhaupt compiliert, weiß 
ich noch nicht. Auf jeden Fall solltest du noch den Compiler Output 
studieren, denn ich denke das wird nie und nimmer durch den Compiler 
laufen und in Wirklichkeit läuft bei dir alter Code auf dem µC. Der 
Compiler sieht ob00101000 als Name einer Variablen an, die nicht 
existiert.

Autor: Nico L. (nico_l)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das hatte ich gerade nach dem ersten Beitrag geändert dann hatte es aber 
immer noch nicht funktioniert.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nico L. schrieb:
> Das hatte ich gerade nach dem ersten Beitrag geändert

Vielen Dank, dass ich 20 Minuten lang deinen Code Zeichen für Zeichen 
absuchen durfte.

Autor: Nico L. (nico_l)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Allerdings war das Problem dass AVR-Studio die Header erst in der neuen 
Version kompliert wenn sie gespeichert sind. Dann hatte ich 
wahrscheinlich immer die alte Version des Headers drin und die neue 
Version hatte eine ganz neue Version der Initialisierung drin. Die alte 
funktionierte natürlich nicht, aber diese wurde immer verwendet bis ich 
dann per Zufall das bemerkte. Das wusste ich auch nicht und es tut mir 
Leid.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nico L. schrieb:
> Allerdings war das Problem dass AVR-Studio die Header erst in der neuen
> Version kompliert wenn sie gespeichert sind.

Hast du den Header File mit ins Projekt aufgenommen?

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.