Последовательный порт

Последовательный порт ВЕ51 осуществляет прием/передачу информации в последовательном коде, младшими битами вперед, в дуплексном (одновременный прием и передача информации) или полудуплексном режимах.

В состав последовательного канала входят принимающие и передающие сдвиговые регистры, специальный программно-доступный буфер SBUF, регистр управления SCON и логика управления каналом.

Упрощенная структура порта представлена на рисунке 18,

 
РгСПер
TxD

Запрос прерывания
  CC

ВМ
СT1
  БПП (SBUF)
  УУ
 
TI
RI
РгСПр
RxD
OSC

Рисунок 18.- Структура последовательного порта

где

РгСПер – регистр сдвига передатчика;

СС – схема синхронизации;

УУ – устройство управления;

РгСПр – регистр сдвига приемника;

БПП – буфер приемопередатчика;

TI, RI – флаг готовности, соответственно передатчика и приемника;

ВМ – внутренняя магистраль;

TxD, RxD – вход приемника, выход передатчика;

OSC – выход системного генератора:

CT1 – сигнал переполнения счетчика-таймера 1.

Программная модель порта включает регистр управления и состояния последовательного порта SCON, буфер приемопередатчика SBUF, и бит SMOD регистра PCON.

Последовательный канал может работать в следующих четырех режимах:

Режим «0» ‑ синхронный обмен в полудуплексном режиме с частотой OSC/12. Формат посылки – 8 бит. Данные принимаются и передаются через вход RxD, а частота синхронизации формируется на выходе TxD. В этом режиме, порт работает как восьмиразрядный сдвиговый регистр.

Режим «1» ‑ асинхронный обмен, десятибитовый кадр, состоящий из стартового (ноль), стопового (единица) битов и 8-разрядного символа. Скорость приема и передачи определяется частотой переполнения счетчика СT1. В зависимости от состояния бита SMOD регистра PCON частота, поступающая на вход схемы синхронизации последовательного канала с выхода СТ1, может изменяться в два раза.. При приеме стоп-бит заносится в бит RB8 регистра SCON.

Режим «2» ‑ асинхронный 11-битовый кадр. По сравнению с режимом «1» добавлен программно устанавливаемый девятый бит. Передаваемый девятый бит данных принимает значение бита TB8 из регистра управления SCON. Этот бит может быть программно установлен в «0» или «1». В частности, ТВ8 можно присвоить значение бита паритета Р из регистра PSW для повышения достоверности передаваемой информации. При приеме девятый бит данных поступает в бит RB8 регистра SCON. Скорость передачи фиксирована и определяется значением бита SMOD регистра PCON: OSC/32 или OSC/64.

Режим «3» ‑ аналогичен режиму «2», но скорость обмена задается счетчиком СT1 как в режиме «1».

Основная настройка последовательного канала на требуемый режим работы производится в регистре SCON, в котором задается режим работы, значение 11-го бита, разрешение контроля 11-го бита (в режимах «2» и «3»), флаги готовности приемника и передатчика.

Регистр управления/статуса SCON

Таблица 4

Символ Бит Имя и назначение
SM0   Биты управления режимом работы УАПП. Устанавливаются/сбрасываются программно (см. примечание).
SM1  
SM2   Запрещение приема кадров с нулевым восьмым битом. В режиме «0» должен быть сброшен. В режиме «1» при SM2=1 бит RI не устанавливается, если принятый стоп-бит равен 0. В режимах «2» и «3» при SM2=1 бит RI не устанавливается, если принятый девятый бит данных RB8=0. Устанавливается программно.
REN   Бит разрешения приема. Устанавливается/сбрасывается программно для разрешения/запрета приема последовательных данных.
TB8   Передача бита 8. Устанавливается/сбрасывается программно для задания девятого передаваемого бита в режимах «2», «3».
RB8   Прием бита 8. Устанавливается/сбрасывается аппаратно для фиксации девятого принимаемого бита в режимах «2», «3».В режиме «1» при SM2=0 в него записывается принятый стоп-бит. В режиме «0» не используется.
TI   Флаг готовности передатчика. Устанавливается аппаратно по окончании передачи байта. Сбрасывается программно.
RI   Флаг готовности приемника. Устанавливается аппаратно по окончании приема байта. Сбрасывается программно.
Примечание
SM0 SM1 Режим работы УАПП
    Режим 0
    Режим 1
    Режим 2
    Режим 3
         

