Reklama

Základy ovládání mikrokontroléru ATmega(16/32) 12.díl – Čítač / Časovač (2.část – Popis registrů)

Úvod

Minule jsme si popsali základní režimy, ve kterých lze čítač/časovač 0 provozovat a v tomto příspěvku si vysvětlíme jednotlivý význam bitů pro registry potřebné pro práci s čítačem/časovačem 0.

Popis registrů

Jako první si popíšeme registr TCCR0. Popis jednotlivých bitů ukazuje registru TCCR0 ukazuje Tab. 1.

 

Tab. 1: Popis bitů registru TCCR0

Pozice bitu Označení
7 – (nejvyšší váha) FOC0
6 WGM00
5 COM01
4 COM00
3 WGM01
2 CS02
1 CS01
0 – (nejnižší váha) CS00

 

Bit FOC0 řídí vynucení logického stavu na výstup OC0 (PB3). Pokud je použit některý z PWM režimů, tak musí být tento bit v log. 0. Pokud je tento bit nastaven do stavu Log. 1, tak se vývod OC0 chová při shodě registrů TCNT0 a OCR0 v závislosti na nastavení bitů COM00 a COM01.
Bity WGM00, WGM01 měníme režim čítače/časovače. Nastavení jednotlivých režimů ukazuje Tab. 2.

 

Tab. 2: Popis bitů WGM00 a WGM01

WGM01 WGM00 Režim bitu Vrchol Aktualizace OCR0 Nastavení příznaku TOV0
0 0 Normální 0xFF Okamžitě Na vrcholu
0 1 Fázově korigované PWM 0xFF Na vrcholu Na dně
1 0 CTC OCR0 Okamžitě Na vrcholu
1 1 Rychlé PWM 0xFF Na dně Na vrcholu

 

Bity COM00 a COM01 se řídí nastavením výstupního pinu OC0 (PB3). Pokud je nastavena log.1 na jakémkoli bitu, tak je na pinu OC0 (PB3) překryta standardní funkce vstupně/výstupního pinu, ale i přesto musí být nastaven řídící registr DDRB pro tento pin jako výstupní. Jednotlivý význam je ještě spojen s vybraným režimem pomocí bitů WGM00 a WGM01.
Popis bitů v režimech bez PWM ukazuje následující tabulka Tab. 3.

 

Tab. 3: Popis bitů COM00 a COM01 v režimech bez PWM

COM01 COM00 Popis
0 0 Normální režim pinu, výstup OC0 je odpojen
0 1 Negování vývodu OC0 při shodě
1 0 Nastavení log. 0 na vývod OC0 při shodě
1 1 Nastavení log. 1 na vývod OC0 při shodě

 

Popis bitů v režimu rychlého PWM ukazuje následující tabulka Tab. 4.

 

Tab. 4: Popis bitů COM00 a COM01 v režimu rychlého PWM

COM01 COM00 Popis
0 0 Normální režim pinu, výstup OC0 je odpojen
0 1 Rezervováno
1 0 Log. 0 na vývod OC0 při shodě, log. 1 na vývod OC0 při 0x00 (neinvertující režim)
1 1 Log. 1 na vývod OC0 při shodě, log. 0 na vývod OC0 při 0x00 (invertující režim)

 

Popis bitů v režimu fázově korigovaném PWM ukazuje následující tabulka Tab. 5.

 

Tab. 5:Popis bitů COM00 a COM01 v režimu fázově korigovaném PWM, převzato z [1], [2]

COM01 COM00 Popis
0 0 Normální režim pinu, výstup OC0 je odpojen
0 1 Rezervováno
1 0 Log. 0 na vývod OC0 při čítání nahoru, log. 1 na vývod OC0 při čítání dolů (neinvertující režim)
1 1 Log. 1 na vývod OC0 při čítání nahoru, log. 0 na vývod OC0 při čítání dolů (invertující režim)

 

Bity CS00, CS01 a CS02 lze konfigurovat kmitočet čítače/časovače a vybrat zdroj hodin. Frekvence čítače časovače je buďto odvozena od frekvence mikrokontroléru, nebo je použit vývod T0 (PB0). Význam jednotlivých kombinací bitu ukazuje tabulka Tab. 6.

 

Tab. 6: Význam bitů CS00, CS01 a CS02

CS02 CS01 CS00 Popis
0 0 0 Žádný zdroj hodin, čítač/časovač je zastaven
0 0 1 fclk – frekvence mikrokontroléru – bez předděličky
0 1 0 fclk / 8
0 1 1 fclk / 64
1 0 0 fclk / 256
1 0 1 fclk / 1024
1 1 0 Sestupná hrana na pinu T0
1 1 1 Vzestupná hrana na pinu T0

Dalším registrem, který si popíšeme je registr TCNT0. Tento 8bitový registr obsahuje aktuální hodnotu čítače/časovače. Pokud je během čítání prováděn zápis do tohoto registru, tak je na jeden hodinový takt ignorována shoda s registrem OCR0. Proto může dojít ke ztrátě události po shodě s registrem OCR0.

