Forum: Mikrocontroller und Digitale Elektronik LCD_Modul_TG12864B_03


von Jörg P. (zwiebackfraeser)


Lesenswert?

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

von Arduinoquäler (Gast)


Lesenswert?

Jörg P. schrieb:
> wenn ich als Datenport PortC und als Command die PA0-PA5 nehme.
-----------------------------^----------------------^---^--------

Hä?

Erst mal Programm und Schaltplan posten.

von Jörg P. (zwiebackfraeser)


Lesenswert?

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

von Pete K. (pete77)


Lesenswert?

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.

von spess53 (Gast)


Lesenswert?

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

von Jörg (Gast)


Lesenswert?

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

von Jörg (Gast)


Lesenswert?

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

von grundschüler (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.