<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
    <channel>
        <title>Uso del Watchdog su Arduino Mega R3</title>
        <description> Ciao a tutto il forum,
ho da pochi giorni avviato la mia prima stampante e fino ad ora l&#039;ho sempre sorvegliata come un falco.. Con la prospettiva in futuro di usarla senza presidio umano ho letto e mi hanno raccontato che ci possono essere casi in cui l&#039;Arduino può smettere di &quot;loopare&quot;, col rischio di mandare in surriscaldamento hotend o piatto (questa non vuol essere minimamente una critica verso chi scrive il firmware). Da vecchio programmatore di PLC mi sto informando sulla funzione di watchdog ma trovo spesso indicazioni incomplete. Da quello che ho capito per evitare di bloccare la Mega è necessario prima sostituire il codice del bootloader originale (io ho trovato questo Arduino-stk500v2-bootloader. Qualcuno di voi ha esperienza in merito?
Grazie</description>
        <link>https://reprap.org/forum/read.php?361,872040,872040#msg-872040</link>
        <lastBuildDate>Sat, 13 Jun 2026 07:58:03 -0400</lastBuildDate>
        <generator>Phorum 5.2.23</generator>
        <item>
            <guid>https://reprap.org/forum/read.php?361,872040,873081#msg-873081</guid>
            <title>Re: Uso del Watchdog su Arduino Mega R3</title>
            <link>https://reprap.org/forum/read.php?361,872040,873081#msg-873081</link>
            <description><![CDATA[ Da quel poco che si capisce dal sito di optiboot che dovrebbe essere l'attuale bootloader di Arduino, come mi sembra di capire da uno dei link che ho postato, il problema del watchdog dovrebbe essere sisolto con optiboot o con i recenti bootloader di arduino, che dovrebbero essere almeno dall'UNO in poi, in  un articolo di adafruit si parlava di bootloader e si diceva che dal Uno in poi rispetto a quelli precdenti il bootloader era passato da circa 2000 byte a 512 byte facendo aumentare la memoria a disposizione di 1.5 kbyte.<br />
<br />
Però ora non so con il 2560 come funzioni, ovviamente il "watchdog timer" dovrebbe essere inserito nel loop principale, e anche in quello che gestisce gli interrupt, nelle prime istruzioni dovrebbe esserci quella che resetta il timer del watchdog.<br />
<br />
Poi va visto come viene implementato il loop principale e la gestione degli interrupt, dal poco che ricordo sono due parti distinte del codice, se viene richiesto un interrupt il mani loop viene "interotto" e il controllo passa alla routine di gestione degli interrupt che controlla quale interrupt è scattato e agisce di conseguenza.<br />
<br />
Ma non è che io abbia programmato molto così "low level", mi sono sempre limitato ad usare sketch semplici.<br />
<br />
Saluti<br />
<br />
Carlo D.]]></description>
            <dc:creator>onekk</dc:creator>
            <category>GCODE, Software e Firmware</category>
            <pubDate>Wed, 27 May 2020 12:39:01 -0400</pubDate>
        </item>
        <item>
            <guid>https://reprap.org/forum/read.php?361,872040,873074#msg-873074</guid>
            <title>Re: Uso del Watchdog su Arduino Mega R3</title>
            <link>https://reprap.org/forum/read.php?361,872040,873074#msg-873074</link>
            <description><![CDATA[ <blockquote class="bbcode"><div><small>Quote<br /></small><strong>onekk</strong><br />
Probabilmente quando il watchdog "scatta" fa semplicemente ripartire il software che è appunto il bootloader, in teoria il bootloader dovrebbe semplicemente rifare il giro, cioè "verificare se esiste un programma da lanciare" e "lanciarlo", andrebbe visto come l'attivazione del watchdog interferisca con questo processo, nell'articolo che ti ho linkato sopra si parla dell'Uno che necessita di un bootloader diverso da quello di "serie" per usare il watchdog, il mega è diverso per cui non saprei.<br />
<br />
AGGIORNAMENTO:<br />
Ho letto in giro ed in teoria il bootloader introduce un ritardo di 5 secondi (almeno per l'arduino UNO, ma dalla pagina di optiboot sembrerebbe che anche il bootloader del mega sia derivato da quello) tra l'alimentazione od il reset e l'effettiva partenza del programma caricato con il bootloader, magari questo influisce sul watchdog, anche se in teoria durante quel tempo il processore non è bloccato sta solo aspettando i codici dalla seriale, nel caso tu voglia riprogrammare lo "sketch".</div></blockquote>
Il watchdog non è altro che un timer connesso al pulsante di reset, con il timer che può essere resettato periodicamente (ed è quello che deve fare il sw) o completamente disattivato (WatchDog off).<br />
Quando scatta il tempo impostato perché nessuno è arrivato in tempo a resettare il timer, viene emesso un reset e la cpu riparte come se qualcuno avesse premuto il pulsante fisico di reset (o avesse tolto e poi ridato corrente).<br />
<br />
Il bootloader è un normale programma, è solamente il programma eseguito per primo all'avvio, che poi a sua volta passa il controllo ad un programma successivo (lo sketch).<br />
Se il WDog è acceso quando si entra nel bootloader ci possono essere due comportamenti:<br />
<br />
a) Il bootloader ha una gestione del WDog, ossia controlla tra i primi suoi compiti (è importante farlo presto) se il watchdog è attivo ed in quel caso lo spegne (o in alternativa continua a resettare il timer periodicamente) per riaccenderlo un attimo prima di uscire dal bootloader per ridare il controllo allo sketch.<br />
Volendo potrebbe anche non riaccenderlo e lasciare il compito della riaccensione del WDog allo sketch stesso (anche perché di certo prima l'aveva acceso lui)<br />
<br />
b) Il bootloader non ha una gestione del WDog e quindi il timer del WD va avanti.<br />
In questo caso è importante che il tempo di esecuzione del bootloader sia abbastanza basso da permettere di eseguire il bootloader completamente e poi avviare lo sketch con ancora abbastanza tempo residuo sul timer WD per permettere di arrivare sino alla routine di reset del WD presente nello sketch, altrimenti si finisce in un loop di reset da WD.<br />
<br />
Ho trovato questo per l'uso da Arduino : [<a href="http://black-electronics.com/blog/how-to-use-watchdog-timer-with-arduino/" target="_blank"  rel="nofollow">black-electronics.com</a>] dove sembrerebbe che il tempo max impostabile sia 8 sec ed il min 15ms]]></description>
            <dc:creator>FabryR</dc:creator>
            <category>GCODE, Software e Firmware</category>
            <pubDate>Wed, 27 May 2020 06:26:46 -0400</pubDate>
        </item>
        <item>
            <guid>https://reprap.org/forum/read.php?361,872040,873073#msg-873073</guid>
            <title>Re: Uso del Watchdog su Arduino Mega R3</title>
            <link>https://reprap.org/forum/read.php?361,872040,873073#msg-873073</link>
            <description><![CDATA[ Ciao FabryR. E' esattamente quello che ho trovato anc'io <a href="http://ww1.microchip.com/downloads/en/DeviceDoc/ATmega640-1280-1281-2560-2561-Datasheet-DS40002211A.pdf" target="_blank"  rel="nofollow">ATmega640/1280/1281/2560/2561 - Complete Datasheet</a>. Il problema è che non so se e come questa funzione venga sfruttata da Marlin/MK4DUO, vista la vastità di processori ai quali si possono adattare non tutti dotati di questa specifica. Per questo sono andato a cercare la libreria che per quanto ho capito è fornita da AVR per sovraintendere alla funzione specifica anche sul Mega2560 R3. Mi sono procurato un po di Arduini e esempi, appena ho tempo faccio delle prove. Ma visti i dubbi che mi restano anche dopo la risposta del Mago, che ringrazio comunque, mi sono orientato verso l'adozione di un automazione esterna la controllore della stampante che faccia da supervisore e eventualmente da blocco di sicurezza, specie per i processi termici. Appena ho qualcosa di funzionante vi aggiorno.<br />
<br />
PS. per Carlo:<br />
si il ritado all'avvio delle schede Arduino, che non dipende dal processore ma dall'insieme dei componeti di Arduino, è proprio il problema per il quale il bootloader dovrebbe disattivare watchdog fino all'avvio del programma principale altrimenti il reset va in loop e non se ne esce più. Ed è per questo che si parla di riprogrammare il bootloader perche quello originale non lo fa o in passato non lo faceva. Ma come detto in precedenza se nessuno ha già fatto espertienza diretta e può condividerla vedrò di fare qualche prova io e vi saprò dire.<br />
Grazie a tutti.]]></description>
            <dc:creator>truck64</dc:creator>
            <category>GCODE, Software e Firmware</category>
            <pubDate>Wed, 27 May 2020 05:04:48 -0400</pubDate>
        </item>
        <item>
            <guid>https://reprap.org/forum/read.php?361,872040,873070#msg-873070</guid>
            <title>Re: Uso del Watchdog su Arduino Mega R3</title>
            <link>https://reprap.org/forum/read.php?361,872040,873070#msg-873070</link>
            <description><![CDATA[ Anche a me sembra che su ATmega 2560 il watchdog sia hardware.<br />
<br />
Il bootloader è un programma aggiuntivo, che viene configurato per essere eseguito sempre, e poi fa partire il programma che carichi.<br />
<br />
Non esiste il concetto di bootloader come nei processori da computer, esiste un chip che carica il bios che carica il firmware ecc..<br />
<br />
[<a href="https://www.arduino.cc/en/Hacking/Bootloader?from=Tutorial.Bootloader" target="_blank"  rel="nofollow">www.arduino.cc</a>]<br />
<br />
meglio spiegato qui:<br />
<br />
[<a href="https://www.baldengineer.com/arduino-bootloader.html" target="_blank"  rel="nofollow">www.baldengineer.com</a>]<br />
<br />
e trovi informazioni anche sul watchdog.<br />
<br />
Probabilmente quando il watchdog "scatta" fa semplicemente ripartire il software che è appunto il bootloader, in teoria il bootloader dovrebbe semplicemente rifare il giro, cioè "verificare se esiste un programma da lanciare" e "lanciarlo", andrebbe visto come l'attivazione del watchdog interferisca con questo processo, nell'articolo che ti ho linkato sopra si parla dell'Uno che necessita di un bootloader diverso da quello di "serie" per usare il watchdog, il mega è diverso per cui non saprei.<br />
<br />
AGGIORNAMENTO:<br />
Ho letto in giro ed in teoria il bootloader introduce un ritardo di 5 secondi (almeno per l'arduino UNO, ma dalla pagina di optiboot sembrerebbe che anche il bootloader del mega sia derivato da quello) tra l'alimentazione od il reset e l'effettiva partenza del programma caricato con il bootloader, magari questo influisce sul watchdog, anche se in teoria durante quel tempo il processore non è bloccato sta solo aspettando i codici dalla seriale, nel caso tu voglia riprogrammare lo "sketch".<br />
<br />
<br />
Saluti<br />
<br />
Carlo D.]]></description>
            <dc:creator>onekk</dc:creator>
            <category>GCODE, Software e Firmware</category>
            <pubDate>Wed, 27 May 2020 03:34:12 -0400</pubDate>
        </item>
        <item>
            <guid>https://reprap.org/forum/read.php?361,872040,873049#msg-873049</guid>
            <title>Re: Uso del Watchdog su Arduino Mega R3</title>
            <link>https://reprap.org/forum/read.php?361,872040,873049#msg-873049</link>
            <description><![CDATA[ A me sembra che la documentazione ufficiale dica il contrario, ossia che gli AVR Mega abbiamo il Watchdog in hw.<br />
<br />
Poi non entro nei dettagli se sia usabile su Arduino o cosa faccia quella libreria.<br />
<br />
Ma in linea di principio dovrebbe funzionare, l'unico limite è che il reset del watchdog non fa ripartire lo Sketch ma fa ripartire il bootloader (che magari, non lo so, potrebbe non avere la gestione WD).<br />
Ergo un tempo di WDog troppo basso potrebbe portare ad un loop di reset infiniti perché non si fa tempo ad eseguire lo sketch dove c'è la gestione WD.]]></description>
            <dc:creator>FabryR</dc:creator>
            <category>GCODE, Software e Firmware</category>
            <pubDate>Tue, 26 May 2020 09:33:18 -0400</pubDate>
        </item>
        <item>
            <guid>https://reprap.org/forum/read.php?361,872040,872235#msg-872235</guid>
            <title>Re: Uso del Watchdog su Arduino Mega R3</title>
            <link>https://reprap.org/forum/read.php?361,872040,872235#msg-872235</link>
            <description><![CDATA[ Non hai trovato quel file perché è una libreria che simula il watchdog... I processori come il mega 2560 o precedenti non hanno un watchdog hardware, va quindi emulato con un timer... La libreria fa questo, ma si può tranquillamente fare a meno...<br />
Purtroppo proprio perché è in emulazione non sempre funziona se il processore si blocca, anche i timer vanno in blocco...<br />
Nel successivi processori invece il watchdog è hardware c'è proprio una sezione hardware nel processore indipendente che di continuo manda il reset al processore ameno che non venga puntualmente resettato. Però anche se il processore si blocca per qualsiasi motivo questa sezione va avanti di suo e resetterà il processore facendo un completo restart...<br />
Il watchdog va attivato è una sicurezza in più se si dovesse bloccare il processore...]]></description>
            <dc:creator>MagoKimbra</dc:creator>
            <category>GCODE, Software e Firmware</category>
            <pubDate>Sat, 09 May 2020 14:48:00 -0400</pubDate>
        </item>
        <item>
            <guid>https://reprap.org/forum/read.php?361,872040,872078#msg-872078</guid>
            <title>Re: Uso del Watchdog su Arduino Mega R3</title>
            <link>https://reprap.org/forum/read.php?361,872040,872078#msg-872078</link>
            <description><![CDATA[ Allora c'è in giro un po' di confusione, arduino originale, ha come chip USB un secondo processore cito " ATmega16U2 (ATmega8U2 in the revision 1 and revision 2 Arduino boards)", questo in pratica è potente come un Arduino 168 o giù di lì, e ed è usato per una funzione particolare, la scheda può comportarsi come una HID (Human Interface Device) se necessario, cambiando appunto il software del chip, ad esempio per emulare una tastiera od un joystick da computer.<br />
<br />
Le schede cloni in genere hanno dei chip di comunicazione diversi, FTDI o il più economico CH340G o CH341G chinese, e su quelle il chip è solo un chip di comunicazione che non può emulare una interfaccia HID, infatti sotto linux sono visualizzati in maniera diversa, uno come periferica USB, l'altro come porta comunicazione.<br />
<br />
Come nota di contorno alcuni lamentano dei ritardi o dei blocchi di comunicazione soprattutto con i chip CH340G e CH341G, il bug si presenta se non ricordo male, se si inviano più di un certo tot di byte consecutivi, lui ne salta uno e ovviamente genera errori.<br />
<br />
Il watchdog in pratica lo attivi con quella direttiva, poi non so come va usato, nel caso <a href="https://www.microchip.com/wwwproducts/en/ATmega2560" target="_blank"  rel="nofollow">Pagina del produttore</a> che poi è Microchip che si è comprata qualche tempo fa ATMel.<br />
<br />
Da lì puoi scaricare le specifiche del processore se ti interessa capire come funziona la cosa.<br />
<br />
<a href="https://www.amazon.it/Elegoo-Scheda-ATmega2560-Compatibile-Arduino/dp/B06XRJNB27" target="_blank"  rel="nofollow">Questa scheda non è originale ma usa lo stesso chip 16u2</a><br />
<br />
Sul fatto che il watchdog rallenti il microprocessore è vero, introduce ogni tanto dei ritardi perché deve controllare il timer e fare le sue cose come resettare i contatori ecc.<br />
<br />
Saluti<br />
<br />
Carlo D.]]></description>
            <dc:creator>onekk</dc:creator>
            <category>GCODE, Software e Firmware</category>
            <pubDate>Thu, 07 May 2020 02:46:16 -0400</pubDate>
        </item>
        <item>
            <guid>https://reprap.org/forum/read.php?361,872040,872074#msg-872074</guid>
            <title>Re: Uso del Watchdog su Arduino Mega R3</title>
            <link>https://reprap.org/forum/read.php?361,872040,872074#msg-872074</link>
            <description><![CDATA[ Ciao Carlo, grazie della risposta.<br />
Si, come ridondanza ho già previsto interruttori termostatci e circuiti di spegnimento indipendenti dall'Arduino, compreso un sensore di fumo. Solo che faccio fatica trovare componenti abbastanza piccoli, leggeri e affidabili da mettere sull'hotend. Per non parlare dei fili in più da portarsi dietro (ho una CoreXY bowden mediamente grande e ogni filo in più verso la testina mi rompe). <br />
Il watchdog del processore, funzione che ho imparato a usare per lavoro su altri sistemi di automazione, sarebbe la soluzione più "pulita" ma ho letto che sul Mega è problematica perchè porta a un reset infinito del processore. Una soluzione citata quà e la sul web è quella di usare il cip del bootloader (ATmega168 ?) per disabilitare il watchdog al reset della scheda ma quì comincia la confusione:<br />
- ho trovato articoli in cui si dice che la modifica del bootloader è già implementata nelle schede originali più recenti <a href="https://forum.arduino.cc/index.php?topic=204174.30" target="_blank"  rel="nofollow">forum.arduino.cc</a><br />
- ho trovato altri che dicono di aver "riflashato" il bootloader anche di recente<br />
In ogni caso ho dato un occhiata veloce a Marlin e MK4duo, premetto che ho giocato poco con Arduino, ma a parte la direttiva <b>#define USE_WATCHDOG</b> per altro commentata non ho trovato nessun richiamo alle funzioni di wdt.h quindi non riesco a capire come lavora nel firmware delle stampanti.<br />
Mi sarebbe utile sapere se qualcuno lo usa e come.<br />
Grazie]]></description>
            <dc:creator>truck64</dc:creator>
            <category>GCODE, Software e Firmware</category>
            <pubDate>Wed, 06 May 2020 23:52:48 -0400</pubDate>
        </item>
        <item>
            <guid>https://reprap.org/forum/read.php?361,872040,872045#msg-872045</guid>
            <title>Re: Uso del Watchdog su Arduino Mega R3</title>
            <link>https://reprap.org/forum/read.php?361,872040,872045#msg-872045</link>
            <description><![CDATA[ Non proprio, il bootlader è una cosa, il watchdog una cosa diversa.<br />
<br />
Il bootloader è quella cosa che se apri la posta seriale in un certo modo ti permette di flashare il firmware, direttamente da seriale, altrimenti devi usare la connessione diretta ai pin della "porta di programmazione".<br />
<br />
Il watchdog invece è una impostazione del processore controlla il funzionamento del processore, cioè una specie di registro che tiene conto che un certo bit deve essere settato ogni tot secondi, e di questo si deve occupare la routine del programma, se questo non viene fatto il sistema resetta il processore.<br />
<br />
Tutte le spiegazioni non sono fatte in modo "scientifico" ma spannometrico perché poi ogni processore lo attiva a suo modo.<br />
<br />
<br />
MI pare che comqune esista un sistema che controlli il blocco del processore, al limite, senza scomodare firmware o altro, esistono come nei vecchi Hifi dei bei sensori che superata una certa temperatura staccano l'alimentazione a 12V (che poi può anche staccare la 220 tramite relais), se cerchi in giro sono circuiti abbastanza semplici, tipo quelli in uso sulle macchine utensili per lo Start e STOP, se il sensore rileva una tempaeratura superiore agli 80°C (dipende dal tipo di sensore), stacca l'alimentazione e stop.<br />
<br />
Sicuro veloce e a prova di bomba, e di bug software.<br />
<br />
Saluti<br />
<br />
Carlo D.]]></description>
            <dc:creator>onekk</dc:creator>
            <category>GCODE, Software e Firmware</category>
            <pubDate>Wed, 06 May 2020 12:03:22 -0400</pubDate>
        </item>
        <item>
            <guid>https://reprap.org/forum/read.php?361,872040,872040#msg-872040</guid>
            <title>Uso del Watchdog su Arduino Mega R3</title>
            <link>https://reprap.org/forum/read.php?361,872040,872040#msg-872040</link>
            <description><![CDATA[ Ciao a tutto il forum,<br />
ho da pochi giorni avviato la mia prima stampante e fino ad ora l'ho sempre sorvegliata come un falco.. Con la prospettiva in futuro di usarla senza presidio umano ho letto e mi hanno raccontato che ci possono essere casi in cui l'Arduino può smettere di "loopare", col rischio di mandare in surriscaldamento hotend o piatto (questa non vuol essere minimamente una critica verso chi scrive il firmware). Da vecchio programmatore di PLC mi sto informando sulla funzione di watchdog ma trovo spesso indicazioni incomplete. Da quello che ho capito per evitare di bloccare la Mega è necessario prima sostituire il codice del bootloader originale (io ho trovato questo <a href="https://github.com/arduino/Arduino-stk500v2-bootloader/tree/master/goodHexFiles" target="_blank"  rel="nofollow">Arduino-stk500v2-bootloader</a>. Qualcuno di voi ha esperienza in merito?<br />
Grazie]]></description>
            <dc:creator>truck64</dc:creator>
            <category>GCODE, Software e Firmware</category>
            <pubDate>Wed, 06 May 2020 11:18:15 -0400</pubDate>
        </item>
    </channel>
</rss>
