Buonasera. Sto cercando un watchdog da inserire nel mio codice con un reset di 30 secondi almeno. Perche ho provato il wdt.h ma sopra i 5 secondi non funziona ho letto su internet la libreria avr/wdt.h ma non riesco a reperirla sulla librerie da installare e nemmeno in quelle installate. Avrei bisogno almeno di 30 secondi perche nel avvio del setup ci mette una ventina di secondi ad inizializzare tutto. Grazie e buonaserata
In genere il WD è progettato per intervenire tra i 100 e i 1000 mSec, in casi particolari a 2 o 3 secondi, non oltre, prima dell'avvento dei MC il WD si costruiva esternamente al micro mediante un oscillatore esterno e un contatore che veniva resettato periodicamente dal un impulso prodotto dal firmware in punti cruciali del programma, si interponeva tra micro e il PIN reset del contatore un derivatore per resettarlo sul fronte e non sullo stato, l'overcount del contatore resetta il micro, come counter una scelta comune era il 4060, ci sono anche chip dedicati come WD della Maxim o Texas, non vedo altre soluzioni che un WD esterno
E ci mancherebbe il contrario! ... Ma hai visto come si chiama la libreria? ... avr/wdt.h ... è per architetture AVR e NON certo per ARM cortex M4 come è la MCU che è montata sulla UNO R4.
La UNO R4, contrariamente a quanto il nome può far pensare, condivide con la UNO R3 SOLO la disposizione dei pin ed il fatto che lavori a 5V ... per il resto, SOLO alcune librerie sono state portate sulla nuova MCU e confermate essere compatibili ...
TUTTE le librerie che accedono direttamente all'hardware ed ai registri del AVR sono normalmente incompatibili e occorre che l'autore implementi il codice per poter lavorare su UNO R4 ... lavoro che gli autori, buona parte volontari che hanno messo a disposizione gratuitamente il loro lavoro, non sempre fanno o che, comunque, richiede loro parecchio tempo.
... e che programma impegna la MCU per tempi così lunghi? Cosa fa il codice in tutto quel tempo ... su una MCU che, tra l'altro, viaggia a 48 MHz! Volere un WD con certi tempi è, quasi sempre, sinonimo di programma mal concepito ...
Guglielmo
Per inciso, sono andato a vedere anche su AVR e la avr/wdt.h prevede, ache essa, tempi massimi di 8 secondi (che già sono, comunque, un'enormità).
Guglielmo
Sto creando una stazione meteo e ho notato che sul monitor seriale dopo il setup vanno via una ventina di secondi prima di vedere i dati dei sensori stampati sul monitor seriale
Allora lascerò senza watchdog in caso se vedo che si blocca la resetterò manualmente. Al momento ho il programma in esecuzione
da 3 giorni e continua a funzionare. Grazie e scusate per il disturbo
... che può essere una cosa normale o un errore di programma ... di sicuro NON una cosa per cui si usa il WDT.
Il WDT è per le condizioni NON prevedibili (disturbi elettromagnetici, disturbi sull'alimentazione, ecc.) ovvero tutte quelle cose esterne che, indipendentemente dal programma, possono bloccarne il funzionamento, ovvero ... "anomalie".
Per il resto si DEVE fare debug e capire perché un programma si blocca e NON ... risolvere "alzando le spalle" e facendo un bel reset!
Guglielmo
Hai ragione proverò a fare un depub e vedere cosa succede. Grazie
Se hai il sorgente del BootLoader puoi modificarlo disabilitando il WD durante l'esecuzione del BL e riattivarlo alla sua uscita o all'inizio della tua applicazione.
La modifica del BL è necessaria anche quando ci sono shift register con attaccate o altre periferiche da inizializzare, per evitare che lo stato delle uscite di queste periferiche siano ad un valore indeterminato durante il caricamento in RAM dell'applicazione da parte del BL
This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.