STM32, первые впечатления.

Кто любит RISC в жизни, заходим, не стесняемся.
linkov1959
Держит паяльник хвостом
Сообщения: 923
Зарегистрирован: Пн сен 10, 2018 19:16:28

Re: STM32, первые впечатления.

Сообщение linkov1959 »

NStorm, у меня максимальная частота 775Гц. Свою часть проекта я сделал, но не могу остановиться, буду осваивать и звуковой диапазон.
Реклама
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25292
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: STM32, первые впечатления.

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

[uquote="linkov1959",url="/forum/viewtopic.php?p=3887678#p3887678"]КРАМ, это не прихоти, а серьезный проект.[/uquote]
Проект может быть и серьезный, только подход к его реализации состоит из сплошных прихотей. Между серьезностью задачи и беспонтовой реализацией нет никакой связи.
Проблема "лишь бы работало" заключается в том, что в определенный момент проект упирается в необходимость ВСЕ ПЕРЕДЕЛАТЬ, патамушта бестолковая реализация становится фатально нереализуемой на целесообразной матчасти.
Все что возможно делать НЕ ТАК - Вы делаете. И где тут ночевала серьезность?
Последний раз редактировалось КРАМ Чт сен 03, 2020 22:21:06, всего редактировалось 1 раз.
Реклама
linkov1959
Держит паяльник хвостом
Сообщения: 923
Зарегистрирован: Пн сен 10, 2018 19:16:28

Re: STM32, первые впечатления.

Сообщение linkov1959 »

КРАМ, всё уже работает как надо, проект закончен и реализован успешно. Дальше уже моё баловство, можно и побузить:)
А не замахнуться ли нам на преобразования Фурье, можно пока не быстрые! Вы готовы помогать конструктивно?
jcxz
Мудрый кот
Сообщения: 1727
Зарегистрирован: Вт авг 15, 2017 10:51:13

Re: STM32, первые впечатления.

Сообщение jcxz »

[uquote="linkov1959",url="/forum/viewtopic.php?p=3887645#p3887645"]MikroElektronika имеет лучшие компиляторы на Си, бейсик и паскаль![/uquote]Обоснуйте! Я про си. Васик со товарищи я думаю тут мало кому интересен.
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25292
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: STM32, первые впечатления.

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

[uquote="linkov1959",url="/forum/viewtopic.php?p=3887732#p3887732"]А не замахнуться ли нам на преобразования Фурье, можно пока не быстрые! Вы готовы помогать конструктивно?[/uquote]
Помогать то я могу, только проку с Вашим подходом никакого не будет.
Вы в курсе, что для использования в коде DSP инструкций процессора (ЛЮБОГО процессора), нужно писать этот самый код на АСМе?
Ну или использовать библиотеку, которая так же написана на АСМе.
Чтобы грамотно работать с сигналами, нужно понимать теорию того, что Вы делаете. Что Вы знаете об FFT или DFT, кроме самой этой аббревиатуры?

Добавлено after 5 minutes 33 seconds:
[uquote="linkov1959",url="/forum/viewtopic.php?p=3887732#p3887732"]Дальше уже моё баловство, можно и побузить:)[/uquote]
Я иногда собеседую кандидатов на работу. Ваши сентенции тут не дали бы Вам ни единого шанса, если бы Вы претендовали на обсуждаемую тут тематику. Серьезные проекты не пишут на Васиках. Из чего следует, что к "серьезному проекту", даже если он существует, лично Вы отношения не имеете.
Реклама
tonyk
Это не хвост, это антенна
Сообщения: 1309
Зарегистрирован: Вт ноя 19, 2019 06:10:18

Re: STM32, первые впечатления.

Сообщение tonyk »

[uquote="NStorm",url="/forum/viewtopic.php?p=3887688#p3887688"]Вы часом аналоговый звук под сывороткой не знаете как сделать? А то тут коллега интересуется: https://radiokot.ru/forum/viewtopic.php?f=17&t=172440[/uquote]
То есть не мне одному это же самое показалось. На Easy Electronics тоже подобная тема прорезалась:
http://forum.easyelectronics.ru/viewtop ... 33&t=43138
Всё это напоминаетна сезонное обострения.

