Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.01.2014, 14:09   #51
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,742
По умолчанию

Цитата:
Ничего подобного. Скорее всего, его программа опережает события.
с какой радости? Ничего быстрее нативных методов нет.

Цитата:
Или длительность сигнала настолько мала, что цикл опроса, просто его не вылавливает
это легко проверить опытным путем. Пусть снимет осциллограммы сигналов к нему поступающие и уходящие.

Цитата:
Как по мне, выкинул бы я этот котроллер к чертям и зделал всё через LPT-порт от ПК. Тем боллее, что там используются 5 входных и 5 выходных сигналов
или на сдвиговом регистре с USB конвертором, скорости тут не аховые. А если надо скорость, то есть PL-2305 (LPT over USB)/
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 23.01.2014, 14:32   #52
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,964
По умолчанию

Цитата:
Сообщение от raxp Посмотреть сообщение
с какой радости? Ничего быстрее нативных методов нет.
Так вот и я про то-же. Контроллер настроен на обмен в асинхронном режиме, а значит реагирует на стартовый и стоповый биты. По схеме понять не возможно, куда девается первый полученный байт, поэтому и предположил, что контроллер его просто не принимает.

Цитата:
это легко проверить опытным путем. Пусть снимет осциллограммы сигналов к нему поступающие и уходящие.
Если он у него есть.
Цитата:
или на сдвиговом регистре с USB конвертором, скорости тут не аховые. А если надо скорость, то есть PL-2305 (LPT over USB)/
Это опять переделка схемы с неизвестным результатом.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 23.01.2014, 14:43   #53
TELEPUZ
Пользователь
 
Регистрация: 20.01.2014
Сообщений: 37
По умолчанию

Так ребята. завтра пойду проводить опыты. Возьму осциллограф. Написал на VisualC++ консольное приложение - попробую его погонять. Может и в правду дотнет тормознутый? По поводу задержки управляющего сигнала - так я его выставлял от 1 мс - до 50 - экспериментировал - результат тот же. Да и вообще я пробую хотя бы переключить DTR с одного состояния на другое без всяких задержек. Думаю - что скорее всего запаздываю с выставлением сигнала. А вот почему - может из-за дотнета, может и из-за того, что из отладчика студии запускаю,а может и то и другое. В общем завтра пойду эксперименты ставить, а сегодня уже не успеваю. Спасибо вам что не бросаете в беде:D Отпишусь завтра к вечеру что да как...
TELEPUZ вне форума Ответить с цитированием
Старый 23.01.2014, 14:45   #54
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,742
По умолчанию

Цитата:
Это опять переделка схемы с неизвестным результатом.
Его схема вообще не затрагивается, и в этой ИМС все на борту ...а на али за несколько вечнозеленых можно купить даже готовый распаянный модулек. Этот пример приведен как полная альтернатива вашему варианту при отсутствии на ПК/ноуте LPT.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 23.01.2014, 14:54   #55
TELEPUZ
Пользователь
 
Регистрация: 20.01.2014
Сообщений: 37
По умолчанию

Цитата:
Сообщение от Smitt&Wesson Посмотреть сообщение
Почему воспринимается только второй сигнал? Фиг его знает, может в программе контроллера ошибка.
Вы не совсем поняли(или просто выразились не так). Проходная не реагирует на второй сигнал - я при приходе первого пакета его выставляю жёстко в другое состояние(0-разрешаю,а было 1 - запрещено) и в дальнейшем моя программа его не меняет. Т.е. в дальнейшей работе он у меня так и стоит в 0(всегда пропускает). И действительно пропускает всегда. Но только не в тот раз, когда человек в первый раз всунул пропуск и я в обработчике прихода данных в порт после считывания данных установил эту линию в 0(DTR=0 - разрешение прохода). Т.е. в первый раз не пропускает - а потом ходи сколько хочешь. Если же я выставляю в 0(разрешаю проход) - делаю задержку(пробовал от 1 до 50 мс), а потом опять в 1(запрещаю проход), то вообще не пускает никогда-сколько я попыток не пробовал (по умолчанию запрет стоит(DTR=1)). Словно я не меняю никаких сигналов.
TELEPUZ вне форума Ответить с цитированием
Старый 23.01.2014, 15:00   #56
TELEPUZ
Пользователь
 
Регистрация: 20.01.2014
Сообщений: 37
По умолчанию

Цитата:
Сообщение от TELEPUZ Посмотреть сообщение
Вы не совсем поняли(или просто выразились не так). Проходная не реагирует на второй сигнал - я при приходе первого пакета его выставляю жёстко в другое состояние(0-разрешаю,а было 1 - запрещено) и в дальнейшем моя программа его не меняет. Т.е. в дальнейшей работе он у меня так и стоит в 0(всегда пропускает). И действительно пропускает всегда. Но только не в тот раз, когда человек в первый раз всунул пропуск и я в обработчике прихода данных в порт после считывания данных установил эту линию в 0(DTR=0 - разрешение прохода). Т.е. в первый раз не пропускает - а потом ходи сколько хочешь. Если же я выставляю в 0(разрешаю проход) - делаю задержку(пробовал от 1 до 50 мс), а потом опять в 1(запрещаю проход), то вообще не пускает никогда-сколько я попыток не пробовал (по умолчанию запрет стоит(DTR=1)). Словно я не меняю никаких сигналов.
хотя может я туплю - вы всё понимаете....
TELEPUZ вне форума Ответить с цитированием
Старый 23.01.2014, 15:02   #57
TELEPUZ
Пользователь
 
