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
How to reset an Atmel AT90CAN128 from software?
Started by ●June 20, 2008
Reply by ●June 20, 20082008-06-20
On Fri, 20 Jun 2008 08:36:23 -0700 (PDT), larkmore@aol.com wrote:>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?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