Arduino Forum

Forum 2005-2010 (read only) => International => Italiano => Topic started by: Andrea80 on May 21, 2009, 05:58 pm

Title: Reset da software
Post by: Andrea80 on May 21, 2009, 05:58 pm
E' possibile resettare arduino da software senza ricorrere alla pressione del tasto sulla scheda?!?

Chiedo ciò perchè ho il problema che non mi riconosce più lo sketch dopo che stacco il cavetto o spengo il pc.!

Grazie mille
Title: Re: Reset da software
Post by: nathanvi on May 22, 2009, 09:31 am
Un documento poco consultato penso sia il dataasheet (effettivamente un po' mastodontico ma ottimo riferimento).
A pagina tre  del documento (http://www.atmel.com/dyn/resources/prod_documents/doc2545.pdf) trovi che c'è un pin che fa da reset.
Title: Re: Reset da software
Post by: garinus on May 22, 2009, 03:47 pm
di fatto penso che il pulsane agisca su quel pin
arduino ha un ingrasso denominato reset che ha stessa funzione del pulsante
aprendo(nel senso collegando i cavi) la seriale mi pare che si resetti...
non so se ti può essere utile...
Title: Re: Reset da software
Post by: uccio on May 22, 2009, 07:22 pm
un "ottimo" metodo per resettare arduino quando ci sono talmente tanti fili che non si riesce a premere il pulsante è cortocircuitare 5V con GND.

ovviamente scherzo non usatelo!!!!!!!!

p.s. è vero che esiste il pin di reset sull'Atmel ma questo è già collegato con il pulsante e non c'è modo di "alzarlo" via software.
Un modo per aggirare sarebbe tirare un filo dalla valle del pulsante (se si capisse il senso) sino ad un pin digitale. Fatto questo capire se il pin RESET vuole High o vuole Low per resettare. Ma verosimilmente credo proprio che voglia High.

p.p.s non c'è altro modo che saldare su arduino per fare cio
Title: Re: Reset da software
Post by: garinus on May 22, 2009, 07:28 pm
ma se di fianco a 3v3 c'è il collegamento reset.....
Title: Re: Reset da software
Post by: garinus on May 22, 2009, 07:29 pm
ps bisogna metterlo a gnd per resettare
Title: Re: Reset da software
Post by: uccio on May 22, 2009, 07:35 pm
azzo vero!
c'è già il pin RESET affianco ai 3.3 V  
e confermo anche che per resettare abbia bisogno di un valore BASSO

Quote
 A low level on this pin for longer than the minimum pulse length will generate a Reset, even if the clock is not running
Title: Re: Reset da software
Post by: admin on May 22, 2009, 07:46 pm
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
Code: [Select]

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

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


mentre nel punto dove vuoi resettare scrivi:
Code: [Select]

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ù :) :) :)




