logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[BASCOM] Jak obliczyć rzeczywistą częstotliwość PWM dla Attiny13A w BASCOM?

slawcioo88 29 Lip 2014 09:13 2265 12
REKLAMA
  • #1 13833758
    slawcioo88
    Poziom 21  
    Mam pytanie jak prawidłowo obliczyć częstotliwość przebiegu PWM, z obliczeń wychodzi mi o wiele więcej niż widać. Dla przykładu dałem takie parametry:
    crystal = 9600000
    Config Timer0 = Pwm , Prescale = 64 , Compare A Pwm = Clear Down
    Jaka będzie częstotliwość?
    Widzę że dioda błyska miernik pokazuje 30hz.
  • REKLAMA
  • #2 13834005
    Brutus_gsm
    Poziom 25  
    Zajrzeć do noty katalogowej, znaleźć odpowiedni wzór i policzyć.
  • #3 13834106
    Piotrek.pxf
    Poziom 27  
    Częstotliwość PWM powinna wynosić Fcpu / ( prescaler * rozdzielczość), czyli w tym przypadku 9600000 / 512 = 18,75 kHz. Rozdzielczość Timer0 wynosi 8 bit. Nie wiem skąd ci wyszło to 30 Hz oraz czym i w jaki sposób to zmierzyłeś. Wklej cały kod, bo może problem nie tkwi w linii konfiguracyjnej. Na pewno podłączyłeś rezonator 9,6 MHz?
  • REKLAMA
  • #4 13834143
    slawcioo88
    Poziom 21  
    $regfile = "attiny13.dat"
    $crystal = 9600000
    $hwstack = 8
    $swstack = 8
    $framesize = 8
    
    Dim I As Byte
    Config Pinb.0 = Output
    Config Timer0 = Pwm , Prescale = 64 , Compare A Pwm = Clear Down
    
    Do
    
    I = 128
    Pwm0a = I
    
    Loop
    End


    W fusebitach włączony jest wewnętrzny oscylator 9,6 Mhz.
    W czasie pracy dioda błyska, miernik mój pokazuje 0,03 kHz
  • #5 13834213
    Brutus_gsm
    Poziom 25  
    Dużo też zależy od miernika, niektóre nie radzą sobie z niską częstotliwością, albo mają problem z przebiegiem prostokątnym. Przeczytaj instrukcję obsługi, powinna być wzmianka na ten temat.
  • REKLAMA
  • #6 13834301
    yokoon
    Poziom 29  
    Witam.
    W nowym Attiy13 jest włączony bit CKDIV8 który dzieli Fcpu przez 8.
  • REKLAMA
  • #7 13834320
    slawcioo88
    Poziom 21  
    Czyli (9600000/8)/(64*510)=37 Hz
    Dobrze liczę czy zamiast 510 powinno być 256?
  • Pomocny post
    #8 13834349
    yokoon
    Poziom 29  
    Witam.
    Fcpu=9600000/8=1 200000Hz

    1 200000/64/510 = 36,76Hz
  • #9 13834520
    slawcioo88
    Poziom 21  
    Ustawiam preskaler na 8 i mam częstotliwość prawie 300 Hz a potrzebuje 2 razy tyle jak to zrobić, bo przecież nie mogę ustawić preskalera na 4?
  • Pomocny post
    #10 13835157
    Konto nie istnieje
    Poziom 1  
  • #11 13835186
    yokoon
    Poziom 29  
    Witam.
    nie wiem czy ten timer może pracowć w trybie CTC to można spróbować dopisać w progrmie: Compare0A = 249 jeżeli nie to TCNT0 = 7,na PB0 powinna być fala o czestotliwości 600Hz.
  • #12 13835335
    Konto nie istnieje
    Poziom 1  
  • #13 13836096
    slawcioo88
    Poziom 21  
    Dzięki za pomoc udało mi się uzyskać częstotliwość jaką chciałem.
REKLAMA