Watchdog (Læst 981x)

Offline Elfix

  • Spændingsdeler
  • ****
  • Indlæg: 64
  • Antal brugbare Indlæg: 1
  • Gammeldam
    • Vis profil
Watchdog
« Dato: Januar 07, 2023, 20:10:09 »
Hej DEF
Her lige et nyt emne  :)
For et års tid siden prøvede min søn og jeg at lave
Watchdog til mit StorkeControl men det kom det ikke noget
godt ud af!
Min søn har ellers en bachelor of engineering og er master of science
men der skal også lige siges at vi havde ikke særlig meget tid til at lege med det :)

Men det der skete var at megaen gik i selvsving og kunne ikke komme
ud af LOOPen heller ikke ved reset!!
Så siden har jeg ikke turde prøve en få det til at køre med Watchdog

Men skulle der her inde der har noget erfaring med det og evt. et link eller
noget jeg skal kikke på så vil jeg meget gerne høre fra jer :)

Hilsen Jonny
Alle opgaver løses kun umuligheder tager lidt længere tid

 

Offline Icecap

  • Jordet Basic
  • **
  • Indlæg: 177
  • Antal brugbare Indlæg: 19
    • Vis profil
Sv: Watchdog
« Svar #1 Dato: Januar 07, 2023, 23:53:27 »
Nu ved jeg ikke hvordan watchdog fungerer på en Arduino - men på rigtige mikroprocessorer fungerer den ved at man skal aktivere funktionen og derefter skal man "nulstille" den ved faste tidspunkter.

Havner man udenfor en ret snæver tidszone resetter mikroprocessoren.

Det er oftest dn MEGET god ide at udføre "nulstilningen" umiddelbart inden man enabler funktionen, så venter der ikke en reset når man tænder for programmet.

Arduinos system er ganske uegnet till dette da man ikke uden en del besvær kan tilgå timerinterrupt - efter hvad jeg ved. Dette giver ret store problem med at havne i rigtig tid med "nulstilningen".

 

Offline Elfix

  • Spændingsdeler
  • ****
  • Indlæg: 64
  • Antal brugbare Indlæg: 1
  • Gammeldam
    • Vis profil
Sv: Watchdog
« Svar #2 Dato: Januar 08, 2023, 18:08:00 »
Hej Icecap

Tak for svaret! :)
Har du eller i andre noget bud på hvad man ellers kan gøre? :(

Mvh. Jonny
Alle opgaver løses kun umuligheder tager lidt længere tid

 

Offline Icecap

  • Jordet Basic
  • **
  • Indlæg: 177
  • Antal brugbare Indlæg: 19
    • Vis profil
Sv: Watchdog
« Svar #3 Dato: Januar 08, 2023, 22:31:57 »
Hvis du kan anvende en timerinterrupt er det fuldt muligt at bruge watchdog.

Jeg gjorde det så at for hver reset nullede jeg en variabel i rutinen som blev udløst af timeren.

Main-loop satte den samme variabel til en specifik værdi hver gang den rullede rundt - og var den ikke sat till denne specifikke værdi når watchdogen skulle re-trigges lod programmet være med at gøre det da main-loop jo måtte sidde fast et eller andet sted.

Dette ville så udløse en hardware reset og det hele ville starte om.

Det kræver en del omtanke og effektiv anvending af hardwaren, programmet kan ikke have delay() eller lignende i heller så at lave et skudsikkert system er ikke enkelt.

Og det sidder i et kommercielt system som har potentialet at sprænge et hus i luften så sikkerhedstænket er højt. Og jeg mener "sprænge i luften" bogstaveligt.

Måden Arduino programmeres på er i mine øjne forkert, de eksempler på program jeg har set er af tvivlsom kaliber.

Jeg er selvfølgeligt farvet af mine job indenfor programmering siden 1985 og Dunning-Krüger syndromet rammer mig også så i retfærdighedens navn anser jeg at alle system som udfører deres job sikkert og stabilt er gode system.

F.eks. delay() er OK hvis man skal blinke en lampe - men er i min verden banlyst til alt andet.
« Senest Redigeret: Januar 14, 2023, 14:07:23 af Icecap »