@jlawson this should provide the insight:
and last entry at:
It sounds like you're doing everything fine. Do you get any error messages when you
I guess you could try initialising the LCD and DS3231 after a delay in case that's a issue? Maybe the DS3231 takes a while to work after power is applied - if you got the wrong time out of it then maybe
setTimesets the time to something invalid and that breaks the timeouts?
You could try running
dump()to see if any intervals/timeouts are actually set up to run, and maybe check
new Date()to see if the time is what you expect it should be.
Finally, it's unlikely I ever checked what happens if you reset the time to something else and then immediately create intervals, so I guess you could try setting the time inside a timeout?
@Gordon I finally got time to implement your suggestions and the results were all consistent with a clock that is running way too fast so I tried it on a second Espruino board and the code worked fine.
No errors on load() except the occasional I2C bus confusion from the previous
I think this particular board may just require a longer delay for the LSE clock to settle down as it works once powered and then the reset button pressed.
This is probably due to borderline capacitance on the 32.768KHz crystal circuit (which I had added).
So, it appears that resetting the time and then immediately creating intervals does work.
Great - thanks for letting us know!
You might find that cutting the trace for the C15 pin helps you out - having a long wire on one of the oscillator pins won't help at all.
Also, sometimes (if it was working before) just giving the board a good clean with something like isopropyl alcohol can make a massive difference :)
The following (much cut down) code works fine when uploaded from the IDE but after using save() and power cycling it appears as if setInterval has no effect. The LCD and clock then update as quickly as possible (the clock goes through a day in about 6 seconds).
On power-up or after using load() it exhibits this problem.
However, if I then press the physical reset button or use E.reboot() from the IDE it will run properly.
I may just be that I'm not setting things up properly for using save() with setInterval (I rarely use save).
This is on an original Espruino board with added 32.168kHz crystal.
Firmware is version 2v03.21 but with some fonts compiled in.