Файл: Курс лекций Разработчик Афонин Ю. Д. Екатеринбург, 2007 2 Содержание.pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 12.01.2024

Просмотров: 225

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

87 0
1 2
3 4
5 6
7 0
0:1=данные приняты. Сбрасывается чтением приемника.
1:1=потеря предыдущего символа.
2:1=ошибка четности.
3:1=неверный стоп-бит.
4:1=обнаружен обрыв линии.
5:1=сдвиговый регистр передатчика пуст.
Можно передавать след. символ.
6:1=регистр передатчика пуст. Нет обрабатываемых данных.
Рисунок 5.8 - Регистр состояния линии.
3FEh
Чтение
Регистр состояния модема (рис. 5.9). Биты 0-3 вызывают прерываниe по изменению состояния модема, если оно разрешено:
0 1
2 3
4 5
6 7
0:1=изменилось состояние линии CTS.
1:1=изменилось состояние линии DSR.
2:1=изменилось состояние линии RI.
3:1=изменилось состояние линии DCD.
4: состояние линии CTS.
5: состояние линии DSR.
6: состояние линии RI.
7: состояние линии DCD.
Рисунок 5.9 - Регистр состояния модема.
"Изменилось состояние линии..." означает, что данная линия RS-232 изменила свое состояние по сравнению с последним чтением этого регистра.
Ниже, в качестве примера программирования интерфейса RS-232, приведена программа, позволяющая работать с промышленным компьютером
MicroPC в режиме терминала.
Program MicroCom2; {программа приема/передачи данных по RS-232 (COM2)}
uses Dos, Crt;
var
Int0BSave : Pointer; указательный тип buf, Save21, Out21 : byte;
Key : char; символьный тип
label
N1; метка перехода

88
Procedure InitCom2; {процедура инициализации СОМ2}
begin
Port[$2FB] := $80;{Установить бит 7 в 1(режим задания скорости)}
Port[$2F8] := $0C;{Скорость 9600 бот }
Port[$2F9] := $0; { 115200/9600 = 12 = 0CH}
Port[$2FB] := $03;{8 бит данных, 2 стоп, без проверки четности}
Port[$2F9] := $01;{разрешить прерывание по приему байта}
Port[$2FC] := $0B;{установить DTR, RTS, OUT2 }
end;
Procedure InpCom2; interrupt; {процедура обработки прерывания}
begin
buf := Port[$2F8]; {прием байта из СОМ2}
Port[$20] := $63; {сигнал окончания обработки прерывания}
write(chr(buf)); {вывод принятого символа}
end;
begin
{main}
asm
cli
{запретить прерывания}
end;
InitCom2; {Инициализация СОМ2}
GetIntVec($0B, Int0BSave); {сохранить вектор прерывания 0Bh в
Int0BSave}
SetIntVec($0B, @InpCom2); {записать по адресу вектора 0Bh адрес процедуры обработки прерывания InpCom2}
Save21 := Port[$21]; {чтение маски прерываний из порта 21}
Out21:=(Save21 and $F7);{разрешение прерывания по СОМ2, бит 3=0 }
Port[$21] := Out21; {вывод маски прерываний в порт 21 контроллера прерываний}
1   2   3   4   5   6   7   8   9   10

asm
sti {разрешить прерывания}
end;
N1: repeat until KeyPressed; {пустой цикл пока не нажата любая клавиша}
Key := ReadKey; { чтение символа нажатой клавиши}
While Port[$2FD] and $20 = 0 do; {ожидание разрешения передачи}
Port[$2F8] := ord(Key); {передача кода нажатой клавиши}
if Key <>chr(27) then goto N1; {если не Esc то переход на метку N1}
asm
cli {запретить прерывания}
end;
SetIntVec($0B, Int0BSave); {восстановить старый вектор прерывания}
Port[$21] := Save21; {восстановить старую маску прерываний}
asm

