Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Часы
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
Anjey_N
Привет!
Хочу сделать простые часы на базе Attiny 2313 с внешним задающим генератором.
Что посоветуете в качестве задающего генератора?
VDLab
Ну попробуй цезиевый генератор поставить... smile.gif

А чем свой генератор не устраивает? Тем более для ПРОСТЫХ часов.
Anjey_N
Цитата(VDLab @ Oct 14 2007, 18:56) *
Ну попробуй цезиевый генератор поставить... smile.gif

А чем свой генератор не устраивает? Тем более для ПРОСТЫХ часов.


Делал как-то 2 года назад часы на PIC16F84. Работают до сих пор, но отстают на минуту за несколько суток.
Вообщето есть сломаные часы "СТАРТ" (конструктор). Хочу поставить АЛС и микроконтроллер. Подумал, что с внешним генератором будут работать точнее.

Может, что-нибудь посоветуете?
DS
Поставьте внешний RTC чип. Если нужна точность, можно DS3231. Или другой какой. Я не думаю, что тспользование генератора вместо RTC что-нибудь заметно сэкономит.
bzx
Цитата(Anjey_N @ Oct 14 2007, 22:32) *
Делал как-то 2 года назад часы на PIC16F84. Работают до сих пор, но отстают на минуту за несколько суток.
...
Может, что-нибудь посоветуете?

Программную коррекцию хода часов сделай.
=GM=
Цитата(Anjey_N @ Oct 14 2007, 14:34) *
Хочу сделать простые часы на базе Attiny 2313 с внешним задающим генератором. Что посоветуете в качестве задающего генератора?

Что, если принимать какую-нибудь круглосуточную радиостанцию в диапазоне ДВ или СВ и по сигналам точного времени (в конце каждого часа) проводить коррекцию? Приемник можно сделать прямого усиления, схем в Сети полно.
add
Цитата(=GM= @ Oct 15 2007, 01:02) *
Что, если принимать какую-нибудь круглосуточную радиостанцию в диапазоне ДВ или СВ и по сигналам точного времени (в конце каждого часа) проводить коррекцию? Приемник можно сделать прямого усиления, схем в Сети полно.

хм.. а не проще, а главное точнее, присобачить GPS приемник? В НМЕА протоколе есть времечко. Вот только цена устроит ли вопрошающего?
mse
Цитата(add @ Oct 15 2007, 10:25) *
хм.. а не проще, а главное точнее, присобачить GPS приемник? В НМЕА протоколе есть времечко. Вот только цена устроит ли вопрошающего?

Гы...Тогда проще, а, главное, несравненно дешевле, тупо купить кетайские чясы. ;О) С УКВ приёмником, термометром и кофем в постель.
Anjey_N
С кофе в постель было бы неплохо!
Можно поставить RTC, но у Атину2313 нет аппаратного I2C. Писать программный интерфейс неохота.
Сделаю наверно проще буду использовать в качестве задающей системную частоту МК (В PICe я применял кварц на 4096 кГц, попробую и сейчас такой). А корректировку попробую сделать как в наручных часах "Электроника" производства Беларусь.

У меня есть книга Шпака "Программирование на Си микроконтроллеров АВР и ПИК". Там есть проект "Часы иеального времени", в котором применяется МК ATmega169. В качестве калибратора применяется микросхема E1217X от Атмел. В ATmega169 есть спецрегистры для калибровки внутреннего генератора.


Вообщем не знаю как и поступить!?
Seasonf
Часы дают здесь:
http://www.radiokot.ru/circuit/digital/home/09/

подрихтовать на предмет точности и не надо велосипед изобретать....
defunct
Цитата(add @ Oct 15 2007, 09:25) *
хм.. а не проще, а главное точнее, присобачить GPS приемник? В НМЕА протоколе есть времечко. Вот только цена устроит ли вопрошающего?

Для ПРОСТЫХ часов самое лучшее решение smile.gif Самое простое и самое дешевое smile.gif

Цитата(Anjey_N @ Oct 15 2007, 10:28) *
Вообщем не знаю как и поступить!?

Мегу48 и часовой кварц + программная коррекция и синхронизация с часами компа по 232.
muravei
Цитата(defunct @ Oct 15 2007, 14:20) *
Для ПРОСТЫХ часов самое лучшее решение

