Go Down

Topic: watchdog arduino mega2560 (Read 1 time) previous topic - next topic

makky

Un saluto a tutti. Leggendo qua e la ho capito che il bootloader che ho sul mega2560 ha un bug per quanto riguarda il watchdog che non mi permette di utilizzarlo. Quello che non mi è chiaro, nonostante tutte le letture se c'è effettivamente una soluzione. Ho letto dell'optiboot che forse dovrebbe risolverlo.
Qualcuno mi sa dare qualche dritta per uscire da questo fosso?
Grazie a tutti!

lesto

credo che il bug sia semplicemente che se imposti un tempo trooopo basso (diciamo < di 10 secondi) non riesci a caricare nessun nuovo sketch, e se troppo basso, non superi nemmeno la fase di boot del boot-lader creando un riavvio automatico infinito.
il tutto risolvibile con un programmatore ISP
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

makky

grazie per la risposta, ma il problema non è quello, infatti ho impostato anche 8 secondi. da come ho capito il problema sta che nel primo avvio il bootloader imposta a 15ms, creando il loop infinto, comunque risolvibile facilmente facendo l'upload con il tato reset premuto e rilasciato nel momento opportuno.

makky

ragazzi nessuno riesce ad aiutarmi?

leo72

Vorrei chiederti, però: a che ti serve il watchdog? Se usato in malo modo porta spesso a bloccare il micro in reset infiniti per loop del codice scritti male. Ti serve davvero?

makky

Leo innanzitutto grazie della risposta. lo so che se usato male potrebbe essere un casino, ma proverò ad usarlo bene, perchè credo che in un buon sistema affidabile il watchdog ci debba essere. Per questo era il mio motivo di studio . Poi magari studiandolo me ne pentirò, ma vorrei provarlo a mie spese 2560 permettendo :)


leo72

Se hai solo una scheda Arduino, te lo sconsiglio. Inavvertitamente puoi bloccare la scheda nel watchdog che autoresetta all'infinito l'Atmega. E senza un altro Arduino o un programmatore esterno per resettare i fuse, saresti nell'impossibilità di toglierlo.

A proposito, sai come si attiva?

makky

Io l'ho attivato, e già mi sono trovato nella condizione di loop infinito, risolto con la procedura descritta sul sito (comunque ho anche il programmatore l'mkii).
Ma il problema come ho descritto sopra e che il bootloader del2560 cambia impostazioni del watchdog passandolo a 15ms (almeno così ho capito leggendo sui vari forum). E non so come risolvere questo bug. Ho sentito di optiboot??

lesto

scusa, ma se nel setup risetti il watchdog dovresti risolvere no? l'importante è che riesca ad avvenire il boot dello sketch
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

makky

io lo setto nel setup ad esempio e lo setto per sicurezza ad 8 secondi per essere sicuri che durante il caricamento del bootloader lui non interviene. Infatti al primo avvio dopo l'upload funziona (perchè lo carico nel setup), però poi se interviene il watchdog e si resetta automaticamente, entra in loop infinito(da qui il fatto che lui lo passa a 15 ms e quindi non esce dal bootloader).

leo72

Non puoi modificare i sorgenti del bootloader e ricompilarlo con un altro valore?
L'Optiboot mi pare non sia compatibile con gli Atmega1280/2560

makky

sarebbe un'ottima idea Leo, però non so come intervenire. se mi riuscite a dare una mano ve ne sarò grato :)

leo72

Qual è il sorgente del codice?
Sai quale bootloader è usato sulle Mega? Io non lo so.

makky

stavo controllando proprio questo, dovrebbe essere stk500boot_v2_mega2560.hex
ho provato ad aprire stk500boot.c e poi ho aperto ATmegaBOOT_168.c che è un'altro per il 168. Quello che ho notato da ignorante che in quello del 168 c'è un controllo sul watchdog mentre nel primo non c'è nulla. Ho provato a fare una ricerca in tutto il file, niente.
Non so se la prova che ho fatto è stupida o meno.

leo72

Ho visto dal file boards.txt che il Mega1280 usa l'ATmegaBOOT_168 mentre il Mega2560 usa effettivamente l'stk500boot_v2.
Vediamo se si capisce qualcosa.

Go Up