8(495)909-90-01
8(964)644-46-00
pro@sio.su
Главная
Системы видеонаблюдения
Охранная сигнализация
Пожарная сигнализация
Система пожаротушения
Система контроля удаленного доступа
Оповещение и эвакуация
Контроль периметра
Система домофонии
Парковочные системы
Проектирование слаботочных сетей
Аварийный
контроль
Раздел: Документация

0 ... 10 11 12 13 14 15 16 ... 55

5. Программирование интерфейса RS232 в микроконтроллере

5.1. Предварительные замечания

В отличие от интерфейса RS232 компьютера, в интерфейсе RS232 микроконтроллера:

•нельзя изменять формат посылаемых данных — это всегда 8 бит;

•бит паритета, как правило, не используется, хотя может быть задействован;

•могут быть один или два стоп-бита, при этом второй стоп-бит "искусственный" (в табл. 5.2 режимы 2 и 3);

•введен дополнительный синхронный режим работы RS232 — режим 0 (табл. 5.2);

•скорость обмена определяется большим, чем в компьютере, числом факторов.

После такого "предварительного ознакомления" с интерфейсом RS232 в микроконтроллере может сложиться мнение, что программирование интерфейса "проще", чем программирование интерфейса RS232 компьютера. Отчасти это так, хотя в микроконтроллере больше возможностей для задания скорости обмена.

Скорость обмена может быть установлена без применения таймеров. В этом случае она может быть равна тактовой частоте микроконтроллера, деленной на 32 или 64. Если, например, необходимо установить скорость 115200 бод, то частоту кварцевого резонатора целесообразно выбирать равной 115200-32=3686400 Гц или 115200-64 = 7372 800 Гц. Этот режим установки скорости может быть полезен, если используется достаточно простой 51-сов-местимый микроконтроллер, у которого таймеры применяются для других целей (более подробно - см. далее).

Во всех остальных случаях скорость обмена устанавливается с помощью таймеров (Т). Их в микроконтроллере может быть несколько. Частота, которая подается на таймер, непосредственно зависит от циклической частоты работы микроконтроллера, которая, в свою очередь, определяется частотой кварцевого резонатора. В микроконтроллерах, выпускавшихся ранее, циклическая частота в 12 раз ниже тактовой. Другими словами, команда микроконтроллера, выполняющаяся за один цикл, занимает 12 тактов. В более современных микроконтроллерах, таких, например, как DS80520, 42


PS80530 производства фирмы Dallas Semiconductor или MSC1210YX производства фирмы Texas Instruments, циклическая частота может быть повышена (программным способом) в три раза. В этом случае одна команда микроконтроллера, выполняющаяся за один цикл, будет занимать уже четыре такта. В микроконтроллерах ADUC8XX производства фирмы Analog Devices для задания тактовой частоты процессора используется часовой кварцевый резонатор с частотой 32768 Гц совместно с умножителем частоты (PLL), который умножает частоту 32768 Гц (максимум) на 384. В результате получается тактовая частота 12,582912 МГц. Коэффициент умножения может изменяться программно в пределах от 3 до 384 и составлять 3, 6, 12, 24, 48, 96, 192 и 384. В связи с этим частоты, на которых работает процессор, соответственно равны 98304, 196608, 393216, 786432, 1572864, 3145728 и 12582912 Гц. Циклическая же частота процессора в микроконтроллерах ADUC8XX в 12 раз ниже тактовой. Кроме того, в микроконтроллерах ADUC83X в качестве генератора скорости обмена по RS232 используется специальный таймер (ТЗ), с помощью которого можно устанавливать скорость обмена не только 115200, но и 230400 бод (!), хотя, конечно, такую скорость обмена по RS232 уже не поддерживает компьютер.

В новейших микроконтроллерах ADUC84X производства фирмы Analog Devices, в микроконтроллерах C8051FXXX производства фирмы CYGNAL, а также в некоторых микроконтроллерах серии VERSA производства фирмы Goal Semiconductor Inc., имеющих быстрое 51-совместимое ядро (RISC-процессор), циклическая частота процессора еще более приближена к тактовой. В этих микроконтроллерах одна команда процессора выполняется уже за один-два такта. К тому же эти микроконтроллеры оборудованы специальными делителями тактовой частоты, предназначенными для генерации скорости обмена по RS232. Таким образом, в микроконтроллерах имеется множество возможностей для задания скорости обмена по RS232.

Далее будут приведены сведения по программированию интерфейса RS232, которым оборудованы самые простые микроконтроллеры, а также некоторые современные микроконтроллеры.

Необходимо еще добавить следующее. Поскольку для написания программ в микроконтроллерах в настоящее время большей частью используются два языка программирования: ассемблер и Си, программы будут приведены именно на этих языках.

С каждым (особенно современным) микроконтроллером поставляется демонстрационное программное обеспечение, в котором, в частности, приведены файлы, включаемые (оператором $in-clude) как в ассемблерные программы, так и в программы на Си, с указанием названий регистров и их адресов в памяти микрокон-

43


троллера. Для включения в ассемблерные программы эти файлы имеют расширения *.INC (например, REG1210.INC) или названия MOD* (например, MOD834); для включения в программы на языке Си — расширения *.Н (например, ADUC834.H). Во всех приводимых далее программах (особенно для современных микроконтроллеров) будут использоваться такие файлы. Файлы приведены в описаниях на микроконтроллеры. В программах, где такие файлы не используются (программах, обычно написанных для более простых или "старых" микроконтроллеров и, как правило, на ассемблере), адреса регистров приняты по умолчанию и соответствующим образом включены в язык. Поэтому отсутствие этих файлов в приводимых программах не является ошибкой.

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

После этих предварительных замечаний приведем примеры инициализации интерфейса RS232 и примеры простейших команд ввода/вывода через этот интерфейс.

5.2. Инициализация RS232 и команды ввода/вывода

5.2.1. Инициализация RS232 без использования таймеров

Работа интерфейса RS232 в микроконтроллере в этом случае определяется содержимым только двух регистров:

а)регистра управления последовательным интерфейсом (Serial CONtrol - SCON);

б)7-м разрядом регистра микропотребления (Power CONtrol -PCON) - битом SMOD.

В табл. 5.1 показано содержимое регистра управления последовательным интерфейсом. Биты SMO, SM1 определяют режимы работы интерфейса в соответствии с табл. 5.2, из которой, в частности, следует, что в режиме 2 (SMO = 1, SM1= 0) интерфейс работает с постоянной скоростью FKB/64 или /\в/32, которая не зависит от таймеров.

Бит SM2 разрешает (SM2 = 1) или запрещает (SM2 = 0) многопроцессорную работу интерфейса (в нашем случае рассматривается только однопроцессорный режим, поэтому SM2 всегда должен быть равен 0). 44



0 ... 10 11 12 13 14 15 16 ... 55