Партнерка на США и Канаду по недвижимости, выплаты в крипто
- 30% recurring commission
- Выплаты в USDT
- Вывод каждую неделю
- Комиссия до 5 лет за каждого referral
Введение Arduino PWM
Arduino Mega 2560 имеет 15 контактов, которые могут быть использованы для вывода ШИМ. Обычно вы делаете это с помощью команды analogWrite (), тем не менее, вы можете получить доступ к Atmel регистрирует непосредственно для более точного управления ШИМ на Arduino в том числе изменение типа, диапазон и частоту модуляции ШИМ ширины импульса.
Какие Arduino Mega контакты карта, в которой регистрируется в микроконтроллер ATMEL?
В следующей таблице приведены пин-код Arduino и соответствующий регистр для управления рабочего цикла
Arduino Pin | Register |
2 | OCR3B |
3 | OCR3C |
4 | OCR4C |
5 | OCR3A |
6 | OCR4A |
7 | OCR4B |
8 | OCR4C |
9 | OCR2B |
10 | OCR2A |
11 | OCR1A |
12 | OCR1B |
13 | OCR0A |
44 | OCR5C |
45 | OCR5B |
46 | OCR5A |
Как мы можем использовать эту информацию в регистрах PWM?
Очень просто, мы можем использовать регистр, чтобы установить цикл вместо команды analogWrite. Использование регистра немного быстрее.
Сначала мы устанавливаем пин для вывода и использовать analogWrite команду для инициализации PWM
pinMode(2,OUTPUT);
analogWrite(2,1);
//Теперь мы можем изменить цикл, используя только регистр
OCR3B = 128;
OCR3B = 4;
//И так далее
Как изменить частоту и диапазон Arduino PWM?
Одним из наиболее раздражающих аспектов нативных Arduino команд ШИМ, что частота ШИМ устанавливается в значение, которое слышно. Это очень раздражает, как она производит неприятный шум при работе постоянного тока или шаговыми двигателями с помощью ШИМ.
Мы должны смотреть на управляющие регистры счетчика таймера. Они управляют тип, диапазон и частоту ШИМ, генерируемого Arduino. Пожалуйста, смотрите раздел 17.9 в техническом описании. Об этом свидетельствует приведенный ниже код. Обратите внимание, что регистры управления 4, разделы А и Б будет эффект PWM на всех OCR4n пинах, смотри таблицу выше.
sbi(TCCR4B, CS40);
cbi(TCCR4B, CS41);
cbi(TCCR4B, CS42);
sbi(TCCR4B, WGM43);
sbi(TCCR4B, WGM42);
sbi(TCCR4A, WGM41);
cbi(TCCR4A, WGM40);
ICR4 = 400;
В 4 утверждения, относящиеся к битам WGM контролировать режим работы ШИМ. Мы установили ее в режим 14, который является быстрый ШИМ с IC используется в качестве максимума для счетчика. Биты CS относятся к выбору часов, смотрите таблицу 17-6 в техническом описании. Мы не выбран ни один, что предварительное деление частоты соответствует частоте 16МГц нативного тактового сигнала Arduino.
Фактическая частота ШИМ является функцией этих параметров и последняя запись, входной регистр захвата. Установка этого параметра 400 приводит к частоте ШИМ на Arduino Mega штифт 16МГц / 400 = 47304 Гц, или, возможно, в два раза меньше! Цикл затем изменяется путем установки OCR 4 A или B до некоторого значения от 0 до 400 .
Дальнейшее чтение технического описания объяснит все регистры и надеюсь, это будет указывать вам в правильном направлении.
Обратите внимание, что не все в режиме ШИМ доступны на всех частотах.


