Интерфейс USART предназначен для коммуникации с периферией, такой как ПК. Передача и прием данных может осуществляться на разных скоростях в синхронном и асинхронном режиме, а также с контролем четности, различной длиной блока данных и др. В общем в нем есть все необходимое для обеспечения безошибочной коммуникации между устройствами.
Характеристики USART0:
Бит RXC0 (7) регистра UCSR0A - это флаг завершения приема (1 - если в регистре UDR0 есть непрочитанные данные / 0 - после того, как регистр UDR0 опустошен).
Бит TXC0 (6) регистра UCSR0A - флаг завершения передачи (1 - после завершения передачи из сдвигового регистра, и если в UDR0 не было загружено нового значения. флаг сбрасывается записью в него 1).
Бит UDRE0 (5) регистра UCSR0A - флаг опустошения регистра данных UDR0 (устанавливается в 1 после пересылки данных из UDR0 в сдвиговый регистр передатчика и означает что в регистр данных можно загружать новое значение. сбрасывается при записи в UDR0 новых данных).
Бит FE0 (4) регистра UCSR0A - флаг ошибки кадрирования (при обнаружении ошибки кадрирования (первый стоп-бит равен 0) устанавливается в 1, сбрасывается при приеме стоп-бита равного 1).
Бит DOR0 (3) регистра UCSR0A - флаг переполнения (устанавливается в 1 если в момент обнаружения нового старт-бита в сдвиговом регистре находится последнее принятое слово, а буфер приемника полон (2 значения)).
Бит UPEN0 (2) регистра UCSR0A - флаг ошибки контроля четности (устанавливается в 1 при ошибке четности).
Бит U2X0 (1) регистра UCSR0A - удвоение скорости обмена, если установить в 1 (только в асинхронном режиме. в синхронном следует установить этот бит в 0).
Бит MPCM0 (0) регистра UCSR0A - режим микропроцессорного обмена (если установлен в 1, режим включен).
Бит RXCIE0 (7) регистра UCSR0B - разрешение прерывания при завершении приема если установлен в 1.
Бит TXCIE0 (6) регистра UCSR0B - разрешение прерывания при завершении передачи если установлен в 1.
Бит UDRIE0 (5) регистра UCSR0B - разрешение прерывания при очистке регистра данных если установлен в 1.
Бит RXEN0 (4) регистра UCSR0B - разрешение приема если установлен в 1.
Бит TXEN0 (3) регистра UCSR0B - разрешение передачи если установлен в 1.
Бит UCSZ02 (2) регистра UCSR0B - формат посылки данных (используется совместно с битами UCSZ01 и UCSZ00 регистра UCSR0C).
Бит RXB80 (1) регистра UCSR0B - 8-й разряд принимаемых данных при использовании 9-разрядных слов.
Бит TXB80 (0) регистра UCSR0B - 8-й разряд передаваемых данных при использовании 9-разрядных слов.
Биты UMSEL01 и UMSEL00 (7, 6) регистра UCSR0C отвечают за режим работы USART0:
Характеристики USART0:
- Полный дуплекс (независимые прием и передача)
- Асинхронный и синхронный режим
- Внешняя/внутренняя синхронизация
- Высокое разрешение генератора скорости передачи
- Выбор длинны блока данных (5 - 9 бит) и длинны стоп бита (1 - 2)
- Проверка четности
- Проверка переполнения данных
- Проверка на ошибки
- Фильтрация паразитных шумов
- Прерывания
- Мультипроцессорный режим работы
- Двойная скорость в асинхронном режиме
Регистры USART0:
- UDR0 - входной/выходной регистр данных
- UCSR0A, UCSR0B, UCSR0C - регистры управления
- UBRR0H, UBRR0L - регистры управления скоростью передачи
Регистр UCSR0A:
7
|
6
|
5
|
4
|
3
|
2
|
1
|
0
|
RXC0
|
TXC0
|
UDRE0
|
FE0
|
DOR0
|
UPEN0
|
U2X
|
MPCM0
|
Бит RXC0 (7) регистра UCSR0A - это флаг завершения приема (1 - если в регистре UDR0 есть непрочитанные данные / 0 - после того, как регистр UDR0 опустошен).
Бит TXC0 (6) регистра UCSR0A - флаг завершения передачи (1 - после завершения передачи из сдвигового регистра, и если в UDR0 не было загружено нового значения. флаг сбрасывается записью в него 1).
Бит UDRE0 (5) регистра UCSR0A - флаг опустошения регистра данных UDR0 (устанавливается в 1 после пересылки данных из UDR0 в сдвиговый регистр передатчика и означает что в регистр данных можно загружать новое значение. сбрасывается при записи в UDR0 новых данных).
Бит FE0 (4) регистра UCSR0A - флаг ошибки кадрирования (при обнаружении ошибки кадрирования (первый стоп-бит равен 0) устанавливается в 1, сбрасывается при приеме стоп-бита равного 1).
Бит DOR0 (3) регистра UCSR0A - флаг переполнения (устанавливается в 1 если в момент обнаружения нового старт-бита в сдвиговом регистре находится последнее принятое слово, а буфер приемника полон (2 значения)).
Бит UPEN0 (2) регистра UCSR0A - флаг ошибки контроля четности (устанавливается в 1 при ошибке четности).
Бит U2X0 (1) регистра UCSR0A - удвоение скорости обмена, если установить в 1 (только в асинхронном режиме. в синхронном следует установить этот бит в 0).
Бит MPCM0 (0) регистра UCSR0A - режим микропроцессорного обмена (если установлен в 1, режим включен).
Регистр UCSR0B:
7
|
6
|
5
|
4
|
3
|
2
|
1
|
0
|
RXCIE0
|
TXCIE0
|
UDRIE0
|
RXEN0
|
TXEN0
|
UCSZ02
|
RXB80
|
TXB80
|
Бит RXCIE0 (7) регистра UCSR0B - разрешение прерывания при завершении приема если установлен в 1.
Бит TXCIE0 (6) регистра UCSR0B - разрешение прерывания при завершении передачи если установлен в 1.
Бит UDRIE0 (5) регистра UCSR0B - разрешение прерывания при очистке регистра данных если установлен в 1.
Бит RXEN0 (4) регистра UCSR0B - разрешение приема если установлен в 1.
Бит TXEN0 (3) регистра UCSR0B - разрешение передачи если установлен в 1.
Бит UCSZ02 (2) регистра UCSR0B - формат посылки данных (используется совместно с битами UCSZ01 и UCSZ00 регистра UCSR0C).
Бит RXB80 (1) регистра UCSR0B - 8-й разряд принимаемых данных при использовании 9-разрядных слов.
Бит TXB80 (0) регистра UCSR0B - 8-й разряд передаваемых данных при использовании 9-разрядных слов.
Регистр UCSR0C:
7
|
6
|
5
|
4
|
3
|
2
|
1
|
0
|
UMSEL01
|
UMSEL00
|
UPM01
|
UPM00
|
USBS0
|
UCSZ01
|
UCSZ00
|
UCPOL0
|
Биты UMSEL01 и UMSEL00 (7, 6) регистра UCSR0C отвечают за режим работы USART0:
- 00 - Асинхронный режим
- 01 - Синхронный режим
- 10 - Резерв
- 11 - Ведущий SPI
Биты UPM01 и UPM00 (5, 4) регистра UCSR0C отвечают за режим работы системы контроля и формирования четности USART0:
- 00 - Выключен
- 01 - Резерв
- 10 - Проверка четности
- 11 - Проверка нечетности
Бит USBS0 (3) регистра UCSR0C устанавливает количество стоп битов (1 стоп-бит если сброшен в 0 / 2 стоп-бита если установлен в 1).
Бит UCSZ02 (2) регистра UCSR0B и биты UCSZ01 и UCSZ00 (2, 1) регистра UCSR0C - устанавливают длину передаваемых посылок:
- 000 - 5 бит
- 001 - 6 бит
- 010 - 7 бит
- 011 - 8 бит
- 100 - 110 - Резерв
- 111 - 9 бит
Бит UCPOL0 (0) регистра UCSR0C устанавливает полярность тактовых сигналов:
- 0 - передача по спаду, прием по нарастанию
- 1 - передача по нарастанию, прием по спаду
В регистр UBRR0 записывается определенное значение в зависимости от тактовой частоты и скорости передачи. Значение вычисляется по формуле UBRR0 = CLK/(16*Скорость)-1
Комментариев нет:
Отправить комментарий