Forum: Mikrocontroller und Digitale Elektronik Tiny15 erzeugt keine definierte PWM


von Alfi (Gast)


Lesenswert?

Hi zusammen,

Möchte eine PWM mit - sagen wir mal - 10kHz und einem Tastverhältnis 50% 
einstellen.
=> Prescaler auf CK/2  , ORC1B: 80d OCR1A: 40d

nach meiner Rechnung ergibt das 1,6MHz/2/80=10kHz

Raus kommen aber 112kHz!!

Ich gehe davon aus, dass ich ein Verständnisproblem habe aber ich komme 
nicht drauf....
Kann mir jemand sagen, wie ich die Frequenz berechne und einstelle??


Danke und Gruß


1
; PB1  Ausgang PWM
2
3
.include "tn15def.inc"
4
5
6
7
rcall Init
8
rjmp Main
9
10
Init:
11
12
    ldi   R16,0x00|(1<<PB1)|(1<<PB2)|(1<<PB3)  ; PB1 als Ausgang
13
    out   DDRB,R16
14
15
  ;PWM einstellen
16
17
    ldi   R16,(0<<CS13)|(1<<CS12)|(1<<CS11)|(0<<CS10)|(1<<CTC1)|(1<<PWM1)|(1<<COM1A1)|(1<<COM1A0)  ; invertierte PWM einsschalten -> Geschwindigkeit CK
18
    out   TCCR1,R16
19
20
    ldi   R16,0x50  ;Frequenz
21
    out   OCR1B,R16
22
23
24
    ldi   R16,0x28  ;Pulsweite einstellen
25
    out   OCR1A,R16
26
27
28
    ret            ;zurückspringen
29
30
Main:
31
32
    nop
33
34
    rjmp   Main

von Andreas K. (a-k)


Lesenswert?

(1<<CTC1) => counter reset bei TCNT1=OCR1A.
(1<<PWM1) => counter reset bei TCNT1=OCR1B.
Beides zusammen ergibt also keinen Sinn.

von Alfi (Gast)


Lesenswert?

ok, CTC1 ist nun 0, damit bekomme ich aber trotzdem 7kHz (mit 
Oszi+Zähler gemessen).

Hast Du vielleicht ein Beispiel, wie die o.g. Frequenz und 
Tastverhältnis eingestellt werden müssen?



Danke!

von Alfi (Gast)


Lesenswert?

ich glaube ich habe es gefunden!

Problem war kein Denkfehler, sondern der interne Oszillator war nicht 
abgeglichen. Mit einem Wert 0x74 geladen passt die Frequenz.

Wie mir scheint, muß immer ein OSCCR-Wert geladen werden, und dieser 
steht irgendwo im EEPROM?!??
1
  ldi    RDummy,0x74
2
  out    OSCCAL,RDummy

Gruß

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.