Go Down

Topic: Domanda per esperti: Cosa può causare il reset automatico di Arduino Mega ? (Read 2355 times) previous topic - next topic

Ambrogio

Ciao a tutti, ho un problema:
uso un Arduino Mega (la vecchia versione) per comandare l'impianto elettrico di casa mia; uso dei pulsanti come ingressi, dei relè e dei mosfet per le uscite e un po' di altra roba di contorno (dimmer comandati in seriale, un ATMega che mi fa il controllo carichi, un altro ATMega che fa da ricevitore infrarossi ecc...).
Il problema è questo:
Ho due uscite che mi comandano una ventola e una stufetta elettrica che ho temporizzato, cioè se sono accese per più di tot tempo si spengono da sole; il problema è che A VOLTE non si spegne solo quell'uscita ma si spengono tutte le luci in casa, come se io resettassi l'Arduino.
Ho pensato che fosse colpa dell'uso della funzione millis() così ho aggiunto un RTC ma il problema è rimasto !

Così mi chiedevo cosa può causare il reset forzato dell'Arduino ?!? Forse un overflow di una variabile ? Mi sembra strano perchè come variabili uso delle unsigned long e memorizzo il numero di secondi trascorsi dall'accensione, quindi non dovrebbe essere un numero molto grosso visto che al max le uscite stanno alte per 10 min.

Secondo voi da cosa può dipendere ? So che è difficile dirlo senza vedere il codice ma ora non ce l'ho sotto mano e comunque dovrei eliminare un po' di parti perchè sarebbe troppo lungo e poco comprensibile !

uwefed

...
Secondo voi da cosa può dipendere ? So che è difficile dirlo senza vedere il codice ma ora non ce l'ho sotto mano e comunque dovrei eliminare un po' di parti perchè sarebbe troppo lungo e poco comprensibile !

Non é che é difficile a dirlo; é impossibile.
Se veramente vuoi un coniglio devi darci tutto il codice cosí come lo usi e non ripulito. Potresti ripulire anche la causa del problema.
Puoi mandarcelo come file allegato (se clicchi su "Additional Options" in basso).

una domanda: Quando succede quello che hai descritto i pulsanti funzionano e le luci ecc si possono accendere / spegnere?

Ciao Uwe

Michele Menniti

Sarei più propenso verso l'hardware, quando dici "a volte" non puoi addebitarlo ad un firmware che opera in loop, altrimenti, a mio modesto parere, dovrebbe farlo regolarmente.
Sarebbe molto più utile avere lo schema elettrico di quanto hai realizzato, o almeno capire come alimenti Arduino e lo stand-alone, i consumi a riposo ed a pieno carico, gli spunti di assorbimento.
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

uwefed

Menniti non per litigare. ;)

Secondo me il problema puó essere SW, ma anche HW come dici Tu, non escluderei nessuna delle due. Solo il problema SW per noi altri é piú semplice individuarlo che un problema HW che non abbiamo in manio.
Se il problema é che viene sovrascritto una variabile puó essere la cosa condizionata con un if che avviene solo in certi momenti perché diverse condizioni - livelli su entrate/uscite devono essere vere.

Ciao Uwe

Marbi

quanto tempo passa tra un presunto reset ed un'altro? 50 giorni circa?

Michele Menniti


quanto tempo passa tra un presunto reset ed un'altro? 50 giorni circa?


ha detto che il millis l'ha abolito usando l'RTC hardware.

@ Uwe: figurati se penso che vuoi "litigare" XD Semplicemente mi pare di capire che questo sistema funzioni in modalità ciclica, quindi penso che il problema si debba verificare non "ogni tanto" ma più sovente; se poi invece il funzionamento è random allora concordo con te che il verificarsi di una data condizione o combinazione possa causare il crash. Poi, volendo frnire un aiuto, e non ritenendomi affatto un esperto software ovviamente cerco le info su cui posso dire qualcosa. ;)
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

uwefed


pablos

piu che altro un coniglio !!! ahahahhaa scusate non ce l'ho fatta :)
no comment

pablos

Quote
Ho due uscite che mi comandano una ventola e una stufetta elettrica che ho temporizzato, cioè se sono accese per più di tot tempo si spengono da sole; il problema è che A VOLTE non si spegne solo quell'uscita ma si spengono tutte le luci in casa,

Analisi logica della frase,
Quote
cioè se sono accese per più di tot tempo si spengono da sole;
quindi le ha già viste accese insieme e funzionano. Il problema lo ha quando avviene uno spegnimento.
secondo me è un problema software
no comment

leo72

Sì ma dice anche:
Quote
l problema è che A VOLTE non si spegne solo quell'uscita ma si spengono tutte le luci in casa,

Sembra quindi un corto che fa saltare il contatore

Michele Menniti

Ci sono, forse il coniglio vuole metterlo sulle stufe accese per arrostirlo? XD
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

Michele Menniti


Se veramente vuoi un coniglio devi darci tutto il codice Ciao Uwe

XD XD ORA ho finalmente visto e capito, mi era sfuggito proprio :smiley-mr-green:
Comunque hai ragione tu, ora elimino tutti i miei post OT, altrimenti torna e trova sto casino inutile.
Ciao. :)
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

Ambrogio

Ok ragazzi, allora se dovete litigare significa che la prossima volta chiederò un coniglio invece di un conSiglio !!! XD

Scherzi a parte, ora non sono a casa e quindi non posso posare il codice, comunque pensavo anch'io ad un problema SW perchè succede allo spegnimento e non all'accensione. Dovrebbe essere strutturata così la cosa:

Ogni volta che RTC.second cambia, incremento "secondi attuali"
Se premo pulsante 1 ---> inverto uscita 1
Se premo pulsante 2 ---> inverto uscita 2 e memorizzo "secondi dall'accensione 2"
Se premo pulsante 3 ---> inverto uscita 3 e memorizzo "secondi dall'accensione 3"
Se premo pulsante 4 ---> inverto uscita 4
Se uscita 2 alta e "secondi attuali" >= "secondi dall'accensione 2" ---> inverto uscita 2
Se uscita 3 alta e "secondi attuali" >= "secondi dall'accensione 3" ---> inverto uscita 3

Michele Menniti

No, si scherza sempre, io ora ho eliminato i miei OT.
Un punto oscuro della tua spiegazione, che fa pensare all'hardware, è il fatto che tu dici che si spengono le luci di casa. Ma le luci di casa sono comandate sempre da Arduino oppure ti salta il differenziale o un magnetotermico sulla 220?
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

pablos

Quote
Un punto oscuro della tua spiegazione, che fa pensare all'hardware, è il fatto che tu dici che sispengono le luci di casa. Ma le luci di cas sono comandate sempre da Arduino oppure ti salta il differenziale o un magnetotermico sulla 220?


questa domanda è fondamentale, se dice si salta il differenziale vengo a Lamezia e mi inchino ai tuoi piedi!!!

:D :D :D
no comment

Go Up