Многоразрядный и высокочастотный ШИМ

Использование драйверов двигателей и пользовательских блоков к ним
Ответить
SirYorik
Сержант
Сообщения: 124
Зарегистрирован: 04.10.2015{, 10:01}
Репутация: 0
Откуда: Томск

Многоразрядный и высокочастотный ШИМ

#1

Сообщение SirYorik » 04.03.2016{, 22:40}

Открыл для себя сабж, благодаря классному скетчу в теме.
скетч позволяет погонять в интерактиве любые режимы разрядности ШИМ на портах D9 и D10.
этот скриншот показывает работу того скетча, на панели осцилла видно частоты и времена:
analogWriteReso.ubi
(11.82 КБ) 89 скачиваний
сделал на базе скетча CODE-блок и демку в FLProg:
fast_pwm.flp
(75.69 КБ) 103 скачивания
тоже работает! удивился.(блин, как делать банальные for-итерации?, приходится изгаляться со счетчиками-генераторами или такими по-loop() итераторами).
5523604.jpg
на скрине 12-разрядный ШИМ в диапазоне 0-4096 и на частоте 3.9кГц

из CODE-блока можно выкинуть выбор одного пина, если два не нужны.

PS: как это работает без понятия, регистрово-таймерно-предделительная магия

СпойлерПоказать


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

Частота ШИМ'а на ногах 5 и 6:

Код:
Константа   Делитель          Частота(Гц)
   0x01             1                    62500
   0x02             8                  7812.5
   0x03             64            976.5625
   0x04            256            244.140625
   0x05        1024         61.03515625

В Setup пишем строчку: TCCR0B = TCCR0B & 0b11111000 | <Константа>;

, где <Константа> - значение из таблицы без угловых скобок.

Частота ШИМ'а на ногах 9 и 10:

Код:
Константа   Делитель          Частота(Гц)
   0x01          1                    31250
   0x02          8                  3906.25
   0x03          64            488.28125
   0x04            256            122.0703125
   0x05        1024         30.517578125

В Setup пишем строчку: TCCR1B = TCCR1B & 0b11111000 | <Константа>;

Частота ШИМ'а на ногах 11 и 3:

Код:
Константа   Делитель          Частота(Гц)
   0x01          1                    31250
   0x02          8                  3906.25
   0x03          32             976.5625
   0x04             64               488.28125
   0x05         128            244.140625
   0x06            256              122.0703125
   0x07        1024           30.517578125

В Setup пишем строчку: TCCR2B = TCCR2B & 0b11111000 | <Константа>;

Все тайминги и частоты приведены для штатной частоты 16Мгц микроконтроллера ATMEGA328
PPS: в Arduino DUE есть уже встроенная функция analogWriteResolution, в AVR-ных ардуинах таковой нет.
Вложения
5995492.jpg
1385189.jpg
Последний раз редактировалось SirYorik 04.03.2016{, 23:09}, всего редактировалось 1 раз.

Аватара пользователя
DerAlex
Лейтенант
Сообщения: 437
Зарегистрирован: 06.09.2015{, 08:39}
Репутация: 11
Откуда: Новосибирск

Многоразрядный и высокочастотный ШИМ

#2

Сообщение DerAlex » 20.03.2016{, 17:15}

Интересная штука. А частоту можно регулировать в этом блоке ?
аврора

SirYorik
Сержант
Сообщения: 124
Зарегистрирован: 04.10.2015{, 10:01}
Репутация: 0
Откуда: Томск

Многоразрядный и высокочастотный ШИМ

#3

Сообщение SirYorik » 21.03.2016{, 20:15}

DerAlex писал(а): А частоту можно регулировать в этом блоке ?
частота зависима от разрядности.
под спойлером таблицы.
тоесть нет, нельзя.

Аватара пользователя
DerAlex
Лейтенант
Сообщения: 437
Зарегистрирован: 06.09.2015{, 08:39}
Репутация: 11
Откуда: Новосибирск

Многоразрядный и высокочастотный ШИМ

#4

Сообщение DerAlex » 22.03.2016{, 06:10}

Ну по крайней мере можно выбрать какой то диапазон частоты.
аврора

Naladchik
Капитан
Сообщения: 823
Зарегистрирован: 04.10.2015{, 19:10}
Репутация: 151
Откуда: Новосибирск
Имя: Павел

Многоразрядный и высокочастотный ШИМ

#5

Сообщение Naladchik » 23.03.2016{, 10:24}

SirYorik, А как понять " Многоразрядный и высокочастотный ШИМ".
Если я правильно понял то из описания по приведенной Вами ссылке ШИМ может быть или многоразрядным с малой частотой или малоразрядным но с высокой?
Win10-64. FLProg Portable.
Изображение

SirYorik
Сержант
Сообщения: 124
Зарегистрирован: 04.10.2015{, 10:01}
Репутация: 0
Откуда: Томск

Многоразрядный и высокочастотный ШИМ

#6

Сообщение SirYorik » 23.03.2016{, 18:44}

Naladchik писал(а):как понять
штатный ардуинский ШИМ 8бит(0-255)/490гц, с незначительными вариациями частоты

после этой магии многое меняется :),
8битный ШИМ становится аж на 62.5кгц, и дальше по списку "многоразрядным с малой частотой или малоразрядным но с высокой".

меня в первую очередь разрядность интересовала, а повышение частоты - полезный бонус. за подробностями в даташит не полез.

Добавлено (23.03.2016, 18:44)
---------------------------------------------
таблицы из под спойлера в старттопике взяты тути тут, там же дискуссии на тему

Naladchik
Капитан
Сообщения: 823
Зарегистрирован: 04.10.2015{, 19:10}
Репутация: 151
Откуда: Новосибирск
Имя: Павел

Многоразрядный и высокочастотный ШИМ

#7

Сообщение Naladchik » 25.03.2016{, 08:28}

SirYorik, спасибо, поразбираюсь.
Win10-64. FLProg Portable.
Изображение

Ответить

Вернуться в «Управление двигателями»