Программирование модемов

Управляющий регистр



Управляющий регистр

Управляющий регистр доступен по записи и чтению. Этот регистр управляет различными характеристиками UART: скоростью передачи данных, контролем четности, передачей сигнала BREAK, длиной передаваемых слов (символов).

7 6 5 4 3 2 1 0 --T-T-T-T-T-T-T-¬ ¦ ¦ ¦ ¦ ¦ ¦ ¦ LT+T+T+T+T+T+T+T- ¦ ¦ ¦ L=¦ ¦ L=¦= Данные биты определяют длину передаваемых ¦ ¦ ¦ ¦ ¦ слов в битах: ¦ ¦ ¦ ¦ ¦ 00 - 5 бит; ¦ ¦ ¦ ¦ ¦ 01 - 6 бит; ¦ ¦ ¦ ¦ ¦ 10 - 7 бит; ¦ ¦ ¦ ¦ ¦ 11 - 8 бит ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ L===== Количество стоповых бит: ¦ ¦ ¦ ¦ 0 - 1 бит; ¦ ¦ ¦ ¦ 1 - 2 бита ¦ ¦ ¦ ¦ ¦ ¦ ¦ L======= Четность: ¦ ¦ ¦ x0 - контроль на четность не ¦ ¦ ¦ выполняется; ¦ ¦ ¦ 01 - выполняется проверка на нечетность; ¦ ¦ ¦ 11 - выполняется проверка на четность ¦ ¦ ¦ ¦ ¦ L=========== Фиксация четности. При установке этого ¦ ¦ бита бит четности всегда принимает ¦ ¦ значение 0 (если биты 3-4 равны 11) или 1 ¦ ¦ (если биты 3-4 равны 01) ¦ ¦ ¦ L============= Установка перерыва. Вызывает вывод ¦ строки нулей в качестве сигнала ¦ BREAK для подключенного устройства ¦ L=============== Бит используется для доступа к регистру установки скорости: 1 - регистр данных и регистр управления прерываниями используются для загрузки делителя частоты тактового генератора; 0 - регистр данных и регистр управления прерываниями используются как обычно

Для облегчения доступа к отдельным полям управляющего регистра можно воспользоваться следующим объединением:

// управляющий регистр

#define LCR_N 3 // смещение относительно базового адреса

typedef union _LCR_ {

struct {

unsigned char len : 2; unsigned char stop : 1; unsigned char parity : 2; unsigned char stuck_parity : 1; unsigned char en_break_ctl : 1; unsigned char dlab : 1;

} bit_reg;

unsigned char byte;

} LCR;



Содержание раздела