Меню
+7 (495) 785-95-25
sale@lcard.ru
sale@lcard.ru
Страницы 1
... Вроде разобрался!
1. Не стоило комментировать блок
// ---- цикл записи получаемых данных и ожидания окончания работы приложения ------------
while (!IsReadThreadComplete)
{
......
}
в теле функции main
2. Заменил код примера ReadData
// -----------------------------------
if (!pModule->STOP_ADC())
{
ReadThreadErrorNumber = 0x1;
IsReadThreadComplete = true;
return 0x0;
}
на собственный код
// -----------------------
while (!pModule->STOP_ADC())
{
Sleep(10);
printf("ERROR: STOP_ADC - 1\n");
}
Алексей
Добрый день!
1. Работаю с модулем Е20-10:
Module E20-10 (S/N 6T193838) is ready ...
Module Info:
Module Revision is 'B'
AVR Driver Version is 2.2 (Sep 7 2012)
PLD Version is 2.00.06 (01.09.08)
Adc parameters:
ChannelsQuantity = 1
AdcRate = 10000.00 kHz
InterKadrDelay = 0.00010 ms
KadrRate = 10000.00 kHz ,
на основе адаптации примера ReadData для MicroSoft Visual C++ 6.0.
2. В ходе запуска консольной программы модуль периодические выдает ошибку:
ReleaseLInstance() --> OK
ADC Thread: STOP_ADC() --> Bad,
в следующих процедурах
2.1.
DWORD WINAPI ServiceReadThread(PVOID /*Context*/)
{
........
// остановим работу АЦП и одновременно сбросим USB-канал чтения данных
if(!pModule->STOP_ADC())
{
printf("ERROR: STOP_ADC\n");
ReadThreadErrorNumber = 0x1;
IsReadThreadComplete = true;
return 0x0;
}
2.2.
// остановим работу АЦП
// !!!ВАЖНО!!! Если необходима достоверная информация о целостности .......
if (!pModule->STOP_ADC())
{
printf("ERROR: STOP_ADC - 2\n");
ReadThreadErrorNumber = 0x1;
}
3. Как я понимаю это связано с низкоуровневым взаимодействием модуля с ОС Windows.
Есть ли какие нибудь методы "лечения", вставка программных задержек или производить опрос до успешного выполнения?
Алексей
Алексей L Card -- Огромное спасибо, все сработало!
Алексей
Добрый день!
Необходимо: произвести многоканальные измерения посредством АЦП, запускаемые по сигналу на DI_SYN1_RISE
0. Переписываю пример кода для L-Card, x502_stream_read.
1. Все хорошо работает в случае запуска измерений посредством программного запуска X502_StreamsStart(hnd);
2. После вставки инструкции на запуск измерений от внешнего импульса
err = X502_SetSyncStartMode(hnd, X502_SYNC_DI_SYN1_RISE);
код работает как и прежде, даже в отсутствии физического сигнала на DI_SYN1.
Хотя по идее программа должна ждать прихода сигнала запуска на DI_SYN1
3. Схема соединения контактов analog разъема следующая
- X1 - подключен на источник сигнала;
- DI_SYN1 - подключен на источник синхроимпульса;
- все остальные контакты (включая ANGD, GND32) заземлены за исключением: DAC1, DAC2 - висят в воздухе
- разъем источника аналогового сигнала и сигнала внешнего синхроимпульса имеют общую землю
4. Программный код следующий
/* устанавливаем параметры логической таблицы АЦП */
err = X502_SetLChannelCount(hnd, ADC_LCH_CNT);
/* устанавливаем параметры заданного логического канала в логической таблице АЦП.*/
for (i = 0; (i < ADC_LCH_CNT) && (err == X502_ERR_OK); i++)
err = X502_SetLChannel(hnd, i, ..., ..., ...., 1);
/* устанавливаем частоты ввода для АЦП */
err = X502_SetAdcFreqDivider(hnd, ADC_FREQ_DIV);
err = X502_SetAdcInterframeDelay(hnd, 0);
/* записываем настройки в модуль */
err = X502_Configure(hnd, 0);
/* разрешаем синхронные потоки */
err = X502_StreamsEnable(hnd, X502_STREAM_ADC);
/* Установка режима генерации частоты синхронизации - тактовой частоты АЦП*/
err = X502_SetSyncMode(hnd, X502_SYNC_INTERNAL);
// Установка запуска измерений по внешнему синхроимпульсу
err = X502_SetSyncStartMode(hnd, X502_SYNC_DI_SYN1_RISE);
// запуск АЦП на измерение
err = X502_StreamsStart(hnd);
5. Параметры модуля следующие
Library version: 1.1.13
The following modules are available:
Serial number: 2T222574
Установлена связь со следующим модулем:
Серийный номер : 2T222574
Наличие ЦАП : Да
Наличие BlackFin : Нет
Наличие гальваноразвязки: Да
Индустриальное исп. : Нет
Наличие интерф. PCI/PCIe: Нет
Наличие интерф. USB : Да
Наличие интерф. Ethernet: Нет
Версия ПЛИС : 0.1
Версия PLDA : 0
Версия прошивки ARM : 1.0.1.0
6. Не подскажете, порядок вызовов функций настроек для E-502 правильный?
Рабочий день убил, не вижу ошибки...
Спасибо!
Алексей
Страницы 1
Адрес: 117105, Москва, Варшавское шоссе, д. 5, корп. 4, стр. 2
Многоканальный телефон:
+7 (495) 785-95-25
Отдел продаж: sale@lcard.ru
Техническая поддержка: support@lcard.ru
Время работы: с 9-00 до 19-00 мск