Hallo, Habe mir ein kleines LCD Modul von Pollin mit 2x8 Zeichen gekauft und verdrahtet, jedoch bekomme ich es nicht zum laufen.. Ich habe schon mit mehreren LCD's gearbeitet, doch bei diesem komme ich nicht über den schwarzen Balken in der ersten Zeile hinaus.. Link zum LCD von Pollin: (http://www.pollin.de/shop/dt/NzczOTc4OTk-/Bauelemente_Bauteile/Aktive_Bauelemente/Displays/LCD_Modul_C0802_04.html) Könnte sich mal jemand meine Routinen anschauen, vllt findet wer den Fehler. Vielen Dank im Voraus :)
Findet niemand einen Fehler, oder kann mir einen Tipp geben? MfG
Chris T. schrieb: > oder kann mir einen Tipp geben? Die Standard-Fragen: - Ist die Anzeige so angeschlossen wie in lcd.h angegeben? - Stimmt die Taktfrequenz mit der SW-Definition überein (Quarz, Fuses)? - Ist die Kontrasteinstellung OK? Gruß Dietrich
Probier doch erstmal ein anderes Display. Deine "Hausaufgaben" musst Du schon selbst machen. Finde zuerst heraus, ob es ein Hardwarefehler oder ein Softwarefehler ist. Prüfe, ob das Timing an den Steuerleitungen (vor allem E) stimmt. Wenn es sicher ein Softwarefehler ist, dann reduziere den Quelltext auf den relevanten Teil, und den schauen sich dann sicher auch einige Leute gerne an.
@Dietrich Hardwarefehler kann ich ausschließen: habe es mehrmals neu verdrahtet und getestet, es ist auch so verdrahtet wie in der lcd.h angegeben. Takt ist per Fuses und AVR Studio auf 8MHz eingestellt und den Kontrast habe ich via Poti festgelegt... Der Fehler muss also irgendwie an der Software liegen, aber ich finde keinen mehr... Andere LCD's habe ich bereits erfolgreich angesteuert. Danke für deine Hilfe. MfG
Chris T. schrieb: > Hardwarefehler kann ich ausschließen: Die Erfahrung zeigt: Je vehementer das behauptet wird, desto höher ist die Wahrscheinlichkeit, dass hier der Hase im Pfeffer liegt. > Der Fehler muss also irgendwie an der Software liegen, aber ich finde > keinen mehr... Dann zeig die komplette Software. Nicht nur die LCD-Funtkionen. > Andere LCD's habe ich bereits erfolgreich angesteuert. An exakt dieser Schaltung mit exakt dieser Software?
Im Anhang das komplette AVR Studio Programm. Habe das LCD auf eine fertig geätzte Platine gelötet und zusätzlich auf dem Steckbrett aufgebaut. Vielleicht liegt es an den Registereinstellungen der lcd.h, finde aber auch hier keinen Fehler. Langsam weiß ich nicht mehr weiter..
Hatte sowas mal an nem Atmega32. Der Fehler bei mir war, dass JTAG aktiviert war und ich eben an diesem Port das LCD angeschlossen hatte. Nachdem ich JTAG deaktiviert hatte ist es sofort angesprungen.
Chris T. schrieb: > Im Anhang das komplette AVR Studio Programm. Auf die Schnelle habe ich nichs Auffälliges gefunden. Um zu testen, ob Dein Controller überhaupt richig läuft: Lass doch mal die LED im Sekundentakt blinken.
Also bei mir läuft das Pollin Display mit dieser Init-Funktion
1 | void lcd_init( void ) |
2 | {
|
3 | LCD_DDR_D4 = 1; // enable output pins |
4 | LCD_DDR_D5 = 1; |
5 | LCD_DDR_D6 = 1; |
6 | LCD_DDR_D7 = 1; |
7 | LCD_DDR_RS = 1; |
8 | LCD_DDR_E0 = 1; |
9 | LCD_E0 = 0; |
10 | LCD_RS = 0; // send commands |
11 | |
12 | _delay_ms( 15 ); |
13 | lcd_nibble( 0x30 ); |
14 | _delay_ms( 4.1 ); |
15 | lcd_nibble( 0x30 ); |
16 | _delay_us( 100 ); |
17 | lcd_nibble( 0x30 ); |
18 | _delay_us( 100 ); |
19 | lcd_nibble( 0x20 ); // 4 bit mode |
20 | _delay_us( 100 ); |
21 | lcd_command( 0x28 ); // 2 lines 5*7 |
22 | lcd_command( 0x08 ); // display off |
23 | lcd_command( 0x01 ); // display clear |
24 | lcd_command( 0x06 ); // cursor increment |
25 | lcd_command( 0x0C ); // on, no cursor, no blink |
26 | |
27 | }
|
Hatte ich hier irgendwo mal im Forum gefunden.
Danke für die vielen Antworten. Bei der Pinbelegung stimmt jedes Bit überein. der uC sollte schon funktionieren -> LED blinktwie sie soll @wombo Beim Mega328 gibt es keine Fuse um JTAG zu deaktivieren/aktivieren (der hat wohl kein herkömmliches JTAG) @Timmo du verwendest die gleichen Registerwerte wie ich.
> Beim Mega328 gibt es keine Fuse um JTAG zu deaktivieren/aktivieren
Wie sehen die übrigen Fuses aus? (bitte auslesen, nicht schätzen)
Also bei mir war es eigentlich immer ein Kontaktproblem wenn nur ein schwarzer Balken kam (also z.B. kalte Lötstelle). Hast du den FPC vom Polling auch genommen? Da können sich unter zu viel Hitze oder bei falschen Footprint die "Gabeln" verschieben und dann hast du keinen sauberen Kontakt mehr. Siehe auch Beitrag "Pollin liefert falschen Sockel zum 2x8 Zeichen Lcd"
Tja. Jetzt wirds schwierig. Wenn das LCD kompatibel ist, dann ist es entweder (trotz deiner Beteuerungen) ein Verdrahtungsfehler oder ein Timngfehler. Ich kann dir nicht sagen, wie du weiter vorgehen sollst. Ich kann dir nur sagen, was ich tun würde. Hauptsächlich weil ich auch keine Idee mehr habe und irgendwie mehr Einsicht ins Problem her muss. Ausgangspunkt ist das Wissen, dass ein LCD zwar beliebig langsam aber nicht zu schnell angesteuert werden darf. D.h. ob zb der Enable Puls 30ms oder 5 Sekunden lang ist, spielt keine Rolle. Er darf nur nicht kürzer als das Minimum sein. Und genau da würde ich ansetzen. WEnn du das LCD noch auf dem Steckbrett hast, würde ich mal parallel zu den LCD-Leitungen (direkt am LCD) jeweils eine LED dazuschalten, damit ich die Pegel der Leitungen verfolgen kann. Und dann geh ich ins Extrem und verlängere alle Zeiten so, dass ich bequem alle 6 Leds (4 Datenbleitung + Enable + R/S) gut überblicken und verfolgen kann. Das Muster, in dem sie aufleuchten müssen ist ja bekannt und wenn es keine Timingsache ist, dann stimmt in diesem Muster was nicht. D.h. das was mir die LED erzählen mit dem Vergleichen, wie es sein sollte. Und da hier das Timing extrem verlangsamt wurde, sollten damit auch automatisch alle Timingprobleme vom Tisch sein. Wenn also mir die LED 'erzählen', dass die Initialisierungssequenz korrekt vom µC zum LCD eingetaktet wurde (und jeweils sauber jeweils nach dem Anlegen eines Nibbles der Enable Puls kommt) UND das LCD dann trotzdem nicht anspringt, dann muss man den Gedanken ins Auge fassen, dass das LCD defekt ist. Wie gesagt: Ich hab keine Idee mehr, was du konkret noch überprüfen sollst. Laut deiner Aussage stimmt die Verkabelung und der µC läuft mit der Frequenz mit der er laufen soll und die ist auch korrekt in F_CPU eingetragen. Kommen alle Datenbits richtig an, dann muss ein kompatibles, nicht defektes LCD korrekt initialisieren. Von letzterem geh ich erst mal nicht aus, daher: lass die Hardware dir helfen und lass dir anzeigen was sich auf den Datenleitungen tatsächlich tut. Wichtig: Die LED so spät wie möglich einfügen, am besten wäre direkt auf dem LCD - damit auch Kabelbrüche oder schlechte Kontakte erfasst werden - die LED zeigen dir dann, welche Datenleitung fehlt. Das ganze klingt jetzt erst mal aufwändig. Bedenkt man aber, dass du jetzt schon 2 Tage mit einem nicht funktionierendem LCD dasitzt, sind 1 Stunde Aufwand zur Einkreisung des Problems kein wirklicher Aufwand. Auf jeden Fall besser als nichts tun und das Handtuch werfen.
@Karl Heinz Vielen Dank für diesen Tipp.. Dass ich ein LCD so langsam ansteuern kann habe ich bis jetzt nicht gewusst. Werde die Fehlersuche mal mit den LED's machen und hoffe, dass ich den Feler finde. Danke nochmal für eure Hilfen. MfG
Guck dir mal diesen Post an: Beitrag "LCD C0802-04, HD47780 ansteuern.." Die Lib von CybLord hab ich etwas geändert in Benutzung, die funktioniert. Entscheidend ist wohl das nibble, das im Init gesendet wird, das wäre wohl ein gravierender Unterschied zu den anderen Displays, probier das mal bei dir einzufügen.
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.