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


von Jesse P. (parker)


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

von Tobi (Gast)


Lesenswert?

hi
Du könntest probieren ob der Fehler mit externem Quartz noch auftritt
Tobi

von Peter D. (peda)


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

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.