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.