Forum: Mikrocontroller und Digitale Elektronik Interner oder externer Watchdog ?


von Matthias H. (mhuck)


Lesenswert?

Hallo,

ich habe erst wenig Erfahrung mit Microcontrollern.
Jetzt habe ich ein Mega8-Modul von Embedit und möchte damit in einem
Modellflugzeug Steueraufgaben übernehmen. Dabei ist es von größter
Wichtigkeit, daß sich der Controller im Falle eines Hängers (durch
Betriebsspannungseinbruch oder Störeinstreuungen vom
3Phasen-Antriebsmotor ) neu startet.

Ist das mit dem internen Watchdog zu machen, oder wäre die
Zuverlässigkeit nur begrenzt ?
Wann brauche ich einen externen Hardware-Watchdog, und gibt es da
erprobte Standardschaltungen ?

MfG,
Matthias Huck, Oelde

von Gerhard Gunzelmann (Gast)


Lesenswert?

Hallo

wenn deine Platine sauber aufgebaut ist, gibts keine Problem durch
Einstrahlung, evtl Leitungsgebunden, durch deinen Motor. Aber dann hast
du ein massives systematsiches Problem, das man nicht durch einen
Watchdog löst. Ein interner Watchdog funktioniert nur dann, wenn der
Chip hardware-mäßig in Ordnung ist. Das heißt, wenn der Watchdog einen
"software"-Hänger lösen soll, dann ist der OK. Sonst gibts die
Hardware-Watchdogs, z.B. von MAXIM:
http://para.maxim-ic.com/compare.asp?Fam=Super&Tree=uPSupervisors&HP=Supervisors.cfm&ln=

bei Spannungseinbruch durch schwache Batterien nützt dir der Watchdog
nicht viel, der macht deinen Batterien nicht wieder voll. Ein
hardware-Watchdog macht bei dir nur Sinn, wenn er hardware-mäßig -wie
auch immer- dafür sorgen würde, daß dein Flieger wider (sauber)
runterkommt.

Gerhard

von Matthias H. (mhuck)


Lesenswert?

Hallo Gerhard,

nun, aber da ist genau das Problem. Ich weiß ja nicht, ob meine Platine
sauber aufgebaut ist. Wenn die Schaltung in der Testphase ständig
ausfallen sollte, ist mir klar, das da was faul ist, was man nicht
durch einen Watchdog lösen kann.
Aber es kann ja auch sein, das bei den Tests alles gut läuft, es aber
in ganz seltenen Fällen doch zu Störeinflüssen kommt. Und das ist gar
nicht so abwegig, denn z.B bei meiner Aquariumsteuerung ist es genau
so: die kann ein halbes Jahr fehlerfrei laufen, und dann hängt sich die
C-Control beim starten einer Leuchtstoffröhre auf. So einen Fehler werde
ich nie finden, aber hier wäre ein Watchdog schon hilfreich !
Und das er bei leeren Akkus auch nicht mehr hilft, ist klar. Aber es
kann durchaus mal sehr kurzzeitig zu einem Spannungseinbruch kurz unter
die Betriebsspannungsuntergrenze kommen, wenn z.B. ein
Spindelantriebsmotor anläuft; auch hiergegen möchte ich die Schaltung
schützen.

Also, habe ich dich richtig verstanden:
Der interne Watchdog schützt nur vor SOFTWARE-Hängern ??
Und für alles andere brauche ich einen Hardware-Watchdog ?

Matthias

von Rahul D. (rahul)


Lesenswert?

Natürlich kannst du den internen wunderbar benutzen.
Für solche Sachen wie Unterspannungsanzeige etc. gibt es auch noch die
Brown-out-Detection.
Solange du den Watchdog nicht dauernd in einer Schleife zurücksetzt, in
der der Controller durch einen "Software-Hänger" landet, steht seiner
Verwendung nichts im Wege.
Ausserdem kann man dann nach einem Reset auch feststellen, welches die
Reset-Quelle war. Steht im Datenblatt...

von Gerhard Gunzelmann (Gast)


Lesenswert?

Ich hab da ein bisschen weitergedacht. Klar, wenn ein "externes"
Ereignis wie ein EMV-Puls auftaucht, das deinen uC abstürzen läßt, kann
der interen Watchdog helfen. Aber da Du einen E-Motor verwendest ist es
wahrscheinlicher, daß ein leitungsgebundener Puls den uC "gefährdet".
Da hilft in erster Linie filtern. Der Watchdog soll - so wahr das
gemeint - kein "betriebs-wieder-instandsetzer" sein, der ständig zu
tun hat. In der Sicherheitstechnik sind interne Watchdogs nicht gerne
gesehen, da sie immer vorraussetzen, daß der uC weiterhin sauber
funktioniert. Wenn also nicht ein-EMV-puls den uC ausfallen läßt,
sondern Unterspannung, und dieser Zustand dauert an, dann nützt auch
der Watchdog nichts mehr (der nur einen reset macht), und da hat der
Hardware-Watchdog eine zusätzliche Funktion, er könnte nicht nur einen
Reset beim uC durchführen, sondern auch einen Sinkflug herbeiführen.
Wenn die Unterspannung nur kurzzeitig auftritt - so kann man dies auch
erhindern, indem man den uC separat versorgt, z.B. über eine Diode
getrennt unf mit einem Elko gepuffert, übersteht der schon so manche
Millisekunde. Rahul hat natürlich recht mit der Brown-out-Erkennung,
nützt aber nix, wenn dann dauert ein Brown-out-Ereignis kommt, kommt
der uC nicht mehr zum Arbeiten.

