Hallo, ich versuche erfolglos mein 4x20 Display zu initialisieren. Ich sehe immer nur die schwarzen Balken in der 1. und dritten Zeile. Angeklemmt ist es korrekt da 2x geprüft. Timing ist auch i.o. Dieser Ablauf sollte doch prinzipiell funktionieren, oder? Sehe den Wald vor Bäumen nicht mehr :-) void LCDinit(void)//Initializes LCD { _delay_ms(20); LCD_DATA =0x0; LCD_CTRL =0x0; LCD_DATA_DDR =0xFF; LCD_CTRL_DDR =0x08; // ENABLE = OUTPUT LCD_DATA =0x30; LCD_CTRL =0x8; // ENABLE setzen _delay_ms(1); LCD_CTRL =0x0; //jetzt wird ENABLE übernommen _delay_ms(10); LCD_DATA =0x30; LCD_CTRL =0x8; _delay_ms(1); LCD_CTRL =0x0; _delay_ms(10); LCD_DATA =0x30; LCD_CTRL =0x8; _delay_ms(1); LCD_CTRL =0x0; _delay_ms(10); LCD_DATA =0x38; LCD_CTRL =0x8; _delay_ms(1); LCD_CTRL =0x0; _delay_ms(5); LCD_DATA =0xE; LCD_CTRL =0x8; _delay_ms(1); LCD_CTRL =0x0;
>Sehe den Wald vor Bäumen nicht mehr :-)
Und ich sehe keinen Schaltplan und nur einen
fast nichts sagenden, unvollständigen Codeschnipsel.
Controller unbekannt, Taktfrequenz unbekannt.
Mal auch RS und RW anschließen. Wenn RW in der Luft hängt, geht garnichts. Deine Delays sind viel zu lang, für E reicht 1µs völlig. Peter
- Controller siehe Betreff - Codeschnipsel in meinen Augen sehr eindeutig, was ist da unklar? - LCD korrekt beschaltet, Schaltplan nicht notwendig - Taktfrequenz 16MHz (was spielt das für eine Rolle? ich habe doch geschrieben dass das Timing stimmt)
>- LCD korrekt beschaltet, Schaltplan nicht notwendig Oh doch. Keiner weiss wo LCD_DATA oder LCD_CTRL angeschlossen sind. Vieleicht an den JTAG Leitungen und JTAG Fuse aktiviert. Nur mal so als Beispiel.
Fuse für JTAG ist nicht gesetzt, ich habe nur die Fuse für den externen Quarz geändert. Verdammt, dat Ding will nicht. Wie dem auch sei, hier die Beschaltung: (ATMEGA 162) //PortD: #define LCD_RS 2 #define LCD_RW 4 #define LCD_E 3 //PortC: #define LCD_D0 0 #define LCD_D1 1 #define LCD_D2 2 #define LCD_D3 3 #define LCD_D4 4 #define LCD_D5 5 #define LCD_D6 6 #define LCD_D7 7 #define LCD_DATA PORTC #define LCD_CTRL PORTD #define LCD_DATA_DDR DDRC #define LCD_CTRL_DDR DDRD
triplepower wrote: > Fuse für JTAG ist nicht gesetzt, ich habe nur die Fuse für den externen > Quarz geändert. Wenn du die Fuse nicht geändert hast, dann ist sie programmiert! JTAG ist im Auslieferungszustand aktiv und muss erst vom Anwender abgeschaltet werden.
Was soll ich sagen, ihr seid super!!! Danke Johannes & Holger!
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.