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


Проблема с буфером L-CARD Е20-10

Вы не вошли.

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

Всеволод
12.11.2012 14:59:09
#1

Гость

Проблема с буфером L-CARD Е20-10

Здравствуйте. Столкнулись с проблемой при работе lcard Е20-10. Есть программа в которой по расписанию, которое синхронизируется по компьютерному времени, приходит стартовый синхросигнал и начинается сессия сбора данных, по окончании сбора данные сохраняются в файл и программа ждет следующей сессии сбора по расписанию.Проблема заключается в том, что если стартовый сигнал приходит во время ожидания следующей сессии, то при начале следующей сессии приема  сразу "вываливается" часть данных собранных за период ожидания приема. Есть подозрения , что при получении синхроимпульса lcard собирает данные в свой FIFO буфер из которого при инициализации приема наш софт их и забирает. Можно ли программно избавится от этих данных, подскажите каким образом?

12.11.2012 21:01:38
#2

Инженер-электронщик
Откуда: "Л Кард"
Здесь с 21.04.2014
Сообщений: 4,597

Re: Проблема с буфером L-CARD Е20-10

Всеволод, поясните, пожалуйста:
- E20-10 ревизии А или B?
- Приведите все программные настройки E20-10, которые выставляет Ваша программа. В частности,  Используется режим внешнего старта по цифровому входу или аналоговая синхронизация по уровню сигнала в канале АЦП? Синхронизация по фронту(спаду) или по уровню?
- Если действительно используется внешняя синхронизация старта сбора данных в E20-10, то какие параметры этого сигнала (по напряжению и времени)?

Всеволод
13.11.2012 12:23:59
#3

Гость

Re: Проблема с буфером L-CARD Е20-10

Здравствуйте, Александр. Благодарю за скорый ответ и прошу прощения, что сразу не предоставил необходимые данные.

Итак. E20-10 rev B.
Bios e2010m.
Настройки:
AutoInit=1;
dRate (рассчитывается оптимальная);
dKadr (также рассчитывается);

DM_Ena = 1;
StartCnt = 0;
StopCnt = 0;
SynchroType= EXT_START_UP 0x84;
SynchroMode = A_SYNC_UP_EDGE | CH_1;
AdPorog = 1;
SynchroSrc = INT_CLK 0x40;
AdcIMask = SIG_1 | V10_1;;
NCh = 1;
Chn[128];
FIFO = 32768;
IrqEna = 1;
AdcEna = 1;

Сигнал 5 В, 100 мс.

Надеюсь на Ваш скорый ответ.
С уважением, Всеволод.

13.11.2012 13:37:00
#4

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

Re: Проблема с буфером L-CARD Е20-10

А какая последовательность старта-стопа сбора данных?

Всеволод
13.11.2012 13:54:54
#5

Гость

Re: Проблема с буфером L-CARD Е20-10

При старте программы, в Lcard зашивается биос
- далее выбираем расписание работы программы
- жмем старт
- программа ожидает ближайшего по времени сеанса в расписании
- синхроимпульс подается за 3-5 секунд до начала приема. В это время происходит инициализация устройства и передача ему настроек SetParametersStream и иже с ними.
- начинается откачка данных из буфера FIFO в большой кольцевой
- по прошествии времени приема (длительность сеанса задается в расписании) вызываются функции StopLDevice и CloseLDevice
- Полученные данные обрабатываются внутренними процедурами программы
- программа ожидает следующего сеанса приема и тд.

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

Всеволод
13.11.2012 13:59:53
#6

Гость

Re: Проблема с буфером L-CARD Е20-10

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

Надеюсь, на Вашу помощь.

13.11.2012 15:04:38
#7

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

Re: Проблема с буфером L-CARD Е20-10

больше большого буфера вывалиться не могут. и больше чем irqstep тоже. они вообще вывлиться не могут в таких терминах тк sync с 0 должен бежать. Если InitStartLDevice вызывать. После CloseLDevice биос однозначно загружать надо, кроме этого память выделятся будет заново для большого буфера и там будут в общем случае случайные данные....

Всеволод
13.11.2012 15:45:14
#8

Гость

Re: Проблема с буфером L-CARD Е20-10

Я понимаю, что больше буфера не может быть данных. Сейчас попробую обрисовать ситуацию.
Предположим.
Первый сеанс приема у нас был длительностью 1 минуту, ожидание следующего длилось 2 минуты, а второй сеанс приема длится 3 минуты. Если синхросигнал пришел сразу после окончания первого сеанса приема. То по началу второго сеанса приема (опять же получаем синхроипульс), имеем количество данных (уже обработанных из большого буфера) на 2/3 ожидаемого объема...

Ставили эксперименты. Если случайного синхроимпульса нет и все идет по расписанию, то никаких дефектов в работе нет. Все работает четко и слаженно.
Но стоит начать невовремя(во время ожидания например) посылать на вход Лкард синхроимпульсы (например с выхода звуковой карты), то имеем вышеописанную картину. В начале второго и далее сеансов приема имеются данные, которых быть не должно. Уже кончились мысли, откуда они могут взяться. При инициализации и создании большого буфера все в порядке (переменные адреса начала и синхронизации обнуляются). Грешил на то, что при получении синхроимпульса, лкард начинает сбор данных в свой буфер и при старте обмена "выплевывает" это все накопленное в большой кольцевой...
Можете подсказать, что еще проверить с программной части?

