Thanks. I know of the location zero but also vaguely remember people mentioning that just the execution is reset and other things aren't. Could you give me some hint on what does and doesn't reset by calling zero?
I spent spent several hours trying to get a definitive answer to that exact question with no success. There are lots of opinions and suppositions out there, but I never found anything definitive, so I tested it. I can't (over thousands of automatic reboots) tell any difference at all. So, if there is a difference, it doesn't seem to matter. Lefty is right that some of the registers don't get defaulted to the power on state, but subsequent initialization in both the bootloader and your code seems to take care of those problems. Just make sure you set the things you use to the state you want them in in setup() and everything works, every time. Been there, done that.....a lot.
BTW, your home page temperature scale is in DegF, right? Does it every go near 150F as the max scale is set there? Horrible heat.
Nope, it doesn't get to 150F, but it I have measured it at 126F a number of times. I use 150 as the top point to leave a little play room.
Yes, there is a bootloader for the 2560 that fixes both the '!!!' bug where three exclamation points will stop the boot loader by kicking it into a little known debug mode, and the WDT problem that has plagued us for years. Far as I can tell, it still
isn't in the production boards, but you can get it and load it. I was one of the first to try it out and wrote it up on my page at:http://www.desert-home.com/2012/05/arduino-mega2560-wrapping-up-bootloader.html
My little trick of turning the WDT into a timer and using it to call location zero was my fallback for hardware for a very long time. It worked every single time it was needed perfectly, so I've been testing the location zero jump long term on many different boards, old arduinos, new UNOs, 2560s of various revisions, etc. Once I found out that I could have a WDT that would span 15 minutes I went a bit nuts.