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

Generowanie przebiegu w trybie CTC na Atmega8 [Bascom]

austin007 03 Sty 2012 00:02 2730 2
REKLAMA
  • #1 10340899
    austin007
    Poziom 17  
    Posty: 767
    Pomógł: 6
    Ocena: 276
    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:

    '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.
  • REKLAMA
  • #2 10344497
    jacekk232
    Poziom 17  
    Posty: 178
    Pomógł: 25
    Ocena: 10
    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
  • #3 10344783
    austin007
    Poziom 17  
    Posty: 767
    Pomógł: 6
    Ocena: 276
    Generowanie działa poprawnie po bezpośrednich wpisach do rejestru.

    Temat zamykam
REKLAMA