Почему power.sleepDelay опаздывает?

MrNikto

✩✩✩✩✩✩✩
12 Сен 2021
44
0
Всем привет. Делаю проект, который будет работать на аккумуляторе. Большую часть времени МК будет спать, поэтому использовал библиотеку GyverPower и функцию power.sleepDelay
Но возникла проблемка. Заметил, что МК просыпается с опозданием, примерно на 3-4 секунды из 60. Т.е. если отправить в сон на 60 секунд, проснется через 63-64.
Чем длительнее сон, тем больше задержка. Это при добавленном autoCalibrate в setup.
Также пробовал ручную калибровку getMaxTimeout и полученное значение(8000) указать в calibrate, но это тоже не помогло.
 

Старик Похабыч

★★★★★★★
14 Авг 2019
4,272
1,303
Москва
В длительном сне, с максимальным энерогосохранением, тики считаются от внутреннего rс, а он в свое время очень зависит от температуры.
 
  • Лойс +1
Реакции: MrNikto

bort707

★★★★★★✩
21 Сен 2020
3,067
915
Во-первых, ватчдог таймер очень неточный.
Во-вторых, покажите код (целиком).

В любом случае самым простым решением будет указывать задержку меньше
 
  • Лойс +1
Реакции: MrNikto

MrNikto

✩✩✩✩✩✩✩
12 Сен 2021
44
0
@bort707, Получается лучший вариант, это проснуться на 5-10 минут пораньше и посчитать сколько осталось до нужного времени и уснуть заново. При недлительных снах задержка не такая большая.
 

Старик Похабыч

★★★★★★★
14 Авг 2019
4,272
1,303
Москва
Так получиться если только остаток времени считать исходя из внешнего источника времени типа энергонезависимых часов.
 

Старик Похабыч

★★★★★★★
14 Авг 2019
4,272
1,303
Москва
если температура примерно постоянная (комнатная) то можно опять же примерно вычислить сколько еще спать.
 

MrNikto

✩✩✩✩✩✩✩
12 Сен 2021
44
0
@Старик Похабыч, к сожалению будет работать в помещении, где не всегда стабильная температура. Может быть и 20°, а может и 35°.
В любом случае, чтобы просыпался заранее, нужно примерно рассчитать на сколько минут раньше, чтобы дальнейший сон был как можно меньше