hallo,
ich habe mal das folgende programm geschrieben:
1 | int main()
|
2 | {
|
3 |
|
4 | //prescaler einstellen
|
5 | TCCR0 |= (1 << CS01);
|
6 |
|
7 | TCCR1B |= (1 << CS11);
|
8 |
|
9 | TCCR2 |= (1 << CS21);
|
10 |
|
11 |
|
12 | //timer auf fast pwm mode stellen
|
13 | TCCR0 |= (1 << WGM00);
|
14 |
|
15 | TCCR1A |= (1 << WGM10);
|
16 | TCCR1B |= (1 << WGM12);
|
17 |
|
18 | TCCR2 |= (1 << WGM20);
|
19 |
|
20 |
|
21 | //compare output mode
|
22 | TCCR0 |= (1 << COM01);
|
23 |
|
24 | TCCR1A |= (1 << COM1A1) | (1 << COM1B1);
|
25 |
|
26 | TCCR2 |= (1 << COM21);
|
27 |
|
28 |
|
29 | //hiermit wird der gewünschte pwm wert eingestellt
|
30 | OCR0 = 0;
|
31 |
|
32 | OCR1A = 0;
|
33 |
|
34 | OCR2 = 0;
|
35 |
|
36 |
|
37 | //pins als ausgänge definieren
|
38 | // PD5 gehört zu timer1, PD7 zu timer2, PB3 gehört zu timer0
|
39 | DDRD |= (1 << PD5) | (1 << PD7);
|
40 | DDRB |= (1 << PB3);
|
41 |
|
42 | OCR0 = 0;
|
43 | OCR1A = 0; //UM DIESE STELLE HIER GEHT ES!!!
|
44 | OCR2 = 0;
|
und zwar weise ich dem OCR1A den wert 0 zu aber die led die am ausgang
angeschlossen ist ist nicht komplett aus, sondern glimmt noch ein
bisschen. zu erwähnen ist noch das es sich beim timer 1 um einen 16 bit
timer handelt. die anderen 2 timer gehen schön auf null wenn ich ihnen
den wert 0 zuweise. der controller ist ein atmega32. jetzt meine frage:
warum geht der 16 bit timer nicht komplett auf null, die 8 bit timer
aber schon? habe ich da irgendwas falsch eingestellt?