Hier meine Funktion zum Initialisieren von 3PWMs auf einem ATmega8
alles auf 8bit "normales" PWM mit 1024er Prescaler und Startwert 0
1 | void pwm_initialisieren (void)
|
2 | {
|
3 |
|
4 | // PWM 1 + 2
|
5 | TCCR1B |= (1 << CS10);
|
6 | TCCR1B |= (1 << CS12);
|
7 | // Prescaler auf 1024 setzen
|
8 |
|
9 | TCCR1A |= (1 << WGM10);
|
10 | // Phase Correct PWM 8bit
|
11 |
|
12 | TCCR1A |= (1 << COM1A1);
|
13 | // PWM 1 Ausgabe-Modus setzen
|
14 |
|
15 | TCCR1A |= (1 << COM1B1);
|
16 | // PWM 2 Ausgabe-Modus setzen
|
17 |
|
18 | OCR1AL = 0x00;
|
19 | // PWM 1 Startwert auf 0 setzen
|
20 |
|
21 | OCR1BL = 0x00;
|
22 | // PWM 2 Startwert auf 0 setzen
|
23 |
|
24 |
|
25 | // PWM 3
|
26 | TCCR2 |= (1 << CS20);
|
27 | TCCR2 |= (1 << CS21);
|
28 | TCCR2 |= (1 << CS22);
|
29 | //Prescaler auf 1024 setzen
|
30 |
|
31 | TCCR2 |= (1 << WGM20);
|
32 | // Phase Correct PWM
|
33 |
|
34 | TCCR2 |= (1 << COM21);
|
35 | // PWM 3 Ausgabe-Modus setzen
|
36 |
|
37 | OCR2 = 0x00;
|
38 | // PWM 3 Startwert auf 0 setzen
|
39 | }
|
Der Compiler meckert nicht, auf dem µC testen kann ichs noch nicht,
weil der noch nicht bestellt ist :P
Passt das so? oder hab ich was vergessen / falsch?
Danke fürs Kontrollieren :-)
Ach ja, der Vollständigkeit halber noch das Topic zur technischen
überlegung
http://www.mikrocontroller.net/forum/read-1-219971.html