Спешат часы. 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 с внешним кварцем. пробовал менять, заземлял. но все спешат.
взял с внутренним кварцем. идут точно. надо ставить аккумулятор или отпаивать диод для батарейки.
Уже заказал его, спасибо :)
Но прикол в том, что на сколько бы секунд в час я не уменьшал время (программно), они всё равно будут спешить. И как ни крути
Здравствуйте, а как вы настраиваете время?