Piezo an PWM Pausenproblem

OP #2216627
Lesenswert?

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
  }
Gast #2217070
Lesenswert?

Ich habe jetzt nicht nachgesehen, in welchem Modus Du Timer3 betreibst, 
aber aus dem Bauch heraus:
Wenn der count von Timer 3 schon jenseits der 33 ist wenn du OCR3A auf 
33 setzt, dauert es bis der timer ueberlaeuft bevor wieder etwas am 
Ausgangspin passiert. Probier mal
1
TCNT3 = 0;
2
OCR3A = 33;

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren