Ciao a tutti
Ogni tanto mi imbatto in problemi nuovi....
Avrei necessità di attivare il watchdog su un nano, non vorrei fare il circuito esterno col 555...
Ho provato col classico esempio del led blink, settando il watchdog a 2 secondi, mettendo un delay superiore dovrei ottenere il reset del micro, invece mi accade che il led che è sul pin 13 mi lampeggia velocemente (credo faccia sempre reset) e quindi il programma non riparte.
Ho riprogrammato il nano caricando il bootloader (perchè sapevo problemi di boot vecchio), ma succede uguale, aiuti? Una domanda, il bootloader si carica l'ultimo in automatico? Ho utilizzato la ide app per win10
Grazie
Il delay non blocca il funzionamento del microcontrollore...
Datman:
Il delay non blocca il funzionamento del microcontrollore...
Scusa, ma se io non resetto il watchdog per via di un delay più lungo dei 2 secondi di impostazione, di fatto il watchdog non deve causare il reset? Ora il delay è a 200 ms e va bene, se lo porto a 2200 ms dovrebbe attivarsi...
#include <avr/wdt.h>
#define LED 13
boolean led = false;
void setup()
{
wdt_enable(WDTO_2S);
pinMode(LED, OUTPUT);
wdt_reset();
}
void loop()
{
wdt_reset();
if (led == false)
{
digitalWrite(LED, HIGH);
led = true;
}
else
{
digitalWrite(LED, LOW);
led = false;
}
delay (200);
}
Vedo adesso il tuo programma di prova.
Con delay maggiore di 2 secondi non interviene?
Devi caricare OptiBoot ... il vecchio bootloader NON permette il corretto funzionamento del WD (ti fa l'effetto che fa a te, reset continuno e rapido lampeggio del LED).
Nel IDE devi quindi selezionare Arduino Nano ATmega328P e NON quello dove c'è scritto (old bootloader) e, tramite un programmatore ISP, caricare il nuovo bootloader.
Guglielmo
Ok, sto facendo, ma da dove si seleziona il bootloader optiboot? va in automatico? Lo cerca da se il compilatore?
gpb01:
Nel IDE devi quindi selezionare Arduino Nano ATmega328P e NON quello dove c'è scritto (old bootloader)
... te lo avevo indicato !
Guglielmo
Non bisogna selezionare l'old bootloader, che è quello dove c'è scritto che cosa?...
Forse volevi dire che non bisogna selezionare quello che si chiama "old bootloader"?...
Datman:
Non bisogna selezionare l'old bootloader, che è quello dove c'è scritto che cosa?...
NO, apri il file "boards.txt" e vai a guardare i bootloaders che vengono usati ... vedrai che quello che (finalmente) usa Optiboot è quello che ho indicato.
Guglielmo
Ecco qui:
nano.name=Arduino Nano
nano.upload.tool=avrdude
nano.upload.protocol=arduino
nano.bootloader.tool=avrdude
nano.bootloader.unlock_bits=0x3F
nano.bootloader.lock_bits=0x0F
nano.build.f_cpu=16000000L
nano.build.board=AVR_NANO
nano.build.core=arduino
nano.build.variant=eightanaloginputs
## Arduino Nano w/ ATmega328P
## --------------------------
nano.menu.cpu.atmega328=ATmega328P
nano.menu.cpu.atmega328.upload.maximum_size=30720
nano.menu.cpu.atmega328.upload.maximum_data_size=2048
nano.menu.cpu.atmega328.upload.speed=115200
nano.menu.cpu.atmega328.bootloader.low_fuses=0xFF
nano.menu.cpu.atmega328.bootloader.high_fuses=0xDA
nano.menu.cpu.atmega328.bootloader.extended_fuses=0xFD
nano.menu.cpu.atmega328.bootloader.file=optiboot/optiboot_atmega328.hex
nano.menu.cpu.atmega328.build.mcu=atmega328p
## Arduino Nano w/ ATmega328P (old bootloader)
## --------------------------
nano.menu.cpu.atmega328old=ATmega328P (Old Bootloader)
nano.menu.cpu.atmega328old.upload.maximum_size=30720
nano.menu.cpu.atmega328old.upload.maximum_data_size=2048
nano.menu.cpu.atmega328old.upload.speed=57600
nano.menu.cpu.atmega328old.bootloader.low_fuses=0xFF
nano.menu.cpu.atmega328old.bootloader.high_fuses=0xDA
nano.menu.cpu.atmega328old.bootloader.extended_fuses=0xFD
nano.menu.cpu.atmega328old.bootloader.file=atmega/ATmegaBOOT_168_atmega328.hex
nano.menu.cpu.atmega328old.build.mcu=atmega328p
... come vedi per Arduino Nano w/ ATmega328P è specificato:
nano.menu.cpu.atmega328.bootloader.file=optiboot/optiboot_atmega328.hex
... mentre per Arduino Nano w/ ATmega328P (old bootloader):
nano.menu.cpu.atmega328old.bootloader.file=atmega/ATmegaBOOT_168_atmega328.hex
... che è quello NON compatibile con il WD.
Guglielmo
Resta da chiedere perché Ti serve il Watchdog perché normalmente non Ti serve.
Se vuoi risolvere un problema di Sketch che si blocca allora il Watchdog é la via sbagliata.
Ciao Uwe
Ah! Non bisogna selezionare quello che si chiama "Arduino nano ... (old bootloader)". Chiaro.
Rispetto ad Arduino Uno è diverso solo il clock, impostato a 1 MHz (8 MHz diviso 8 )?
Datman:
... Rispetto ad Arduino Uno è diverso solo il clock, impostato a 1 MHz (8 MHz diviso 8)?
Non mi sembra, se guardi, tra le parti comuni trovi:
nano.build.f_cpu=16000000L
Guglielmo
No, Arduino NANO lavora a 16Mhz come il UNO.
Il NANO ha un FT232 come interfaccia USB mentre il UNO ha un ATmega16U2 programmato.
Ciao Uwe
Il nuovo bootloader non l'ho mai provato, per usare il WDT sulla nano avevo caricato il bootloader della uno e funziona benissimo.
Come detto da Uwefed usare il WDT per risolvere problemi software non è una buona scelta, ma quando il programma funziona bene può succedere che il micro vada in tilt per altre ragioni (anche se non so per quali) una nano che uso fuori casa come stazione meteo per oltre un anno non si è mai riavviata per il WDT mentre in un giorno nello spazio di due minuti si è resettata 8 volte, se non era per il WDT sarebbe rimasta bloccata chissà per quanto tempo prima che mi accorgessi e avrei perso tutte le letture meteo.
-zef-:
Il nuovo bootloader non l'ho mai provato, per usare il WDT sulla nano avevo caricato il bootloader della uno e funziona benissimo.
... mi sembra ovvio, la MCU è la stessa
Del resto, se guardi la riga che ho riportato, NON c'è alcun riferimento alla nano, ma è un generico file che si chiama "optiboot_atmega328.hex" ovvero ... Optiboot per ATmega328P
Guglielmo
Ciao,
vedo siete andati avanti da voi nei post
Vi comunico che il problema è risolto, bastava giustamente selezionare nano (non vecchio boot), grazie per avermelo indicato, per me è la prima volta che cambio il bootloader, non sapevo, di fatto fa tutto la ide, nulla di più semplice... Ora il watchdog funziona
Il discorso blocchi del processore è complicato, utilizzo nano per pilotare un motore (ventola di caldaia a pellet) brushless a 2 fili, quindi invertendo continuamente la fase, e ho sospetti che entri qualche disturbo EM che va a bloccare il micro, ho schermato la scheda, ma non ho risolto, il comportamento è random, funziona per giorni, poi quando gli prende si blocca lo sketch, basta resettare o rialimentare che tutto va, ho messo diodi ai pilotaggi delle bobine di relè, ma non risolvo, quindi per non rimanere al freddo, la soluzione migliore è il watchdog. Non è un problema di sketch, è veramente semplice il codice, penso proprio a disturbi esterni. Domani se riesco monto il tutto, vediamo che accade...
Grazie a tutti per l'aiuto, come sempre
thedrifter:
.. ho messo condensatori ai contatti dei relè della caldaia, che ha dei pilotaggi a 220 etc, ma non risolvo
... se rinomini il 220V ... devo chiudere il thread ... REGOLAMENTO, punto 15 e suoi sottopunti !
Guglielmo
Cavolo, non ho mai letto quei punti, non pensavo fosse così restrittivo parlare di corrente, chiedo venia, correggo il post, scusate