stevemeng:
I don't support your words.
If the delay() is used, the watchdog will reset all time.
Reset button don't work. I have to power off.
It's a bug in the bootloader, not the sketch. If you change the fuse to load the sketch (and bypass the bootloader) it will work correctly. Or, better, get a bootloader that handles the WDT correctly.
It has the same file name as "this working one", but its size is 103kB versus 21kB for the other.
Obviously, these are different bootloaders, and should have a different version, means e.g. stk500boot_v3_mega2560.hex for the working one. Besides of this, what are the differences between the two, other than watchdog support?
Thanks Nick to have solved the problem for the Mega2560 (now only the correctly working bootloader should be delivered with new Mega 2560 and new versions of the IDE).
Meanwhile, I have ordered the new Arduino Due. Has anyone yet successfully used watchdog with this one? Means, does the standard Due bootloader support watchdog, and what are the equivalent lines of code for the SAM3XE8 in the Arduino IDE?
Obviously, these are different bootloaders, and should have a different version, means e.g. stk500boot_v3_mega2560.hex for the working one.
"Stk500v2" is the name of the protocol supported by this bootloader, the v2 is NOT the version of bootloader itself.
I don't think that there is a separate version number for the bootloader. Although that WOULD be a good idea.
(Hmm. It does have the date that the code was compiled:
Bootloader>? CPU stats
Arduino explorer stk500V2 by MLS
Compiled on = Jan 28 2013
Well, size of the .hex file will always be somewhat more than twice the size of the actual code...
20k is a reasonable .hex file size for an 8k bootloader.
hello, I need the strech by bluetooth shit, and I get it, but I must be attentive to press the reset arduino-one.
when bleutooch connects, there squeezed reset and this loads the strech.
I tried to use the wacthdog, when this is connected to a reset,
but I can not load the strech, someone has done something similar to what
comment?
#include <avr/wdt.h>
int led = 9; // the pin that the LED is attached to
int brightness = 0; // how bright the LED is
int fadeAmount = 5; // how many points to fade the LED by
void setup ()
{
Serial.begin (115200);
pinMode(led, OUTPUT);
// Serial.println ("Restarted.");
while(!Serial){
;
}
wdt_reset ();
wdt_disable();
} // end of setup
void loop ()
{
analogWrite(led, brightness);
// change the brightness for next time through the loop:
brightness = brightness + fadeAmount;
// reverse the direction of the fading at the ends of the fade:
if (brightness == 0 || brightness == 255) {
fadeAmount = -fadeAmount ;
}
// wait for 30 milliseconds to see the dimming effect
delay(30);
} // end of loop
Do you know if this is the bootloader in the Arduino 1.04 IDE release?
I've been battling dropped ethernet connection on my webserver application for weeks. It occurs anywhere from hours to days. The application continues to run, but over time, a client will not be able to connect. I have a Mega2560 and want to implement watchdog timer based on your example. The code verifies, but I haven't uploaded it yet to test based on the comments on this post (the need to replace the bootloader)
Is your recommendation of the bootloader you specified still valid? Any help is appreciated.
Nick, thanks for your reply. Ummmm... how do I actually load this? Using the Arduino IDE under tools->Burn Bootloader ? Obviously from my question I've never done this and would appreciate pointing me in the right direction. Is there documentation you could site? All I could find in http://arduino.cc/en/Guide/Environment using IDE tools->Burn Bootloader is:
"Ensure that you've selected the correct board from the Boards menu before burning the bootloader."
You need an external device. A board can't burn its own bootloader. If you have a second Arduino one option is the sketch described here:
Using the IDE you also need another device, such as another Arduino with the "Arduino as ISP" sketch on it, or a programmer like USBtinyISP or similar. These are available from places like Adafruit, Sparkfun, eBay, etc.
Nick, thanks for your reply. I do have another Arduino ( Uno, rev 3). I reviewed the sketch you specified in your reply. To other readers... Nick's reply is more then just a sketch, it's a tutorial on how to burn a new bootloader using a second arduino.
Question: before doing this, is there any harm in testing the sketch you listed on page 1 with my existing bootloader? If my bootloader (by chance) were correct, I would get the results listed on page 2 ,your Reply #22 . If not, what will occur? It won't brick my Mega will it? What happened when you ran with the "bad" bootloader, Reply #20?
I'm asking because of FernandoGarcia 's reply #25 "I uploaded these examples in my arduino mega 2560 and was a fight to get remove them." as well as RetroLefty's post #29 example code comment: "Note that current arduino mega boards will fail this test and brick". Yikes!
To restate my environment: Mega2560, Arduino IDE 1.0.4
richsp51:
Question: before doing this, is there any harm in testing the sketch you listed on page 1 with my existing bootloader? If my bootloader (by chance) were correct, I would get the results listed on page 2 ,your Reply #22 . If not, what will occur? It won't brick my Mega will it? What happened when you ran with the "bad" bootloader, Reply #20?
First, there are ways around a "bricked" processor, particularly this type of bricking. The problem is that the sketch runs, sets up the watchdog timer, and the watchdog then interrupts the bootloader.
The trick is to not let the sketch run. You power the board off completely, hold down reset, keep holding down reset you apply power (plug the USB cable in). At this stage the sketch hasn't run (you have reset held down). Now with a free hand (this can be the tricky bit) you start uploading a fresh sketch. As it starts to upload you release reset (and not before), and the bootloader kicks in, without having the watchdog timer enabled.
Or, you simply use things like my bootloader uploader to simply replace the bootloader which has the side-effect of erasing program memory, and thus erasing the problem sketch. So you have two ways around it.
I believe this is misleading.
The issue I've seen on the older bootloaders is that if the watchdog actually "fires" (causing a watchdog reset),
the bootloader didn't properly clear the watchdog reset state which
ended up causing an infinite watchdog reset loop.
It did not matter when/where the the initial watchdog fired.
This was definitely true in the m168/m328 bootloader..
It was a simple 1 line fix to the bootloader code but the Arduino team never fixed it.
(I patched all my bootloaders)
The optiboot bootloader, which is now used, does not have this issue.
If the bootloader has this issue, it is not possible to use the watchdog timer
beause if the watchdog ever actually occured (causing a watchdog reset),
the sketch would never restart because of the watchdog reset error in the bootloader.
That's what I was trying to say. The watchdog works, but the way the bootloader interacts with it doesn't. This particularly applies to a "reset" watchdog, not an "interrupt" watchdog.