Go Down

Topic: Reset da software (Read 35854 times) previous topic - next topic

Andrea80

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

nathanvi

Un documento poco consultato penso sia il dataasheet (effettivamente un po' mastodontico ma ottimo riferimento).
A pagina tre del documento trovi che c'è un pin che fa da reset.
My blog:
http://zuccala.blogspot.com

garinus

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...

uccio

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

garinus

ma se di fianco a 3v3 c'è il collegamento reset.....

garinus

ps bisogna metterlo a gnd per resettare

uccio

#6
May 22, 2009, 07:35 pm Last Edit: May 22, 2009, 07:36 pm by uccio Reason: 1
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

admin

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





uccio

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.

Andrea80

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

Andrea80

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

garinus

quindi con la seriale si resetta totalmente come se usassi il tasto?
libera anche la ram ecc?


admin

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.

sky7176

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

Andrea80

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..

Go Up