Problema RESET con Arduino Nano

Salve
Sto provando uno sketch che funziona perfettamente su Arduino UNO, su un Nano, su quest’ultimo sembra funzionare tutto bene ma appena arriva ad un comando di reset “Reset_AVR();” si blocca tutto, comincia a lampeggiareil led (quello collegato al pin 13) e non si ferma più, ho provato con il tasto di reset si ferma il led fino a quando tengo premuto poi riparte, chiudo e riapro il monitor seriale ma nulla, non c’è verso l’unico modo per fermarlo è togliergli l’alimentazione.
Visto che funziona sull’UNO c’è qualche problema di incompatibilità??

E' un problema di bootloader, la Reset_AVR() usa il watchdog e se questo non viene azzerato dopo il reset il micro continua a resettare per sempre, con il led sul pin 13 che lampeggia, staccando l'alimentazione ottieni il power on reset che azzera il watchdog, cosa che non avviene con il reset tramite il relativo pin.
Sulla nano il bootloader è quello della 2009 che non prevede l'azzeramento del watchdog, devi aggiornarlo col bootloader della UNO, ovviamente dopo dovrai programmare la nano usando come board la UNO.

A questo punto comunque é da vedere perché devi resettare l’ arduino.
Ciao Uwe

Quello che sto realizzando e sempre un anti furo, da cellulare posso ad esempio inviare il comando per escludere le sirene ma per riattivare tutto devo resettare in modo che da default lui ha tutto attivo.
Non ho idea di come fare ma adesso provo a sostituire il bootloader

turidachiana:
ma per riattivare tutto devo resettare in modo che da default lui ha tutto attivo.

E' un modo "barbaro" per farlo. :slight_smile:
Ti basta creare una funzione, p.e. init_sys(), che si occupa della inizializzazione di default del sistema, in pratica dentro questa funzione copi tutto quello che ti serve presente nella setup() e la chiami, sia dalla setup() che dalla loop(), quando devi ripristinare lo stato di default.

Sarà brutatale ma il mio arduino non si è mai lamentato magari gli piace pure :smiley: :smiley: :smiley: :smiley:
adesso mi era balenata in mente l'idea di un relay che porta il pin reset a massa (questa è ancora più cattiva :smiling_imp: :smiling_imp: )
In effetti potrei mettere tutto quello che c'è dentro void setup in una funzione e poi richiamarla sia dal setup che dalla parte dello skech dove fa il reset.
Vi faccio sapere e sempre grazie

Se devi eseguire tutto quello che c'é nel setup puoi chiamarlo anche direttamente setup().

Attenzione: resettare Arduino tramite un segnale elettrico creato dallo stesso Arduino non funziona. L' impulso RESET deve avere una certa durata minima che non é garantita.

Ciao Uwe

OK non si smette mai d'imparare (mi sa che forse sono allo 0,1 % della conoscenza di Arduino :wink: )
Non era necessario che rieseguisse proprio tutto quello che c'è nel setup ma va benissimo anche così e non ho riscritto nulla, ho sostituito la riga Reset_AVR(); con setup(); a me interessava principalmente resettare la condizione delle sirene e il modulo GSM FATTO.
Grazie

Io vorrei sottolineare che il reset volontario di Arduino non è quasi mai necessario. C'è praticamente SEMPRE un modo più semplice di fare quel che si vuole, convicetevene! In un caso come questo poi era di una banalità sconcertante. Purtroppo c'è un mucchio di gente dal "reset facile" :(.

Si ma quella del reset facile non è quasi mai gente cattiva ;D ;D
Vorrei farvi un'altra domanda che non centra con il titolo ma evito di aprire altro post.
Vorrei collegare un led all'esterno che mi indica allarme in funzione posso collegarlo direttamente ad un pin con la sua resistenza? e se qualcuno lo mette in corto cosa succede brucio la porta o cos'altro??
Come conviene collegarlo??

SukkoPera:
Io vorrei sottolineare che il reset volontario di Arduino non è quasi mai necessario.

Il reset si usa esclusivamente in caso di chrash, magari dovuti a disturbi di natura elettrica piuttosto che bug del software, non a caso esiste il watchdog. :slight_smile:

turidachiana:
posso collegarlo direttamente ad un pin con la sua resistenza?

Si, nessun problema se colleghi il led dotato di resistenza.
Se viene messo in corto non succede nulla proprio perché c'è la resistenza, semplicemente invece di scorrere 5-6 mA, quando il led è accesso, ne scorreranno 10-12.
Però tenendo conto che parliamo di un antifurto sarebbe una cosa intelligente prevedere che tutte le uscite e gli ingressi siano isolati galvanicamente, p.e. tramite foto accoppiatori, dall'elettronica principale in modo che se un male intenzionato inietta una tensione elevata su un ingresso non ti frigge il sistema. :slight_smile:

Io avevo pensato ad un semplice e banale fusibile :smiley: .
Ho visto che di Fotoaccoppiatore ne esistono in commerci tanti e non costano nemmeno tanto quindi si può fare, tu quale useresti? Bisogna realizzare pure una parte di circuito esterna??

Più semplice ancora posso utilizzare un relay che quando viene attivato da arduino chiude il circuito da un trasformatore esterno al resto della centralina mi pare sufficientemente isolato o no??

Correggetemi se sbaglio adesso forse ho capito di cosa si tratta, di fatto i relay che uso per arduino, è fatto con un Fotoaccoppiatore.
Potrei utilizzare anche questi PC817, 5 pezzi 2,50 euro compresi di spedizione da un fornitore italiano su ebay.
Lo collego ad arduino come se fosse un semplice led (quello di fatto è) dall'altra parte ho un interruttore fotosensibile che si chiude all'accensione del led, su questo posso collegare un polo di un trasformatore a 5V con la sua resistenza per accendere il led.
E' così o mi sono perso qualcosa?????