Обработка сигналов, прерывания, жопа в общем

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Аватара пользователя
Рязанцев Владислав
Мудрый кот
Сообщения: 1781
Зарегистрирован: Пн июн 24, 2013 23:00:42
Откуда: Казахстан

Обработка сигналов, прерывания, жопа в общем

Сообщение Рязанцев Владислав »

Такой вот вопрос. Кто как реализует функции непрерывной обработки в реальном времени, допустим аналогового сигнала, если нужно делать что-то еще.
Ну вот допустим есть f103. Мне нужно взять АЦП, скорректировать его по какому-то алгоритму и вывести в ЦАП, и это все с минимальной задержкой. Недавно сталкивался с этим. Но кроме этого мне нужно выводить значения на дисплей, но можно не так часто, скажем раз в секунду. А если еще получить что-то по UART и отправить.
И того при выводе на дисплей или работе с UART получаем ступеньку на синусе.
Решил очень топорно- просто стал посылать нужное в UART, а там уже AVR c дисплеем. Итого что-то около 200Гц идеального синуса в 12 бит получилось.
Загнать обработку в прерывание я так понимаю сломает UART как минимум на прием. Вот собственно и не понимаю как.
Изображение
Ваши хотелки за ваши деньги
Реклама
Аватара пользователя
AlexS4
Друг Кота
Сообщения: 6668
Зарегистрирован: Пт сен 10, 2021 15:19:36
Откуда: Протвино

Re: Обработка сигналов, прерывания, жопа в общем

Сообщение AlexS4 »

я бы по прерыванию от uart rx/tx сделал простейшую запись в rx fifo и из tx fifо (софтовые кольцевые буферы) буквально 5-8инструкций.
а их заполнение и считывание делал бы в бесконечном цикле вместе с дисплейным алгоритмом ( который выполняется только если rx fifo далек от переполнения)

а обработки adc/dac сделать в прерывании по таймеру, c более низким приоритетом чем uart rx.
Реклама
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25338
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: Обработка сигналов, прерывания, жопа в общем

Сообщение КРАМ »

[uquote="Рязанцев Владислав",url="/forum/viewtopic.php?p=4104046#p4104046"]Ну вот допустим есть f103. Мне нужно взять АЦП, скорректировать его по какому-то алгоритму и вывести в ЦАП, и это все с минимальной задержкой. Недавно сталкивался с этим. Но кроме этого мне нужно выводить значения на дисплей, но можно не так часто, скажем раз в секунду. А если еще получить что-то по UART и отправить.[/uquote]
Для сигнальной обработки есть DMA. И в качестве реквеста к нему источник в виде таймера.
Остальное зависит от диаграммы работы АЦП и ЦАПа. Из условия задачи непонятна эта самая диаграмма. Но вывод в ЦАП должен быть очевидно по таймеру и через DMA. Зазор между выборкой АЦП и выводом в ЦАП будет СТРОГО ДЕТЕРМИНИРОВАННЫМ, ибо определится таймером. И в этом зазоре делайте свой расчет и обрабатывайте УАРТ с необходимым приоритетом. УАРТ в силу своей тормознутости обычно на обработку никак не влияет. Только писать код желательно в CMSIS, чтобы уменьшить латентность обработки прерываний. И без колбэков, естественно...
parovoZZ
Мудрый кот
Сообщения: 1759
Зарегистрирован: Пт июн 01, 2018 07:28:45

Re: Обработка сигналов, прерывания, жопа в общем

Сообщение parovoZZ »

Либо 2 МК, либо программируемая логика.
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15575
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Обработка сигналов, прерывания, жопа в общем

Сообщение BOB51 »

Основная задача - АЦП+ЦАП (предпочтение наличию аппаратных модулей).
Индикация фоном на основе таймера и пары буферов.
То же и с UART - работа через буфер при скорости, допускающей задержку считывания данных на интервал на порядок более, чем циклы обработки данных.
Но таки максимум быстродействия при дополнительном МК, занимающимся обработкой данных АЦП+ЦАП.
:roll:
Реклама
Аватара пользователя
Eddy_Em
Собутыльник Кота
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01
Контактная информация:

Re: Обработка сигналов, прерывания, жопа в общем

Сообщение Eddy_Em »

У STM32 есть DMA, что очень хорошо расширяет возможности!
Ну и, понятное дело, нельзя пользоваться калокубом.
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Реклама
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25338
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: Обработка сигналов, прерывания, жопа в общем

Сообщение КРАМ »

[uquote="BOB51",url="/forum/viewtopic.php?p=4104325#p4104325"]Но таки максимум быстродействия при дополнительном МК, занимающимся обработкой данных АЦП+ЦАП.
:roll:[/uquote]
Второй МК тут вообще ни к чему. Проблема обмена с быстрым процессом так и останется.
Вангую, что проблема ТС совсем не в скорости, а в переменной задержке между захватом сигнала ADC и его выводом в DAC. Поэтому важно лишь обеспечить правильный захват по Найквисту и ОДНОВРЕМЕННО с захватом выводить предыдущее пересчитанное значение в DAC. Будет задержка на один отсчет на выходе относительно входа и ПОЛНОЕ СОХРАНЕНИЕ ФОРМЫ СИГНАЛА.
ЗЫ. Ничего не понял из опасений ТС за прием по УАРТу. Это вообще асинхронный процесс. Самого низкого приоритета. Байт будет в буфере приема до завершения приема следующего байта. Там времени туева хуча на обработку буфера в коде.
Аватара пользователя
AlexS4
Друг Кота
Сообщения: 6668
Зарегистрирован: Пт сен 10, 2021 15:19:36
Откуда: Протвино

