Skocz do zawartości

Obliczanie timera do obslugi przerwania


Pomocna odpowiedź

Napisano

Hejka, zabralem sie za obsluge przerwań. Problem troche miałem przy obliczeniach ale chyba juz to ogarnalem,jednak chcialbym abyście sprawdzili poprawność mojego myslenia, czy dobrze to wyliczam. Chcę np: wywołać przerwanie od porównania  co hmmm... 23ms... Pierw patrzę, z jaką częstotliwościa będzie się to wykonywało.... 1/0,023s = 43,4Hz ~ 44Hz... Teraz zakładam ze mój CPU taktuje 1Mhz i użyje prescalera 64 co da mi 15625Hz... Teraz ustawiam wartość porównawczą do OCRx.. Wyliczam ją tak, że 15625/43,4 = 360.. Timer doliczajac do 360 zrobi to w 360/15625 = 0,023004s=23ms z częstotliwością.. 15625/360= 43,4Hz..    

(edytowany)

Dokladnie tak...z tym ze jak zapewne wiesz to jesli ma sie to ladnie powtarzac co 23ms to pasuje ustawic CTC lub podczas obslugi przerwania kasowac TCNT...no i te 360 ustawisz tylko na 16-bitowym timerze...mozna tez uzyc 8-bitowego i inkrementowac jakas zmienna...

Edytowano przez farmaceuta
  • Lubię! 1
(edytowany)

Z tym CTC chodzi tylko o to ze ustawiasz jeden bit i jak twoj licznik zrowna sie z OCR to ten licznik(TCNT) zostaje wyzerowany i znow zaczyna liczyc od 0-360...i tak w kolko...bez tego ustawienia doliczyl by do wartosci OCR, wystapilo by przerwanie i liczyl by dalej w gore az do przepelnienia i znow by sie "przekrecil"...

Edytowano przez farmaceuta
  • Lubię! 2
(edytowany)

Wartość OCR wylicza się wzorem F_CPU / (prescaler * f) - 1 Czyli u ciebie 1000000 / ( 8 * 43.5) - 1 więc OCR = 2872 co da częstotliwość 43,509Hz możesz spróbować policzyć dla większych wartości prescalera i np dla 128 OCR wyniesie już 178. Wtedy zmieścisz się w timerze 8bit bez kombinacji z liczeniem przerwań od przepełnienia

EDIT: Właściwie w pierwszym przypadku też niema potrzeby obsługi przerwań przepełnienia - co więcej w CTC one nawet nie działają ( bo timer nie zdąży się przepełnić). Miałem na myśli że w miarę możliwości, dla mniej wymagających potrzeb wystarczy timer 8bit a ten 16bitowy zostawić sobie na ciekawsze zadania.

Edytowano przez _LM_
sprostowanie
  • Lubię! 2

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...