- 12V Akku mit 280 Ah bauen         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 11

Thema: LCD Störungen nach Atmega Reset

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    05.01.2014
    Beiträge
    23

    LCD Störungen nach Atmega Reset

    Anzeige

    LiFePo4 Akku selber bauen - Video
    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!!

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    06.08.2008
    Ort
    Graz
    Beiträge
    521
    Im Reset sind die Pins am Atmega undefiniert, am LCD kommt daher irgendein Mist an.
    Möglichkeit 1: nach Start LCD initialisieren und Bidschirm löschen
    Möglichkeit 2: Alle Anschlüsse mit Pull down auf definierte Pegel legen.

    Warum muss überhaupt ein manueller Reset durchgeführt werden?

    LG!
    alles über meinen Rasenmäherroboter (wer Tippfehler findet darf sie gedanklich ausbessern, nur für besonders kreative Fehler behalte ich mir ein Copyright vor.)

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    2.214
    Ich meine, wenn's ein Problem mit den undefinierten Pegeln ist, sollte es genügen den E Pin per Pulldown ( oder braucht man da nen Pullup ? ) auf definierten Pegel zu legen.
    Ich meine, wenn der Controller resettet wird auch das Display neu Initialisiert werden.
    Eventuell hilft es auch, wenn der Controller beim Reset das Display stromlos machen würde.
    Also ein z.B. BS250 in die +5V Leitung zum Display und dann bei jedem Reset das Display für 200 ... 500ms stromlos schalten.

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    05.01.2014
    Beiträge
    23
    Hallo zusammen,

    danke für die Antworten
    und ja ich bin inzwischen auch schon soweit, dass ich hier einen Transistor dazwischen schalte.
    Wobei das wieder ein zusätzliches Stück Hardware wäre.

    Code:
    wkrug:
    Also ein z.B. BS250 in die +5V Leitung zum Display und dann bei jedem Reset das Display für 200 ... 500ms stromlos schalten.
    @wkrug,
    ja Pullups, ich hätte mehr beschreiben sollen, sind schon am Display schon dran,
    für die PINs die nicht benötigt werdend aufgrund des 4Bit Modes.


    Code:
    damfino:
    Im Reset sind die Pins am Atmega undefiniert, am LCD kommt daher irgendein Mist an.
    Möglichkeit 1: nach Start LCD initialisieren und Bidschirm löschen
    Möglichkeit 2: Alle Anschlüsse mit Pull down auf definierte Pegel legen.
    
    Warum muss überhaupt ein manueller Reset durchgeführt werden?
    @damfino
    das mache ich schon, auch alleine schon durch die Initialisierung. Ich habe jetzt auch schon einmal versucht das Display mit einer Wartezeit dazwischen, ich weiß das macht man nicht, zu Initialisieren, leider auch hier ohne Erfolg.
    Ich habe die PIN Konfiguration des LCDs von Beispielen aus Büchern, als Vergleich für das Datenblatt des Displays genutzt.

    Warum überhaupt resettet werden muss?
    Ja ich entwickle gerade und ich versuche ein Szenario zu testen.
    Aktuell wird es so sein, dass die Uhr nicht durchgehen am Tag eingeschaltet läuft, sondern die Uhr wird am Tag abgeschaltet, stromlos gesetzt, nachdem einschalten, wird das DCF Signal abgefragt und die Uhr gestellt. Zur Info, das DCF Signal ist noch nicht vorhanden, da mir 2 Module abgeraucht sind (Ich Depp).
    Ich denke ich habe noch ein anderes Grundlegendes Problem, oh man, gut dass ich immer wieder teste bevor das Produktiv () genutzt wird.

    @alle,
    ich werde euch schreiben, was genau ich gemacht, habe, wenn es denn jetzt funktioniert.#
    Danke für eure Ideen, die helfen mir auf dem richtigen Weg zu sein.

    EDIT:
    Diese Information ist Falsch:
    Im Moment habe ich sporadisch auch immer weider das Problem, dass das Display nicht korrekt Initialisiert wird, auch nach einem Stromlos machen
    Geändert von chrisavr1981 (23.12.2014 um 13:07 Uhr)

  5. #5
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.684
    ... wenn's ein Problem mit den undefinierten Pegeln ist, sollte es genügen den E Pin per Pulldown ... auf definierten Pegel zu legen ...
    Wenn - dann wohl ein Pulldown.

    Probleme kenne ich massenhaft, aber praktisch nie mit den LCDisplays. Meine Anschlüsse sind üblicherweise RW (ja, keine Busyabfrage, leider) und DB0 bis DB3 auf GND, EN, RS und DB4 bis DB7 "schwimmen" - sprich: sind auf Pinne gezogen - ohne externe Beschaltung. Trotzdem kann ich beliebig oft, lange oder kurz auf den /RES-Taster des Controllers drücken, das LCD (Display-Elektronik DEM16216SYH-LY) und auch das Billigst-LCD von Pollin für ein knappes Flöckchen wird stets ordnungsgemäß hochgefahren.

    MÖGLICHerweise kann eine längere Hochfahrspanne in den Fuses eingestellt werden ! ? Damit hatte ich bei andern Gelegenheiten schon langwierig verfolgte Seltsamfehler beheben können
    Ciao sagt der JoeamBerg

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    05.01.2014
    Beiträge
    23

    Korrektur gefunden, Code erweitert

    Hallo zusammen,

    oberallgeier:
    Wenn - dann wohl ein Pulldown.
    Ja, das habe ich auch so gemacht und desweiteren:

    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:

    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!

  7. #7
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    03.09.2009
    Ort
    Berlin (Mariendorf)
    Beiträge
    1.023
    Zitat Zitat von chrisavr1981 Beitrag anzeigen
    sobald ich das Command, 2x 0x33 sende, ist der Fehler auch beim Reset der MCU weg.
    Das ist genau die Initialisierung per Befehl (genauer: mehrmaliger Befehl); die findest du als Ablaufdiagrammm -ziemlich sicher- in allen Datenblättern zu HD44780 und kompatiblen Controllern, weil sie so elementar ist: Diese Befehlsfolge erlaubt es zu jeder Zeit, den LCD-Controller zu resetten, falls der Power-Up-Reset nicht geklappt hat oder (siehe dein eigenes Zitat) der µC einen Warmstart vollzogen hat (Brown Out, Reset). Und das passt auch ganz genau auf dein Fehlerbild! Folglich tut man gut daran, den 'Reset per Befehl' ohne Wenn und Aber in die Initialisierung des Systems einzubauen. Wartezeiten im zig-Millisekundenbereich sind dabei einzuhalten, tun aber bei einem System mit Human Interface nicht wirklich weh -sie werden ohnehin von der Trägheit des Flüssigkristalls überdeckt.

    Zitat Zitat von chrisavr1981 Beitrag anzeigen
    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.
    Es ist nicht schädlich, ein Datenblatt zumindest diagonal gelesen zu haben, auch wenn es hundert oder mehr Seiten sein sollten. Das gibt in Fällen wie deinem Anhaltspunkte, wonach man suchen kann und was z.B. zwingend für die Funktionalität eines Chips erforderlich ist.

    Und zuletzt: Frohe Weihnachten !!!

  8. #8
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    02.08.2006
    Ort
    Würzburg, Germany
    Beiträge
    716
    Hallo,

    auch wenn das Problem bereits gelöst ist habe ich dazu noch einen Hinweis:

    Zitat Zitat von wkrug Beitrag anzeigen
    Also ein z.B. BS250 in die +5V Leitung zum Display und dann bei jedem Reset das Display für 200 ... 500ms stromlos schalten.
    Dabei ist zu beachten, dass während das Display keine Versorgung hat keine Datenleitung auf High liegen darf. Ich hatte mit so einer Lösung mal 3 Displays zerstört. Der Grund ist, dass bei fehlender Versorgung und High an einem Datenpin eventuell die interne Abblock-Diode gegen VCC überbelastet wird. In meinem Fall hat sie bei allen 3 Displays einen Kurschluß gehabt. Somit war die Datenleitung ab da nicht mehr nutzbar, da sie über die defekte Diode auf VCC gehalten wurde. Es hat leider 3 Displays Lehrgeld gekostet, bis ich dem Fehler auf die Spur gekommen bin...

    Viele Grüße
    Andreas

  9. #9
    Neuer Benutzer Öfters hier
    Registriert seit
    05.01.2014
    Beiträge
    23
    Hallo zusammen,

    ich möchte mich mal kurz Rechtfertigen, auch wenn ich es eigentlich nicht bräuchte...
    @RoboHolIC
    Das ist genau die Initialisierung per Befehl (genauer: mehrmaliger Befehl); die findest du als Ablaufdiagrammm -ziemlich sicher- in allen Datenblättern zu HD44780 und kompatiblen Controllern, weil sie so elementar ist: Diese Befehlsfolge erlaubt es zu jeder Zeit, den LCD-Controller zu resetten, falls der Power-Up-Reset nicht geklappt hat oder (siehe dein eigenes Zitat) der µC einen Warmstart vollzogen hat (Brown Out, Reset). Und das passt auch ganz genau auf dein Fehlerbild! Folglich tut man gut daran, den 'Reset per Befehl' ohne Wenn und Aber in die Initialisierung des Systems einzubauen. Wartezeiten im zig-Millisekundenbereich sind dabei einzuhalten, tun aber bei einem System mit Human Interface nicht wirklich weh -sie werden ohnehin von der Trägheit des Flüssigkristalls überdeckt.
    Dieser Reset war mir, wie man mitbekommen hat, nicht bekannt und merkwürdigerweise, wurde in meinen Bücher darüber nicht geschrieben, was ich eigentlich gehofft habe.
    Es ist nicht schädlich, ein Datenblatt zumindest diagonal gelesen zu haben, auch wenn es hundert oder mehr Seiten sein sollten. Das gibt in Fällen wie deinem Anhaltspunkte, wonach man suchen kann und was z.B. zwingend für die Funktionalität eines Chips erforderlich ist.
    Ich habe auch bevor ich hier diesen Thread geschrieben habe, ins Datenblatt geschaut, da ich nichts direktes dazu gefunden habe, habe ich dann versucht hier einmal aufzuführen, was mit meiner Schaltung hier nicht stimmt.
    Auch jetzt mit dem Wissen, was dort passiert mit dem Übertragen von Hex 0x33 (Binär 0b00110011, Dezimal 51), ist mir noch nicht klar, wo ich diesen Eintrag für diesen Hinweis im Handbuch finde.
    Aktuell ist das für mich sehr schwierig Nachzuvollziehen, woher diese und andere Infos, Tipps stammen? Sind es Erfahrungen? Vorgaben, oder vielleicht Beispiele- wo sind diese zu finden?

    @Bumbum
    Dabei ist zu beachten, dass während das Display keine Versorgung hat keine Datenleitung auf High liegen darf. Ich hatte mit so einer Lösung mal 3 Displays zerstört. Der Grund ist, dass bei fehlender Versorgung und High an einem Datenpin eventuell die interne Abblock-Diode gegen VCC überbelastet wird. In meinem Fall hat sie bei allen 3 Displays einen Kurschluß gehabt. Somit war die Datenleitung ab da nicht mehr nutzbar, da sie über die defekte Diode auf VCC gehalten wurde. Es hat leider 3 Displays Lehrgeld gekostet, bis ich dem Fehler auf die Spur gekommen bin...
    Danke für die Hinweis, gut dass ich es nicht ausgeführt habe.

    Und zuletzt: Frohe Weihnachten !!!
    An alle auch nochmals von mir, frohe Weihnachten und viele Grüße!!

    Aktuell sitze ich an einem Display Menü, mein 1. auf einem µC.
    Zusätzlich schreibe ich gerade noch eine Methode, die die "eigenen" Zeichen auf dem Display ins CGRam schreibt und dann ausgegeben kann.

    Nochmals danke!

  10. #10
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    03.09.2009
    Ort
    Berlin (Mariendorf)
    Beiträge
    1.023
    Hi, chrisavr1981

    Hier findest du eine kompakte Abhandlung über den HD44780 und kompatible Chips:
    http://de.wikipedia.org/wiki/HD44780
    Am Ende des Artikels ist ein Datenblatt zum fraglichen Controller verlinkt. Dort auf Seite 45+46 findest du das Ablaufschema für einen Reset per Befehl, also via Datenbus. Das sagt eigentlich alles aus, manches jedoch nur versteckt. Z.B., dass die ersten beiden Befehle auch bei 4Bit-Datenbus nur mit einem einzigen Schreibbefehl abgewickelt werden (weil es in dieser Phase noch gar keine Unterscheidung zwischen 4- und 8-Bit-Bus gibt). Und dass folglich die 0x33 als Resetcode absolute Alchemie sind, denn alles zwischen 0x30 und 0x3F erfüllt den Zweck, weil die 4 LSBits noch gar keine Wirkung haben. Es sei denn, die LSBits enthalten bereits die Steuerleitungs-Pegel, dann könnte 0x33 Sinn machen, aber eben nicht als Befehlscode im engeren Sinn, sondern sehr spezifisch auf die Zielhardware zugeschnitten.

    Prinzipiell steht also alles in den Datenblättern, was man wissen muss, um mit ihnen arbeiten zu können.

    OK, ich seh ja auch ein, dass das Datenblatt für eine scheinbar einfach gestrickte Blackbox, die nur ein paar ASCIIs anzeigen soll, schon recht umfangreich und verwirrend ist. Da sind vereinfachende Tutorials für das Erlernen der Grundfunktionen echt Gold wert. Meine Displays arbeiten nach dem Einschalten z.T. wochenlang ununterbrochen und störungsfrei ohne eine Neuinitialiserung, aber das ist eben ein anderes Szenario als deines mit den Warmstarts (also Reset am µC statt PowerUp-Resets in allen Subsystemen).

Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

  1. [ERLEDIGT] Atmega 644 & atmega8 parallel am ISP ... Reset beider atmega notwendig ..
    Von Ritchie im Forum AVR Hardwarethemen
    Antworten: 2
    Letzter Beitrag: 29.03.2013, 12:18
  2. [ERLEDIGT] I2C Bus läuft nach Kaltstart des atmega nicht aber nach reprogrammiert via ISP
    Von Ritchie im Forum AVR Hardwarethemen
    Antworten: 0
    Letzter Beitrag: 07.07.2012, 15:53
  3. Störungen bei langem Kabel zum LCD
    Von Bääääär im Forum Elektronik
    Antworten: 21
    Letzter Beitrag: 14.01.2009, 23:05
  4. Verhalten LCD am I2C nach Reset und "initlcd"
    Von highbeta im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 7
    Letzter Beitrag: 15.12.2007, 16:25
  5. Problem nach RESET
    Von bombatz im Forum Assembler-Programmierung
    Antworten: 7
    Letzter Beitrag: 12.08.2006, 12:10

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiFePO4 Speicher Test