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

Форум

Вы не вошли.

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

#1 Re: Техническая поддержка » Задержка вывода ЦАП/DOUT » 17.11.2020 22:28:56

Nop

Спасибо за ответ!
Задача состоит примерно в том, чтобы принимать входной сигнал на один из каналов АЦП, а затем, умножив его на коэффициент, выдавать через ЦАП1 и ЦАП2
Хочется сделать задержку между входом и выходом минимальной, но пока она составляет 20-24 мкс (прерывание раз в 10 мкс, входная частота 500 kHz, выход - 1 MHz).

#2 Техническая поддержка » Задержка вывода ЦАП/DOUT » 16.11.2020 23:21:47

Nop
Ответов: 3

Здравствуйте!

Я правильно понимаю, что сформированные в штатной прошивке данные после выполнения функции sport_tx_start_req появятся на выходах ЦАП/DOUT только через 10 мкс ? ( обсуждение в https://www.lcard.ru/forums/viewtopic.p … 198#p56198 )

Можно ли сократить это время?

#3 Re: Техническая поддержка » Разрывы при выдаче синусоиды через L-502 » 16.10.2020 02:59:33

Nop

Здравствуйте! Спасибо за ответ, действительно помогло!
Описанные Вами особенности работы функции sport_tx_start_req были для меня не очевидны.

С пунктом 2 несогласен, т.к. за раз принимаю 500(ЦАП) + 500(DIN) слов, и при этом OUT_BUF_SIZE=1000000/2000=500
В выдаче я формирую две синусоиды, поэтому должен выдавать OUT_BUFF_SIZE * 2= 1000 слов
Что я и делаю.
Вроде бы, все правильно...

#4 Re: Техническая поддержка » Разрывы при выдаче синусоиды через L-502 » 09.10.2020 22:50:40

Nop

Архив послал на почту support@lcard.ru
Прошивка создана на основе вашей штатной. В архиве только ваши измененные и мои файлы.
Запускается подачей команды L502_BF_CMD_CODE_USER + 1 с PC
Масштаб 100 микросекунд

#5 Re: Техническая поддержка » Разрывы при выдаче синусоиды через L-502 » 05.10.2020 22:17:38

Nop
Nop пишет:

если выдавать 1000 - 2 слова

Ошибся, 500 - 2 конечно же для этой настройки. Но если прерывать 1000 раз в секунду, та же картина.

#6 Техническая поддержка » Разрывы при выдаче синусоиды через L-502 » 05.10.2020 22:11:29

Nop
Ответов: 6

Здравствуйте!
Карта L-502 с прошивкой 0.4 (и 0.10)
Есть задача принимать аналоговый сигнал и DIN и выдавать этот же сигнал через два ЦАП'а.
Оцифровка входа 1МГц (АЦП и DIN), выход 1МГц (только ЦАП). Настроено прерывание 2000 раз в секунду, соответственно,
использую выходной буфер в 1000 слов. При приеме АЦП значение преобразую в 16-ти битное и записываю попеременно
для ЦАП1 и ЦАП2 в выходной буфер.
И при этом получаю разрывы при выдаче. Ситуация исправляется, если выдавать 1000 - 2 слова, но это же не дело?

Так это выглядит (желтым цветом принимаемый сигнал, зеленым - ЦАП1, отключен ЦАП2):

Скрытый текст

sin.png

#7 Re: Техническая поддержка » L-502 Получение данных с цифровых входов » 05.04.2018 15:49:18

Nop

Спасибо за ответ!
А разве вызов stream_enable( L502_STREAM_DIN ); не запрещает все, кроме потока DIN?

#8 Техническая поддержка » L-502 Получение данных с цифровых входов » 04.04.2018 20:54:08

Nop
Ответов: 11

Здравствуйте!

Имеется карта 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 разрешить только поток АЦП, то прерывания все равно происходят.

#9 Техническая поддержка » Установка шага прерывания для приема по SPORT0 » 24.01.2018 21:20:38

Nop
Ответов: 2

Здравствуйте!

При модификации штатной прошивки 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.

Контакты

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

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

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

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