Часы Super Clock
Re: Часы Super Clock
Я бы сделал. Но дата перехода плавает от года к году. Как ее вычислять?
Re: Часы Super Clock
Lion_A писал(а):дата перехода плавает... Как ее вычислять?
Предлагаю не вычислять, а просто забить в прошивку таблицу дат: каждое последнее воскресенье марта и октября, скажем на 20 лет вперед. И по ней переставлять. А по прошествию этого времени, если не пропадет интерес к данному проекту, выпустить новую прошивку с обновленной таблицей дат.
Оно конечно так, ежели как что. Не потому что дескать, но все-таки конечно. А случись такое дело - вот тебе и пожалуйста!
Re: Часы Super Clock
Подумаю.
Часы уже перевели, так что время есть.
Часы уже перевели, так что время есть.
Re: Часы Super Clock
Сделал автоматический перевод часов.
Файл interface.h
По умолчанию отключен. Время переводится последнее воскресенье марта и октября в 3:00.
Особо не тестил, так что просьба проверить в разных варияциях.
Добавил датчик движения на PB2 (выв. 42). Высокий уровень включает дисплей, после перепада на низкий запускается таймер до выключения.
Файл mSensor.h
Порт подтянут внутренней подтяжкой, так что в схеме ничего менять не нужно.
Файл interface.h
Код: Выделить всё
//Раскомментировать для автоперехода на летнее время
//#define AUTOMATIC_SUMMER_TIMEПо умолчанию отключен. Время переводится последнее воскресенье марта и октября в 3:00.
Особо не тестил, так что просьба проверить в разных варияциях.
Добавил датчик движения на PB2 (выв. 42). Высокий уровень включает дисплей, после перепада на низкий запускается таймер до выключения.
Файл mSensor.h
Код: Выделить всё
//задержка до выключения при использовании датчика движения
#define DELAY_TO_OFF_LED 300 //сек.Порт подтянут внутренней подтяжкой, так что в схеме ничего менять не нужно.
- Вложения
-
- m32_3.8.7z
- (586.97 КБ) 215 скачиваний
Re: Часы Super Clock
Lion_A
Спасибо, перевод времени работает, никаких глюков не заметил.
Спасибо, перевод времени работает, никаких глюков не заметил.
Re: Часы Super Clock
Lion_A писал(а):Нет, в 3.7 ничего подтягивать не нужно. ..................
Добавлено after 13 minutes 36 seconds:fin45 писал(а):вот такая информация у меня отображается на матрицах https://youtu.be/zY3p927cGAE
Что то не так. Название "Super Clock" должно нормально пробегать.
даже не знаю что подумать, первый раз такое, обычно все самоделки запускаются с первого раза. Буду искать ошибки или припой может где повис на плате. Может матрицы, распиновка вроде одинаковая
- dadigor
- Вымогатель припоя
- Сообщения: 593
- Зарегистрирован: Пт дек 26, 2014 20:33:38
- Откуда: Самая большая деревня. (По мнению Габриэля Гарсиа Маркеса)
Re: Часы Super Clock
fin45
1. Видно, что строка в принципе бежит, т.е. продвигается засветка, причем слева направо (наверное перевернута плата). Сначала приходит слева на пустой индикатор, в конце уходит вправо, очищая индикатор. Хороший признак. ))
2. Информация внутри светящейся колонки меняется, что говорит о ее продвижении, тоже хорошо.
3. Работают одноименные колонки (вертикали 2 и 5, считая на видео слева) во всех матрицах, интервал между ними три (т.е. каждая четвертая). Тут надо порыться, может быть здесь ключ к разгадке?
Мне кажется по прикидке, что такое может получиться, если повернуть на 180 матрицы при монтаже. Но выпаивать и проверять не буду, попробуйте сами.
1. Видно, что строка в принципе бежит, т.е. продвигается засветка, причем слева направо (наверное перевернута плата). Сначала приходит слева на пустой индикатор, в конце уходит вправо, очищая индикатор. Хороший признак. ))
2. Информация внутри светящейся колонки меняется, что говорит о ее продвижении, тоже хорошо.
3. Работают одноименные колонки (вертикали 2 и 5, считая на видео слева) во всех матрицах, интервал между ними три (т.е. каждая четвертая). Тут надо порыться, может быть здесь ключ к разгадке?
Мне кажется по прикидке, что такое может получиться, если повернуть на 180 матрицы при монтаже. Но выпаивать и проверять не буду, попробуйте сами.
О технике чего спорить-то, давайте попробуем.
Re: Часы Super Clock
подумал, и решил перевернуть матрицы на 180 гр. и все стало на место https://youtu.be/k-RaWGGIJcg.
Сейчас из датчиков запаян только BMP-180, а это значит, что пока не запаяю DS3231 я буду видеть только ошибку "квадратной шины".
Lion_A, я правильно мыслю?
P.S. пока писал сообщение что, и как. dadigor в это время дал вариант верный.
Всем спасибо! Собираю далее Ваши супер часики.
Сейчас из датчиков запаян только BMP-180, а это значит, что пока не запаяю DS3231 я буду видеть только ошибку "квадратной шины".
Lion_A, я правильно мыслю?
P.S. пока писал сообщение что, и как. dadigor в это время дал вариант верный.
Всем спасибо! Собираю далее Ваши супер часики.
Re: Часы Super Clock
Да, все верно.
- dadigor
- Вымогатель припоя
- Сообщения: 593
- Зарегистрирован: Пт дек 26, 2014 20:33:38
- Откуда: Самая большая деревня. (По мнению Габриэля Гарсиа Маркеса)
Re: Часы Super Clock
Можно попробовать забить заглушки: в функции ds1307_init - закомментарить все, кроме настройки порта и прерывания
в ds1307_get_time и ds1307_get_date закомментарить все тело и вставить
Давно в этих кодах разбирался, уже не помню, нужно ли прерывание от часов для их хода, или оно только для будильника. Попробуйте, если не терпится посмотреть, может быть запустится. Вместо нулей можно забить что-то значащее, оно только меняться не будет естстно ))
Код: Выделить всё
void ds1307_init(void)
{
// External Interrupt(s) initialization
// INT0: Off
// INT1: On
// INT1 Mode: Any change
// INT2: Off
GICR|=0x80;
MCUCR|=0x04;
GIFR|=0x80;
//настроим INT1 на вход и подтянем к плюсу
INT_DDR &= ~(1<<INT_INPUT);
INT_PORT |= (1<<INT_INPUT);
/*
#ifdef DS3231
twi_start();
twi_slaveAddress_W(0b1101000); //передача адреса ds3231 + бит записи
twi_write(0x0E); //записываем адрес регистра управления
twi_write(0x00); //разрешим меандр с частотой 1Гц на SQW
twi_write(0x08); //разрешим выход 32кГц
twi_stop();
#else
twi_start();
twi_slaveAddress_W(0b1101000); //передача адреса ds1307 + бит записи
twi_write(0x07); //записываем адрес регистра управления
twi_write(0b10010000); //разрешим меандр с частотой 1Гц на SQW
twi_stop();
*/
}
#endif
}в ds1307_get_time и ds1307_get_date закомментарить все тело и вставить
Код: Выделить всё
*sec = 0x00; //считываем секунды
*min = 0x00; //считываем минуты
*hour = 0x00; //считываем часыКод: Выделить всё
*date = 0x00; //считываем число
*month = 0x00; //считываем месяц
*year = 0x00; //считываем годДавно в этих кодах разбирался, уже не помню, нужно ли прерывание от часов для их хода, или оно только для будильника. Попробуйте, если не терпится посмотреть, может быть запустится. Вместо нулей можно забить что-то значащее, оно только меняться не будет естстно ))
О технике чего спорить-то, давайте попробуем.
Re: Часы Super Clock
не буду Вам доставлять лишнее неудобство, кроме DS3231(который либо на таможне либо....) все датчики есть, подожду немного, потом просто куплю один чип( правда в нашей деревенской глуши его за копейки не купить)
P.S. первый раз выписал часовой модуль у китайца, он заказ не отправил( прошло 2 недели, открыл спор)второй раз в другого китайца.

