#include "pitches.h"
const uint8_t buzzerPin = 9;
const int iterFrequency = 62500;
const float freq = 261.63;
const int iterPeriod = 128;
volatile unsigned long iter = 0;
int period;
bool buzzerState = false;
void setup() {
pinMode(buzzerPin, OUTPUT);
period = round(1e6 / freq / iterPeriod);
noInterrupts();
TCCR1A = 0;
TCCR1B = 0;
TCNT1 = 0;
OCR1A = 249;
TCCR1B |= (1 << WGM12);
TCCR1B |= (1 << CS11);
TIMSK1 |= (1 << OCIE1A);
interrupts();
}
void loop() {
}
ISR(TIMER1_COMPA_vect) {
iter++;
if (iter % period == 0 || iter % period == round(period / 2)) {
buzzerState = !buzzerState;
digitalWrite(buzzerPin, buzzerState);
}
}