Home

Settimana scorsa sono incappato in un problema programmando un chip Attiny (fratellino minore della famiglia ATMEL resa famosa dalla schedina arduino): resettarla da programma.

Inizialmente ho pensato di fare un accrocchio collegando un’uscita al pin del reset. Non funziona… La spiego facile (spero): ingressi ed uscite sono letti in momenti differenti. Prima si leggono gli ingressi e poi si settano le uscite (è un po’ come un sistema di chiuse). Se tirate su il PIN per fare il reset, non ha effetto perchè il reset va mantenuto per un certo tempo, ma il reset tira giù subito tutte le uscite e quindi la scheda non si resetta.

Esiste un modo più soft per eseguire l’operazione, senza inventarsi strani accrocchi con condensatori e senza sciupare un pin.

In fondo allo sketch definite una funzione di questo tipo:

void softReset() { asm volatile (" jmp 0"); } 

La funzione fa si che il puntatore al programma riparta da 0, che equivale a fare un RESET.

Chiamatela nello sketch quando volete che il RESET sia eseguito.

softReset();

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...