Раздел: Документация
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
|