слишком долго переходит в сон мк
- Войдите на сайт для отправки комментариев
Пнд, 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 в даташите.
Спасибо за ответ