Пт сен 25, 2020 17:42:43
Пт сен 25, 2020 23:55:53
Сб сен 26, 2020 00:27:23
Сб сен 26, 2020 10:00:37
Сб сен 26, 2020 10:44:50
Сб сен 26, 2020 11:57:32
Вс сен 27, 2020 23:32:01
А зачем резистор с затвора на сток? То есть в случае чего он будет постоянно открыт? Странно.
ШИМ 15кГц ??? Ну-ну...
Morgen.Kot, 16-битный PWM нужен. Я именно по этой причине отказался от Arduino и сделал это на STM8S103F3, так как делалось для двух RGB лент и нужны были шесть PWM каналов.
Пн сен 28, 2020 10:23:21
Пн сен 28, 2020 10:49:24
Morgen.Kot писал(а):Действительно, увеличил разрядность ШИМ до 10-ти бит (максимум, что можно выжать с AVR), и стало заметно лучше.
Morgen.Kot писал(а):Проблема резкого скачка от 254 к 255 была вот в чем:
1. Режим ШИМ на самом деле был 9 бит, а не 8 - я сначала сам запутался, а потом и вас ввел в заблуждение
2. Само по себе это обстоятельство могло бы ничего не означать, если бы не баг в стандартной библиотеке Arduino: при установке ШИМ = 255 она принудительно выдает на выход логическую единицу, при этом не важно, какая реально была установлена разрядность ШИМ, потому что стандартная библиотека ориентирована на ШИМ 8 бит.
Morgen.Kot писал(а):Можно как-то пояснить свою мысль?
Пн сен 28, 2020 12:43:12
Не максимум. У atmega328p есть 16-битный Timer1, которым можно управлять и выдавать настоящий 16-битный ШИМ.
– Four PWM Channels with Programmable Resolution from 2 to 16 Bits
– Six PWM Channels for High Speed Operation, with Programmable Resolution from
2 to 11 Bits
А чем вы меняли разрядность ШИМ, если в ардуино оно тупо 8 бит всегда?
https://www.arduino.cc/reference/en/lan ... alogwrite/
Да и в 10-битном режиме, с тактовой в 16 МГц вы 3.9 кГц получите, а никак не 15.
Пн сен 28, 2020 13:28:21
Согласен, но на этот таймер, как я понял, завязаны функции времени из стандартной библиотеки, и манипуляции с его настройками приведут к некорректной работе этих функций. Для моих целей это не подходит.
Вы же сами двумя строками выше привели ссылку на библиотеку, которая позволяет это реализовать
В интернете масса статей на эту тему, например: http://mypractic.ru/urok-37-shirotno-im ... duino.html
Честно сказать, не силен в теоретической части, но практика говорит об обратном. Как я уже писал выше, в режиме 4 кГц писк из БП слышно отчетливо. Ради интереса я нашел в интернете генератор звукового сигнала заданной частоты, вбил туда 4 кГц, и услышал тот же звук, что из БП. При этом режим 15 кГц слышно только вплотную к БП, 31 кГц не слышно вообще по понятным причинам.
Вт сен 29, 2020 21:50:48
Но если вы будете ШИМ использовать только через библиотеку TimerOne - никаких проблем не будет и вы получите нормальные функции нормального ШИМ с полной разрядностью до 16 бит .
О которой вы не знали. )
Статья - херня, потому что разрешение меняется, но при этом продолжает использоватсья стандартная analogWrite(), с ситуацией при установке там 255 вы уже сами напоролись и прям в 1ом комментарии там это написано.
Но для LED ленты вам с головой хватит и куда меньшей частоты. Вы же не на дроссель подаете, а на полевик. Пищать будет нечему )
Вт сен 29, 2020 22:19:49
Прочитал статью по ссылке - пока что не увидел для себя преимуществ в использовании библиотеки.
как я уже сказал, пока что не вижу преимуществ относительно установки режима работы таймера с помощью записи в регистры МК.
Согласен, баг с 255
В данный момент я использую Timer1 и Timer3 в режиме 10 бит и на частоте 15.625 кГц - меня это вполне устраивает. Проблема лишь в том, что, судя по той документации, что мне на данный момент удалось найти, эти два таймера обеспечивают 3 PWM канала, а мне нужно 4. В моем МК есть еще один Timer4 (Timer0 не рассматриваем - он 8-ми битный, и на него завязаны функции времени), разрядность которого меня устраивает, но на нем завязана работа с USB, и я пока не понял, как управлять его режимами работы, да и смогу ли я вообще сконфигурировать его таким образом, чтобы получить нужный ШИМ сигнал и сохранить живым USB порт.
И все же БП почему-то пищит при ШИМ на 4 кГц.
Вт сен 29, 2020 22:32:31
Еще раз - вы уже напоролись на проблемы analogWrite(255).
Чтобы настраивать периферию напрямую регистрами Ардуино, нужно хорошо понимать, что там в ардуино происходит. Не в самом МК, а именно ядре адруины. А вы пока это понимаете очень поверхностно.
Вообще-то в БП дроссель есть. Он и пищит.
Вы же не на дроссель подаете, а на полевик. Пищать будет нечему )
Вт сен 29, 2020 23:50:37
У Timer3 на 32u4 тоже 2 канала, он, судя по ДШ полностью идентичен Timer1. Раздел под них даже один и тот же Timer1/Timer3.
Ну я в курсе. Это был ответ на ваши слова:
Ср сен 30, 2020 07:50:39
Ср окт 07, 2020 21:46:48
Лучше выбрать что-то одно - или писать полностью Arduino-way с использованием библиотек, по-возможности максимально избегая прямой записи в регистры.
Глянул внимательнее - каналов то вообще 3. Только у таймера3 выведен только А, а остальные 2 на пины не выведены. Но вам надо 4 - вот они 4 и есть. 3 у таймера1 и 1 у таймера3.
Не понял. При чем здесь писк дросселя в БП и ваш пост, где вы собираетесь ШИМить mosfet + led?
PS: http://microsin.net/programming/avr/fas ... nardo.html
Ср окт 07, 2020 22:46:50
Ср окт 07, 2020 23:20:25
Чт окт 08, 2020 09:08:43