Частота PWM

Nik777
Offline
Зарегистрирован: 30.05.2017

Подскажите пожалуйста, есть ли возможность понизить частоту PWM, без изменеия фьюзов у Atmega328 или  STM32F103 до уровня 150-200khz. И что значат PWM 2/3, PWM 1/3N.... у STM32 ?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Про stm - идите на профильный форум.

А про Atmega328, - частоту Вы можете устанавливать сами безо всякого изменения фьзов. Но 150-200 кГц не получится - слишком много. Хотя, смотря какое разрешение Вас устроит, конечно.

Но, опять же к Ардуино это не имеет отношения, кстати.

Nik777
Offline
Зарегистрирован: 30.05.2017

150-200 много? Стоит стандартный ардуиновский бутлодер, на форумах пишут, PWM работает на частоте 500кгц, неужели нельзя понизить программно. По поводу stm32, arduino же их тоже поддерживает. Есть даже официальная плата Star OTTO

OlegK
OlegK аватар
Offline
Зарегистрирован: 26.11.2014

Nik777 пишет:
Стоит стандартный ардуиновский бутлодер, на форумах пишут, PWM работает на частоте 500кгц

Вы явно путаете... По дефолту частота ШИМ около 500Гц, с помощью коэфф. деления можно задавать от 30Гц до 31кГц.

/* Constants for the PWM frequency */
/*
  Const        Count              Freq(Hz)
   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
*/

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

Nik777 пишет:

на форумах пишут, PWM работает на частоте 500кгц, 

Не внимательно читаете. На форумах пишут не кГц, а Гц. Там около 490Гц (герц).

Nik777 пишет:

Стоит стандартный ардуиновский бутлодер

Бутлоадер никак не влияет на частоту ШИМ. Она зависит от тактовой частоты микроконтроллера, настройки аппаратнорго таймера, предделителя.

Nik777
Offline
Зарегистрирован: 30.05.2017

Спасибо, разобрался с Atmega, да и нужна частота 200Гц. Единственное хотелось бы stm32 задействовать, а то atmega последняя осталось. Команда для Atmega (TCCRB) не подходит для stm в arduino ide...

Nik777
Offline
Зарегистрирован: 30.05.2017

Я беру голые чипы 328p, просто цепляю кварц и заливаю бутлодер, значит заводские аппаратные настройки стоят.

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

Микроконтроллеры STM32 - это совсем другая архитектура (ARM). Они очень сильно отличаются от микроконтроллеров ATmega с архитектурой AVR. Там совсем другие регистры и они по-другому настраиваются.

Гугл поможет - https://www.google.com/search?q=stm32+таймеры

Nik777
Offline
Зарегистрирован: 30.05.2017

Это я уже понял, когда пытался скомпилировать библиотеки на нестандартные дисплеи,  да и стандартные не влазят на дешевые stm))

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

Nik777 пишет:

Я беру голые чипы 328p, просто цепляю кварц и заливаю бутлодер, значит заводские аппаратные настройки стоят.

1) Нет, вместе с прошивкой бутлоадера прошиваются и ардуиновские фьюзы.

2) О каких "аппаратных настройках" вы говорите? Если о аппаратных таймерах, то они настраиваются не через фьюзы, а программно (в скетче) через регистры.

 

Nik777
Offline
Зарегистрирован: 30.05.2017

Насколько я знаю от фьюзов зависит соотношение частоты контроллера  и кварца, тогда получается, что и меняется частота pwm?

Nik777
Offline
Зарегистрирован: 30.05.2017

Настройки которые описаны в этой статье http://robotshop.com/letsmakerobots/setting-arduino-fuses-manually-avr-studio

Nik777
Offline
Зарегистрирован: 30.05.2017

Точнее по этому калькулятору смотрел: http://eleccelerator.com/fusecalc/fusecalc.php?chip=atmega328p

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

В принципе да. Во фьюзах настраивается система тактирования микроконтроллера, от которй зависит тактовая частота. От которой, в свою очередь, зависит аппаратный таймер. Если используется внешний кварц, то единственное возможное изменение - поделить частоту на 8.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Nik777 пишет:

Я беру голые чипы 328p, просто цепляю кварц и заливаю бутлодер, значит заводские аппаратные настройки стоят.

Не знаю, что Вы понимаете под выражением "заливаю бутлоадер". В IDE говорите "Записать загрузчик"? Если так, то ладно, а если просто грузите его туда программатором, то неплохо бы и фьюзы выставить, а то заводсткое умолчание - 1МГц и "нафиг Ваш кварц".

Nik777
Offline
Зарегистрирован: 30.05.2017

ЕвгенийП пишет:

Не знаю, что Вы понимаете под выражением "заливаю бутлоадер". В IDE говорите "Записать загрузчик"? Если так, то ладно, а если просто грузите его туда программатором, то неплохо бы и фьюзы выставить, а то заводсткое умолчание - 1МГц и "нафиг Ваш кварц".

Да записать загрузчик. 

В общем не знаю на каких частотах работает PWM на STM32, но принимающее устройство допускает частоту 150-200 гц,  и при таком включении не работает по 20% от верхнего и нижнего пределов, без осциллографа не разберешся.

И получается, атмегу настроить на эту частоту не просто....

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Nik777 пишет:

В общем не знаю на каких частотах работает PWM на STM32, но принимающее устройство допускает частоту 150-200 гц,  и при таком включении не работает по 20% от верхнего и нижнего пределов, без осциллографа не разберешся.

И получается, атмегу настроить на эту частоту не просто....

Если Вым нужен ШИМ не на всех 6 ногах, причем без отказа от внутренних часов, а достаточно 1-2, то делается достаточно элементаоно. Только верхний предел при этом будет не 255, а меньше.

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Так и от часов не обязательно отказываться. Просто подправить обработчик прерываний таймера 0. Делов-то. :)

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

andriano пишет:

 Только верхний предел при этом будет не 255, а меньше.

Я может чего упустил, но ему вроде надо всего 150-200 герц. Зачем при такой частоте уменьшать разрешение? Вроде и так всё должно работать. Или нет?

Nik777
Offline
Зарегистрирован: 30.05.2017

Мне нужен ШИМ на определенных частотах,  цена микроконтнтроллера не значительна, достаточно с одного контроллера один ШИМ, с таобао заказал осцилограф, когда придет станет понятно на каких частотах работать и что выдает Atmega  и Stm

На Atmega, pwm что то сильно плох, и регулируется тяжело... 

Yarik.Yar
Offline
Зарегистрирован: 07.09.2014

....именно поэтому на ATMega столкьо проектов с ШИМом, начиная светодиодными поедлками и заканчивая ЭБУ для авто.

Какой программист - такой и контроллер у программиста.

ssss
Offline
Зарегистрирован: 01.07.2016

Nik777 пишет:

Подскажите пожалуйста, есть ли возможность понизить частоту PWM, без изменеия фьюзов у Atmega328 или  STM32F103 до уровня 150-200khz.

Ну... у меги там действительно мрак кромешный, но у СТМ32 то всё нормально. Там предделители таймеров полные. Делите тактовую таймера как угодно.

Цитата:

И что значат PWM 2/3, PWM 1/3N.... у STM32 ?

В СТМ32 4 таймера и у каждого 4 канала ПВМ. Первая цифра - номер таймера, вторая - номер канала этого таймера. У первого таймера ещё и комплементарные выходы, отсюда и буква "N", т.е. это инверсные выходы канала.