Запись байта в передатчик осуществляется автоматически, после того, как информация записана в регистр приемопередатчика SBUF. Повторная запись возможна только после установки флага TI. Чтение информации выполняется из этого же регистра после установки флага готовности последовательного канала RI.

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

На рисунке 19 показана временная диаграмма работы последовательного порта в режиме «0».

 
 


Передача начинается любой командой, по которой в SBUF поступает байт данных. В момент времени S6P2 устройство управления ОМК по сигналу «Запись в буфер» записывает байт в РгСПер и запускает блок управления передачей, который через один машинный цикл вырабатывает разрешающий сигнал «Посылка». При этом в момент S6P2 каждого машинного цикла содержимое сдвигающего регистра сдвигается вправо (младшими битами вперед) и поступает на вывод RXD. В освобождающиеся старшие биты сдвигающего регистра передатчика записываются нули. При получении сигнала «Передатчик пуст» блок управления передатчиком снимает сигнал «Посылка» и устанавливает флаг TI (момент S1P1 десятого машинного цикла после поступления сигнала «Запись в буфер»).

Прием начинается при условии REN = 1 и RI = 0. В момент S6P2 следующего машинного цикла блок управления приемником формирует разрешающий сигнал «Прием», по которому на выход TхD передаются синхросигналы сдвига и в РгСПр формируются значения бит данных, которые считываются с входа RXD в моменты S5P2 каждого машинного цикла. В момент S1P1 десятого машинного цикла после сигнала «Запись в SCON» блок управления приемником переписывает содержимое сдвигающего регистра в РПП, снимает разрешающий сигнал «Прием» и устанавливает флаг RI.

На рисунке 20 показаны временные диаграммы работы при приеме и передаче данных в режиме «1» Через вывод TхD передает, а с вывода RхD принимает 10 бит: старт-бит (0), 8 бит данных и стоп-бит (1). При приеме стоп-бит поступает в бит RB8 регистра SCON.

 
 


Передача инициируется любой командой, в которой получателем байта является регистр SBUF. Генерируемый при этом управляющий сигнал «Запись в буфер» загружает «1» в девятый бит сдвигающего регистра передатчика, запускает блок управления передачей и в момент времени S1P1 формирует разрешающий сигнал «Посылка». По этому сигналу на вывод TXD сначала поступает старт-бит, а затем (по разрешающему сигналу «Данные») биты данных. Каждый период передачи бита, равен 16 тактам внутреннего счетчика.

Прием начинается при обнаружении перехода сигнала на входе RXD из состояния «1» в состояние «0». Если значение, принятое в первом такте, не равно «0», то блок управления приемом вновь возвращается к поиску перехода из «1» в «0». Этот механизм обеспечивает подавление ложных (сбойных) «старт-бит». Истинный «старт-бит» сдвигается в регистре приемника, и продолжается прием остальных бит посылки. В процессе приема значение бита проверяется трижды. Истинное значение определяется на основании мажоритарного голосования (два из трех). Блок управления приемом сформирует сигнал Загрузка буфера, установит RB8 и флаг RI только в том случае, если в последнем такте сдвига выполняются два условия: бит RI = 0, и либо SM2 = 0, либо принятый «стоп-бит» равен «1». Если одно из этих двух условий не выполняется, то принятая последовательность бит теряется. В это время вне зависимости от того, выполняются указанные условия или нет, блок управления приемом вновь начинает отыскивать переход из «1» в «0» на входе RXD.

На временной диаграмме (рисунок 21) показана работа последовательного порта при передаче и приеме данных в режимах «2» и «3». Как видно, режимы «2» и «3» отличаются от режима «1» только наличием девятого программируемого бита. Вследствие этого несколько изменяются условия окончания цикла приема: блок управления приемником сформирует управляющий сигнал «Загрузка буфера», загрузит RB8 и установит флаг RI только в том случае, если в последнем такте сдвига выполняются два условия: бит RI = 0 и либо SM2 = 0, либо значение принятого девятого бита данных равно «1».

