STM32F103CB апаратный ШИМ на все 16 каналов от 0,017гц до 36мгц с некоторыми функциями
Правила форума
Рекомендации по размещению блоков:
Автор блока создает подробное описание блока, отличие от подобных(если есть на данный момент).Сложные блоки очень желательно с примерами.
При выходе новых версий редактирует/дополняет свой первый пост с указанием даты, версии, причины.
В каждой теме обсуждается только выложенный автором блок - баги, возможность (или предложение) доработки и прочие хотелки.
Свои блоки, переработанные, с другими библиотеками, протоколами и т.д.- размещаем либо сами отдельно, либо обсуждаем и дорабатываем в форуме Разработка блоков.
Пользователи улучшив блок автора и проверив его работоспособность - могут обратиться к автору или модераторам с просьбой добавить их версию блока в первое сообщение темы.
Рекомендации по размещению блоков:
Автор блока создает подробное описание блока, отличие от подобных(если есть на данный момент).Сложные блоки очень желательно с примерами.
При выходе новых версий редактирует/дополняет свой первый пост с указанием даты, версии, причины.
В каждой теме обсуждается только выложенный автором блок - баги, возможность (или предложение) доработки и прочие хотелки.
Свои блоки, переработанные, с другими библиотеками, протоколами и т.д.- размещаем либо сами отдельно, либо обсуждаем и дорабатываем в форуме Разработка блоков.
Пользователи улучшив блок автора и проверив его работоспособность - могут обратиться к автору или модераторам с просьбой добавить их версию блока в первое сообщение темы.
-
lfgjikjjyj
- Лейтенант
- Сообщения: 395
- Зарегистрирован: 27 мар 2025, 12:13
- Имя: Коля
- Поблагодарили: 123 раза
STM32F103CB апаратный ШИМ на все 16 каналов от 0,017гц до 36мгц с некоторыми функциями
Продвинутый ШИМ блок для стм.
------------------------------------------------------------------------ -- добавлены все ремапы
-- добавлена инверсия каналов
------------------------------------------------------------------------
-- добавлены варианты синхронизаций таймеров по Reset mode
------------------------------------------------------------------------
-- добавлена настройка повышенной точности синхронизации
------------------------------------------------------------------------
Имеем 16 каналов ШИМ: частота от 0,017 Гц (примерно 58 сек период) до 36 МГц.
Все 22 пинов для переназначения разбитые по ремапам.
Максимальная регулировка до 24 МГц (конечная частота больше зависит от нагрузки, ёмкостной может просаживаться).
Предельная частота до 36 МГц, но там как вкл/выкл и в виде синусоиды.
Функции:
-- Центральное выравнивание ШИМ.
-- Инверсия любого канала ШИМ.
-- Синхронизация таймеров по Reset mode.
-- Повышенная точность синхронизации.
Заложена автоадаптация предделителя частоты.
Она позволяет выставлять, получать частоту с высокой точностью от выбранной.
К примеру, на обычном делителе получалось получить для 0,5Гц = 0,504Гц, то теперь частота выставляется в примерно 0,499995Гц.
Синхронизация таймеров.
Частоты у синхронизированых таймеров выставить одинаковые.
Если включим режим Мастера, то остальные выбраные слейвы будут ровняться на фронт этого таймера.
Мастера может быть два и к каждому свой слейв подключен.
Либо Мастер один и к нему подключены любое количество слейвов.
Если включить режим Слейв - Reset mode, то получим ровный старт, привязанный к фронту мастера.
Синхронизация выполняется в каждом периоде Мастера.
Повышенная точность синхронизации.
Вероятно требует отдельно включения из за накладных ресурсов в аппаратной части для высокой синхронизации, возможно и по другой причине.
На разных слейвах можно включать выборочно.
В общем если нужна высокая точность то вкл если нет то нетрогаем.
Инверсия канала ШИМ — меняет полярность выходного сигнала таймера. Вместо стандартного активного HIGH уровня (сигнал HIGH при заполнении) выход переключается в активный LOW уровень (сигнал LOW при заполнении).
Для работы:
N-канальные MOSFET (требуют active high)
P-канальные MOSFET (требуют active low):
Светодиод с общим катодом
Светодиод с общим анодом
И прочие драйверы со своей логикой
Так же можно включить центрально-выровненное ШИМ, для уменьшения гармоник применяемый для моторов.
Для обычных светодиодов, нагревателей и вентиляторов не нужен, а вот для управления моторами, мостовыми схемами и возможно борьба с ЭМП.
Выглядит на 4 канала это вот так, собственно, как и ожидалось из названия:
(в обычном режиме все фронты каналов одного таймера выровнены и стартуют синхронно)
Ограничение таймера: одна частота на таймер.
Все 4 канала таймера работают на этой одной частоте.
Для генерации двух разных частот необходимо использовать два отдельных ШИМ-таймера.
Здесь нету привычных и условно бесполезных рамок в виде битности на скважность (1023, 4095).
Здесь всё вычисляется автоматически под максимум скважности до 65535 (попытка использовать возможности МК по максимум), от чего открываются возможности широкого масштабирования и точности позиционирования.
Перед работой нужно только узнать диапазон скважности на выходе PWM_info (у каждой частоты он посути разный):
— либо загружается проверочный код для считывания показаний, и далее это число применяется в масштабировании;
— либо, ещё проще, на него вешается переменная или клемма, и на блок масштабирования ко входу как максимальное значение масштабирования.
Больше ничего не требуется.
выбор шима все 16 каналов:
Таймер-1:
Канал 1 (CH1): PA8
Канал 2 (CH2): PA9
Канал 3 (CH3): PA10
Канал 4 (CH4): PA11 - отключается усб (пока так)
Таймер-2: Без переназначения
Канал 1 (CH1): PA0
Канал 2 (CH2): PA1
Канал 3 (CH3): PA2
Канал 4 (CH4): PA3
Таймер-2: Частичное переназначение
Канал 1 (CH1): PA15 - отключает джетег
Канал 2 (CH2): PВ3 - отключает джетег
Канал 3 (CH3): PA2
Канал 4 (CH4): PA3
Таймер-2: Частичное переназначение наоборот
Канал 1 (CH1): PA0
Канал 2 (CH2): PA1
Канал 3 (CH3): PВ10
Канал 4 (CH4): PВ11
Таймер-2: Полное переназначение
Канал 1 (CH1): PA15 - отключает джетег
Канал 2 (CH2): PВ3 - отключает джетег
Канал 3 (CH3): PВ10
Канал 4 (CH4): PВ11
Таймер-3: Без переназначения
Канал 1 (CH1): PA6
Канал 2 (CH2): PA7
Канал 3 (CH3): PB0
Канал 4 (CH4): PB1
Таймер-3: Частичное переназначение
Канал 1 (CH1): PB4 - отключает джетег
Канал 2 (CH2): PB5
Канал 3 (CH3): PB0
Канал 4 (CH4): PB1
Таймер-4:
Канал 1 (CH1): PB6
Канал 2 (CH2): PB7
Канал 3 (CH3): PB8
Канал 4 (CH4): PB9
------------------------------------------------------------------------ -- добавлены все ремапы
-- добавлена инверсия каналов
------------------------------------------------------------------------
-- добавлены варианты синхронизаций таймеров по Reset mode
------------------------------------------------------------------------
-- добавлена настройка повышенной точности синхронизации
------------------------------------------------------------------------
Имеем 16 каналов ШИМ: частота от 0,017 Гц (примерно 58 сек период) до 36 МГц.
Все 22 пинов для переназначения разбитые по ремапам.
Максимальная регулировка до 24 МГц (конечная частота больше зависит от нагрузки, ёмкостной может просаживаться).
Предельная частота до 36 МГц, но там как вкл/выкл и в виде синусоиды.
Функции:
-- Центральное выравнивание ШИМ.
-- Инверсия любого канала ШИМ.
-- Синхронизация таймеров по Reset mode.
-- Повышенная точность синхронизации.
Заложена автоадаптация предделителя частоты.
Она позволяет выставлять, получать частоту с высокой точностью от выбранной.
К примеру, на обычном делителе получалось получить для 0,5Гц = 0,504Гц, то теперь частота выставляется в примерно 0,499995Гц.
Синхронизация таймеров.
Частоты у синхронизированых таймеров выставить одинаковые.
Если включим режим Мастера, то остальные выбраные слейвы будут ровняться на фронт этого таймера.
Мастера может быть два и к каждому свой слейв подключен.
Либо Мастер один и к нему подключены любое количество слейвов.
Если включить режим Слейв - Reset mode, то получим ровный старт, привязанный к фронту мастера.
Синхронизация выполняется в каждом периоде Мастера.
Повышенная точность синхронизации.
Вероятно требует отдельно включения из за накладных ресурсов в аппаратной части для высокой синхронизации, возможно и по другой причине.
На разных слейвах можно включать выборочно.
В общем если нужна высокая точность то вкл если нет то нетрогаем.
Инверсия канала ШИМ — меняет полярность выходного сигнала таймера. Вместо стандартного активного HIGH уровня (сигнал HIGH при заполнении) выход переключается в активный LOW уровень (сигнал LOW при заполнении).
Для работы:
N-канальные MOSFET (требуют active high)
P-канальные MOSFET (требуют active low):
Светодиод с общим катодом
Светодиод с общим анодом
И прочие драйверы со своей логикой
Так же можно включить центрально-выровненное ШИМ, для уменьшения гармоник применяемый для моторов.
Для обычных светодиодов, нагревателей и вентиляторов не нужен, а вот для управления моторами, мостовыми схемами и возможно борьба с ЭМП.
Выглядит на 4 канала это вот так, собственно, как и ожидалось из названия:
(в обычном режиме все фронты каналов одного таймера выровнены и стартуют синхронно)
Ограничение таймера: одна частота на таймер.
Все 4 канала таймера работают на этой одной частоте.
Для генерации двух разных частот необходимо использовать два отдельных ШИМ-таймера.
Здесь нету привычных и условно бесполезных рамок в виде битности на скважность (1023, 4095).
Здесь всё вычисляется автоматически под максимум скважности до 65535 (попытка использовать возможности МК по максимум), от чего открываются возможности широкого масштабирования и точности позиционирования.
Перед работой нужно только узнать диапазон скважности на выходе PWM_info (у каждой частоты он посути разный):
— либо загружается проверочный код для считывания показаний, и далее это число применяется в масштабировании;
— либо, ещё проще, на него вешается переменная или клемма, и на блок масштабирования ко входу как максимальное значение масштабирования.
Больше ничего не требуется.
выбор шима все 16 каналов:
Таймер-1:
Канал 1 (CH1): PA8
Канал 2 (CH2): PA9
Канал 3 (CH3): PA10
Канал 4 (CH4): PA11 - отключается усб (пока так)
Таймер-2: Без переназначения
Канал 1 (CH1): PA0
Канал 2 (CH2): PA1
Канал 3 (CH3): PA2
Канал 4 (CH4): PA3
Таймер-2: Частичное переназначение
Канал 1 (CH1): PA15 - отключает джетег
Канал 2 (CH2): PВ3 - отключает джетег
Канал 3 (CH3): PA2
Канал 4 (CH4): PA3
Таймер-2: Частичное переназначение наоборот
Канал 1 (CH1): PA0
Канал 2 (CH2): PA1
Канал 3 (CH3): PВ10
Канал 4 (CH4): PВ11
Таймер-2: Полное переназначение
Канал 1 (CH1): PA15 - отключает джетег
Канал 2 (CH2): PВ3 - отключает джетег
Канал 3 (CH3): PВ10
Канал 4 (CH4): PВ11
Таймер-3: Без переназначения
Канал 1 (CH1): PA6
Канал 2 (CH2): PA7
Канал 3 (CH3): PB0
Канал 4 (CH4): PB1
Таймер-3: Частичное переназначение
Канал 1 (CH1): PB4 - отключает джетег
Канал 2 (CH2): PB5
Канал 3 (CH3): PB0
Канал 4 (CH4): PB1
Таймер-4:
Канал 1 (CH1): PB6
Канал 2 (CH2): PB7
Канал 3 (CH3): PB8
Канал 4 (CH4): PB9
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось lfgjikjjyj 03 янв 2026, 09:21, всего редактировалось 8 раз.
- Drakon88
- Рядовой
- Сообщения: 33
- Зарегистрирован: 02 июл 2019, 20:24
- Имя: Михаил
- Благодарил (а): 4 раза
Re: STM32F103CB апаратный ШИМ на все 16 каналов от 0,017гц до 36мгц с некоторыми функциями
Это только на CB будет работать? На C8T6 не будет? Или на F4** ?
-
lfgjikjjyj
- Лейтенант
- Сообщения: 395
- Зарегистрирован: 27 мар 2025, 12:13
- Имя: Коля
- Поблагодарили: 123 раза
-
lfgjikjjyj
- Лейтенант
- Сообщения: 395
- Зарегистрирован: 27 мар 2025, 12:13
- Имя: Коля
- Поблагодарили: 123 раза
Re: STM32F103CB апаратный ШИМ на все 16 каналов от 0,017гц до 36мгц с некоторыми функциями
Добавил все ремапы на все 22 пинов на выбор.
Вразнобой выбирать не получится, потому что ремап переназначает пины на всех каналах сразу, то есть по 4 шт разом.
Пины, зависимые от периферии, отключают её только при активации этих самых пинов.
Добавил инверсию на шимы для каждого пина отдельно, тоже интересная штука.
Скважность остаётся та же, только аппаратно переворачивается сигнал на выходе.
Не требуется внешняя логика и, в некоторых случаях, внешние инверторы.
Выглядит это так:
1 и 3 — нормальный режим.
2 и 4 — инверсионный режим.
Вразнобой выбирать не получится, потому что ремап переназначает пины на всех каналах сразу, то есть по 4 шт разом.
Пины, зависимые от периферии, отключают её только при активации этих самых пинов.
Добавил инверсию на шимы для каждого пина отдельно, тоже интересная штука.
Скважность остаётся та же, только аппаратно переворачивается сигнал на выходе.
Не требуется внешняя логика и, в некоторых случаях, внешние инверторы.
Выглядит это так:
1 и 3 — нормальный режим.
2 и 4 — инверсионный режим.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
lfgjikjjyj
- Лейтенант
- Сообщения: 395
- Зарегистрирован: 27 мар 2025, 12:13
- Имя: Коля
- Поблагодарили: 123 раза
Re: STM32F103CB апаратный ШИМ на все 16 каналов от 0,017гц до 36мгц с некоторыми функциями
Добавил Синхронизация — тоже занятная вещь: позволяет убрать рассинхрон у таймеров, которые используются для одной цели.
Обычное стандартное состояние сигналов в виде небольшого разбега между таймерами в пустом коде составляет от 7 мкс и выше.
1 строчка — это тим1.
2, 3, 4, 5 строчки — это тим2.
Внутри одного таймера все каналы синхронизированы изначально.
Если включить режим Слейв - Reset mode, то получим ровный старт, привязанный к фронту мастера.
Синхронизация выполняется в каждом периоде.
В рамках одного периода мастера, скважность у каждого канала занимается своими делами, маркер 0 - начало, маркер 1 - конец.
Частота у обоих таймеров одинаковая выставлена. Если поставить разную кратную частоту: у тим1 - 1 кГц, у тим2 - 2 кГц, то будут просто пропуски синхронизаций, что и логично.
Тим1 как мастер не собирается подстраиваться под других. Все 4 таймера от первого таймера по два пина с каждого на разные скважности.
строки:
1 2 тим1
3 4 тим2
5 6 тим3
7 8 тим4 Если совсем ставить разные частоты да ещё скважности, которые не подходят под частоту мастера, работа будет неадекватной и непригодной к желаемому.
Там, как вариант, надо строить единый блок на все таймеры, что позволит выносить запуски таймеров отдельно и в нужной последовательности. (тогда и тригер моде можно задействовать)
Но нужно чутка по гибче редактор, иначе я дефайны буду тележками завозить туда.
Обычное стандартное состояние сигналов в виде небольшого разбега между таймерами в пустом коде составляет от 7 мкс и выше.
1 строчка — это тим1.
2, 3, 4, 5 строчки — это тим2.
Внутри одного таймера все каналы синхронизированы изначально.
Если включить режим Слейв - Reset mode, то получим ровный старт, привязанный к фронту мастера.
Синхронизация выполняется в каждом периоде.
В рамках одного периода мастера, скважность у каждого канала занимается своими делами, маркер 0 - начало, маркер 1 - конец.
Частота у обоих таймеров одинаковая выставлена. Если поставить разную кратную частоту: у тим1 - 1 кГц, у тим2 - 2 кГц, то будут просто пропуски синхронизаций, что и логично.
Тим1 как мастер не собирается подстраиваться под других. Все 4 таймера от первого таймера по два пина с каждого на разные скважности.
строки:
1 2 тим1
3 4 тим2
5 6 тим3
7 8 тим4 Если совсем ставить разные частоты да ещё скважности, которые не подходят под частоту мастера, работа будет неадекватной и непригодной к желаемому.
Там, как вариант, надо строить единый блок на все таймеры, что позволит выносить запуски таймеров отдельно и в нужной последовательности. (тогда и тригер моде можно задействовать)
Но нужно чутка по гибче редактор, иначе я дефайны буду тележками завозить туда.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
asvhmao
- Рядовой
- Сообщения: 30
- Зарегистрирован: 15 мар 2024, 00:10
- Откуда: Краснодар
- Имя: сергей
- Благодарил (а): 17 раз
Re: STM32F103CB апаратный ШИМ на все 16 каналов от 0,017гц до 36мгц с некоторыми функциями
.
Таймеры в STM интересная штука.
Попался тут, на форуме, один блок на первом таймере с STM32F103. Поигрался немного с ним. Из одной фазы сделал три. Табличкой прилепил синусоиду. Отключение тоже не сообразил как прикрепить к блоку.
Версии F4, F7, как мне сказали, умеют уже на лету синусоиду рисовать. Глубоко не копал пока.
. . .
Таймеры в STM интересная штука.
Попался тут, на форуме, один блок на первом таймере с STM32F103. Поигрался немного с ним. Из одной фазы сделал три. Табличкой прилепил синусоиду. Отключение тоже не сообразил как прикрепить к блоку.
Версии F4, F7, как мне сказали, умеют уже на лету синусоиду рисовать. Глубоко не копал пока.
. . .
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
lfgjikjjyj
- Лейтенант
- Сообщения: 395
- Зарегистрирован: 27 мар 2025, 12:13
- Имя: Коля
- Поблагодарили: 123 раза
Re: STM32F103CB апаратный ШИМ на все 16 каналов от 0,017гц до 36мгц с некоторыми функциями
Думаю, что баловство, если мы говорим про аппаратные возможности.
Вы же из апаратного только шим крутите.
На 103 это делается на аппаратном уровне, неособо просаживая цикл на 3 фазы.
И добавить центрально выравненный ШИМ.
И мертвое время установить.
Ну и бреак подключить от токовых колечек через АЦП, там события тоже на аппаратном уровне передаются.
Да и ваш массив, для него самое идеальное место — это DMA, которая на аппаратном уровне может делать плавный пуск, да и вообще любой рисунок, что загрузите в него, не тормозя луп. По этому принципу в него и грузят массивы от адресных лент.
Да и почему 8 бит? Там же можно плавнее построить на тех же 16 битах и вашей частоте. Но лучше, думаю, 12 бит, и частота где-то за десятку уйдёт.
Но всё равно, у меня нет драйверов этим заниматься и осциллографа, хотя бы на три канала.
Я вот DMA тут пробовал прикрутить к ШИМ, даже на одном канале повышает циклы на 3% примерно, имеется в виду пустой код с блоком и циклированным пином на 833 нс, который съедает в измерениях. Да, немножко, но там и работы то немного — это говорит о том, что мне записать только в DMA без сравнений выходит быстрее, чем заниматься сравнением изменения числа и записью его в регистр канала. А вот когда речь заходит о 3-4 каналах, то DMA повышает циклы на 9%. Там непонятно было, 4 канал так и не заработал у меня из-за периферийности USB, походу.
В 4 версии уже хорошо частоту менять на лету за счёт флоата.
Я в своём блоке его добавил лишь потому, что он делает расчёт только один раз при старте, и дальше нет накладных расходов на КПУ.
Вы же из апаратного только шим крутите.
На 103 это делается на аппаратном уровне, неособо просаживая цикл на 3 фазы.
И добавить центрально выравненный ШИМ.
И мертвое время установить.
Ну и бреак подключить от токовых колечек через АЦП, там события тоже на аппаратном уровне передаются.
Да и ваш массив, для него самое идеальное место — это DMA, которая на аппаратном уровне может делать плавный пуск, да и вообще любой рисунок, что загрузите в него, не тормозя луп. По этому принципу в него и грузят массивы от адресных лент.
Да и почему 8 бит? Там же можно плавнее построить на тех же 16 битах и вашей частоте. Но лучше, думаю, 12 бит, и частота где-то за десятку уйдёт.
Но всё равно, у меня нет драйверов этим заниматься и осциллографа, хотя бы на три канала.
Я вот DMA тут пробовал прикрутить к ШИМ, даже на одном канале повышает циклы на 3% примерно, имеется в виду пустой код с блоком и циклированным пином на 833 нс, который съедает в измерениях. Да, немножко, но там и работы то немного — это говорит о том, что мне записать только в DMA без сравнений выходит быстрее, чем заниматься сравнением изменения числа и записью его в регистр канала. А вот когда речь заходит о 3-4 каналах, то DMA повышает циклы на 9%. Там непонятно было, 4 канал так и не заработал у меня из-за периферийности USB, походу.
В 4 версии уже хорошо частоту менять на лету за счёт флоата.
Я в своём блоке его добавил лишь потому, что он делает расчёт только один раз при старте, и дальше нет накладных расходов на КПУ.
-
asvhmao
- Рядовой
- Сообщения: 30
- Зарегистрирован: 15 мар 2024, 00:10
- Откуда: Краснодар
- Имя: сергей
- Благодарил (а): 17 раз
Re: STM32F103CB апаратный ШИМ на все 16 каналов от 0,017гц до 36мгц с некоторыми функциями
.lfgjikjjyj писал(а): 01 янв 2026, 17:13 Думаю, что баловство, если мы говорим про аппаратные возможности.
Вы же из апаратного только шим крутите.
На 103 это делается на аппаратном уровне, неособо просаживая цикл на 3 фазы.
Частота и заполнение 3х фаз меняется в блоке.
Да поправят меня модераторы, если что. FLProg вроде как задумывался собирать сложные вещи простыми методами. За последние три года много чего интересного тут добавилось и поменялось.
Данный блок это то что было в наличии, его и прикрутил (на STM подобного по пальцам посчитать можно). Дальше надо уметь ручками писать коды. А у меня, как и большенства пользователей этого и подобных форумов - лапки. Поэтому, что есть в наборах блоков, то пока и кручу.
Просто решил в эту тему его выложить, как один из примеров применения в данной программе.
Ваши блоки, тоже надеюсь расширят линейку применения таймеров в данной линейке МК. Штука нужная и полезная.
.
.lfgjikjjyj писал(а): 01 янв 2026, 17:13 И добавить центрально выравненный ШИМ.
И мертвое время установить.
На картинке так и есть вроде бы, 0-1 канал первая пара, 2-3 вторая и 4-5 третья, на ЛА. 6 канал - такты просто посмотреть, чтоб видно может где сбой какой, да мало ли чего ещё. В самом проекте настройки (сегодня) не смотрел, последний раз мурзилку листал пару тет назад.
.
.lfgjikjjyj писал(а): 01 янв 2026, 17:13 Да и почему 8 бит? Там же можно плавнее построить на тех же 16 битах и вашей частоте
На форумах копья уже много лет ломают по этому поводу. Практики по сборке частотных преобразователей утверждают что 8 бит с избытком для управления моторами. Для генераторов сигнала, там да, чем больше тем лучше.
.
.lfgjikjjyj писал(а): 01 янв 2026, 17:13 Но всё равно, у меня нет драйверов этим заниматься и осциллографа, хотя бы на три канала.
Не хвастаюсь, но себе поменял недавно приборчик на DHO804. Есть теперь повод смотреть весёлые картинки.
-
lfgjikjjyj
- Лейтенант
- Сообщения: 395
- Зарегистрирован: 27 мар 2025, 12:13
- Имя: Коля
- Поблагодарили: 123 раза
Re: STM32F103CB апаратный ШИМ на все 16 каналов от 0,017гц до 36мгц с некоторыми функциями
Добавлена повышенная точность синхронизации.
Вероятно требует отдельно включения из за накладных ресурсов в аппаратной части для высокой синхронизации, возможно и по другой причине.
В общем если нужна высокая точность то вкл если нет то нетрогаем.
Вероятно требует отдельно включения из за накладных ресурсов в аппаратной части для высокой синхронизации, возможно и по другой причине.
В общем если нужна высокая точность то вкл если нет то нетрогаем.
-
asvhmao
- Рядовой
- Сообщения: 30
- Зарегистрирован: 15 мар 2024, 00:10
- Откуда: Краснодар
- Имя: сергей
- Благодарил (а): 17 раз
Re: STM32F103CB апаратный ШИМ на все 16 каналов от 0,017гц до 36мгц с некоторыми функциями
.
А самое вкусное будет в блоках? Когда на одном таймере и на одном канале сразу получить прямой и инверсный сигналы?
.
А самое вкусное будет в блоках? Когда на одном таймере и на одном канале сразу получить прямой и инверсный сигналы?
.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
lfgjikjjyj
- Лейтенант
- Сообщения: 395
- Зарегистрирован: 27 мар 2025, 12:13
- Имя: Коля
- Поблагодарили: 123 раза
Re: STM32F103CB апаратный ШИМ на все 16 каналов от 0,017гц до 36мгц с некоторыми функциями
Думаете, всё так просто?
У меня ещё только на стадии ремапов ушло более 500 компиляций, чтобы отладить все комбинации каналов и таймеров вперемешку.
А с допфункциями приходилось всё повторять по новой, по 14 часов в день.
Так то конский труд альфа и бета-тестеров, у меня тут нет под рукой.
Да и с редактором устал воевать, там и так непросто натыкать условие, а тем более очень длинное условие. Так его даже нельзя скопировать, продублировать, чтобы добавить ещё несколько условий.
Так там всего 1 таймер, так умеет либо через мою синхронизацию попробовать на другие раскинуть, на несколько моторов. Но первый в приоритете, его можно мгновенно остановить через брек, недожидаясь цикла или прерывания от чего-либо.
Но вряд ли тут все крутят трёхфазники на форуме.
Попозже.
ДМА пока в тупик поставил, работает, но по факту выставленных параметров, а я не хочу раскидывать их по каналам.
ДМА всего 7 штук, мне не хватает на всё. Пробую один на таймер сразу массивом туда, и пока тупичок на выбор каналов возникает.
А делать комбинацию шаблонов — ну такое себе.
Но зато чистовой прирост достиг в 16%. Более того, 4 канала с ДМА работают быстрее, чем один канал без него в циклах. Я делаю на каждый канал из 4 канала два условия проверки и запись в ДМА массивом, и запись в регистр из неё. И это быстрее, чем на одном ШИМ делать те же два условия проверки, плюс сравнение на изменение числа, чтобы не долбить регистр лишними записями.
Пока пробую библиотеку под ШИМ набросать, и тогда редактор попроще пойдёт.
Ну и забрать 4 ДМА-канала под все ШИМы, если получится.
У меня ещё только на стадии ремапов ушло более 500 компиляций, чтобы отладить все комбинации каналов и таймеров вперемешку.
А с допфункциями приходилось всё повторять по новой, по 14 часов в день.
Так то конский труд альфа и бета-тестеров, у меня тут нет под рукой.
Да и с редактором устал воевать, там и так непросто натыкать условие, а тем более очень длинное условие. Так его даже нельзя скопировать, продублировать, чтобы добавить ещё несколько условий.
Так там всего 1 таймер, так умеет либо через мою синхронизацию попробовать на другие раскинуть, на несколько моторов. Но первый в приоритете, его можно мгновенно остановить через брек, недожидаясь цикла или прерывания от чего-либо.
Но вряд ли тут все крутят трёхфазники на форуме.
Попозже.
ДМА пока в тупик поставил, работает, но по факту выставленных параметров, а я не хочу раскидывать их по каналам.
ДМА всего 7 штук, мне не хватает на всё. Пробую один на таймер сразу массивом туда, и пока тупичок на выбор каналов возникает.
А делать комбинацию шаблонов — ну такое себе.
Но зато чистовой прирост достиг в 16%. Более того, 4 канала с ДМА работают быстрее, чем один канал без него в циклах. Я делаю на каждый канал из 4 канала два условия проверки и запись в ДМА массивом, и запись в регистр из неё. И это быстрее, чем на одном ШИМ делать те же два условия проверки, плюс сравнение на изменение числа, чтобы не долбить регистр лишними записями.
Пока пробую библиотеку под ШИМ набросать, и тогда редактор попроще пойдёт.
Ну и забрать 4 ДМА-канала под все ШИМы, если получится.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей