Hallo, ich versuche gerade mit folgendem Code eine Fast-PWM auf dem
Mega88 zum Laufen zu bekommen:
1 | ;------------------------------------------------------
|
2 | ; PWM auf Timer 0 einstellen
|
3 | ;------------------------------------------------------
|
4 |
|
5 | ; WGM02 WGM01 WGM00 <-- WaveformGenerationMode - in TCCR0A (Timer/Counter Control Register A)
|
6 | ; 0 1 1 Modus 3: Fast PWM(Zählt bis 0xFF) Achtung: WGM02 in TCCR0B (Timer/Counter Control Register A)
|
7 |
|
8 | ; Timer Vorteiler: 256
|
9 | ; CS02 CS01 CS00 <-- Clock Select (Teiler) - in TCCR0B (Timer/Conter Control Register B)
|
10 | ; 1 1 0
|
11 |
|
12 | ; Steuerung des Ausgangsport:
|
13 | ; COM0A1 COM0A0 <-- Compare Output Mode - in TCCR0A (Timer/Counter Control Register A)
|
14 | ; 1 0 Clear OC0A on Compare Match when up-counting.
|
15 | ; Set OC0A on Compare Match when down-counting.
|
16 |
|
17 | ldi temp, 1<<WGM01 | 1<<WGM00 | 1<<COM0A1 | 0<<COM0A0
|
18 | out TCCR0A, temp
|
19 |
|
20 | ldi temp, 1<<CS02 | 1<<CS01 | 0<<CS00
|
21 | out TCCR0B, temp
|
22 |
|
23 | ; Compare Wert:
|
24 | ; Wenn der Zähler diesen Wert erreicht, wird mit obiger Konfiguration der OC0A (PD6) Ausgang abgeschaltet
|
25 | ; Sobald der Zähler wieder bei 0 startet, wird der Ausgang wieder auf 1 gesetzt
|
26 | ldi temp, 0xC0
|
27 | out OCR0A, temp
|
28 |
|
29 | ldi temp, 1<<PD6 ;Pin OC0A (PD6) auf Ausgang schalten
|
30 | out DDRD, temp
|
Kann mir jemand sagen warum das so nicht funktioniert?
Gruß, pacer