I have a custom Blackfin 533 design which can be hibernated. During hibernation, only VDD RTC is available. Wake Up from hibernation is successfully provided by an interrupt from the RTC on its 1 Hz tick. After a wakeup, my specification requires me to test for the presence of a known analog signal. This is implemented by a short section of proprietary code and isn't important to this discussion but takes about twenty milliseconds. If the signal isn't present, I need to update the RTC for my next wakeup and return to hibernation as quickly as possible. Wakeups are periodic and may be at 1s intervals but could be anything from 2 s to 60 s periodicity depending on the user.
My problem is that writes to the RTC are synchronized to the 1 Hz RTC clock (Fig 16-2 in the BF-533 hardware reference). If I write to the RTC registers and then shut down VDDINT power, my writes will be lost since they haven't yet been written from the shadow registers to the permanently powered RTC VDD powered registers. Uselessly looping until the write is confirmed means wasting battery power for 1 s - (Boot time + 20 ms). Since my application is battery powered and deployment duration is a hotly contested marketing feature, how can I return to the hibernation state immediately after my test without having to wait for the next 1 Hz tick to shift my next wakeup time into the RTC registers.
I understand why the synchronization of RTC writes was implemented but do you have any suggestions of how I can circumvent having to wait for the next 1 Hz tick?