Registr OCR0 slouží k nastavení hodnoty pro porovnání s registrem TCNT0.

Následuje registr TIMSK, který slouží k nastavení přerušení pro všechny časovače. Význam jednotlivých bitů registru ukazuje Tab. 7.

 

Tab. 7: Popis registru TIMSK

Pozice bitu Označení
7 – (nejvyšší váha) OCIE2
6 TOIE2
5 TICIE1
4 OCIE1A
3 OCIE1B
2 TOIE1
1 OCIE0
0 – (nejnižší váha) TOIE0

 

Pro čítač/časovač 0 platí pouze bity TOIE0 a OCIE0. Bit TOIE0 povoluje vyvolání přerušení při přetečení obsahu TCNT0. Bit OCIE0 povolí vyvolání přerušení při shodě registru TCNT0 s registrem OCR0.

Registr TIFR slouží pro příznaky přerušení všech čítačů/časovačů. Popis registru ukazuje Tab. 8.

 

Tab. 8: Popis registr TIFR

Pozice bitu Označení
7 – (nejvyšší váha) OCF2
6 TOV2
5 ICF1
4 OCF1A
3 OCF1B
2 TOV1
1 OCF0
0 – (nejnižší váha) TOV0

 

Pro čítač/časovač 0 slouží opět pouze dva bity s nejnižší váhou. Příznak TOV0 se nastaví při přetečení registru TCNT0, zatímco příznak OCF0 se nastaví při shodě registru TCNT0 a OCR0. Oba příznaky se vynulují vždy vstupem do svých obslužných rutin přerušení, nebo je lze smazat programově zápisem log. 1.

Posledním popisovaným registrem je registrem SFIOR. Tento registr slouží k nulování předděličky. V tomto registru nás zajímá pouze bit s nejnižší váhou na pozici 0 a to bit PSR10. Pokud je v PSR10 log. 1, tak dojde k vynulování předděličky jak pro čítač/časovač 0, tak i pro čítač/ časovač 1. Po vynulování předděličky se tento bit automaticky nastaví do stavu log. 0.
 

[1] ATMEL. 8-bit Microcontroller with 32KBytes In-System Programmable Flash. [online] citováno 26. října 2014. Dostupné na www: http://www.atmel.com/images/doc2503.pdf
Jiné příspěvky v kategorii:

Základy ovládání mikrokontroléru ATmega(16/32) 1.díl – První kroky

Základy ovládání mikrokontroléru ATmega(16/32) 2. díl – Kompilace a krokování programu

Základy ovládání mikrokontroléru ATmega(16/32) 3.díl – Nahrání vytvořeného zdrojového kódu do mikrokontroléru

Základy ovládání mikrokontroléru ATmega(16/32) 4.díl – Ovládání vstupně/výstupních portů

Základy ovládání mikrokontroléru ATmega(16/32) 5.díl – Ošetření zákmitů na vstupním pinu mikrokontroléru

Základy ovládání mikrokontroléru ATmega(16/32) 6.díl – Externí přerušení

Základy ovládání mikrokontroléru ATmega(16/32) 7. díl – Jednoduchá elektronická hrací kostka

Základy ovládání mikrokontroléru ATmega(16/32) 8.díl – A/D převodník (1.část)

Základy ovládání mikrokontroléru ATmega(16/32) 9.díl – A/D převodník (2.část)

Základy ovládání mikrokontroléru ATmega(16/32) 10.díl – A/D převodník (3.část)

Základy ovládání mikrokontroléru ATmega(16/32) 11.díl – Čítač / Časovač (1.část – Základní popis)

Základy ovládání mikrokontroléru ATmega(16/32) 13.díl – Čítač / Časovač (3.část – Praktická ukázka)

Základy ovládání mikrokontroléru ATmega(16/32) 14.díl – Dvouřádkový LCD displej

Základy ovládání mikrokontroléru ATmega(16/32) 15.díl – Popis implementace komunikace I2C a EEPROM paměti 24LC512

Základy ovládání mikrokontroléru ATmega(16/32) 16.díl – Watchdog

Základy ovládání mikrokontroléru ATmega(16/32) 17.díl – Obsluha maticové klávesnice

Základy ovládání mikrokontroléru ATmega(16/32) 18.díl – Jednotka USART (1. část – Popis)

Základy ovládání mikrokontroléru ATmega(16/32) 19.díl – Jednotka USART (2. část – Praktická ukázka)

Základy ovládání mikrokontroléru ATmega(16/32) 20. díl – Generování audio signálu pomocí PWM

Základy ovládání mikrokontroléru ATmega(16/32) 21. díl – Analogový komparátor

Základy ovládání mikrokontroléru ATmega(16/32) 22. díl – Krokování programu v jazyce symbolických adres (JSA)
 
Tajned facebook
 

Za případné chyby v textu, ve zdrojovém kódě, nebo ve schématickém zapojení se omlouváme.
AUTOŘI NEBEROU ŽÁDNOU ODPOVĚDNOST ZA PŘÍPADNÉ ÚJMY NA ZDRAVÍ ČI MAJETKU.