Timer Mega 32

OP #2228630
Lesenswert?

Ich habe hier ein Problem mit dem Timer (Mega32).
Obwohl ich meines Erachtens den Timer stoppe, befinden sich am Ausgang 
von OC2 (PD7) immer noch Rechteckimpulse. Auch ein eventuelles  löschen 
von CS20 bringt kein Erfolg. Der Timer stoppt dann zwar aber mit dem 
Ergebnis, dass der Ausgang OC2 mal sporadisch auf high oder low liegt.
Den vorliegenden Code benutze ich zum lesen von WAVE-Dateien von einer 
SD-Karte.
1
void StartTimer(void)
2
{
3
 // CTC Mode
4
 TCCR1A = (0<<COM1A1) | (0<<COM1A0) | (0<<WGM11) | (0<<WGM10);
5
 TCCR1B = (0<<WGM13) | (1<<WGM12) | (0<<CS12) | (1<<CS11) | (0<<CS10);
6
 OCR1A = TIMER1_OCR_VALUE;
7

8

9

10

11
 // Fast PWM, no prescaler 
12
 TCCR2 = (1<<COM21) | (1<<COM20) | (1<<WGM21) | (1<<WGM20) | (1<<CS20);
13
 DDRD |= (1<<PD7);
14

15

16
TIMSK |= (1<<OCIE1A);
17
TIFR  |= (1<<OCF1A); 
18

19
}
20

21
void StopTimer(void)
22
{
23

24
  TIMSK &= ~(1<<OCIE1A);
25
  
26
}
Gast #2228676
Lesenswert?

Das Stimmt soweit auch, dass der Ausgang sporadisch auf High oder Low 
ist, ist Normal der Timer wird ja gestoppt. Den Ausgang musst schon 
selbst auf Low setzten oder den Timer erst stoppen wenn der Ausgang 
gerade auf Low ist.

Aber was willst den genau machen mit der Funktion?

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