русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Тестовая диагностика СOM-Порта

Универсальный асинхронный приемопередатчик (UART) 8250, 16450, 16550 предназначен для асинхронного двунаправленного, последовательного обмена информацией.

Интерфейс RS232C:

І. Аппаратные средства:

  1. Адаптер (СОМ (comunication)- порт);
  2. Разьем DB9 (9-контактный);
  3. Сигналы СОМ-порта : -15В («1» или пауза), перепад из 1 в 0 (от -15В до +15В – сигнал «Старт»); +15В – «0»

ІІ. Дальше следуют:

  1. Передаваемый байт (код символа) начиная с младших разрядов к старшим.
  2. Битовый контроль по паритету ( четность, нечетность и без контроля).
  3. Один или два стоповых бита (для создания паузы между передачей).

DB9 имеет 9 контактов, из которых контакт 2 – передающий, контакт 3 – принимающий, контакт 5 – общий провод по питанию.

 

Возможности СОМ-порта

UART имеет 10 программируемых однобайтных регистров, которые задают:
1. скорость передачи (от 2-х до 115500 бод (бит/сек));
длину передаваемого слова (от 5-ти до 8-ми бит);
вид контроля по паритету (четность, нечетность, без контроля);
количество стоп-битов (1-2);
работа с прерываниями (включена/отключена);
режим для самотестирования (программа соединяет выход COM-порта со входом).

Возможность работы с модемом (выдача сигнала связи).
Базовый регистр-порт имеет системный адрес 03F8h (для адаптера СОМ1) и 02F8h (для адаптера СОМ2);

 

Алгоритм тестирования СОМ-порта

І. Определения наличия СОМ1 и СОМ2. Выбор рабочего адаптера.
II. Цикл по передаче-приему побайтно символов ASCII-кодов с посимвольным сравнением  для режима «сам себе». Этот режим заставляет СОМ-порт выполнять передачу-прием собственных сигналов. Это выполняется физическим соединением контактов 2, 3 DB9 или программированием  регистра модема адаптера на программное соединение выхода со входом.
Алгоритм:

  1. Установка скорости.
  2. Установка длины слова.
  3. Установка стоп-битов.
  4. Установка типа контроля.
  5. Установка прерываний (да-нет).
  6. Соединение выхода СОМ-порта со входом (аппаратно или программно).
  7. Выполнение пересылки заготовленной тестовой строки (тестового файла) с помощью адаптера самому себе;
  8. Выполнение сравнения. Вывод результатов (п.1 – п.5 и результат)

 

Проэктирование тестирующей программы

Рассмотрим отдельные действия алгоритма в виде подпрограмм.

  1. Подпрограмма определения наличия адаптера и выбора рабочего.

При включении ПК все системные ресурсы идентифицируются в системной области памяти. Для СОМ-портов это $40:$00 должна содержать слово (16-разрядов) 03F8h – наличие СОМ1;  $40:$02 – слово 02F8h – наличие СОМ2.

Procedure COM1_2;
Begin
if (memw[$40:$00]=$03F8) then writeln(‘COM1 OK!’)
else writeln(‘COM1 ERROR!’);
if (memw[$40:$02]=$02F8) then writeln(‘COM2 OK!’)
else writeln(‘COM2 ERROR!’);
writeln(‘Выберите COM1 -> 1 или COM2 -> 2 ’);
readln(n1);
case:
1: Vd_m:=$03F8;
2: Vd_m:=$02F8;
end;
writeln(‘выбран СОМ-порт’, Vd_m);
End.

  1. Подпрограмма установки скорости.

Алгоритм:
1. Открыть делитель скорости;
2. Установить коэффициент деления в делителе (16-розрядном);
3. Выполнить задержку минимум 1мсек;
4. Вывести контрольное сообщение о величине установленной скорости.
5. Закрыть делитель.

Procedure COM1_2;
Begin
port[Vd_m+3]:= port[Vd_m+3] or $80;
{$80=1000 0000h -> единица в старшем бите порта открывает делитель скорости}
portw[Vd_m]:=115200 div (значение скорости); {установка 16- разрядного делителя скорости}
delay(5); {задержка 5мсек}
writeln(‘выставили скорость=’, 115200 div portw[Vd_m]);
port[Vd_m+3]:= port[Vd_m+3] and $7F; {закрытиеделителя}
End.

  1. Подпрограмма установки длины передаваемого слова

Длина слова:

5: port[Vd_m+3]:= port[Vd_m+3] and $FC; {FC->1111 1100}

6: port[Vd_m+3]:= (port[Vd_m+3] and $FC) or $01;

7: port[Vd_m+3]:= (port[Vd_m+3] and $FC) or $02;

8: port[Vd_m+3]:= port[Vd_m+3] or $03;

         writeln(‘вывод портов’);

  1. Подпрограмма установки типа контроля.
  2. Для паритета четности установить единицы в 3-м и 4-м битах порта: Vd_m+3=11;
  3. Для паритета нечетности в 3-м и 4-м битах порта установить 01 соответственно;
  4. Для установки отсутствия контроля в 3-й и 4-й биты  заносят нули;

Для проверки значения 3-го и 4-го битов выводят на экран.

  1. Установка стоп-битов без аппаратных прерываний и с сигналами модема.

port[Vd_m+3] and $1C – предполагает установку стоп-битов.
port[Vd_m+4] :=$00 – запрет аппаратных прерываний.
port[Vd_m+1] :=$00 – адаптер не выдает аппаратных прерываний.
port[Vd_m+4] or $03 – RTS (сигнал модема), DTR=1.

Контрольные выводы.

  • Программное соединение выхода СОМ-порта со входом.

 port[Vd_m+4] or $10 – необходимо установить в единицу 4-й бит регистра модема.

  • Подпрограмма передачи байта.

Procedure Tr_bt;
var
t: Boolean;
begin
t:=false;
  {признаком возможности передавать служит установка 5-го бита Vd_m в единицу}
repeat
if(port[Vd_m+5] and $20)<>0 then
begin
t:=true;
port[Vd_m]:=bt; { btпередаваемый байт}
end;
until t
end

 

  • Подпрограмма приема байта.

Для приема информации 1-й бит порта устанавливается в единицу. Прием выполняет port[Vd_m+5].

Procedure rest_bt;
var
t: boolean;
begin
t:=false;
repeat
if (port[Vd_m+5] and $01)<>0 then
begin
t:=true;
bt:=port[Vd_m]; {приембайт}
end;
until t;
end.

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


Вернуться воглавление




Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.