Изучаем детально работу ШИМ и его настройки на плате Arduino Nano в среде программирования Arduino IDE.

Страница на этапе разработки

Мы уже с Вами много раз использовали ШИМ для работы наших устройств в среде программирования Arduino IDE. При этом выходная частота составляла по умолчанию 490,20Гц, — но если нам нам надо изменить частоту нам нужно будет самостоятельно написать инициализацию нашего ШИМ. Так как Atmega328 улучшенная модель Atmega8, то и названия большинство регистров совпадает. В нашем примере мы настроем две ножки (D3 и D11) на разные частоты работы и посмотрим на осциллографе при одинаковой скважности соответствие установленной частоты. При этом на одной ножке у нас будет частота которая устанавливается в среде программирования Arduino IDE по умолчанию, а на второй ножке мы будем менять частоту нажатием кнопки.
Но для начала мы напишем программу используя С++ и сделаем замер частоты на наших ножках для проверки настроенной частоты по умолчанию.
Программный код:

Проснувшись однажды утром после беспокойного сна, Грегор Замза обнаружил, что он у себя в постели превратился в страшное насекомое.

Теперь мы можем написать свою инициализацию ШИМ и посмотреть, что у нас выйдет.
Программный код:

int t=0;
void setup() {
// put your setup code here, to run once:

pinMode(3, OUTPUT);
pinMode(11, OUTPUT);

/*TCCR2A = 01010011;
TCCR2B = 00001011;
OCR2A = 180;
OCR2B = 50;*/

// Контакты D3 и D11
TCCR2A = 0b00000011 ; // быстрый ШИМ
TCCR2B = 0b00000001 ; // х1

//CS2 Divisor Frequency
//001  1           31372.55
//010  8           3921.16
//011  32         980.39
//100  64         490.20 <—DEFAULT
//101  128       245.10
//110  256      122.55
//111  1024    30.64
}

void loop() {
if(t>= 254)t=0;
t++;
analogWrite(3, t);
analogWrite(11, t);
_delay_ms(100);

}