Предыдущий << UDR $0C ($2C), USR $0B($2B), UCR $0A($2A), UBRR  $09($29)  >>Следующий

USART, он же асинхронный последовательный интерфейс - на мой взгляд, самый удобный и простой способ стыковки МК и компьютера. Хотя производители уже и поговаривают о том, что RS232 устарел и пора про него забыть, думаю, еще десяток лет он продержится. Принцип его работы достаточно прост и давно известен - взять тот же телеграфный аппарат, если кто помнит :-)  Только там тактовым генератором был электродвигатель, а частота вращения настраивалась при помощи камертона. И вместо заумного "асинхронный последовательный..." применялся термин "старт-стопная передача".

Рассмотрим прием байта для общего развития. При отсутствии передачи линия находится в состоянии лог. "1" . Признаком начала передачи является так называемый старт-бит, который всегда "0". За ним следуют 8 бит данных, младшим битом вперед. Заканчивается посылка стоп-битом, который всегда "1". Для достоверного обмена требуется точное совпадение скоростей передачи и приема, погрешность допускается не более 2,5%. Отсюда вывод - если планируете использовать USART, то тактовый генератор МК должен работать с кварцем. 

Приемник по первому спаду - начало старт-бита - синхронизируется, отсчитывает половину периода ( времени передачи одного бита) и проверяет уровень на входе. Если он не "0" - значит, помеха, все отменяется. Если "0" - далее отсчитывает по полному периоду, и вдвигает 0 или 1 в сдвиговый регистр. Когда все 8 бит приняты, отсчитывается еще один период и проверяется наличие на входе "1" - стоп-бита. Если стоп-бит не равен "1", фиксируется ошибка, иначе байт считается принятым.

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

Диаграмма USART

Отметим, что описанные уровни сигнала относятся к МК! Для компьютерного RS232 лог."1"=-12в, лог."0"=+12в!, поэтому для стыковки МК и компьютера обязательно понадобится схема сопряжения уровней. Для этого существуют специально под эту задачу заточенные микросхемы MAX232, если таковой под рукой не оказалось - можно использовать схему на 590КН4

Теперь рассмотрим регистры, связанные с USART.

UDR - в это регистр пишется байт на передачу, из него же считывается принятый байт. Хотя имя (и адрес) одно, физически это разные регистры, поскольку USART полностью дуплексный - приемник и передатчик работают независимо друг от друга (но с одной скоростью). 

USR - регистр состояния. Описание его бит см. в таблице:

Бит USR Название  Описание
3 OR

Устанавливается в "1", если принятый байт не прочитан, а уже принят следующий(OverRun)

4 FE

Устанавливается в "1", если принят 0 на месте стоп-бита (Framing Error)

5 UDRE

Устанавливается в "1", когда передаваемый байт записан в сдвиговый регистр. Если разрешено прерывание по пустому передатчику (установлен TDRIE в UCR), будет вызвано прерывание с вектором 13 ($00C) Сбрасывается при записи данных в UDR

6 TXC

Устанавливается в "1", когда передаваемый байт полностью "выдвинут" из UDR, включая стоп-бит. Если разрешено прерывание по пустому передатчику (установлен TXCIE в UCR), будет вызвано прерывание с вектором 14 ($00D) Сбрасывается при обработке прерывания или записью лог. "1" в этот бит

7 RXC

Устанавливается в "1" после приема байта. Если разрешено прерывание по приему (установлен RXCIE в UCR), будет вызвано прерывание по вектору 12 ($00B). Сбрасывается в "0" по чтению UDR

 

UCR - регистр управления. Описание его бит см. в таблице:

Бит UCR Название  Описание
0 TXB8

Девятый бит на передачу(в режиме 9-ти битной передачи, то есть если CHR9 установлен в "1"

1 RXB8

То же - принятое

2 CHR9

Устанавливается в "1" для работы с 9-ти битными посылками (старт, 9 бит и стоп)

3 TXEN

Разрешение работы передатчика.

4 RXEN

То же - приемника.

5 UDRIE

Разрешение прерывания по ситуации "UDR свободен" (собственно передача еще идет, но уже можно писать следующий байт)

6 TXCIE

Разрешение прерывания по ситуации "Передача закончена"

7 RXCIE

Разрешение прерывания по приему байта

 

И наконец последний регистр - UBRR - регистр задания скорости.  Записываемый туда байт определяет коэффициент деления тактовой частоты, требуемый коэффициент рассчитывается либо по формуле, либо (для стандартных кварцев) по таблице. В любом случае тут надо сунуть нос в даташит.

Кстати, для получения максимальной скорости передачи придется подбирать кварц "некруглой" частоты. Так, для 8535 это будут кварцы на  7.3728 или 3.6864 MHz

Ну и напоследок - думаю, что разобраться с работой USART вам поможет пример 


nml 11-Jul-2009


Салоны полиграфии дизайн плакатов, реклама дизайн полиграфия, дизайн буклета цены ·· Отопление загородного дома, отопление коттеджа. Система отопления. ·· Канализация частного дома - канализация дачи и коттеджа. Система канализации.