Hallo ich habe ein Problem und zwar schaffe ich es nicht 3 Timer bei einem Atmega 16 zu erstellen. Hier mein Code:
1 | void Timer_Init(void) { |
2 | |
3 | //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\\
|
4 | // Timer 0 Aktivieren
|
5 | // Vorteiler: 64
|
6 | // Herz: 488 Hz
|
7 | // 800000/64/256 = 488.28Hz
|
8 | //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\\
|
9 | |
10 | TCCR0 = (1 << CS01) | (1 << CS00); |
11 | TIMSK |= (1<<TOIE0); |
12 | |
13 | //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\\
|
14 | // Timer 1 Aktivieren
|
15 | // Vorteiler: 0
|
16 | // Herz: 100 Hz
|
17 | // 800000/0/256/T_PWM = 100Hz
|
18 | //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\\
|
19 | |
20 | TCCR1B = 1; |
21 | TIMSK |= (1<<OCIE1A); |
22 | |
23 | //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\\
|
24 | // Timer 2 Aktivieren
|
25 | // Vorteiler: 256
|
26 | // Herz: 100 Hz
|
27 | // 800000/0/256/T_PWM = 100Hz
|
28 | //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\\
|
29 | |
30 | TCCR2 = (1 << CS22) | (1<< CS21); |
31 | TIMSK |= (1<<TOIE2); |
32 | |
33 | sei(); |
34 | }
|
35 | |
36 | |
37 | Hier die Interupts |
38 | |
39 | |
40 | //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\\
|
41 | // Interupt Timer0 (ABLÄUFE) \\
|
42 | //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\\
|
43 | |
44 | ISR(TIMER0_OVF_vect){ |
45 | PORTC ^= 0xff; |
46 | }
|
47 | |
48 | //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\\
|
49 | // Interupt Timer1 (PWM) \\
|
50 | //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\\
|
51 | |
52 | ISR(TIMER1_COMPA_vect){ |
53 | static uint8_t pwm_cnt=0; |
54 | uint8_t tmp=0; |
55 | |
56 | OCR1A += (uint16_t)T_PWM; |
57 | if (pwm_settings1 > pwm_cnt){ |
58 | PORTB = 0xff; |
59 | }else{ |
60 | PORTB = 0x00; |
61 | }
|
62 | |
63 | // PWMs aktualisieren
|
64 | if (pwm_cnt==(uint8_t)(PWM_STEPS-1)) |
65 | pwm_cnt=0; |
66 | else
|
67 | pwm_cnt++; |
68 | }
|
69 | |
70 | //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\\
|
71 | // Interupt Timer2 (Blinken) \\
|
72 | //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\\
|
73 | |
74 | ISR(TIMER2_OVF_vect){ |
75 | Uart_Send("INTERUPT TIMER2\r\n"); |
76 | }
|
MIr Freundlichen Grüßen Rene3233