Скорость последовательного обмена в зависимости от режима работы определяется либо частотой работы ОМК (режимы «0» и «2») либо частотой переполнения C/T1 (режимы «1» и «3»).

В режимах 1-3 импульсы переполнения счетчика С/Т1 поступают на делитель частоты, управляемый битом SMOD регистра PCON, обеспечивая изменение частоты передачи информации в 2 раза, а затем эта частота делится на 16 для получения сигналов синхронизации последовательного канала. Структура схемы синхронизации имеет вид:

Рисунок 22.- Схема синхронизации последовательного канала

В режиме «2» скорость задается частотой . В режимах «1» и «3» ‑ частотой: , частота переполнения С/T1.

Частота переполнения счетчика в режиме «1» определяется как (65536 ‑ коэффициент деления), а для режима «2» ‑ (256 ‑ коэффициент деления).

Для использования CT1 в качестве источника скорости обмена необходимо:

· запретить прерывание от CT1;

· запрограммировать работу CT1;

· запустить CT1.

Наиболее удобен для использования в последовательном канале режим «2» счетчика/таймера (СТ1), если с его помощью можно обеспечить требуемую скорость передачи, так как в этом режиме не требуется перезагрузка коэффициента пересчета.

В таблице 5 приводится описание способов настройки Т/С1 для получения типовых частот передачи данных через УАПП.

Настройка таймера 1 для управления частотой работы УАПП

Таблица 5

Частота приема/передачи (BAUD RATE) Частота резонатора, МГц SMOD Таймер/счетчик 1
C/T Режим (MODE) Перезагружаемое число
Режим 0, макс: 1 МГц     X X X
Режим 2, макс: 375 кГц     X X X
Режимы 1, 3: 62.5 кГц         0FFh
19.2 кГц 11.059       0FDh
9.6 кГц 11.059       0FDh
4.8 кГц 11.059       0FAh
2.4 кГц 11.059       0F4h
1.2 кГц 11.059       0E8h
137.5 Гц 11.059       1Dh
110 Гц         72h
110 Гц         0FEEBh

Формат регистра PCON приведен в таблице 6.

Регистр управления мощностью PCON

Таблица 6

Символ Бит Имя и назначение
SMOD   Удвоенная скорость передачи. Если бит установлен в 1, то скорость передачи вдвое больше, чем при SMOD = 0
  Не используются
 
 
GF1   Флаги, специфицируемые пользователем (флаги общего назначения)
GF0  
PD   Бит пониженной мощности. При установке бит а в 1 МК переходит в режим пониженной потребляемой мощности
IDL   Бит холостого хода. Если бит установлен в 1, то МК переходит в режим холостого хода
Примечание: При одновременной записи 1 в PD и IDL бит PD имеет преимущество. Сброс содержимого регистра выполняется путем загрузки в него кода 0XXX0000.

Подготовка к работе последовательного порта состоит в следующем:

· выбрать режим работы, задав соответствующее значение регистра SCON, в котором флаги готовности должны быть сброшены.

· определить частоту работы. Установить требуемое значение бита SMOD. Для режимов «1» и «3» последовательного порта выбрать режим работы СТ1. В тех случаях, когда это возможно, предпочтение следует отдавать режиму «2». При работе в других режимах СТ необходимо обеспечить регенерацию коэффициента деления.

· выбрать способ ввода-вывода данных порта. В зависимости от выбранного способа запретить или разрешить прерывания от флагов готовности порта.

· при приеме информации установить бит разрешения приема REN.

