Портал для радиолюбителей и разработчиков электроники · с 2003 годаРеклама на сайте
Найти компонент, схему или даташит

Даташиты, справочник отечественных приборов, схемы с разбором и живой форум

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы

Увеличить частоту ШИМ'а Arduino

Непрочитано 27.03.2014, 19:01  
mikesmith
Администратор
 
Аватар для mikesmith
 
Регистрация: 10.05.2003
Сообщений: 2,650
Сказал спасибо: 496
Сказали Спасибо 2,637 раз(а) в 581 сообщении(ях)
mikesmith на пути к лучшему
По умолчанию Увеличить частоту ШИМ'а Arduino

НЕ секрет, что встроенная функция analogWrite - организует на ножке широтноимпульсную модуляцию с частотой около 480-490Гц (при штатных 16Мгц). Как увеличить частоту ШИМа до 4-5 кГц?
Реклама:
__________________
C уважением, Михаил
Ищите даташиты на KAZUS.RUN: http://kazus.run/datasheets/index.html
mikesmith вне форума  
Непрочитано 27.03.2014, 19:10  
mikesmith
Администратор
 
Аватар для mikesmith
 
Регистрация: 10.05.2003
Сообщений: 2,650
Сказал спасибо: 496
Сказали Спасибо 2,637 раз(а) в 581 сообщении(ях)
mikesmith на пути к лучшему
По умолчанию Re: Увеличить частоту ШИМ'а Arduino

Решение нашел на одном забугорном сайте, делюсь с вами:

Частота ШИМ'а на ногах 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


Т.е. я получил частоту ШИМ'а на 9, 10, 11 и 3 ногах около 4кГц путем добавления в секцию инциализации двух строк:

Код:
void setup()
{ 
TCCR1B = TCCR1B & 0b11111000 | 0x02;
TCCR2B = TCCR2B & 0b11111000 | 0x02;
...
...
Пользуйтесь на здоровье, если пригодится. А ваще, Ардуина - зло))
__________________
C уважением, Михаил
Ищите даташиты на KAZUS.RUN: http://kazus.run/datasheets/index.html
mikesmith вне форума  
Эти 3 пользователя(ей) сказали Спасибо mikesmith за это сообщение:
Alex9797 (28.03.2014), Evg_55 (13.04.2015), tele_puz (28.03.2014)
Непрочитано 27.03.2014, 23:22  
ut1wpr
Почётный гражданин KAZUS.RUN
 
Аватар для ut1wpr
 
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,613
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
ut1wpr на пути к лучшему
По умолчанию Re: Увеличить частоту ШИМ'а Arduino

Сообщение от mikesmith Посмотреть сообщение
Пользуйтесь на здоровье, если пригодится. А ваще, Ардуина - зло))
Таки да. С ужасом думаю, что было бы, если бы не произошло:
Цитата:
Решение нашел на одном забугорном сайте
Потеряли бы еще одного "программиста". А может и не одного. А может и к лучшему...
__________________
С уважением,
Vic / ut1wpr
ut1wpr вне форума  
Сказали "Спасибо" ut1wpr
ForcePoint (07.03.2017)
Непрочитано 27.03.2014, 23:46  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,821
Сказал спасибо: 919
Сказали Спасибо 4,289 раз(а) в 2,570 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: Увеличить частоту ШИМ'а Arduino

Лично я вообще не понимаю, как оно работает.
Easyrider83 вне форума  
Непрочитано 28.03.2014, 00:27  
ut1wpr
Почётный гражданин KAZUS.RUN
 
Аватар для ut1wpr
 
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,613
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
ut1wpr на пути к лучшему
По умолчанию Re: Увеличить частоту ШИМ'а Arduino

Сообщение от Easyrider83 Посмотреть сообщение
Лично я вообще не понимаю, как оно работает.
Тихо-тихо, почти бесшумно.
Базовые функции написаны на С++ и надежно спрятаны от криворуких стаАртеров, дабы не навредили. Функции и соглашения по их вызовам сведены в некий могучий хелп, сам по себе затрудняющий восприятие и понимание того, как ОНО работает. Типа "а нафига вам это знать". Вот вам "analog read()" - и рИдайте на здоровье. А то, что за этим стоит инициализация АЦП, настройка порта, выбор опоры - ну зачем вам это? Ройтесь себе на здоровье в инете, ищите нужные вам .ino Одним словом - вы дебил и не лезьте туда, где вам не место! А если вы такой умный - нафига вам эта Дуринда, пишите свое и с нуля
Впрочем, каждому свое...
__________________
С уважением,
Vic / ut1wpr
ut1wpr вне форума  
Эти 7 пользователя(ей) сказали Спасибо ut1wpr за это сообщение:
-vitalik- (23.12.2015), ArtemKolesnikov (23.04.2017), b_raven (10.03.2017), Easyrider83 (28.03.2014), ForcePoint (07.03.2017), krug_vv (08.03.2017), mikesmith (15.07.2018)
Непрочитано 28.03.2014, 08:18  
niXto
Почётный гражданин KAZUS.RUN
 
