Я хочу использовать Arduino Due PWM с более высоким разрешением и частотой, чем по умолчанию. Я использую IDE 1.6.8, который был последним несколько недель назад, когда я его установил (я думаю, 1.6.9 может быть на пути). После поиска в Интернете и экспериментировать с доской и осциллографом, я получил следующие выводы:Arduino Due PWM
- Чтобы получить более высокие частоты ШИМ, один должен изменить соответствующие строки в variant.h. PWM, по-видимому, влияет на контакты 6, включенные в 9 включенных, TC - другие штыри, поддерживаемые PWM; Я думаю, это из-за того, какой контакт находится на таймере? Кажется, Micros(), Миллис() и т.д., не пострадали от модификации:
#define PWM_FREQUENCY 20000 // changed from 1000 #define TC_FREQUENCY 20000 // changed from 1000
- Как сказано в нескольких местах, то analogWriteResolution() функция Arduino сломана , или, по крайней мере, он сам по себе недостаточен для того, чтобы увеличить разрешение на ПРМ. Для analogWriteResolution() работать, как и ожидалось, один также необходимо изменить следующее variant.h:
#define PWM_MAX_DUTY_CYCLE 4095 // changed from 255 #define PWM_MIN_DUTY_CYCLE 0 #define PWM_RESOLUTION 12 // changed from 8
- кажется, что физическая маркировка на Arduino Due R3 -Е это стандарт, когда я купил свою доску в заблуждение: она написана на доске ЦИФРОВОЙ (PWM ~) и такой ~ присутствует только на контактах 3, 5, 6, 9, 10, 11, Я могу получить PWM на всех штырях 2, включенных в 13 включен.
Я размещаю этот контент здесь, так как мне потребовалось некоторое время, чтобы выяснить все, и проверить осциллограф и т. Д., И я не смог найти ответы на stackoverflow. У меня также есть два вопроса:
Это нормально (как это выглядит, как из тестов, которые я сделал), чтобы изменить ШИМ и частоты ТС? Может ли он взаимодействовать с другими основными функциями/библиотеками?
Есть ли причина для значений по умолчанию максимального рабочего цикла PWM и разрешения, кроме обратной совместимости?