КРАМ, по-моему, имеет два высших образования: одно по электронике, второе по медицине. Или он монах, постигший высшую Суть, не знаю. Ничем другим я для себя не могу объяснить такое спокойное и методичное исследование патологического образа мышления, которым отличается ТС. Хотя... Может, просто тренируется на котиках. Завидую и преклоняюсь перед его терпением!
Реклама
linkov1959
Держит паяльник хвостом
Сообщения: 923
Зарегистрирован: Пн сен 10, 2018 19:16:28

Re: STM32, первые впечатления.

Сообщение linkov1959 »

Спасибо всем за участие. Проект на микроСи фильтр Баттерворта 725Гц, полоса 20Гц, выборка 20кГц.
си725_20.rar
(132.57 КБ) 212 скачиваний
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

Re: STM32, первые впечатления.

Сообщение Мурик »

linkov1959 писал(а):Посмотри код , его таймер калькулятор выдает.
По прерыванию от таймера. В котором ждете пока АПЦ оцифрует, а это время. Настройте периферию так чтобы таймер запускал АПЦ и в прерывании от которого забираете данные из регистра ADC1->DR. А еще лучше чтобы данные из АЦП забирал модуль DMA. Это уменьшит необходимое число прерываний, а значит увеличит достижимую частоту оцифровки, т. к. на вход и выход из прерывания нужно по 12 тактов.
linkov1959 писал(а):MikroElektronika имеет лучшие компиляторы на Си, бейсик и паскаль!
Признавайтесь сколько вам заплатила микроэлектроника за рекламу их продукта? :)))
Эти компиляторы далеко не лучшие если их сравнить например с GCC, они существенно проигрывают в размере прошивки и скорости работы. :dont_know:
linkov1959 писал(а):Да пофиг на события и прерывания, лишь бы работало!
Это не правильный подход к разработке. Обычно применяется большинством ардуинщиков и другими быдлокодерами. Как правило качество кода и надежность работы близки к нулю и вероятность ошибки в работе устройства велика.
Если проект серьезный, нужно писать так чтобы гарантировано работало без сбоев в любых ситуациях включая нестандартные режимы работы.
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25292
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: STM32, первые впечатления.

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

[uquote="Мурик",url="/forum/viewtopic.php?p=3887900#p3887900"]А еще лучше чтобы данные из АЦП забирал модуль DMA.[/uquote]
Я уже говорил. Не выйдет. Нечего копить. Каждый отсчет фильтр должен быть пересчитан.
jcxz
Мудрый кот
Сообщения: 1727
Зарегистрирован: Вт авг 15, 2017 10:51:13

Re: STM32, первые впечатления.

Сообщение jcxz »

[uquote="КРАМ",url="/forum/viewtopic.php?p=3887767#p3887767"]Вы в курсе, что для использования в коде DSP инструкций процессора (ЛЮБОГО процессора), нужно писать этот самый код на АСМе?[/uquote]Это смотря что называть "DSP-инструкциями". :)
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25292
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: STM32, первые впечатления.

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

[uquote="jcxz",url="/forum/viewtopic.php?p=3887934#p3887934"]Это смотря что[/uquote]
Я не в курсе про "смотря что", но под DSP инструкциями называют MAC-инструкции и их разновидности. Это конвейерная операция вида Acc=Acc+X*Y с предвыборками операндов, поскольку шина одна, а операндов два, а исполняется инструкция за 1 машинный цикл при конвейере типовой для данной архитектуры длины. Таким образом, этот класс инструкций не может быть использован компилятором из-за своего ненативного механизма работы.
jcxz
Мудрый кот
Сообщения: 1727
Зарегистрирован: Вт авг 15, 2017 10:51:13

Re: STM32, первые впечатления.

Сообщение jcxz »

[uquote="КРАМ",url="/forum/viewtopic.php?p=3887941#p3887941"]Я не в курсе про "смотря что", но под DSP инструкциями называют MAC-инструкции и их разновидности. Это конвейерная операция вида Acc=Acc+X*Y с предвыборками операндов[/uquote]
IAR for ARM 7.80.4:

Код: Выделить всё

                    In section .text, align 2, keep-with-next
