This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Retain 32 bits across a watchdog reset ?

I'm sure the same question has been asked in a few different forms, but hoping for some ideas. . . Is there a way to retain 32 bits of information across a watchdog reset ?

I currently use PPI to clock a 32 bit counter at 1Hz from the RTC, this is nice because it gives me a real time clock time in a 32 bit register that runs in low power mode (why oh why is the rtc timer not 32bit ?!?!?!?! or at least has a 32 bit prescaler)

Anyway, the problem with this is that a watchdog reset clears the peripherals, so I lose the 32 bit count. I could write the value to NVM in the watchdog event handler, as long as the flash memory was erased at program startup otherwise it would take too long, but this doesn't seem like an elegant solution.

I know that the ram is not specifically reset, but may be corrupted, to this is also a possibility I guess.

Any suggestions appreciated! Thanks

Parents
  • The RTC on most microcontrollers is really just a tick, app_timer kind of thing. And, for bluetooth it runs sleep/wake to keep the framing correct. At 20ppm it's not going to keep great time anyway. It might be for that reason that they refer to it as a real time counter and not real time clock.

    There are a lot of good real time clock solutions out there in tiny packages and only draw nanoamps. Plus they have internal registers that will keep time for roughly forever. Interfaces are simple i2c, 1 wire or 2 wire serial. Most are around 1 to 2ppm. Or under 1 minute error annually. This might be a better solution if you have high performance time keeping requirements. Plus at nanoamps these can normally be run from soldered in rechargeable button cells so they even run with power off.

Reply
  • The RTC on most microcontrollers is really just a tick, app_timer kind of thing. And, for bluetooth it runs sleep/wake to keep the framing correct. At 20ppm it's not going to keep great time anyway. It might be for that reason that they refer to it as a real time counter and not real time clock.

    There are a lot of good real time clock solutions out there in tiny packages and only draw nanoamps. Plus they have internal registers that will keep time for roughly forever. Interfaces are simple i2c, 1 wire or 2 wire serial. Most are around 1 to 2ppm. Or under 1 minute error annually. This might be a better solution if you have high performance time keeping requirements. Plus at nanoamps these can normally be run from soldered in rechargeable button cells so they even run with power off.

Children
No Data
Related