Re: Обработка сигналов, прерывания, жопа в общем

Сообщение AlexS4 »

на высоких скоростях uart без подтверждения готовности приемника нередко требует довольно оперативного зачитывания данных чтоб избежать потерь, я не читал про f103 но нередко uart без аппаратного fifo, точнее fifo на 1 байт)).

а синхронизировать adc/dac обмен кмк нужно в зависимости от тяжести алгоритма обработки, если это безусловные 10 инструкций скажем или легко подравнять по тактам то можно в коротком таймерном пререывании с высшим приоритетом зачитать/обработать/ответить, не мудрствуя лукаво ...
а иначе в таймере только зачитывать adc в буфер и выкидывать из буфера вывода в dac а глубина буферов (задержка выдачи в dac) будет определяться латентностью алгоритма и производительностью оставшейся от других задач. dma - не знаю насколько даст преимущество, если речь о паре байтов.
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25338
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: Обработка сигналов, прерывания, жопа в общем

Сообщение КРАМ »

О каких "высоких скоростях" УАРТ идёт речь? Даже при рейте 115200 байт принимается почти 90 мкс. Это для контроллера с циклом в 20 нс будет составлять 4500 машинных циклов. ЧЕТЫРЕ С ПОЛОВИНОЙ ТЫСЯЧИ, Карл!!! )))
И ДМА обеспечит СИНХРОНИЗМ захвата данных и вывода на ЦАП. При формировании отсчётов сигнала важна стабильность интервалов.Ни в каких прерываниях её не обеспечить.
Забудьте о задержке. Она не имеет особого значения если стабильна и не пропускает отсчеты.
Вы пытаетесь решить сигнальные задачи хаотичными любительскими методами.
Альтернативой ДМА при выводе в ЦАП может быть только наличие у ЦАПа синхронного режима работы, когда программный вывод в буфер ЦАПа не изменяет выходной сигнал, а лишь при приходе синхросигнала буфер защелкивается в выходной регистр ЦАПа и на его выходе появляется новое значение.
Последний раз редактировалось КРАМ Вт окт 12, 2021 14:17:48, всего редактировалось 1 раз.
Аватара пользователя
AlexS4
Друг Кота
Сообщения: 6668
Зарегистрирован: Пт сен 10, 2021 15:19:36
Откуда: Протвино

Re: Обработка сигналов, прерывания, жопа в общем

Сообщение AlexS4 »

50MHz :o ... дауж и разработчики ставят 2й mpu чтоб оcвободить такого монстра от "лишних" задач ... ;)
никак не избавлюсь от привычки что каждый такт может быть на счету но да, это уже слишком архаичный подход ...

да, c прерываниями асинхронность 1-3такта обычно тоесть целых 60nS у нас)
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25338
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: Обработка сигналов, прерывания, жопа в общем

Сообщение КРАМ »

[uquote="AlexS4",url="/forum/viewtopic.php?p=4104632#p4104632"]да, c прерываниями асинхронность 1-3такта обычно тоесть целых 60nS у нас)[/uquote]
Откуда дровишки, милейший? Латентность прерываний у АРМов выше нулевых кортексов плавает от 6 до 20 машинных циклов. И нахрена грузить код всякой белибердой тогда, когда драйвер кода способен легко решать задачи исходной настройкой? Только потому, что кому то трудно понять принципы работы?
ЗЫ 50 МГц для сигнальных задач - начальная школа. И там многое зависит не столько от частоты, сколько от архитектуры и особенностей периферии.
Аватара пользователя
AlexS4
Друг Кота
Сообщения: 6668
Зарегистрирован: Пт сен 10, 2021 15:19:36
Откуда: Протвино

Re: Обработка сигналов, прерывания, жопа в общем

Сообщение AlexS4 »

>Латентность прерываний у АРМов выше нулевых кортексов плавает от 6 до 20 машинных циклов.
оопс, не работал с ними :oops: .
конечно нужно использовать доступный аппаратный функционал, и вообще странно не знать mpu c которым работаешь, я не пропогандирую колхоз-программирование :? , просто тема в общем разделе а не в arm/dsp и я подумал что взгляд из другого мира тоже может быть полезен. тс же не обозначил конкретные цифры времен и как он выбрал mpu.
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25338
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: Обработка сигналов, прерывания, жопа в общем

Сообщение КРАМ »

