Hallo, ich habe ein kleines Problem mit der Ansteuerung meines 2 x 16 LCD Displays, welches ich euch hier nun mal genauer dalegen möchte. Ich verwende einen Atmega32 16PU in verbindung mit dem Atmel Evaluations-Board V2.0.1 und einem STK500. Das LCD-Modul ist das "TC1602A-09" von pollin. Als Programm nutze ich AtmelStudio 6. Ich habe das Display nun korrekt angeschlossen (PORTD wie in der lcd-routines.h schon angegeben) und nutze ein 5V Netzteil für die externe Stromversorgung des Displays. Für das Programm verwende ich die LCD Routinen von dieser Seite. AVR-GCC-Tutorial/LCD-Ansteuerung Als Beispielprgramm nutze ich auch das von dieser Seite. Wenn ich nun das Programm übertrage ist dies immer erfolgreich, keine Fehlermeldungen. Auf dem Display verändert sich nichts. Die obere Reihe mit den Blöcken verändert sich nicht, was ja bedeutet das die Initialisierung des Display schon fehlgeschlagen ist. Jetzt stellt sich mir die Frage wo der Fehler sein könnte, leider komme ich da auf keinen grünen Zweig. Vielleicht kennt ja einer von euch das Problem. Anbei noch ein Screenshot von AtmelStudio. Und ein Link zum Datenblatt vom LCD http://www.adafruit.com/datasheets/TC1602A-01T.pdf Gruß
:
Verschoben durch User
Hast Du bei "#define F_CPU" die richtige Taktfrequenz des µC angegeben? Gruß Dietrich
Johannes Berger schrieb: > Ich habe das Display nun korrekt angeschlossen (PORTD wie in der > lcd-routines.h schon angegeben) Also so?
1 | // LCD DB4-DB7 <--> PORTD Bit PD0-PD3
|
2 | #define LCD_PORT PORTD
|
3 | #define LCD_DDR DDRD
|
4 | #define LCD_DB PD0
|
5 | |
6 | // LCD RS <--> PORTD Bit PD4 (RS: 1=Data, 0=Command)
|
7 | #define LCD_RS PD4
|
8 | |
9 | // LCD EN <--> PORTD Bit PD5 (EN: 1-Impuls für Daten)
|
10 | #define LCD_EN PD5
|
Bedenke: Wir können das alles nicht kontrollieren. Eine fehlerhafte Verbindung und nichts funktioniert. Und ja: wir hatten schon Fälle hier, in denen steif und fest behauptet wurde, das würde alles stimmen und auf dem ersten Photo sah man dann, dass er Leitungen vertauscht hatte. D.h. DU musst 100% sicher sein, dass diese 6 Verbindungen korrekt hergestellt wurden, es keinen Kurzschluss zwischen den Leitungen gibt und auch keine schlechte elektrische Verbindung dabei ist. Das andere was auch immer wieder mal Probleme macht, eigentlich ist das das Hauptproblem, sind für das LCD unpassende Timings.
1 | |
2 | ////////////////////////////////////////////////////////////////////////////////
|
3 | // LCD Ausführungszeiten (MS=Millisekunden, US=Mikrosekunden)
|
4 | |
5 | #define LCD_BOOTUP_MS 15
|
6 | #define LCD_ENABLE_US 20
|
7 | #define LCD_WRITEDATA_US 46
|
8 | #define LCD_COMMAND_US 42
|
9 | |
10 | #define LCD_SOFT_RESET_MS1 5
|
11 | #define LCD_SOFT_RESET_MS2 1
|
12 | #define LCD_SOFT_RESET_MS3 1
|
13 | #define LCD_SET_4BITMODE_MS 5
|
14 | |
15 | #define LCD_CLEAR_DISPLAY_MS 2
|
16 | #define LCD_CURSOR_HOME_MS 2
|
BOOTUP_MS scheint einer der kritischeren zu sein. Geh da mal von 15ms auf 50ms hoch. Die restlichen sind meistens nicht ganz so kritisch. Aber einige LCD brauchen etwas länger nach dem Anlegen der Spannungsversorgung, bis sie dann erstmalig auf Kommandos reagieren. Hier
1 | #ifndef F_CPU
|
2 | #define F_CPU 3686400
|
3 | #endif
|
hast du den korrekten Wert eingetragen?
:
Bearbeitet durch User
Karl Heinz Buchegger schrieb: > Hier#ifndef F_CPU > #define F_CPU 3686400 > #endif > hast du den korrekten Wert eingetragen? ja ich habe den Wert auf 1000000 geändert. Habe vorher auch die Frequenz des uC ausgelesen. Das it dem BOOTUP_MS probiere ich mal aus. gruß
dei Veränderung des Wertes hat nichts ergeben. Und die Änschlusse sind auch richtig( hab ich jetzt zum 3. mal gecheckt)
JP1 und JP2 sind nicht gejumpert? (das sind die UART Pins. Wenn du die Jumper drinn hast, hängt der MAX232 an den LCD Datenleitungen und pfriemelt da rein)
Karl Heinz Buchegger schrieb: > JP1 und JP2 sind nicht gejumpert? > > (das sind die UART Pins. Wenn du die Jumper drinn hast, hängt der MAX232 > an den LCD Datenleitungen und pfriemelt da rein) Selbiges für die restlichen Jumper JP1 bis JP8. Müssen alle raus.
:
Bearbeitet durch User
Johannes Berger schrieb: > Ich habe das Display nun korrekt angeschlossen Hast Du auch ein Poti als Kontrastregler angeschlossen und mal daran gedreht? Gruß Dietrich
Dietrich L. schrieb: > Hast Du auch ein Poti als Kontrastregler angeschlossen und mal daran > gedreht? > > Gruß Dietrich Ja habe ich. Und ich habe es auch geschafft, dank eurer Hilfe und ein wenig rumprobieren ;). Die Jumper JP1 -JP8 habe ich entfernt. Dannach ging es zwar noch nicht aber durch eine erhöhung des ISP Clockspeed hat es dann funktioniert. Vielen Dank also. Einziges Problem ist jetzt noch das in der 2. Zeile das 7 Zeichen immer eine x belibige Zahl ist. Nach jeder Übertragung ändert sich diese. Eine Fehlfunktion des Displays? Gruß
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.