и- "РЛ" - НАЧИНАЮЩИМ
и
Как и в режиме 0, передача начинается сразу после
записи данных в SBUF. Но прием начнется автоматичес-
ки после поступления на вход RXD стартового бита, од-
нако для этого должен быть установлен флаг REN. Пос-
ле приема байта он помещается в SBUF и становится до-
ступен для чтения вплоть до завершения приема очеред-
ного байта. Если принятый байт не будет считан до при-
ема очередного байта, то его значение будет потеряно.
Так как такое событие никак невозможно диагностиро-
вать, необходимо как можно быстрее после приема бай-
та считать его из SBUF, для чего как нельзя лучше под-
ходит обработка прерывания по приему.
Так как прием и передача ведутся асинхронно, для
обеспечения достоверной доставки данных необходимо,
чтобы передающее и приемное устройства вели обмен
на одинаковой скорости, обычно допустимо отклонение
частот не более 5%. В качестве задающего генератора
используются сигналы переполнения таймера. Как види-
те, работа UART связана с работой таймеров, поэтому не
всегда возможно их одновременное раздельное исполь-
зование. Но наличие в системе 3-х таймеров снижает ос-
троту этой проблемы.
Скорость обмена в режиме 1 определяется по следу-
ющей формуле:
SPEED,
U A R T
32
12 (256-A/)
(бит/сек),
(1)
где
SM OD
- значение флага SMOD регистра
PCO N
(0 или 1);
Fosc
- частота кварцевого резонатора микроконтрол-
лера, Гц.
Особый интерес в этой формуле представляет число
N.
Это значение, используемое для автоперезагрузки тайме-
ра, работающего в режиме 2 (8-битный счетчик с автопере-
загрузкой), т.е. оно должно быть записано в старший байт
ТН х
счетчика таймера. Почему я указал вместо номера тай-
мера “х”? Да потому, что синхронизация UART может вес-
тись как от таймера 1, так и от таймера 2, причем для пере-
датчика и приемника независимо! Режимы синхронизации
UART демонстрирует
таблица 25.
Собственно, мы возвра-
щаемся к регистру управления Timer2, а конкретно - к не
рассмотренным ранее флагам RCLK и TCLK. Следует за-
метить, что добиться стандартных скоростей обмена (9600,
19200,57600 бод) возможно только при использовании квар-
цевого резонатора с частотой 11059200 или 22118400 Гц, а
применение кварцев на другие частоты неизбежно приве-
дет к погрешностям установки скорости. Для вычисления
значений числа N, необходимых для достижения желаемой
скорости обмена при разных частотах кварцев, удобно
пользоваться программой
MCS-51 Config Wizard15.
Режим 3 отличается от режима 1
только размером
кадра, скорость же обмена рассчитывается по прежней
формуле. А вот в режиме 2 скорость зависит только от
значения флага SMOD регистра PCON и тактовой час-
тоты микроконтроллера и определяется по формуле:
2
SM O D
SPEED UART = -
64
^osc
(бит/сек)
(2)
При работе с 11-битным кадром используется до-
полнительный контрольный бит. Для его хранения ис-
пользуются флаги
Т В 8
и
R B 8
для режимов передачи и
приема соответственно. То есть, перед тем, как начать
передачу 11 -битного кадра, необходимо установить зна-
чение флага ТВ8, а после приема такого кадра можно
считать значение контрольного бита из RB8.
Остался нерассмотренным последний флаг регист-
ра SCON -
SM 2.
Если этот флаг сброшен, то установка
флага RI и запрос прерывания происходит после при-
ема
любого кадра.
А вот при SM2=1 флаг RI устанав-
ливается (и формируется запрос прерывания) только
для принятого кадра, у которого
столовый бит равен 1.
Под стоповым битом подразумевается любой 9-й бит
кадра, т.е. в том числе и контрольный бит 11-битного
кадра. Эта особенность позволяет легко организовать
работу сети из нескольких ведомых микроконтроллер-
ных устройств под управлением одного ведущего. При
этом все входы RXD ведомых устройство соединяются
параллельно и подключаются к выходу TXD ведущего,
а выходы TXD ведомых аналогично подключаются к
входу RXD ведущего.
Работа в сети всегда ведется по инициативе веду-
щего. Каждое ведомое устройство имеет определен-
ный однобайтный
адрес
(т.е. просто номер). Ведущее
устройство всегда начинает обмен первым, для чего пе-
редает в сеть 11-битный пакет с адресом того ведомо-
го, с которым желает начать обмен информацией, при
этом контрольный бит в пакете равен 1. Все ведомые
настроены так, что у них SM2=1, т.е. все они примут
пакет с адресом. Каждое из устройств должно сравнить
принятый адрес со своим собственным и, в случае со-
впадения, сбросить флаг SM2. Ведущее же устройство
все остальные кадры передает с контрольным битом,
равным 0. В результате, эти кадры будут приняты и об-
работаны
только опознавшим свой адрес ведомым,
а
все прочие устройства проигнорируют все пакеты со
сброшенным контрольным битом.
Работа с UART требует довольно тщательного под-
хода, особенно если требуется прием/передача и об-
работка данных в фоновых процессах, т.е. обрабаты-
вать прерывания. Однако, во многих случаях можно
обойтись и без прерываний, реализовав нужные фун-
кции исключительно на основе анализа состояния
флагов RI и TI. Вот пример подпрограмм, реализую-
щих функции ввода-вывода байта при помощи UART
(см. на следующей странице):
Таблица 25. Способы синхронизации UART в режимах 1 и 3
Ф лаги T2C O N
С инхронизация
RCLK
TCLK
Приемник
Передатчик
0
0
T im e rl
T im e rl
0
1
T im e rl
Tim er2
1
0
Т
im er2
T im e rl
1
1
Tim er2
Tim er2
Радиолюбитель - I 2 /2 0 0 7 []
31
предыдущая страница 31 Радиолюбитель 2007-12 читать онлайн следующая страница 33 Радиолюбитель 2007-12 читать онлайн Домой Выключить/включить текст