ВУЗ:
Составители:
- новый символ записывается в UDR до того, как выдвинут стоповый бит
для предыдущего символа. При этом сдвиговый регистр записывается
сразу после того, как будет выдвинут в линию TxD стоповый бит
предыдущего символа.
При этом в регистре состояния UART – USR – устанавливается флаг
UDRE – признак очистки регистра данных. Когда этот бит установлен,
UART готов к передаче следующего символа. При перезаписи UDR в
10(11)-разрядный сдвиговый регистр бит 0 сдвигового регистра обнуляется
(стартовый бит), а бит 9 или 10 устанавливается (стоповый бит). Если
выбрано 9-битовое слово данных (установлен бит CHR9 в регистре UCR),
то бит TXB8 из UCR переписывается в 9-й бит сдвигового регистра
передатчика.
С приходом тактового импульса стартовый бит выдвигается на вывод
TxD. Затем выдвигаются данные, начиная с младшего бита. После того, как
выдвинут стоповый бит, в сдвиговый регистр загружаются новые данные,
если они были записаны в UDR во время передачи. Если до выдвижения
стопового бита в регистр UDR не поступили новые данные, то флаг UDRE
остается установленным до последующей записи в UDR. Если новые
данные не поступили, и на выводе TxD появляется стоповый бит, в
регистре USR устанавливается флаг окончания передачи – TXC.
Установка бита TXEN в UCR разрешает работу передатчика. При
очистке бита TXEN вывод РС6 можно использовать для обычного
ввода/вывода данных. Если бит TXEN установлен, то передатчик UART
подключен к выводу РС6 независимо от состояния бита DDC6 в регистре
DDRC (бита направления передачи 6го бита порта С).
Алгоритм передачи символа по UART (описание регистров см. ниже):
1. Настроить режим работы:
скорость передачи – регистром UBRR, параметры – UCR;
2. Записать передаваемый символ в регистр данных (UDR).
3. Для передачи следующего символа нужно проверить флаг
готовности передатчика принять новый символ для передачи
(UDRE).
Примечание. Для реализации проверки на четность необходимо
передавать 9-разрядные данные, последним битом которых (записывается в
TXB9) является бит четности, который необходимо определять
программно. Если формат передачи 8 бит, то проверку на четность в UART
компьютера надо отключить.
Пример настройки UART на скорость обмена 4800 бод с кварцевым
резонатором 4 МГц:
.equ TEMP, r16 ; объявление регистра r16 как TEMP
; (временный регистр)
ldi TEMP, 51
out UBRR, TEMP ; установка скорости обмена
ldi TEMP, (1<<RXEN) | (1<<TXEN)
out UCR, TEMP ; разрешение работы приемника и передатчика
Пример программы, отправляющей байт данных из
регистра TXDATA по UART:
.equ TXDATA, r17 ; объявление регистра r17 как TXDATA
; (регистр с данными для отправки)
ldi TXDATA, 132 ; отправлять будем произвольный байт ‘132’
TX_not_ready:
sbis USR, UDRE ; ожидание опустошения UDR (окончания
; текущей посылки)
rjmp TX_not_ready
out UDR, TXDATA ; если UDR пуст – загрузить в него байт данных
; для отправки
Приемник UART
Логическая схема приемника обрабатывает сигнал на выводе RxD с
частотой, в 16 раз большей частоты передачи: для обработки одного бита
принимаемой последовательности производится 16 выборок входного
сигнала. До начала передачи в линии выводился МАРКЕР (логическая 1).
Поэтому первая выборка логического «0» интерпретируется как спадающий
фронт стартового бита, после чего запускается последовательность
обнаружения стартового бита. Далее приемник обрабатывает 8-ю, 9-ю и 10-
ю выборки сигнала на входе RxD . Если хотя бы две из этих трех выборок
равны логической единице, то принятый перепад считается шумом, и
приемник ждет следующего перехода из «1» в «0».
Если обнаружен стартовый бит, начинается обработка битов данных.
Решение о значении каждого бита данных принимается также по 8, 9 и 10-й
выборкам входного сигнала (по двум равным выборкам). Определенные
биты данных записываются в сдвиговый регистр приемника.
Для определения стопового бита также хотя бы две выборки на его
месте должны быть равны 1. Если это условие не выполняется, то в
регистре USR устанавливается флаг ошибки кадра FE. Поэтому перед
чтением принятых данных из регистра UDR следует проверять бит FE для
обнаружения возможных ошибок кадра.
Страницы
- « первая
- ‹ предыдущая
- …
- 31
- 32
- 33
- 34
- 35
- …
- следующая ›
- последняя »
