Модераторы: Kagor
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> подключение устройства к LPT порту, проблемы с подключением устройства 
:(
    Опции темы
sageLin
  Дата 25.1.2006, 21:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 25.1.2006

Репутация: нет
Всего: нет



подключил генератор (простая замена будущего девайся) с частотой 100гц к 15 пину LPT порта, через делитель частоты на 2 подключил к 13 пину, и через делитель частоты на 4 к 12 пину.
получилось восемь комбинаций:

15 13 12
0 0 0
1 0 0
0 1 0
1 1 0
0 0 1
1 0 1
0 1 1
1 1 1

Четкая последовательность...

написал программу на СИ:
Код

#include <stdio.h>
#include <unistd.h>
#include <asm/io.h>

#define BASEPORT 0x378 /* lp1 */
int a,b;
int status,oldstatus;
int main()
{
 printf("====[ start ]====\n");
a=0; //для счета кол-ва изменений порта
b=1; //сколько раз компьютер успеет опросить порт прежде состояние изменится
 /* пробуем подключится к порту */
 if (ioperm(BASEPORT, 3, 1)) {perror("ioperm"); exit(1);}
 
 /* устанавливаем все выходные пины (D0-7) в 0 */
 outb(0, BASEPORT);
 
 /* пауза 100 ms */
 usleep(100000);
 
 /* пока пятдесят раз состояние порта не изменится выполнять: */
 while (a!=50) {
 status= inb(BASEPORT + 1);

 if (oldstatus==status) {b++;} //если состояние такое же, то прибавить единицу
 if (oldstatus!=status)  //если нет, то сохраняем состояние порта и если изменений было больше 10, то показываем новое состояние порта + b предыдущего состояния
   {
   oldstatus=status;
   if (b>=10)
     {
       a++; printf("status: %d", status);printf(" (%d)\n",b); b=1;
     }
   }
 }

 /* отключаемся */
 if (ioperm(BASEPORT, 3, 0)) {perror("ioperm"); exit(1);}

 printf("====[ stop ]=====\n");
 exit(0);
}

и вот что я получаю, если LPT находится в режиме EPP:
Код

====[ start ]====
status: 78 (394)
status: 70 (391)
status: 94 (413)
status: 70 (412)
status: 110 (412)
status: 102 (414)
status: 126 (411)
status: 70 (381)
status: 78 (419)
status: 70 (407)
status: 94 (412)
status: 70 (414)
status: 110 (412)
status: 102 (408)
status: 126 (417)
status: 118 (407)
status: 78 (414)
status: 70 (412)
status: 94 (413)
status: 70 (413)
status: 110 (412)
status: 102 (407)
status: 126 (419)
status: 70 (407)
status: 78 (414)
status: 70 (413)
status: 94 (412)
status: 70 (408)
status: 110 (418)
status: 102 (407)
status: 126 (419)
status: 70 (407)
status: 78 (412)
status: 70 (414)
status: 94 (412)
status: 70 (407)
status: 110 (419)
status: 102 (406)
status: 126 (413)
status: 118 (412)
status: 78 (413)
status: 70 (408)
status: 94 (418)
status: 70 (407)
status: 110 (418)
status: 102 (407)
status: 126 (413)
status: 70 (413)
status: 78 (413)
status: 70 (408)
====[ stop ]=====

я уже полгода пытаюсь заставить компьютер показать мне четкий порядок состояния порта, но безрезультатно! smile
Подскажите как мне реализовать верное чтение и отображение состояний параллельного порта?

PS: программу компилировал на Gentoo Linux 2005.1

Это сообщение отредактировал(а) sageLin - 25.1.2006, 23:22
PM MAIL   Вверх
sageLin
Дата 26.1.2006, 14:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 25.1.2006

Репутация: нет
Всего: нет



может быть предложите другую программу для считывания состояния порта?
PM MAIL   Вверх
Akina
Дата 26.1.2006, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 4
Всего: 454



sageLin
а с чего ты решил что у тебя делители правильно и синхронно отрабатывают? Регистрирующий осилограф есть? заведи на него сумму через разные делители, сними порядка 0.2-0.3 сек. и посмотри, последовательно ли идут у тебя импульсы...


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
sageLin
Дата 26.1.2006, 19:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 25.1.2006

Репутация: нет
Всего: нет



у меня нет осилограф с памятью нет, есть многоканальный - вроде все работает.
PM MAIL   Вверх
VasiliyButer
Дата 5.2.2006, 02:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 2.2.2006

Репутация: нет
Всего: нет



А не проще ли работать с виртуальным драйвером LPT порта, например VICX?
Или тебе надо все на низком уровне?
PM MAIL   Вверх
sageLin
Дата 9.2.2006, 11:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 25.1.2006

Репутация: нет
Всего: нет



Цитата(VasiliyButer @ 5.2.2006, 02:16)
А не проще ли работать  с виртуальным  драйвером LPT порта, например VICX?
Или тебе надо все на низком уровне?

Если я не ошибаюсь, то winXP sp2 не позволяет обмениваться инфорамцией с LPT портом с нужной мне скоростью.
А вообще мне нужно управлять устройством с помощью компьютера, т.е. на определенное состояние входных пинов отвечать определенным состоянием выходных пинов. Частота изменения входных пинов ~800гц
PM MAIL   Вверх
sageLin
Дата 16.2.2006, 13:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 25.1.2006

Репутация: нет
Всего: нет



может подскажете ссылочку на доку в которой описывается подключенние подобного устройства к LPT порту?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по железу | Следующая тема »


 




[ Время генерации скрипта: 0.0554 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.