Заранее спасибо

Всеволод
13.11.2012 15:56:53
#9

Гость

Re: Проблема с буфером L-CARD Е20-10

Да! Еще вопрос по поводу CloseLDevice. Я так понял, что вызывать эту функцию нужно только после завершения работы с устройством?
То есть в нашем режиме работы вызывать его нужно только при выходе из программы вцелом? Ибо сейчас это реализовано как вызов каждый раз после окончания сеанса выкачивания данных из устройства. И по поводу загрузки биоса... Программа работает как надо, за исключением вышеуказанной проблемы, при том, что биос в устройство загружается только один раз при первом запуске всей программы.
Буду очень рад, если вы откомментируете мои ошибки.

13.11.2012 16:06:53
#10

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

Re: Проблема с буфером L-CARD Е20-10

После StopLDevice модуль по идее должен остановится...

Всеволод
13.11.2012 16:29:15
#11

Гость

Re: Проблема с буфером L-CARD Е20-10

Если я правильно понял, то в нашем случае реализация должна быть следующей?
1) запустили программу
2) Загрузили биос
3) составили расписание для работы
4) инициализировали устройство
5) дождались синхросигнала
6) собрали данные с платы в буфер
7) обработали их
8) остановили е20-10 командой StopLDevice
и по-новой ждем следующего сеанса приема. НЕ применяя более такие функции как CloseLDevice и загрузку биоса до следующего запуска всего программного проекта?

13.11.2012 16:36:37
#12

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

Re: Проблема с буфером L-CARD Е20-10

да.

Всеволод
13.11.2012 16:58:11
#13

Гость

Re: Проблема с буфером L-CARD Е20-10

Спасибо, Poul. Попробую переделать.
Последний вопрос. Есть ли у Вас пример кода для реализации программы по расписанию? Например как реализовано в вашей программе LGraph2.

Заранее спасибо.

13.11.2012 17:12:04
#14

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

Re: Проблема с буфером L-CARD Е20-10

все примеры  в дистрибутиве. больше ничего нет.

13.11.2012 19:51:28
#15

Инженер-электронщик
Откуда: "Л Кард"
Здесь с 21.04.2014
Сообщений: 4,597

Re: Проблема с буфером L-CARD Е20-10

Всеволод, нужно ещё разобраться, какую версию прошивки ПЛИС Вы используете...

14.11.2012 12:32:11
#16

Инженер-электронщик
Откуда: "Л Кард"
Здесь с 21.04.2014
Сообщений: 4,597

Re: Проблема с буфером L-CARD Е20-10

Всеволод, Ваша проблема осознана. Буду смотреть, что происходит на аппаратном уровне E20-10 при Ваших условиях. Если такое поведение подтвердится, то решим проблему обновлением прошивки.

15.11.2012 11:13:15
#17

Сотрудник "Л Кард"
Здесь с 24.04.2014
Сообщений: 1,522

Re: Проблема с буфером L-CARD Е20-10

Узнать версию прошивки модуля E20-10 можно с помощью утилиты ModulesViewer:
http://www.lcard.ru/download/modulesviewer13.exe

Всеволод
16.11.2012 12:29:14
#18

Гость

Re: Проблема с буфером L-CARD Е20-10

Вот , что показывает ModulesViewer:
Микроконтроллер:
MCU AVRATmega162
Частота 7500 кГц
Версия 2.1 от Apr 18 2008

Загрузчик
Версия 2.0 от Mar 18 2008

ПЛИС
PLD ALTERA Cyclone EP1C3T144
Частота 60000 кГц
Версия 2.00.06 от 01.09.08

16.11.2012 16:55:46
#19

Инженер-электронщик
Откуда: "Л Кард"
Здесь с 21.04.2014
Сообщений: 4,597

Re: Проблема с буфером L-CARD Е20-10

ОК. Смогу заняться Ваши вопросом на следующей неделе.

18.11.2012 21:40:27
#20

Инженер-электронщик
Откуда: "Л Кард"
Здесь с 21.04.2014
Сообщений: 4,597

Re: Проблема с буфером L-CARD Е20-10

Всеволод. Действительно, в прошивке 2.00.06 при использовании режима внешнего старта сбора данных по фронту/спаду цифрового сигнала START в сочетании с дополнительным условием старта по фронту/спаду сигнала в канале АЦП, в сочетании с программным остановом сбора данных, не сбрасывался триггер START, что приводило к тому, что данные продолжали наполнять буфер АЦП даже после программного останова сбора данных. Обновление прошивки (ПО) вышлем Вам в ближайшие дни, как только будет готово.

Всеволод
19.11.2012 08:20:41
#21

Гость

Re: Проблема с буфером L-CARD Е20-10

Благодарю Вас, Александр. С нетерпением жду обновление прошивки на указанный е-майл, либо на Aister@bk.ru

20.11.2012 12:15:10
#22

Сотрудник "Л Кард"
Здесь с 24.04.2014
Сообщений: 1,522

Re: Проблема с буфером L-CARD Е20-10

Ответил письмом.