В системах децентрализованного управления, которые используются для управления и регулирования в распределенных объектах (например, прокатных станах, электроподвижном составе железных дорог и метрополитена, сборочных конвейерах и линиях гибких автоматизированных производств), возникает задача обмена информацией между множеством микроконтроллеров, объединенных в локальную вычислительно-управляющую сеть. Как правило, локальные сети на основе 8051 имеют магистральную архитектуру с разделяемым моноканалом (коаксиальный кабель, витая пара, оптическое волокно), по которому осуществляется обмен информацией между ОМК. При этом, передающий ОМК играет роль ведущего, а принимающие – роль ведомых. Механизм такой передачи аппаратно поддерживается битом SM2 регистра SCON. Ведущий микроконтроллер, вначале, посылает кадр, содержащий адрес одного из ведомых микроконтроллеров. Адрес отличается от данных тем, что его девятый бит данных установлен в «1», в то время как у кадра данных девятый бит равен «0». При SM2=1 кадр адреса вызывает прерывание, а кадр данных – нет. Процедура обработки прерываний всех ведомых анализирует принятый адрес, при идентификации своего адреса микроконтроллер сбрасывает бит SM2 и читает последующие данные. Остальные ведомые оставляют бит SM2 установленным и продолжают выполнять текущую программу.

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

При организации последовательного канала необходимо учитывать, что передатчик может работать на длинную линию. В этом случае следует использовать внешние буферные схемы, обладающие повышенной нагрузочной способностью.

Реализация протоколов стандартных интерфейсов RS-232, RS-485 требует применения специальных БИС, обеспечивающих формирование соответствующих сигналов: RS-232 (-12B – «лог. 1», +12B – «лог. 0»), RS-485(дифференциальный сигнал). В качестве формирователей RS-232 можно использовать передатчики ‑ К559ИП19, К170АП2, приемники - К559ИП20, К170УП2. Недостатком передатчиков этих схем является необходимость использования источников напряжения +/-12В. Лучшими характеристиками обладают формирователи MAX235, MAX221, 242, которые питаются только от напряжения +5В и содержат в одном корпусе, как приемники, так и передатчики.

Система прерываний

Система прерываний (CП) реализована в виде двухуровневой системы с пятью источниками запросов ‑ 2 внешних (INT0, INT1), 2 прерывания от флагов переполнения счетчиков-таймеров TF0, TF1 и одно от последовательного канала (TI и/или RI). Организацию системы прерываний иллюстрирует рисунок 23. В качестве регистров запроса прерываний используются регистры TCON и SCON.

В TCON хранятся биты переполнения счетчиков, которые сбрасываются автоматически при обращении к подпрограмме обработки прерываний, и флаги внешних прерываний. В SCON – флаги готовности последовательного порта.

Восприятие запроса по входам INTO, INT1 может быть программно установлено по уровню (ноль) или срезу (единица). Запрос по срезу предпочтительнее, так как сброс флага запроса прерываний реализуется автоматически при обращении к подпрограмме обработки прерываний; а в первом случае сброс запроса выполняется программно.

Последовательный порт имеет один общий вектор прерывания для TI и RI. Поэтому, в процедуре обработки прерываний, необходимо уточнять источник запроса методом полинга.

EXi
 
 
Рисунок 23.- Организация системы прерываний
 

INTi
&
IEi

ETi

ITi

LCALL VE
&
TFi

ES

TCON
TI

&

SCON
RI

TCON
IE


Прерывание можно вызвать также, если установить соответствующие флаги в регистрах TCON и SCON программно.

Управление подсистемой прерывания осуществляется при помощи регистра маски IE и регистра приоритетов IP.

Регистр масок прерывания

Таблица 7

Символ Бит Назначение
ЕА IE.7 Общее разрешение прерываний. Сбрасывается программно для запрета всех прерываний независимо от состояний IЕ4 - IЕ0
IE.6 В 8051 не используются
IE.5
ES IE.4 Разрешения прерывания от последовательного порта. Установка/сброс программой для разрешения/запрета прерываний от флагов TI или RI
ET1 IE.3 Разрешения прерывания от таймера 1. Установка/сброс программой для разрешения/запрета прерываний от таймера 1
EX1 IE.2 Разрешения внешнего прерывания 1. Установка/сброс программой для разрешения/запрета прерываний
ET0 IE.1 Разрешения прерывания от таймера 0. Работает аналогично IE.3
EX0 IE.0 Разрешения внешнего прерывания 0. Работает аналогично IE.2

Регистр приоритетов прерываний

Таблица 8

