
Quando lavori da casa ci sono alcuni vantaggi del lavoro. Puoi preparare i tuoi pasti, fare un po' di bucato durante la pausa pranzo e bere tutto il tè che vuoi. Io uso un bollitore da fornello per far bollire l'acqua per il mio tè, quindi quando entro nella zona di scrittura, mi affido al suo fischio acuto per sapere quando è pronto.
A volte, quando sono distratto, non metto bene il coperchio. Di conseguenza, il bollitore rimane silenzioso nonostante il fatto che l'acqua liquida al suo interno stia rapidamente diventando gas. Il mio comportamento distratto in questo scenario significa solo che berrò meno tè, ma nei sistemi embedded, le conseguenze sono molto più gravi se non sai come operare un Timer di Guardia (WDT). Quando il tuo timer non funziona, un microcontrollore bloccato rimarrà bloccato e farà sì che il tuo sistema embedded rimanga inattivo. Vediamo come funziona il timer di guardia, come implementare un circuito di timer di guardia e come farli funzionare correttamente al primo tentativo in modo da evitare questo scenario.
Il Watchdog Timer è una semplice funzionalità di sicurezza nei dispositivi elettronici che aiuta a riavviare un microcontrollore in caso di crash del circuito hardware o software del watchdog. I Watchdog Timer STM32 sono disponibili sia come circuito integrato (IC) separato sia come funzionalità incorporata nel microcontrollore stesso. Non utilizzare un WDT nella progettazione di sistemi embedded è spesso considerato un peccato imperdonabile.
Il modo in cui operano i Watchdog Timer è semplice. Viene programmato per contare alla rovescia su un intervallo di timeout del Watchdog predefinito. Durante il normale funzionamento, il microcontrollore aggiorna periodicamente il timer di conteggio alla rovescia per impedirne la scadenza. Se il microcontrollore non risponde, allora non aggiornerà il Watchdog Timer. Di conseguenza, quando i Watchdog Timer scadono, attiveranno un impulso o un segnale per resettare il microcontrollore. Questa semplice funzionalità compensa gli errori di progettazione o i fattori ambientali che possono causare il crash di un microcontrollore.
Tuttavia, se il tuo WDT fallisce, è improbabile che il tuo sistema embedded si riprenda dal suo stato errato. Ecco perché è importante individuare la causa per cui un Watchdog Timer potrebbe non riuscire a resettare il microcontrollore. La risposta più ovvia è che i chip del Watchdog Timer sono difettosi. Tuttavia, se ripetutamente hai sistemi embedded in più unità che non riescono a riprendersi, allora potrebbe esserci qualcosa di sbagliato nei tuoi progetti.
Effettivamente, nei miei molti anni di progettazione e implementazione di centinaia di dispositivi basati su microcontroller, non ho mai incontrato un singolo caso di fallimento del Timer di Guardia (Watchdog Timer) STM32. La causa principale è spesso semplicemente un errore umano.
Per i sistemi embedded che utilizzano un WDT interno, il codice fuori controllo può disattivare il Timer di Guardia se i bit di configurazione vengono sovrascritti involontariamente. I chip di Timer di Guardia esterni soffrono di problemi completamente diversi. In questo caso, è comune avere un pin jumper che può disconnettere il segnale di reset dal Timer di Guardia esterno quando gli ingegneri del firmware stanno sviluppando e debuggando un programma. Spesso questi pin jumper devono essere collegati manualmente prima che le unità vengano dispiegate sul campo. Se non lo sono, allora i segnali di reset del WDT rimarranno disconnessi e non riusciranno a resettare il microcontroller.
Un motivo più comune per cui i Timer di Guardia (Watchdog Timers) non funzionano è a causa di errori di codifica. Se le funzioni che aggiornano i timer WDT sono posizionate nella parte sbagliata del programma, non funzioneranno quando dovrebbero. Il firmware per microcontrollori diventa complicato quando ci sono molteplici compiti con diverse priorità in un Sistema Operativo in Tempo Reale (RTOS). Compiti del circuito Watchdog di priorità superiore possono continuare ad essere eseguiti anche quando compiti di priorità inferiore sono in un loop infinito anomalo. Se l'aggiornamento del circuito del Timer di Guardia è il compito di massima priorità, allora il microcontrollore non verrà aggiornato quando non funziona correttamente.
Assicurarsi che il WDT svolga il suo lavoro coinvolge lo sviluppatore del firmware, l'installatore del sistema e il progettista dell'hardware watchdog. Gli sviluppatori di firmware dovrebbero applicare le migliori pratiche di programmazione per evitare sovraccarichi di codice che disattivano il WDT interno. Gli sviluppatori di firmware devono avere una buona comprensione dell'architettura della memoria del microcontrollore e di come utilizzare correttamente puntatori e allocazioni di memoria nel codice.
Oltre a ciò, la struttura del programma dovrebbe essere progettata in modo che i Timer di Guardia (Watchdog Timers) siano aggiornati nelle posizioni appropriate all'interno del programma. Questo significa che il programma attiverà un reset del Watchdog se si sviluppa un loop infinito in qualsiasi punto del programma. È possibile anche sviluppare un'utilità di test per verificare la funzionalità del WDT sul campo. Ciò elimina anche il rischio di dimenticare eventuali pin di collegamento scollegati tra un Timer di Guardia esterno e il microcontrollore.
Quando hai bisogno di accedere a uno strumento di layout PCB facile da usare che include tutto il necessario per costruire schede di circuito di alta qualità e fabbricabili, non cercare oltre CircuitMaker. In aggiunta al software di progettazione PCB facile da usare, tutti gli utenti di CircuitMaker hanno accesso a uno spazio personale sulla piattaforma Altium 365. Puoi caricare e memorizzare i tuoi dati di progettazione nel cloud, e puoi facilmente visualizzare i tuoi progetti tramite il tuo browser web in una piattaforma sicura.
Inizia a usare CircuitMaker oggi e resta sintonizzato per il nuovo CircuitMaker Pro da Altium.