Российский производитель и разработчик сертифицированного измерительного оборудования с 1987 года

"SAMPLE()" в цикле зависает

Вы не вошли.

 Поиск | Регистрация | Вход 

Дмитрий
11.06.2002 19:35:25
#1

Гость

"SAMPLE()" в цикле зависает

Работаю с библиотекой lcard_32.dll и платой L-154.
Устанавливаю канал с помощью "SETCHANNEL" и затем в цикле получаю значения с помощью "SAMPLE()". Через какое-то время программа виснет (не выходит из SAMPLE).
Пожалуйста помогите устранить зависание.

Может дело в прерываниях? Я уже пробовал использовать RESET_IRQ, STOP_INTR  - ничего не помогает.

13.06.2002 08:29:18
#2

Сотрудник "Л Кард"
Откуда: Москва
Здесь с 23.04.2014
Сообщений: 3,727

Re: "SAMPLE()" в цикле зависает

Не - не в прерываниях. Можн попробовать протереть разЪем на плате сриртом и посмотреть как все будет работьа если в биосе пс  8bit и 16bit Recovery Time поменять на большие значения.

Дмитрий
13.06.2002 11:13:56
#3

Гость

Re: "SAMPLE()" в цикле зависает

К сожалению не помогло.

Я перепробовал все значения параметров 8bit и 16bit Recovery Time - все равно SAMPLE в цикле зависает.

Кроме того, попробовал использовать KADR c одним каналом - такая же картина - в цикле через некоторое время программа зависает.

13.06.2002 13:02:46
#4

Сотрудник "Л Кард"
Откуда: Москва
Здесь с 23.04.2014
Сообщений: 3,727

Re: "SAMPLE()" в цикле зависает

А в LSETUP по кнопке тест стабильно работает?

Дмитрий
13.06.2002 13:36:38
#5

Гость

Re: "SAMPLE()" в цикле зависает

1. В LSETUP также почти сразу виснет при переключении в режим KADR Input. В режиме Timer Synchro вроде работает - буду еще тестировать.

2. LSETUP - 16 разрядный и использует lcard_ad.dll, а я использую lcard_32.dll. Какая между ними разница (помимо разрядности) и еcть ли LSETUP32?

Тем не менее lcard_ad.dll и lcard_32.dll зависают на KADR.

13.06.2002 15:52:32
#6

Сотрудник "Л Кард"
Откуда: Москва
Здесь с 23.04.2014
Сообщений: 3,727

Re: "SAMPLE()" в цикле зависает

Обе библиотеки компилятся из одних и тех же файлов.
А какая у Вас 154 - нового образца или старого?

Дмитрий
13.06.2002 17:17:11
#7

Гость

Re: "SAMPLE()" в цикле зависает

Плата у меня скорее всего новой версии (режим диф/одн переключается перемычкой).

Мне кажется, что все-таки дело не в самой плате, а в библиотеке lcard_32.dll, т.к. я уже написал драйвер по низкоуровневому описанию платы (запись и чтение по портам) и он работает без сбоев.
Ситуация с зависанием скорее всего связана с тем, что "lcard_32.dll" не может дождаться окончания преобразования (где-то сбой определения бита окончания преобразования) и входит в бесконечный цикл. Такой вывод можно сделать руководствуясь следующими причинами: 1) наглухо зависает сама программа, а не компьютер; 2) никаких сообщений об ошибках не возникает; 3) несколько успешных вызовов SAMPLE предшествуют зависанию; 4) SAMPLE - состоит из последовательности простейших команд(записи и чтения по портам), запуск которых в моем драйвере сбоев на дает.

Может быть я ошибаюсь, но очень похоже, что так.

14.06.2002 08:51:31
#8

Сотрудник "Л Кард"
Откуда: Москва
Здесь с 23.04.2014
Сообщений: 3,727

Re: "SAMPLE()" в цикле зависает

В этой функции есть код
   while(InByte(DATA_REG+2)&8);
Тут все может повиснуть если нет готовности. И никаких таймаутов не предусмотрено. Как у Вас написана функция Sample?

Дмитрий
14.06.2002 11:47:39
#9

Гость

Re: "SAMPLE()" в цикле зависает

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

По-поводу самой платы - если время преобразования 1.7 мкс, время установления канала - 4 мкс, то почему максимальная документированная частота преобразования - 70 кГц? (а допустим не 100 кГц)

Контакты

Адрес: 117105, Москва, Варшавское шоссе, д. 5, корп. 4, стр. 2

Многоканальный телефон:
+7 (495) 785-95-25

Отдел продаж: sale@lcard.ru
Техническая поддержка: support@lcard.ru

Время работы: с 9-00 до 19-00 мск