mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Temperaturabhängige (?) Anzeigefehler Mega8 und DOG-M 162


Autor: Jesse Parker (parker)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zuerst einmal meinen Dank an das Forum, besonders an die Profis, welche 
mit ihrem Fachwissen eine absolute Hilfe sind! Ohne die tollen Beiträge 
hätte ich meine µC Basteleien niemals geschafft.

Mein erstes µC-Projekt ist ein ATMega8 an dem ein DOG-M 162 LCD, ein 
DS18B20 und ein paar binäre Eingänge angeschlossen sind. Der Mega 8 
läuft mit dem internen Takt, welchen ich auf 8 MHz eingestellt habe, das 
Display wird im 4 Bit Modus mit 5V betrieben. Das Programm ist in C 
geschrieben, zur Ansteuerung des DOG-M nutze ich die Bibliothek von 
Peter Fleury, wobei ich die Startprozedur und einige Funktionen 
angepasst habe.

Zu meinem Problem: Bisher funktionierte fast alles prima, es gab nur 
alle paar Stunden einen Positionierungsfehler des Cursors, d.h. ein 
Ausgabewert, welcher sekündlich auf das Display gegeben wurde, erschien 
an der falschen Stelle im Display.
Ich habe die Ursache nicht finden können und das Programm dahingehend 
geändert, daß die eigentlich unverändert angezeigten Inhalte alle paar 
Sekunden ebenfalls neu ausgegeben und mögliche falsche Ausgaben mit dem 
richtigen Wert überschrieben werden.

Als das Wetter wärmer wurde, hatte ich auf einmal alle paar Sekunden bis 
Minuten einen Anzeigfehler. Dabei werden einige Positionen scheinbar 
immer einwandfrei angezeigt und andere häufig fehlerhaft, obwohl die 
gleiche Routine aufgerufen wird. Es gibt bisher keinen einzigen 
Zeichenfehler, nur die Ausgabeposition ist manchmal an der falschen 
Stelle.

Soweit zu den Symptomen, als Ursache vermute ich natürlich erst einmal 
ein Temperaturproblem. Wieso aber werden die Zeichen bisher immer 
korrekt ausgegeben, nur die Ausgabeposition ist fehlerhaft? Warum 
funktioniert es meistens, aber nicht immer? Sollte ich einen Quarz 
einsetzen statt dem internen Taktgenerator?

Kennt jemand das Problem oder hat eine Idee, was ich probieren könnte?

Vielen Dank schon einmal.

Parker

Autor: Tobi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hi
Du könntest probieren ob der Fehler mit externem Quartz noch auftritt
Tobi

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Klingt danach, daß Du versuchst aus nem Interrupt und aus dem Main 
gleichzeitig auf das LCD zu schreiben. Sowas muß schiefgehen.
Das LCD darf nur exklusiv von einem Prozeß benutzt werden.


Wenn man es optimal gut machen will, dann reserviert man einen 
Textspeicher (2*16=32Byte) und schreibt nur dort hinein.

Damit können verschiedene Prozesse völlig konfliktfrei auf verschiedene 
Bereiche schreiben.

Und dieser Textspeicher wird dann alle 200ms von einem Timerinterrupt 
auf das LCD ausgegeben.
Die 200ms verhindern ein störendes Flackern, wenn sich ein Wert ständig 
ändert.


Peter

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.