Контроллер он выбрал бюджетный (если не учитывать нынешнюю ценовую инфернальность с АРМами) и достаточный для решения задачи.
Не вижу проблем.
Решение задачи несложное, но нужны подробности, о чем я и написал в своем первом комментарии в теме.
Аватара пользователя
Рязанцев Владислав
Мудрый кот
Сообщения: 1781
Зарегистрирован: Пн июн 24, 2013 23:00:42
Откуда: Казахстан

Re: Обработка сигналов, прерывания, жопа в общем

Сообщение Рязанцев Владислав »

КРАМ ругается что я тему запустил. Эх.
Вопрос тут скорее общий, а не по конкретной задаче.
Вопрос звучит скорее так- как распараллелить выполнение кода чтобы не просрать такты на задачи бывающие иногда, чтобы не попортить задачи выполняющиеся всегда и зависящие от всяких задержек.
Так например вывод на дисплей отнимает кучу тактов, что очень плохо отражается на выводе ЦАП.
Изображение
Ваши хотелки за ваши деньги
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25338
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: Обработка сигналов, прерывания, жопа в общем

Сообщение КРАМ »

Вам же написали. Вывод в ЦАП должен тактироваться от таймера, что в зависимости от особенностей ЦАПа делается либо самим ЦАПом, либо через ДМА с самым высоким приоритетом.
Аватара пользователя
Transformer-V
Друг Кота
Сообщения: 4236
Зарегистрирован: Пн окт 03, 2016 22:50:22
Контактная информация:

Re: Обработка сигналов, прерывания, жопа в общем

Сообщение Transformer-V »

[uquote="Рязанцев Владислав",url="/forum/viewtopic.php?p=4104046#p4104046"]Мне нужно взять АЦП, скорректировать его по какому-то алгоритму и вывести в ЦАП, и это все с минимальной задержкой. Недавно сталкивался с этим. Но кроме этого мне нужно выводить значения на дисплей, но можно не так част[/uquote]
После корректировки выводить значения на дисплей и читать/писать в UART только потом выводить на ЦАП.

Добавлено after 1 minute 31 second:
[uquote="Рязанцев Владислав",url="/forum/viewtopic.php?p=4114470#p4114470"]Так например вывод на дисплей отнимает кучу тактов, что очень плохо отражается на выводе ЦАП.[/uquote]
Прикрутить дополнительный MCU к дисплею или использовать дисплей с SPI шиной.
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25338
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: Обработка сигналов, прерывания, жопа в общем

Сообщение КРАМ »

[uquote="Transformer-V",url="/forum/viewtopic.php?p=4115353#p4115353"]Прикрутить дополнительный MCU к дисплею[/uquote]
Да чего там стесняться... Давай сразу ТРИ контроллера. Нет, лучше пять. Может еще на что нибудь пригодится... :))) :))) :)))
Аватара пользователя
Transformer-V
Друг Кота
Сообщения: 4236
Зарегистрирован: Пн окт 03, 2016 22:50:22
Контактная информация:

Re: Обработка сигналов, прерывания, жопа в общем

Сообщение Transformer-V »

[uquote="КРАМ",url="/forum/viewtopic.php?p=4115459#p4115459"]Да чего там стесняться... Давай сразу ТРИ контроллера. Нет, лучше пять. Может еще на что нибудь пригодится... :))) :))) :)))[/uquote]
Ну если человеку не хватает ресурсов на LCD дисплей, почему бы нет. Лучше я думаю использовать микроконтроллер с более высокой частотой, чем текущий.
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25338
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: Обработка сигналов, прерывания, жопа в общем

Сообщение КРАМ »

[uquote="Transformer-V",url="/forum/viewtopic.php?p=4115471#p4115471"]Лучше я думаю использовать микроконтроллер с более высокой частотой, чем текущий.[/uquote]
Нет, не лучше. Во первых, текущий уже есть, а в нынешних диспозициях с другими проблема. Во вторых, другой потребует переделки железа. Ну и в третьих, я уже ранее сказал, он РЕШАЕТ поставленную задачу. Просто нужно "его правильно готовить"... :tea:
Аватара пользователя
Transformer-V
Друг Кота
Сообщения: 4236
Зарегистрирован: Пн окт 03, 2016 22:50:22
Контактная информация:

Re: Обработка сигналов, прерывания, жопа в общем

Сообщение Transformer-V »

[uquote="КРАМ",url="/forum/viewtopic.php?p=4115481#p4115481"]Нет, не лучше. Во первых, текущий уже есть, а в нынешних диспозициях с другими проблема. Во вторых, другой потребует переделки железа. Ну и в третьих, я уже ранее сказал, он РЕШАЕТ поставленную задачу.[/uquote]
Тогда отказаться от дисплея или использовать символьный монохромный некрасивый дисплей. Графические дисплеи требуют много ресурсов, подготовительная отрисовка информации в буфер RGB отнимает такты и процессорное время и частоты 16 MHz для графических дисплеев мало, просматривать слайды такое себе удовольствие. Подготовительная отрисовка и обработка входящей для дисплея информации можно реализовать как раз на отдельном микроконтроллере, который не будет отнимать процессорное время основного MCU.
Ответить

Вернуться в «Разные вопросы по МК»