Использование библиотеки TimerThree

max506
Offline
Зарегистрирован: 04.08.2016

Имеется контроллер 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() {
    
}

 

arduinec
Offline
Зарегистрирован: 01.09.2015

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
 

max506
Offline
Зарегистрирован: 04.08.2016

arduinec пишет:

pins 2, 3 and 5 controlled by timer 3

Ну это я предполагал, что использование таймера 3 повлияло как-то на 3-й пин. Но тембр звука почему меняется? Можно ли этого избежать, настроив таймер 3 непосредственно через регистры?