Страница на этапе разработки
Мы уже с Вами много раз использовали ШИМ для работы наших устройств в среде программирования 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);
}