Arduino software reset

I've been trying to reset an Arduino using software, as a last resort when it all goes to rats. The 'usual' method seems to be an assembly language jump into the bootloader code, but in the examples I've found the jump's destination can be either 0x0000 or 0x7C00. I guess 0x0000 is the bootloader start point, but does anyone know what lives at 0x7C00, or why two different addresses may be used?

Thanks - Will

I've been trying to reset an Arduino using software, as a last resort when it all goes to rats.

You are, of course, better off preventing that than crutching it.

Very true, but alas I don't own the Internet, and sometimes it doesn't do what I want.

Will

cwrose: Very true, but alas I don't own the Internet, and sometimes it doesn't do what I want.

Will

What has that got to do with resetting an Arduino ?

The “usual” way is not to jump to a location, but to make use of the hardware watchdog facility.

The “proper” way is to enable the watchdog and keep resetting it regularly. If you stop resetting it, the watchdog reboots the Arduino.

If you just want an arbitrary reset at a specific point in your code, you turn on the watchdog with a timeout big enough to get past the bootloader and don’t reset it. The board resets by itself then, and then in your setup() you turn off the watchdog (or it’ll keep resetting itself).

Agree that using the watch dog timer is the correct method and best method to use. Anything else will not be a true 'restart from scratch'.

Lefty

cwrose: Very true, but alas I don't own the Internet, and sometimes it doesn't do what I want.

Don't trust whatever data arrives from it.

Do you own the phone system? If someone rings you and tells you to cut off your head do you do it?