Страница 1 из 1

задержка в тактах, методами си

Добавлено: Ср сен 24, 2014 18:34:09
Open
Доброго дня!
Возник вопрос, решающийся локально, но положиться на эту реализацию стремно...
итак, генерирую синхроимпульс, после которого начинаю долбить ацп с максимальной частотой(2МГц).. однако, хочется 4 :)
Ну, не беда, думаю я: процесс достаточно стационарный : проведу и обобщу 2 измерения - влеплю ка я каждый второй раз между запускающим синхроимпульсом и началом сбора информации задержку, составляющую половине периода дискретизации (в моем случае 0.25мкс или 30тактов 120МГц-процессора).
Далее пишу в кейсе какую то левую муру,дабы она реализовалась в холостые такты, дизассемблером и таблицами проверяю, что результат достигнут..

Однако же.. Кто гарантирует, что при смене компилятора, или его опций, или же просто в будущем введя локальную переменную "где то" я нарушу строгое построение сегодня-откомпелированного кода и в панике буду клеймить высшие силы и призывать бубен, ибо вчера это все работало :)

Пожалуйста, посоветуйте способ, если конечно он существует!
P.S. или все таки ассемблер?

Re: задержка в тактах, методами си

Добавлено: Ср сен 24, 2014 20:41:19
uk8amk
DMA
External trigger option
Channel by channel programmable sampling time

Если всё это грамотно соединить воедино, то можно очень гибко настраивать задержки.

ЗЫ. Касается STM32, но по идее у остальных должно быть аналогично.

Re: задержка в тактах, методами си

Добавлено: Чт сен 25, 2014 05:19:30
Open
uk8amk писал(а):Касается STM32

Да, это действительно STM32.
Самплинг тайм не спасает, ибо этот ряд в конечном счете:3+12,15+12,28+12,56+12 и тд. циклов, а при тактировании модуля АЦП 30мгц только 3+12 дает 2мгц преобразований. То есть, хотя инструмент и есть, но он не годится на максимальной частоте.
ДМА задействовано - собираю последовательность из 1024 измерений.

Остается запуск от внешнего триггера, скажем счетчика, запрограммированного на 2мгц с нужной скважностью (скажем, передний фронт импульса обоих последовательностей совпадает, а задний(запускающий преобразование) разнится на 0.25мкс.
Однако, со счетчиками-таймерами до сих пор работать не приходилось, но есть определенные сомнения, что их удастся так запрограммировать: Пошел курить мануал :)

ЗЫ задействовать очередной модуль всегда немного жадно - миллиамперная жаба душит!