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

[Atmega] timer w trybie CTC

sokmarcin 11 Paź 2009 18:55 5212 3
REKLAMA
  • #1 7116417
    sokmarcin
    Poziom 20  
    Witam,

    Mam problem z timerem1 - timer pracuje w trybie CTC (4), wartość wpisywana do rejestru OCR1A jest wcześniej odczytywana z przetwornika ADC (potencjometr). Problem występuje podczas zmiany tej wartości - timer tak jakby się przycinał (ale tylko czasami) - nie zgłasza przerwania przez pewną chwile, żeby zaraz zacząć normalnie pracować. Np. po takiej przerwie rozpędzany silnik krokowy staje, bo z dużej częstotliwości nie ruszy.

    Tyczy się to procesorów: Atmega128, Atmega88 i AT90PWM3B. Problem nie jest po stronie pomiaru z ADC. Robiłem aplikacje gdzie wartość ORC1A była przesyłana przez rs i timer zachowywał się tak samo dziwnie. Ale akurat tam nie przeszkadzało to tak bardzo.

    konfiguracja timera:

    TCCR1A |= (0 << WGM11);
    TCCR1B |= (1 << WGM12) | (0 << CS12) | (1 << CS11) | (1 << CS10); //prescaler: 64
    TIMSK1 |= (1 << OCIE1A);



    Spotkaliście się kiedyś z takim problemem?
  • REKLAMA
  • #2 7116468
    _Robak_
    Poziom 33  
    Moze inne przerwanie blokuje przerwanie timera, sam z siebie nie ma prawa sie zablokowac ;) Sprawdzasz przebiegi na oscyloskopie, czy tylko zgadujesz ze sie przycina ?
  • REKLAMA
  • Pomocny post
    #3 7116562
    BoskiDialer
    Poziom 34  
    W trybie CTC wartość timera jest zerowana, gdy TCNTx jest równe OCRxA. Nie pojawia się tutaj sprawdzenie w relacji większy/równy. Tak więc jeśli w danym momencie OCRxA jest równe 100, TCNTx 98 i w tym momencie zostanie wpisane do OCRxA wartość 96 to nie zostanie spełniony warunek dla TOP, timer będzie się zwiększał aż do 65535 (długa przerwa) kiedy to się przepełni (powrót do normalnej pracy). Rozwiązanie - po zaktualizowaniu OCRxA sprawdzić czy TCNTx jest większe lub równe - jeśli tak, to wpisać tam 0.
  • #4 7116687
    sokmarcin
    Poziom 20  
    No prosze jakie proste :) widać muszę częściej głowy używać ;)
    Dzięki wielkie.
REKLAMA