Предыдущая Следующая

// МЕММАР = 2; //Переотобразить векторы прерываний в SRAM

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

33.2. Интерфейс ввода/вывода в целевой пользовательской системе

33.2.1. Интерфейс кнопок управления

В качестве внешних устройств ввода в описываемых ниже проектах на базе LPC2000, будут использоваться кнопки. Предлагаемый интерфейс кнопок обеспечивает программное подавление «дребезга контактов». Никаких дополнительных внешних элементов, подключаемых к микроконтроллеру, при этом не требуется.

Блок-схема алгоритма интерфейса обслуживания одной кнопки изображена на Рис. 33.2. Программная реализация этого алгоритма на С представляет собой отдельную функцию, которая отслеживает моменты нажатия и отпуска-

//в случае выполнения кода в SRAM

ния опрашиваемой кнопки, производя при этом фильтрацию импульсов «дребезга» ее механических контактов.

Для построения функции программного интерфейса одной кнопки, разработчику требуются выделить следующие ресурсы микроконтроллера: статическую переменную, используемую для подсчета тайм-аута подавления «дребезга», еще две статические переменные, используемые для индикации момента нажатия на кнопку (флаг «нажато») и длительности удержания кнопки (флаг «удерживается»). При этом переменная флага «нажато» должна быть описана в программе, как доступная для других модулей, поскольку она в них также модифицируется. Кроме того, функция использует некоторую константу, задающую значение порога тайм-аута подавления «дребезга».

Чтобы кнопочный интерфейс работал корректно, необходимо сбрасывать флаги «нажато» и-«удерживается» всех опрашиваемых кнопок при первоначальной инициализации. Как можно видеть из блок-схемы, при каждом вызове функции, при условии, что опрашиваемая кнопка не нажата, переменная подсчета тайм-аута и флаг «удерживается» будут обнуляться, т. е. будет происходить постоянная установка цифрового программного фильтра «дребезга» в начальное состояние. Вызовы функции в программе должны производиться с некоторой периодичностью. Когда кнопка нажата, значение переменной подсчета

тайм-аута будет инкрементироваться при каждом вызове функции. Причем, реально увеличиваться оно станет только после окончания «дребезга», когда переменная перестанет обнуляться из-за пауз между «дребезговыми» импульсами. Только спустя некоторое время после окончания импульсов «дребезга», наступит момент, когда значение переменной подсчета тайм-аута превысит значение константы порога тайм-аута и, следовательно, произойдет установка флагов «нажато» и «удерживается» для опрашиваемой кнопки.


Предыдущая Следующая



НА ГЛАВНУЮ | ЧТО ТАКОЕ PIC ? | ПРОГРАММАТОР | ПРОЕКТЫ | СТАТЬИ | ССЫЛКИ | КАРТА САЙТА
Hosted by uCoz