Forum: Mikrocontroller und Digitale Elektronik lcd initialisiert nur ein mal (ATmega8)


von Johannes H. (jo43)


Lesenswert?

Hallo zusammen,

folgendes Problem: Ich habe ein 2x16 LCD-Modul an meinen ATmega8 
angeschlossen und die Dateien lcd-routines.c /.h, die sich hier im 
AVR-GCC-Tutorial finden
(http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial/LCD-Ansteuerung)
per copy-and-paste übernommen und das Beispiel 1 kompiliert.
Hat alles prima funktioniert, ich konnte auf Anhieb 'Test' und 'Hello 
World' wunderschön auf dem Display lesen. Soweit gut. Aber dann.

Ich habe in die while-Schleife folgendes eingebaut (#include 
<util/delay.h> natürlich):
1
 _delay_ms(1000);
2
lcd_setcursor(0,1);
3
lsd_string("Haensel");
4
_delay_ms(1000);
5
lcd_setcursor(8,1);
6
lsd_string("liebt");
7
_delay_ms(1000);
8
lcd_setcursor(0,2);
9
lsd_string("Gretel");
10
_delay_ms(1000);
11
lcd_clear();

Compiler läuft durch, Prog. auf den Chip -> Zeichenmurks, verschiedene 
ooo.

Das eigentlich kuriose ist aber: Ich habe nach hin und her wieder die 
while-Schleife leer gemacht, also das originalfile wieder hergestellt - 
compilieren und übertragen geht immer (Erfolgsmeldung AVRDUDE). Jetzt 
Initialisiert aber das LCD-Modul wohl nicht mehr: Die erste Zeile zeigt 
nur helle Felder, die zweite Zeile zeigt nur die Hintergrundfarbe ohne 
Zeichen. Weder 'Test' noch 'Hello World' sind sichtbar. Woran kann es 
liegen, wenn schon alles funktioniert hat?

Ich habe leider keine Hinweise auf Probleme mit den Dateien aus dem 
Tutorial gefunden.

Vielen Dank und Grüße
Johannes

von Thomas (Gast)


Lesenswert?

Hallo Johannes,

wäre schön wenn du hierzu mal wirklich den exakten Code 1zu1 postest den 
du verwendet hast.

Ich bezweifle dass die Funktion lsd_string()* irgendwas sinnvolles 
ausgibt.
Wobei wirre Zeichen für LSD wohl sinnvoll sein dürften ;-)

Thomas

* Es muss lcd_string() heißen, und nicht lsd_string()

von Johannes H. (jo43)


Angehängte Dateien:

Lesenswert?

Hallo Thomas,

danke für die Antwort. lsd_string war natürlich ein Tippfehler, im 
Programm hatte ich es aber richtig, sonst hätte der Compiler wohl auch 
gemeckert.

Die Files, die ich angehängt habe, habe ich jetzt so compiliert und 
aufgespielt - ohne Fehlermeldung. Aber das Display zeigt wieder nur 
einen massiven Balken in der ersten Zeile und in der zweiten nichts.

Ist das Fehlerbild des Displays irgendwie typisch oder bekannt?

Schöne Grüße
Johannes

von spess53 (Gast)


Lesenswert?

Hi

>Ist das Fehlerbild des Displays irgendwie typisch oder bekannt?

Wenn man es richtig macht, weder das eine noch das andere. Auf jeden 
Fall fehlt vor der lcd_init eine Pause >15ms.

MfG Spess

von Mucki (Gast)


Lesenswert?

Johannes Heß schrieb:
> Ist das Fehlerbild des Displays irgendwie typisch oder bekannt?

Klar, das Bild deutet darauf hin, dass das Display nicht (richtig) 
initialisiert wurde. Kann ein Software-Problem sein, aber auch an der 
Hardware liegen (z.B. Fehlendes Enable-Signal).

Viele Grüße und schnellen Erfolg :-)

von Karl H. (kbuchegg)


Lesenswert?

Wenns schon mal geklappt hat, jetzt aber nicht mehr, dann ist das auch 
ein guter Grund, die Verkablung mal auf gerissene Kabel oder 
Wackelkontakte zu untersuchen.

von Johannes H. (jo43)


Lesenswert?

Es geht!!!!

Danke für Eure Hilfe. Echt ein Dreck. Ich hatte eine Stiftleiste ans 
Display gelötet, damit ich es schön auf das Steckbrett stecken kann. 
Eine der Löststellen muss gleich am Anfang gebrochen sein. Jedenfalls 
habe ich alles nochmal nachgelötet und jetzt lieben Haensel und Gretel 
sich im LSD-Rausch sinnlos blinkend.

Nochmal Danke allen.
Johannes

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.