Forum: Mikrocontroller und Digitale Elektronik LCD kaputt?


von Daniel Nöthen (Gast)


Lesenswert?

Hallo,

ich habe hier ein 2x16 LCD von Displaytech.
Beim ersten Betrieb lief es wunderbar. Es hat den Text so angezeigt wie
ich es wollte. Ich habe etwas in beide Zeilen geschrieben.
Als ich noch was an der Software geändert habe und diese anschliessend
testen wollte, versagte das LCD. Ich sehe jetzt nur noch in der 1.
Zeile einen schwarzen Balken und in der zweiten Zeile nichts. An der
Software liegt es nicht, es funktioniert noch nicht einmal mehr das
"Test" Programm aus dem Tutorial. Die Verbindungen habe ich auch
überprüft.
Kontrast ist auch in Ordnung.
Als Spannungsversorgung nehme ich ein 12V Steckernetzteil und regle
diese Spannung mit einem 7805 auf 5V runter.
Ist das Ding jetzt etwa schon kaputt? Oder muss ich noch irgendwas
anderes beachten, wenn ich die DD-Ram Adresse mal geändert habe?

Gruß
Daniel

von Daniel Nöthen (Gast)


Lesenswert?

Achja, ich benutze einen Atmega8. Diesen habe ich aber auch schon mit
einem neuen ausgetauscht.

von Mr_Boertsch (Gast)


Lesenswert?

Also wenn das display oben einen balken und unten nichts hat, dann ist
es nicht initialisiert.

Wie siehts mit der initialisierung aus? hast du die Zeiten eingehalten?

von dave (Gast)


Lesenswert?

Ich hab gestern etwas zu viel gefeiert... Heut kann ich ausnahmsweise
mal nicht hellsehn ==> ohne sourcecode läuft wohl nix.

Vermutung vielleicht:
 Es liegt an der Init-Routine
 Timing (Routine zu schnell)


dave

von crazy horse (Gast)


Lesenswert?

Am Port C?

von crazy horse (Gast)


Lesenswert?

vergiss es, das war Quatsch, war in Gedanken beim Mega16, da ist oft die
JTAG-Fuse das Problem.

von Daniel Nöthen (Gast)


Lesenswert?

Sourcecode ist dieser, ich habe nur PORTD mit PORTC ersetzt:
http://www.mikrocontroller.net/sourcecode/tutorial/lcd-test.asm
http://www.mikrocontroller.net/sourcecode/tutorial/lcd-routines.asm

Ich spiel mal bisschen mit dem Timing rum. Vielen dank für die sehr
raschen antworten :)

Gruß
Daniel

von Mr_Boertsch (Gast)


Lesenswert?

probiere bei den ersten drei mal warten das dritte mal
länger...hmmm...das ist jetzt doof zum erklähren...

lcd_init:
           ldi  temp3,50
powerupwait:
           rcall  delay5ms
           dec  temp3
           brne  powerupwait
           ldi temp1, 0b00000011        ;muss 3mal hintereinander
gesendet
           out PORTD, temp1             ;werden zur Initialisierung
           rcall lcd_enable             ;1
           rcall delay5ms
           rcall lcd_enable             ;2
           rcall delay5ms
hier sollte es länger sein ich warte meistens 120ms
           rcall lcd_enable             ;und 3!

von Mr_Boertsch (Gast)


Lesenswert?

sorry vergiss es.... habe ms und us verwechselt

von Jens123 (Gast)


Lesenswert?

endweder das, oder die Frequenz des Controllers etwas runterdrosseln
sprich von 8MHz auf 4MHz das hatte be imri geholfen


Gruss Jens

von Daniel Nöthen (Gast)


Lesenswert?

Also ich hab jetzt mal die länge von Powerupwait verdoppelt und es geht
nun!
Komisch das es Anfangs auch so ging.

Danke nochmal. Jetzt kann ich ja wieder in Ruhe weiter basteln :)
@Mr_Boertsch: Deinen Vorschlag werde ich auch mal mit einbauen.


Gruß
Daniel

von Mr_Boertsch (Gast)


Lesenswert?

Je nachdem kann es natürlich auch sein, das deine Speisung etwas träge
ist. Dadurch ist das powerup für den Prozessor eher erfüllt und das LCD
hat nochnicht die richtige Spannung.

Vorausgesetzt, dein Prozessor läuft über die selbe Spannungsversorgung.

von dave (Gast)


Lesenswert?

Grad andersrum wäre richtig ;) lcd läuft schon und hat seine Zeit und
erst dann geht der MC los ;)

dave

von Mr_Boertsch (Gast)


Lesenswert?

Wenn der Prozessor schon mit Init beginnt, aber das lcd hat noch keine
spannung, dann ist das powerupwait zu kurz und das LCD kann nicht
initialisiert werden.

Vieleicht habe ich es unklar geschrieben:)

von Mr_Boertsch (Gast)


Lesenswert?

Dem LCD ist es ja grundsätzlich egal wann es initialisiert wird. es
braucht aber mindestens 16ms nachdem es aktiviert (Spannung voll
vorhanden) wurde, bis es initialisiert werden darf.

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.