Pages: [1] 2   Go Down
Author Topic: Reset via Software  (Read 1452 times)
0 Members and 1 Guest are viewing this topic.
(TN) italy
Offline Offline
Jr. Member
**
Karma: 0
Posts: 77
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao ragazzi smiley
E' possibile eseguire il reset dell'arduino con un comando dalla seriale?
Considerato che quando si accende il serial monitor dal pc la scheda si resetta di sicuro un modo esiste smiley-grin
Logged

Riva del Garda, TN / Forlì
Offline Offline
Edison Member
*
Karma: 8
Posts: 2246
Il piu' modesto al mondo
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao ragazzi smiley
E' possibile eseguire il reset dell'arduino con un comando dalla seriale?
Considerato che quando si accende il serial monitor dal pc la scheda si resetta di sicuro un modo esiste smiley-grin
la rs232 prevede che vi sia la possibilità di attivare il pin rst, questo si attiva in automatico quando si abilita la comunicazione ma si è possibile impostarlo via software, se ci dici che linguaggio usi su pc ci dovrebbe essere un modo
Logged

Il nuovo forum italiano sull'elettronica: http://www.electroit.tk/ <--- Nuovamente online!

(TN) italy
Offline Offline
Jr. Member
**
Karma: 0
Posts: 77
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Uso c#  smiley
Logged

Bergamo
Offline Offline
God Member
*****
Karma: 1
Posts: 663
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Dovresti riuscire a switchare via software il PIN DTR della seriale del tuo PC via C# in questo modo:
http://msdn.microsoft.com/it-it/library/system.io.ports.serialport.dtrenable.aspx

fammi sapere se funziona, non ho mai provato in tale linguaggio...
Logged

lucadentella.it

Rome (Italy)
Offline Offline
Tesla Member
***
Karma: 138
Posts: 9863
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Se devi resettare Arduino dal tuo programma su PC basta che chiudi e riapri la comunicazione sulla seriale, questa operazione fa abbassare il segnale hardware DTR che è collegato al reset di Arduino con conseguente reset dello stesso.
Cioè una cosa tipo com.close() seguito da com.open(), sintassi e nomi delle funzioni dipendono dal linguaggio e dalla libreria utilizzati.

Logged

(TN) italy
Offline Offline
Jr. Member
**
Karma: 0
Posts: 77
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ci proverò smiley
Ma io ho visto che sulla mia scheda c'è un piedino reset che portato a massa resetta la scheda. Non è possibile portarlo a massa via software? che ne sò, con un LOW. Dico una cazzata?
Logged

Bergamo
Offline Offline
God Member
*****
Karma: 1
Posts: 663
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao

via software il metodo consigliato da Atmel è di abilitare il watchdog, guarda questo thread:
http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1222941939/all

nel tuo caso quindi la soluzione potrebbe essere:

definire un comando che impartirai via seriale e che provoca il reset (es. la stringa "reset")
fare in modo che il tuo sw c# invii tale comando
fare in modo che arduino, alla ricezione di tale comando, lanci il reset via watchdog

bye
Logged

lucadentella.it

(TN) italy
Offline Offline
Jr. Member
**
Karma: 0
Posts: 77
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Scusate ho guardato ma l'inglese non lo mastico molto smiley-grin bisogna richiamare una funzione apposita?
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 335
Posts: 23122
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Non è possibile portarlo a massa via software? che ne sò, con un LOW. Dico una cazzata?
Sì, dici una roba del genere  smiley-lol
L'Atmega non riesce ad autoresettarsi dandosi da solo un segnale LOW sul pin di reset per un tempo sufficiente a far sì che il segnale sia interpretato correttamente.

Senza scomodare il watchdog (potrebbe causare blocchi del micro nel caso si sbagli qualcosa a livello di software per cui si manda in loop il programma), puoi usare il reset via codice. Fai un bel
Code:
asm volatile ("jmp 0x0000");
alla ricezione di un particolare comando.
Logged


(TN) italy
Offline Offline
Jr. Member
**
Karma: 0
Posts: 77
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Sei un genio.... smiley-wink
Logged

Bergamo
Offline Offline
God Member
*****
Karma: 1
Posts: 663
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

ciao

nota però che il jump a 0 non è un vero reset... fa ricominciare il tuo sw dalla prima istruzione ma non resetta stato dei registri, dei PIN etc... per un confronto tra i due metodi:
http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1235780325/all

bye
Logged

lucadentella.it

Deep south of Italy
Offline Offline
Faraday Member
**
Karma: 8
Posts: 2955
The quieter you become, the more you can hear
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

c'era anche una discussione in italiano di qualche tempo fà sullo stesso argomento.
Logged

Rome (Italy)
Offline Offline
Tesla Member
***
Karma: 138
Posts: 9863
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

nota però che il jump a 0 non è un vero reset... fa ricominciare il tuo sw dalla prima istruzione ma non resetta stato dei registri, dei PIN etc... per un confronto tra i due metodi:

E' un reset software, è vero che non vengono riportati ai valori di default i registri macchina, però viene reinizializzato completamente l'ambiente di lavoro dalla parte nascosta del software, quella che aggiunge il compilatore.
Quanto sopra vuol dire che lo stack e l'heap vengono distrutti e ricreati, idem per tutte le variabili e i puntatori, cioè hai tabula rasa di tutto e anche i vari PORT vengono rimessi alla condizione di default prevista da wiring, tutti input, per poi eseguire la relativa inizializzazione come previsto dal software utente.
Inoltre attenzione al fatto che il giochetto col watchdog si può fare solo con l'optiboot che ne prevede la disattivazione, con il bootloader della 2009 non viene disattivato e di conseguenza il micro continua a resettare fino a che non  staccate l'alimentazione, il che rende inutile il reset tramite watchdog, tanto vale premere il tasto di reset o staccare l'alimentazione.
Logged

Milazzo (ME)
Offline Offline
Sr. Member
****
Karma: 0
Posts: 400
Chi cerca trova...
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Dovresti riuscire a switchare via software il PIN DTR della seriale del tuo PC via C# in questo modo:
http://msdn.microsoft.com/it-it/library/system.io.ports.serialport.dtrenable.aspx

fammi sapere se funziona, non ho mai provato in tale linguaggio...
Io stavo pensando di utilizzare http://msdn.microsoft.com/it-it/library/system.io.ports.serialport.dtrenable.aspx
Ma si deve impostare a true o a false? E per quanto tempo?
Logged

Xfox's Blog, Elettronica, informatica e tant'altro: http://www.xfox.it

Deep south of Italy
Offline Offline
Faraday Member
**
Karma: 8
Posts: 2955
The quieter you become, the more you can hear
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ma quello mi sà che serve solo per l'abilitazione o meno , non per l'uso.
Logged

Pages: [1] 2   Go Up
Jump to: