Часы на Attiny 2313a

Тема в разделе "Arduino & Shields", создана пользователем Nibs, 12 сен 2015.

  1. Nibs

    Nibs Нуб

    Всем привет!
    Есть две идеи, нужна помощь в написании скетча.
    1. Имеется микруха CD4026BE (4шт), Attiny 2313a, большие 7и сегментные индикаторы (4шт), кварц еще скоро прибудет на 32768Гц.
    Задача такова, сделать счетчик дней из 4х сегментов. В CD4026BE уже есть функция переключения цифр на+1 автоматически при подаче на нее сигнала. Собирал уже на борде такое из двух сегментов через Attiny2313a все работает отлично, только внутренний генератор у Attiny2313a очень не точный на долгие задержки. Ставил чтобы он через сутки выдал сигнал, так погрешность была 15-20 минут :(
    В описании кварца написано погрешность 1 секунда в сутки. Так вот что нужно сделать, подключить кварц к Attiny2313a и заставить его выдавать сигнал раз в 24 часа и больше ничего. Желательно конечно подстройку чисел сделать кнопочкой +-1.

    2. Нашел газоразрядные индикаторы ИН-8-2 и загорелся собрать на них декоративные часики (в подарок). Имеется всё также Attiny2313a, кварц 32768Гц, Max 7219eng.
    Находил различные примеры для решения данной задачи в интернете, но они почти все написаны на ассемблере, а у меня имеется тока арудино уно в роли программатора и соответственно его среда разработки. Тот же пред делитель частоты от подключеного кварца не представляю как сделать :(
     
  2. Максим B

    Максим B Гуру

    А что за счетчик дней ??? А так схему можно - заинтриговали. У самого имеются 2313
     
  3. Nibs

    Nibs Нуб

    Обычный счетчик дней, который прибавляет +1 к значению на цифрах при подаче на него сигнала.
    Ну жен для стенда на работе, чтобы отсчитывать количество дней прошедших без травматизма :)
    http://wiki.amperka.ru/дисплеи-и-индикаторы:7-сегментный-индикатор
    Вот схема.
     
  4. DrProg

    DrProg Вечный нерд

    Довавьте в схему модуль реального времени, зачем страдания?
     
    ИгорьК нравится это.
  5. Unixon

    Unixon Оракул Модератор

    Тут недавно советовали DS3231SN+ в качестве точных часов...
     
  6. Nibs

    Nibs Нуб

    Эти модули подключаются только через ардуино, а может можно обойтись только тини и например ds3231 at24c32 iic?
     
  7. Megakoteyka

    Megakoteyka Оракул Модератор

    Попробуйте контроллер тактировать от кварца на 32768. Возможно, получится обойтись без часов.
     
  8. Nibs

    Nibs Нуб

    К сожалению по даташиту написано что он поддерживает кварцы начиная от 0.4МГц и выше (
     
  9. Megakoteyka

    Megakoteyka Оракул Модератор

    attiny2313a_speed.PNG
    Где вы 0,4 МГц увидели?
     
  10. Nibs

    Nibs Нуб

    Вот это поворот, как же я смотрел:)
     
  11. Airbus

    Airbus Радиохулиган Модератор

    Зачем так сложно?Ставьте кварц 1Мгц программируйте таймер на 1 секунду (можно даже 1 минуту) и далее считаем минуты далее часы или даже дни-это уже в тексте программы.Часовой кварц не факт что будет работать (у меня так и не заработал ни один из 5)часы реального времени-тоже вариант но зачем намеренно усложнять устройство?У 2313 и так всё есть на Борту это маленькая Мега8
     
  12. Nibs

    Nibs Нуб

    Я ставил на внутреннем кварце чтобы он выдавал сигнал раз в сутки, погрешность была минут в 15-20. Поэтому и хочу подключить внешний
     
  13. Airbus

    Airbus Радиохулиган Модератор

    "Внутреннего кварца" там нет есть RC генератор. Погрешность 5-10 сек в сутки проверено лично.Это если температура комнатная и не меняется.15-20 минут много-ищите ошибки в коде.Я писал на асме.Внешний кварц-да!Но не часовой а оптимально 1 Мгц http://tinyurl.com/ob3klbf Ниже может не запуститься выше геморой в коде при программировании таймера. но в пределах 1-8 мгц реально.А почему ретро индикаторы ИН8?Они же от 220 вольт работают?Может стукнуть
     
  14. Nibs

    Nibs Нуб

    Ретро потому что красиво, ну а на 220в почти все в квартире работает не стукнуло еще ниразу:) Насчет правильности написания кода, тут все очень просто. Писал в среде ардуиноид, прошивал тини через ардуино уно. А весь програмный когда заключался в одной команде delay "количество секунд в сутках". Т.к. я тока начал осваивать всю эту облась асемблера я не знаю, да и прошивать нечем кроме ардуино уно.
     
  15. ИгорьК

    ИгорьК Гуру

    Видел наяву. Не сразу понял суть, сначала решил что на ламповых индикаторах:
    [​IMG]
     
  16. Airbus

    Airbus Радиохулиган Модератор

    Понятно.Да Ретро это красиво у меня тоже где-то ИНки валяются может когда то что нить сделаю на них)))))
    А ошибки во времени потому что Вы используете готовые библиотеки типа Delay.h Кто их писал и что там одному Богу известно.На Асме Вы сами пишете код так как Вам надо именно Вам а не Компилятору.Можно тупо зарядить таймер и пусть он делит 1000000 колебаний в секунду на заданный Вами коэфициэнт. Можно тупо выполнять 1000000 каких нибудь действий в секунду например декременировать (вычитать) из заданного числа.И тут уж Вы сами смотрите если часы "бегут" то добавляете число операций а если отстают то наоборот.Здесь можно достигнуть очень большой точности теоретически нулевой погрешности
     
  17. Megakoteyka

    Megakoteyka Оракул Модератор

    Все это можно и на С с таким же успехом сделать, дело не в языке, а в алгоритме.
     
  18. Airbus

    Airbus Радиохулиган Модератор

    Хех!А оптимизация кода?Всё равно сделает как ему (компилятору)удобней-потом баг не выловить))))))).А в Асме фигушки!Там я могу процесс запустить как мне надо и никак иначе
     
  19. Megakoteyka

    Megakoteyka Оракул Модератор

    Если оптимизатор работает правильно, то никаких багов не будет. И его всегда можно отключить. Реальная необходимость писать на ассемблере возникает крайне редко.
     
  20. DrProg

    DrProg Вечный нерд

    Зато необходимость упомянуть об его использовании возникает крайне часто.

    Я писал на асме еще под советские РК-86, потом под первые Intel до 286, знаю, что код действительно эффективен. Но трудозатраты по написанию одного и того же кода на асме и с++ несопоставимы на более-менее объемной программе. Что дороже машинное время или ваше собственное? В большинстве случаев разница не заметна не только на глаз, но и на самом деле. С++ это не Бейсик.
     
    ИгорьК нравится это.