Свежие обсуждения
Микроконтроллеры

Ликбез по программированию PIC , vol. # 2

1 5 17

Сергей К: почему бы не просто поочередно выдавать по линии с1, с2, с3 логическую "1" и считывать, на каких r1, r2, r3, r4 она появилась?
А что будет на r1-r4 при отпущенных кнопках тогда? Подтягивать-то всё равно надо. Ни лог.0, ни лог.1 сами по себе там не появятся. Если вход ни к чему не подключен - это совсем не значит, что на нем лог.0 ! И если сделать так - придется,видимо, внешние резисторы ставить для подтяжки к "общему". Зачем зря усложнять? В случае "бегущего нуля" всё просто.

 

chav1961: а потом нажать две кнопки и выжечь пару линий порта
Теперь понял, в чем загвоздка с моим вариантом.

picmaniac: А что будет на r1-r4 при отпущенных кнопках тогда? Подтягивать-то всё равно надо
Да, правильно. Там будут наводки плавать.

Спасибо, теперь все стало ясно.

 

Какие из возможных положений кнопок нас в данном случае будут интересовать:
1. Ни одна кнопка не нажата.
2. Нажата только одна из цифровых кнопок (0-9).
3. Нажата более чем одна цифровая кнопка.
4. Нажата только кнопка *
5. Нажата кнопка * и одна из цифровых кнопок.
6. Нажата кнопка * и более чем одна из цифровых кнопок.
7. Нажата только кнопка #
8. Нажата кнопка # и одна из цифровых кнопок.
9. Нажата кнопка # и более чем одна из цифровых кнопок.
10.Нажаты кнопки * и # (цифровые кнопки при этом не нажаты).
11.Нажаты кнопки * и # и одна из цифровых кнопок.
12.Нажаты кнопки * и # и более чем одна из цифровых кнопок.

Вроде ничего не пропустил? Каждому из этих положений должна соответствовать определенная информация (например, байт), выдаваемая подпрограммой опроса клавиатуры.

 

Тема похоже "закрылась" – уже 20 дней все молчат
Решил "поделиться" своим видением кодового замка – начал разработку в конце февраля. Этот "монстр" приложен. Естественно желания его спаять не возникает
По монстру:
на 16 перемычках планировал установку кода 0-65535,
на 12 оставшихся различные настройки работы (кстати их не хватало);
куча защитных диодов – предполагалось расстояние МК-клавиатура от 0 до 8 метров
(это должны были быть 2 замка:
на гараж с сигнализацией с GSM
и в дачный домик (1 клавиатура 2 замка))
в качестве устройств индикации работы – отключаемые пищалка и светодиод
На тему набрел два дня назад – заинтересовался контроллерами с внутренним ПЗУ – так проще, чем на перемычках (с внешней ПЗУ пока не работал). Пока остановился на PIC16F628A. Он уже есть, а заказанного месяц назад программатора ещё нет
+ как выяснил, такое поле клавиш/перемычек и не заработало бы (без модификации) из-за огромного количества "фантомов" – проблему можно решить таким же количеством диодов – схему клавиатуры 4*3 без фантомов нарисую чуть позже
можно будет опробовать и работу с ЖКИ – для начала воспользуюсь тем, что появиться вместе с MPLAB-ICD2, а пока занимаюсь изучением нового МК
кстати, по реализации первого учебного проекта (тема 2108) я бы пошел другим путем – цикл: опрос клавиатуры и проверка 6 условий (нажато 0, нажато больше одной, ...), по выполнению условий включение соответствующего количества диодов; т. е. алгоритм без единого устойчивого состояния (граф нарисовать не возможно, на мой взгляд)

 

Alex73: Пока остановился на PIC16F628A.
А тогда причём тут процессор Zilog в приведённой вами схеме?
Alex73: нажато больше одной, ...
подразумевалось, что код набирается по одной цифре, а если "больше одной", то с этим надо как-то бороться!

 

Левон: А тогда причём тут процессор Zilog
это единственный МК, с которым на текущий момент я умею работать
его минусы - нет ПЗУ (в ОЗУ все настройки будут храниться до первого reset'а
(поэтому пришлось изобретать пять байт на перемычках)
- однократно программируемый (невозможно обновление прошивки)
вот и стал искать, на что бы перейти - остановился на названном PIC
в общем то особых изменений в схеме не предвидится, только выкину лишние перемычки и уберу лишнюю микросхему - количество занятых ножек будет тем-же, но можно будет отказаться от постоянного опроса клавиатуры и использовать sleep (батарейки проживут дольше
Левон: подразумевалось, что код набирается по одной цифре, а если "больше одной", то с этим надо как-то бороться!
не обязательно - возмем к примеру компьютерную клавиатуру - если нажимается без отпускания несколько клавиш, то в компьютер передаются все в той последовательности, в которой они были нажаты (пока их количество не превысит возможности клавиатуры, т. е. 2-3

 

Левон, извиняюсь, на второй вопрос ответил не в тему - утро, не проснулся еще
по поводу первого учебного проекта - там в ТЗ было сказано "если нажато более одной то потушить светодиоды", так что бороться с этим не надо; а проверку количества нажатых можно сделать, просуммировав их

 

обещал схему клавиатуры без "фантомных клавиш" - прилагается
выводы RB0-RB3 - выходы, на которых поочередно выставляется 0
выводы RB4-RB6 - входы с включенными внутренними резисторами
МК при опросе вычислит все нажатые клавиши (и все не нажатые)
(кроме того при любом количестве нажатых клавиш выводы порта не сгорят)
если по изменению уровня на RB4-RB6 возможно прерывание (пока этого не знаю, русскоязычное описание скачал лишь вчера ), то можно перевести МК в спящий режим, предварительно поставив на RB0-RB4 нули, в результате выход по прерыванию по любой нажатой клавише
жду критики
ну и если есть ошибки или что то не учел, буду рад об этом узнать

 

Alex73: жду критики
Вам не кажется, что диодов (по одному на каждую кнопку) слишком много? Не лучше ли как в схеме, предложенной picmaniaс-ом? Их там у него - 4! А по мне, лучше бы их вообще не было. Лучше программно исключить ситуацию одновременного нажатия кнопок - больше одной! И наоборот, ввести время задержки для гарантированного ввода кода, что одновременно будет служить и защитой от дребезга.
Эх, освоить бы мне программирование...

 

Левон: ...диодов (по одному на каждую кнопку) слишком много? ...в схеме, предложенной picmaniaс-ом... - 4! ...лучше бы их вообще не было. ...программно исключить ситуацию одновременного нажатия кнопок...

Когда то делал "Модуль управления кодовым замком" (П.Редькин, Радио №8, 2000г., стр.30), так там диодов нет. Всё программным путём реализовано. Мне понравилось...
Не понравилось только то, что код 7-и значный.
По этому (Num Lock-а прошу не читать... ) хекс-код (больше ни чего не было) авторской прошивки был дизассемблирован, проставлены метки, изучен и исправлен так как мне нужно было - количество цифр кода (от одной до семи) вводится при установке кода, добавлены кое какие звуки и ещё что то... уже не вспомню без поднятия "исходников"...

Мне трудно судить, на сколько оригинальным было авторское решение работы с клавиатурой, в качестве которой используется телефонная тестатура (это было моё первое знакомство с PIC-ами), но мне этот вариант очень понравился!