Часы на газоразрядных индикаторах
- Ян
- Поставщик валерьянки для Кота
- Сообщения: 1947
- Зарегистрирован: Вт ноя 01, 2005 17:32:22
- Откуда: Москва
Re: Часы на газоразрядных индикаторах
Вот. Нарисовано в Кореле. Вроде в такое отверстие удавалось вставить ИН-17 
- Вложения
-
- ИН-17.rar
- (11 КБ) 207 скачиваний
- Реклама
- КАШАК
- Это не хвост, это антенна
- Сообщения: 1303
- Зарегистрирован: Вс апр 19, 2009 17:20:22
- Откуда: г.Ростов-на-Дону/г.Таганрог/г.Геленджик
- Контактная информация:
Re: Часы на газоразрядных индикаторах
Спасибо 
Опыт растет прямо пропорционально выведенному из строя оборудованию...
- vvsector85
- Грызет канифоль
- Сообщения: 282
- Зарегистрирован: Ср июл 08, 2015 22:36:31
- Откуда: Харьков, Украина
Re: Часы на газоразрядных индикаторах
И снова вопрос по прерываниям: во встроенной функции AVRStudio6 (eeprom_write_byte) не увидел запрета прерываний на время записи. Можно, опять же, сделать просто
или нужно написать свою функцию записи EEPROM, где будут запрещаться прерывания именно во время записи?
Код: Выделить всё
cli();
eeprom_write_byte(&eep,x);
sei();- Apparatchik
- Держит паяльник хвостом
- Сообщения: 908
- Зарегистрирован: Вс май 23, 2010 13:55:42
- Откуда: Украина, Александрия
Re: Часы на газоразрядных индикаторах
А зачем их запрещать при записи в еепром?
«И всё-таки она вертится!»
- vvsector85
- Грызет канифоль
- Сообщения: 282
- Зарегистрирован: Ср июл 08, 2015 22:36:31
- Откуда: Харьков, Украина
Re: Часы на газоразрядных индикаторах
Я сделал сервисное меню, в котором можно устанавливать разные параметры, как например, скорость смены цветов RGB-подсветки, поправка температуры, плавность смены цифр и т.д. Почему-то, иногда записываются неверные данные. Почитал, пишут, что прерывания могут мешать процедуре записи.
И еще, мои часы немного спешат, где-то на 0,5с в сутки, хотя кварц ставил "термостабильный". Хочу сделать коррекцию, чтобы раз в сутки часы подводились. Но установить время на 1307 можно только в секундах. Поэтому, если часы подводить назад, нужно их просто приостановить на n миллисекунд, а если вперед - установить время на 1307 на +n секунд больше текущего, и, если время перевода вперед не кратно 1 с, то снова остановить, на n миллисекунд.
Может, у кого-то есть другое готовое решение для такой коррекции?
И еще, мои часы немного спешат, где-то на 0,5с в сутки, хотя кварц ставил "термостабильный". Хочу сделать коррекцию, чтобы раз в сутки часы подводились. Но установить время на 1307 можно только в секундах. Поэтому, если часы подводить назад, нужно их просто приостановить на n миллисекунд, а если вперед - установить время на 1307 на +n секунд больше текущего, и, если время перевода вперед не кратно 1 с, то снова остановить, на n миллисекунд.
Может, у кого-то есть другое готовое решение для такой коррекции?
- Реклама
- a_winner
- Грызет канифоль
- Сообщения: 275
- Зарегистрирован: Чт сен 24, 2015 17:46:26
- Откуда: Обираловка, МО
- Контактная информация:
Re: Часы на газоразрядных индикаторах
Есть: у Вас есть ёмкости от выводов кварца на общий провод? Замените одну ёмкость на подстроечник.
Errare humanum est
- vvsector85
- Грызет канифоль
- Сообщения: 282
- Зарегистрирован: Ср июл 08, 2015 22:36:31
- Откуда: Харьков, Украина
Re: Часы на газоразрядных индикаторах
По ДШ 1307 емкостей не положено. Кварц вот такой, Cнагр = 12.5 пФ. По ДШ ± 20 ppm (±0,002%)
- a_winner
- Грызет канифоль
- Сообщения: 275
- Зарегистрирован: Чт сен 24, 2015 17:46:26
- Откуда: Обираловка, МО
- Контактная информация:
Re: Часы на газоразрядных индикаторах
А, да, ds1307 не требует внешних резисторов и ёмкостей по выводам кварца, они уже внутри есть, только в ДШ на DS1307 написано, что max series resistance 45kOhm, а у Вашего кварца - 80kOhm. Но может можно внешнеё емкостью чуть подправить?
Кстати, не могут быть наводки по питанию или на линии X1, X2?
Кстати, не могут быть наводки по питанию или на линии X1, X2?
Errare humanum est
- vvsector85
- Грызет канифоль
- Сообщения: 282
- Зарегистрирован: Ср июл 08, 2015 22:36:31
- Откуда: Харьков, Украина
- xSanders
- Потрогал лапой паяльник
- Сообщения: 374
- Зарегистрирован: Сб апр 27, 2013 21:39:15
- Откуда: Украина
Re: Часы на газоразрядных индикаторах
На правах оффтопа - Кто разбирается в подключении симисторов - посмотрите тут . Очередной шедевр инженерной китайской мысли . Не могу одолеть.
-
watchmaker
- Поставщик валерьянки для Кота
- Сообщения: 2179
- Зарегистрирован: Вс ноя 15, 2009 23:13:59
- Откуда: Харьков
- Контактная информация:
Re: Часы на газоразрядных индикаторах
В таком случае от DS1307 стоило бы отказаться полностью, а счёт времени вести в софте. А там уже можно двигать в любую сторону и на любое время, кратное шагу таймера. На тех же AVR - до 1/128 секунды в сутки.И еще, мои часы немного спешат, где-то на 0,5с в сутки, хотя кварц ставил "термостабильный". Хочу сделать коррекцию, чтобы раз в сутки часы подводились. Но установить время на 1307 можно только в секундах.
Иногда мой питомец уходит в такую спячку, что разбудить его можно только щелчком по первой ноге...
- Волосатый
- Сверлит текстолит когтями
- Сообщения: 1288
- Зарегистрирован: Пн апр 14, 2008 12:54:35
- Откуда: Город ГЕРОЙ Ленинград
- Контактная информация:
Re: Часы на газоразрядных индикаторах
Я решил эту проблему просто - выход SQW завел на прерывание, один таймер настроил на 1/100 секунды от кварца 8МГц (да, стм32 так может), и получил 0,01 секундыwatchmaker писал(а):В таком случае от DS1307 стоило бы отказаться полностью
Опыт приходит сразу после того, как он был нужен...
- vvsector85
- Грызет канифоль
- Сообщения: 282
- Зарегистрирован: Ср июл 08, 2015 22:36:31
- Откуда: Харьков, Украина
Re: Часы на газоразрядных индикаторах
Все равно тогда МК тактировать нужно кварцем. Часы я уже сделал, так что менять схему уже поздно, а вот софтовая коррекция - выход. Только вот в моей библиотеке для 1307 нет функции пуска-остановки часов. Пуск происходит при инициализации, а функция остановки просто отсутствует. По идее, в 7-й регистр нужно единицу записать, но боюсь чего-то намудрить. Если есть годная библиотека для 1307, поделитесь, пожалуйста.
- SLvik
- Друг Кота
- Сообщения: 7622
- Зарегистрирован: Ср май 28, 2008 00:32:54
- Откуда: г. Россия
- Контактная информация:
Re: Часы на газоразрядных индикаторах
Да, так и есть. есть там такой бит и он работает реально.
Я при старте проверяю его - если генератор отключен - включаю его.
И при установке часов я сначала останавливаю 1307 и обнуляю секунды, а после установки часов включаю генерацию этим флажком.

