Reset da software

Ciao.

Ci sono 4 metodi:

  1. Chiudere e riaprire la porta seriale , questo fa resettare il processore. e' la tecnica che usiamo per caricare i programmi sull'arduino quando premi "Upload to IO Board"

  2. Collegare un piedino digitale al piedino "Reset" sulla scheda ma la Atmel non garantisce che funzioni (la spiegazione è abbastanza tecnica e rasenta la masturbazione mentale)

  3. forzare il processore a fare "goto $00" però questo lascia la ram, i timer e gli interrupt sporchi... cioè non è garantito che il programma riparta bene.

  4. Raccomandato da Atmel. Attivare il "watchdog timer" e aspettare che si resetti.
    Il "cane da guardia" è un timer che serve a resettare un processore che si sia incastrato per un problema software. Il timer, una volta attivato, resetta il processore a meno che non venga fatto ripartire... perciò in un'applicazione che deve mantenere un certo livello di affidabilità, il programma fa ripartire il timer regolarmente ... dovesse mai incepparsi allora dopo pochi millisecondi il processore si resetta. Aggiungi questo all'inizio tuo sketch Arduino

 #include <avr/io.h>
#include <avr/wdt.h>

#define Reset_AVR() wdt_enable(WDTO_30MS); while(1) {}

mentre nel punto dove vuoi resettare scrivi:

Reset_AVR();

Nota: Apprezzo molto l'entusiasmo con cui molti si danno da fare per rispondere, senza di voi Arduino non esisterebbe. Però certe volte non sparate le risposte a caso perchè se chi ha fatto la domanda è un principiante poi si confonde e non capisce più :slight_smile: :slight_smile: :slight_smile:

1 Like