Ждем,с!
Novice user, а так не понравится?
После выбора и установки нужного времени при нажатии кнопки пуск/стоп происходит запись значений в ЕЕПРОМ и начало отсчета.
При повторном включении устанавливается значения из ЕЕПРОМ.
Так и сделано вообщето-при любой установке часов либо минут еепром обновляется при выходе из устанавок обратно в паузу,при любом включении (хоть первом,хоть втором-пятом-сотом-100500-ым устанавливается время из еепром)
Давайте сначала соберите,а потом все поправлю
Последний раз редактировалось Novice user Сб фев 20, 2021 17:17:46, всего редактировалось 1 раз.
Добавлено after 1 hour 39 minutes 5 seconds:
Novice user, вот, нарисовал схему в Сплане, по ней буду разводить плату. Желательно проверить, так или нет.
{ вмешиваться в индикацию для опроса кнопок как-то не комильфо. мне такое не нравится.}
Обычная практика для малоногих МК. У меня Часы по такому принципу работают без нареканий уже который год. У меги 8 когтей побольше, можно и не извращаться так.
ВОВ, 6 каналов, 3 индикатора + 1 на индикацию номера таймера. 999 секунд (16 минут). В ЛЮБОЕ время можно кнопом энтер посмотреть установленное время таймера, номер которого показывает индикатор, кнопами +/- перейти к следующему таймеру. Также в ЛЮБОЕ время можно изменить установку таймеров. На запущенном счёте возможна при этом сработка/ сброс выходов. В режиме настройки про длительном удержании +/- ускорение набора. При выходе из настроек запись в еепром. При каждом пуске чтение. Если досчитает до 999 - стоп, повторный пуск только отпустив и опять нажав пуск.
Как такой алгоритм?
Ещё нет ни платы ни схемы.
Кстати, как думаете,( у меня ПУСК это подача 110ВАС), для получения сигнала пуск можно использовать зарядку от мобилы? Она сделает из 110 В ас 5 вольт? Или как решить это и не йыбацца , реле?
Допустим...
Тикает штуки три таймера и одновременно копаемся в четвертом...
И тут сработка ... для простоты всего одного из тикающих... (какого именно - Х/З ибо персонального индикатора нету, а главный занят текущей задачей).
А канал надо немедленно отключить, без "перебора режимов"... да еще осмотреть чего там сделать на объекте надо (это в случае процедурных - послать туда медсестру).
Простыми 4-мя кнопами тут не отделаться.
Насчет силового ключа "на длинной проволочке" - древнее решение https://img.radiokot.ru/files/20529/tt9lug6me.JPG
Время у меня тикает вперёд. Просто с каждой секундой сравниваю текущее время с установками всех таймеров. Время одно единственное для всех таймеров. Я, конечно, могу запретить установку при счёте, но меня так устраивает. А про какой ключ Вы говорили?
dgrett писал(а):Обычная практика для малоногих МК. У меня Часы по такому принципу работают без нареканий уже который год.
я же говорю, работать будет.
у меня динамическая индикация по 2 мс. для опроса кнопок это как-то слишком часто.
но можно сделать счетчик, через сколько прерываний опрашивать кнопки.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Дополнительная опция для всякотаймеров технологических (фото/кухонных/самогонных)...
автоматическая перезапись уставки по реально отработанному интервалу при ручной остановке раньше заданного времени.
digits: 'разбиваем часы и минуты на десятки и единицы
Freq_num(5) =hour/10
Freq_num(4) =hour mod 10
Freq_num(3) =mine/10
Freq_num(2) =mine mod 10
return
Pulse: 'обработка прерывания таймера0,каждые 4 миллисек
Portd.3 =1 'гасим все сегменты,на все катоды подаем лог 1
Portd.4 =1
Portd.5 =1
Portd.6 =1
Portb=0 'на все аноды лог 0
button=dis 'в переменную номера нажатой кнопки записываем номер разряда,который отображается в данный момент
Select Case Dis 'подаем 0 на катод нужного разряда
Case 5
Portd.6 =0
Case 4
Portd.5 = 0
Case 3
Portd.4 = 0
Case 2
Portd.3 =0
End Select
if pind.2=1 then button=0 'опрашиваем порт D2,если там лог 0 то кнопка нажата,ее номер сохранен выше(button=dis),если там 1 то не нажата и сбрасываем номер нажатой кнопки
Portb = Lookup(freq_num(dis) , Dig) 'подаем питание на нужные аноды
Decr Dis 'меняем номер разряда на следующий
If Dis = 1 Then Dis = 5
Return
Dig: таблица знакогенератора '
Data &B11010111
Data &B00010100
Data &B11001101
Data &B01011101
Data &B00011110
Data &B01011011
Data &B11011011
Data &B00010101
Data &B11011111
Data &B01011111
Data &B00001000 '10=прочерк
Data &B00000000 '11=пробел
Добавлено after 1 minute 50 seconds:
То есть не опрос кнопок,а опрос только общей линии кнопок,давно применяю такое
у меня динамическая индикация 2,5 мс. Если в данный момент включен первый разряд, то есть каждое 4е прерывание опрашивается клавиатура. 10 мс. Тут же и счётчик до 100 - имеем 1 секунду.
[uquote="НСТ",url="/forum/viewtopic.php?p=3984149#p3984149"]вот, нарисовал схему в Сплане, по ней буду разводить плату. Желательно проверить, так или нет.[/uquote]
Да,все правильно,а можно название ваших индикаторов,я сам буду переразводить под FYQ-5641
Добавлено after 1 minute: dgrett, У меня таймер1 свободен и счет секунд там