DMA, FREERTOS, interruptions, как понять, что использовать?

Тема в разделе "Флудилка", создана пользователем Денис_Алимеров, 27 авг 2019.

  1. Пытался сделать на AVR, в форуме про AVR подсказали перейти на ARM. В итоге перешел на ARM-stm32.
    В итоге, как быть, на одном чипе надо сигнал сделать - 1 МГц, 250 кГц, ну и еще один сигнал, и в итоге потом прочитать аналоговый сигнал. На рисунке схема, это датчик - линейный CCD сенсор.Никак не могу понять, в чем разница между DMA, FREERTOS, interruptions, что лучше и по какому принцему выбирать, я все попробовал, пока все не очень, поэтому куда копать, подскажите пожалуйста?
     

    Вложения:

  2. parovoZZ

    parovoZZ Гуру

    Будешь много читать - через пару лет поймёшь. На данном этапе познаний разговаривать не о чем. Тем более про сложнейший АРМ.
     
  3. parovoZZ

    parovoZZ Гуру

    Ничего не понял. С CCD выходит аналоговый сигнал. Спектр какой у сигнала? Если до 200 МГц - то это только внешний АЦП. Но развести плату под такие частоты без опыта практически невозможно. И никакая СТМ не переварит такой поток.
    1 МГц - форма сигнала?
    Вопросы надо задавать так, чтобы у собеседника возник интерес ответить. А если все клещами вытаскивать - получится только флуд.
     
  4. Igor68

    Igor68 Гуру

    FREERTOS - операционная система реального времени. Зачастую не так просто ОС, а некий "шаблон" с разделением задач между рядом функций, которые выполняются условно параллельно. Ну и как в обычной ОС, только заточена на быстрое переключение контекста. Как и говорил эта "шаблонная" ОС является частью самого проекта (одна прошивка). И далеко не всегда подгружает файлы как обычная ОС. Встречал и RTOS с полноценным взаимодействием с файловой системой. Простите что много нашумел.
    DMA - прямой доступ к памяти. Это когда какое-нибудь устройство на шине процессора получает прямой доступ к памяти минуя ЦПУ, который в этот момент теряет (отдаёт) управление шиной этому устройству. Как пример в ARM/Cortex контроллер доступа к памяти флеш перетаскивает массив из флеш в озу (как пример). Потому как этот контроллер имеет аппаратный доступ к флеш и озу и соответственно быстрее. Как пример есть и контроллеры SPI таскающие из этого SPI данные из озу и обратно. Ну и т.п.
     
  5. на рисунке не правильно подписал, там 250 кГц, но рисунок подправил, должно быть понятнее теперь.
    А вообще вопрос, нужно сделать, чтобы STM генерировал 2 сигнала один с частотой - 1 МГц, другой с частотой - 250 кГц, ну и при этом чтобы еще аналоговый сигнал принимал (из CCD выходит аналоговый сигнал, там надо мне измерять длительность импульса, примерно 6 м, но чем точность измерения выше, тем лучше.), поэтому, через что делать - таймеры или rtos.
    Я пока на RTOS получил максимум 250 кГц с RTC,на таймерах и того меньше.
     
    Последнее редактирование: 28 авг 2019
  6. parovoZZ

    parovoZZ Гуру

    Все делается на самой простой восьмибитке, если речь про импульсный сигнал.
    Вся задача решается на дешманской Attiny817 на 20 строчках кода (образно говоря). У неё в модуле АЦП есть аппаратный компаратор, на котором поиск импульса заданной длительности происходит полуарпаратно с помощью системы событий. Подсчитывать интервалы на RTOS - это что-то новое. На RTOS запускают несколько задач одновременно.
     
    Денис_Алимеров нравится это.
  7. спасибо большое, потребовалось время, чтобы все изучить, управляющие сигналы задал чем таймеры, а вот правильно ли я понял, что аналоговый сигнал, которой получаю на канал ADC, при превышении порога, через компараторчерез watchdog? (или просто через if ), сначала обнулит таймер и тут же запустит его для того чтобы рассчитать дилительность импульса?
    (я импульсы еще считал через захват на таймерам, но мне надо начинать считать с напряжения 1,1 В)
     
    Последнее редактирование: 30 авг 2019