РАБОТА 2. ПРОГРАММИРОВАНИЕ UART


Искусство программирования UART (связи по RS232) заключается в расчете значений регистров канала, зависящих от частоты процессора и частоты обмена. Эмулятор имитирует передачу и прием данных со стороны внешнего источника.

Доступ к регистру обмена UDR регулируется флажками (битами) UCSRC, нумерация битов начинается с нуля. Биты с номерами RXEN=4 и TXEN=3 устанавливаются в 1 сдвиговыми операциями, которые приводят к 00010000 и 00001000. Побитовое ИЛИ (вертикальная черта) установит UCSRB в 00011000. Аналогично флажки-биты выставляются в UCSRC. Линии PD0, PD1 заняты под UART (RXD, TXD), поэтому из двух доступных тут диодов следует пользоваться индикатором на PC5.

На сайте chipenable.ru приведены терминальные программы обмена. Скриптовый обмен данными (по сценарию) обеспечивается, в частности, студией Visual Matlab. Для связи вход-выходные линии com-порта компьютера через микросхему MAX232 подключается внахлест к первым двум линиям порта D.

Из неприятностей, которые могут поджидать на этом пути, отметим возможное ошибочное представление о реальной частоте работы микропроцессора. При прошивке в фузах есть настройка частоты (на предприятии прошивается частота 1 Мгц, позволяющая микросхеме работать без кварца). На отладочных платах универсальный порт может быть не подпаян, см. фото распайки 2-мя проводами.

В микроконтроллере ATmega8535 есть 5 регистров – UBRRH, UBRRL, UCSRA, UCSRB, UCSRC. Биты регистра UСSRB именуют RXCIE, TXCIE, UDRIE, RXEN, TXEN, UCSZ2, RXB8, TXB8. Для разрешения работы приемника и передатчика нужно установить в единицу биты RXEN и TXEN. Прерывания по завершению передачи и прерывания при очистке регистра данных разрешают биты TXCIE и UDRIE. Размер слова данных передаваемых/принимаемых модулем USART может варьироваться от 5 до 9 разрядов и определяется битами UCSZ2..UCSZ0. В регистре UCSRB находится только бит UCSZ2. Остальные биты находятся в регистре UCSRC. Если использовать 8-ми разрядные слова, то эти три бита должны быть установлены 011. Селектор URSEL взводится в 1 для передачи данных в UCSRC (есть еще теневой регистр). Биты RXB8 и TXB8 – это 8-ой разряд принимаемых/передаваемых данных соответственно. Они используются, если размер слова данных – 9 бит.



Rambler's Top100