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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.