Конечно, такие часы смогут ответить не только на вопрос когда, но и где?
Иногда , по утру, это актуально smile.gif
А вообще, есть станции , вещающие частоту специально для привязки времени.
add
Цитата(defunct @ Oct 15 2007, 14:20) *
Для ПРОСТЫХ часов самое лучшее решение smile.gif Самое простое и самое дешевое smile.gif

biggrin.gif ну вот зачем разводить ненужную полемику?
=GM=:"...принимать какую-нибудь круглосуточную радиостанцию в диапазоне ДВ или СВ .." -возможно не лучшая альтернатива. А возни с наладкой,настройкой..и тестированием вообще вагон.


Цитата(muravei @ Oct 15 2007, 14:28) *
А вообще, есть станции , вещающие частоту специально для привязки времени.

Токо у нас они не распространены..:-(
http://tf.nist.gov/stations/wwvbtimecode.htm
DS
Цитата(Anjey_N @ Oct 15 2007, 11:28) *
С кофе в постель было бы неплохо!
Можно поставить RTC, но у Атину2313 нет аппаратного I2C. Писать программный интерфейс неохота.


Чтобы работать с одной микросхемой часов пишется за 2 часа времени без какого-либо напряга, без полных знаний протокола, только по datasheet микросхемы часов. Тем более зачатки в 2313 есть. Не вижу проблемы - Вы, видимо, просто наслушались про сложности i2c. В данном случае сложностей никаких нет.
D H
Цитата(DS @ Oct 15 2007, 15:58) *
Чтобы работать с одной микросхемой часов пишется за 2 часа времени без какого-либо напряга, без полных знаний протокола, только по datasheet микросхемы часов. Тем более зачатки в 2313 есть. Не вижу проблемы - Вы, видимо, просто наслушались про сложности i2c. В данном случае сложностей никаких нет.


Абсолютно согласен. Если ломает самому писать или искать готовую библиотеку, то в CodeVision есть готовая софтовая библиотка i2c.
bzx
Цитата(defunct @ Oct 15 2007, 14:25) *
Мегу48 и часовой кварц + программная коррекция и синхронизация с часами компа по 232.

А кто будет синхронизировать комп? Если нет выхода в интет, то это бесполезно.
defunct
Цитата(bzx @ Oct 15 2007, 23:09) *
А кто будет синхронизировать комп? Если нет выхода в интет, то это бесполезно.

Это верно, но вопрос задан на этом форуме, а здесь его можно задать только имея выход в интернет, т.о. комп автора вопроса имеет выход в интернет де-факто wink.gif
Да и синхронизироваться компу не так часто придется, хотя бы раз в месяц и точность часов будет более-менее приемлемой.
Marian
Цитата(Anjey_N @ Oct 14 2007, 17:34) *
Привет!
Хочу сделать простые часы на базе Attiny 2313 с внешним задающим генератором.
Что посоветуете в качестве задающего генератора?


Идея такая

К процу стандартно подключен кварц. Кварц может быть на любую частоту(н.п. 8 Mhz)

1. Разрешаешь прерывания по таймеру
2. В прерывании увеличиваешь "первую" глобальную переменную, если достигла определенного значения, сбрасываешь ее в ноль и увеличиваешь "вторую" переменную. ( т.е. надо добиться увеличения второй переменной раз в секунду)
3. В цикле основной программы проверяешь "вторую" переменную, если изменилась значит прошла секунда. ( н.п. отображаешь на экране)
WHALE
Извините за вопрос,но вы сами поняли,что написали?
В каком-то прерывании от таймера(вы в курсе,что их у таймера несколько?)инкрементируем какую-то пе-
ременную,затем по переполнении первой вторую.Тип не важен,главное,шоб было две.
Имхо,или с дозой переборщили,или сорт травы надо менять.
VDLab
Что то тема, как обычно впрочем, плавно перетекла от выбора типа генератора к особенностям реализации алгоритма... smile.gif . По поводу повышения точности часов, из предложенных вариантов развеселил вариант синхронизации часов с ПК, который в свою очередь синхронизирован с сервером времени. И это получатся простые часы!? Вы бы еще модуль Ethernet предложили бы в них запихать, чтобы без компа обойтись.
ИМХО предложенный вариант с програмной коррекцией хода часов - самое ПРОСТОЕ и дешевое решение добиться приемлемой точности, без применения внешних навороченных генераторов. Очень, кстати, нравилась мне эта фишка в минской "Электронике", правда больше нигде такого я в наручных часах не встречал, или других производителей проблема точности не так волновала?
defunct
Цитата(VDLab @ Oct 19 2007, 00:19) *
По поводу повышения точности часов, из предложенных вариантов развеселил вариант синхронизации часов с ПК, который в свою очередь синхронизирован с сервером времени. И это получатся простые часы!?

Конечно простые. Из железа - только МК, даже кварц может не понадобиться. Все делается софтом.

Да и софт простой - раз в месяц подключить часы к компу для синхронизации,
в часах сравнить текущее время с синхронизируемым - получить дельту ухода за период, привести ее к часам или суткам (смотря что будет удобнее) и делать автоматическую программную коррекцию ежечасно(ежедневно). Полагаю что даже на внутреннем осцилляторе tiny2313 даст вполне вменяемую точность при таком подходе. И не надо будет пользователю задумываться о том, на сколько ms/us надо подводить часы.

Цитата
Вы бы еще модуль Ethernet предложили бы в них запихать, чтобы без компа обойтись.

232C (3 провода) для вас сложен? sad.gif

Цитата
ИМХО предложенный вариант с програмной коррекцией хода часов - самое ПРОСТОЕ и дешевое решение добиться приемлемой точности

Не далеко смотрите. Что мешает с компа послать часам по 232-му текущее время. Параметры коррекции часы и сами расчитать смогут.
ivstech
Цитата(Anjey_N @ Oct 15 2007, 00:32) *
Делал как-то 2 года назад часы на PIC16F84. Работают до сих пор, но отстают на минуту за несколько суток.


АTMEGA8 + часовой кварц и в результате уход - секунда за несколько суток. даже конденсаторы на кварц не нужны, они внутри контроллера, только нужно включить CKOPT
SergeiCh
Вопрошающий должен сообщить требуемую точность хода часов в ppm, секундах в неделю и т.п. Возможно, его устроит RC генератор smile.gif или только квантовый стандарт smile.gif , без ТЗ никто не скажет.
CDT
Веселенькие предложения для простеньких часиков на кухню ! beer.gif

Надо:
- взять хороший кварц (10ppm);
- к нему подстроечные конденсаторы 10-30 пф.
- завести этот кварц с желаемым контроллером;
- сформировать на любом из портов импульсы с частотой, строго пропорциональной тактам генератора;
- по частотомеру, обладающему точностью не хуже 0.1 ppm конденсаторами выставить расчетную частоту на упомянутом порту.

Реально получен уход менее 1 сек/сутки (меньше минуты в месяц), в комнатных условиях (когда дрейф температуры не большой и циклический). Кварц 8Мгц, 10ppm, Atmega8.

Вместо частотомера можно использовать КВ приемник на 10 или 15 Мгц.

Что касается вещательных радиостанций, то сигналы точного времени можно получить только от
р-станции "Маяк", да и то в Москве, да и то не уверен, что еще можно.
Maik-vs
А зачем столько геморроя - компьютер, контроллер, подключение-синхронизация? ЧАСЫ НА ЛЮБОМ КОМПЕ НАРИСОВАНЫ. Если есть интернет (а он есть) то идут точно. На змнее время сами скоро перейдут.

Цитата(VDLab @ Oct 19 2007, 01:19) *
... Очень, кстати, нравилась мне эта фишка в минской "Электронике", правда больше нигде такого я в наручных часах не встречал, или других производителей проблема точности не так волновала?

Да, очень хорошо было сделано. Главное, очень дешёвое решение в смысле программирования при совершенно понятном юзер интерфейсе. ИМХО дл япростых часов - самое оно. Потому что (рискую влезть в психологию) домашние часы, которые не надо подводить годами - раздражают. Они не ошибаются. Они без греха. Они лучше Вас.
SergeiCh
Цитата(CDT @ Oct 19 2007, 14:50) *
Реально получен уход менее 1 сек/сутки (меньше минуты в месяц), в комнатных условиях (когда дрейф температуры не большой и циклический). Кварц 8Мгц, 10ppm, Atmega8.
Если не врет моя логарифмическая линейкаsmile.gif, минута в месяц - это порядка 22 ppm. Обычный часовой кварц для обычных кварцевых часов smile.gif дает порядка 30 ppm при 25С и долговременный дрейф 3-5 ppm в год. Пусть с температурным дрейфом будет 40 ppm. Это две минуты в месяц. По-моему, для простых часов нормально. Предложенная здесь DS3231, для сравнения, даст уход меньше 2 минут в год.

Интересно, в каких пределах емкостями можно перестраивать кварцевый генератор AVR с учетом ограничений на емкости? Пробовал кто-нибудь ставить варикапы? Интересно было бы попробовать подстраивать частоту, к примеру, tiny261 по температуре, чтобы выйти на 10 ppm в промышленном диапазоне.

Лет десять назад в Спектруме (IEEE) видел статью, так там студенты сделали часы с GPS. Запомнилось тем, что индикация была на газоразрядных лампах lol.gif
VDLab
Цитата(defunct @ Oct 19 2007, 01:20) *
...Да и софт простой - раз в месяц подключить часы к компу для синхронизации,
в часах сравнить текущее время с синхронизируемым - получить дельту ухода за период, привести ее к часам или суткам (смотря что будет удобнее) и делать автоматическую программную коррекцию ежечасно(ежедневно)...

То есть вы предлагаете сделать часы зависимыми(пусть хотя бы частично) от каких либо внешних устройств? И где здесь простота? Проверить, на сколько уходят часы и без компа займет пару минут, зачем лишний геморрой? Да и не забывайте, что кроме программы контроллера, нужно еще и комповый софт написать (а это, как ни странно не все умеют 05.gif ).
Цитата
232C (3 провода) для вас сложен? sad.gif

до жути biggrin.gif . Видите ли, у меня на компе нет СОМ портов, а переходники, заметно удорожают конструкцию, поэтому для общения своих устройств с компьютером пришлось выбрать USB HID...
Oleg_DI
Добрые ночи. Все забыли о питании прибора говорить о точности
в месяц значит никогда не выключать часы.В реальности не выйдет
при обычном варианте. Если это решено то любой из вар. синхронизации
приемлем с авт. коррекцией
Anjey_N
Цитата(DS @ Oct 14 2007, 21:44) *
Поставьте внешний RTC чип. Если нужна точность, можно DS3231. Или другой какой. Я не думаю, что тспользование генератора вместо RTC что-нибудь заметно сэкономит.



Вернулся я опять к этой теме. Буду ставить DS1307. Подскажите где можно подсмотреть программную релизацию интерфейса I2C на Си! help.gif
aai_m
Цитата(Anjey_N @ Oct 30 2007, 13:16) *
Вернулся я опять к этой теме. Буду ставить DS1307. Подскажите где можно подсмотреть программную релизацию интерфейса I2C на Си! help.gif

Нажмите для просмотра прикрепленного файла

Получите, что просили
Anjey_N
Цитата(aai_m @ Oct 30 2007, 12:57) *



Большое thank you very much
kada
Делали часы на Tiny2313 с RTC DS1338C. До этого перепробовали несколько вариантов пока не остановились на DS1338C. Преимущества: Встроенный кварц 32768Гц 10ppm при 25град С, календарь, 56 Байт энергонезависимой RAM. I2C реализован программно по Appnote от Atmel.
adc
Цитата
Делали часы на Tiny2313 с RTC DS1338C. До этого перепробовали несколько вариантов пока не остановились на DS1338C. Преимущества: Встроенный кварц 32768Гц 10ppm

Эх, где Вы были раньше:-/ Купил DS1307(внешний кварц, 100кГц i2c, потребление от батареи 500нА), против DS1338C(Внутр/внеш. кварц, 400кГц-i2c, потребление от батареи 20нА,мах100нА)Возможна ли замена DS1307 на DS1338C в будущем?
Скажите пожалуйста где Вы в даташите нашли 10ррм для внутреннего кварца?
adc
Первый пуск DS1307 оказался удачным. Все работает, ну или почти все..:-) Наткнулся на такие грабли: Батарейный вывод пока не использую, висит в воздухе. Данные то читаются то не читаются... Поиском обнаружил следующую проблему..При закорачивании батарейного вывода на землю, данные передаются уверенней.. а если просто коснутся то уходит спячку (время продолжает считать). Что делать? нашел вот такое обсуждение http://www.microchip.ru/phorum/read.php?f=...250&t=83250
Но там все утверждают что посадить резюком на землю. В даташите написанно что возможно!! просто заземлить. Корректно ли будет если я кину ножку батарейного выхода на землю? Поделитесь пожалуйста своим опытом. Заранее спасибо!
VladislavS
Что-то я не пойму смысла DS1307 без батарейки. Весь его смак как раз в том, что часы тикают от батарейки пока устройство выключено или обесточено форсмажором.
adc
Цитата(VladislavS @ Nov 1 2007, 22:46) *
Что-то я не пойму смысла DS1307 без батарейки. Весь его смак как раз в том, что часы тикают от батарейки пока устройство выключено или обесточено форсмажором.

