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

Установка шага прерывания для приема по SPORT0

Вы не вошли.

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

Nop
24.01.2018 21:20:38
#1

Участник
Здесь с 24.01.2018
Сообщений: 9

Установка шага прерывания для приема по SPORT0

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

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

25.01.2018 13:09:24
#2

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

Re: Установка шага прерывания для приема по SPORT0

Здравствуйте.
Дело в том, что если Вы запускаете сбор с верхнего уровня через функцию X502_StreamsStart(), то сперва функция настраивает потоки в соответствии с параметрами и передает в частности команду BF установить шаг прерывания (то, что Вы изменили, это как раз и обработка этой команды с ПК, по которой и выставляется шаг, определяемый программой ПК), после чего уже передается в BF команда запуска потоков (L502_BF_CMD_CODE_STREAM_START). Поэтому, если Вы установили шаг заранее в прошивке, то он будет изменен командой с ПК.

Соответственно, если Вы хотите определять шаг в прошивке BF, а не в программе верхнего уровня, то Вы можете либо устанавливать шаг непосредственно при обработке команды запуска сбора перед остальными действиями, либо изменить обработчик команды с ПК, которая устанавливает шаг, чтобы ничего не выполнять по этой команде и игнорировать ее.

25.01.2018 13:28:56
#3

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

Re: Установка шага прерывания для приема по SPORT0

Да, стоит сказать, что по сути при использовании L502 с BF у Вас есть в некотором смысле два шага прерывания, один - это шаг прерывания для sport - определяет шаг, с которым по сути bfin будет обрабатывать входные данные и шаг прерывания при передаче потока из модуля в ПК (который никак не влияет на работу собственно BF) - шаг с которым уже данные будут обрабатываться в ПК. Последний соответственно используется только драйвером и определяется библиотекой. Прошивка же bfin определяет первый. В штатной версии она устанавливает его равным второму в обработчике установки параметра L502_BF_PARAM_IN_STEP_SIZE.
Если Вы хотите изменить только первый, например, чтобы обрабатывать данные в BF меньшими порциями для быстрой реакции, то его нужно установить отдельно, одним из двух способов как писал в предыдущем сообщении. При этом шаг приема в ПК останется старым, благодаря чему нагрузка на ПК не увеличится (слишком малый шаг прерываний пл PCI-E для большого потока может привести к сильной загрузке ПК на их обработку). Если по каким-то причинам нужно изменить и шаг приема в ПК, то это уже можно только с верхнего уровня через X502_SetStreamStep(), но учитывая сказанное до этого про нагрузку на ПК.

Контакты

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

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

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

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