Forum: Mikrocontroller und Digitale Elektronik LCD funktioniert nur beim On-Chip-Debugging


von Andy (Gast)


Lesenswert?

Sorry, dass ich den 1000000sten Eintrag zu dem Thema eröffne, aber ich 
werd einfach nirgends fündig.

Ich habe ein LCD 2x16 (LMB162AFC) mit nem Mega16, 8MHz interner Osz. am 
laufen. Ich verwende die Initialisierungen etc (lcdroutines.h) laut 
Tutorial. Ausgeben möchte ich den ADC-Wert der an PA0 angelegten 
Spannung. Beim laufenlassen nach dem Programmieren wird auf dem Display 
nichts angezeigt, beim debugging werden die Zeichen aber wie gewollt 
nacheinander ins LCD geschoben. Beim Step-by-Step debugging ist mir 
aufgefallen, dass der Code in der Funktion lcd_string(char *data) 
hängenbleibt, nachdem das letzte Zeichen geschrieben wurde.

Die Ausgabe auf dem LCD hat folgende Form: "ADC Wert: 222". Dabei wird 
zuerst über lcd_string("ADC Wert: ") der immer gleichbleibende 
textbaustein gesendet, in der nächsten zeile dann der aktuelle adc-wert 
über lcd_string(Buffer), wobei in Buffer mit itoa der adc-wert 
geschrieben wurde.

Setze ich beim debugging nen breakpoint nach dem senden der ersten 
zeichen ("ADC Wert:") und lass das programm laufen, dann werden die 
zeichen auch nicht gesendet, nur beim einzelschritt-debugging werden sie 
gesendet.

von Matthias (Gast)


Lesenswert?

Dann zum 1000sten Mal die Standardantwort für alle die es nicht im 
Tutorial oder den anderen Threads gefunden haben:

1. Es gibt ein Busy Flag bei den LCDs

2. Das ist dann mit 100%iger Sicherheit ein Timingproblem!

Busy Flag nicht oder nicht sauber abgefragt und das LCD mit Daten 
überrannt!
Es gibt dazu z.B. auf Sprut.de eine ausführliche Abhandlung oder im 
Datenblatt.

Ist es denn so schwer die Dokus zu lesen oder die Suchfunktion im Forum 
zuu benutzen?

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.