РадиоКот :: Маски-шоу и вредные 8-лапки под трехкнопочным выключателем.
Например TDA7294

РадиоКот >Схемы >Цифровые устройства >Защита и контроль >

Теги статьи: Добавить тег

Маски-шоу и вредные 8-лапки под трехкнопочным выключателем.

Автор: BOB51, cv2004a@bigmir.net
Опубликовано 03.12.2014
Создано при помощи КотоРед.

Основой к написанию сего послужила тема:

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 при израсходовании ее ресурса/отказе-ошибке самой программой. Однако пока только в качестве задела по ресурсам, сам алгоритм не выполнялся.


Файлы:
схемка макета
архив проекта mplab 8.92


Все вопросы в Форум.




Как вам эта статья?

Заработало ли это устройство у вас?

3 14 16