Касательно кварца. Я как то делала таймер для одной установки. На восьмой меге. Там нужны были часы. Которые я, ради эксперимента, реализовала на часовом кварце и Т2- таймере. Применив идею коррекции хода часов товарища AterLux, да добавив кучку математики, что б коэффициент коррекции рассчитывался автоматически при очередной установке/подстроке времени, получилось добиться точности порядка секунды за период с мая месяца по текущий момент. Без термокоррекции, ибо таймер у людей работает в помещении.
AQ29, Интересно. Берем всеми любимую мегу8. Как там можно соединить аппаратно пару таймеров?
Не знаю, насколько удобна автоматическая установка. А если за отсчётный период произошёл сбой часов, скажем, на час. Потом время пользователь может устанавливать неточно, с точностью до минуты.
Мега8 уж совсем старенькая. Хотя и сейчас вполне подходит. Купил по дешёвке в ЧипДипе где-то за 60 рублей (ещё и в корпусе Dip) для макетных плат с сокетой с нулевым усилием. Удобно отлаживать элементы программы, ядро ведь одинаковое.
Уже, наверно, лет 8 выпускают новое поколение AVR, вот там есть аппаратное соединение периферии. Купил AVR32DA32. Там есть 8 каналов. Вход каждого канала можно аппаратно подключить к разной периферии – порты, таймеры, USART, SPI. В таймерах можно подключить к разным флагам – переполнения, регистра сравнения и т.д. В канал также можно подать сигнал и из программы. Выходы канала также можно подключить к разной периферии. К выходу каждого канала можно подключить несколько периферийных устройств. Можно асинхронно, это напрямую, либо синхронно через тактовый сигнал. Пока почитал описание поверхностно, детально не вникал.
AVR32DA32 любопытно)) глянул мельком даташит... обычная ардуина)) аппаратное соединение периферии это не самое главное. важнее доступность и удобность... купить где ? не во во всех магазинах есть.. а писать где ? а прошивать чем ? и т.д.
сегодня читал эту тему и по компу проверил время - мои часы отстали на 24 секунды. сделал синхронизацию. но память уже подводит, не помню, когда последний раз делал синхронизацию. на вскидку - примерно месяц назад, плюс-минус трамвайная остановка. всё собираюсь сделать запись в регистр старения, но так и не собрался.
_________________ Мудрость приходит вместе с импотенцией... Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Подключил старую плату на mega168PA на которой формировал 0,2 сек для часов Янтарь. Сейчас часы работают от tiny12. СпойлерЧастотомер на выводе "5 минут" показал Спойлер Меня такая точность устраивает.
AVR32DA32 любопытно)) глянул мельком даташит... обычная ардуина)) аппаратное соединение периферии это не самое главное. важнее доступность и удобность... купить где ? не во во всех магазинах есть.. а писать где ? а прошивать чем ? и т.д.
Купить несложно, конечно, в каждом ларьке нет, есть в ЧипДипе. У нас в городе есть его филиал, так что доставка бесплатна. Понабирал комплектацию, оплатил, где-то через неделю заехал в магазин и забрал, удобно. Где-то в интернете есть, как программировать, среда разработки должна быть. Я этим не интересовался, у меня свой программатор и ассемблер. Есть ещё интересный вариант новой тину – Attiny1616 (16 килобайт). Полно всяких современных наворотов, и цена привлекательная, в ЧипДипе – 79 руб. А старенькая и немощная ATtiny2313 стоит 270 рублей, давно пора делать выводы.
Ну если писать на современных ассемблерах да бояться прерываний, то может и сбой будет... А если грамотно делать питание и помехозащищенность, а программу писать на си - то вот таких сбоев я за свою долгую практику не наблюдала.
Ассемблер и прерывания тут не причём. У вас наверняка тепличные условия, что будет при реальных испытаниях – вопрос. Тут уже писали, а что будет с автоматической настройкой при отключении питания. Вообще-то неясно, зачем нужны сложные расчёты. Когда-то по заказу приятеля тоже делал подстройку времени. Давно было, подзабыл, но как-то так. В ЕЕПРОМЕ хранится коррекция, вначале ноль. Аппараты запускались на прогон на неделю, определялось, насколько время ушло, например, часы отстали на 4 секунды. В ЕЕПРОМЕ в коррекцию записывается число 4. Часы затем каждую неделю в ночь с воскресенья на понедельник ко времени добавляет 4 секунды, всё просто. Кстати, отключение электричества не помешает, часы пойдут, питаясь от батарейки.
AQ29, Юноша, сначала спросите, в каких условиях работают мои устройства, а потом делайте выводы про тепличность. У меня не реальные испытания, а работа изделия в лабе, уже более года. И при отключении питания ничего не будет. Часы как шли, так и будут идти. При пропадании питания запитанным будет только микроконтроллер через идеальный диод на мосфете. И, поскольку МК знает про отсутствие нормального питания, все задачи будут завершены и остановлены, будут активны только часы. А все остальное время МК будет спать. И жрать при этом единицы микроампер.
И если вам неясно, зачем нужны сложные расчеты, то отвечу. Элементарно - что б не записывать на бумажечке, когда вы там выставили точное время, что б посчитать через неделю, сколько нужно секунд прибавить или убавить, потом куда то вносить эту циферку - ваши 4 секунды, что б сохранить их в EEPROM. А просто - в удобное время подойти к изделию, "дождаться начала шестого сигнала" и нажать кнопку установки. И дальше не нужно ломать голову, а какую ж цифирку писать в еепром. 4 секнуды, три... или 5 с половиной... Кстати, как в вашем алгоритме еженедельной коррекции отрабатывается ситуация, когда число секунд дробное?
В лабе могут быть неплохие условия. При испытаниях воздействуют импульсами со стороны сети, тут может быть не очень. Основная проблема - предполагал, что с пропаданием питания МК обесточится и ваши 4 регистра потеряются. А у вас МК продолжает питаться от батареи.
В моей системе особо запоминать не надо, часы отстали на 4 сек, это число набрал на индикаторе и записал.
Вообще-то я этой методикой совсем не занимался. Я только написал программу по заказу приятеля. И всеми проблемами корректировки времени занимался он. Вначале он вроде бы пытался делать коррекцию с помощью частотомера (это быстро), который брал у меня. Да и по поводу написания программы приятель вначале обратился к преподавателю ассемблера, я в то время был совсем начинающим. Однако тот так и не сделал работающую программу – бесконечные ошибки. Знание ассемблерных команд мало, надо ещё владеть хорошей методикой написания, по поводу которой и сейчас много вопросов. Тогда приятель обратился ко мне. Потом на этапе проверки программы, наверно, месяца два приходил с замечаниями, но устранить их было легко. С этой разработкой приятель неплохо развернулся, в конечном итоге поменял 2-хкомнатную на 4-хкомнатную, умеют люди находить перспективные темы.
Насчёт дробного числа секунд. Вряд ли человек будет нажимать кнопку с точностью доли секунды, погрешность вроде как 1 секунда. У вас вроде как неполная автоматизация. Может быть, вместо ожидания шестого сигнала поставить какой-нибудь радиомодуль времени, посмотрел на Али, есть в пределах 300 рублей. Наверняка обеспечит точность миллисекунд. Не надо сидеть и ждать шестого сигнала. Потом вычесть или прибавить миллисекунды, наверняка, не проблема. Как работает модуль, ничего не знаю, никогда не занимался, это просто предположение.
AQ29, в моем случае вообще не нужно заморачиваться, что б куда то вводить нужное число секунд... И ждать ровно неделю. Это было единственным вариантом, когда часы были конечным автоматом на регистрах/счетчиках/спец.микросхемах. Там была тупая логика и по другому коррекцию было сделать сложно. Но МК - не тупая логика. Зачем перекладывать на голову юзера задачу, которую можно реализовать программно!!??? Хватит мыслить старыми шаблонами.. Это же логично, что если есть часы на МК, то они могут знать, сколько прошло времени от последней установки точного времени. Всего лишь добавить один счетчик. И потом, при очередной установке времени посчитать дельту, на сколько ушли часы и в какую сторону, да разделить ее на "аптайм". И сохранить коррекцию. И можно делать квант коррекции достаточно мелким, что бы обеспечить коррекцию на доли секунд. И такая коррекция будет работать автоматически, независимо от периода, который прошел от прошлой установкитоного времени...
AQ29 писал(а):
Вряд ли человек будет нажимать кнопку с точностью доли секунды, погрешность вроде как 1 секунда.
Да ладно... глаза смотрят на счетчик секунд эталонного времени, палец жмет кнопку установки времени в момент перехода с 59 на 00 сек. Мне кажется, 1/10 секунды точность обеспечится.
палец жмет кнопку установки времени в момент перехода с 59 на 00 сек. Мне кажется, 1/10 секунды точность обеспечится.
если Вы сможете нажимать пальцем с частотой 20 Гц - да, вероятность установки с погрешностью в 100 мс высока. Если же скорость ниже - тогда погрешность возрастает. Но это я придираюсь. По мне, так и ±10 секунд - совершенно пофиг. У меня вообще нет ни одного события, которое должно произойти в очень точное время. Через очень точные промежутки - есть, да, но дельте пофиг установка
... ±10 секунд - совершенно пофиг. У меня вообще нет ни одного события, которое должно произойти в очень точное время. Через очень точные промежутки - есть, да, но дельте пофиг установка
Кому то пофиг, кому то нет. Люблю пофигистов. Было бы пофиг всем - никто бы и не заморачивался.
сегодня читал эту тему и по компу проверил время - мои часы отстали на 24 секунды. сделал синхронизацию.
это я писал 1 числа вечером. сейчас утром проверил по компу. прошло примерно 8,5 суток, отставание примерно на 3 секунды. по расчету получается погрешность примерно 4 ppm. что явно больше, чем обещанные по документу 2 ppm.
_________________ Мудрость приходит вместе с импотенцией... Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Сейчас этот форум просматривают: GRES61 и гости: 25
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения