I have a number of Pico based units running 24x7 out in the field and have observed a few times in the last few months the RTC suddenly seeming to speed up.
I finally managed to catch this while logging the serial console on a unit - the sequence was:
- first sign of issues was the read process (a write verify) from the SPI EEPROM failed (read all zeros or FF's)
- Because the clock was going too fast, this was generating timing errors in my code, which I was logging (write to EEPROM - which did appear to work!)
- the Pico then started generating memory errors during SIM800 upload proess and restarted
- on restart the unit uploaded to my server the logged error events, which had advanced timestamps on them
- all the timestamps came from the standard espruino Clock module (based on getTime())
- the restart rectified the problem
The whole crash/restart process took around 30seconds (this is based on external timestamps coming from a SIM800), however my logged events (based on getClock()) over the 30second period went in a range of 18mins to 15hours into the future !??
This particular unit is running on LSI, but I am reasonably sure it has happened on a Pico we put on an external crystal (to be confirmed)
Is this even possible ??? It just seems that the RTC just suddenly started running around 1800x faster.
Any ideas appreciated - it would be nice to be able to detect and fix this rather than just crash.