Меню
+7 (495) 785-95-25
sale@lcard.ru
sale@lcard.ru
Страницы 1
|
||||
|
Помогите с внешней синхронизацией для Е502Здравствуйте. |
|||
|
||||
|
Re: Помогите с внешней синхронизацией для Е502Здравствуйте. |
|||
|
||||
|
Re: Помогите с внешней синхронизацией для Е502Алексей, спасибо за ответ. Спасибо. |
|||
|
||||
|
Re: Помогите с внешней синхронизацией для Е502Обработка входных данных идет в usr_in_proc_data() в l502_user_process.c. Если size меньше нужного, то вернуть 0, иначе выполняется Ваша обработка данных из data нужного размера. Если не нужно передавать эти данные в ПК, то можно сразу после обработки просто вызвать streams_stop() и снова streams_start() (из l502_stream), чтобы остановить весь ввод, очистить буфер и снова запустить (но они перезапускают и передачу потока данных в ПК, поэтому если Вы еще этот блок передаете в ПК, то нужно сделать вариант streams_start и streams_stop без вызова функций остановки-запуска передачи потоков в ПК, которые начинаются с hdma_, и использовать их). Также при начальной настройке модуля и запуске сбора стоит установить шаг прерывания для обработки данных равным (или кратной части) вашему размеру обрабатываемых данных, через sport_in_set_step_size() |
|||
|
||||
|
Re: Помогите с внешней синхронизацией для Е502Алексей, большое спасибо. В общих чертах понял. Буду разбираться. |
|||
|
||||
|
Re: Помогите с внешней синхронизацией для Е502Алексей, нужна помощь еще. В программе на РС примерная инициализация настроек: То есть я должен видеть переданные на РС данные в виде 0xD0xxxxxx - с первого физ канала, с общей землей. Я их и вижу, но не всегда. С вероятностью примерно 30% я вижу абстракцию типа 0xEBxxxxxx 0x5Bxxxxxx 0xD3xxxxxx, причем стабильно именно такие наборы (в следующем запуске программы, правда, могут быть и другие, но похожие). По косвенным данным в процессе отладки таких странных данных может быть либо часть буфера (стабильная по длине для данных настроек шага буфера), либо вообще все. |
|||
|
||||
|
Re: Помогите с внешней синхронизацией для Е502Здравствуйте. Во первых как я понял у Вас есть своя функция передачи своего массива. В первую очередь наверное стоит проверить ее, т.к. записывать в обработчике какие-то предопределенные данные, чтобы понять где ошибка. Если передаются в таком варианте верно, то уже дальше смотреть про поток. Не до конца понял про часть буфера, я как вроде понял, что передаете всегда 3 слова? В принципе я посмотрел, может вызывать stream_start() и stream_stop() из usr_in_proc_data() не совсем корректно, т.к. функция вызывается из середины обработки данных потока и ее результат используется для обновления позиции в буфере, хотя в реальности у Вас уже будет перезапущен сбор. Более корректно будет например ввести глобальный флаг запроса перезапуска сбора, который устанавливать в usr_in_proc_data, когда данные собраны, а проверять в конце stream_proc и если он установлен - сбрасывать его и делать streams_stop (); streans_start(), хотя не уверен, что это связано с Вашей проблемой. |
|||
|
||||
|
Re: Помогите с внешней синхронизацией для Е502Здравствуйте. |
|||
|
||||
|
Re: Помогите с внешней синхронизацией для Е502Принимать от ПЛИС Blackfin такие данные при таких настройках не должен, и т.к. сбор идет в изначальной прошивке нормально, то и не принимает. Скорее всего это случается из-за того что в качестве данных ошибочно передается мусор, а не реально пришедшие данные. Соответственно нужно определить какое изменение штатной прошивки к этому приводит. Также насколько я понимаю у Вас эти 3 слова постоянно обновляются, т.к. сбор перезапускается и эта функция вызывается снова и снова, перезаписывая один и те же данные. Я бы сначала проверил бы без останова сбора сохранять однократно эти раз 3 слова и проверить их. Потом с однократным остановом и запуском и т.п. По поводу того как корректно сделать перезапуск, я описал выше. в принципе изначальный вариант мог приводить при повторном вызове функции к неправильному определению, какая часть буфера уже содержит принятые данные. |
|||
|
||||
|
Re: Помогите с внешней синхронизацией для Е502Спасибо. |
|||
|
||||
|
Re: Помогите с внешней синхронизацией для Е502Еще раз спасибо - так заработало. |
|||
|
||||
|
Re: Помогите с внешней синхронизацией для Е502Если можно, подскажите еще немного. |
|||
|
||||
|
Re: Помогите с внешней синхронизацией для Е502Если речь идет про АЦП, то оно калибруется так, что код X502_ADC_SCALE_CODE_MAX (6000000) соответствует напряжению диапазона (если используете диапазон +-10В, то - 10 В), т.е. код по вольтам получается как code = (int) (V * X502_ADC_SCALE_CODE_MAX / VR), где V - напряжение, которое нужно перевести в код, а VR - напряжение используемого диапазона. |
|||
|
||||
|
Re: Помогите с внешней синхронизацией для Е502Спасибо, то что нужно. |
|||
|
||||
|
Re: Помогите с внешней синхронизацией для Е502Запутался в коэффициентах с этой вашей растяжкой до 6000000. |
|||
|
||||
|
Re: Помогите с внешней синхронизацией для Е502Если Вы устанавливаете коэффициенты с верхнего уровня с помощью X502_SetAdcCoef(), то результирующий код вычисляется (как указанов в описании функции) как (val - offs) * k, где val - некалиброванный код с АЦП, т.е. до растяжения. Если записываете напрямую в регистры ПЛИС, то там меняется знак смещения (т.е. функция записывает в регистр ПЛИС -offs, а внутри ПЛИС используется сложение в формуле). |
|||
|
||||
|
Re: Помогите с внешней синхронизацией для Е502Да, я использую X502_SetAdcCoef. |
|||
|
||||
|
Re: Помогите с внешней синхронизацией для Е502Не до конца понял сперва, что имеете ввиду под "растянутыми". Данные с АЦП перед калибровкой переводятся в 24-битный код (добавляется нулевой байт справа), а затем уже все операции выполняются в 24-битной арифметике. |
|||
|
||||
|
Re: Помогите с внешней синхронизацией для Е502Т.е. смещение - это 24-битный "растянутый" код |
|||
|
||||
|
Re: Помогите с внешней синхронизацией для Е502Спасибо. Я понял. |
Страницы 1
Адрес: 117105, Москва, Варшавское шоссе, д. 5, корп. 4, стр. 2
Многоканальный телефон:
+7 (495) 785-95-25
Отдел продаж: sale@lcard.ru
Техническая поддержка: support@lcard.ru
Время работы: с 9-00 до 19-00 мск