u32 FlatToRealTime(u32 time)
{
  return time + (u32)timezone * 3600;
        _Z14FlatToRealTimem: (+1)
 0x.... 0x....      LDR.W    R1,??DataTable513_1
 0x7809             LDRB     R1,[R1, #+0]
 0xF44F 0x6261      MOV      R2,#+3600
 0xFB12 0x0001      SMLABB   R0,R2,R1,R0
 0x4770             BX       LR               ;; return
}

                    In section .text, align 2, keep-with-next
u32 RealToFlatTime(u32 time)
{
  return time - (u32)timezone * 3600;
        _Z14RealToFlatTimem: (+1)
 0x.... 0x....      LDR.W    R1,??DataTable513_1
 0x7809             LDRB     R1,[R1, #+0]
 0xF44F 0x6261      MOV      R2,#+3600
 0xFB02 0x0011      MLS      R0,R2,R1,R0
 0x4770             BX       LR               ;; return
}
Как видно - IAR вполне себе успешно использует MAC-инструкции. И, если приглядеться, таковых в типичном листинге - множество.
Конечно "предыборок операндов" здесь нет, но это - ограничения ARM-архитектуры, в которой в принципе отсутствуют вычислительные команды обращающиеся к памяти.

Но если взять CPU с соответствующей архитектурой (полноценный DSP), так там современные компиляторы вполне себе успешно используют MAC-инструкции с выборками из памяти. Хотя впрочем тут ещё вопрос: Что в полноценном DSP называть "DSP-инструкцией", а что - нет? :)
Потому я и писал "Это смотря что называть "DSP-инструкциями"...
linkov1959
Держит паяльник хвостом
Сообщения: 923
Зарегистрирован: Пн сен 10, 2018 19:16:28

Re: STM32, первые впечатления.

Сообщение linkov1959 »

Мурик, Спасибо за конструктив. Самому приходила идея одновременной работы АЦП и вычислений, но когда обнаружил возможность значительно сократить выборку АЦП, это стало не актуально. Вычисления float тормозят на 90%. Сейчас думаю, как обойти, завтра буду пробовать на целых.

Добавлено after 14 minutes 58 seconds:
MikroElektronika новый проект выдала, NECTO.
Что за зверь? Пригодится новичкам?
nekto.txt
(3.61 КБ) 177 скачиваний
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25292
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: STM32, первые впечатления.

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

[uquote="jcxz",url="/forum/viewtopic.php?p=3887971#p3887971"]Как видно - IAR вполне себе успешно использует MAC-инструкции.[/uquote]
Даладна!!! И в каком же месте там Си-конструкция скомпилирована с MAC-командами?
:))) :))) :)))
Это как раз то, о чем я и написал ранее:
[uquote="КРАМ",url="/forum/viewtopic.php?p=3887767#p3887767"]Вы в курсе, что для использования в коде DSP инструкций процессора (ЛЮБОГО процессора), нужно писать этот самый код на АСМе?
Ну или использовать библиотеку, которая так же написана на АСМе.[/uquote]

[uquote="jcxz",url="/forum/viewtopic.php?p=3887971#p3887971"]Но если взять CPU с соответствующей архитектурой (полноценный DSP), так там современные компиляторы вполне себе успешно используют MAC-инструкции с выборками из памяти....[/uquote]
Нет. Не используют. Там точно так же БИБЛИОТЕЧНЫЕ функции написаны на АСМе.
Заставить компилятор преобразовать некую строку на Си:

Код: Выделить всё

