Читаем Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С полностью

Существует несколько методов программной защиты от эффекта дребезга механических контактов. Мы кратко остановимся на двух наиболее часто используемых:

• Прикладная программа проводит мониторинг состояния контакта, опрашивая линию порта и контролируя уровень логического сигнала. Как только программа зафиксировала изменение сигнала, она фиксирует это изменение и формирует задержку 100…200 мс. За это время дребезг закончится, и контакт зафиксируется в установившемся состоянии. Если это новое состояние совпадет с первым зафиксированным изменением, то произошло переключение контакта. В противном случае имела место помеха.

• Прикладная программа также производит мониторинг контакта. После обнаружения первого переключения программа продолжает постоянно опрашивать контакт в течение тех же 100…200 мс. Если к концу интервала опроса состояние не стабилизировалось и постоянно считывается то 0 то 1, то это помехи, а если установилось в одном из состояний, то произошло переключение.

а) При нажатии клавиши на выходе формируется высокий логический уровень

б) При нажатии клавиши на выходе формируется низкий логический уровень

Рис. 5.10. Примеры схем подавления механического дребезга контактов 

5.5.3. Пример программной защиты

Для того чтобы продемонстрировать пример реального программного кода для ввода и вывода дискретных управляющих воздействий, предположим, что восемь DIP переключателей подключены к порту PORTB микроконтроллера, а состояние выходов порта PORTC индицируются с использованием схемы двухцветного индикатора. Общая структура микропроцессорной системы нашего примера представлена на рис. 5.11. В примере мы используем аппаратную защиту и программную защиту от дребезга контактов. Программная защита реализуется по второму способу.

Рис. 5.11. Функциональная схема аппаратных средств для примера 5.3.3


/*----------------------------------------------------------------------*/

/*filename: debounced_swith.c                                           */

/*осуществляет опрос 8 переключателей с программной защитой от дребезга */

/*выполняет специальные действия для каждого нажатого переключателя     */

/*зажигает зеленый светодиод в разряде активизированного переключателя  */

/*----------------------------------------------------------------------*/

/*подключаемые файлы*/

#include <912b32.h>


/*используемые функции*/

int process_valid_input(unsigned char input_value); //управление

                                                    //процессом опроса в реальном времени

void initialize_ports(void); //инициализация портов

void timer_init(void); //инициализация таймера


//глобальные переменные

int keep_going=1; //переменная цикла

unsigned char old_PORTB= 0xff; //предыдущее значение порта PORTB

unsigned char new_PORTB; //новое значение порта PORTB


void main{void) {

 initialize_ports();

 timer_init();

 while(keep_going) {

  new_PORTB=PORTB; //читать порт PORTB

  if (new_PORTB != old_PORTB) {

   //выполнять, если значение порта изменилось

   swith(new_PORTB) {

   case 0xFE: //переключатель PB0

    if (process_valid_input(new_PORTB)) //процедура

                                        //антидребезга

    { //выполнять действия, связанные

     : //с нажатием клавиши PB0

     :

     PORTC = 0х01;//зажечь зеленый в разряде PB0

     keep_going = 1;

    }

    break;

   case 0xFD: // переключатель PB01

    if (process_valid_input(new_PORTB)) // процедура

                                        // антидребезга

    { //выполнять действия, связанные

     : //с нажатием клавиши PB1

     PORTC = 0х02; //зажечь зеленый в разряде PB1

     keep_going = 1;

    }

    break;

   case 0x7F: // переключатель PB7

Перейти на страницу:

Похожие книги

C# 4.0: полное руководство
C# 4.0: полное руководство

В этом полном руководстве по C# 4.0 - языку программирования, разработанному специально для среды .NET, - детально рассмотрены все основные средства языка: типы данных, операторы, управляющие операторы, классы, интерфейсы, методы, делегаты, индексаторы, события, указатели, обобщения, коллекции, основные библиотеки классов, средства многопоточного программирования и директивы препроцессора. Подробно описаны новые возможности C#, в том числе PLINQ, библиотека TPL, динамический тип данных, а также именованные и необязательные аргументы. Это справочное пособие снабжено массой полезных советов авторитетного автора и сотнями примеров программ с комментариями, благодаря которым они становятся понятными любому читателю независимо от уровня его подготовки. Книга рассчитана на широкий круг читателей, интересующихся программированием на C#.Введите сюда краткую аннотацию

Герберт Шилдт

Программирование, программы, базы данных
Разработка приложений в среде Linux. Второе издание
Разработка приложений в среде Linux. Второе издание

Книга известных профессионалов в области разработки коммерческих приложений в Linux представляет СЃРѕР±РѕР№ отличный справочник для широкого круга программистов в Linux, а также тех разработчиков на языке С, которые перешли в среду Linux из РґСЂСѓРіРёС… операционных систем. РџРѕРґСЂРѕР±но рассматриваются концепции, лежащие в основе процесса создания системных приложений, а также разнообразные доступные инструменты и библиотеки. Среди рассматриваемых в книге вопросов можно выделить анализ особенностей применения лицензий GNU, использование СЃРІРѕР±одно распространяемых компиляторов и библиотек, системное программирование для Linux, а также написание и отладка собственных переносимых библиотек. Р

Майкл К. Джонсон , Эрик В. Троан

Программирование, программы, базы данных