Sto ancora cercando di trovare una risposta a questa domanda:
Perché mentre gli MCU stm32 hanno un cane da guardia perfetto (intendo il cane da guardia di Windows (WWDG)), c'è un cane da guardia semplice (cane da guardia indipendente (IWDG))?
Ho trovato questa pagina che ha detto:
La ST Microelectronics ha una linea di dispositivi Cortex-M3. M3 è diventato estremamente popolare per i dispositivi embedded di fascia bassa e STM32F di ST è rappresentativo di queste parti (sebbene il WDT sia un componente aggiuntivo ST e non rispecchi necessariamente le implementazioni di altri fornitori). STM32F ha due diversi meccanismi di protezione. Un "cane da guardia indipendente" è un bel design alla vaniglia che non ha altro che la facilità d'uso. Ma il loro Window Watchdog offre una protezione più solida. Alla scadenza di un conto alla rovescia, viene generato un reset, che può essere impedito ricaricando il timer. Niente di speciale lì. Ma se la ricarica avviene troppo rapidamente, anche il sistema si ripristinerà. In questo caso "troppo rapidamente" è determinato da un valore che si programma in un registro di controllo.
Un'altra caratteristica interessante: può generare un interrupt appena prima del ripristino. Scrivi un po 'di codice per catturare l'interrupt e puoi prendere qualche azione per, ad esempio, mettere il sistema in uno stato sicuro o per snapshot dei dati a scopo di debug. ST suggerisce di utilizzare l'ISR per ricaricare il cane da guardia, ovvero calciare il cane in modo che non si verifichi un ripristino. Non dare il loro consiglio. Se il programma si arresta in modo anomalo, i gestori di interrupt potrebbero continuare a funzionare normalmente. E l'utilizzo di un ISR per ricaricare il WDT invalida l'intero motivo di un watchdog della finestra.
e questo :
La nuova serie di CPU STM32F4 Cortex ™ -M4 di STMicroelectronics ha due watchdog indipendenti. Uno corre dal proprio oscillatore RC interno. Ciò significa che tutti i tipi di cose possono crollare nella CPU e il WDT continuerà a sparare. Esiste anche un "window watchdog" (WWDT) che richiede al codice di solleticare frequentemente, ma non troppo spesso. Questo è un modo molto efficace per assicurare che il codice in crash che scrive casualmente sul meccanismo di protezione non causi un solletico WDT e che il WWDT possa generare un interruzione poco prima che venga affermato il reset.
ok, diamo un'occhiata nel manuale di riferimento :
L'STM32F10xxx ha due periferiche di watchdog integrate che offrono una combinazione di alto livello di sicurezza, precisione di temporizzazione e flessibilità d'uso. Entrambe le periferiche di watchdog (Independent e Window) servono per rilevare e risolvere i malfunzionamenti dovuti a un errore del software e per attivare il ripristino del sistema o un interruzione (solo watchdog della finestra) quando il contatore raggiunge un determinato valore di timeout. Il watchdog indipendente (IWDG) è sincronizzato dal proprio clock a bassa velocità (LSI) dedicato e rimane quindi attivo anche se l'orologio principale non funziona. L'orologio watchdog (WWDG) della finestra è pre-calcolato rispetto all'orologio APB1 e ha una finestra temporale configurabile che può essere programmata per rilevare comportamenti anomali in ritardo o precoci dell'applicazione. L'IWDG è più adatto alle applicazioni che richiedono l'esecuzione del watchdog come processo totalmente indipendente al di fuori dell'applicazione principale, ma hanno vincoli di precisione di temporizzazione inferiori. Il WWDG è più adatto alle applicazioni che richiedono che il watchdog reagisca all'interno di una finestra di temporizzazione accurata.
Il watchdog della finestra viene utilizzato per rilevare il verificarsi di un errore del software, generalmente generato da interferenze esterne o da condizioni logiche impreviste, che induce il programma applicativo ad abbandonare la sua sequenza normale. Il circuito del watchdog genera un ripristino MCU alla scadenza di un periodo di tempo programmato, a meno che il programma non aggiorni il contenuto del downcounter prima che il bit T6 venga cancellato. Viene inoltre generato un ripristino MCU se il valore del downcounter a 7 bit (nel registro di controllo) viene aggiornato prima che il downcounter abbia raggiunto il valore del registro della finestra. Ciò implica che il contatore deve essere aggiornato in una finestra limitata.
Come puoi vedere, nessuno di loro ha detto Perché ci sono due cani da guardia. se chiedo che Quali sono le differenze tra i due watchdog, conterai tutte le funzionalità che puoi vedere in precedenza e se vuoi confrontare entrambi, ovviamente il watchdog di Window (WWDG) sarà il vincitore! allora Perché ci sono due cani da guardia?
Voglio sapere che quando dovrei usare IWDG e quando WWDG?
e c'è qualche ragione per dirci Perché chiamano il secondo orologio con questo nome -> "Window watchdog"?