81
Arduino & Lign. / Sv: Watchdog
« Nyeste indlæg af Icecap 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.
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.