Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
27.03.2014, 19:01
|
|
Администратор
Регистрация: 10.05.2003
Сообщений: 1,739
Сказал спасибо: 497
Сказали Спасибо 2,686 раз(а) в 595 сообщении(ях)
|
Увеличить частоту ШИМ'а Arduino
НЕ секрет, что встроенная функция analogWrite - организует на ножке широтноимпульсную модуляцию с частотой около 480-490Гц (при штатных 16Мгц). Как увеличить частоту ШИМа до 4-5 кГц?
|
|
|
|
27.03.2014, 19:10
|
|
Администратор
Регистрация: 10.05.2003
Сообщений: 1,739
Сказал спасибо: 497
Сказали Спасибо 2,686 раз(а) в 595 сообщении(ях)
|
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;
...
... |
Пользуйтесь на здоровье, если пригодится. А ваще, Ардуина - зло))
|
|
|
Эти 3 пользователя(ей) сказали Спасибо mikesmith за это сообщение:
|
|
|
27.03.2014, 23:22
|
|
Почётный гражданин KAZUS.RU
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,616
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
|
Re: Увеличить частоту ШИМ'а Arduino
Сообщение от mikesmith
|
Пользуйтесь на здоровье, если пригодится. А ваще, Ардуина - зло))
|
Таки да. С ужасом думаю, что было бы, если бы не произошло:
Цитата:
|
Решение нашел на одном забугорном сайте
|
Потеряли бы еще одного "программиста". А может и не одного. А может и к лучшему...
__________________
С уважением,
Vic / ut1wpr
|
|
|
|
27.03.2014, 23:46
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 918
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: Увеличить частоту ШИМ'а Arduino
Лично я вообще не понимаю, как оно работает.
|
|
|
|
28.03.2014, 00:27
|
|
Почётный гражданин KAZUS.RU
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,616
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
|
Re: Увеличить частоту ШИМ'а Arduino
Сообщение от Easyrider83
|
Лично я вообще не понимаю, как оно работает.
|
Тихо-тихо, почти бесшумно.
Базовые функции написаны на С++ и надежно спрятаны от криворуких стаАртеров, дабы не навредили. Функции и соглашения по их вызовам сведены в некий могучий хелп, сам по себе затрудняющий восприятие и понимание того, как ОНО работает. Типа "а нафига вам это знать". Вот вам "analog read()" - и рИдайте на здоровье. А то, что за этим стоит инициализация АЦП, настройка порта, выбор опоры - ну зачем вам это? Ройтесь себе на здоровье в инете, ищите нужные вам .ino Одним словом - вы дебил и не лезьте туда, где вам не место! А если вы такой умный - нафига вам эта Дуринда, пишите свое и с нуля
Впрочем, каждому свое...
__________________
С уважением,
Vic / ut1wpr
|
|
|
Эти 7 пользователя(ей) сказали Спасибо ut1wpr за это сообщение:
|
|
|
28.03.2014, 08:18
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
|
Re: Увеличить частоту ШИМ'а Arduino
Вообще-то Ардуино позволяет делать Сишные и даже (о, ужас!) ассемблерные вставки. Которые легко сделать, почитав даташит на контроллер. Как во втором посте - производится прямая запись в регистры контроллера. Никто не запрещает точно так же модифицировать регистры АЦП, например
|
|
|
Эти 4 пользователя(ей) сказали Спасибо niXto за это сообщение:
|
|
|
28.03.2014, 08:51
|
|
Почётный гражданин KAZUS.RU
Регистрация: 08.10.2007
Сообщений: 2,760
Сказал спасибо: 1,106
Сказали Спасибо 1,037 раз(а) в 569 сообщении(ях)
|
Re: Увеличить частоту ШИМ'а Arduino
То есть возможности таймера 4МГц - 12Гц добрые ардуинщики свели к 480-490Гц? Здорово
Сообщение от ut1wpr
|
Функции и соглашения по их вызовам сведены в некий могучий хелп, сам по себе затрудняющий восприятие и понимание того, как ОНО работает. Типа "а нафига вам это знать". Вот вам "analog read()" - и рИдайте на здоровье.
|
В своё время Дейкстра написал "человека, программирующего на Бейсике, научить программированию невозможно"
Сообщение от niXto
|
роизводится прямая запись в регистры контроллера. Никто не запрещает точно так же модифицировать регистры АЦП, например
|
Никто. Идеология запрещает. Modus vivendi, как говорится. Невозможно в современном городе спилить дерево, нарубить из него дров, зарезать барана и на костре приготовить много вкусного. То есть и деревья там пилятся регулярно, и баранина есть но - не так. Не ассемблер.
|
|
|
Сказали "Спасибо" makakus
|
|
|
28.03.2014, 08:52
|
|
Прописка
Регистрация: 13.03.2007
Сообщений: 135
Сказал спасибо: 7
Сказали Спасибо 37 раз(а) в 22 сообщении(ях)
|
Re: Увеличить частоту ШИМ'а Arduino
Спасибо! Как раз это нужно было.
Вообще то Ардуино - не зло, а отличная платформа! И все библиотеки не "спрятаны", а можешь их корежить, как захочется.
Я, кстати, сам правил библиотеку енкодера, там ошибка была, приводящая к бесконечному ожиданию.
|
|
|
|
28.03.2014, 12:09
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 918
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: Увеличить частоту ШИМ'а Arduino
|
|
|
|
28.03.2014, 18:52
|
|
Почётный гражданин KAZUS.RU
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,616
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
|
Re: Увеличить частоту ШИМ'а Arduino
__________________
С уважением,
Vic / ut1wpr
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 22:29.
|
|