Arduino Forum

International => Italiano => Software => Topic started by: thedrifter on Jan 19, 2019, 02:43 pm

Title: RISOLTO Watchdog su arduino nano
Post by: thedrifter on Jan 19, 2019, 02:43 pm
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
Title: Re: Watchdog su arduino nano
Post by: Datman on Jan 19, 2019, 02:49 pm
Il delay non blocca il funzionamento del microcontrollore...
Title: Re: Watchdog su arduino nano
Post by: thedrifter on Jan 19, 2019, 03:00 pm
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...

Code: [Select]

#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);
}
Title: Re: Watchdog su arduino nano
Post by: Datman on Jan 19, 2019, 03:11 pm
Vedo adesso il tuo programma di prova.
Con delay maggiore di 2 secondi non interviene?
Title: Re: Watchdog su arduino nano
Post by: gpb01 on Jan 19, 2019, 03:13 pm
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
Title: Re: Watchdog su arduino nano
Post by: thedrifter on Jan 19, 2019, 05:46 pm
Ok, sto facendo, ma da dove si seleziona il bootloader optiboot? va in automatico? Lo cerca da se il compilatore?
Title: Re: Watchdog su arduino nano
Post by: gpb01 on Jan 19, 2019, 05:56 pm
Nel IDE devi quindi selezionare Arduino Nano ATmega328P e NON quello dove c'è scritto (old bootloader)
... te lo avevo indicato !

Guglielmo
Title: Re: Watchdog su arduino nano
Post by: Datman on Jan 19, 2019, 06:02 pm
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"?...
Title: Re: Watchdog su arduino nano
Post by: gpb01 on Jan 19, 2019, 06:08 pm
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
Title: Re: Watchdog su arduino nano
Post by: gpb01 on Jan 19, 2019, 06:11 pm
Ecco qui:

Code: [Select]
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:
Code: [Select]
nano.menu.cpu.atmega328.bootloader.file=optiboot/optiboot_atmega328.hex
... mentre per Arduino Nano w/ ATmega328P (old bootloader):
Code: [Select]
nano.menu.cpu.atmega328old.bootloader.file=atmega/ATmegaBOOT_168_atmega328.hex
... che è quello NON compatibile con il WD.

Guglielmo
Title: Re: Watchdog su arduino nano
Post by: uwefed on Jan 20, 2019, 12:15 am
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
Title: Re: Watchdog su arduino nano
Post by: Datman on Jan 20, 2019, 11:33 am
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 )?
Title: Re: Watchdog su arduino nano
Post by: gpb01 on Jan 20, 2019, 12:03 pm
... 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:

Code: [Select]
nano.build.f_cpu=16000000L
Guglielmo
Title: Re: Watchdog su arduino nano
Post by: uwefed on Jan 20, 2019, 01:06 pm
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
Title: Re: Watchdog su arduino nano
Post by: -zef- on Jan 20, 2019, 03:05 pm
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.
Title: Re: Watchdog su arduino nano
Post by: gpb01 on Jan 20, 2019, 03:32 pm
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 :D :D :D

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
Title: Re: Watchdog su arduino nano
Post by: thedrifter on Jan 20, 2019, 05:32 pm
Ciao,
vedo siete andati avanti da voi nei post :D
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 :D

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 :)
Title: Re: RISOLTO Watchdog su arduino nano
Post by: gpb01 on Jan 20, 2019, 05:49 pm
.. 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 (http://forum.arduino.cc/index.php?topic=149082.0), punto 15 e suoi sottopunti !

Guglielmo
Title: Re: RISOLTO Watchdog su arduino nano
Post by: thedrifter on Jan 20, 2019, 10:27 pm
Cavolo, non ho mai letto quei punti, non pensavo fosse così restrittivo parlare di corrente, chiedo venia, correggo il post, scusate :)