P.S. первый раз выписал часовой модуль у китайца, он заказ не отправил( прошло 2 недели, открыл спор)второй раз в другого китайца.
Re: Часы Super Clock
dadigor, спасибо за помощь! Залил прошивку No_RTC , увидел много нового. https://youtu.be/-N5iR98hEsk
- dadigor
- Вымогатель припоя
- Сообщения: 593
- Зарегистрирован: Пт дек 26, 2014 20:33:38
- Откуда: Самая большая деревня. (По мнению Габриэля Гарсиа Маркеса)
Re: Часы Super Clock
Это конечно совсем неправильная прошивка, могут вылезти всякие бяки )) так что особо ей не доверяйте, сделана только для Вас - для проскакивания первой ошибки I2C и просмотра кое-какого функционала. К примеру, обязательно будут проблемы при попытке установки будильника ((
Кстати, непонятно что там со средней матрицей - неполная засветка (например цифра 7 в давлении, ноль в температуре)?
Кстати, непонятно что там со средней матрицей - неполная засветка (например цифра 7 в давлении, ноль в температуре)?
О технике чего спорить-то, давайте попробуем.
Re: Часы Super Clock
......"со средней матрицей", да заметил но свалил на прошивку она ведь тестовая, а может контакт плохой в разъеме. Пока на матрицах останавливаться не буду, заказал матрицы 60*60. Сейчас DHT22 DS18B20 подключать буду.
Добавлено after 1 hour 58 minutes 41 second:
подключил, температура(внеш, внутр), влажность и давление отображается, буду ждать часы
Добавлено after 1 hour 58 minutes 41 second:
fin45 писал(а):......Сейчас DHT22 DS18B20 подключать буду.
подключил, температура(внеш, внутр), влажность и давление отображается, буду ждать часы
- dadigor
- Вымогатель припоя
- Сообщения: 593
- Зарегистрирован: Пт дек 26, 2014 20:33:38
- Откуда: Самая большая деревня. (По мнению Габриэля Гарсиа Маркеса)
Re: Часы Super Clock
заголовок проходит - значит не контакт
О технике чего спорить-то, давайте попробуем.
Re: Часы Super Clock
Какая МС часов ds1307 или ds3231 можно определить программно.
Код: Выделить всё
#define false 0
#define true 1
static unsigned char _ds1307 = false;
static unsigned char _ds3231 = false;
unsigned char ds1307(void) { return _ds1307; }
unsigned char ds3231(void) { return _ds3231; }
void rtc_Autodetect(void) // Autodetection
{
unsigned char temp1;
unsigned char temp2;
temp1 = rtc_read(0x11); // сохранение ячеек
temp2 = rtc_read(0x12); // 0x11 и 0x12 ds1307
rtc_write(0xAA, 0x11); // пишем AAh
rtc_write(0x55, 0x12); // пишем 55h
// Регистры температуры ds3231 работают только на чтение (read-only), записать их нельзя.
if (rtc_read(0x11) == 0xAA && rtc_read(0x12) == 0x55)
{
_ds1307 = true; // это ds1307
rtc_write(temp1, 0x11); // restore
rtc_write(temp2, 0x12);
}
else
{
_ds3231 = true; // это ds3231
}
}
Re: Часы Super Clock
dadigor, если возможно выложи отредактированный файлик ds1307.c из исходника "No_RTC".
Re: Часы Super Clock
Lion_A писал(а):Добавил датчик движения на PB2 (выв. 42).
Спасибо за Д.Д. Датчик уже в пути. Скоро буду тестить. По мне даже очень нужная функция.
- dadigor
- Вымогатель припоя
- Сообщения: 593
- Зарегистрирован: Пт дек 26, 2014 20:33:38
- Откуда: Самая большая деревня. (По мнению Габриэля Гарсиа Маркеса)
Re: Часы Super Clock
upavlenko Точно! 0х55 и 0хАА академично, считается, что ошибка менее вероятна при последовательной передаче данных, а также при случайной инициализации ячеек памяти. Но я в свое время писал туда 0х12 и 0х34, что потом и вычитывал. Это было, когда я еще работал и мы заменили 1307 на 3231 в новых версиях разрабатываемых контроллеров. В принципе такое распознавание не очень нужно, если пишешь для себя, сам компилируешь и знаешь что где у тебя установлено, но для универсальной прошивки очень удобно.
fin45 Прилагаю по Вашей просьбе мою варварскую правку авторского файла, надеюсь он не обидится.На самом деле там ничего нового по отношению к моему посту чуть выше. (Ср апр 05, 2017 19:09:19)
attachment удален по Вашей же просьбе ))
fin45 Прилагаю по Вашей просьбе мою варварскую правку авторского файла, надеюсь он не обидится.На самом деле там ничего нового по отношению к моему посту чуть выше. (Ср апр 05, 2017 19:09:19)
attachment удален по Вашей же просьбе ))
Последний раз редактировалось dadigor Пт апр 07, 2017 19:25:46, всего редактировалось 1 раз.
О технике чего спорить-то, давайте попробуем.