Title: Re: Reset da software
Post by: uccio on May 22, 2009, 08:34 pm
caro Banzi non credo di aver sparato a caso. >:(
ho soltanto descritto l'opzione 2. Si vede che d'ora in poi aspetteremo sempre le tue risposte. Tutti fanno domande e tu rispondi! Mi sembra un bel forum.

Ora voglio sapere il motivo per cui non dovrebbe funzionare con il piedino Reset.
Title: Re: Reset da software
Post by: Andrea80 on May 22, 2009, 08:38 pm
Mi fa piacere di aver scatenato una discussione con il mio post!Ora provo e vi faccio sapere!!

Sono in debito comunque con tutti voi.!

Andrea
Title: Re: Reset da software
Post by: Andrea80 on May 22, 2009, 08:49 pm
Provando le istruzioni suggerite sullo sketch ottengo le seguenti:

avrdude: stk500_getsync(): not in sync: resp=0x00
avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x51
Title: Re: Reset da software
Post by: garinus on May 23, 2009, 02:28 pm
quindi con la seriale si resetta totalmente come se usassi il tasto?
libera anche la ram ecc?

Title: Re: Reset da software
Post by: admin on May 23, 2009, 02:59 pm
andrea80: Quell'errore non è dovuto al codice.. è un errore durante il caricamento. prova a verificare il modello di scheda selezionato nel software etc etc

garinus: si... perche il pin DTR della porta seriale cambia stato quando la porta viene aperta dal lato computer e questo è collegato tramite un condensatore da 100nf al piedino di reset. Questo fa in modo che il processore si resetti solo quando cambia stato.

uccio: era un discorso generale , ho anche messo le faccine... perche sei cosi permaloso?

Secondo la Atmel il metodo del pin che resetta il processore può non funzionare perchè appena il processo di reset inizia tutti i pin vengono messi in stato "tristate" perciò potrebbero non rimanere bassi per il tempo necessario da provocare un reset completo.
Title: Re: Reset da software
Post by: sky7176 on May 24, 2009, 12:02 pm
Massimo,
una domanda:

quanto da te suggerito serve per resettare da software Arduino utilizzando il WD.

Il comando Reset resetta il processore oppure re-inizializza il contatore del WD?

Perche' io vorrei utilizzare il WD per controllare il corretto funzionamento di un mio programma, visto ceh dovra' andare a lavorare su una montagna difficilmente raggiungibile.

Grazie e complimenti.

Giuseppe
Title: Re: Reset da software
Post by: Andrea80 on May 24, 2009, 01:51 pm
Massimo, ogni volta che inserisco le istruzioni che mi hai suggerito succede un pandemonio. Ogni volta che carico qualsiasi sketch la scheda inizia la procedura di reset e mi vengono dati gli errori che ti ho segnalato prima....!

Davvero non capisco..
Title: Re: Reset da software
Post by: Andrea80 on May 25, 2009, 06:04 pm
Che fare?!
Title: Re: Reset da software
Post by: Andrea80 on May 26, 2009, 07:28 pm
UP
Title: Re: Reset da software
Post by: Ramiuss on Apr 16, 2010, 09:48 am
Salve a tutti.
Sono nuovo del forum, di cui saluti tutti i membri.
Senza aprire una nuovo topic, ho acquistato un Arduino 2009 con lo scopo di realizzare la programmazione automatica della mia macchina del pane.
Il progetto è a buon punto, direi quasi terminato. Funziona tutto a meno di un problemino per il quale chiederei un piccolo aiuto. Devo resettare lo Sketch con un comando specifico.
Per resettare uso, come suggerito dal grande Massimo :
#include <avr/io.h>
#include <avr/wdt.h>
#define Reset_AVR() wdt_enable(WDTO_30MS); while(1) {}

mentre nel punto dove voglio resettare ho scritto:
Reset_AVR();


Quando viene eseguito il comando "Reset_AVR();" la scheda entra in loop, il led lampeggia in continuazione e non prende alcun tipo di input, la seriale è bloccata e così pure lo Sketch.
Qualche idea/suggerimento?
Ringrazio in anticipo e approfitto per fare i complimenti a questo utilissimo forum.
Title: Re: Reset da software
Post by: uwefed on Apr 16, 2010, 11:50 am
Ciao Ramiuss
Spiegami perché devi resettare l'arduino.
Ciao Uwe
Title: Re: Reset da software
Post by: Ramiuss on Apr 16, 2010, 12:29 pm
Ciao.
In effetti sarebbe solo un modo per ripristinare "comodamente" tutto lo sketch con un solo comando, invece di farlo manualmente, compresi gli output e i loro stati (led).
La cosa è risolvibile via software, ma avendo visto quella routine proposta da Banzi, semplice semplice, la volevo usare solo per comodità.
Title: Re: Reset da software
Post by: garinus on Apr 17, 2010, 02:04 pm
c'è un post dove era spiegato bene

non che hai messo quel comando senza un if prima?
in quel caso appena parte fa il setup quindi eseguendo il loop si imbatte nel comando si resetta e ricomincia all'infinito

in tal caso riprogrammalo e se non riesci prova tenedo premuto reset manualmente

e  mettere un pulsante collegato in parallelo a quello dellla scheda?
Title: Re: Reset da software
Post by: uwefed on Apr 17, 2010, 05:21 pm
ciao Ramiuss
Durante il Reset del microprocessore non hai controllo dei stati delle uscite.
Io preferirei rimettere le variabili e le uscite/entrate ai valori iniziali. Cosí i stati sono in ogni momento definiti.
Se non vuoi scrivere tutte le cose 2 volte perché devi definire gli stati e le variabili nella funzione setup() e poi una seconda volta nel loop(), perché non li metti in una funzione da te definita e la chiami all'inizo dalla funzione setup() e dopo l' esecuzione del codice quando vuoi resettare un altra volta?

nel senso:
Code: [Select]
setup()
{
inizalizza();
}

loop()
{
codice.....
if (condizione di fine) inizializza();
}

inizializza()
{
carica variabili con valore iniziale;
mettere PIN su stato iniziale;
}
}


Ciao Uwe
Title: Re: Reset da software
Post by: t30 on Apr 17, 2010, 06:37 pm
io uso questo sistema....
non ho ben capito in quale dei 4 modi rientra :)

Code: [Select]
void(* resetFunc) (void) = 0; //declare reset function @ address 0
resetFunc();  //call reset


trovato in giro per il forum tempo fa...

Title: Re: Reset da software
Post by: Ramiuss on Apr 18, 2010, 05:33 pm
Grazie a tutti, ho risolto via sw.
Title: Re: Reset da software
Post by: ottaviane on Oct 30, 2014, 03:10 pm
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"...............


Ciao,
interessante questo metodo.
Giusto per approfondire le nostre conoscenze potresti fare un esempio?
Come si fa a chiudere e riaprire la porta seriale?
ciao e grazie.