Hallo zusammen, ich habe einen Piezo-Summer an einem PWM Ausgang eines ATEMGA1280. Dieser soll als eine Art Alarm dienen. Es sollen zwei Frequenzen jede halbe Sekunden abwechselnd ertönen. Leider kommen aber immer kleine Pausen zwischen den Tönen, dann stimmt alles für 2 sec und dann kommen wieder Pausen... Woran liegt das? Mit Timer 2 erzeugt ich jede 1ms einen Interrupt. main.c
1 | TIMSK2 |= (1<<OCIE2A); |
2 | OCR2A = 124; //Jede 1ms ein Interrupt |
3 | TCNT2 = 0; |
4 | TCCR2B |= (1 << WGM22); |
5 | TCCR2B |= (1<<CS21) | (1<<CS20); |
6 | |
7 | TCCR3A |= (1 << COM3A0); |
8 | TCCR3B |= (1 << WGM12) | (1 << CS11) | (1 << CS10); |
9 | DDRE |= (1 << PE3); |
10 | |
11 | ISR(TIMER2_COMPA_vect) |
12 | {
|
13 | alarmmssec++; |
14 | if(alarmmssec == 500){ |
15 | OCR3A = 82; |
16 | }
|
17 | |
18 | if(alarmmssec == 1000){ |
19 | OCR3A = 33; |
20 | alarmmssec=0; |
21 | }
|