![]() |
![]() |
||||||||||||
Маски-шоу и вредные 8-лапки под трехкнопочным выключателем.
Автор: BOB51, cv2004a@bigmir.net Основой к написанию сего послужила тема: https://radiokot.ru/forum/viewtopic.php?f=58&t=101752 Первично теоретический набросок выключателя на основе PIC12F508 ( https://radiokot.ru/forum/download/file.php?id=179581 ) захотелось все же проверить макеткой. После некоторых раскопок ящичков со «златом» и имеющихся в наличии «кубиков» ранее изготовленных «тестилок» был сооружен данный макет схемка
фотки монтажа
При прошивке PIC12F508 с помощью winpic800 выявилась пакостная особенность (и ранее замечаемая,но не сильно уважаемая из-за редкого использования мелколапых пиков). МК спокойненько прошивается и сразу же переходит к исполнению прошитой программы. Повторное стирание и/или перепрошивка уже недоступны/некорректно выполняются. Поэтому «вычухать» интервалы для более приемлемого по скорости реакции режима чувствительности кнопок на конструкции с PIC12F508 не удалось. Имеющаяся программа (https://radiokot.ru/forum/download/file.php?id=179582 - для PIC12F508) дает как одиночные нажатия, так и одновременное удержание группы кнопок, но с некоторой задержкой при нажатии кнопки. Сие можно счесть несколько неудобным для работы, да и режима запоминания состояния для последующего «холодного старта» у этой конструкции нету (как и EEPROM в PIC12F508). После некоторой досадки по полученному ранее результату было решено поиграться с переключателем на основе той же схемы (макетки), но с применением PIC12F629 и режимом сохранения статуса текущей комбинации состояния выходных линий в качестве начального для следующего «холодного старта»... Т.е. с памятью. Для генератора тайм-маркеров был выбран Т0 (хоша как позднее выяснилось не слишком верное решение). Правила работы для кнопок — нажатие как индивидуальное, так и групповое приводит к инверсии состояния соответствующих нажатым кнопкам выходных линий. Если кнопка (группа кнопок) будут удержаны на время (неспешно посчитать про себя от1 до 6 - 10) то данная комбинация выхода будет занесена в EEPROM в качестве начального состояния при последующей подаче питания на схему. Ежли продолжать удерживать нажатие примерно 20-30 секунд и более схема переведет выходы в пассивное состояние («все отключено») согласно выбранного перед компиляцией активного уровня (active_outlevel в файле defn_key3_629.txt). При этом при последующем включении с разблокированной клавиатурой будет выдано состояние, соответствующее комбинации ЛВК при возникновении «зажатия». Дополнительно надо сначала прочитать из МК содержимое константы автокалибровки внутреннего RC генератора и поместить его в const_OSCCAL в файле defn_key3_629.txt, после чего перекомпилировать проект для заливки текущего МК. Можно конечно и вручную скорректировать значение байта в программаторе, но то кому как удобнее. После загрузки прошивки программатор ( winpic800 ) выдаст сообщение об ошибке верификации последнего байта — это нормальная ситуация ибо МК уже перешел к выполнению записанной программы (вывод сброса переключен на внутреннюю схему и программатор корректно может выполнить только «общее стирание» и то не всегда...) - теперь его можно снять с программатора и переставить в макетку (целевое устройство). Сразу после прошивки макетка при подаче питания перейдет в состояние «все выходы выключены» - далее все зависит от управления кнопками. Макет показал и отрицательную сторону устройства — при напряжении от1 до 0 вольт при процессах включения/отключения питания (медленное наростание/медленный спад) наблюдается некорректная работа системы сброса (или зависание программы ?). Система после включения перестает реагировать на кнопки до полного снижения питания до 0 и пребывания в таком состоянии порядка 15-20 секунд. При последующей подаче питания работоспособность восстанавливается. Однако было бы желательно использоват WDT для гарантированного выхода из подобных ситуаций. НО — тогда базовый генератор ТИКов надо переводить на Т1, а WDT использовать с предделителем (или Т0 с дополнительным счетным регистром при счете непосредственно частоты МК). Кому интересно — может самостоятельно поизголяться над исходником. В программе также заложена возможность смены текущей ячейки EEPROM при израсходовании ее ресурса/отказе-ошибке самой программой. Однако пока только в качестве задела по ресурсам, сам алгоритм не выполнялся.
Файлы: Все вопросы в Форум.
|
|
||||||||||||
![]() |
![]() |


![]() |
![]() |
|||
|
||||
![]() |
![]() |