Программный встроенный модем на MSP430


После обнаружения старт бита (распознавания шести периодов 'SPACE'), модуль захвата/сравнения Timer_A.CCRO переходит в режим сравнения и запускается каждую 1/300 секунды (в соответствии со скоростью передачи данных). Каждый раз, когда ISR запускается, используется мажоритарное де­кодирование для определения какой последний бит был принят. В результате этого определяется состояние выхода Р1.2, а затем счетчики очищаются, что­бы подготовиться к демодуляции следующего бита (см. рисунок 12).

Для отслеживания количества принятых битов байта используется пе­ременная (BitCounter). После принятия восьми битов прерывания от Timer_ A.CCRO запрещаются и формируется стоп бит. Результирующий поток данных формируется на выходе Р1.2 со скоростью 300 бит/сек. На рисунке 13 показа­ны эпюры принимаемого и декодированного сигналов.

Рис. 13. Взаимодействие ISR от Timer_A.CCR1 и CCR0

Внешне выход Р1.2 подключен ко входу модуля USART0 (вывод URXD0). Для формирования потока данных и обеспечения интерфейса с внешним уст­ройством (например, ПК) модуль USART используется в режиме UART (см. ри­сунок 14). Соответствующее прерывание от приемника может использоваться для захвата принятых байтов.