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

[atmega8][Bascom] generator 22kHz problem z wyliczaniem Pwm1

tomson5 17 Gru 2009 18:14 2144 7
  • #1 7401954
    tomson5
    Poziom 16  
    Witam
    Próbuje ogarnąć temat generowania częstotliwości
    Postanowiłem wykonać generator 22kHz
    Mam straszny problem z wyliczaniem ile należy wpisać do licznika aby uzyskać odpowiednią częstotliwość

    pozłużyłem się kalkulatorem ze strony WKRĘTAK.PL
    Wyszło mi że aby uzyskać 22000Hz przy osc. 8MHz i preskalerze 1 należy wpisać do Pwm1 wartość 363

    Zrobiłem tak w swoim programie ale niestety nie otrzymałem tej częstotliwość
    Dopiero zmniejszając wartość Pwm1 do 181 uzyskałem moje 22kHz

    Nie mogę zrozumieć o co tu chodzi gdzie jest mój błąd w liczeniu ??

    Czy ktoś ma link do przelicznika który by np: po wpisaniu 8MHz pokazał że to jest 125ns ? mam zawsze z tym problem dla przykładu te moje nieszczęsne 22KHz zwykłym kalkulatorem to wychodzą jakieś czary mary 4.54545454545455e-005

    
    'Generator 22khz
    $regfile = "m8def.dat"
    $crystal = 8000000
    Config Lcd = 16 * 2
    Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portd.0 , E = Portc.4 , Rs = Portc.5
    ' należy skonfigurować LCD zamienić zworami portc.0 na portd.0
     Config Pinb.1 = Output
    Config Pind.2 = Input
    Config Pind.3 = Input
    Set Portd.2
    Set Portd.3
     Config Timer1 = Timer , Compare A = Toggle , Compare B = Disconnect , Prescale = 1 , Clear Timer = 1
    Dim Zmienna As Word
    Enable Interrupts
    Enable Int0
    Enable Int1
    On Int0 Up
    On Int1 Down
    Zmienna = 363 'zmienna do której wpisałem ilość wyliczonych cykli, zmienna=Pwm1
    
     Do
      Pwm1a = Zmienna
    
     Loop
    
     End
    
     Up:    'przycisk UP zwieksza warość Pwm1
    Waitms 10
    If Pind.2 = 0 Then
    Waitms 25
    If Pind.2 = 0 Then
    Zmienna = Zmienna + 1
    If Zmienna > 1024 Then
    Zmienna = 0
    End If
    End If
    End If
    
     Cls
     Lcd Zmienna
     Waitms 100
    Return
    
    
    Down:  'przycisk DOWN zmniejsza wartość PWM1
    Waitms 10
    If Pind.3 = 0 Then
    Waitms 25
    If Pind.3 = 0 Then
    Zmienna = Zmienna - 1
    If Zmienna > 1024 Then
    Zmienna = 0
    End If
    End If
    End If
    
     Cls
     Lcd Zmienna
     Waitms 100
    Return
    
  • #3 7402159
    tomson5
    Poziom 16  
    Miałem w zbiorach ten kalkulator ale zapomniałem o nim.

    Chyba już obczaiłem skąd mam 181 a nie 363

    według niego ułożyłem sobie wzór

    (przerwanie wywołane co:) (pomnożyć przez) (oczekiwana częstotliwość w Hz) (równa się) (Wartość Pwm1)

    w moim przypadku 0,008192s*22000Hz=(Pwm1=180)

    To co w związku z tym oblicza ten kalkulator ze strony wkrętak.pl ??
  • Pomocny post
    #4 7402331
    kamyczek
    Poziom 38  
    Między częstotliwością występowania przerwania a okresem przebiegu istnieje pewna stała zależność . Jak sobie przeanalizujesz będziesz wiedział dlaczego wynik jest dwa razy mniejszy ;)
  • Pomocny post
    #5 7402753
    jacekk232
    Poziom 17  
    Wyobraź sobie, że przerwanie występuje co 500ms a do procka podłączona jest dioda. Co pół sekundy dioda zapala się i gaśnie. Okres przebiegu to będzie czas świecenia i wygaszenia diody czyli jedna sekunda. Jeśli przerwanie było by generowane co sekundę okres wynosił by wtedy dwie sekundy.
  • #6 7403141
    tomson5
    Poziom 16  
    Już kiedyś się na tym złapałem przy pomiarach oscyloskopem :)

    Teraz będę chciał te 22kHz załączać na czas 0,5ms a następnie przerwa 1ms czy do tego mogę użyć przerwania od Timer0 ??





    dzięki za wcześniejszą pomoc
  • #7 7404216
    kamyczek
    Poziom 38  
    Kluczowanie można wykonać przy pomocy innego licznika i w obsłudze przerwania zmieniać wartość pwm na 0 a jeśli miał byś z tym problem można diodę nadawcą kluczować przez bramkę logiczną AND jedno wejście bramki podłączasz do wyprowadzenia generującego PWM 22KHz a drugą do wyjścia n którym generujesz sygnał sterujący przebiegiem 22kHz.
  • #8 7406595
    Konto nie istnieje
    Poziom 1  
REKLAMA