Я при старте проверяю его - если генератор отключен - включаю его.
И при установке часов я сначала останавливаю 1307 и обнуляю секунды, а после установки часов включаю генерацию этим флажком.
Очень нравится неон

Мой проектик часиков с термометром на любых 6ти газоразрядных лампах + куча функций
Ещё один - попроще

Светодиодный проект

My video on youtube nic SLvik78
Мой проектик часиков с термометром на любых 6ти газоразрядных лампах + куча функций
Ещё один - попроще
Светодиодный проект
My video on youtube nic SLvik78
- vvsector85
- Грызет канифоль
- Сообщения: 282
- Зарегистрирован: Ср июл 08, 2015 22:36:31
- Откуда: Харьков, Украина
Re: Часы на газоразрядных индикаторах
Что-то никак не могу разобраться с остановкой 1307 (то что мне нужно для коррекции). Бит СН, управляющий тактовым генератором , судя по ДШ, почему-то находится в регистре секунд (в десятках секунд только 3 бита, решили сэкономить, наверное). Т. е. остановить/запустить 1307 я могу только перезаписав секунды? Тогда, каким чудом, при инициализации 1307 при включении часов не обнуляются секунды?
Функция инициализации в моей библиотеке 1307 выглядит вот так:
На сколько я понимаю, здесь включается SQW и определяется его частота. Не могу понять, где происходит запись "0" в СН?
Правильно ли я понимаю, чтобы установить БИТ СН в "1" (остановить часы), не сбросив секунды, мне нужно сначала считать время, а потом записать как-то так:
А чтобы снова запустить 1307 нужно снова отправит секунды, только без 0х80?
Функция инициализации в моей библиотеке 1307 выглядит вот так:
Код: Выделить всё
void rtc_init(unsigned char rs, unsigned char sqwe, unsigned char out)
{
rs&=3;
if (sqwe) rs|=0x10;
if (out) rs|=0x80;
i2c_start();
i2c_write(0xd0);
i2c_write(7);
i2c_write(rs);
i2c_stop();
}Правильно ли я понимаю, чтобы установить БИТ СН в "1" (остановить часы), не сбросив секунды, мне нужно сначала считать время, а потом записать как-то так:
Код: Выделить всё
i2c_start();
i2c_write(0xd0);
i2c_write(0);
i2c_write 0x80+(bin(sec));
i2c_stop();
Последний раз редактировалось vvsector85 Ср июн 08, 2016 19:04:39, всего редактировалось 2 раза.
- SLvik
- Друг Кота
- Сообщения: 7622
- Зарегистрирован: Ср май 28, 2008 00:32:54
- Откуда: г. Россия
- Контактная информация:
Re: Часы на газоразрядных индикаторах
Этот бит находится в регистре секунд по адресу 00
7й бит этого регистра и есть разрешение генерации.

