Спешат часы. DS1302 + TM1637 + UnoR3
- Войдите на сайт для отправки комментариев
Чт, 07/07/2016 - 12:54
Всем привет. Собрал небольшие часики, но вот в чём проблема: За одну минуту время спешит на 10 секунд, секунды переключаются быстрее нужного. Если ставить delay(1000) в конце loop() проблем не возникает.
Можно ли обойтись без зловещей задержки? (в т.ч. if (millis() ... ) )
#include <math.h> #include <DS1302.h> DS1302 rtc(2, 3, 4); Time t; #include "TM1637.h" TM1637 tm1637(6,5); int8_t TimeDisp[] = {0x00,0x00,0x00,0x00}; void setup() { rtc.halt(false); rtc.writeProtect(true); //TimeSetup(); tm1637.set(); tm1637.init(); } void loop() { TimeHour(); // Тип времени Blink(); // Мигание двоеточием tm1637.display(TimeDisp); } void Blink(void) { t = rtc.getTime(); if (t.sec % 2 == 1) tm1637.point(POINT_ON); else tm1637.point(POINT_OFF); } void TimeHour(void) { t = rtc.getTime(); TimeDisp[0] = t.hour / 10; TimeDisp[1] = t.hour % 10; TimeDisp[2] = t.min / 10; TimeDisp[3] = t.min % 10; }
Вопрос на засыпку: с какой периодичностью меняются показания часов, и с какой периодичностью Вы их опрашиваете?
В этой библиотеке: https://yadi.sk/d/xMK-iHMeWzgQ8 не нашёл как установить периодичность смены показания часов, а вот опрос идеально сделать раз в пол секунды, что бы двоеточие мигало каждую секунду, а не через секунду
Периодичность смены показаний часов заложена в "железе" и изменению не подлежит.
Вопрос остается: как соотносится оптимальный период опроса и тот период, что реализован в Вашей программе?
Я пробовал ставить разное время, и 1 секунда -- минимальный вариант, когда время идёт правильно. Но у других людей с таким же модулем и дисплеем есть без этой секунды. Вот и спрашиваю, может кто знает...
1302 с внешним кварцем. пробовал менять, заземлял. но все спешат.
взял с внутренним кварцем. идут точно. надо ставить аккумулятор или отпаивать диод для батарейки.
Уже заказал его, спасибо :)
Но прикол в том, что на сколько бы секунд в час я не уменьшал время (программно), они всё равно будут спешить. И как ни крути
Здравствуйте, а как вы настраиваете время?