МИКРОКОНТРОЛЛЕР AVR - Страница 31

МИКРОКОНТРОЛЛЕР AVR - МИКРОКОНТРОЛЛЕР AVR

В старшей модели AVR8515 данные могут асинхронно передаваться и приниматься по последовательному каналу в полнодуплексном режиме при помощи модуля UART. В AVR этот модуль так же, как в других микроконтроллерах, которые не имеют возможности передавать бит четности. Основной частью UART является генератор синхросигналов обмена, определяющий скорость передачи данных. Это программируемый счетчик, при помощи которого обеспечивается частота, в 16 раз превышающая скорость передачи. Значение, которое надо занести в регистр UBRR, определяющий скорость обмена UART («UART baud rate register»), вычисляется по формуле:

UBRR = f / (16 * Data_Rate)-1,

где Data_Rate — желаемая скорость передачи данных. Как и для других генераторов, задающих скорость передачи данных, необходимо проверить значение получаемой ошибки скорости обмена (отношение фактической скорости обмена к требуемой), прежде, чем использовать определенный кварцевый резонатор и конкретное значение UBRR.

Частота генератора в 16 раз превышает скорость передачи данных, чтобы дать возможность приемнику считывать значение с входной линии примерно в середине каждого бита в потоке поступающих данных. Структура приемника UART приведена на рис. 33.12. В этой схеме имеется специальное устройство — детектор фронта, который применяется для того, чтобы определить, что в данный момент времени присутствует на линии: поток передаваемых данных или какие-то помехи. Если передаются данные, то он определяет середину бита и указывает сдвиговому регистру приемника RX, когда надо начинать принимать данные из входного потока. Детектор фронта обеспечивает также обновление содержимого USR — регистра состояния UART в следующих случаях:

Go to Top