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

[AVR][Bascom] - Tiny2313 i Timer1 w trybie CTC (ręcznie)

mirekk36 08 Paź 2008 02:20 2892 2
REKLAMA
  • #1 5610722
    mirekk36
    Poziom 42  
    Witam,

    Chciałbym sobie "ręcznie" ustawić do pracy w trybie CTC Timer1. Tak aby generować na 2 wyjściach stały przebieg PWM.

    próbuję to ustawiać tak:



    
    Ocr1ah = High(1562) 'ma być 10Hz
    Ocr1al = Low(1562)
    
    Ocr1bh = High(3124) 'ma być 5Hz
    Ocr1bl = Low(3124)
    
    ' zmiana stanu wyjścia OC1A na przeciwny, przy porównaniu
    ' zmiana funkcji pinów OC1A i OC1B
    Tccr1a.com1a1 = 0
    Tccr1a.com1a0 = 1
    
    Tccr1a.com1b1 = 0
    Tccr1a.com1b0 = 1
    
    ' ustawiamy Timer1 w tryb CTC - porównywanie z OCR1A
    Tccr1a.wgm11 = 0
    Tccr1a.wgm10 = 0
    
    Tccr1b.wgm13 = 0
    Tccr1b.wgm12 = 1
    
    
    ' ustawienia preskalera na 256
    Tccr1b.cs10 = 0
    Tccr1b.cs11 = 0
    Tccr1b.cs12 = 1


    częstotliwość taktowania procka to 8MHz, preskaler ustawiony na 256, tryb pracy CTC bity WGM1x, zmiana stanu wyjścia przy porównaniu Com1xx

    i wszystko jest niby pięknie ale tylko wtedy gdy nie ustawiam
    Ocr1bh = High(3124) 'ma być 5Hz
    Ocr1bl = Low(3124)


    czyli gdy zaremuję te linijki powyżej (w ogóle nie wpisuję wartości do OCR1BH i OCR1BL to wtedy obydwa wyjścia działają mi z taką częstotliwością jaka ustawiłem w OCR1AH i OCR1AL.

    o co może tu chodzić? co źle robię? wydawało mi się, że w trybie CTC mogę za pomocą OCR1A i OCR1B oddzielnie regulować częstotliwość na wyjściach OC1A i OC1B - a tymczasem jakby wszystko było uzależnione tylko od OCR1A .... już późno - może mi się już miesza wszystko i dlatego nie widzę błędu w tym co robię
  • REKLAMA
  • Pomocny post
    #2 5610813
    zumek
    Poziom 39  
    mirekk36 napisał:
    ... wydawało mi się, że w trybie CTC mogę za pomocą OCR1A i OCR1B oddzielnie regulować częstotliwość na wyjściach OC1A i OC1B ...

    Masz racje , tylko Ci sie wydawało ;)
    W trybie który ustawiłeś , timer zlicza od zera , do wartości w OCR1A.Jeśli w OCR1A masz 1562 , a do OCR1B zaaplikujesz 3124 , to na wyjściu OC1B nic nie zobaczysz , bo NIGDY nie nastąpi zrównanie TCNT1 z OCR1B.Poza tym , nie da sie uzyskać różnych częstotliwości na wyjściach OC1x , w tym(Mode=4) trybie.Jedynie w trybach 14 lub 15 , można osiągnąć taki efekt , że na jednym z wyjść , częstotliwość przebiegu będzie 2 razy większa/mniejsza , niż na drugim.Nie ma takiej sprzętowej opcji , by niezależnie regulować częstotliwości na wyjściach OC , na jednym timerze.

    Piotrek
  • #3 5611103
    mirekk36
    Poziom 42  
    zumek -> dzięki za info... czyli rozumiem, że OCR1B wraz z OCR1A mogą być przydatne ale w trybach PWM gdzie dzięki nim zdaje się regulujemy stopnie wypełnienia na obydwu wyjściach ale przy tej samej częstotliwości, dobrze teraz myślę??? .... tylko muszę z kolei posiedzieć i poczytać n/t trybów PWM żeby już do końca dokładnie zrozumieć Timery (jeśli chodzi o ich "ręczną" obsługę)
REKLAMA