|
Для обнуления накопленных значений надо ввести пароль, как время таймера.
Предустановлен пароль 11:11.
Время таймера вводится таким образом:
После включения или сброса в 00:00 нажимается кнопка 3 (Shift), начинает мигать первый разряд. Кнопкой СС (2) изменяем значение разряда по кругу 0-9. Кнопкой 3 (Shift) выбираем другой разряд. Выход из режима ввода - кнопка Старт/Стоп (1)
Если был набран пароль как время таймера, то, не запуская таймер на счет, вызвать сумму минут 0000:00 кнопкой СС (2) затем сумму стартов 0000 СС (2) и удерживая Shift (3) нажать СС (2) - произойдёт обнуление накопленных значений.
В это время можно , если необходимо, сменить пароль.
Для этого, не выключая! и не запуская! таймер, сразу набрать новый пароль и выполнить стирание накопленных сумм (они уже 0 после предыдущего стирания) кнопка 2 кнопка 2 удерживая 3 нажать 2. Новый пароль записан.
Есть идея соединить несколько таких таймеров в "сеть" с управлением от главного устройства или компьютера...
Описание схемы
Таймер сделан на базе микроконтроллера AT90S2313, работающего на частоте кварца 4МГц.В принципе, может быть перенесена на более старшие модели, имеющие полный порт B и D,но AT90S2313 минимально-оптимален. У младшей модели AT90S1200 нет ОЗУ, а у старших много ресурсов будет неиспользовано.
Тактовая частота 4Мгц удобна для строчной развёртки 4000000/256=15625 Гц. Процессор примерно 50% времени формирует видеосигнал, остальное время выполняет основную программу.
Сигал Video формируется на 7 бите порта B и не может быть перенесён на другие биты.
Более того – весь порт B задействован в формировании видео таким образом:
В регистре r1 – горизонтальный байт изображения
out PORTB,r1
add r1,r1
out PORTB,r1
add r1,r1
out PORTB,r1
add r1,r1
out PORTB,r1
add r1,r1
out PORTB,r1
add r1,r1
out PORTB,r1
add r1,r1
out PORTB,r1
add r1,r1
out PORTB,r1
add r1,r1
такой неоптимальный метод позволяет иметь на 7 бите порта В новый бит каждые два такта тактовой частоты out [1 такт] + add [1 такт].
Сигнал синхронизации выводится через порт D, здесь можно использовать любой бит.
Нерационально, когда 7 выводов (PB0-PB6) пропадают.
Их удалось задействовать для опроса клавиатуры таким образом:
порт В инициализируется
ldi r16, 0B10001111 ; port B 7 bit на вывод Видео, 6,5,4 ввод клавиатура
out DDRB, Areg
формирование видео идёт по прерыванию с F=15625,
когда заканчивается полный кадр, т. е. 1/50 секунды выполняем опрос клавиатуры
ldi r16,0B01111111 ; устанавливаем биты
out PORTB,r16
in r16,PINB
andi r16,0B01111111 ; маска на клавиатуру
cpi r16,0B01111111
breq NoKey ; нет нажатых клавиш
dec KeyRep ; считаем удержание клавиши
brne NoKey ; ещё не 0
mov ScanKey,r16 ; сохраняем скан-код
ldi r16,MinKeyRep ; загружаем значение числа циклов
mov KeyRep,Tmp1 ; удержания кнопки в 1/50 сек.
NoKey:
Получаем в переменной ScanKey код нажатой кнопки без дребезга.
Основная программа анализирует уже эту переменную.
Номиналы резисторов R1,R2,R3 в смесителе видео и синхро могут отличаться.
От их значений зависит яркость и устойчивость синхронизации изображения. Это также зависит и от напряжения питания. При работе от батареек, изображение может быть немного темнее.
Коммутация видео и аудио сигнала выполнена на обычном аналоговом коммутаторе типа К561КТ3.
В корпусе четыре ключа, управляемых независимо. Для предотвращения подачи сразу двух сигналов в момен переключения, программная коммутация работает так - при любом переключении сначала всё выключается, а потом включается требуемый сигнал.
Когда таймер запущен, т.е. включено внешнее видео, на 19 выводе прекращается формирование видео и на 8 синхро. Это делается переключением выводов на ВХОД. При работе без 561КТ3 на экране ТВ будет заметно изображение, так как слабый сигнал всёравно проходит.
В схему заложен Audio сигнал от таймера - "пикать" кнопками, извещать об истёкшем времени и др. Пока звук не реализован, но канал Audio коммутируется вместе с Video
и может быть использован как отдельный канал для коммутации другого аналогового сигнала.
Для этого не подключать 9 вывод AT90S2313 на 11 вывод 561КТ3, а подать на 11 и 8
входы КТ3 два сигнала, которые будут переключаться.
Если немного изменить схему (и программу соответственно) и управлять отдельно
каждым ключём (выводов хватает), можно получить таймер с коммутацией до 4-х независимых
аналоговых каналов.
Во время прошивки Flash и EEPROM не надо проверять (Verify) EEPROM, всегда будет выдавться сообщение об ошибке. Это происходит из за того, что микроконтроллер успевает отреагировать на сигнал Reset между командами и отработать часть программы, посчитать несколько счётчиков в EEPROM. Поэтому и ошибка при сравнеии.
Вопросы ? Пишите
|