Глава 7.
IrDA SIR кодер-декодер на MSP430C112
- t|rDA Pulse
Рис. З. Использование таймера Timer_A при RS232/lrDA преобразовании
Линейный драйвер RS232 интерфейса (HIN232) производит инвертирование потока данных, формирование логических уровней сигнала и подачу его на линию Р2.5. Высокий уровень на линии Р2.5 представляет собой логический 0 и наоборот. Согласно IrDA стандарту логический 0 на линии RS232 представляется ИК импульсом. Это означает, что нарастающий фронт на линии Р2.5 должен запустить таймер Timer_A, а спадающий - остановить его. Это обеспечивается установкой бита разрешения прерывания для линии Р2.5.
Каждое изменение состояния на линии RS232 вызывает прерывание, и MSP430 начинает выполнять подпрограмму обработки прерывания (interrupt service routine - ISR): Текст программы вверху 11 стр. описания
; Подпрограмма обработки прерывания передатчика ; TRANSMITTER RS232 (Р2.5) -» IrDA (P2.4)
*****************************************************
г
ТХ_01 BIS #04h,&TACTL ; 5
циклов
XOR R14, &TACTL /запуск/остановка
/таймера Timer A
;(режим передачи/
/приема) 4 цикла
XOR.B R13,&P2IES /изменение фронта
/выбора IR 4 цикла
BIC.B #0FFH,&P2IFG /очистка флагов
/прерывания 5 циклов
RETI / 5 циклов