89 sti {разрешить прерывания}
end;
end.
{ interrupt – директива, вызывает генерацию машинных кодов, обеспечивающих помещение регистров процессора в стек при входе в процедуру обработки прерывания и извлечение их из стека при выходе из нее}.
5
.2 Интерфейс RS-485
Интерфейс RS-485 (другое название - EIA/TIA-485) - один из наиболее распространенных стандартов физического уровня связи. Физический уровень - это канал связи и способ передачи сигнала (1 уровень модели взаимосвязи открытых систем OSI).
Сеть, построенная на интерфейсе RS-485, представляет собой приемопередатчики, соединенные при помощи витой пары - двух скрученных проводов. В основе интерфейса RS-485 лежит принцип дифференциальной
(балансной) передачи данных. Суть его заключается в передаче одного сигнала по двум проводам. Причем по одному проводу (условно A) идет оригинальный сигнал, а по другому (условно B) - его инверсная копия. Другими словами, если на одном проводе "1", то на другом "0" и наоборот. Таким образом, между двумя проводами витой пары всегда есть разность потенциалов: при "1" она положительна, при "0" – отрицательна (рис. 5.10).
Потенциал линии А
Потенциал линии В
Разность потенциалов линий А и В
Рисунок 5.10 – Дифференциальная передача данных.
Именно этой разностью потенциалов и передается сигнал. Такой способ передачи обеспечивает высокую устойчивость к синфазной помехе. Синфазной называют помеху, действующую на оба провода линии одинаково. К примеру, электромагнитная волна, проходя через участок линии связи, наводит в обоих проводах потенциал. Если сигнал передается потенциалом в одном проводе

90 относительно общего, как в RS-232, то наводка на этот провод может исказить сигнал относительно хорошо поглощающего наводки общего ("земли"). Кроме того, на сопротивлении длинного общего провода будет падать разность потенциалов земель - дополнительный источник искажений. А при дифференциальной передаче искажения не происходит. В самом деле, если два провода пролегают близко друг к другу, да еще перевиты, то наводка на оба провода одинакова. Потенциал в обоих одинаково нагруженных проводах изменяется одинаково, при этом информативная разность потенциалов остается без изменений.
Аппаратная реализация интерфейса - микросхемы приемопередатчиков с дифференциальными входами/выходами (к линии) и цифровыми портами (к портам UART контроллера). Существуют два варианта такого интерфейса: RS-422 и RS-485.
RS-485 - полудуплексный интерфейс. Прием и передача идут по одной паре проводов с разделением по времени. В сети может быть много передатчиков, так как они могут отключаться в режиме приема (рис. 5.11).
DI
RO
Y
Z
A
B
D
R
D
R
DI
RO
RE
DE
RS-422
RS-485
A
B
Рисунок 5.11 – Приемопередатчики интерфейсов RS-422 и RS-485.
D(driver) - передатчик; R (receiver) - приемник;
DI (driver input) - цифровой вход передатчика;
RO (receiver output) - цифровой выход приемника;
DE (driver enable) - разрешение работы передатчика;
RE (receiver enable) - разрешение работы приемника;
A - прямой дифференциальный вход/выход;
B - инверсный дифференциальный вход/выход;
Y - прямой дифференциальный выход (RS-422);
Z - инверсный дифференциальный выход (RS-422).


91
RS-422 - полнодуплексный интерфейс. Прием и передача идут по двум отдельным парам проводов. На каждой паре проводов может быть только по одному передатчику.
Остановимся поподробнее на приемопередатчике RS-485. Цифровой выход приемника (RO) подключается к порту приемника UART (RX).
Цифровой вход передатчика (DI) к порту передатчика UART (TX). Поскольку на дифференциальной стороне приемник и передатчик соединены, то во время приема нужно отключать передатчик, а во время передачи - приемник. Для этого служат управляющие входы - разрешение приемника (RE) и разрешения передатчика (DE). Так как вход RE инверсный, то его можно соединить с DE и переключать приемник и передатчик одним сигналом с любого порта контроллера. При уровне "0" - работа на прием, при "1" - на передачу (рис 5.12).
RX
TX
RO
DI
RE
DE
A
B
Витая пара п/п RS-485
Микроконтроллер
PortX
Рисунок 5.12 - Приемопередатчик RS-485.
Приемник, получая на дифференциальных входах (AB) разность потенциалов (UAB) переводит их в цифровой сигнал на выходе RO.
Чувствительность приемника может быть разной, но гарантированный пороговый диапазон распознавания сигнала производители микросхем приемопередатчиков пишут в документации. Обычно эти пороги составляют ±
200 мВ. То есть, когда UAB > +200 мВ - приемник определяет логическую "1", когда UAB < -200 мВ - приемник определяет логический "0". Если разность потенциалов в линии настолько мала, что не выходит за пороговые значения - правильное распознавание сигнала не гарантируется. Кроме того, в линии могут быть и не синфазные помехи, которые исказят столь слабый сигнал.
Все устройства подключаются к одной витой паре одинаково: прямые выходы (A) к одному проводу, инверсные (B) - к другому.

