Перейти к содержанию
    

Вопрос нуба - реально ли?

Вряд ли такой путь подойдет - ибо срабатывания порога - это апофигей процесса, а интересует еще и препроцессинг - то что бызо нза какое то количество времени до того, как сигнал перешагнул порог.... Поэтому по крайней мере нужно буферизирование
Очередной вопрос из серии "догадайся сам"? Где в исходном посте написано, что нужно обрабатывать предисторию срабатывания по превышению порога? Люблю я таких, ух как люблю...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Есть контроллеры Cygnal два ADC с DMA на 1MSP каждый

у оболих DAC есть 2 АППАРАТНЫх ЦИФРОВых компаратора. То есть в соотв. регистры пишеться значение срабатывания по верху и низу сигнала

а дальше оцифровка идет парктически аппаратно

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не, такое не подходит - ибо:

1) дорого

2) оно PCI, а надо снаружи вешать - ЮСБ

посмотрите на такое решение подключения внешних устройств к PC

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Может, stm32f103 подойдет? АЦП 12 бит. Есть DMA и USB. У АЦП есть аналоговый вотчдог. Посмотрите, по-моему так самое оно ))

Кста, и ценник хороший.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я понимаю что трудозатраты можно только очень грубо оценить, но в процессе изучения информации и мое представление о работе существенно меняется...

 

Теперь передо мной не стоит вопрос схемотехники - ибо устройств будет 1 (максимум 2-3) и нет особых требований к габаритам, то нет смысла городить что то свое - достаточно взять отладочную плату - для AVR32 - наверное EVK1101/EVK1100, если ARM7 - пока не нашел какие именно МК из этого сесмейства обладают АЦП>=800ksps...

А ну-ка покажите мне пальцем где в AVR32 или ARM7 ADC на 800 килосэмплов с учетом Acquisition Time при переключении каналов. И еще покажите какой ARM7 разгребет поток 800 килосэмплов в реальном времени.

Так что х-мегу отметаем :)

Тут похоже AVR32 вместе с ARM7 отметаются.

Надо смотреть в сторону младших DSP или внешних ADC + FPGA + USB проц.

Или делать 4 одноканальных устройства с общей синхронизацией.

Вот к примеру в силабсовских процессорах у ADC есть аппаратное сравнение результата с окном и вход внешнего запуска ADC.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Всю систему можно построить на 4 Atmega (с доп. ОЗУ) и Xmega + преобразователь USART-USB и 1 кварцевый генератор секундных импульсов для синхронизации (вообще при хороших кварцах достаточно будет сделать один запуск всей системы). Работает примерно так: по внешнему такту запускаться 4 АЦП в каждой Atmege и принимаются данные со скоростью 200 кГц, при превышении порога - записываем 2000 значений от срабатывания по уровню в буфер и их обработка (по крайне мере так следует из задачи), далее канал опять начинает принимать данные и в это же время по SPI (на частоте 1-10 МГц - частота выбираться от кварцев)передает данные в Xmega - который управляет приемом данных от 4 каналов АЦП-ATmega - и передает через преобразователь USART-USB на ПК (примерно скорость 1 Мбит). Данное решение возможно если только не надо постоянно передавать данные с АЦП - а только 2000 значений после срабатывания порога (хотя возможны коррективы - если порог очень часто).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А какой вид имеют входные сигналы? Это монотонные функции? Какое время нахождения выше порога?

На STM32F103 можно включить непрерывное преобразование 4 каналов (CH0->CH1->CH2->CH3->CH0-> и т.д.) с автоматическим укладыванием в память посредством DMA. Если настроить DMA для работы в кольцевом режиме с генерацией прерывания при половинном заполнении, то по прерыванию можно анализировать порог программно (при этом DMA и АЦП будут работать и получать новые данные). Если превышение есть, то у Вас в буфере уже есть предыстория сигналов на N отсчетов назад.

 

Затем готовите пакет и отправляете хоть по USB.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

... Работает примерно так: по внешнему такту запускаться 4 АЦП в каждой Atmege и принимаются данные со скоростью 200 кГц...

Вообще-то атмел рекомендует для получения 10 бит разрешения не превышать тактовой частоты для АЦП более 200 кГц. на преобразование уходит по-моему циклов 13. Чтобы получить частоту семплирования 200 кСемплов нужно чтобы тактовая была приблизительно 2,6 МГц, думаю что больше 2 бит точности (в самом лучшем случае) при такой тактовой на атмеловском АЦП получить нельзя.

З. Ы. Естественно сказанное относится к меговскому АЦП, а не к Хмеговскому, которое судя по всему значительно круче.

Изменено пользователем smac

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вообще-то атмел рекомендует для получения 10 бит разрешения не превышать тактовой частоты для АЦП более 200 кГц. на преобразование уходит по-моему циклов 13. Чтобы получить частоту семплирования 200 кСемплов нужно чтобы тактовая была приблизительно 2,6 МГц, думаю что больше 2 бит точности (в самом лучшем случае) при такой тактовой на атмеловском АЦП получить нельзя.

З. Ы. Естественно сказанное относится к меговскому АЦП, а не к Хмеговскому, которое судя по всему значительно круче.

Можно принимать сигнал в цикле - т.е. один и тот же сигнал заводим на 2 линии АЦП - и получаем - пока по одному преобразовываем, со второго канала считываем и так далее .... В этом случае частоты другие!

 

На AVR написал как бы сам делал (при условии что не нужна предыстория перед порогом, да и есть компилятор, среда отладки, программаторы...опыт работы).

Если же необходима предыстория (и все равно на чем делать, и нет ограничений по финансам и времени) - то лучше всего: быстродействующие АЦП Analog Device + 1 АРМ старших версий с внешним ОЗУ, CF и установленной Windows CE или Linux Embedded - при этом большая часть вопросов просто отпадает (как писать USB, FAT...., временная синхронизация ... ).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Можно принимать сигнал в цикле - т.е. один и тот же сигнал заводим на 2 линии АЦП - и получаем - пока по одному преобразовываем, со второго канала считываем и так далее .... В этом случае частоты другие!

...

Я Вам совсем про другое говорил, проблема скорости считывания не стоит в атмеловском АЦП, проблема в том что с него нельзя получить 200 кСемплов в секунду с нормальной (ну хотя-бы 8 бит) точностью.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я Вам совсем про другое говорил, проблема скорости считывания не стоит в атмеловском АЦП, проблема в том что с него нельзя получить 200 кСемплов в секунду с нормальной (ну хотя-бы 8 бит) точностью.

По моему проблема в том что ТЗ мало кто читает.

Автор хотел 200килосэмплов по 4 каналам одновременно, 2000 отсчетов после превышения порога в любом кнале и предысторию того что было до превышения.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Коллеги, помогите оценить возможность реализации задачи. На один из портов МК заходит параллельная восьмибитная шина данных. На 2 две линии другого порта подается байтовая и кадровая синхронизация. Максимальная частота байтовой синхронизации - 4МГц, короткий кадровый импульс появляется раз в 512 байт, указывая на начало блока. Сможет/успеет ли ATxmega принять один блок и уложить в заданную область ОЗУ? С DMA и системой событий ещё не работал, только начинаю изучать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

по идее сможет, я как разрожусь на макетку для 128А1 буду пробовать читать камеру.. там байтовая будет до 12-16МГц..

 

по теме - у Хмеги конвейрный АЦП.. Плюс их бывает и по 2 в камне... и заявленная скорость 2Msps...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Duhas, Вы обнадёжили. Однако, изучая документацию, узнал, что DMA и система событий тактируются от периферийной тактовой частоты (максимум 32МГц), а 2х- и 4х-периферийную частоту для этих модулей применить нельзя. Я планировал формировать событие от перепада уровня на выводе синхронизации и этим событием запускать транзакцию DMA от I/O (порт, на котором будет 8-бит данных) к внутренней SRAM. Всё это я должен успеть за 8 тактов процессорной тактовой частоты, получается впритык (5 или 6 тактов по моим подсчетам).

Как думаете, а что если на время приёма этого блока немного разгонять контроллер при помощи внутреннего PLL? В студии DMA и Event System симулируются?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ну сильно я бы не обнадеживался на вашем месте) я точно не уверен то все это успеет отработать.. неплохо бы поглядеть на макете.. а его пока нема... на счет разгона - не в курсе.. про ДМА - симулируется, а вот система событий - непонятно, толи я ей не понравился, но когда пробовал - не получилось...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...