Хелпикс

Главная

Контакты

Случайная статья





Настройка UART




Все настройки приемопередатчика хранятся в регистра конфигурации. Это UCSRA, UCSRB и UCSRС. А скорость задается в паре UBBRH: UBBRL.

 

 

Регистр UCSRA

Тут нам интересны только биты RXC и TXC это флаги завершения приема и передачи, соответственно. RXC встанет когда непрочитанный байт вылезет в регистр UDR, а TXC встает когда последний стоп-бит прошел, а новое значение в UDR не поступило. Т. е. после прохода всех байтов.

Также одновременно с этими флагами вызывается прерывание (если оно было разрешено). Сбрасываются они аппаратно — принимающий после чтения из регистра UDR, передающий при переходе на прерывание, либо программно (чтобы сбросить флаг программно в него надо записать 1)

Биты UDRE сигнализирует о том, что регистр UDR приемника пуст и в него можно пихать новый байт. Сбрасывается он аппаратно после засылки в UDR какого либо байта. Также генерируется прерывание “Регистр пуст”

Бит U2X - это бит удвоения скорости при работе в ассинхронном режиме. Его надо учитывать при расчете значения в UBBRH: UBBRL

РегистрUCSRB
Тут в первую очередь это биты RXEN и TXEN — разрешение приема и передачи. Стоит их сбросить как выводы UART тут же становятся обычными ножками I/O.

Биты RXCIE, TXCIE, UDRIE разрешают прерывания по завершению приема, передачи и опустошении буфера передачи UDR.

РегистрUCSRC
Самый важный тут — это бит селектора URSEL дело в том, что по неизвестной причине создатели решили сэкономить байт адреса и разместили регистры UCSRC и UBRRH в одной адресном пространстве. А как же определять куда записать? А по старшему биту! Поясню на примере. Если мы записываем число у которого седьмой бит равен 1, то оно попадет в UCSRC, а если 0 то UBRRH. Причем этот бит есть не во всех AVR в новых моделях его нет, а регистры имеют разные адреса. Так что надо смотреть в даташите этот момент — есть там бит URSEL или нет.

Остальные биты задают число стопов, наличие и тип контроля четности. Если оставить все по дефолту то будет стандартный режим. Надо только выставить формат посылки. Делается это битами UCSZ0, UCSZ1 и UCSZ2 (этот бит находиться в регистре UCSRB ). Для стандартной 8ми битной посылки туда надо записать две единички.



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.