92
Входное сопротивление приемника со стороны линии (RAB) обычно составляет 12 КОм. Так как мощность передатчика не беспредельна, это создает ограничение на количество приемников, подключенных к линии. Согласно спецификации RS-485 c учетом согласующих резисторов передатчик может вести до 32 приемников. Однако есть ряд микросхем с повышенным входным сопротивлением, что позволяет подключить к линии значительно больше 32 устройств.
Максимальная скорость связи по спецификации RS-485 может достигать
10 Мбод. Максимальное расстояние - 1200 м. Если необходимо организовать связь на расстоянии большем 1200 м или подключить больше устройств, чем допускает нагрузочная способность передатчика - применяют специальные повторители (репитеры).
Стандартные параметры
интерфейсов
RS-422
RS-485
Допустимое число передатчиков / приемников
1 / 10 32 / 32
Максимальная длина кабеля
1200 м
1200 м
Максимальная скорость связи
10 Мбит/с 10 Мбит/с
Диапазон напряжений "1" передатчика
+2...+10
В
+1.5...+6
В
Диапазон напряжений "0" передатчика
-2...-10 В
-1.5...-6 В
Допустимый диапазон напряжений приемника
-7...+12 В
-7...+7 В
Пороговый диапазон чувствительности приемника
±200 мВ
±200 мВ
Максимальный ток короткого замыкания драйвера
150 мА
250 мА
Допустимое сопротивление нагрузки передатчика
100 Ом
54 Ом
Входное сопротивление приемника
4 кОм
12 кОм


93
Согласование и конфигурация линии связи. При больших расстояниях между устройствами, связанными по витой паре и высоких скоростях передачи начинают проявляться так называемые эффекты длинных линий. Причина этому - конечность скорости распространения электромагнитных волн в проводниках. Скорость эта существенно меньше скорости света в вакууме и составляет немногим больше 200 мм/нс. Электрический сигнал имеет также свойство отражаться от открытых концов линии передачи и ее ответвлений.
Грубая аналогия - желоб, наполненный водой. Волна, созданная в одном конце, идет по желобу и, отразившись от стенки в конце, идет обратно, отражается опять и так далее, пока не затухнет. Для коротких линий и малых скоростей передачи этот процесс происходит так быстро, что остается незамеченным.
Однако, время реакции приемников - десятки/сотни нс. В таком масштабе времени несколько десятков метров электрический сигнал проходит отнюдь не мгновенно. И если расстояние достаточно большое, фронт сигнала, отразившийся в конце линии и вернувшийся обратно, может исказить текущий или следующий сигнал. В таких случаях нужно каким-то образом подавлять эффект отражения.
Решение этой проблемы следующее. У любой линии связи есть такой параметр, как волновое сопротивление Zв. Оно зависит от характеристик используемого кабеля, но не от длины. Для обычно применяемых в линиях связи витых пар Zв=120 Ом. Оказывается, что если на удаленном конце линии, между проводниками витой пары включить резистор с номиналом равным волновому сопротивлению линии, то электромагнитная волна, дошедшая до "тупика", поглощается на таком резисторе. Отсюда его названия - согласующий резистор или "терминатор".
Большой минус согласования на резисторах - повышенное потребление тока от передатчика, ведь в линию включается низкоомная нагрузка. Поэтому рекомендуется включать передатчик только на время отправки посылки. Есть способы уменьшить потребление тока, включая последовательно с согласующим резистором конденсатор для развязки по постоянному току.

94
Однако, такой способ имеет свои недостатки. Для коротких линий (несколько десятков метров) и низких скоростей (меньше 38400 бод) согласование можно вообще не делать.
Эффект отражения и необходимость правильного согласования накладывают ограничения на конфигурацию линии связи.
Линия связи должна представлять собой один кабель витой пары. К этому кабелю присоединяются все приемники и передатчики. Расстояние от линии до микросхем интерфейса RS-485 должно быть как можно короче, так как длинные ответвления вносят рассогласование и вызывают отражения.
В оба наиболее удаленных конца кабеля (Zв=120 Ом) включают согласующие резисторы Rt по 120 Ом (0.25 Вт). Если в системе только один передатчик и он находится в конце линии, то достаточно одного согласующего резистора на противоположном конце линии (рис 5.13).
Витая пара
Rt
Rt
A
A
A
A
B
B
B
B
Рисунок 5.13 – Согласование линий связи интерфейса RS-485.
5.3 БИС программируемого параллельного интерфейса
КР580ВВ55А (82С55А)
Микросхема КР580ВВ55А представляет универсальную программно – программируемую интерфейсную БИС, с помощью которой возможна организация обмена в параллельном формате практически с любым периферийным оборудованием. Она размещена в пластиковом корпусе с 40 выводами, потребляет мощность 350мВт и требует напряжения питания 5В.
Микросхема может быть использована для организации синхронного и асинхронного обмена, обмена в режиме прерывания программы.