Символ Бит Назначение
IP.7 - IP.5 В 8051 не используются
PS IP.4 Бит приоритета последовательного порта. Установка/сброс программой для присваивания прерыванию высшего/низшего приоритета
PT1 IP.3 Бит приоритета таймера «1». Установка/сброс программой для присваивания прерыванию от таймера «1» высшего/низшего приоритета
PX1 IP.2 Бит приоритета внешнего прерывания 1. Установка/сброс программой для присваивания высшего/низшего приоритета внешнему прерыванию
PT0 IP.1 Бит приоритета таймера «0». Работает аналогично IP.3
PX0 IP.0 Бит приоритета внешнего прерывания 0. Работает аналогично IP.2
Примечание: Флаги прерываний опрашиваются в момент S5P2 каждого машинного цикла. Ранжирование прерываний по уровню приоритета выполняется в течение следующего машинного цикла.

Каждому источнику запроса прерываний можно присвоить один из двух уровней приоритета сбросом или соответствующей установкой битов регистра IP.

Процедура обслуживания запроса с низким приоритетом может быть прервана запросом более высокого уровня. Прерывание от запроса с высоким приоритетом не может быть остановлено никаким другим запросом.

Для разрешения конфликтов одного уровня используется схема вторичного арбитража, устанавливающая следующие приоритеты:

IE0(INT0) высший
TF0  
IE1(INT1)  
TF1  
RI или TI низший

Запросы на прерывание могут быть приняты к обслуживанию в конце каждого командного цикла за исключением исполнения команды RETI и команд с любым обращением к регистрам IE и IP. Это обстоятельство гарантирует выполнение хотя бы еще одной инструкции после команд обращения к IE, IP, RETI, прежде чем возникнет новое прерывание. Эта особенность может быть использована для организации пошагового режима.

Если прерывание разрешено, то ОМК генерирует команду LCALL vect, где vect принимает значения:

IE0(INT0) 0003h EXIT0
TF0 000Bh TIMER0
IE1(INT1) 0013h EXIT1
TF1 001Bh TIMER1
RI или TI 0023h SINT

Так как вектора располагаются в начальных адресах памяти и расстояние между ними всего 8 байт, программы обработки прерываний следует располагать по адресам большим, чем 0026h. По адресу вектора обычно располагаются команды LJMP или LCALL с адресом начала подпрограммы обработки прерывания.

При переходе к процедуре обслуживания прерываний состояние РС автоматически загружается в стек, обеспечивая возврат к прерванной программе по команде RETI. Если в процессе выполнения подпрограммы обработки прерываний требуется сохранение/восстановление используемых регистров, то необходимо использовать команды записи/чтения в стек PUSH, POP.

Если число внешних источников запросов больше двух, то их можно объединить по ИЛИ на входах INT0 и INT1. Дальнейшая обработка запросов производится методом полинга. Наиболее просто это реализуется по схеме «Монтажное ИЛИ» (открытый коллектор или открытый сток). Дополнительно потребуется регистр запросов прерывания, в качестве которого может использоваться свободный параллельный порт или его часть.

Процедура активизации системы прерываний состоит в следующем:

· На основании анализа задачи распределить приоритеты запросов и сформировать соответствующие значения для записи в регистры IE, IP;

· Определить глубину стека и зарезервировать под стек требуемое количество ячеек резидентной памяти данных. Обычно стек располагают в старших адресах свободной зоны;

· Задать значение указателя стека;

· При работе с внешними прерываниями задать вид запроса (по срезу или по уровню) в регистре TCON. При запросе в виде низкого уровня сигнала активное значение должно удерживаться на входе до начала обработки данного запроса. Далее сигнал должен быть пассивным до завершения процедуры обработки прерываний. Если запрос формируется по срезу, высокий и низкий уровни сигналов должны удерживаться не менее одного машинного цикла каждый;

· Определить адреса подпрограмм обработки прерываний и разместить их по соответствующим векторам;

· Создать подпрограмму обработки прерываний, которая должна состоять из блока сохранения информации о прерванной программе, процедуры обработки прерываний, блока восстановления информации о прерванной программе. На стадии сохранения и восстановления прерывания должны быть запрещены. Подпрограмма должна завершаться командой возврата из прерывания RETI. Если вместо RETI будет использоваться команда RET, то повторное прерывание по этому входу не произойдет.

· По сбросу регистры IE и IP обнуляются, то есть прерывания запрещены, поэтому необходимо записать требуемые значения в IE, IP и разрешить прерывания. Прерывания обычно разрешают после процедуры инициализации программного обеспечения.

Особые режимы работы

Сброс. Сброс осуществляется подачей «лог. 1» на вход RST и должен удерживаться в этом состоянии не менее 24/OSC. Под действием сброса обнуляются регистры PC, FC, PSW, DPTR, TMOD, TCON, T/C0, T/C1, IE, IP, SCON, в регистре PCON сбрасывается только старший бит, в регистр SP загружается код 07h, а порты P0-P3 – коды 0FFh. Состояние регистра SBUF неопределенное. Сигнал сброс не воздействует на содержимое РПД. Когда включается питание, состояние РПД ‑ неопределенное, за исключением операции возврата из режима пониженного энергопотребления.

Режим холостого хода. ОМК работает в этом режиме, если бит PCON.0 установлен. При этом продолжает работать внутренний генератор, но блокируются функциональные узлы ЦП, что уменьшает энергопотребление на 15÷30%. Все регистры и РПД сохраняют свои значения, а на выводах ALE и PSEN формируется уровень единицы. Выйти из этого режима можно по сбросу или по прерыванию. По любому из этих действий бит PCON.0 сбрасывается и продолжится работа ОМК с той команды, перед которой был установлен режим холостого хода.

Режим пониженного энергопотребления. Переход в этот режим возможен, если установить бит PCON.1. В этом режиме внутренний генератор прекращает работу и сохраняется только содержимое РПД. Поэтому необходимые регистры спецфункций предварительно следует сохранять в РПД.

Резервное питание должно поступать через вывод RST/VPD. Напряжение основного источника питания может быть уменьшено до 2 В. Перед выходом из режима, оно должно быть восстановлено до номинального значения. Энергопотребление снижается более значительно, чем в режиме холостого хода.

В ОМК 1830ВЕ51 при номинальном токе потребления 18 мА это значение снижается в режиме холостого хода до 4,2 мА, а в режиме пониженного энергопотребления – до 50 мкА.

Выход из режима возможен только по сигналу сброса, который должен удерживаться в активном состоянии не менее 10 мс (время восстановления работы задающего генератора).

При одновременной записи PCON.0 и PCON.1 преимущество имеет PCON.1.

Режимы холостого хода и пониженного энергопотребления поддерживаются не всеми ОМК и эту ситуацию необходимо контролировать.

Защита от падения напряжения. При не мгновенных отказах электропитания ОМК можно обеспечить сохранность содержимого РПД с помощью батарейного питания, присоединенного к выводам RST/VPD. Для этого ОМК, получив сообщение о грозящем отключении, должен перезагрузить необходимые параметры в РПД и перейти в режим пониженного энергопотребления. После восстановления номинального напряжения выполняется системный сброс, и источник аварийного питания может быть отключен.

Режим загрузки и верификации программ. Под воздействием внешних электрических сигналов в ОМК может быть записано требуемое программное обеспечение. Для ПЗУ с ультрафиолетовым стиранием (УФ) информации его необходимо предварительно очистить, поместив ОМК под источник УФ с длиной волны менее 4х10-7м. Программирование осуществляется на частоте внутреннего генератора 4–6 МГц. Адрес, по которому осуществляется программирование, задается через порт 1 и выводы Р2.0 – Р2.3, а данные должны быть поданы на вход порта Р0. В процедуре программирования задействованы и другие выводы ОМК. В процессе программирования необходимо формировать определенную временную диаграмму и иметь дополнительный источник импульсных сигналов амплитудой 21+/-0,5 В.

В процессе программирования можно установить бит защиты, который запрещает доступ к резидентной памяти программ любыми внешними средствами. Бит защиты можно сбросить только путем полного стирания содержимого памяти под источником УФ.

Если бит защиты не установлен, то содержимое резидентной памяти можно прочитать с помощью процедуры аналогичной процедуре программирования.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: