Go Down

Topic: RISOLTO Watchdog su arduino nano (Read 444 times) previous topic - next topic

thedrifter

Jan 19, 2019, 02:43 pm Last Edit: Jan 20, 2019, 05:33 pm by thedrifter
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

Datman

Il delay non blocca il funzionamento del microcontrollore...
Hi,I'm Gianluca from Roma.I play&work with electronics since I was16(1984).
After 25yrs of maintenance on cameras&video mixers,since 2013myJob is HDTVstudios design.
Since Jan2015 IPlayWith Arduino:bit.ly/2F3LPWP
Thanks 4 a Karma if U like my answer

thedrifter

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);
}

Datman

Vedo adesso il tuo programma di prova.
Con delay maggiore di 2 secondi non interviene?
Hi,I'm Gianluca from Roma.I play&work with electronics since I was16(1984).
After 25yrs of maintenance on cameras&video mixers,since 2013myJob is HDTVstudios design.
Since Jan2015 IPlayWith Arduino:bit.ly/2F3LPWP
Thanks 4 a Karma if U like my answer

gpb01

#4
Jan 19, 2019, 03:13 pm Last Edit: Jan 19, 2019, 03:15 pm by gpb01
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
Search is Your friend ... or I am Your enemy !

thedrifter

Ok, sto facendo, ma da dove si seleziona il bootloader optiboot? va in automatico? Lo cerca da se il compilatore?

gpb01

#6
Jan 19, 2019, 05:56 pm Last Edit: Jan 19, 2019, 05:56 pm by gpb01
Nel IDE devi quindi selezionare Arduino Nano ATmega328P e NON quello dove c'è scritto (old bootloader)
... te lo avevo indicato !

Guglielmo
Search is Your friend ... or I am Your enemy !

Datman

#7
Jan 19, 2019, 06:02 pm Last Edit: Jan 19, 2019, 06:04 pm by Datman
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"?...
Hi,I'm Gianluca from Roma.I play&work with electronics since I was16(1984).
After 25yrs of maintenance on cameras&video mixers,since 2013myJob is HDTVstudios design.
Since Jan2015 IPlayWith Arduino:bit.ly/2F3LPWP
Thanks 4 a Karma if U like my answer

gpb01

#8
Jan 19, 2019, 06:08 pm Last Edit: Jan 19, 2019, 06:08 pm by gpb01
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
Search is Your friend ... or I am Your enemy !

gpb01

#9
Jan 19, 2019, 06:11 pm Last Edit: Jan 19, 2019, 06:13 pm by gpb01
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
Search is Your friend ... or I am Your enemy !

uwefed

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

Datman

#11
Jan 20, 2019, 11:33 am Last Edit: Jan 20, 2019, 12:09 pm by Datman
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 )?
Hi,I'm Gianluca from Roma.I play&work with electronics since I was16(1984).
After 25yrs of maintenance on cameras&video mixers,since 2013myJob is HDTVstudios design.
Since Jan2015 IPlayWith Arduino:bit.ly/2F3LPWP
Thanks 4 a Karma if U like my answer

gpb01

#12
Jan 20, 2019, 12:03 pm Last Edit: Jan 20, 2019, 12:03 pm by gpb01
... 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
Search is Your friend ... or I am Your enemy !

uwefed

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

-zef-

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.

Go Up