Ну, да.. правильно. ну а если нет батарейки? в смысле не используется(идет как опция,хотите ставте ,хотите нет)? тогда мы не сможем читать данные с нее..
adc
Вот еще такой странный казус с DS1307.. Часы идут. Все нормально, но только сбрасываются, по непонятной причине где то через полтора часа,иногда через пол часа?! (вначале устанавливаю время в нули). Неужели и вправду пока время(дату) корректно не установишь, будут сбрасываться..? етож бред полный...странно..
GDI
Использовал когда то 1307, никаких проблем со сбросом не замечалось, истользовалась встроенная библиотека (1307+программный I2С)из CodeVision-а, правда и батарейка использовалась. Может у вас питание скачет, а т.к. батареи нет, то часы и сбрасываются? Может хотя бы конденсатор поставите вместо батареи с питанием через делитель или через пару диодов. А может сам интерфейс ваш глючит или команды не так подаете...
adc
Цитата(GDI @ Nov 2 2007, 10:44) *
Может у вас питание скачет, а т.к. батареи нет, то часы и сбрасываются? Может хотя бы конденсатор поставите вместо батареи с питанием через делитель или через пару диодов.

Питание общее с контроллером м8535. Попробую с кондером, или батарею.. воткну..если уж совсем идей не будет.. Но все же согласитесь что ето не совсем правильное было бы (как бы условное) решение проблемы(причина не установлена). МК установлен с BODLEVEL 4В. питание стабильное около 5.1В. Напишу наверное программную проверку на предмет, был ли резет на МК.
Цитата(GDI @ Nov 2 2007, 10:44) *
А может сам интерфейс ваш глючит или команды не так подаете...

