(TN) italy
Offline
Jr. Member
Karma: 0
Posts: 74
|
 |
« on: August 26, 2011, 05:29:00 am » |
Ciao ragazzi  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 
|
|
|
|
|
Logged
|
|
|
|
|
Riva del Garda, TN / Forlì
Offline
Edison Member
Karma: 7
Posts: 2071
Il piu' modesto al mondo
|
 |
« Reply #1 on: August 26, 2011, 05:35:47 am » |
Ciao ragazzi  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  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
|
|
|
|
|
(TN) italy
Offline
Jr. Member
Karma: 0
Posts: 74
|
 |
« Reply #2 on: August 26, 2011, 08:37:50 am » |
Uso c# 
|
|
|
|
|
Logged
|
|
|
|
|
|
|
Rome (Italy)
Offline
Tesla Member
Karma: 74
Posts: 7340
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
|
 |
« Reply #4 on: August 26, 2011, 08:59:05 am » |
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
Jr. Member
Karma: 0
Posts: 74
|
 |
« Reply #5 on: August 28, 2011, 03:03:58 pm » |
Ci proverò  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
God Member
Karma: 1
Posts: 585
|
 |
« Reply #6 on: August 28, 2011, 03:38:54 pm » |
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/allnel 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
|
|
|
|
|
(TN) italy
Offline
Jr. Member
Karma: 0
Posts: 74
|
 |
« Reply #7 on: August 28, 2011, 03:40:48 pm » |
Scusate ho guardato ma l'inglese non lo mastico molto  bisogna richiamare una funzione apposita?
|
|
|
|
|
Logged
|
|
|
|
|
Forum Moderator
Italy
Offline
Brattain Member
Karma: 219
Posts: 16431
Don't know what I do
|
 |
« Reply #8 on: August 28, 2011, 04:36:32 pm » |
Non è possibile portarlo a massa via software? che ne sò, con un LOW. Dico una cazzata?
Sì, dici una roba del genere  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 asm volatile ("jmp 0x0000"); alla ricezione di un particolare comando.
|
|
|
|
|
Logged
|
|
|
|
|
(TN) italy
Offline
Jr. Member
Karma: 0
Posts: 74
|
 |
« Reply #9 on: August 28, 2011, 04:46:25 pm » |
Sei un genio.... 
|
|
|
|
|
Logged
|
|
|
|
|
Bergamo
Offline
God Member
Karma: 1
Posts: 585
|
 |
« Reply #10 on: August 29, 2011, 01:57:53 am » |
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/allbye
|
|
|
|
|
Logged
|
|
|
|
|
Deep south of Italy
Offline
Faraday Member
Karma: 6
Posts: 2953
The quieter you become, the more you can hear
|
 |
« Reply #11 on: August 29, 2011, 02:33:40 am » |
c'era anche una discussione in italiano di qualche tempo fà sullo stesso argomento.
|
|
|
|
|
Logged
|
|
|
|
|
Rome (Italy)
Offline
Tesla Member
Karma: 74
Posts: 7340
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
|
 |
« Reply #12 on: August 29, 2011, 02:52:58 am » |
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
|
|
|
|
|
|
|
Deep south of Italy
Offline
Faraday Member
Karma: 6
Posts: 2953
The quieter you become, the more you can hear
|
 |
« Reply #14 on: August 29, 2011, 04:07:39 am » |
ma quello mi sà che serve solo per l'abilitazione o meno , non per l'uso.
|
|
|
|
|
Logged
|
|
|
|
|
|