Аватар для niXto
 
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,026
Сказал спасибо: 60
Сказали Спасибо 3,941 раз(а) в 2,302 сообщении(ях)
niXto на пути к лучшему
По умолчанию Re: Увеличить частоту ШИМ'а Arduino

Вообще-то Ардуино позволяет делать Сишные и даже (о, ужас!) ассемблерные вставки. Которые легко сделать, почитав даташит на контроллер. Как во втором посте - производится прямая запись в регистры контроллера. Никто не запрещает точно так же модифицировать регистры АЦП, например
niXto вне форума  
Эти 4 пользователя(ей) сказали Спасибо niXto за это сообщение:
-vitalik- (06.08.2018), majorka65 (08.03.2017), mike-y-k (09.03.2017), worke (23.12.2015)
Непрочитано 28.03.2014, 08:51  
makakus
Почётный гражданин KAZUS.RUN
 
Регистрация: 08.10.2007
Сообщений: 2,758
Сказал спасибо: 1,100
Сказали Спасибо 1,033 раз(а) в 568 сообщении(ях)
makakus на пути к лучшему
По умолчанию Re: Увеличить частоту ШИМ'а Arduino

То есть возможности таймера 4МГц - 12Гц добрые ардуинщики свели к 480-490Гц? Здорово

Сообщение от ut1wpr Посмотреть сообщение
Функции и соглашения по их вызовам сведены в некий могучий хелп, сам по себе затрудняющий восприятие и понимание того, как ОНО работает. Типа "а нафига вам это знать". Вот вам "analog read()" - и рИдайте на здоровье.
В своё время Дейкстра написал "человека, программирующего на Бейсике, научить программированию невозможно"


Сообщение от niXto Посмотреть сообщение
роизводится прямая запись в регистры контроллера. Никто не запрещает точно так же модифицировать регистры АЦП, например
Никто. Идеология запрещает. Modus vivendi, как говорится. Невозможно в современном городе спилить дерево, нарубить из него дров, зарезать барана и на костре приготовить много вкусного. То есть и деревья там пилятся регулярно, и баранина есть но - не так. Не ассемблер.
makakus вне форума  
Сказали "Спасибо" makakus
ArtemKolesnikov (23.04.2017)
Непрочитано 28.03.2014, 08:52  
tele_puz
Прописка
 
Аватар для tele_puz
 
Регистрация: 13.03.2007
Сообщений: 135
Сказал спасибо: 7
Сказали Спасибо 37 раз(а) в 22 сообщении(ях)
tele_puz на пути к лучшему
По умолчанию Re: Увеличить частоту ШИМ'а Arduino

Спасибо! Как раз это нужно было.
Вообще то Ардуино - не зло, а отличная платформа! И все библиотеки не "спрятаны", а можешь их корежить, как захочется.
Я, кстати, сам правил библиотеку енкодера, там ошибка была, приводящая к бесконечному ожиданию.
tele_puz вне форума  
Непрочитано 28.03.2014, 12:09  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,821
Сказал спасибо: 919
Сказали Спасибо 4,289 раз(а) в 2,570 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: Увеличить частоту ШИМ'а Arduino

Сообщение от wostrman Посмотреть сообщение
А Вы вообще-то ХАМ, «почетный» гражданин Казуса!!!
Учитывая, что Виктор - чемпион Украины по пятиборью, не советую развивать эту тему.
Easyrider83 вне форума  
Непрочитано 28.03.2014, 18:52  
ut1wpr
Почётный гражданин KAZUS.RUN
 
Аватар для ut1wpr
 
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,613
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
ut1wpr на пути к лучшему
По умолчанию Re: Увеличить частоту ШИМ'а Arduino

Сообщение от wostrman Посмотреть сообщение
А Вы вообще-то ХАМ, «почетный» гражданин Казуса!!!
Никогда и нигде я не переходил на личности. Таким образом строятся фразы во многих литературных произведениях. Лично вас у меня не было даже и мысли задевать. Однако, в любом случае приношу извинения. Не все дружны с литературой. Или просто порядком подзабыли, отсюда и такие казусы.
__________________
С уважением,
Vic / ut1wpr
ut1wpr вне форума  
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как прошивать Arduino mini nikola-7 Песочница (вопросы новичков) 5 10.03.2014 14:15
Проблема с Arduino Motor Shield domka Песочница (вопросы новичков) 6 29.07.2013 11:56
Алгоритм программного шима для светодиодов whoim AVR 20 30.06.2013 18:00
Из ШИМа - аналог. vo1 Микроконтроллеры, АЦП, память и т.д 17 24.12.2009 14:54


Часовой пояс GMT +4, время: 04:24.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.