I want to use timer 0 to generate a rectangular signal on OC0A (D11) without the use of Arduino specific functions (that use timers for themselves). When I toggle D11 manually using a loop, I hear a sound in the connected piezo, but with my sample code, I don't hear something:
#define ALARM_PIN 11
void setup() {
digitalWrite(ALARM_PIN, LOW);
pinMode(ALARM_PIN, OUTPUT);
noInterrupts();
OCR0A = 60;
// Toggle OC0A on compare match
TCCR0A = (0 << COM0A1)
| (1 << COM0A0)
// CTC mode
| (1 << WGM01)
| (0 << WGM00);
// prescaler = 256
TCCR0B = (0 << WGM02)
| (1 << CS02);
}
void loop() {
}
Any idea, what could be wrong?
Update
I've played with it a little bit more:
#define LED_PIN 9
void setup() {
pinMode(LED_PIN, OUTPUT);
TCCR0B = (1 << CS02);
}
void loop() {
digitalWrite(LED_PIN, TCNT0 > 250);
}
This causes my LED to light very dim, so the timer is running up to 255. But as soon as I set TCCR0A, nothing is lighting up:
#define LED_PIN 9
void setup() {
pinMode(LED_PIN, OUTPUT);
OCR0A = 60;
TCCR0A = (1 << WGM01);
TCCR0B = (1 << CS02);
}
void loop() {
digitalWrite(LED_PIN, TCNT0 > 0);
}