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


von Nico (nico_l)


Angehängte Dateien:

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.

von spess53 (Gast)


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

von Nico (nico_l)


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.

von spess53 (Gast)


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

von Nico (nico_l)


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.

von Karl H. (kbuchegg)


Lesenswert?

Hast du deinen Code ohne Warnungen/Errors durch den Compiler gebracht?

Schau dir mal diesen Auszug aus lcd_init an
1
  lcd_write(0b00100000, 0);
2
  lcd_enable();
3
  _delay_ms(5);
4
  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.

von Nico (nico_l)


Lesenswert?

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

von Karl H. (kbuchegg)


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.

von Nico (nico_l)


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.

von Karl H. (kbuchegg)


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?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.