Тест портов COM1 и COM2 (в конфигурации RS-485) платы CPU188-5 |
Ответить |
Автор | |
Новичок Присоединился: 22 Ноябрь 2006 Категория: Russian Federation Online Status: Offline Публикации: 3 |
Опубликовано: 23 Март 2007 13:51 |
Доброго времени суток! Пользовался программой, входящей в состав поставляемого с платой CPU188-5 ПО в папке \CPU188\Support\EXAMP "TST_485". При запуске последней на модуле CPU188-5, на индикатор выводятся сообщения об ошибках, как собственно и описано в комментарии в программе "Вывод информации на VGA или ЖКИ только при ошибках" Однако не могу понять почему это происходит! Перемычки w5,w6 установлены в положение (2-3), переключатели st4,st5 в положении off. Контакты +RxD1,+TxD1, +RTxD0 и -RxD1,-TxD1,-RTxD0 соответственно замкнуты между собой, в общем все установлено как указано в комментариях в начале программы. Если Я правильно понимаю, тестирование основано на использовании служб 00Н (аналог 80Н в случае с CPU188-5), 01Н, 02Н,03Н. Так вот, если кто знаком конечно, в указанной программе с одного порта СОМ1 посылается байт к СОМ2: 1) с помощью службы 84Н включается передатчик на СОМ1 и выключается на СОМ2; 2) с помощью службы 03Н проверяется статус последовательного порта СОМ1 посредством сравнения регистра АХ с 6000Н (где единичные биты это "накапливающий регистр передачи пуст" и "сдвиговый регистр передачи пуст"). 3)после АХ=6000Н, в порт СОМ1 высылается байт через службу 01Н. 4) с помощью службы 03Н проверяется статус последовательного порта СОМ2 посредством сравнения регистра АХ с 0100Н (где единичный бит это "готовность данных"). Так вот на этом этапе значение регистра АХ, который в данном случае возвращает полный статус последовательного порта никогда не равен 0100Н!!! И из цикла проверки статуса порта выход происходит по таймеру (счетчику). Причем Я выводил при этом значение регистра АХ - все время равно 6000Н! При этом в порт СОМ1 выставляется одно число, а на порте СОМ2 принимается совершенно другое и соответственно в программе выводятся ошибки. Может ли кто-ниубдь объяснить почему так происходит? |
|
с уважением Nearh
|
|
Профили участников
Послать частное письмо
Поиск публикаций участников
Посетить домашнюю страницу участника
Добавить в список приятелей
Действительный член Присоединился: 02 Август 2005 Категория: Russian Federation Online Status: Offline Публикации: 110 |
|
Попробуйте сначало самое простое: у меня подобное было, когда в программе - передатчике непрерывно посылал в цикле символ в порт наподобие: for i:=1 to 255 do WriteCom(i); Но второй ком-приёмник просто не успевал обрабатывать приходящие байты (+ возможные задержки в линии). Решение - ввести задержку при посылке данных. Для тестирования достаточно в цикл посылки добавить delay(50).
|
|
Ответить |
Переход на форум | Права доступа на форуме Вы не можете публиковать новые темы в этом форуме Вы не можете отвечать на сообщения в этом форуме Вы не можете удалять Ваши сообщения на этом форуме Вы не можете редактировать Ваши сообщения на этом форуме Вы не можете создавать голосования на этом форуме Вы не можете выражать своё мнение в голосованиях на этом форуме |