Раздел: Документация
0 ... 11 12 13 14 15 16 17 ... 55
Та б л и ц а 5.2 Режимы работы интерфейса RS232
Бит REN (Receiver ENable) разрешает (REN = 1) или запрещает (REN = 0) прием данных интерфейсом; во многих случаях при инициализации интерфейса его целесообразно установить в 1. Бит ТВ8 - 9-й бит передаваемых данных в режимах 2 и 3; при его равенстве 1 получаем дополнительный стоп-бит, поэтому его целесообразно установить в 1. Бит RB8 - 9-й бит принятых данных в режимах 2 и 3; этот бит в рассматриваемом случае не используется, поэтому его целесообразно установить в 0. Бит TI (Tranceiver Interrupt) - флаг прерывания передатчика, который устанавливается в 1 в начале стоп-бита (кроме режима 0); при инициализации интерфейса целесообразно установить его в 1. Бит RI (Receiver Interrupt) — флаг прерывания приемника; этот бит устанавливается в 1 в середине интервала времени принятого стоп-бита (кроме режима 0); при инициализации интерфейса целесообразно установить его в 0. Таким образом, получаем значение регистра: SCON=10011010b или SCON = 9ah. Как уже говорилось, старший бит регистра микропотребления (бит SMOD регистра PCON) определяет удвоение скорости обмена. При SMOD = 1 скорость обмена в этом примере равна FKB/32, при SMOD = 0 - FKB/64. Регистр PCON не имеет побитную адресацию; кроме того, остальные его разряды к интерфейсу не имеют отношения, поэтому в этом примере целесообразно устанавливать PCON = 80h (SMOD = 1) либо PCON = 0 (SMOD = 0). Пример 5.1. Проинициализировать интерфейс для получения скорости П5200 бод без использования таймеров при частотах кварцевого резонатора, равных 7372800 и 3686400 Гц. Фрагменты программ на ассемблере и Си приведены в таблице:
Как видно из приведенного примера, инициализация интерфейса без применения таймеров достаточно проста. Недостатком такого режима работы интерфейса является использование строго ограниченных значений частот кварцевых резонаторов, что не всегда возможно. 5.2.2. Инициализация RS232 с использованием таймеров Во многих случаях от микроконтроллера требуется переменная скорость обмена по RS232. Как правило, диапазон значений скоростей обмена невелик, и часто ограничивается всего двумя значениями: 9600 и 115200 бод. В качестве генератора скорости обмена в простейшем случае может выступать таймер Т1, который присутствует в подавляющем числе микроконтроллеров. Некоторые микроконтроллеры оборудованы дополнительным таймером Т2, который также может быть использован в качестве генератора скорости обмена. Диапазон скоростей обмена, генерируемых таймером Т2, намного шире, чем генерируемый таймером Т1. И, наконец, очень ограниченное число микроконтроллеров (это некоторые современные микроконтроллеры ADUC8XX производства фирмы Analog Devices) имеет таймер ТЗ, диапазон генерируемых скоростей обмена которого еще больше, чем таймера Т2. Инициализация RS232 с использованием таймера Т1. Из табл. 5.2 следует, что в режиме 1 (SM0 = 0, SM1 = 1) и 3 (SM0 = = SMI = 1) скорость обмена определяется таймером Т1. Для генерации скорости обмена по RS232 таймер Т1, как правило, используется в режиме автозагрузки, т.е. в режиме 2 (см. описание работы таймера Т1 в любом микроконтроллере). Скорость обмена по RS232 в режимах 1 и 3 может быть определена по следующей формуле: o6m..,3 = (2smod-Fkb)/(32-12-[256-TH1]), где FKB — частота кварцевого резонатора, ТН1 — содержимое старшего байта регистра счета таймера Т1. Если, например, требуется установить скорость обмена 115200 бод с помощью таймера Т1, то минимальная частота кварцевого резонатора должна быть равна 22118400 Гц (при SMOD = 1 иТН1 = 255): 21 -22118400/(3-12-[256 - 255]) = 115200 бод. Во многих случаях для сокращения энергопотребления частоту кварцевого резонатора стремятся уменьшить (при этом, например, требуются две скорости обмена: 9600 и 115200 бод). В этом случае (например, при FKB= 3686400 Гц) для генерации скорости 46 обмена 115200 бод можно использовать режим 2 (см. предыдущий пример 5.1), а для генерации скорости обмена 9600 бод - таймер 1 (SMOD = 1, ТН 1 = 254): 21 -3686400/(32- 12-[25б - 254]) = 9600 бод. Пример 5.2. Проинициализировать интерфейс RS232 для получения скоростей обмена 115200 и 9600 бод с использованием таймера 1.
Из вышеизложенного можно сделать следующие выводы. Таймер Т1 можно использовать для генерации скорости обмена по RS232 в достаточно узкой области значений частот кварцевых резонаторов (точнее - только при строго определенных значениях этих частот). Если частота кварцевого резонатора достаточно низкая (задано), а скоростей обмена должны быть несколько (или хотя бы две), одна из которых - высокая, например, 115200 бод, то инициализацию интерфейса целесообразно проводить с использованием Т1 и без него (т.е. комбинировать). В связи с этим при установке скорости обмена с помощью Т1 ощущается некий "дискомфорт". Инициализация RS232 с использованием таймера Т2. В состав многих микроконтроллеров последних лет выпуска и всех без исключения современных микроконтроллеров (имеются в виду 51-совместимые) входит таймер Т2 (помимо ТО и Т1), который предоставляет пользователю более широкие (хотя и не безграничные) возможности для генерации скоростей обмена по RS232. Эти микроконтроллеры в подавляющем большинстве случаев де-факто стали уже называться 52-совместимые или имеющие 52-совмес-тимое ядро (например, АТ89С52). Есть, конечно, и исключения, например микроконтроллеры 87C51FA-FC фирм Intel и Philips, в состав которых входит Т2. Скорость обмена по RS232 (также в режимах 1 и 3) при использовании таймера Т2 определяется следующей формулой: обм.1,з = -FKB/(32-[65536 - (RCAP2H, RCAP2L)]), где RCAP2L и RCAP2H - соответственно младший и старший байты 16-разрядного регистра захвата/сравнения RCAP2 таймера Т2. 0 ... 11 12 13 14 15 16 17 ... 55
|