Ну тут странно.. ведь работает же, то час, то 30мин.Программа на асме. Читаю данные, пишу. Все нормально. скорость уменьшил... Буду копать дальше..:-)
VladislavS
Цитата(adc @ Nov 2 2007, 11:08) *
Буду копать дальше..:-)


Не занимайся ерундой. Перевесь кварц на проц и выкинь далас раз батарейка не планируется. Все равно суперточности на нем не добиться. А если надо программную коррекцию делать, то какая разница тогда что корректировать.
adc
Цитата(VladislavS @ Nov 2 2007, 21:44) *
Не занимайся ерундой. Перевесь кварц на проц и выкинь далас раз батарейка не планируется. Все равно суперточности на нем не добиться. А если надо программную коррекцию делать, то какая разница тогда что корректировать.

Делал я на конроллере часы... На контроллере висит много других задач, и к томуже не синхронных (внешние прерывания и т.п.) Вопрос то в том что микруха далосовская не работает..как надо.. Нехотелось бы из-за какойто мелочи просто "выкинуть". Девайс то удобный во всех отношениях.
Anjey_N
А у меня DS1307 заработала! Но только я маленькую прогу написал - только считывает время с DS-ки и выводит на АЛС.
Вот теперь бьюсь над вводом данных при помощи кнопок, и ничего не могу сочинить! Хочу применить 3 кнопки: 1-вызов меню: 2-увеличение данных: 3-переход на другой уровень. И чтобы редактируемое поле было мигающим! Ну как во всех электронных часах!
Вот хочу спросить: Как вы это реализовали у себя?
adc
Цитата(Anjey_N @ Nov 3 2007, 20:03) *
А у меня DS1307 заработала!

