Clear Timer on Compare Match (CTC) funktioniert nicht - Atmega88PA

Gast #2983094
Lesenswert?
• ▲
▼
Hallo,

ich versuche mit einem Atmega88PA einen Ton variabler Frequenz zu 
erzeugen und lasse ihn daszu einen Pin toggeln, an dem ein Lautsprecher 
hängt.

Atmega wird mit dem RC-Oszi bei 8MHz betrieben.

Problem: Die Frequenz ändert sich sich trotz Änderung des 
CompareMatch-Wertes nicht! :-(
Ich erhalte konstant etwa 242Hz an PORTB.1, was einem CTC-Wert von ca. 
255 entspricht (bzw. einem Overflow).
Eine Änderung des Prescalers führt zu einer Änderung der 
"Toggle"-Frequenz.

Benutzt wird Timer2, der das eigentlich können sollte.
Beim Timer1 funktioniert es.

bin um jede Hilfe dankbar.
1
program Timer2test;
2

3
procedure EnableTimer2();
4
begin
5
     WGM11_bit :=1; //CTC-Mode
6
     OCR2A := 10;  //counting value
7
     CS22_bit :=1;//8MHz /64 = 125KHz
8
     CS21_bit :=0;
9
     CS20_bit :=0;
10
     OCIE2A_bit :=1;  //Enable compare match interrupt
11
end;
12

13
procedure Timer2CompareMatch_ISR(); org IVT_ADDR_TIMER2_COMPA;
14
begin
15
     PORTB.1 := not PORTB.1;
16
end;
17

18
begin
19
  DDRB :=0xFF; //Outputs
20
  SREG_I_bit :=1; //global INT   enabled
21
  EnableTimer2();
22
end.


TNX
aXum

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