Guten Abend, da ich mittlerweile etwas ratlos bin, bräuchte ich mal Eure Hilfe. Ich habe ein LCD_Modul_TG12864B_03 von Pollin mit der MYLCD Lib von Andre Fabricius an einem ATmega 644 20 PU 16 MHZ Quarz. Das ganze Läuft auch super allerdings nur, wenn ich als Datenport PortC und als Command die PA0-PA5 nehme. Als ich die Datenleitungen auf PORT D gesteckt habe, gab es eine Anzeige, als wenn Initialisierung oder Timing nicht richtig wäre. Also Pixelfehler starkes flimmern der Anzeige oder nach einem Reset gar keine Anzeige. Kann mir jemand sagen woran das liegen könnte ? Am Programmcode habe ich nur die Anpassungen in der mylcd.h vorgenommen. Ich würde nämlich gern den TWI Bus nutzen und eine Doppelbelegung von SDA und SCL-Pin mit den LCD Datenleitungen, ist wahrscheinlich nicht empfehlenswert ? Vielen dank für Eure Hilfe und schönen Abend noch Gruß Jörg
Jörg P. schrieb: > wenn ich als Datenport PortC und als Command die PA0-PA5 nehme. -----------------------------^----------------------^---^-------- Hä? Erst mal Programm und Schaltplan posten.
Hallo ardurnioquäler, Programm ist direkt und unverändert von hier Beitrag "GLCD Routinen ( KS0108, HD61202 )" ausser in der mylcd.h habe ich folgende Änderungen vorgenommen:
1 | // Ports
|
2 | #define LCD_CMD_PORT PORTA // Command Output Register
|
3 | #define LCD_CMD_DDR DDRA // Data Direction Register for Command Port
|
4 | |
5 | #define LCD_DATA_PIN PINC // Data Input Register
|
6 | #define LCD_DATA_PORT PORTC // Data Output Register
|
7 | #define LCD_DATA_DDR DDRC // Data Direction Register for Data Port
|
8 | |
9 | // Command Port Bits
|
10 | #define CD 0x05 // Data/Control (RS) PinNumber
|
11 | #define RW 0x04 // R/W PinNumber
|
12 | #define EN 0x02 // EN PinNumber
|
13 | #define CS1 0x01 // CS1 PinNumber
|
14 | #define CS2 0x00 // CS2 PinNumber
|
15 | //#define LCD_NO_RES // uncomment this line if you have an pullup on reset
|
16 | |
17 | #ifndef LCD_NO_RES
|
18 | #define RES 0x03 // Reset Pin
|
19 | #endif
|
Displayverdrahtung so wie in den defines direkt vom µC auf das LCD. Gruß Jörg
Jörg P. schrieb: > Ich würde nämlich gern den TWI Bus nutzen und eine Doppelbelegung von > SDA und SCL-Pin mit den LCD Datenleitungen, ist wahrscheinlich nicht > empfehlenswert ? Das Display hat keine I2C Bus. Siehe Datenblatt. Du kannst so etwas mit Portexpandern lösen, aber dafür musst Du etwas mehr in dem Code ändern (und außerdem den Code verstehen lernen). Schau mal, ob Du auf PortC JTAG aktiviert hast.
Hi >Das Display hat keine I2C Bus. Nein, aber vielleicht will er die TWI-Pins von PortC für die Ansteuerung von I2C-Bausteinen verwenden. >ausser in der mylcd.h habe ich folgende Änderungen vorgenommen: Welche Änderungen? Wenn du PortD benutzen willst sollte dort #define LCD_DATA_PIN PIND // Data Input Register #define LCD_DATA_PORT PORTD // Data Output Register #define LCD_DATA_DDR DDRD // Data Direction Register for Data Port stehen. MfG Spess
Hallo Pete, JTAG ist aus das. Mit dem I2C Bus habe ich mich wohl mißverständlich ausgedrückt. Ich wollte am I2C einen Feuchtesensor (HH10D)abfragen. Da sind jetzt allerdings die Datenleitungen vom Display. Meine Frage war, ob beides geht,Display während der Sensorabfrage 'stilllegen' und danach wieder aktivieren. Der Sensor muss nur einmal die Stunde angesprochen werden. Danke Jörg
Hallo Spess53, als ich PORT D bzw PORT B benutzen wollte hatte ich die Änderungen auch so vorgenommen, aber dann habe ich wie gesagt diese für mich unerklärliche Anzeige. Als wenn das Timing nicht stimmen würde. Das der µC nicht in Ordnung ist, schließe ich aus, da ich mir auch schonmal die Mühe gemacht habe alle Pin's zu setzen und rückzusetzen, Leuchtdiode angeschlossen um etwas zu sehen, was einwandfrei ging. Wahrscheinlich lasse ich alles so wie es ist, und versuche entweder SDA und SCL-Pin doppelt zu belegen oder ich versuche den TWI Softwaremäßig auf zwei anderen Pin's zu machen. Allerdings muss ich dann noch mal in Klausur gehen, da ich mit dem TWI bisher noch keine Erfahrung habe. Danke und Gruß Jörg
Jörg schrieb:
Prüfen, ob PORTD wirklich funktioniert mit
DDRD=255;
while(1){
PORTD=255;
wait;
PORTD=0;
wait;
}
Wenn das funktioniert, müsste der Wechsel von C auf D klappen.
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.