Forum: Mikrocontroller und Digitale Elektronik Problem mit PWM auf Mega88 in Assembler


von pacer (Gast)


Lesenswert?

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

von Peter R. (gelb)


Lesenswert?

Du hast den Clock Select mit 0b110 auf externen Takt eingestellt.

Grüße, Peter

von pacer (Gast)


Lesenswert?

Supi, da habe ich wohl übersehen, dass sich die Clockeinstellungen vom 
Timer 0 und 2 unterscheiden.

vielen Dank und komm gut ins neue Jahr :)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.