Страница 1 из 2

Взаимодействие регистров LPT-порта. Внутри.

Добавлено: Ср дек 11, 2013 22:14:14
Vova777
Добрый день, кто может объяснить понятным русским языком следующее:

1. Если я программно (на компьютере) изменяю логические уровни в регистре CONTROL (это который имеет 4 ноги), как это отражается на регистре DATA (это который имеет 8 ног)? Как я понял, на регистре STATUS (это который имеет 5 ног) программные изменения в любых регистрах вообще никак не отражаются (но изменения этого регистра из внешнего устройства повлияют на остальные регистры). Меня пока не интересует влияние регистра STATUS на остальные регистры.

2. Как изменения в регистре DATA влияют на регистр CONTROL ?

3. Или они никак не влияют (в смысле, изменения в них) друг на друга?

http://www.kernelchip.ru/pcports/img/PS004/2.gif

Re: Взаимодействие регистров LPT-порта. Внутри.

Добавлено: Ср дек 11, 2013 22:29:18
SergM
Не должны они никак влиять друг на друга. Регистры независимы. Но под Windows есть проблема: она считает, что к порту LPT может быть подключен только принтер (в крайнем случае сканер), и если некоторые биты меняются, пытается этот принтер обнаружить, и сама начинает переключать биты в других регистрах. Отключается эта фича следующим ключом в реестре:

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Parport\Parameters]
"DisableWarmPoll"=dword:00000001

Re: Взаимодействие регистров LPT-порта. Внутри.

Добавлено: Ср дек 11, 2013 22:33:41
Vova777
SergM писал(а):[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Parport\Parameters]
"DisableWarmPoll"=dword:00000001


У меня там нет такого параметра. Чтобы его создать, что там надо выбрать? Там несколько типов создаваемого параметра.

И еще, я использую " inpout32.dll ".

Re: Взаимодействие регистров LPT-порта. Внутри.

Добавлено: Ср дек 11, 2013 22:37:08
SergM
Vova777 писал(а):У меня там нет такого параметра. Чтобы его создать, что там надо выбрать? Там несколько типов создаваемого параметра.

Как написано - DWORD. Значение 1.
Потом перегрузиться.

Vova777 писал(а):И еще, я использую " inpout32.dll ".
Думаю, что разницы нет.

Re: Взаимодействие регистров LPT-порта. Внутри.

Добавлено: Ср дек 11, 2013 22:51:12
Vova777
SergM писал(а):Как написано - DWORD. Значение 1.
Потом перегрузиться.


Не работает. Ничего не изменилось.

Re: Взаимодействие регистров LPT-порта. Внутри.

Добавлено: Ср дек 11, 2013 23:28:39
SergM
Vova777 писал(а):Не работает. Ничего не изменилось.

Тогда не знаю. Рецепт взят отсюда. Вроде бы это касается Windows XP SP2/SP3.
Может быть, ещё какая-то программа висит? Типа принтерного монитора?
Ну попробуй ещё (чтобы убедиться в отсутствии опечаток) сохранить вот это содержимое в файл "WinXP LPT patch.reg". И потом открыть этот файл. Чтоб уже точно записалось куда надо.
REGEDIT4

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Parport\Parameters]

"DisableWarmPoll"=dword:00000001

Re: Взаимодействие регистров LPT-порта. Внутри.

Добавлено: Чт дек 12, 2013 19:11:28
Мурик
Vova777 писал(а):И еще, я использую " inpout32.dll ".
Попробуйте другую, а вдруг поможет.
Например pb_io.dll.
У нее немного отличаются названия функций. Их имена Inp и Out, а не Inp32 и Out32.
В архиве библиотека с примерами и ее исходниками и исходниками драйвера.

Re: Взаимодействие регистров LPT-порта. Внутри.

Добавлено: Чт дек 12, 2013 19:26:34
Vova777
Интересно, а такое возможно:

Нужно, чтобы каждая нога абсолютно любого регистра была полностью "независимой", т.е. ее изменения не должны вообще никак влиять на остальные ноги в любом регистре?

Еще мне не понятно, вот например нога №1 "strobe" - она вроде как должна изменять свое состояние с I на O при записи/чтении данных в регистре Data. И что, она изменяет свое состояние автоматически, когда я пишу/читаю в регистре Data? Или ее изменения нужно специально программировать в своей программе?

