Tiny15 erzeugt keine definierte PWM

Gast #730523
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
Gast #730697
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!
Gast #730809
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ß

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren