слишком долго переходит в сон мк
- Войдите на сайт для отправки комментариев
Пнд, 20/08/2018 - 14:02
Здравствуйте.
понадобилось работать со сном мк atmega328. тактируюсь от внешнего кварца 8 МГц с делителем на 8 во фьюзах.
программа типа:
void loop() {
digitalWrite(test_pin, f);
delay(500);
f=!f;
}
работает замечательно и на осциллографе я вижу меандр с полсекунды.
но стоит реализовать программу через сон:
void loop() {
wdt_enable(WDTO_500MS); //Задаем интервал сторожевого таймера (0.5с)
WDTCSR |= (1 << WDIE); //Устанавливаем бит WDIE регистра WDTCSR для разрешения прерываний от сторожевого таймера
set_sleep_mode(SLEEP_MODE_EXT_STANDBY);
sleep_mode();
digitalWrite(test_pin, f);
}
ISR (WDT_vect) {
wdt_disable();
f=!f;
}
так время увеличивается примерно на 25 мс итого меандр получается 525 мс.
как исправить это?
как исправить это?
Боюсь, что никак. Вочдог штука приблизительная и весьма сильно зависит от напряжения питания и температуры см. п. 9.2.2 и рисунок 31-319 в даташите.
Спасибо за ответ