Pollin LCD 2x8 Ansteuerung (gcc, ATmega328, AVR-Studio)

#3103768
Lesenswert?

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 :)
Angehängte Dateien:
#3104850
Lesenswert?

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.
#3104890
Lesenswert?

@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
#3104904
Lesenswert?

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?
#3105497
Lesenswert?

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.
#3106907
Lesenswert?

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"
#3106925
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren