www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik µC Ports bei Abturz in einem Definierten Zustand bringen


Autor: Tom (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi zusammen,

Ich habe letztens einen Beitrag hier gesehen und zwar bin ich im moment 
an etwas am Basteln um nicht zuweit auszuholen hier mein kurzes fiktives 
Problem.

Ich habe einen µC und an dem Controller hängt ein Relais das eine Lampe 
schaltet wenn der µC Pin auf High ist.

Nun könnte es ja theretisch passieren das der Controller abstürzt und 
trotzdem den Pin für die Lampe auf High lässt.

Ich hatte da eine Schaltung gesehen in dem ich meine ein FET drin vorkam 
+ein paar Rs und Cs und zum Einschalten der Lampe hat der FET(?) ein 
Getaktes Signal gebraucht. Wenn der µC in dieser Umgebung abgestürzt ist 
war es sehr unwahrscheinlich das der PIN weiterhin einen Takt ausgibt 
und somit wird die Lampe ausgeschaltet.

Nur wie nennt man so eine Schaltung ? ich find den Thread nicht mehr :/


Gruß

Tom

Autor: karadur (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

dürfte ein Tiefpass mit Schaltstufe gewesen sein. Die Lösung für dein 
Problem heißt aber Watchdog.

Autor: Volker Schulz (volkerschulz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Im Allgemeinen gehen die Pins auf "High Impendance" wenn der µC 
abstuerzt und koennen per Pull-Down auf definiert low gezogen werden.

Mit Rs, Cs (und fuer Perfektionisten einem 555) koenntest Du aber auch 
eine Schaltung bauen, die nach X ms. ausschaltet, wenn sie vorher nicht 
erneut getriggert wurde. Von der Funktion her im Prizip wie die 
altbekannte "Treppenhausbeleuchtung". ;)

Volker

Autor: Klaus2 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
...und wenn der 555 dann auch noch abstürzt?

Klaus.

Autor: Vlad Tepesch (vlad_tepesch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wann stürzt denn der µC ab?

Autor: Tom (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mhm nach einem Absturz weiss ich aber nicht wie die Ports vorher waren.

Autor: Tom (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also es geht mir im moment nur theretisch darum. zb Ich habe 2 lampen X1 
und X2 diese Dürfen unter keinen umständen zusammen leuchten weil dann 
keine ahnung die Umgebung zu heiss wird oder so.

Und wenn der µC Abtürzt dann sollte halte sicher gestellt werden das 
kein High mehr auf dem Ausgang liegt um die Lampen anzusteuern

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Volker Schulz schrieb:
> Im Allgemeinen gehen die Pins auf "High Impendance" wenn der µC
> abstuerzt und koennen per Pull-Down auf definiert low gezogen werden.

warum sollte das so sein? Ein Abstutz würde ich als ein Software fehler 
bezeichnen und da ändert sich nur etwas am Status der ausgänge wenn eine 
passender upcode vorbeikommt.
Wenn es aber nur eine schleife ist aus der der µC nicht rauskommt, dann 
ändert sich auch am Port nichts.

Autor: Christian H. (netzwanze) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn er abstützt hat das meist eine Softwareseitige Ursache.
Also eher Fehler suchen (auch EMV).

Wenn es wirklich nicht anders geht, dann den Watchdog verwenden und bei 
einem Reset die Lampe abschalten.

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tom schrieb:
> also es geht mir im moment nur theretisch darum. zb Ich habe 2 lampen X1
> und X2 diese Dürfen unter keinen umständen zusammen leuchten weil dann
> keine ahnung die Umgebung zu heiss wird oder so.

dann mache es per hardware - ein pin schalter zwischen den lampen um, 
der andere pin schaltet ein und aus. Damit können NIE beide Lampen 
leuchten.

Autor: Volker Schulz (volkerschulz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter schrieb:
> Volker Schulz schrieb:
>> Im Allgemeinen gehen die Pins auf "High Impendance" wenn der µC
>> abstuerzt und koennen per Pull-Down auf definiert low gezogen werden.
>
> warum sollte das so sein? Ein Abstutz würde ich als ein Software fehler
> bezeichnen und da ändert sich nur etwas am Status der ausgänge wenn eine
> passender upcode vorbeikommt.
> Wenn es aber nur eine schleife ist aus der der µC nicht rauskommt, dann
> ändert sich auch am Port nichts.

Korrekt, aber eine Endlosschleife wuerde ich nicht als Absturz 
definieren... Wenn doch, dann bleiben wirklich nur noch Watchdog 
und/oder retriggerbarer Monoflop.

Volker

Autor: ich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nimm LEDs, die werden nicht so warm :-)

Autor: Christian H. (netzwanze) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Volker Schulz schrieb:
> Korrekt, aber eine Endlosschleife wuerde ich nicht als Absturz
> definieren... Wenn doch, dann bleiben wirklich nur noch Watchdog
> und/oder retriggerbarer Monoflop.

Eine "unbeabsichtigte" Endlosschleife nenne ich falsches Softwaredesign 
und "besser machen".

Autor: Christian H. (netzwanze) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich schrieb:
> nimm LEDs, die werden nicht so warm :-)

Oder zwei Ports auf je ein Umschaltrelais. Das erste schaltet nur ein 
und aus; das zweite schaltet zwischen den Lampen um. Dann kann nur eine 
gleichzeitig leuchten.

Klar, bei einem Softwarehänger könnte es sein, dass die Lampe nie 
ansgeht. Aber auch da gibt es voll mechanische Thermostate. Die Schalten 
aus, wenn es wirklich zu warm wird.

Autor: Volker Schulz (volkerschulz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Christian H. schrieb:
> Volker Schulz schrieb:
>> Korrekt, aber eine Endlosschleife wuerde ich nicht als Absturz
>> definieren... Wenn doch, dann bleiben wirklich nur noch Watchdog
>> und/oder retriggerbarer Monoflop.
>
> Eine "unbeabsichtigte" Endlosschleife nenne ich falsches Softwaredesign
> und "besser machen".

Darauf koennen wir uns einigen! Ganz uebel wird's natuerlich wenn man 
den Watchdog ausgerechnet in dieser Schleife zuruecksetzt... ;)

Volker

Autor: Tom (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mhm ich glaub wir reden grade an einander vorbei?! Klar kann man es 
Software technisch lösen aber ich ginge eigentlich von dem fall aus das 
der µC an den Port Pins ein High oder Low ausgibt und diese Dürfen in 
einem Statischen zustand NICHTS schalten könnten. Nur wenn der Pin mit 
einer Frequenz toggelt dann darf das Objekt an dem Pin geschaltet 
werden.
Und wenn der Controller dann Abstürzt/Restettet/Durchbrennt/Kurzschluss 
auf Signal Leitung macht oder die Versorgungspannung abgetrennt bekommt 
dann wird das Objekt NIE geschaltet weil das toggeln fehlt.

Und da hatte ich halte eine Schaltung gesehn die sowas realisiert hatte 
aber ich find sie nimmer :/

Autor: Udo R. S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>>Korrekt, aber eine Endlosschleife wuerde ich nicht als Absturz definieren

Was ist denn euer Meinung nach ein Absturz?? Wenn die Platine mit dem yC 
runterfällt? Natürlich kommt es durch einen Softwarefehler zum Absturz, 
wodurch sonst? Durch Unterspannung? Dann ist es auch ein Softwarefehler, 
das hätte man mit der brown out detection erkennen und korrekt behandeln 
können.

Was ist dann ein Microsoft Bluescreen? Kein Absturz, kein Softwarefehler 
sondern höhere Gewalt?

Ein Absturz ist ein Rechner bzw. das Programm das nicht mehr (richtig) 
arbeitet und reagiert und das kommt seltenst von kosmischer Strahlung, 
vieleicht manchmal von EMV und meistens durch die Software und damit vom 
DAP (= dümmsten anzumehmenden Programmierer, davon mehr ich mich auch 
nicht aus :-))

Fact ist daß der Zustand der Ports bei einem Absturz der Software 
undefiniert ist. Alles weitere wurde ja schon gesagt, Watchdog oder bei 
kritischen Dingen hardwareseitig verriegeln.

Autor: ronny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
um der sinnlosen Diskussion ein Ende zu bereiten, das müsste die 
gesuchte Schaltung sein: http://www.hanneslux.de/avr/zuenduhr/lapu.html

Gruss Ronny

Autor: Volker Schulz (volkerschulz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Udo R. S. schrieb:
>>>Korrekt, aber eine Endlosschleife wuerde ich nicht als Absturz definieren
>
> Was ist denn euer Meinung nach ein Absturz?? Wenn die Platine mit dem yC
> runterfällt? Natürlich kommt es durch einen Softwarefehler zum Absturz,
> wodurch sonst? Durch Unterspannung? Dann ist es auch ein Softwarefehler,
> das hätte man mit der brown out detection erkennen und korrekt behandeln
> können.
>
> Was ist dann ein Microsoft Bluescreen? Kein Absturz, kein Softwarefehler
> sondern höhere Gewalt?
>
> Ein Absturz ist ein Rechner bzw. das Programm das nicht mehr (richtig)
> arbeitet und reagiert und das kommt seltenst von kosmischer Strahlung,
> vieleicht manchmal von EMV und meistens durch die Software und damit vom
> DAP (= dümmsten anzumehmenden Programmierer, davon mehr ich mich auch
> nicht aus :-))
>
> Fact ist daß der Zustand der Ports bei einem Absturz der Software
> undefiniert ist. Alles weitere wurde ja schon gesagt, Watchdog oder bei
> kritischen Dingen hardwareseitig verriegeln.

Wenn Microsoft Word in einer Endlosschleife haengt, wird Dein Rechner 
nicht abstuerzen und Du wirst auch keinen Bluescreen sehen... Kann ich 
Dir garantieren!

Der Bluescreen ist uebrigens eine Art "Watchdog", der den Computer 
resettet wenn z.B. ein potentiell gefaehrlicher Hardwareaufruf 
geschieht. Er re-bootet um den Computer wieder in einen definierten 
Zustand zu bringen.

Ich denke aber auch, dass die urspruengliche Frage im Kern beantwortet 
wurde. ;)

Volker

Autor: Tom (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja Genau Ronny das war die seite !! Danke :D

Autor: Volker Schulz (volkerschulz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Vollstaendigkeit halber noch die allgemeine Beschreibung eines 
(retriggerbaren) Monoflops:

http://de.wikipedia.org/wiki/Monostabile_Kippstufe

Autor: Reinhard Kern (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

rekordverdächtig: eine einzige sinnvolle Antwort, ca. 20 Antworten total 
daneben.

(Alles ausser dynamischer Kopplung, also Takt mit Kondensator, ist keine 
brauchbare Lösung - ein Monflop-IC ist auch schon wieder was, das 
ausfallen kann. Also so wenig komplex wie möglich!)

Vielleicht habe ich nachts auch einfach nicht mehr die Nerven für 
solches hohles Geschwätz.

Gruss Reinhard

Autor: Jan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nun, schon die erste Antwort war gleich die richtige. Der Watchdog ist 
genau für diesen Zweck gemacht worden. Alles andere ist sinnloser 
Overkill.

Autor: Gast? (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich kenne das auch als "Charge Pump".

Google mal nach Ostermann Schrittmotoren, 3D Step oder wie das heisst. 
Dort gibt es im Download-Bereich den Schaltplan für ein Breakout-Board, 
da wird genau soetwas eingesetzt.
Der PC muss ständig einen Takt rausschieben, sonst wird von diesem Board 
der Notaus ausgelöst.

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Zitat aus dem Ursprungspost:

>Nun könnte es ja theretisch passieren das der Controller abstürzt und
>trotzdem den Pin für die Lampe auf High lässt.

Bevor man hypothetische Symptome bekämpft, sollte man theoretische 
Ursachen suchen und beseitigen.

MfG Spess

Autor: Robert Teufel (robertteufel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tom schrieb:
> mhm nach einem Absturz weiss ich aber nicht wie die Ports vorher waren.

Tja, wenn er abstuerzt, dann weiss man auch nicht ob der Zustand in dem 
er war nicht ein sehr unerwuenschter Zustand war, deshlab ist er ja 
abgestuerzt.

Nach einem Absturz heisst die logische Fortsetzung der Geschichte RESET.

Robert

Autor: Zorc (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja. Wenn man die Kontrolle verloren hat, kann man neu booten. dann hat 
man die Kontolle wieder. Zumindest was den Contoller betrifft. Aber 
nicht was den externen Prozess betrifft. Wichtiger als neu zu booten ist 
neu auf den externen Prozess aufsetzen zu koennen. Das bedeuet, man darf 
die Kontrolle wegen Software nicht verlieren, denn in irgend einem 
Zustand wird er dauernd neu booten, was ja nicht als Kontolle bezeichnet 
werden kann. Ein erster Beginn ist keinen Code zu verwenden, den man 
nicht kennt. Also keine Libraries, die irgend was Tolles zu machen 
vorgeben, aber gewisse Parameter dann unerwarteterweise nicht 
akzeptieren.

Autor: horst (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> diese Dürfen unter keinen umständen zusammen leuchten

ich würde ein xor-gatter zusätzlich zum yC in betracht ziehen.

Autor: Udo R. S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>rekordverdächtig: eine einzige sinnvolle Antwort, ca. 20 Antworten total
>daneben.

>(Alles ausser dynamischer Kopplung, also Takt mit Kondensator, ist keine
>brauchbare Lösung - ein Monflop-IC ist auch schon wieder was, das
>ausfallen kann. Also so wenig komplex wie möglich!)

>Vielleicht habe ich nachts auch einfach nicht mehr die Nerven für
>solches hohles Geschwätz.

Eine kalte Lötstelle kann auch einen Ausfall verursachen,
also 21. hohle Antwort!
MfG

Autor: oldmax (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi
Um ein einigermaßen sicheres Schalten der Ausgänge zu erreichen und dein 
Programm zu prügen, wäre folgendes auch denkbar: der Timer.
In der Timer ISR prüfst du z.B. alle paar ms eine Variable, sagen wir 
auf 255 ( alle Bits 1). Ist dem so, kannst du davon ausgehe, das dein 
Programm alles abgearbeitet hat und setzt die Ausänge entsprechend einem 
zwischengespeichertem Ergebnis. danach schreibst du in dein Prüfbyte 
eine 0. Ist ein Bit nicht gesetzt, kannst du sogar auswerten, welche 
Routine noch gearbeitet hat und was nicht erledigt wird. Die Bits setzt 
du im Hauptprogramm entsprechend ein. Vielleicht ist's auch möglich, die 
Timer-ISR mittels Watchdog zu prüfen. Dann sollte es möglich sein, den 
Wachhund die Lichter ausblasen zu lassen.....
Gruß oldmax

Autor: Thomas Burkhart (escamoteur)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kann man denn erkennen, dass der µC soeben durch den Watchdog resetet 
wurde und es kein externer Reset/Neustart war?
Das würde ja zum Wiederaufsetzen helfen.

Gruß
Tom

Autor: ich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Absolute Sicherheit wirds wohl nie geben. ALLES kann kaputt gehen. Je 
nach dem wie schwerwiegend die Folgen sein könnten, muss man mehr oder 
weniger Aufwand betreiben um die Gefahr zu minimieren. Aber ausschließen 
ist nicht möglich.

Autor: lassativ (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wenn das Ding ''abstuerzt'' soll eine Quecksilberschalterampulle 
zerbrechen
und jeglichen Stromfluss unterbrechen.
Das ist die praktische Loesung fuer deine Hypothese.
Du brauchst aber einen Quicksilver Besen !

Autor: Sense (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Thomas Burkhart schrieb:
> Kann man denn erkennen, dass der µC soeben durch den Watchdog resetet
> wurde und es kein externer Reset/Neustart war?

Wenn es ein AVR ist, gibt's dafür ein Bit. Das Codefragment
  // check where reset came from
  if (MCUCSR & (1 << WDRF)) {
    prs("### reset by watchdog ###\n");
  }
  MCUCSR = 0; // reset for next reset

sollte bei der Suche im Datenblatt helfen.

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.