Датчик на LPT

Подключаем наши девайсы к компьютеру. Обсуждаются: порты, протоколы, драйвера, языки программирования и т.д.
Ответить
neoarey
Первый раз сказал Мяу!
Сообщения: 21
Зарегистрирован: Сб дек 25, 2010 18:43:11

Датчик на LPT

Сообщение neoarey »

Здравствуйте!

Помогите решить задачу. Есть схема:

Изображение

Необходимо, при замыкании ключа (концевого датчика), выполнять соотв. действие. В одной статейке прочитал, что если подать 1 на ножку, а потом соединить её с землёй, то на ножке устанавливается 0. Может я что не правильно понял, у меня не получается, всё равно висит 1.

Записываю и читаю 378.
Аватара пользователя
radio-kot
Собутыльник Кота
Сообщения: 2584
Зарегистрирован: Вт сен 14, 2010 10:27:19

Re: Датчик на LPT

Сообщение radio-kot »

Посмотрите google Валерий Ковтун программирование LPT и COM
Будете проходить мимо- проходите!
neoarey
Первый раз сказал Мяу!
Сообщения: 21
Зарегистрирован: Сб дек 25, 2010 18:43:11

Re: Датчик на LPT

Сообщение neoarey »

Мда... содержательный ответ... Наверное я уже полазил по поисковым системам, прежде чем задать вопрос. Неужели просто нельзя ответить "да ты делаешь правильно, только надо ещё вот это... " или "нет, не так, а надо вот так..." Это форум люди, здесь помогать надо. Легче всего сказать ищи в гугле. Дни могут пройти прежде чем найдёшь то, что нужно... Вы меня огорчаете... :(
Аватара пользователя
radio-kot
Собутыльник Кота
Сообщения: 2584
Зарегистрирован: Вт сен 14, 2010 10:27:19

Re: Датчик на LPT

Сообщение radio-kot »

Если голову не включать и века не хватит.
Будете проходить мимо- проходите!
Аватара пользователя
rmmp
Поставщик валерьянки для Кота
Сообщения: 1925
Зарегистрирован: Вс фев 14, 2010 17:55:54
Откуда: Ukraine,Ternopol

Re: Датчик на LPT

Сообщение rmmp »

neoarey писал(а): В одной статейке прочитал, что если подать 1 на ножку, а потом соединить её с землёй, то на ножке устанавливается 0. Может я что не правильно понял, у меня не получается, всё равно висит 1.

При замыкании ключа-датчика на схеме 0 должен установится по любому.
Mickle
Поставщик валерьянки для Кота
Сообщения: 2337
Зарегистрирован: Чт сен 09, 2010 07:32:24
Откуда: г. Рыбинск

Re: Датчик на LPT

Сообщение Mickle »

Уважаемый neoarey, не стоит обижаться.
Давайте рассуждать вместе. Насколько я понимаю, предложенная Вами схема - это в своём роде техническое задание, и размышлять по поводу его корректности или же ошибочности не стоит. Я вижу как миниму три возможные причины неудачи Вашего эксперимента:
1. Операции ввода-вывода относятся к привилегированным. Поэтому, было бы ошибкой управлять LPT портом, к примеру, из виртуальной DOS машины NTVDM в Windows XP.
2. Программно-схемотехнический трюк с вводом данных через [LPTBase] порт в стандартном режиме (т.е. в Вашем случае, через 378h) был описан в литературе ещё в те стародавние времена, когда интерфейс строился наполовину из дискретной логики. На современных SuperIO чипсетах этот трюк с перегрузкой выходных формирователей не пройдёт в принципе.
3. Если эксперимент Вы всё же проводите на исключительно старом "железе", тогда может не хватать "подтягивающих" резисторов на +5 В. К примеру, типовая схема разводки LPT на материнской плате SuperIO чипом W83627 выглядит так:

Изображение

На старых платах и мультикартах этой обвязки может и не быть.

Впрочем, есть и альтернативный вариант. Ведь можно попробовать переключить порт в двунаправленный байтовый режим ECP и использовать его просто как порт ввода. Надеясь на то, что резисторы на +5 В всё таки установлены, можно повторить Ваш эксперимент без каких-либо схемных изменений.
Перевести порт в указанный режим можно так:

Код: Выделить всё

    mov     dx,LPTBase
    add     dx,402h             {ECP ECR adress}
    in      al,dx               {load current value}
    and     al,00011111b        {clear mode bits}
    or      al,00100000b
    out     dx,al               {set bidirectional byte mode}
    mov     dx,LPTBase
    add     dx,2
    mov     al,00100000b        {set read data mode and no interrupts}
    out     dx,al
neoarey
Первый раз сказал Мяу!
Сообщения: 21
Зарегистрирован: Сб дек 25, 2010 18:43:11

Re: Датчик на LPT

Сообщение neoarey »

Спасибо, уже разобрался...

Нужно было перевести порт в режим чтения данных DlPortWritePortUchar &H37A, 43
А потом читать DlPortReadPortUchar(&H378). Это если работать с регистром Data. Со Status вообще всё проще, там уже логическая 1. Просто читаешь до замыкания и после &H379.
Ответить

Вернуться в «Интеграция с ПК»