Аппаратные хитрости использования PIC-контроллеров


Дежурный режим - часть 2


При нажатии любой кнопки конденсатор быстро разряжается через резистор R2 или R3, что приводит к подаче сигнала «сброс». При сбросе выходы переходят в высокоимпедансное состояние, и разряд конденсатора через R2 (R3) прекращается. Время разряда должно быть больше требуемого для сброса контроллера (около 18 мс), но меньше минимальной длительности нажатия на кнопку (примерно 50-100мс). После снятия сигнала «сброс» (заряде конденсатора через R1) контроллер начинает выполнение программы. При этом на выходы RB2 и RB3 «0», на короткое (около 10 мкс) время, за которое конденсатор не успевает разрядиться, а с входов RB0 и RB1 считывается состояние кнопок. Аналогично можно подключить матрицу клавиатуры, рис. 2.

~images\pic-rx-2.gif

Новые PIC-контроллеры имеют возможность генерировать прерывание, выводящее из спящего режима при изменении состояния определенных входов, обычно RB4-RB7. При этом возможно как применение нескольких кнопок, так и матрицы клавиатуры (рис.3). Выводы RB4-RB7 запрограммированы на ввод, с включенными внутренними подтягивающими резисторами. Перед входом в режим sleep включается генерация прерываний по изменению состояния (в случае матрицы - выходы RB0-RB3 устанавливаются в «0»).

~images\pic-rx-3.gif

При нажатии любой кнопки вызывается прерывание, выводящее контроллер из режима sleep, после чего он может приступить к процедурам подавления дребезга контактов, определения нажатой кнопки (сканирования матрицы) и выполнению соответствующих нажатой кнопке действий.

Работа «прерывания по изменению» имеет свои некоторые особенности, в связи с которыми его следует применять только для выхода из спящего режима, а при нормальной работе оно должно быть выключено во избежание ложных срабатываний.




- Начало -  - Назад -  - Вперед -



Книжный магазин