gerhard

von Matthias H. (mhuck)


Lesenswert?

Also, ich denke, das Bisherige hilft mir schon weiter: ich glaube, ich
kann den internen Watchdog verwenden.
Tatsächlich sind es hauptsächlich (seltene) externe EMV-Ereignisse, die
mir am meisten Angst machen (durch magnet. Wechselfelder des
3Phasen-Antriebes). Dieser Hauptantrieb ist schon galvanisch vom
Controller entkoppelt (verschiedene Akkus).
Spannungseinrüche können höchstens von den Servomotoren kommen, die am
gleichen Akku hängen wie der Controller. Damit rechne ich eigentlich
auch nicht, ich möchte nur zumindest die Möglichkeit in Erwägung
gezogen haben. EMV-Störungen sind von den Servomotoren nicht zu
erwarten.
Wenn ich merken sollte, das ständig EMV-Störungen des Hauptantriebs den
Controller zum Absturz bringen, ist meine Schaltung natürlich
ungeeignet.

Vielen Dank,
Matthias

von crazy horse (Gast)


Lesenswert?

Ein externer hat einen Vorteil: man kann in einem Programmteil den
wd_out nur setzen, in einem anderen zurücksetzen (vorausgesetzt, beide
Programmteile werden normalerweise zyklisch aufgerufen). Falls das
Programm in einer Endlosschleife hängt, die den internen triggert,
kommt man da nicht raus.
Seit die AVRs aber mit brown-out ausgestattet sind, verwende ich
externe WDs nur noch bei besonderen Anlässen (habe früher externe
kombinierte brown out/WD genommen, kosteten manchmal mehr als der MC
selbst :-)

von Peter D. (peda)


Lesenswert?

Wichtig ist, daß der Watchdog immer wach ist, d.h. daß er nicht extra
eingschaltet werden muß und niemals abgeschaltet werden kann.

Ein schlafender Watchdog nützt nämlich garnichts.

Es gibt z.B. einige µCs mit internem Watchdog, der im Sleepmodus selber
schlafen geht (also absolut witzlos).


Der 2. Knackpunkt ist das Triggern des Watchdog an der richtigen
Stelle.

Ein Watchdog, denn man z.B. fest im Timerinterrupt triggert, kannst Du
voll vergessen, das Main kann da schon längst abgeschmiert sein.

Was man in der Regel macht ist, daß im Timerinterrupt mehrere Register
runterzählen, die je einem wichtigen Prozeß entsprechen. Die Prozesse
setzen dann bei korrekter Ausführung diese Register auf den benötigten
Timeout-Wert.
Der Timerinterrupt zählt nun alle diese Register runter und erreicht
eines davon 0, geht er in eine Endlosschleife, d.h. wartet bis der
Watchdog zuschlägt.
Erst wenn jedes dieser Register ungleich 0 war, resettet er auch den
Watchdog.


Peter

von Karl (Gast)


Lesenswert?

Hallo Matthias,

zusätzlich ist noch die interne Kopplung des Watchdogs an die interne
uC HW wichtig. Leitet der Watchdog z.B. seinen Takt direkt vom internen
uC Takt ab, so ist das nicht empfehlenswert. Ich würde mir also
anschauen, ob der interne Watchdog von der internen uC HW entkoppelt
ist.

Ich würde Dir auch empfehlen, das Ganze sehr gut zu testen. Also
probier aus wie "scharf" Dein Watchdog ist. Eine gewisse Toleranz
solltest Du Deiner SW nämlich zugestehen. Es bringt nicht´s wenn es
durch Laufzeitänderungen der SW zur Auslösung des Watchdog kommt ohne
das die SW wirklich hängt.

Ansonsten hat Peter genau die zu berücksichtigenden Punkte genannt.
Sonst kannst es gleich lassen.

Karl

von Matthias H. (mhuck)


Lesenswert?

Erstmal danke, ich werde ich mit den o.g. Punkten beschäftigen !
Wenn ich doch einen externen Watchdog verwenden sollte, gibt es da
eines besondere Empfehlung (erprobte Schaltung) für einen Mega8 ?
Ich fühle mich von den Datenblättern verschiedener Watchdog-IC's etwas
erschlagen ....

Matthias

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.