Forum: Mikrocontroller und Digitale Elektronik Watchdog für Display-Schoner


von Thomas Strauß (Gast)


Lesenswert?

Hallo Leute,

ich habe ein 16X2-Zeichen/Zeilen - LCD-Modul (Conrad-Elektronik)an ein
80C552-System angeschlossen. Da die externe Reset-Beschaltung -
bestehend aus einem Widerstand nach Masse und einem Kondensator nach
Betriebsspannung (+5Volt) schlecht funktioniert hat, obwohl ich einen
hochwertigen Kunststoff-Folien-Kondensator von 10 Mikro-Farad
eingesetzt hatte, kam ich auf die Idee, den integrierten Wachhund
einzusetzen, der, wenn ein Pin des Controllers auf Masse gelegt wird,
ständig in Betrieb ist.

Damit erreichte ich einen einigermassen funktionierenden Reset
(vielleicht liegt es daran, daß das System mit langen Drähten
zusammengesteckt ist oder der Oszillator nicht sauber anspringt oder
...); nun muß ich jetzt aber regelmäßig den Wachhund rücksetzen, sonst
gibt es einen periodischen Warmstart.

Das ist kein Problem (2-3 Befehle reichen aus). Abfallprodukt des
Wachhundes ist der Einsatz als Display-Schoner.
Prinzip: Der Wachhund - Timer wird abgefragt. Hat er einen bestimmten
Wert erreicht, z.B. hier den Wert 80h (11bit-Prescaler und 8bit-Timer),
dann wird er auf 00 gesetzt und ein Speicherplatz von Null ab
runtergezählt. D.h. jedesmal, wenn der Wachhund rückgesetzt wird, wird
der Speicherplatz um eins abwärtsgezählt.
Hat der Speicherplatz (genannt z.B. LCSAVE) den Wert 00 erreicht
(abzufragen mit dem Befehl djnz), wird das Display ausgeschaltet (wenn
es nicht schon ausgeschaltet war).

Für das eigentliche Programm braucht man zwei Bits (Flags).
Das 1.Bit kennt den IST-Zustand des Displays.
Das 2.Bit kennt den WAR-Zustand des Displays.
Diese Flags brauche ich, damit, wenn ich eine Taste drücke, entweder
nur der Display-Inhalt zu lesen ist oder gleich eine Aktion zustande
kommt.
So etwa wie es auf dem Windows-PC läuft (laufen sollte).

Ich will das Programm hier nur umreissen; ich habe eines entwickelt,
das funktioniert und es ist einfach; es sind nur die zwei Flags nötig
sowie ein Register bzw. eine Speicherstelle sowie der Wachhund.

Ein Unterprogramm für den Wachhund/Display-Schoner aktivieren, falls
nötig.
Ein Unterprogramm für die Tasten-Antwort/Display-Schoner-Byte
rücksetzen/Display-Zustand festhalten/Display einschalten, falls
nötig.
Im Hauptprogramm kann das Flag "Display war
an/aus-geschaltet"abgefragt werden und entsprechend reagiert werden
(keine Reaktion bzw. Aktion Scrollen o.ä.).

Die LCD-Module kennen Befehle für Display-Aus und Display-An und man
kann sie ausschalten und einschalten. Dabei geht der Display-Inhalt
nicht verloren!
Das LCD-Display wird möglicherweise geschont, vor allem aber die
Batterien/Akkus, mit denen ein CMOS-8bit-System sparsam umgehen sollte.

von Peter D. (peda)


Lesenswert?

"Da die externe Reset-Beschaltung -
bestehend aus einem Widerstand nach Masse und einem Kondensator nach
Betriebsspannung (+5Volt) schlecht funktioniert hat, obwohl ich einen
hochwertigen Kunststoff-Folien-Kondensator von 10 Mikro-Farad
eingesetzt hatte..."


Das hat nichts mit der Qualität des Elkos zu tun, sondern mit dem
Prinzip:

Bei kurzen Spannungseinbrüchen oder Unterspannung kann sich der
Kondensator nicht weit genug entladen, um ein sauberes Reset zu
machen.
Der interne Watchdog hilft da auch nicht weiter.


Deshalb haben richtige Reset-Schaltungen eine Spannungserkennung, die
bei jeder Unterschreitung für ein ordentliches Reset sorgt.
Ich nehme für professionelle Anwendungen immer den MAX813L.


Neuere AVRs haben das intern, nennt sich Brown-Out-Reset, den sollte
man grundsätzlich immer enablen.


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.