Использование библиотеки TimerThree
- Войдите на сайт для отправки комментариев
Ср, 17/08/2016 - 10:17
Имеется контроллер Arduino Mega 2560 R3.
Необходимо:
1. Вызывать процедуру по прерыванию таймера 3 (с частотой 50Гц, т.е. в каждый полупериод или 100 раз в секунду)
2. Использовать пьезо зуммер на pin3.
Проблема в том, что после вызова функций библиотеки TimerThree меняется частота звука. До вызова все нормально. В чем может быть проблема?
Скетч ниже
#include "TimerThree.h" const int soundPin = 3; void setup() { analogWrite(soundPin, 50); delay(500); Timer3.initialize(10000); // прерывание вызывается каждый полупериод колебания тока в сети 50Гц Timer3.attachInterrupt(int_func); analogWrite(soundPin, 0); delay(500); } void int_func() { // место для пользовательского кода } void loop() { }
On Arduino Mega we have 6 timers and 15 PWM outputs:
pins 4 and 13 controlled by timer0
pins 11 and 12 controlled by timer1
pins 9 and 10 controlled by timer2
pins 2, 3 and 5 controlled by timer 3
pins 6, 7 and 8 controlled by timer 4
pins 46, 45 and 44 controlled by timer 5
pins 2, 3 and 5 controlled by timer 3
Ну это я предполагал, что использование таймера 3 повлияло как-то на 3-й пин. Но тембр звука почему меняется? Можно ли этого избежать, настроив таймер 3 непосредственно через регистры?