Меню

+7 (495) 785-95-25
sale@lcard.ru
sale@lcard.ru
Страницы 1
Тема закрыта
|
||||
|
E140M, Модификация синхронизацииДобрый день. В плате E14-140 (rev. //'A//') я изменял прошивку, так что бы запуск АЦП производился при выходе сигнала за пределы определенного "коридора", т.е. вверх и вниз одновременно (середина коридора и "0" АЦП совпадать не обязаны!). Перез запуском регистрации нужно установить ТТЛ (раньше нельзя!).
|
|||
|
||||
|
Re: E140M, Модификация синхронизацииДаниил, действительно в Е14-140М функция аналоговой синхронизации запуска АЦП сделана на аппаратном уровне (в Альтере, и поэтому эта синхронизация стала значительно точнее по времени срабатывания по сравнению с E14-140, где на скорость реакции AVR-а могли повлять прерывания от USB-контроллера).
|
|||
|
||||
|
Re: E140M, Модификация синхронизацииВ Вашей постановке задачи, в частности, не хватает временнЫх данных, например:
|
|||
|
||||
|
Re: E140M, Модификация синхронизацииПотребность - 3-5 в год. В этом году ушла последняя плата старого образца (недавно тут писал про запуск под Win7), купили 4 новых, из них 2 мы уже должны отправлять, а две остаются пока в запасе. Вполне возможно, что до следующего года.
|
|||
|
||||
|
Re: E140M, Модификация синхронизацииМожно сделать программную синхронизацию, т.е. дать программный пуск АЦП и написать код, который будет вычитывать и отбрасывать данные до выполнения заданного условия, а потом начнет в обычном режиме выдавать их в компьютер.
Сразу скажу, что при реализации такого алгоритма придется подумать, как организовать ввод данных из порта USART. Можно попробовать сделать маленькие буферы DMA и проверять условие в прерывании; тут возможна задержка реакции на один-два буфера. Можно попробовать не включать DMA, а читать из порта программно (как в старом модуле на AVR), если хватит скорости.
Если же допустим разброс в целый блок DMA, тогда реализация существенно проще. |
|||
|
||||
|
Re: E140M, Модификация синхронизацииКстати, возможно и чисто аппаратное решение - какие-нибудь аналоговые компараторы, выдающие событие на вход INT. Останется только придумать, как добавить установку TTL, при допусках порядка 1мс есть простор для маневра. (Можно обнаруживать пуск ПЛИС по поступлению данных или по изменению счетчиков DMA, можно и напрямую читать ножку INT или даже сделать он нее прервыание, она заведена на процессор).
|
|||
|
||||
|
Re: E140M, Модификация синхронизацииИспользуется выходов.
|
|||
|
||||
|
Re: E140M, Модификация синхронизацииИспользуется 7 выходов. |
|||
|
||||
|
Re: E140M, Модификация синхронизацииЧитайте исходники прошивки, прежде всего adc.c
Просто выбрасывать данные можно, выборочно пропуская WriteUSB() в функции ADC_Worker().
Ну а если надо серьезнее, то придется писать отдельную хитрую процедуру (кое-какие идеи см. выше) на основе ADC_Start(), ADC_StartSingleChannel() и, может быть, придется модифицировать обработчик прерывания SSC_Interrupt_Handler(). |
|||
|
||||
|
Re: E140M, Модификация синхронизацииЯ правильно понял, что в одном блоке DMA лежит 32 отсчета АЦП, т.е. в моем случае (16 каналов) - 2 кадра АЦП?
|
|||
|
||||
|
Re: E140M, Модификация синхронизацииДа, в блоке 64 байта = 32 отсчета. Вообще говоря, это можно менять в adc.h, но разумно (блок задает интервал следования прерываний от DMA, а также связан с логикой блочной передачи в USB). >в комментариях ADC_Worker написано /"Не обращаться к таймеру, CPLD и EEPROM
Это ограничение, насколько я помню, только из-за таймера, отсчитывающего таймауты. Он сделан только один и конфликтует.
|
|||
|
||||
|
Re: E140M, Модификация синхронизацииКак я понимаю, они конфликтовать будут, только если использовать их одновременно.
Спасибо за помощь, все заработало, осталось тестировать и тестировать. Подскажите пожалуйста еще, в чем собираете библиотеку lusbapi, Borland C++ Builder 5 подойдет?
|
|||
|
||||
|
Re: E140M, Модификация синхронизации>Как я понимаю, они конфликтовать будут, только если использовать их одновременно. Ну да, просто я предпочитаю не оставлять в коде заведомо некорректных мест, т.е., образно говоря, если цепь изменена так, что нажатие на некую кнопку вызовет короткое замыкание, то лучше не вешать табличку <<Не нажимать, опасно!>>, а отсоединить эту кнопку от цепи |
Страницы 1
Тема закрыта