EmbeddedRelated.com
Forums
The 2024 Embedded Online Conference

How to reset an Atmel AT90CAN128 from software?

Started by Unknown June 20, 2008
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
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

The 2024 Embedded Online Conference