реклама на сайте
подробности

 
 
> Максимальное разрешение многоканального программного ШИМ на STM32, Проверьте мои измышления, плз
Dog Pawlowa
сообщение Apr 2 2009, 09:52
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



N 16 каналов
F Частота 400 Гц
n Количество градаций 1000
f Частота микроконтроллера 72 MHz
p Ресурсы времени на обслуживание ШИМ 50%

T Период прерывания обслуживания ШИМ = (1/(F*n)) = 1/(400*1000) = 2,5 мкс
Время прерывания 2,5 *50/100 = 1,25 мкс.
Допустимое количество команд 72*1,25= 90

Делаем тупо 16 раз:

if (count==pwm[NUM]) PORT->BSRR=PIN

На каждый канал тратится шесть команд, итого 96 команд плюс инкремент-пролог-эпилог.
Много. Плюс джиттер - отдельный вопрос.

Переделываем на предварительное формирование слова для записи в порт, и потом три записи этих байтов
4 команды на канал итого 64 плюс чистка и запись в три порта 11 команд всего 75.
Чуть лучше.

Какие еще варианты могут быть? (кроме снижения требований, конечно )

Сдвиговый регистр на SPI с записью по DMA? Что-то еще?


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
ReAl
сообщение Apr 2 2009, 18:15
Сообщение #2


Нечётный пользователь.
******

Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417



Тьху, ну да. А можно и не всю колбасу, а только несколько нужных кусочков - т.е., как у меня, только после сортировки слить .mask с одинаковым [i].count[/i] и туда же добавить предыдущее .mask, укоротив рабочую часть массива и записать ограничитель в следующем элементе в .count. Максимальная длина будет такая, что влезет в данный массив, а (в исправленном) while(count == pwmptr->count) заменить назад на if без while - тело обработчика будет выполняться ощутимо дольше, чем для 2000-байтовой колбасы, но "худшего случая" просто не будет, тело будет всё равно достаточно быстрым.
Ну и будет не mask |= pwmptr->mask а mask = pwmptr->mask (см. про "добавить предыдущее"), ещё может малость сэкономит.


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 5th August 2025 - 00:36
Рейтинг@Mail.ru


Страница сгенерированна за 0.03271 секунд с 7
ELECTRONIX ©2004-2016