95 34 33 32 31 30 29 28 27 9
8 5
36 6
35
ЛД0
ЛД1
ЛД2
ЛД3
ЛД4
ЛД5
ЛД6
ЛД7
А0
А1
А2
А3
А4
А5
А6
А7
В0
В1
В2
В3
В4
В5
В6
В7
С0
С1
С2
С3
С4
С5
С6
С7
А0
А1
ЧТ
ЗП
ВМ
СБР
4 3
2 1
40 39 38 37 18 19 20 21 22 23 24 25 14 15 16 17 13 12 11 10 26 7
+5
В
Общ.
Рисунок 5.14 – КР580ВВ55А
В состав БИС входят три 8-разрядных канала А, В, С. Обмен информацией между каналами ввода/вывода и шиной данных микропроцессорной системы производится через двунаправленную шину
ЛД(0÷7) (рис. 5.14).
В БИС используются следующие сигналы:
ВМ – выбор микросхемы. Разрешение работы БИС. При ВМ=1 выводы шины данных ЛД(0÷7) находятся в состоянии с высоким выходным сопротивлением.
А0, А1 – адрес. Обращение к одному из трех каналов или регистру управляющего слова.
ЧТ – чтение. Чтение данных из КР580ВВ55А на шину данных.
ЗП – запись. Запись байта данных с шины данных в КР580ВВ55А.
СБР – сброс. Все регистры, включая регистр управляющего слова, устанавливаются в нулевое состояние. Все каналы переводятся в режим ввода.

96
Перед началом работы, программным способом, путем передачи в БИС специальных команд инициализации, назначаются режимы работы каждого из каналов. Иначе говоря, в управляющий регистр рассматриваемой БИС программным способом заносится соответствующее управляющее слово.
Содержимое этого слова задает один из трех возможных режимов работы каналов ввода/вывода: основного (режим 0), стробируемого однонаправленного
(режим 1), стробируемого двунаправленного (режим 2). Режимы работы каналов А и В могут быть заданы независимо друг от друга. Канал С делится на две части С4-С7, С0-С3, режимы работы которых можно задавать независимо, кроме того каждым разрядом канала С можно управлять отдельно.
Формат управляющего слова для задания режимов следующий
(рис.5.15):
0 1
2 3
4 5
6 7
Д7
Д6
Д5
Д4
Д3
Д2
Д1
Д0 1- ввод С(0-3)
0-вывод
1- ввод В(0-7)
0-вывод
0- режим 0 Выбор
1-режим 1 режима
1- ввод С(4-7)
0-вывод
1- ввод А(0-7)
0-вывод
00- режим 0 Выбор
01-режим 1 режима
11-режим 2 каналы
10-режим 2 А и С
1- задание режимов
Рисунок 5.15 – Управляющее слово для задания режимов.
На рисунке 5.16 приведен формат управляющего слова для поразрядного управления каналом С.

97 0
1 2
3 4
5 6
7
Д7
Д6
Д5
Д4
Д3
Д2
Д1
Д0 0- сбросить разряд
1-установить разряд
Номер разряда канала С
Значение не важно
0- управление разрядами канала С
Рисунок 5.16 – Поразрядное управление каналом С.
5.4 Интерфейс КОП
Модульный принцип организации современных микро-ЭВМ позволяет подключать измерительную аппаратуру через соответствующий интерфейс непосредственно к магистрали ЭВМ. По этому пути, как правило, создаются специализированные измерительные вычислительные комплексы, ориентированные на подключение к ЭВМ небольшого числа измерительных и управляющих устройств. Это может быть установка, сопряженная с микро-
ЭВМ, например электронный или рентгеновский спектрометр, или прибор со встроенной микро-ЭВМ, которая существенно расширяет его. возможности. В ряде случаев функционирование прибора осуществляется по жестким программам, которые хранятся в ППЗУ, при этом отпадает необходимость во внешней памяти.
Для создания гибких, легко перестраиваемых и наращиваемых автоматизированных систем, необходимых в лабораторных исследованиях, рассмотренный выше подход не используется, так как физическая нагрузочная способность магистрали микро-ЭВМ ограничена.
Непосредственное подключение к магистрали большого количества разнородных элементов измерительной аппаратуры и элементов управления практически не представляется возможным, поскольку увеличение числа нагрузок приводит к снижению надежности работы ЭВМ и всего комплекса в целом. В основном