ADAM5510 COM1/2 |
Ответить |
Автор | |
Новичок Присоединился: 07 Февраль 2009 Категория: Russian Federation Online Status: Offline Публикации: 24 |
Опубликовано: 07 Февраль 2009 18:25 |
Господа кто нибудб может подсказать как организовать обработку прерываний от контроллеров последовательного интерфейса в ПЛК ADAM5510M?
|
|
Профили участников
Послать частное письмо
Поиск публикаций участников
Посетить домашнюю страницу участника
Добавить в список приятелей
Действительный член Присоединился: 25 Апрель 2006 Категория: Russian Federation Online Status: Offline Публикации: 116 |
|
На asm: public Ini_COM1, Start_COM1 DGROUP group DATA DATA segment word public 'DATA' use16 Star_INT_0Ch dd 0 ; Адрес старого обработчика перывания 0Ch SYSTEM segment byte public 'CODE' ;-------------------------------------------------------------------- push ax ; Сохранить ax в стек Indet_INT: ;;;;;;{сброс остальных прерываний} Vix_INT: ; прерывание по завершению передачи символа ;;;;;;{передача символа} ;=============================== pop bx iret ; возвращение в основную программу ; Инициализация СОМ 1 push ds ; сохранить ds в стек ;;;;;;{сбрасываем регистр данных} ;;;;;;{сбрасываем регистр состояния линии} ;;;;;;{сбрасываем регистр состояния модема} ;;;;{режим ввода делителя} ;;;;;;(Запись в Регистр управления модемом) ;;;;;;{младший байт делителя} ;;;;;;{буферизация FIFO}(отключаем) ;;;;;;(Запись в Регистр управления прерываниями) ; устанавливаем формат даты и времени "двоичный" pop dx ; восстановить dx основной программы retn ;-------------------------------------------------------------------- mov bx, DDD ; получаем адрес управляющей переменной (Boolean)(1 писать, 0 не писать) Next_Start_COM1: mov bx, D_day ; получаем адрес переменной mov bx, D_month ; получаем адрес переменной mov bx, D_hour ; получаем адрес переменной mov bx, D_min ; получаем адрес переменной mov bx, D_sec ; получаем адрес переменной
D_M_min_Ne_99: D_minus_ne_0: mov bx, D_M_min ; получаем адрес переменной mov bx, D_M_sec ; получаем адрес переменной NNNN_: Ne_30h: ;;;;;;{передача символа}
|
|
Vel
|
|
Новичок Присоединился: 07 Февраль 2009 Категория: Russian Federation Online Status: Offline Публикации: 24 |
|
Валера, спасибо что откликнулись. Я не плохо знаю асеммблер, использовал его правда на других контроллерах, но задача стоит в том что бы разработать программу на С, так как я пишу программу не один. Скажем так есть программа в ПЛК которая думает и рулит процессом, а параллельно нужно еще организовать обмен с компом, поэтому есть желание тупо организовывать связь по прерыванию от СОМ. |
|
Профили участников
Послать частное письмо
Поиск публикаций участников
Посетить домашнюю страницу участника
Добавить в список приятелей
Действительный член Присоединился: 25 Апрель 2006 Категория: Russian Federation Online Status: Offline Публикации: 116 |
|
Если Вы знаете ASM, то Вам не составит большого труда перевести все на С. В моем коде (выдернутом из работающей программы) все ключевые моменты указаны. Рабочая прога сделана в UL 24 и EXT вставки на asm. Вы также можете использовать в С вставку obj c кодом на asm, не проблема. Можете все переделать на С. Мое мнение: писать обработчики прерываний на С, да еще и для контроллеров (ограниченные ресурсы памяти и критичная скорость выполнения) это не есть гут (мягко выражаясь). Ведь Ваш код будет останавливать всю систему на время обработки прерывания, и чем массивнее код, тем сильнее тормоза. |
|
Vel
|
|
Новичок Присоединился: 07 Февраль 2009 Категория: Russian Federation Online Status: Offline Публикации: 24 |
|
Я понимаю это очень хорошо. Прерывания запустить удалось. Из ASM я обращатся к модулям не знаю как, думаю через порты но не вкурсе через какие. |
|
Профили участников
Послать частное письмо
Поиск публикаций участников
Посетить домашнюю страницу участника
Добавить в список приятелей
Действительный член Присоединился: 25 Апрель 2006 Категория: Russian Federation Online Status: Offline Публикации: 116 |
|
Начнем с того, что С не имеет в своём составе функций для работы с модулями ADAM. Вы эти функции подключаете из lib. Библиотека lib - это набор объектных файлов (уже "откомпилированных") и Вы только вызываете эти функции. Отсюда вывод: В каком языке программирования Вы их используете не имеет решающего значения! Самый простой путь, проверенный годами практики - это использовать UltroLogik. Компилятор у него сделан по человечески, не ногами. Все на TASM. компилируется в оптимальный код, бастрый и маленький. Все lib переписаны на TASM с СИ. Поэтому опрос модулей, простая логика на UL - все навороты EXT блоки на ASM. Работает "изюмительно"!!! С 2000 г. насмотрелся на проекты наСИльников для ADAM. Простая прога с трудом влазит в контроллер, часто сам по себе перезагружается (нонсенс!!) и т.д. Так что Вам решать по какому пути идти, выбор за Вами!!! |
|
Vel
|
|
Действительный член Присоединился: 15 Октябрь 2003 Категория: Belarus Online Status: Offline Публикации: 141 |
|
Приветствую Всех. А для работы с 4 сом-портом нету случайно кода?
|
|
Новичок Присоединился: 21 Август 2010 Online Status: Offline Публикации: 27 |
|
Коллеги!
Не лезьте вы в прерывания на АДАМАх! Как показывает мой опыт, желание перехватывать прерывания возникает при недостаточном понимании работы этого девайса. Без обид, внимательно изучите API и переосмыслите ещё раз свои хотелки. Уверяю вас, вам не понадобятся прерывания. Сам через это прошёл. |
|
Участник Присоединился: 02 Декабрь 2010 Online Status: Offline Публикации: 68 |
|
Привет!
посмотри по ссылке ниже, мы с коллегой в свое время все API переделывали там вроде есть поддержка COM4 https://github.com/Poisondo/lib-adam-5000/tree/master/src/io/sio |
|
Действительный член Присоединился: 15 Октябрь 2003 Категория: Belarus Online Status: Offline Публикации: 141 |
|
Приветствую всех 2 tonic: Ну не используем мы в своих работах библиотеки от Адвантека - понятно это или нет? 2 poison: Помню я Ваш код. Взял я его тогда, переписали мы его на Паскаль. Но.. где-то что-то мы не доперевели - 1 и 4 комы не хотят работать параллельно (( Если "открыть порт-передать-закрыть" - по очереди работают, если открыть все и параллельная работа по всем - 2 и 3 комы работают нормально, 1 и 4 работают пару секунд и зактыкаются оба.
|
|
Ответить |
Переход на форум | Права доступа на форуме Вы не можете публиковать новые темы в этом форуме Вы не можете отвечать на сообщения в этом форуме Вы не можете удалять Ваши сообщения на этом форуме Вы не можете редактировать Ваши сообщения на этом форуме Вы не можете создавать голосования на этом форуме Вы не можете выражать своё мнение в голосованиях на этом форуме |