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


E14-140MD: Не устанавливается 2-й канал ЦАП

Вы не вошли.

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

Александр
27.03.2012 17:21:49
#1

Гость

E14-140MD: Не устанавливается 2-й канал ЦАП

E14-140MD: Не устанавливается 2-й канал ЦАП в циклическом и потоковом режимах.
Функция DAC_SAMPLES(&DacSample0, &DacSample1) выполняется правильно (до потока).
Программа заносит данные в буфер ЦАП один раз до старта АЦП и ЦАПа (нужен циклический режим). Четные отсчеты буфера отправляемого в модуль функцией WriteData(&Data_Dac_E14140) модулем игнорируются. На выходе 2-го канала ЦАП остается напряжение установленное функцией DAC_SAMPLES(&DacSample0, &DacSample1) до запуска потока.
1-й канал ЦАПа работает правильно - воспроизводит записанные в буфер значения.
АЦП модуля похоже работает правильно (используется 25 кГц, 8 каналов).
Это неисправность модуля или что-то нужно исправить в программе?
Прошивка модуля 03.11 (март 2011), Lusbapi Ver. 3.4, USB драйвер LCOMP (14.02.11). Win7, 64 бит.

27.03.2012 20:36:37
#2

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

Re: E14-140MD: Не устанавливается 2-й канал ЦАП

Если асинхронный вывод на ЦАП (до запуска потока) работает правильно, то это не похоже на аппаратные проблемы. Сообщите, пожалуйста, серийный номер модуля.

Александр
27.03.2012 21:14:39
#3

Гость

Re: E14-140MD: Не устанавливается 2-й канал ЦАП

E14-140: S/N = 1D231843, Rev. = B

Александр
28.03.2012 09:18:45
#4

Гость

Re: E14-140MD: Не устанавливается 2-й канал ЦАП

Поправка: USB драйвер от LCOMP от 14.02.2012

29.03.2012 10:58:07
#5

Сотрудник "Л Кард"
Здесь с 18.04.2014
Сообщений: 810

Re: E14-140MD: Не устанавливается 2-й канал ЦАП

Александр, а Вы ничего не напутали с типом данных в массиве, который пишется через WriteData?
Он всегда двухканальный, т.е. 16-битное слово для канала 0, потом 16-битное слово для канала 1.

Можно описать как

int16_t dac_data[NSAMPLES][2]
dac_data[i][0] = ch0sample(i);
dac_data[i][1] = ch1sample(i);

или

struct { int16_t chan0, chan1; } dac_data[NSAMPLES];
dac_data[i].chan0 = ch0sample(i);
dac_data[i].chan1 = ch1sample(i);

Если, например, по ошибке вместо int16_t сделать int32_t, то на втором канале будут нули (или -1), а на первом - отсчеты обоих каналов через один.

То есть если, например, у Вас в данных одинаковые сигналы для обоих каналов, а константа, установленная DAC_SAMPLES до пуска, была 0, то наблюдаемая картина совпадет с описанной.

Других вариантов как будто бы не вижу -- с программной точки зрения ЦАП в E14-140MD программируется 32-битными словами (двухканальными), т.е. способа программно изменить значение только в одном канале ЦАП не существует уже на уровне прошивки микроконтроллера.

Контакты

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

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

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

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