Меню
+7 (495) 785-95-25
sale@lcard.ru
sale@lcard.ru
Страницы 1
Спасибо за ответ!
Задача состоит примерно в том, чтобы принимать входной сигнал на один из каналов АЦП, а затем, умножив его на коэффициент, выдавать через ЦАП1 и ЦАП2
Хочется сделать задержку между входом и выходом минимальной, но пока она составляет 20-24 мкс (прерывание раз в 10 мкс, входная частота 500 kHz, выход - 1 MHz).
Здравствуйте!
Я правильно понимаю, что сформированные в штатной прошивке данные после выполнения функции sport_tx_start_req появятся на выходах ЦАП/DOUT только через 10 мкс ? ( обсуждение в https://www.lcard.ru/forums/viewtopic.p … 198#p56198 )
Можно ли сократить это время?
Здравствуйте! Спасибо за ответ, действительно помогло!
Описанные Вами особенности работы функции sport_tx_start_req были для меня не очевидны.
С пунктом 2 несогласен, т.к. за раз принимаю 500(ЦАП) + 500(DIN) слов, и при этом OUT_BUF_SIZE=1000000/2000=500
В выдаче я формирую две синусоиды, поэтому должен выдавать OUT_BUFF_SIZE * 2= 1000 слов
Что я и делаю.
Вроде бы, все правильно...
Архив послал на почту support@lcard.ru
Прошивка создана на основе вашей штатной. В архиве только ваши измененные и мои файлы.
Запускается подачей команды L502_BF_CMD_CODE_USER + 1 с PC
Масштаб 100 микросекунд
если выдавать 1000 - 2 слова
Ошибся, 500 - 2 конечно же для этой настройки. Но если прерывать 1000 раз в секунду, та же картина.
Здравствуйте!
Карта L-502 с прошивкой 0.4 (и 0.10)
Есть задача принимать аналоговый сигнал и DIN и выдавать этот же сигнал через два ЦАП'а.
Оцифровка входа 1МГц (АЦП и DIN), выход 1МГц (только ЦАП). Настроено прерывание 2000 раз в секунду, соответственно,
использую выходной буфер в 1000 слов. При приеме АЦП значение преобразую в 16-ти битное и записываю попеременно
для ЦАП1 и ЦАП2 в выходной буфер.
И при этом получаю разрывы при выдаче. Ситуация исправляется, если выдавать 1000 - 2 слова, но это же не дело?
Так это выглядит (желтым цветом принимаемый сигнал, зеленым - ЦАП1, отключен ЦАП2):
Спасибо за ответ!
А разве вызов stream_enable( L502_STREAM_DIN ); не запрещает все, кроме потока DIN?
Здравствуйте!
Имеется карта L-502. Требуется снимать данные цифровых входов с частотой 1МГц и обрабатывать их 500 раз в секунду
Провожу инициализацию (в компьютерной программе никаких инициализаций, кроме загрузки прошивки, не происходит):
params_set_din_freq_div( 2'000'000 / 1'000'000 );
sport_in_set_step_size( 1'000'000 / 500 );
configure();
stream_enable( L502_STREAM_DIN );
streams_start()
Есть счетчик прерываний uint64_t COUNTER. При каждом вызове функции usr_in_proc_data делаю COUNTER++
Во внешней программе запущен цикл со Sleep(100) и происходит вывод size и COUNTER (через X502_BfExecCmd):
...
size=2000 counter=205
size=2000 counter=369
size=2000 counter=533
size=2000 counter=697
size=2000 counter=861
...
Т.е. за 100мс компьютера происходит ~164 прерывания. Что соответствует потоку данных 164*2000*10=3'280'000 слов в секунду.
Что я делаю не так? Есть еще странность: если в stream_enable разрешить только поток АЦП, то прерывания все равно происходят.
Здравствуйте!
При модификации штатной прошивки l502-bf столкнулся с ситуацией невозможности установки шага прерывания посредством функции sport_in_set_step_size: всегда выставляется 32768. Причем, если выставить шаг прерывания из внешнего windows-приложения через функцию X502_SetStreamStep, то все срабатывает. Если же заменить часть функции static void f_cmd_set_param(t_l502_bf_cmd *cmd) в файле l502_cmd.c в 260 строке с case L502_BF_PARAM_IN_STEP_SIZE: err = sport_in_set_step_size(cmd->data[0]); на, например, case L502_BF_PARAM_IN_STEP_SIZE: err = sport_in_set_step_size( 25 ), то шаг прерывания устанавливается в 25. Причем, при закомментированных вызовах sport_in_set_step_size и X502_SetStreamStep. Т.е. похоже, что мои установки через sport_in_set_step_size сбрасываются каким-то неявным вызовом f_cmd_set_param.
Страницы 1
Адрес: 117105, Москва, Варшавское шоссе, д. 5, корп. 4, стр. 2
Многоканальный телефон:
+7 (495) 785-95-25
Отдел продаж: sale@lcard.ru
Техническая поддержка: support@lcard.ru
Время работы: с 9-00 до 19-00 мск