Acc += A[i]*B[i++];
в соответствующую ей MAC-инструкцию невозможно.
[uquote="jcxz",url="/forum/viewtopic.php?p=3887971#p3887971"]Что в полноценном DSP называть "DSP-инструкцией", а что - нет?...[/uquote]
А чем "полноценный" DSP отличается от "неполноценного"? Да по сути ничем.Ну если не считать в особо мощных процессорах возможности параллельного выполнения единой группы инструкций над массивом операндов (комплексные многомерные вычисления)...
Таким образом, те же самые MAC инструкции в ЛЮБОМ DSP процессоре и называются DSP, в отличии от обычной арифметики общего применения.
[uquote="linkov1959",url="/forum/viewtopic.php?p=3887977#p3887977"]Самому приходила идея одновременной работы АЦП и вычислений[/uquote]
Ну если не ждать в пустом цикле результата преобразования и лишь потом считать фильтр, то вычисления ПО ЛЮБОМУ будут происходить одновременно с преобразованием с той лишь разницей, что при запуске АЦП в прерывании от таймера ко времени вычислений добавится время обработки этого прерывания. Это максимум 20 машинных циклов. Запуск преобразования по событиям от таймера ДЛЯ ВАШЕГО СЛУЧАЯ не столько увеличивает скорость, сколько упрощает код.
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

Re: STM32, первые впечатления.

Сообщение Мурик »

КРАМ писал(а):ко времени вычислений добавится время обработки этого прерывания. Это максимум 20 машинных циклов.
12 тактов вход и 12 выход. Сколько получается?
Это только сохранение и восстановление регистров выполняемое аппаратно.
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25292
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: STM32, первые впечатления.

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

[uquote="Мурик",url="/forum/viewtopic.php?p=3888020#p3888020"]Это только[/uquote]
Ну значит 40 или около того. При тактовой под 100 МГц (цикл 10 нс) и имеющихся у ТС вводных это совершенно не принципиально.
Но даже в таком случае лучше делать красиво. То есть подключить таймер к АЦП.
Но ДМА по любому тут не канает. Если бы хотя бы фильтр был двухкаскадный с децимацией, то тогда ДМА бы пригодился.
jcxz
Мудрый кот
Сообщения: 1727
Зарегистрирован: Вт авг 15, 2017 10:51:13

Re: STM32, первые впечатления.

Сообщение jcxz »

[uquote="КРАМ",url="/forum/viewtopic.php?p=3887992#p3887992"]Даладна!!! И в каком же месте там Си-конструкция скомпилирована с MAC-командами?[/uquote]Команды SMLABB, MLS в листинге видите? Это они и есть - MAC. Открывайте мануал по системе команд Cortex-M и читайте описание.

[uquote="КРАМ",url="/forum/viewtopic.php?p=3887767#p3887767"]Ну или использовать библиотеку, которая так же написана на АСМе.[/uquote]Где в приведённом листинге вы узрели некую "библиотеку"??? :shock:

[uquote="КРАМ",url="/forum/viewtopic.php?p=3887767#p3887767"]Нет. Не используют. Там точно так же БИБЛИОТЕЧНЫЕ функции написаны на АСМе.[/uquote]Т.е. как видно - Вы никогда не имели дел с DSP. Зачем тогда говорить о том, чего не знаете? :dont_know:
Тот же CCS уже лет 10 точно умеет генерить код довольно плотно использующий ядро. Причём с распараллеливанием инструкций. А MAC-инструкции он вообще имхо всегда умел генерить.

[uquote="КРАМ",url="/forum/viewtopic.php?p=3887767#p3887767"]Заставить компилятор преобразовать некую строку на Си:

Код: Выделить всё

Acc += A[i]*B[i++];
в соответствующую ей MAC-инструкцию невозможно.[/uquote] А мужики-то авторы компиляторов не знали что это невозможно и сделали. :)))

[uquote="КРАМ",url="/forum/viewtopic.php?p=3887767#p3887767"]А чем "полноценный" DSP отличается от "неполноценного"? Да по сути ничем.[/uquote]Самое главное отличие полноценного DSP от DSP-набора инстркций ARM: Возможность выполнения операций доступа к памяти одновременно с операциями на АЛУ. Это не считая: распараллеливания инструкций, аппартных циклов, циклической адресации, "насыщающей" арифметики и т.п.
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25292
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: STM32, первые впечатления.

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

