|
stm32f4 mem->dma->gpio.odr tim6, не понимаю природу косяка |
|
|
|
Jan 25 2018, 16:17
|
Частый гость
 
Группа: Участник
Сообщений: 181
Регистрация: 26-11-10
Пользователь №: 61 198

|
Не спец по F4, даташит не читал, но в порядке выдвижения гипотезы: в Вашем кристалле TIM6 точно присутствует? Например, по опыту с F0 - TIM6, TIM7 - "редкие" таймеры, присутствуют только в "жирных" камнях, а в базовых и малоногих приходится довольствоваться TIM1,3,14,16,17. Может быть обращаетесь к не реализованному на данном кристалле таймеру?
|
|
|
|
|
Jan 25 2018, 19:02
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(MiklPolikov @ Jan 25 2018, 20:27)  То же люблю делать ШИМ черезтДМА. Объясните по-русски что такое "джиттер"? Может колебания частоты? У Вас DMA что делает? Пишет в регистры управления GPIO пинами? Чтобы импульсы ШИМ определённой длительности сгенерить? А теперь подумайте, что будет если таймер выставил запрос обслуживания к DMA, а в этот момент CPU выполняет команду PUSH {R0-R12,LR} ? Как изменится длительность импульса ШИМ? А если работают ещё и другие bus-masters и они тоже к шине обращаются? Вот тогда и получите джиттер - длительность импульсов ШИМа будет болтаться.
|
|
|
|
|
Jan 29 2018, 23:24
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(klen @ Jan 30 2018, 00:25)  240кГц, 50 отсчетов скважности, это примерно 5.6 битный цап. 16 каналов. работает довольно дубово, то есть хорошо. у меня предназначено для управления 16 ключами в зарядной станции. что бы все ключи не втыкались одновременно, фазы включения разнесены со сдвигом на 1/16 периода. частоту несущей меняю по псевтослучайному закону в близи 240кгц перегружая регистр аrr , это размазывает спектр помех и убирает пики гармоник. проц учавствует в этом только когда нужно изменить скажности каналов. и никаких прерываний. Жесть какая! Такой паровоз на квадратных колёсах. Никаких прерываний, зато непрерывный DMA-поток и к тому же - накладывающий ограничения на другие процессы. У вас в устройстве больше ничего кроме этого паровоза нет? А какой практический смысл было городить такое, а не взять просто более подходящий МК с достаточным количеством аппаратных ШИМ-ов? И сделать всё с характеристиками на порядок лучше, а не на уровне ардуины.
|
|
|
|
|
Jan 30 2018, 05:38
|

бессмертным стать можно тремя способами
    
Группа: Свой
Сообщений: 1 405
Регистрация: 9-05-06
Из: Москва
Пользователь №: 16 912

|
Цитата(jcxz @ Jan 30 2018, 02:24)  А какой практический смысл было городить такое, а не взять просто более подходящий МК с достаточным количеством аппаратных ШИМ-ов? И сделать всё с характеристиками на порядок лучше, а не на уровне ардуины. лучше что? какой мк имеет 32 аппаратных канала шим? в моем случае это самы подходящий вариант, дешево и быстро. никаких ограничений на другие процессы не присутствуют, предположительно переферийная шина нагружена каждую 13 транзакцию, ahb каждую 52 (с 16 каналами) это же не цап прецизионный, это балансир-зарядник, чем прще тем надежней. таймеры и процессор - это я экономлю для великих задач. к стати, во время войны паровоз спасет промышленность.
|
|
|
|
|
Jan 30 2018, 10:31
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(klen @ Jan 30 2018, 07:38)  какой мк имеет 32 аппаратных канала шим? А у Вас разве 32? 16 вроде  Например Infineon XMC4500 или XMC4700 имеют по 8 продвинутых таймеров, в каждом таймере к регистру-счётчику привязаны по 2 compare-регистра, каждый compare - с двумя выводами на пины МК. Т.е. - уже можно 16 двухтактных ШИМов сделать (а не однотактных как у Вас). А ещё в каждом МК есть 16 простых таймеров, содержащих каждый по одному compare-регистру с одним выходом - это ещё 16 однотактных ШИМов. И каждый работает на <= 120/144 МГц (а не 240кГц), имеет разрядность 16 бит (а не 5.5), имеют встроенное аппаратное дрожание (для размазывания спектра), имеют center-aligned режим ШИМа (а не только edge), продвинутые таймеры имеют кроме того аппаратный dead-time и много других фич. И это всё - без всяких DMA и с полностью свободной шиной. Поэтому мне и кажется Ваш выбор МК, для такой задачи, странным. Цитата(klen @ Jan 30 2018, 07:38)  никаких ограничений на другие процессы не присутствуют, предположительно переферийная шина нагружена каждую 13 транзакцию, ahb каждую 52 (с 16 каналами) Это всё в теории. В таких системах где необходима жёсткая привязка работы к реалтайму, как показывает практика, добавлять что-то очень сложно - вдруг начинает рушиться работа этого реалтайма и начинает иногда сбоить. Несмотря на теоретические выкладки PS: Вы мне так и не ответили на мой вопрос, где Вы смотрите таблицу приоритетов доступа к шине разных bus-мастеров для STM32F4? Я что-то не нашёл....
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|