www.mikrocontroller.net

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


Autor: Thomas Strauß (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

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.