Re: Взаимодействие регистров LPT-порта. Внутри.

Добавлено: Чт дек 12, 2013 19:33:16
Dr. Alex
Дык и так ноги независимы)))) Это как ножки микроконтроллера, сгруппированны по портам и всё...

Re: Взаимодействие регистров LPT-порта. Внутри.

Добавлено: Чт дек 12, 2013 19:33:59
Мурик
А не лучше это реализовать на MK?
Берете дешевый и доступный ARV, поднимаете на нем софтовый USB (чтобы не искать дрова, лучше HID) и управляете его ногами как захотите. И проблем будет меньше и проще подстроить конструкцию под себя, возложив на МК некоторые задачи, требующие рантайм выполнения.

Re: Взаимодействие регистров LPT-порта. Внутри.

Добавлено: Чт дек 12, 2013 19:34:26
Vova777
Dr. Alex писал(а):сгруппированны по портам и всё

Ясно, их разделение довольно условное. А что со Стробом?

Re: Взаимодействие регистров LPT-порта. Внутри.

Добавлено: Чт дек 12, 2013 19:35:13
Vova777
Мурик писал(а):А не лучше это реализовать на MK?

МК у меня для другой задачи. А что со Стробом?

Re: Взаимодействие регистров LPT-порта. Внутри.

Добавлено: Чт дек 12, 2013 19:36:32
Мурик
Vova777 писал(а):
Мурик писал(а):А не лучше это реализовать на MK?

МК у меня для другой задачи.
МК подключается к LPT?

Re: Взаимодействие регистров LPT-порта. Внутри.

Добавлено: Чт дек 12, 2013 19:38:01
Vova777
Мурик писал(а):МК подключается к LPT?

В общем-то, вот тут вся идея:
viewtopic.php?f=57&t=97785

Re: Взаимодействие регистров LPT-порта. Внутри.

Добавлено: Чт дек 12, 2013 19:41:09
Мурик
ИМХО лучше как писал выше - поднять на имеющемся в устройстве ATmega32, совтовый USB.
Но библиотека есть не для всех ЯП. Она имеется для асма, Си и Бейсика.

Re: Взаимодействие регистров LPT-порта. Внутри.

Добавлено: Чт дек 12, 2013 19:42:52
Vova777
Мурик писал(а):лучше как писал выше


Ну Вам так проще, а я не прошарен настолько, как там все это делать. Леплю по-своему, зато сам, почти своей головой :)) Тем более, что я пишу на Делфи (Дельфин или Делфинист, тут кому как проще, а мне он нравится и знаю я его более-менее нормально).
Лучше скажите, что там со Стробом?

Re: Взаимодействие регистров LPT-порта. Внутри.

Добавлено: Чт дек 12, 2013 19:49:16
Dr. Alex
Я сам на Делфях пишу))) Так а что вам не нравится со Стробом?

Re: Взаимодействие регистров LPT-порта. Внутри.

Добавлено: Чт дек 12, 2013 19:52:46
Vova777
Dr. Alex писал(а):Я сам на Делфях пишу)))

Вот видите, а бывает такое, что читаешь какую-то статью, там что-то нехорошее про Делфи говорят. Чем им не нравится, не пойму? Простой и понятный язык, да и программу можно быстро слепить.

Dr. Alex писал(а):Так а что вам не нравится со Стробом?

Когда он "изменяет" свое состояние? Автоматически при чтении-записи в регистре Data или его "изменения" нужно программировать в своей программе?

Re: Взаимодействие регистров LPT-порта. Внутри.

Добавлено: Чт дек 12, 2013 19:54:59
Dr. Alex
Хм... Всё зависит что вы вообще хотите от порта) Конечно его врукопашную, как и все надо выставлять/убирать)

Re: Взаимодействие регистров LPT-порта. Внутри.

Добавлено: Чт дек 12, 2013 19:56:59
Vova777
Dr. Alex писал(а):его врукопашную, как и все надо выставлять/убирать)

Т.е. все должно делаться руками, понятно. Спасибо.

Да хотел Стробом "показывать" своему МК, что ему сейчас "делать" на своих ногах (которые к LPТ подключены), у меня там двунаправленная передача. Реально такое?

И еще, как я понял, раз управление по ногам идет своими "руками", зачем тогда ногам дали названия? Я ведь если захочу, ноге какую-нибудь свою функцию сделаю. Так?