[uquote="jcxz",url="/forum/viewtopic.php?p=3888028#p3888028"]Самое главное отличие полноценного DSP[/uquote]
Причем тут распараллеливание?
Я привел конкретный пример. Каким образом компилятор ОБЫЧНУЮ арифметику интерпретирует в конвейерные РЕГИСТРОВЫЕ команды?
Чтобы было понятно.
Имеем стандартную MAC-команду, которая суммирует результат умножения двух 32 разрядных РОНов с содержимым аккумулятора, который по сути так же является РОНом, но с разрядностью, например 80. При этом еще и имеется специальным образом настраиваемая сатурация оного аккумулятора.
Одновременно с этим происходит подгрузка РОНов-операндов по РОНам-указателям из ОЗУ. А так же инкремент указателей.
Это МАС команда, а не простое умножение с накоплением.
Какое все это имеет отношение к Си?
Покажите Си-строку, которая будет скомпилирована в MAC.
ЗЫ. Если уменьшить разрядность операндов до 16, а аккумулятора до 40 - это будет DSP ядро dsPIC33. Скалярный FIR на этом МК будет из себя представлять четыре строки на АСМе:
1. Сброс аккумулятора с предзагрузкой
2. Команда repeat
3. MAC-инструкция
4. нормализация результата и выгрузка
Все. Никаких пересылок и инкрементов. Все внутри одной команды, которая повторяется число тапов раз.
jcxz
Мудрый кот
Сообщения: 1727
Зарегистрирован: Вт авг 15, 2017 10:51:13

Re: STM32, первые впечатления.

Сообщение jcxz »

[uquote="КРАМ",url="/forum/viewtopic.php?p=3888037#p3888037"]Я привел конкретный пример. Каким образом компилятор ОБЫЧНУЮ арифметику интерпретирует в конвейерные РЕГИСТРОВЫЕ команды?
Чтобы было понятно.[/uquote]Я выше привёл пример листинга где есть две MAC-команды. Вы его не поняли?? :shock:

[uquote="КРАМ",url="/forum/viewtopic.php?p=3888037#p3888037"]Это МАС команда, а не простое умножение с накоплением.[/uquote]MAC - это и есть умножение с накоплением.
Откройте хотя-бы википедию: https://en.wikipedia.org/wiki/Multiply– ... _operation
Или любой другой учебник.

[uquote="КРАМ",url="/forum/viewtopic.php?p=3888037#p3888037"]Одновременно с этим происходит подгрузка РОНов-операндов по РОНам-указателям из ОЗУ.[/uquote]Приведите пример хотя бы одной такой команды в системе команд ARM! Пример в студию!!! :)))
Нет таких команд в ARM!
И как позвольте спросить компилятор сможет сгенерить несуществующую команду???

PS: В ARM есть MAC-команды. Но нет команд выполняющих одновременно АЛУ-операцию с доступом к памяти. Это - ограничение архитектуры ядра. Компилятор тут не при чём. Я уже дважды писал об этом.

Добавлено after 2 minutes 19 seconds:
[uquote="КРАМ",url="/forum/viewtopic.php?p=3888037#p3888037"]Покажите Си-строку, которая будет скомпилирована в MAC.[/uquote]Я выше две таких строки приводил. Вы не умеете читать листинги???
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25292
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: STM32, первые впечатления.

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

[uquote="jcxz",url="/forum/viewtopic.php?p=3888048#p3888048"]В ARM есть MAC-команды. Но нет команд выполняющих одновременно АЛУ-операцию с доступом к памяти. Я уже дважды писал об этом.[/uquote]
Это не DSP МАС. Я не знаком с ASMом ARM-в, но в курсе, что есть недоMAC инструкции, которые, как я теперь вижу, даже аббревиатуру MAC не имеют. Таким образом, построить на их основе фильтр или бабочку FFT, мягко говоря, невозможно.
А речь вообще то была об этом.
Но Вы намекнули, я так понимаю, на архитектуру DSP Аналог девайса и ТИ. Расскажите как там Си интерпретируется в DSP MAC?
ЗЫ. Как теперь выяснилось, dsPIC33 - это trueDSP... :))) :tea:

Добавлено after 5 minutes 49 seconds:
[uquote="jcxz",url="/forum/viewtopic.php?p=3888048#p3888048"]Нет таких команд в ARM!
И как позвольте спросить компилятор сможет сгенерить несуществующую команду???[/uquote]
Вообще то мой исходный комментарий не содержал упоминания об ARM, а напротив говорил о DSP процессорах.
Ответить

Вернуться в «ARM»