Autoreset
Riavviare Arduino via software
Come eseguire un riavvio dello sketch via software
Avere la possibilità di riavviare l’esecuzione del programma può risultare utile nei casi in cui ci sia l’esigenza di ripristinare la board a una condizione iniziale certa, soprattutto quando si trova in una posizione non accessibile o remota.
Sul sito Arduino.cc ho trovato una utile funzione che permette di far ripartire l’esecuzione del programma. Il codice che segua mostra come avviene il reset software e come il codice venga eseguito nuovamente.
int var= 0;
//Dichiarazione di funzione che punta all'indirizzo zero
void(* Riavvia)(void) = 0;
void setup()
{
//inizializzo la seriale
Serial.begin(9600);
//avvio
Serial.println("AVVIO");
//attendo 1s
delay(1000);
}
void loop()
{
//incremento la variabile
var++;
//visualizzo sul serial monitor
//il valore della variabile
Serial.println(var);
//attendo 5s
Serial.println("Attesa");
delay(5000);
//reset via software
Serial.println("Reset!!");
Riavvia();
}
Arduino resettare automaticamente la scheda utilizzando il WatchDog Timer
Watchdog, come creare un sistema che auto resetti la scheda in caso di blocchi o attese infinite
Il watchdog è un sistema molto interessante atto a supervisionare il normale ciclo di istruzioni della cpu. L’idea è quella di monitorare l’esecuzione del programma; in caso di blocchi o cicli infiniti, che rischiano di mettere il microcontrollore in uno stato di inutilizzo, il watchdog interviene resettando il microcontrollore e riavviandolo automaticamente.
Questo meccanismo è solitamente implementato in hardware e, anche Arduino, basato sul microcontrollore ATMega328, supporta questa funzionalità