7й бит этого регистра и есть разрешение генерации.
Очень нравится неон

Мой проектик часиков с термометром на любых 6ти газоразрядных лампах + куча функций
Ещё один - попроще

Светодиодный проект

My video on youtube nic SLvik78
Мой проектик часиков с термометром на любых 6ти газоразрядных лампах + куча функций
Ещё один - попроще
Светодиодный проект
My video on youtube nic SLvik78
- vvsector85
- Грызет канифоль
- Сообщения: 282
- Зарегистрирован: Ср июл 08, 2015 22:36:31
- Откуда: Харьков, Украина
Re: Часы на газоразрядных индикаторах
Кажется, я понял. При первом включении мои часы не пойдут. Это случится только после установки времени, когда в первые 6 бит регистра 00 запишутся секунды, а в 7-й - "0". Вот почему в функции инициализации ничего не записывается в регистр 00. Иначе, при каждом выключении часов секунды сбрасывались бы.
Значит, нужно при включении часов выполнять проверку 7-го бита в регистре 00. Если он = 0 - ничего не делать, если 1 - записать 0.
Значит, нужно при включении часов выполнять проверку 7-го бита в регистре 00. Если он = 0 - ничего не делать, если 1 - записать 0.
- SLvik
- Друг Кота
- Сообщения: 7622
- Зарегистрирован: Ср май 28, 2008 00:32:54
- Откуда: г. Россия
- Контактная информация:
Re: Часы на газоразрядных индикаторах
Правильно.
Когда батарейка стоит на часах, то этот бит не сбрасывается и часы уже идут.
А при старте программы она проверяет этот бит если часы стоят прога обнуляет все регистры
и ставит 7й бит и время пошло.
По крайней мере у меня так сделано.

Когда батарейка стоит на часах, то этот бит не сбрасывается и часы уже идут.
А при старте программы она проверяет этот бит если часы стоят прога обнуляет все регистры
и ставит 7й бит и время пошло.
По крайней мере у меня так сделано.
Очень нравится неон

Мой проектик часиков с термометром на любых 6ти газоразрядных лампах + куча функций
Ещё один - попроще

Светодиодный проект

My video on youtube nic SLvik78
Мой проектик часиков с термометром на любых 6ти газоразрядных лампах + куча функций
Ещё один - попроще
Светодиодный проект
My video on youtube nic SLvik78
- vvsector85
- Грызет канифоль
- Сообщения: 282
- Зарегистрирован: Ср июл 08, 2015 22:36:31
- Откуда: Харьков, Украина
Re: Часы на газоразрядных индикаторах
Так, вроде родил что-то. Гляньте, пожалуйста, а то не хочется лишний раз часы раскурочивать, чтобы прошить:
vars[7] - коррекция часов на vars[7] десятых секунд назад
vars[8] - коррекция часов на vars[8] десятых секунд вперед
vars[7] - коррекция часов на vars[7] десятых секунд назад
vars[8] - коррекция часов на vars[8] десятых секунд вперед
Код: Выделить всё
//================Коррекция времени================
if (corr_flag==0)
{
if ((H==1)&&(M==0)&&(S==30))
{
unsigned char corr_100ms;
corr_flag=1;
rtc_get_time(&H, &M, &S);
if (vars[7])
{
corr_100ms = vars[8]%10;
S=S-(vars[8]/10)+1;
rtc_write(0x00,0x80);
for(unsigned char i=0;i<=corr_100ms;i++)
{
_delay_ms(100);
}
rtc_write(0x00,bin(S));
}
if (vars[8])
{
corr_100ms = 10-(vars[8]%10);
S=S+(vars[8]/10)+1;
rtc_write(0x00,0x80);
for(unsigned char i=0;i<=corr_100ms;i++)
{
_delay_ms(100);
}
rtc_write(0x00,bin(S));
}
}
_delay_ms(1500);
corr_flag=0;
}
//=======- SLvik
- Друг Кота
- Сообщения: 7622
- Зарегистрирован: Ср май 28, 2008 00:32:54
- Откуда: г. Россия
- Контактная информация:
Re: Часы на газоразрядных индикаторах
Я не могу, ребята помогут.
Я только в ассемблере пишу проги.

Я только в ассемблере пишу проги.
Очень нравится неон

Мой проектик часиков с термометром на любых 6ти газоразрядных лампах + куча функций
Ещё один - попроще

Светодиодный проект

My video on youtube nic SLvik78
Мой проектик часиков с термометром на любых 6ти газоразрядных лампах + куча функций
Ещё один - попроще
Светодиодный проект
My video on youtube nic SLvik78


