m328 timerproblem

Gast #4665639
Lesenswert?
• ▲
▼
Ich habe zwei Timer:

1
#define ti_prescaler_clr     ((1 << CS02)|(1 << CS01)|(1 << CS00))
2

3
#define ti_prescaler_1     (1 << CS00)
4
#define ti_prescaler_8     (1 << CS01)
5
#define ti_prescaler_64    (1 << CS01)|(1 << CS00)
6
#define ti_prescaler_256   (1 << CS02)
7
#define ti_prescaler_1024  (1 << CS02)|(1 << CS00)
8

9
void init_timer0_pwm (void){
10

11
  // Start  timers.
12
TCCR0B |= ti_prescaler_1024;//1
13

14
  //Sets  timers in inverted pair mode.
15
TCCR0A =0
16
    | (1 << COM0A1) 
17
//    | (1 << COM0A0) 
18
    | (1 << COM0B1) 
19
    | (1 << COM0B0)
20
    | (1 << WGM00)
21
//    | (1 << WGM01)
22
  ;
23
  
24
 
25
  OCR0A =  30;//d6
26
  OCR0B =  10;//d5
27

28

29
  DDRD |= 1<<6|1<<5;
30
  }
31

32

33

34
  void init_timer2_ctc (void){
35
   TCCR2B |= ti_prescaler_1024;
36
  TCCR2B |= (1<<WGM22);
37
  OCR2A = 100;
38
  TIMSK2 |= (1<<OCIE2A);
39
  sei();
40
  }
41

42

43
v u32 test;
44
ISR(TIMER2_COMPA_vect)
45
{
46
//  TCNT0=0;
47
        OCR0A=10;
48
  test++;
49
 
50
}


Timer 2 läuft im ctc-mode bis 100. Dann soll pwm-timer0 mit 
TCNT0=0;zurückgesetzt werden, so dass er auch immer bis 100 (statt 255) 
läuft.


Funktioniert leider nicht. Setzt man TCNT0 hört timer0 einfach auf.


Warum?

Danke für jede Unterstützung.

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