Поздравляю! :-)
Цитата(Anjey_N @ Nov 3 2007, 20:03) *
Вот теперь бьюсь над вводом данных при помощи кнопок, и ничего не могу сочинить! Хочу применить 3 кнопки: 1-вызов меню: 2-увеличение данных: 3-переход на другой уровень. И чтобы редактируемое поле было мигающим! Ну как во всех электронных часах!
Вот хочу спросить: Как вы это реализовали у себя?

У меня пока так: читаю данные передаю на lcd (16-ти символьный). Несовсем понял как Вы хотите сделать меню?! Я наверное сделаю 1-кнопка переход в режим установки часов(и инкремент) 2-я-кнопка передвижение курсора вправо.(далее перебор всех значений с автоматическим переключением вывода на время, дата, день недели).А мигающее поле дык это просто. Работайте с указателем на редактируемый байт в памяти. Этот указатель будет указывать контроллеру какое значение инкрементировать. Он же будет указывать какой сигмент будет мигать. Во время работы режима "редактирования" подменяете при выводе на индикатор значение редактируемого байта пробелом через раз. Получается мигающий курсор.
Удачи!
зы:часы по непонятной причине продолжают сбрасываться в ноль ..:-( с этим сейчас разбираюсь
Anjey_N
К моему стыду я до сих пор не понял "указатели". Можно разжевать поподробнее:

Работайте с указателем на редактируемый байт в памяти. Этот указатель будет указывать контроллеру какое значение инкрементировать. Он же будет указывать какой сигмент будет мигать.

Или поделитесь кусочком кода! yeah.gif
adc
Цитата(Anjey_N @ Nov 3 2007, 21:38) *
К моему стыду я до сих пор не понял "указатели". Можно разжевать поподробнее:

Работайте с указателем на редактируемый байт в памяти. Этот указатель будет указывать контроллеру какое значение инкрементировать. Он же будет указывать какой сигмент будет мигать.

Или поделитесь кусочком кода! yeah.gif

Вы вроде пишите на С. Я же на асме. В роли указателя имелось в виду то , что есть массив (полное подготовленное поле(масив байтов) для вывода на дисплей). в нужное время мы его выводим. Указатель - в моем контексте, означал адрес текущего байта в этом массиве, который (адрес) хранится в какойто переменной. Вот так перед выводом на дисплей, находите байт на который указывает указатель :-), сохраняете этот байт, а вместо него подставляете символ пробела(' ' ) или подчеркивание('_').
Anjey_N
Цитата(adc @ Nov 4 2007, 11:37) *
Вы вроде пишите на С. Я же на асме. В роли указателя имелось в виду то , что есть массив (полное подготовленное поле(масив байтов) для вывода на дисплей). в нужное время мы его выводим. Указатель - в моем контексте, означал адрес текущего байта в этом массиве, который (адрес) хранится в какойто переменной. Вот так перед выводом на дисплей, находите байт на который указывает указатель :-), сохраняете этот байт, а вместо него подставляете символ пробела(' ' ) или подчеркивание('_').


Спасибо за подсказку beer.gif
kada
Цитата(adc @ Nov 1 2007, 15:40) *
Возможна ли замена DS1307 на DS1338C в будущем?

Замена возможна если сразу предусмотреть место под DS1338C на плате (корпус SO-8 300mil).
А внутренняя организация почти такая же. Завелась она кстати у нас с пол пинка smile.gif. Правда без батарейки не включали.
Цитата(adc @ Nov 1 2007, 15:40) *
Скажите пожалуйста где Вы в даташите нашли 10ррм для внутреннего кварца?

Страница №9:
Цитата
DS1338C ONLY
The DS1338C integrates a standard 32,768Hz crystal in the package. Typical accuracy at nominal VCC and +25°C is approximately 10ppm. Refer to Application Note 58 for information about crystal accuracy vs. temperature.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.