My Nixie Clock IN-12 / Мои часы на ГРИ ИН-12 Решил пустить в дело накопленное добро. 2019.01.18 --- 2019.01.30 Первая версия, годная для проверки железа - чтение из RTC и отображение минут и секунд, раз в секунду переключение точки. Без кнопок. Чтение из RTC сделано без малейших проверок, в случае проблем вместо времени будет мусор. --- 2019.05.27 Опять застой. Платы собраны и работают. Забыл сделать запитку для ионисторов - пришло паять навесом. Были нюансы с анодным питанием - нужен конденсатор на вывод обратной связи MC. Был писк дросслей - почти избавился. !!! не забыть исправить схему и плату. Конденсаторы на кнопках - не дают работать SPI для прошивки. Само расположение кнопок - неудачное. Они должны "смотреть" назад, а получилось, что вверх. Нужно или переставтиь на заднюю часть платы - для уменьшения проблем с корпусировкой, или ставить другие - чтобы толкатели выходили на заднюю стенку. Как вариант - убрать кнопки совсем, настраивать через ком-порт. Обработчик кнопок взял из "Старт 7231", который туда тоже взял из прошлого проекта. --- 2019.05.28 Кнопка1 - "выбор", 2 - "+", 3 - "-". Пока не придумаю, как лучше сделать мигание разрядами... --- 2019.05.29 При нажатии на кнопки "1"/"2" должно переключать отображение. --- 2019.05.30 Вчера ничего не заработало. Сегодня вспомнил, что атмел с памятью работает слегка по другому. Упростил таблицу состояний, переписал обработчик - по идее должно работать. --- 2019.05.31 Вчера всё получилось. Начинаю внедрять настройку часов. --- 2019.06.01 Всё отлично. Есть один-два несущественных момента. Первый релиз. --- 2019.06.03 Продолжаем. Пониженная яркость с 22:00 до 06:00. Переход на зимнее/летенее время. Есть нюанс - если запускать прошивку в зимнее время - будет работать неправильно. Доделывать лень - и так норм. --- 2019.06.05 Пока сделал всё, что хотел. Регулировку яркости от освещения вообще не хочу делать. Вообще планирую в версии для себя выкинуть эту регулировку - мне она кажется лишней. Разве что ночью часы буду стоят возле головы и направлены в лицо. Сделал эту фичу отключаемой через дефайн в мейкфайле - 234 байта. Хочу подключить DHT-22, использую ногу захвата 1-го таймера, на прерываниях. Повторим алогритм: запускаем измерения подтяжкой вывода к земле минимум на 800 мкс, через 20-200 мкс датчик должен выдать 80 мкс "0" и 80 мкс "1", после чего идут 40 бит данных. Каждый бит - 50 мкс "0", потом 26/70 мкс "1" для лог 0/1. Аналазитором заметил, что в начале каждого байта "0" не 50 мкс а почти 70. В мануале упоминаний не нашёл. Тайминги, естественно +/- плавают. При самых длинных таймингах вся операция должна занятьт 5570 мкс + время запуска. Т.е. таймер можно настроить на счёт до 6 мс, и в прерывании по переполнению признавать факт таймаута. Тактовая - 16МГц, предделители есть 8 и 64, так-как я предпочитаю меньшие числа - ставим 64(8), и считаем по 4(0.5) мкс. Итого мы ждём такие интервалы: - ответ на запрос через 5-50 тиков (40-400) - преамбула 18-22 тика (150-170) - 40 штук "0" - 12-14(96-110) + "1" - 5-8(44-60)/17-19(136-150) тиков == 17-22/29-33 (140-170/232-260) - таймаут - 1500(12000) тиков. Для тестов думаю поднять USART, делать опрос датчика, полученную инфу складывать в массив, показывать в терминал и переходить на следующий круг. Для начала будем считать период (по переходу из "1" в "0"), массив на 42 байта. Потом попробую считать только длительность 40-ка "1" данных и сразу записывать их в байты. Что-то сделал. Скорость ком-порта 19200. +556 байт. --- 2019.06.06 Похоже, что DHT22 на прерываниях не светит. Такое впечатление, что постоянно срабатывает прерывание Capture, и соответсвенно получается полная херь. Хотя в режиме поллинга - всё нормально. Но при поллинге нужно блокировать прерывания - а процесс опроса занимает порядка 4 мсек, а это время обновления одного индикатора, хотя на гляз и не заметно. Можно пробовать синхронизировать эти события - запускать опрос сразу после обновления одного из индикаторов. --- 2019.06.07 В целом - работает. Единственное - не сходится контрольная сумма, ни разу - явно что-то не так делал. Работает без запрета прерываний. Частоту обновления поставил 400 Гц - на 250 дрожат цифры. Нужно пересчитать значения яркости для новой частоты. 10 уровней явно не получится. Облагородил, причесал, настроил оптимизации. Нужно всё проверить, новых идей больше нет. Поисправлял. Появилась мысль - отображать температуру/влажность по нажатию кнопок +/-. А по таймеру можно показывать только ночью :-)