ATNEL tech-forum
https://forum.atnel.pl/

Różnice między timerami 16-bit
https://forum.atnel.pl/topic22701.html
Strona 1 z 1

Autor:  wojciechgorzolka [ 1 gru 2019, o 14:37 ]
Tytuł:  Różnice między timerami 16-bit

Cześć mam dwa pytania, ponieważ nie jestem biegły z angielskiego. Wałkuję od rana ustawianie timerów i przerwań i wychodzi mi to całkiem dobrze. Wszystko testuję na zestawie atb z atmegą 32 i kwarcem 11059200. Jaka jest różnica w Timer_1 16-bit pomiędzy TIMER/COUNTER1 CONTROL REGISTER A-TCCR1A, a TIMER/COUNTER1 CONTROL REGISTER B-TCCR1B.
Dodam,że ustawiam w testowym programie tryb normal o częstotliwości 100Hz.
Dlaczego muszę użyć TCCR1B, a nie TCCR1A?

Drugie pytanie dotyczy obliczania preskalera w timerze 8-bit i timerze 16-bit.
dlaczego obliczając np:
(8000000 Hz / 1024 (preskaler) / 200 Hz) - 1 = 38,06 --> rozumiem ,że tutaj odejmuję 1 i wynika to z tego,że zliczamy od 0-255. (timer 16-bit)
Ale dlaczego tej jedynki nie odejmujemy przy obliczaniu preskalera dla timera 16-sto bitowego? :D :?:

Autor:  xentis [ 1 gru 2019, o 15:23 ]
Tytuł:  Re: Różnice między timerami 16-bit

wojciechgorzolka napisał(a):
Jaka jest różnica w Timer_1 16-bit pomiędzy TIMER/COUNTER1 CONTROL REGISTER A-TCCR1A, a TIMER/COUNTER1 CONTROL REGISTER B-TCCR1B.
Poprostu ustawień jest tyle że nie zmieściły się w jednym rejestrze więc podzielono je na dwa rejestry TCCR1A i TCCR1B, i w zależności od tego co chcesz ustawić musisz sprawdzać w którym rejestrze dany bit się znajduje, np. bity WGM10 i WGM11 znajdują się w rejestrze TCCR1A, natomiast WGM12 i WGM13 znajdują się w drugim rejestrze czyli TCCR1B. Stąd Mirek zawsze powtarza że praca z notą procka to podstawa. No chyba że robisz to od dawna i pamiętasz co w którym rejestrze siedzi dla danego uC ;)

wojciechgorzolka napisał(a):
Ale dlaczego tej jedynki nie odejmujemy przy obliczaniu preskalera dla timera 16-sto bitowego? :D :?:
Nie ma znaczenia czy to licznik 8 - bitowy czy 16 - bitowy, wzór dla obu jest ten sam i dla obu się odejmuje tę jedynkę. Wynika to z tego że licznik licząc gdy napotka tę wartość przy porównaniu zeruje się (podczas jednego taktu zegara) stąd te dwa stany (wartość porównanie i wartość 0) liczymy jako jeden takt, więc należy to uwzględnić w obliczeniach odejmując 1.

Autor:  wojciechgorzolka [ 1 gru 2019, o 15:58 ]
Tytuł:  Re: Różnice między timerami 16-bit

Dziękuję za wyjaśnienie :)

Autor:  wojciechgorzolka [ 7 gru 2019, o 12:02 ]
Tytuł:  Re: Różnice między timerami 16-bit

Hej. Wracam do tematu przerwań i Timerów. Nie mam już z ustawieniami timerów w trybie Normal. Jeśli chodzi o tryb CTC, to w timerze 8-bit też nie mam problemu. Kłopot mam z Trybem CTC w Timerze 16-sto bitowym, bo nie wiem który rejestr wybrać podczas ustawiania
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Oraz jakie przerwanie ustawić, ponieważ są dwa
COMPA oraz COMPB
Obrazek
Od czego zależy, które przerwanie mam wybrać?
Atmega 32 taktowana 11059200 przerwanie 200Hz

Autor:  xentis [ 7 gru 2019, o 15:08 ]
Tytuł:  Re: Różnice między timerami 16-bit

Ten timer ma dwa kanały porównania: kanał A i kanał B. Każdy kanał ma osobny rejestr porównania, oraz osobne przerwanie. Jednak, dla trybu CTC jak sobie spojrzysz w tabelkę trybów pracy timera w kolumnę TOP zobaczysz że jest tam wpisane OCR1A, a jest to wartość do której licznik zlicza w tym trybie. Widać z tego że w trybie CTC można użyć tylko kanału A czyli zarówno rejestru porównania OCR1A jak również przerwania TIMER1_COMPA_vect, oczywiście w rejestrze TIMSK musisz zezwolić na właściwe przerwanie również od kanału A czyli OCIE1A.
Jednakże kanał B można również wykorzystać do wywołania drugiego przerwania od kanału B pod warunkiem że w rejestrze porównania kanału B będzie wartość mniejsza niż w rejestrze kanału A. W przeciwnym wypadku licznik nigdy nie doliczy do wartości znajdującej się w OCR1B bo zawsze szybciej wystąpi porównanie od OCR1A które w trybie CTC jednocześnie zeruje licznik.

Autor:  wojciechgorzolka [ 7 gru 2019, o 15:43 ]
Tytuł:  Re: Różnice między timerami 16-bit

Dziękuję za wyjaśnienie. Teraz to rozumiem. Działa :)

Strona 1 z 1 Strefa czasowa: UTC + 1
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/