Регистрация: 20.01.2014
Сообщений: 37
По умолчанию

Цитата:
Сообщение от Smitt&Wesson Посмотреть сообщение
Как по мне, выкинул бы я этот котроллер к чертям и зделал всё через LPT-порт от ПК. Тем боллее, что там используются 5 входных и 5 выходных сигналов. Задачка на пару дней, не считая перепаек.
Чую этим всё в итоге и закончится. Но млин работает же DOS программа с этой бякой как-то! Не верю, что не уговорю её!
TELEPUZ вне форума Ответить с цитированием
Старый 23.01.2014, 15:08   #58
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,964
По умолчанию

Цитата:
Сообщение от TELEPUZ Посмотреть сообщение
хотя может я туплю - вы всё понимаете....
Тоесть, проблема со стороны разъёма XS1? Тогда вопрос к программе контроллера.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 31.01.2014, 14:40   #59
TELEPUZ
Пользователь
 
Регистрация: 20.01.2014
Сообщений: 37
По умолчанию

Цитата:
Сообщение от Smitt&Wesson Посмотреть сообщение
Тоесть, проблема со стороны разъёма XS1? Тогда вопрос к программе контроллера.

В общем всем спасибо за помощь. . Вот кусочек кода на asm-е( я так понимаю обработчик прерывания прихода данных в порт-DOS файл с расширением com).

Тут ComPort.ModemControlReg-это адрес регистра MCR, ComPort.ModemValDenied=0x08h
ComPort.ModemValGranted- 0x0bh. Вопрос-правильно ли я понимаю логику управления контроллером?

; COM Interrupt

New0CInt PROC
; Save all processor registers
@PushAll
; Set DS and ES register to CS register
@SetDSEStoCS
; Send Access Denied signal to InOut device
@OutPort ComPort.ModemControlReg, ComPort.ModemValDenied
; Get COM port Line Status
_GetPortStatus:
@InPort ComPort.LineStatusReg
MOV AH, AL
MOV CL, ComPort.LineStatusSHR
SHR AH, CL
AND AH, 7
JZ _ReadCOMport
; Read received data from COM port (if any)
@InPort ComPort.DataBufferReg
JMP _Int0CIret
_ReadCOMPort:
; Read received data from COM port (if any)
@InPort ComPort.DataBufferReg
TEST BYTE PTR CS:ComPort.PortStatus, sfDisabled
JZ _NextChar
JMP _InitInOut
_NextChar:
; Revert bits
MOV DX, MASK InSide
NOT AL
@MovSource
MOV CL, '+'
CMP AL, 10
JB _GetChar
JZ _InOut
MOV DX, 0
MOV CL, '-'
CMP AL, 12
JZ _InOut
JMP _Int0CIret
_InOut:
MOV ES:ComPort.Source+SourceLen, CL
MOV BYTE PTR CS:CharCnt, 0
MOV ComRec.ComNum, 0
MOV ComRec.ComNum+2, 0
MOV ComRec.ComTime, DX
JMP _Int0CIret
_GetChar:
MOV CL, AL
ADD CL, '0'
MOV ES:ComPort.Source+SourceLen, CL
INC BYTE PTR CS:CharCnt
XOR AH, AH
@LongMul ComRec.ComNum
_PrintChar:
CMP BYTE PTR CS:CharCnt, 2
JNZ _GetPropuskNum
MOV AX, ComRec.ComNum
SHL AL, 1
SHL AL, 1
SHL AL, 1
SHL AL, 1
XCHG AH, AL
XOR AL, AL
OR ComRec.ComTime, AX
MOV ComRec.ComNum, 0
MOV ComRec.ComNum+2, 0
_GetPropuskNum:
CMP BYTE PTR CS:CharCnt, 6+2
JZ _LoadPropuskNum
JMP _Int0CIret
_LoadPropuskNum:
MOV AX, ComRec.ComNum
MOV DX, ComRec.ComNum+2
CMP AX, 0
JZ _AccessGrantedButNoSave
CMP DX, 0
JZ _NormalPropusk
CALL TestIsInTestList
JC _AccessDenied
JMP _AccessGrantedButNoSave
_NormalPropusk:
CALL GetTimeToAX
OR ComRec.ComTime, AX
CALL TestIsAccessGranted
JC _AccessDenied
CALL SaveBufRecord
JC _AccessDenied
_AccessGrantedButNoSave:
@MovSource
MOV ES:ComPort.Source+SourceLen, BYTE PTR 0
@OutPort ComPort.ModemControlReg, ComPort.ModemValGranted
@SoundAccessGranted
_InitInOut:
MOV BYTE PTR CS:CharCnt, 0
JMP _Int0CIret
_AccessDenied:
@MovSource
MOV ES:ComPort.Source+SourceLen, BYTE PTR 0
@OutPort ComPort.ModemControlReg, ComPort.ModemValDenied
_Int0CIret:
@OutPort 20h, 20h
@PopAll
IRET
New0CInt ENDP

Последний раз редактировалось TELEPUZ; 31.01.2014 в 14:55.
TELEPUZ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программирование LPT-порта на DELPHI Vova777 Компьютерное железо 5 05.02.2011 19:27
Программирование LPT-порта на DELPHI Vova777 Общие вопросы Delphi 0 31.01.2011 17:37
Программирование последовательного порта Funker Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 7 27.05.2010 02:20
программирование lpt порта alexs2141 Общие вопросы Delphi 5 07.06.2008 17:10