ШИМ на прерываниях
- Войдите на сайт для отправки комментариев
Ср, 27/02/2019 - 14:22
Добрый день! Подскажите, как на UNO сделать шим с частотой 100 кГц (±10%) с 65536 уровнями скважности на любой цифровой пин? Я если честно никак не пойму как работают регистры по типу "TCCR2B=0;", это выглядит очень сложно (особенно для того, кто не дружит с ардуино на постоянной основе)...в интернете полно уроков по программированию регистров, таймеров и прерываний, но все они не разжовывают детально как это работает.
Заранее спасибо!
Для этого надо, минимум, разогнать Ардуину до 0.1*65536*2=13107.2 МГц АКА 13.1 ГГц.
Для этого надо, минимум, разогнать Ардуину до 0.1*65536*2=13107.2 МГц АКА 13.1 ГГц.
Так и расскажите, как это сделать! А лучше ссылку на видео дайте! Вместо того, чтобы умничать и ЧСВ надувать :)))
Дело в том, что это уже работает у меня, на билиотеке PWM.h, там можно ставить любую частоту 0-2МГц и скважность до 65535, но оно работает тормознуто (при быстром изменении скважности по программе, ШИМ меняется не сразу, а с задержкой в секунду) и я подумал что возможно прямое программирование таймеров исправит эту проблему.
в интернете полно уроков по программированию регистров, таймеров и прерываний, но все они не разжовывают детально как это работает.
Заранее спасибо!
простите - но что вы хотите от нас? Если "куча уроков" в инете Вам не помогла - с чего Вы взяли. что кто-то тут сумеет обьяснить вам еще более детально? - похоже, ваша проблема не в недостаточной детальности уроков в инете. а в том, что у вас не хватает базы. чтобы их понять.
уже работает у меня, на билиотеке PWM.h, там можно ставить любую частоту 0-2МГц и скважность до 65535,
В том виде, как Вы тут пишете оно работать не может просто потому, в секунде 1000 миллисекунд и никак Вы в неё больше не впихнёте - т.е. так, как Вы описываете, оно не может работать по определению.
Видимо, Вы что-то не поняли и объясняете так, что мы не можем понять.
Можно замутить дизеринг, но это не для песочницы :)
фиг знает что там за PWM.h, но если там и можно выставить до 2 Мгц и до 16 бит разрядности, то всяко НЕ одновременно - одно в ущерб другому.
фиг знает что там за PWM.h, но если там и можно выставить до 2 Мгц и до 16 бит разрядности, то всяко НЕ одновременно - одно в ущерб другому.
скорее всего ТС имеет ввиду частоту дискретизации ШИМ. а не итоговую частоту сигнала
Вот эта библиотека - http://arduino.ru/forum/programmirovanie/pwm-biblioteka-shim-arduino
Именно ей я пользуюсь уже давно, используя 8 битный ШИМ 10-20кГц, и как бы проблем никогда не наблюдал. Сейчас я делаю Step-Down преобразователь и управлять им захотелось именно с Ардуины, для точности скважность в 65535 уровней идеальна. Сейчас оно работает, на дисплее я вижу уровень скважности в реалтайме, и если на дисплее оно поднимается плавно (допустим за 20 секунд весь диапазон), то с самого пина ШИМ дёрганый, когда запаздывает на секунду, а когда на 3. Именно это я хотел исправить таймерами.
PS: знаю, что для подобных вещей существуют контроллеры, но мне было интересно поуправлять всем процессом Ардуиной. Вопрос стоит - возможно это или нет.
ЗЫ: я не прошу за меня написать код. На форуме самый бесполезный человек - это тот, кто произносит фразу "иди гугли". В моём понимании форум - место где можно спросить совета или помощи. Не можешь помочь или объяснить - стоит пройти мимо, а если что то знаешь то достаточно немного подтолкнуть или объяснить. Повторюсь, я заранее искал информацию по программированию прерываний и всё что с этим связано - информация сложная, особенно когда держишь ардуино 3 раза в год, в основном описывается для уже знающих людей. Я изначально электронщик, и программировать никогда не умел, но любопытство берёт верх.
ЗЫ: я не прошу за меня написать код. На форуме самый бесполезный человек - это тот, кто произносит фразу "иди гугли". В моём понимании форум - место где можно спросить совета или помощи.
насчет форумов вы очень сильно ошибаетесь. И если будете настаивать. что знаете смысл этого форума лучше местных - лучше сразу идите в другое место.
"Иди гугли" говорят тому, кто задает вопросы, давно разжеванные в десятках статей. И не надо воспринимать это как "пнх" - это глупо. Надо просто пойти и погуглить. Но если человек настаивает, что Гуглить не хочет - простой совет поискать в поиске может перерасти и в пнх
1. Это в Вашем понимании. У других может быть другое понимание.
2. Этой фразой Вы нарушаете правило данного форума №1: "Не следует указывать старожилам, для чего нужен форум, и что на нем следует делать"
Постарайтесь, пожалуйста, впредь таких нарушений не допускать.
Можно замутить дизеринг
Ну, не настолько же! Там уже вообще одна грязь получится :)
2. Этой фразой Вы нарушаете правило данного форума №1: "Не следует указывать старожилам, для чего нужен форум, и что на нем следует делать
Т.е это "Я царь и бог программирования, что хочу то творю, говорю и делаю, а вы тупые низшие существа идите гуглить"? Это смешно, ибо понятие форума уничтожает само себя. Форум это место общения, где никто никого не выше (ну кроме админа), и как я сказал ранее, если человек не может ответить по существу и направляет "куда то там", то он и сгоревшего транзистора не стоит :) Раздутый уровень ЧСВ делает из людей бесполезных монстров. Можно ведь сразу: MacMillan, PWM с частотой 100кГц и 16 bit невозможен, даже с дизерингом, по такой то такой то причине. Или: "попробуй почитать такой то такой то материал, для самых зелёных". Если я нарушил кучу законодательных актов местного самоуправления, задел чьё то ЧСВ или принизил старожила, то можете меня забанить, это не принесёт мне никаких неудобств.
А если по делу. Почему автор этой библиотеки каким то чудом смог сделать 2Мгц и 16bit? Ну в плане если это невозможно как по частоте самой ардуины, так и с помощью дизеринга. Оно ведь работает, хоть и частично.
PWM с частотой 100кГц и 16 bit невозможен - то такой то причине.
вам по-моему уже ответили. Частоты не хватит.
MacMillan - к вопросу о посылах в гугл и о том. что новички читать не умеют. В конце ветки обсуждения библиотеки PWM.h , на которую Вы САМИ!!! дали ссылку - отличный материал от ЕвгенияП про генерацию ШИМ на прерываниях через регистры. И, кстати. там есть табличка с максимальными частотами ШИМ для каждой разрядности.
Ну как так -то? сами даете ссылку и сами ее не читали?
А если по делу. Почему автор этой библиотеки каким то чудом смог сделать 2Мгц и 16bit?
Да, не смог он, это Вам кажется.
Так вот и я ж про тоже, мля!
Вам приспичило задать глупый вопрос по 2МГц/16 бит и Вы "имеете право"! А если я хочу Вам сказать, что это бред, то почему-то
Почему это Вы можете писать бред, а мне стоит пройти мимо, если никто не выше?
И вообще, прекращайте, учить нас как нам жить, что писать и куда проходить, а то и мы Вам что-то подобное объясним.