Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Generowanie przebiegu w trybie CTC na Atmega8 [Bascom]

austin007 03 Sty 2012 00:02 2268 2
  • #1 03 Sty 2012 00:02
    austin007
    Poziom 17  

    Witam!

    Chciałbym uzyskać przebieg o wypełnieniu 50% i f~33kHz w trybie CTC na pinie PB3 Atmega 8L (OC2).
    Podpiąłem wyjście OC2 na oscyloskop i ciągle stan wysoki.
    Pierwszy raz i na szybko potrzebuję wygenerować taki przebieg. Proszę o pomoc. Późno już i coś mnie chyba przyćmiło. Namieszałem coś z ustawieniami portów czy jakiś rejestr nie jest ustawiony?

    Na pewno ustawiony jest wewnętrzny generator 8 MHz.

    Oto kod:

    Code:
    'ATMEGA 8L
    

    $regfile = "m8def.DAT"
    $crystal = 8000000                                          ''wewnętrzny zegar 8MHz

    Config Pinb.3 = Output
    Set Pinb.3

    Config Timer2 = Timer , Prescale = 1 , Async = Off , Compare B = Toggle , Clear Timer = 1

    Compare2 = 120                    ' tożsame chyba z Ocr2 = 120 ?

    Enable Oc2
    Enable Interrupts                 ' nie wiem czy to potrzebne
    Enable Timer2
    Start Timer2                       ' nie wiem czy to potrzebne




    '********** Konfiguracja uC Koniec  ************



    '**************  Petla glowna ******************
    '***********************************************

    Do

    Loop
    End
    '************ Petla glowna Koniec **************




    ------------------------------------------------------------
    Może bezpośrednio na rejestrach należałoby CTC ustawić?
    Z noty katalogowej wyczytałem,że operując na rejestrach należy:

    Ustawić PINB.3 jako output
    WGM21:0=2
    OCR2=120 (u mnie)
    COM21:0=1

    Czy coś jeszcze, żeby ruszyło?
    Może ustawienie źródła jako synchroniczne (wewnętrzne)
    Jak ustawić w Bascomie bezpośrednio wartości w rejestrach?
    OCR2=120 udaje się, ale pozostałe?

    -----------------
    Użyłem Tccr2 = &B10011001 i Ocr2 = 120 zamiast konfiguracji natywnymi komendami Bascoma. Chyba ruszyło. Na wyjściu mam ok 2,5V czyli 1/2 Vcc. Wygląda, że jest ok. Podepnę pod oscyloskop i wlutuję diody IR, to się okaże.

    0 2
  • #2 03 Sty 2012 21:06
    jacekk232
    Poziom 16  

    Witam.

    Po przejrzeniu noty do atmegi8 wydaje mi się, że dobrze ustawiłeś Timer2 w tryb CTC. Zmiana stanu na OC2 powinna występować z częstotliwością ok. 66kHz co da przebieg o okresie ok. 33kHz.
    Jedynie bitu TCCR2.7 (FOC2) nie musisz ustawiać. Z tego co wyczytałem to ustawienie tego bitu wymusza zmianę stanu na OC2. A to w twoim przypadku jest niepotrzebne.

    Pozdrawiam

    0
  • #3 03 Sty 2012 21:45
    austin007
    Poziom 17  

    Generowanie działa poprawnie po bezpośrednich wpisach do rejestru.

    Temat zamykam

    0