-
- У меня в проектах на STM32 обычно и так дефицит каналов DMA, поэтому датчик температуры (если нужен только он) просто периодически запускается из основного цикла. DMA полезен для многоканальных измерений или когда надо несколько отсчётов брать. - LightElf(26.12.2023 03:15)
- и8237 не кодил? :) - RED_DRAGON(25.12.2023 19:39)
- не - POV(25.12.2023 19:57)
- Многоканальный АЦП заточен под ПДП. Преобразовали положили в память, и без всяких прерываний. - IBAH(25.12.2023 12:41)
- именно для датчика температуры у меня ДМА. Понадобилось - глянул в
тот массив, там у меня последний текущий отсчет. Нафиг мне
заморачиваться - запускать АЦП. - Лaгyнoв(25.12.2023 07:57)
- Один только я устраивал извращение с циклическим DMA в одну ячейку
памяти? :) - RxTx(25.12.2023 10:59)
- В несколько ячеек. Потом можно взять среднее. Или медиану. - SciFi(25.12.2023 11:24)
- А измерять температуру проца и Vdd? Все равно, даже если только один внешний канал АЦП нужен, их три!.. - Eddy_Em(25.12.2023 11:12)
- Один только я устраивал извращение с циклическим DMA в одну ячейку
памяти? :) - RxTx(25.12.2023 10:59)
- Как удобно - так и делай. У меня большинство применений АЦП - это измерения с частотой опроса в миллисекунды. Я при этом не использую ни ДМА, ни даже прерываний АЦП. Просто в миллисекундном таймере SysTick читаю регистр данных АЦП и тут-же запускаю преобразование для следующего раза. Зачем усложнять? - il-2(25.12.2023 06:12)
- Чуть больше 1 канала, как начинаются проблемы. Поэтому пусть лучше
DMA в циклический буфер по 9 значений с каждого канала складывает,
а я, когда нужно измерить, просто посчитаю медиану... - Eddy_Em(25.12.2023 05:28)
- +1. - Nikolay_Po(25.12.2023 11:09)
- делал для 18 входов АЦП на STM32F446. Кучу напряжений и датчиков
тока смотрел. Всё в ДМА. Само крутилось и в массив складывалось.
Вся инициализация - CubeMX. - Лaгyнoв(25.12.2023 07:59)
- Позорище! - Eddy_Em(25.12.2023 08:11)
- "Вам шашечки....?" - Лaгyнoв(25.12.2023 08:51)
- Мне - ехать, но гордо ☺ Eddy_Em(118 знак., 25.12.2023 08:54)
- Написано трешово, это да, но лучше так чем совсем никак. К Кубу
есть только одна претензия - функции полинга написаны так, что не
могут нормально работать под RTOSом. Во всех либах ко всей
периферии. Ошибочка то по сути плёвая, но.... - =AlexD=(25.12.2023 15:50)
- Претензий куда больше. Одна из них, какое смешное чудо придумало
функции а-ля HAL_****_Receive*() которые параметром принимают число
байт. (Чта? Принять N байт? Это какая девочка придумала?) Про
крайнюю тяжеловесность родных обработчиков прерываний уж молчу,
вообще про Runtime отдельный разговор. Вторая претензия к полной
непотребности документации HAL. Третья и самая страшная - полная
невозможность реконфигурации пинов в рантайм, всё заточено
сконфигурировать один раз. RxTx(151 знак., 25.12.2023 20:29)
- Обработчики прерываний там конечно очень странно сделаны. По поводу
конфигурации - этим грешат все конфигураторы. Прибивают гвоздями
код конфигурации вместо того что-бы создавать набор конфигураций,
между которыми можно было бы переключаться. Поэтому создаёшь
отдельный другой проект, делаешь в ём альтернативную конфигурацию,
потом вырезаешь оттедова целевые функции. Не особо сложно и не
сильно долго. - =AlexD=(26.12.2023 09:05)
- У меня один проект идёт на 7 платформ (и будет больше). Весь
платформозависимый код вынесен в папу платформы, вместе со всем
низкоуровневым. В итоге подсовывай при сборке другую папку, и меняй
процы как влезет - в бизнес-логике никаких сведений об этом нет
попросту. - POV(26.12.2023 09:59)
- Жму руку! - Nikolay_Po(26.12.2023 10:02)
- У меня один проект идёт на 7 платформ (и будет больше). Весь
платформозависимый код вынесен в папу платформы, вместе со всем
низкоуровневым. В итоге подсовывай при сборке другую папку, и меняй
процы как влезет - в бизнес-логике никаких сведений об этом нет
попросту. - POV(26.12.2023 09:59)
- вообще нет никаких проблем с выше перечисленным, уверен, что для
90% задач все написанное вполне работает и иное никому не нужно, а
кому нужно напишет как ему нужно на основе этого же хала - 0men(25.12.2023 20:35)
- Кому нужно, давно написал. Без всяких халов и кубов! - Eddy_Em(25.12.2023 20:53)
- какая связь хала и куба? - 0men(25.12.2023 21:20)
- Обычно это - одно целое. Калокуб. Говно в кубе, так сказать. - Eddy_Em(25.12.2023 21:51)
- абсолютно разные это вещи - 0men(25.12.2023 22:14)
- Обычно это - одно целое. Калокуб. Говно в кубе, так сказать. - Eddy_Em(25.12.2023 21:51)
- какая связь хала и куба? - 0men(25.12.2023 21:20)
- Кому нужно, давно написал. Без всяких халов и кубов! - Eddy_Em(25.12.2023 20:53)
- Обработчики прерываний там конечно очень странно сделаны. По поводу
конфигурации - этим грешат все конфигураторы. Прибивают гвоздями
код конфигурации вместо того что-бы создавать набор конфигураций,
между которыми можно было бы переключаться. Поэтому создаёшь
отдельный другой проект, делаешь в ём альтернативную конфигурацию,
потом вырезаешь оттедова целевые функции. Не особо сложно и не
сильно долго. - =AlexD=(26.12.2023 09:05)
- Претензий куда больше. Одна из них, какое смешное чудо придумало
функции а-ля HAL_****_Receive*() которые параметром принимают число
байт. (Чта? Принять N байт? Это какая девочка придумала?) Про
крайнюю тяжеловесность родных обработчиков прерываний уж молчу,
вообще про Runtime отдельный разговор. Вторая претензия к полной
непотребности документации HAL. Третья и самая страшная - полная
невозможность реконфигурации пинов в рантайм, всё заточено
сконфигурировать один раз. RxTx(151 знак., 25.12.2023 20:29)
- Да зашибись Куб работает! Там всё готовое, и даже шаблоны обратных
вызовов прописаны. Да, я Куб не использую, но лишь из своего
юношеского максимализма. И уважаю разработчиков Куба, за то, что их
система "взлетела". Да, меня не устраивает структура кода проекта
при генерации Кубом, но не потому, что она не работает или в чём-то
глючна. Nikolay_Po(278 знак., 25.12.2023 11:15)
- Небольшой штришок. ST просто всё скупают. Была такая утилита MicroXplorer, они её купили. TL/DR, просто набери download MicroXplorer и сам посмотри (переключись на поиск картинкок). Кстати, названия сгенерированных методов начинающиеся со странного MX_ отсюда и идут, это MicroXplorer... - RxTx(25.12.2023 11:37)
- Советую посмотреть на opencm3: оно тоже кривое, но значительно
приличней, чем кал (или, тем паче, SPL). Eddy_Em(396 знак., 25.12.2023 11:23)
- Видел сколько у ST разных каменей? RxTx(1198 знак., 25.12.2023 11:52 - 12:17)
- Почему же тогда так много нытья на форумах от калокуберов, которые
не могут один и тот же свой код, скажем, с STM32F042 на STM32F303
перенести "легко и непринужденно"? Eddy_Em(56 знак., 25.12.2023 12:04)
- я массу функций переносил между L476, F030, F446, G030, G031, G070. В первую очередь связанные с периферией - Лaгyнoв(25.12.2023 12:37)
- ...Потому что ты на своём телескопе в горах находишься в своих, особенных, тепличных условиях. RxTx(450 знак., 25.12.2023 12:16)
- Почему же тогда так много нытья на форумах от калокуберов, которые
не могут один и тот же свой код, скажем, с STM32F042 на STM32F303
перенести "легко и непринужденно"? Eddy_Em(56 знак., 25.12.2023 12:04)
- К твоему удивлению (и многих, не подозревающих этот момент) STM32CubeIde умеет менять камни в проекте на лету... RxTx(772 знак., 25.12.2023 12:02)
- Видел сколько у ST разных каменей? RxTx(1198 знак., 25.12.2023 11:52 - 12:17)
- Эдди, опять ты за своё, технофашист ты недобитый :) - RxTx(25.12.2023 10:56)
- Подходящее название для немецкого музыкального коллектива в жанре
техно. SciFi(1 знак., 25.12.2023 11:23, картинка)
- Последнее по-традиции глаз читает как "в жанре порно" :) Поискал на рутрекере, ну надо же, нетъ... - RxTx(25.12.2023 12:24)
- А что не так? - Eddy_Em(25.12.2023 11:12)
- Подходящее название для немецкого музыкального коллектива в жанре
техно. SciFi(1 знак., 25.12.2023 11:23, картинка)
- Он же потом компилятором в машинный код превращается, один хрен
ничего не разберёшь :-) - SciFi(25.12.2023 08:58)
- Дык, нормальный код и через 10 лет будет понятен и его можно будет
использовать где-то еще или подправить. А сгенерированное калокубом
- нечитабельная портянка. Еще и с жутким оверхедом. - Eddy_Em(25.12.2023 09:33)
- "будет понятен" - вот! Лично мне вообще язык Си непонятен.. Потому совершенно всё без разницы. :-) - Лaгyнoв(25.12.2023 10:53)
- Да что же это такое, все так и норовят пожелать Лагунову долгих лет
жизни и творческого долголетия :-) - SciFi(25.12.2023 09:35)
- тут вот где-то сказали, что старость наступает после 75. :-) - Лaгyнoв(25.12.2023 10:54)
- Это мой тесть сказал. Но знаю людей, которые и в 85 полны сил и работают, разрабатывают новое. - Бoмж(25.12.2023 21:45)
- тут вот где-то сказали, что старость наступает после 75. :-) - Лaгyнoв(25.12.2023 10:54)
- Дык, нормальный код и через 10 лет будет понятен и его можно будет
использовать где-то еще или подправить. А сгенерированное калокубом
- нечитабельная портянка. Еще и с жутким оверхедом. - Eddy_Em(25.12.2023 09:33)
- Написано трешово, это да, но лучше так чем совсем никак. К Кубу
есть только одна претензия - функции полинга написаны так, что не
могут нормально работать под RTOSом. Во всех либах ко всей
периферии. Ошибочка то по сути плёвая, но.... - =AlexD=(25.12.2023 15:50)
- Мне - ехать, но гордо ☺ Eddy_Em(118 знак., 25.12.2023 08:54)
- "Вам шашечки....?" - Лaгyнoв(25.12.2023 08:51)
- Позорище! - Eddy_Em(25.12.2023 08:11)
- Задаваться вопросом почему китайцы... неблагодарное дело. Китайцы скорее всего привнесли DMA как наиболее сложный пример, ну лень китайцу строгать отдельные примеры для DMA и для software polling. Поэтому не связывай решение китайцев не дать тебе тривиальные примеры и не делай из этого ложный вывод что применение DMA обязательно. RxTx(321 знак., 25.12.2023 01:51)
- скорее ожидание уровня АЦП не очень (или не было подтверждения
обратного), ну и вспоминают о передискретизации и усреднении, а уже
такое с DMA предположительно удобнее делать - Vit(24.12.2023 22:57)
- Ну т.е. когда накапливают несколько значений. А иначе ДМА не
упёрся? - POV(24.12.2023 23:07)
- А что уперлось? Прерывания? Если будет выбор между прерыванием и
DMA, я выберу DMA. И не только из-за скорости. - SciFi(25.12.2023 08:23)
- Если embedder, выбирая между
войнойDMA и прерываниями, выбирает прерывания, он получает и DMA, ипозорпрерывания. :))) - RxTx(25.12.2023 10:35)- В Советской России не ты выбираешь прерывания, а прерывания выбирают тебя! - SciFi(25.12.2023 15:23)
- Под столом! Впрочем, было дело, я использовал DMA в циклическом режиме, не разрешая его прерываний. Просто заглядывал, когда удобно, по нужным адресам буфера. - Nikolay_Po(25.12.2023 14:06)
- Если embedder, выбирая между
- Бывает АЦП работает только от не сильно быстрого встроенного RC-генератора и это чутка неудобно, ну или выбраны тайминги не сильно быстрые для получения нужной красоты оцифровки. Получается поллить невкусно, а по прерываниям - тоже фигня, бо оно того не стОит, ну и всякая асинхронщина, барьеры при этом... Часто проще "заказать", заняться другим, ну и словить когда уже всё готовенькое:) - Vit(24.12.2023 23:22)
- А что уперлось? Прерывания? Если будет выбор между прерыванием и
DMA, я выберу DMA. И не только из-за скорости. - SciFi(25.12.2023 08:23)
- Ну т.е. когда накапливают несколько значений. А иначе ДМА не
упёрся? - POV(24.12.2023 23:07)