How to reset an Atmel AT90CAN128 from software?

Hello all. I'm looking for a relatively clean way to code a software reset for an AT90CAN128 or ATMEGA128 microcontroller using C code (or C with assemby embedded) that will compile under the avr-gcc 3.4.6 compiler chain. Essentially, I want a function softReset() that I can call from my program when appropriate that will reset and reinitialize everything, just as if a POR had occurred or the reset pin had been pulled low. I am ok with the MCUSR register containing garbage after coming out of this reset. I'm trying to avoid using the hardware watchdog and just not petting it, since I think it has to be always on or always off, and I don't want to have to "pet" it while the rest of my program is running. Ideas?

-Will

Reply to
larkmore
Loading thread data ...

The watchdog is your friend and really, really ought to be part of your toolkit.

That said, the only other way to make it appear as if the power-on reset has occurred is ... to cause a POR. A "soft" reset by forcing a jump the reset vector will cause the code-side to be reinitialized but the processor's registers and peripherals won't be reset.

You can hook up an inexpensive supervisory IC (Microchip's MCP-130 is one example of many out there) to force a reset of known duration by triggering it from one of your processor's output pins.

--
Rich Webb     Norfolk, VA
Reply to
Rich Webb

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.