учет времени

Опубліковано: 06 травня 2018р. 21:03
Я їжджу на Mitsubishi Colt VI
Павлоград, Україна

Сразу оговорюсь для «писателей» я знаю о существовании модулей RTC и умею ими пользоваться. Пост немного о другом.

Довольно часто в программах нужно определять интервалы времени, зачастую для этого используют функцию millis(). Вопрос в том, насколько это точный процесс, это я и попытался определить.

"При использовании millis() нужно помнить об одной особенности — millis() "тикает" не равномерно.
Возвращаемое значение увеличивается на единицу каждые 1024 мсек. Затем, когда миллис отстанет на 1 мсек, она "подводится" на единицу, т.е. возвращаемое значение перескакивает через один.
"

Для теста я написал скетч, в котором время считается в двух функциях. Одна это пресловутая millis(), а вторая использует прерывание по таймеру (TIMER1_OVF_vect).

Теперь собственно скетч.

Настройки элементарные:

Функция прерывания по таймеру тоже выглядит просто и аскетично:

Собственно millis() разместил в пустом «лупе»:

Для контроля точности использовал часы в смартфоне:

Старт контрольного замера:

Через шесть часов получили вот такой результат:

В общем, каждый пусть решает сам какую функцию использовать в зависимости от своих требований к точности и удобству. Главное, что теперь есть информация о точности. Свой выбор я сделал.

0 0

Коментарі

Щоб залишати коментарі, потрібно авторизуватись.