Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Ь IV. Примеры конкретных применений
тового бита, модуль CCR1 осуществляет захват содержимого TAR и запрашивает прерывание TA1JSR. Состояние TAR захватывается аппаратно, вызова подпрограмм обработки прерывания при этом не требуется. После захвата CCR1 программно сохраняется в регистре IRLength. После первого спадающего фронта осуществляется изменение фронта захвата CCR1 на нарастающий фронт, что позволит отследить конец стартового бита. Длительность информационного бита вычисляется путем вычитания из содержимого регистра TAR, сохраненного в регистре CCR1, предыдущего значения IRLength. Если полученная длительность не лежит в пределах от 2.3 мс до 2.5 мс, то программа принимает решение о ложном захвате стартового бита. Правильный стартовый бит должен иметь длительность 2.4 мс. В подпрограмме обработки прерывания TA1JSR IRBit используется для считывания в обратном порядке 12 информационных бит в том виде, в котором они получены. Каждый информационный бит рассчитывается путем сравнения его длительности с константой IR_Mid. Константа IR_Mid соответствует длительности 1500 мкс, которая является средним значением между длительностями бита информационной единицы и информационного нуля. Если длительность принятого бита больше IR_Mid, то принимается решение о том, что принята единица, а если меньше -то ноль. Аппаратная защелка модуля Timer_A3 гарантирует, что подпрограмма обработки прерывания считает правильное значение временного интервала. Программа не считывает непосредственно содержимое регистра модуля Timer_A3, а считывает захваченное в CCR1 значение таймера. Также для временного хранения содержимого CCR1 используется программный стек.
IR_ST_Test push.w &CCR1
sub.w IRlength,0(SP)
IR_Bit cmp.w #IR_Mid,0(SP)
IR Shift rrc.w IRData
Сохранение
содержимого
CCR1 в стеке
Последний
захваченный
временной
интервал
С=1 если
IR_RXed бит=1
Carry — > IRData
Аппаратная защелка CCR1 модуля таймера Timer_A3 позволяет одновременно с ИК декодером выполняться другим программам обработки событий в реальном времени. Подпрограмма ИК декодера выполняется в фоновом режиме. После проверки приема каждого бита данные помещаются в регистр IRData.
Дата публикования: 2014-11-18; Прочитано: 432 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!