LCD Störungen nach Atmega Reset
Hallo zusammen,
ich versuche mich gerade in eine DCF Uhr einzuarbeiten, das ist aber aktuell gar nicht so mein akutes Problem. Ich habe ein Problem mit meinem angeschlossenen Display.
Das Display ist TC1602A-09 und wie folgt angeschlossen:
Code:
// definitions of port pins
#define LCDPORT PORTD
#define LCDDDR DDRD
#define LCD_PIN_RS 2
#define LCD_PIN_E 3
#define LCD_PIN_D4 4
#define LCD_PIN_D5 5
#define LCD_PIN_D6 6
#define LCD_PIN_D7 7
// Dipslay is in 4 Bit Mode
Wenn ich meinen Atmega8 einschalten bzw. die Platine, wo das Display mit angeschlossen ist, einschalte, geht das Display korrekt an und es gibt kein Problem bei der Anzeige auf dem Displays.
Jetzt will ich den Atmega8 resetten über den normalen Reset schalter, gibt das Display keinen Inhalt mehr aus sondern nur noch Zeichen, als würde das Display nicht korrekt Initialisiert werden.
Wenn ich jetzt mehrfach versuche den Atmega zu resetten, kann ich Glück haben, dass das Display "irgendwann" wieder die richtigen Zeichen anzeigt.
Ich habe die Timings zu verändern, ohne einen Erfolg.
Wenn ich zwischen Pin 4 und Pin 3 einen 100N Blockkondensator packe wird es deutlich besser, aber auf dem Display erscheinen "wirre" Zeichen. :-(
habt ihr eine Idee??
Vielen Dank!!
Korrektur gefunden, Code erweitert
Hallo zusammen,
Zitat:
oberallgeier:
Wenn - dann wohl ein Pulldown.
Ja, das habe ich auch so gemacht und desweiteren:
Zitat:
DB0 bis DB3 auf GND, EN, RS und DB4 bis DB7 "schwimmen" - sprich: sind auf Pinne gezogen - ohne externe Beschaltung.
Ja, ist bei mir auch so, ich habe zwar ein bisschen mit Ablockkondensatoren gespielt (!?), aber das half auch nichts.
Ich habe aber meinen Fehler gefunden, der genau diese Situation beschreibt:
Zitat:
Your problem is that the display keeps its state during MCU reset. When cold-booting, the initial data mode is 8-bit which you immediately switch to 4-bit which reads data with a pair of EN pulses.
When you reset the MCU, you do not know whether even or odd number of EN pulses were sent. So you have to somhow reset the display even if it does not have reset pin.
This can be done by sending 0x33 0x33 (in 8-bit mode it will mean 4-times switch to 8-bit, in 4-bit mode it will mean once or twice switch to 8-bit). Then you can be sure that you always start from the same state.
Then proceed with regular 0x32 (or 4-bit 0x02 if you have single 4-bit write function), 0x28 to get into 4-bit 2-line mode.
Quelle: http://electronics.stackexchange.com...2a-lcd-display
Was soll ich euch sagen, genau das ist mein Problem, sobald ich das Command, 2x 0x33 sende, ist der Fehler auch beim Reset der MCU weg.
Ich muss nur noch einmal schauen, was da passiert, vor allem woher die Kommandos kommen, in den Datenblättern von Pollin steht nicht viel.
Das Datenblatt vom HD44780 ist mir noch nicht ganz geläufig bzw. noch verstehe ich nicht wie das Kommando zustande kommt.
Danke für die Hinweise und Infos!