Модуль Универсального Асинхронного Приёмо-передатчика (UART). Упрощённая блок схема модуля UART. Регистры управления, страница 6

U1STAbits.UTXISEL0 = 0; // Прерываение после отправки одного символа

U1STAbits.UTXISEL1 = 0;

IEC0bits.U1TXIE = 1; // Включить прерывание передатчика UART

U1MODEbits.UARTEN = 1; // Включить UART

U1STAbits.UTXEN = 1; // Включить передатчик UART

/* пауза около 104 мкс (1/9600) перед отправкой первого символа */

for(i = 0; i < 4160; i++)

{

  Nop();

}

U1TXREG = 'a'; // Передать один символ

while(1)

{}

}

void __attribute__((__interrupt__)) _U1TXInterrupt(void)

{

IFS0bits.U1TXIF = 0; // очищаем флаг прерывания передатчика

U1TXREG = 'a'; // Передать один символ

}

5.4 Передача символа BREAK

Символ Break передатчика состоит из бита Start, сопровождаемого двенадцатью битами ‘0’ и битом Stop. Кадр символа Break отправляется каждый раз, когда установлены биты UTXBRK и UTXEN покудова передающий сдвиговый регистр загружен данными. Фиктивная запись регистра UxTXREG необходима

Чтобы инициализировать передачу символа Break. Обратите внимание, что значение данных записанных в регистр UxTXREG для символа Break игнорируется. Запись просто обслуживает цель инициализировать надлежащую последовательность – все  ‘0’ будет переданы.

Бит UTXBRK автоматически сбрасывается аппаратными средствами после того, как посылают соответствующий Стоповый бит. Это позволяет пользовательскому приложению предварительно загрузить в FIFO со следующим передаваемым байтом после символа Break (обычно, символ Sync в спецификации LIN).

Обратите внимание:пользовательское приложение должно дождаться пока передатчик не закончит передачу, чтобы перейти в режим простоя (TRMT =1) до установки UTXBRK. UTXBRK отменяет любую другую деятельность передатчика. Если пользовательское приложение сбрасывает бит TXBRK до завершения последовательности, для модуля может произойти неожиданный результат. Посылка символа Break не генерирует прерывание передатчика (Смотреть даташит).

Бит TRMT указывает, когда передающий сдвиговый регистр пуст или полон, также, как это делает в течение обычной передача. См. рисунок 7.

Рисунок 7. Последовательность отправки символа Break

5.4.1 Последовательность передачи Break и Sync

Следующая последовательность отправит сообщения кадра заголовка сделанного из Break, сопровождаемого байтом auto-baud Sync. Эта последовательность типична для устройства управления шиной LIN.

1. Сконфигурировать UART для необходимого режима.

2. Установить UTXEN и UTXBRK, чтобы передать символ Break.

3. Загрузить UxTXREG фиктивным символом, чтобы инициализировать передачу (значение игнорируется).

4. Записать 0x55 в UxTXREG - загружает символ Sync в передающий FIFO.

После того как послали Break, бит UTXBRK сброшен аппаратными средствами. Символ Sync - теперь переданный.

6. ОБНАРУЖЕНИЕ БИТА ИНФОРМАЦИИ

6.116хРежим генератора (BRGH = 0)

В 16x режим генератора, каждый бит полученных данных - 16 широких тактовых импульсов. Обнаруживать значение входящего бита информации, бит выбран в 7-ых, 8-ых, и 9-ых передних фронтах тактов генератора. Эти передние фронты называют Majority Detection Edges. Этот режим более устойчив чем 4x режим генератора.

Рисунок 8. Обнаружение битов информации при 16x режима генератора

Обратите внимание: В 16x режиме генератора, каждый бит выбран в 7-ых, 8-ых, и 9-ых повышающихся фронтах генератора.

6.24XРежим генератора (BRGH = 1)

В 4x режим генератора, каждый бит полученных данных - четыре широкие тактовых импульса. 4X режим генератора не обеспечивает достаточно многие фронты, чтобы поддержать Majority Detection Method. Поэтому, полученные данные выбраны в половине битовой ширины.

Рисунок 9. Обнаружение битов информации при 4x режима генератора

Обратите внимание: В 4x режим генератора, осуществление выборки происходит только в половине битовой ширины.

7. Приёмник UART