Библиотека Компэла 169


Ь ///- Интерфейс с внешними устройствами

поступления старт-бита на вход Р2.2. По спадающему фронту на входе Р2.2 текущее значение работающего в свободном режиме таймера timer_A3 (TAR) сохраняется в регистре CCR0. Захват данных осуществляется аппаратными средствами таймера timer_A3 без использования программных средств. Также формируется прерывание для вычислительного ядра. Время задержки обработки прерывания не имеет значе­ния, так как момент появления спадающего фронта точно зафиксирован в регистре CCR0. После обнаружения спадающего фронта старт-бита программное обеспече­ние перестраивает CCTLO таким образом, чтобы CCR0 сравнивал данные в середине первого информационного бита. Смещение на 1.5 бита осуществляется за счет уве­личения содержимого CCR0 на соответствующее значение. Полученные данные за­щелкиваются в SCCI. SCCI - считываемая защелка регистра CCTLO. При работе UART SCCI синхронно с CCR0 защелкивает логический уровень, присутствующий на входе Р2.2. UART принимает данные, защелкнутые в SCCI. Программное обеспечение не контролирует непосредственно состояние входа Р2.2.

RX_Bit bit.w #SCCI, &CCTL0 /получение бита,

/защелкнутого в SCCI

rrc.b RXTXData /сохранение принятого

; бита

После принятия первого бита содержимое CCR0 увеличивается на величину, позволяющую выполнить захват в середине следующего информационного бита. 8 информационных бит сохраняются программно в регистр RXTXData.

Задача передачи данных более простая, так как MSP430 сам решает, когда передавать данные, и при этом не требуется осуществлять поиск никаких фрон­тов сигналов. Данные, сохраненные в буферном регистре RXTXData, аппаратно сдвигаются на выход Р1.1 при помощи регистра CCR0 таймера timer_A.

CCR0 перестраивается в режим сравнения для передачи следующего бита при помощи выхода режимно-управлемых битов в CCTLO. Режимно-управля-ющие биты определяют состояние выхода, которое будет установлено аппа­ратно в момент последующего сравнения. При этом отпадает необходимость программно отслеживать момент установки значения следующего выходного бита и выполнять саму установку. Программно осуществляется только загрузка значения следующего передаваемого бита:

TX_Bit rra.b RXTXData /смещение LSB для

/переноса

j с ТХ Mark / переход если бит = 1 TX_Space bis.w #OUTMOD2, &CCTL0/область ТХ

reti/ TX_Comp bic.w #CCIE, &CCTL0 /все биты приняты,

/блокировка прерывания

TX_Mark bic.w #OUTMOD2, &CCTL0/метка ТХ reti/

170 Библиотека Компэла