INSiraJMENTS


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


Каждый спадающий фронт на порту Р1.2 вызывает прерывание, и MSP430 начинает выполнять подпрограмму обработки прерывания.

Выполнение подпрограммы обработки прерывания начинается через шесть циклов после появления прерывания. Сначала на линии Р1.1 устанав­ливается низкий логический уровень, а модуль CCR0 устанавливается в режим только вывода. После этого таймер Timer_A сбрасывается путем установки бита CLR в регистре TACTL, а флаг прерывания CCR1 сбрасывается.

ISR выполняется за 25 + 6 циклов. Поэтому при работе на частоте 3.6864 МГц (период 271.2 не) подпрограмма выполняется за 31 * 271.2 не = 8.407 мкс. При обмене данными со скоростью 115.2 кбит/сек минимальное время между прерываниями-8.68 мкс. Вышеупомянутая подпрограмма обработки прерыва­ния выполняется быстрее, позволяя обеспечивать прием данных без потерь.

Так как каждый спадающий фронт на порту Р1.2 формирует прерывание и, следовательно, низкий логический сигнал на линии RS232, то свечение флу­оресцентных ламп и помехи от других приборов могут формировать ошибоч­ные биты. Время между спадающим и нарастающим фронтами может быть из­мерено при помощи второго модуля захвата/сравнения и сопоставлено с дли­тельностью IrDA импульса, что позволит устранить ошибки. Для достижения этого модуль CCR2 должен быть установлен в режим захвата по нарастающему фронту. Так как CCR1 срабатывает по спадающему фронту, то значения этих регистров могут быть сравнены в подпрограмме обработки прерывания. Если длительность импульса меньше, чем 1.6 мкс - 0.22 мкс, то импульс признается ложным. Однако для этого требуется повысить рабочую частоту микроконтрол­лера или снизить скорость передачи данных.