IMTEE
Přednáška č. 7
Základní zapojení MCU do el. obvodu •
reset, oscilátor, blokování napájení
Zdroje taktovacího kmitočtu •
externí krystal
•
externí nízkofrekvenční krystal (32,768 kHz)
•
externí RC oscilátor
•
interní kalibrovaný RC oscilátor
•
externí zdroj taktovacího kmitočtu Rozvedení taktovacích signálů v uC
1
IMTEE •
Přednáška č. 7
Výběr zdroje taktovacího kmitočtu se provádí pomocí tzv. Flash Fuse Bits při paralelním nebo sériovém programování uC. Standardně je nový uC dodáván s nastaveným interním RC oscilátorem 1 MHz.
Externí krystal nebo keramický rezonátor •
připojuje se klasicky na vývody XTAL1 a XTAL2
•
doporučená hodnota kondenzátorů C1 a C2 je 12-22 pF
•
CKOPT Fuse volí mezi dvěma zesíleními zesilovače oscilátoru. Když není naprogramovaná je max. Fosc = 8 Mhz, v opačném případě max. Fosc = 16 Mhz. Uvedené hodnoty platí pro ATmega32.
•
Programováním CKSEL Fuses se vybírá mód oscilátoru v závislosti na frekvenci krystalu.
•
Programováním SUT Fuses se volí doba náběhu oscilátoru.
•
Detaily viz datasheet.
Externí RC oscilátor •
pro aplikace nenáročné na přesný taktovací kmitočet
•
Fosc = 1 / (3*RC)
•
Minimální hodnota kondenzátoru C = 22 pF. Lze aktivovat vnitřní kapacitu na vstupu XTAL1 pomocí CKOPT Fuse, pak stačí k pinu XTAL1 připojit pouze rezistor R.
•
Mód oscilátoru a doba náběhu se opět volí pomocí CKSEL a SUT Fuse.
2
IMTEE
Přednáška č. 7
Interní kalibrovaný RC oscilátor •
Na výběr je několik pevně daných kmitočtů, závisí na typu AVR. Výběr se provádí programováním CKSEL Fuse. Např. pro ATmega32 lze volit 1, 2, 4, 8 Mhz.
•
Odpadá připojení externích komponent.
•
Standardně je nastavena frekvence 1 MHz.
•
Odchylky při výrobě – nutno kalibrovat interní RC oscilátor – provádí výrobce pro dostupné hodnoty frekvence, napájecím napětí 5 V a teplotě 25 °C.
•
Kalibrační hodnoty pro jednotlivé frekvence jsou uloženy ve speciální oblasti paměti.
•
Po resetu se automaticky registr OSCCAL naplní kalibrační hodnotou pro 1 MHz což zajistí kalibraci RC oscilátoru při napájecím napětí 5 V a teplotě 25 °C. Tím se dosáhne přesnosti frekvence ±3%.
•
V případě, že se použije jiná frekvence než 1 MHz, musí se kalibrační hodnota nahrát do registru OSCCAL ručně. To se provede nejprve vyčtením kalibrační hodnoty pro zvoelnou frekvenci a jejím následným uložením do FLASH nebo EEPROM. Po té ji lze softwarově načíst a naplnit registr OSCCAL.
•
Tímto způsobem lze kalibrovat RC oscilátor pro určité napájecí napětí a teplotu a tím dosáhnout nezávislosti frekvence na napětí a teplotě. Postup, jakým způsobem lze zjistit správnou kalibrační hodnotu v OSCCAL registru pro napětí jiné něž 5 V a teplotu různou od 25 °C, je popsán v aplikační poznámce AVR053 na webu Atmel.
Vlastní oscilátor pro časovač •
Některé typy AVR dovolují připojit na vstupy TOSC1 a TOSC2 externí krystal 32.768 kHz.
•
Časovač pak není taktován interním signálem, nýbrž asynchronně tímto externím krystalem.
Vstupně-výstupní porty •
uC AVR mohou mít až 10 8-bitových obousměrných bran označených PORT A až PORT L (některá písmena jsou v řadě vynechána)
•
jednotlivé piny portů mohou sloužit jako obecně vstupně/výstupní piny nebo mohou mít alternativní funkci (pin je spojen s nějakou periferií)
•
interní zapojení jednoho pinu je na obrázku 3
IMTEE
Přednáška č. 7
Vlastnosti •
každý pin je na vstupu chráněn diodami proti zemi a proti Ucc
•
každý pin má interní pull-up rezistor (cca 20 – 50 kΩ), který může a nemusí být aktivní
•
každý pin je zatížitelný proudem až 20 mA v log. 0 i v log. 1 – dovoluje tedy připojit přímo např. LED
•
každá brána (port) má tři ovládací registry – datový registr PORTx , směrový registr DDRx a registr nesoucí informaci o skutečné log. úrovni pinů portu PINx
Nastavení portu •
spočívá v zapsání hodnot do registrů PORTx a DDRx
•
určujeme zda bude pin určitého portu vstupní nebo výstupní a zda bude v log. 0 nebo v log. 1, případně bude-li aktivován interní pull-up rezistor či nikoliv
DDRx registr
4
IMTEE •
Přednáška č. 7
určuje zda pin bude vstupní (DDRx.n = 0) nebo výstupní (DDRx.n = 1)
PORTx registr
•
určuje jaká bude úroveň na daném pinu, je-li pin nastaven jako výstupní
•
určuje zda bude aktivován pull-up, je-li pin nastaven jako vstupní (pull-up je aktivní když PORTx.n = 1, jinak pull-up není aktivován) Možné kombinace nastavení vývodu
•
zápisem 1 do bitu PUD v registru SFIOR lze globálně zakázat pull-up rezistory na všech portech
PINx registr
•
obsahuje informaci o fyzickém stavu pinů daného portu
•
určen pouze pro čtení Příklad nastavení portu a čtení hodnoty portu
5
IMTEE
•
Přednáška č. 7
lze samozřejmě použít i bitový přístup na jednotlivé piny portu zápis 1 na pin: SBI PORTA,n , kde n je číslo pinu (0 až 7) zápis 0 na pin: CBI PORTA,n
Alternativní funkce portů/pinů •
většina portů obsahuje piny s alternativními funkcemi
•
aktivace alt. funkce se provede v příslušném řídícím registru dané periferie, které tento pin náleží (např. povolením externího přerušení INT0 dojde k propojení pinu s alt. funkcí INT0 s logikou přerušení)
•
při aktivaci alt. funkce se i přes to u většiny pinů musí nastavit směr (určit zda je pin vstupní či výstupní zápisem do registru DDRx) !
6
IMTEE
Přednáška č. 7 Výčet alternativních funkcí na portech ATmega32
7
IMTEE
Přednáška č. 7
Čítače/časovače •
Každé AVR je vybaveno minimálně jedním 8-mi bitovým časovačem označeným Timer/Counter 0.
•
Řada ATmega je vybavena vždy minimálně jedním 16-ti bitovým a dvěma 8-mi bitovými časovači.
•
Vlastnosti časovačů o Volitelná předdělička (např. 1, 8, 64, 256, 1024), o Funkce časovače nebo čítače, o Záchytná (Input Capture) jednotka např. pro měření délky časového intervalu, o Výstupní komparační jednotky (Output Compare) pro generování průběhu s určitou frekvencí a střídou, o Různé režimy generování PWM
•
Dále se budu zabývat časovači u ATmega32, principy funkce jsou analogické pro další typy AVR.
8
IMTEE
Přednáška č. 7
Timer/Counter 0 •
8-mi bitový
•
Lze ho použít následujícími způsoby o Normální časovač o Čítač – vstupní signál na pinu T0. Maximální frekvence vstupního signálu může být Fosc/2 , datasheet doporučuje Fosc/2,5 z důvodu tolerance součástek. o Využití výstupní komparační jednotky o Využití jednotky pro generování signálu PWM v jednom ze tří módů Blokové schéma
•
TCNT0 a OCR0 jsou 8-mi bitové registry. TCNT0 (Timer/Counter Register) je vlastní časovač, OCR0 (Output Compare Register) je předvolba pro komparační jednotku. TCCR0 (Timer/Counter Control Register) je řídící registr, příznaky přerušení (v obr. označené jako Int.Req. TOV0 a OC0) jsou umístěny v registru TIFR (Timer Interrupt Flag Register), povolení přerušení pro časovač je v registru TIMSK (Timer Interrupt Mask Register). TIFR a TISMK nejsou na obr. zobrazeny, protože jsou sdíleny i ostatními časovači.
•
Taktovací signál lze použít interní (přímo nebo vydělený předděličkou) nebo externí přivedený na pin T0. Předdělička může nabývat hodnot 1, 8, 64, 256, 1024, tzn. že kmitočet taktovacího signálu při použití předděličky 1024 je Fosc/1024.
9
IMTEE •
Přednáška č. 7
Nevyhovuje-li mi perioda přetečení časovače, může se časovač softwarově přednastavit. Po přetečení časovače se v přerušovací rutině časovač přednastaví na určitou hodnotu. Tuto hodnotu lze vypočítat následujícím způsobem: F ⋅t , kde TCNTxPRESET = 2 R − OSC OV n R - počet bitů časovače (8 nebo 16) FOSC – frekvence oscilátoru [Hz] tOV – žádaná perioda přetečení [s] n – předdělička časovače (1, 8, 64 …..) Např.: /* Obsluha přerušení při přetečení časovače 0 */ interrupt [TIM0_OVF] void timer0_ovf_isr(void) { /* Přednastavení časovače */ TCNT0 = 0x020; }
/* Nějaký další kód */
Čítací jednotka TCNT0 •
Čítá nahoru či dolů v závislosti na zvoleném módu časovače (bity WGM00 a WGM01 v registru TCCR)
•
V závislosti na zvoleném módu se její obsah vynuluje, zvýší nebo sníží o 1 při každém taktu hodin clkT0.
•
TCNT0 lze normálně číst i do něj zapisovat.
•
Symbol BOTTOM = 0, symbol TOP = 0xFF nebo TOP = OCR0 dle zvoleného módu
Výstupní komparační jednotka OCR0 •
Obsah v OCR0 je neustále porovnáván s obsahem TCNT0 a v případě shody se během následujícího taktu clkT0 nastaví příznak OCF0 v registru TIFR. Je-li povoleno přerušení, dojde k jeho vyvolání. Příznak OCF0 je automaticky nulován pro vstupu do rutiny na obsluhu přerušení, případně ho lze smazat ručně tak, že se do něj zapíše 1.
•
Signál shody z komparační jednotky se používá v jednotce pro generování signálu. Dle zvoleného módu se pak mění hodnota na pinu OC0 (přechod do 1 nebo do 0 nebo změna hodnoty). Chování pinu se nastavuje bity COM00 a COM01 v registru TCCR0 a není jednoznačně určeno neboť závisí na módu časovače.
10
IMTEE
Přednáška č. 7
Např. pro normální mód platí následující tabulka
•
Hardwarová záležitost - lze přesně generovat signál. (Eliminace vlivu prodlevy mezi vyvolání nějaké rutiny uvnitř které teprve dochází k žádané změně na výstupním pinu.)
Módy použití časovače/čítače 0 •
Jak již bylo zmíněno na začátku kapitoly, lze časovač použít pro různé účely.
•
Volba módu se provede v řídícím registru TCCR0 pomocí bitů WGM00 a WGM01 – viz následující tabulka.
11
IMTEE •
Přednáška č. 7
Normální mód o Časovač se chová standardně. Směr čítání je pouze nahoru. Časovač po dosažení 255 přeteče do 0 a nastaví se příznak TOV0. Je-li povoleno přerušení, vygeneruje se. Příznak se buď maže automaticky v rutině obsluhy přerušení nebo ručně (zápisem 1). Lze normálně zapisovat do TCNT0 a číst. o Může být použita komparační jednotka pro vygenerování přerušení při shodě OCR0 a TCNT0. o Takto lze generovat i výstupní signál, ale doporučuje se použít jeden z módů k tomu přímo určených – viz dále.
•
CTC mód (Clear Timer on Compare Match) o Obsah registru OCR0 slouží jako TOP hodnota (maximální hodnota kterou může časovač načítat) o Tím lze měnit rozlišení a frekvenci generovaného průběhu. Se vzrůstající frekvencí klesá rozlišení a naopak. o Po dosažení TOP hodnoty se časovač vynuluje (odtud název módu) a nastaví se příznak komparace OCF0, který lze využít pro vyvolání přerušení, ve kterém lze případně měnit TOP hodnotu zápisem do OCR0. o Registr OCR0 není v tomto režimu bufferován, asynchronní zápis nové hodnoty do OCR se projeví okamžitě. Bufferování je důležité při generování PWM, ke by mohlo dojít ke vzniku nežádoucího pulsu o těžko definované šířce – řešením je změna hodnoty OCR0 až při přetečení či komparaci.
o Výstupní pin OC0 by měl být nastaven do módu změny úrovně při komparaci shody (COM00 = 1 COM01 = 0) o Pin OC0 musí být nastaven jako výstupní, jinak se signál neobjeví !
12
IMTEE
Přednáška č. 7 o Bude-li OCR0 = 255 nebude docházet ke shodě a výstupní signál na pinu OC0 se nebude měnit ! o Maximální výstupní frekvence bude když OCR0 = 0. F fOC 0 = OSC 2 o V jiných případech je frekvence generovaného signálu dána vztahem FOSC f OC 0 = ,kde n je dělící poměr předděličky 2 ⋅ n ⋅ (1 + OCR 0 )
•
Fast PWM mód o Generování PWM, frekvence PWM je dvojnásobná oproti Phase Correct PWM módu (zmíním se za okamžik). o Hodnotou v OCR0 lze určovat střídu PWM (ve 256-ti krocích – 8 bitů). o Frekvence PWM je určena frekvencí taktovacího kmitočtu a předděličkou časovače. Nelze hýbat s TOP hodnotou, časovač vždy čítá od 0 do 255. o Při dosažení komparační úrovně bude pin OC0 = 0, při přetečení časovače se pin OC0 nastaví do 1. (Platí pro tzv. Neinvertující PWM)
o Lze volit mezi tzv. Invertující PWM a Neinvertující PWM – viz obrázek. Volba proběhne nastavením bitů COM00 a COM01 v registru TCCR0.
13
IMTEE
Přednáška č. 7
o Při komparaci a přetečení se opět nastavují příslušné příznaky a lze využít i přerušení. o Frekvence PWM je dána vztahem FOSC ,kde n je dělící poměr předděličky fOC 0 = 2 ⋅ n ⋅ 256 o Když OCR0 = 255, výstup se nebude měnit (bude v 0 nebo v 1 – závisí na nastavení bitů COMxx). o Když OCR0 = 0, na výstupu se budou objevovat úzké špičky o Registr OCR0 je v režimech generování PWM bufferován, takže hodnotu v OCR0 lze měnit kdykoliv a hardware si ji zapíše sám ve správném okamžiku (po dosažení TOP hodnoty). Toto zabraňuje vzniku tzv. glitche.
Vznik tzv. glitche při asynchronní zápisu do OCR1X
14
IMTEE •
Přednáška č. 7
Phase Correct PWM mód o Maximální frekvence PWM je poloviční oproti předcházejícímu módu. o Rozlišení je opět 8 bit. o Časovač čítá nejprve od nuly do 255 a pak zpět k nule. o Opět lze volit invertující a neinvertující mód. o Příznak přetečení TOV0 je nastaven pokaždé, když časovač dosáhne 0. o Frekvence PWM je dána vztahem F , kde n je dělící poměr předděličky f OC 0 = OSC n ⋅ 510
o Když OCR0 = 255, na výstupu bude stále 1. (platí pro neinvertující PWM) o Když OCR0 = 0, na výstupu bude stále 0. (platí pro neinvertující PWM) o Pro invertující PWM opačně. Volba invertujícího či neinvertujícího módu
15
IMTEE
Přednáška č. 7
Přehled registrů pro obsluhu časovače/čítače 0 •
Řídící registr TCCR0
o FOC0 – aktivní pouze při normálním módu časovače, zápisem jedničky do FOC0 se vynutí signál shody, který vstupuje do jednotky generování průběhu, čímž dojde ke změně hodnoty na výstupním pinu OC0 dle nastavení daného bity COM0x. Nenastavuje žádné příznaky. o WGM00 a WGM01 – výběr módů časovače o COM00 a COM01 – výběr chování pinu OC0, závisí na zvoleném módu časovače o CS00, CS01 a CS02 – výběr zdroje taktovacího kmitočtu pro časovač
Důležitá poznámka Časovač se zapíná nastavením zdroje taktovacího kmitočtu, není zde přítomen žádný samostatný bit, který by zapnul nebo vypnul časovač jako tomu bylo u 8051.
16
IMTEE •
Přednáška č. 7
Povolení/zákaz přerušení – registr TIMSK
o TOIE0 – povolení (1) / zákaz (0) přerušení při komparaci o OCIE0 – povolení (1) / zákaz (0) přerušení při přetečení časovače 0 •
Registr s příznaky – registr TIFR
o TOV0 – příznak přetečení časovače 0 o OCF0 – příznak dosažení shody při komparaci OCR0 a TCNT0 o Příznaky se automaticky nulují při vstupu do rutiny pro obsluhu přerušení. Při ručním mazání příznaků je do nich nutno zapsat 1 ! •
Registr TCNT0
o Uchovává aktuálně načítanou hodnotu. Lze ho číst i do něj zapisovat. •
Registr OCR0
o Obsahuje komparační úroveň, která je neustále porovnávána s TCNT0. Při shodě lze vygenerovat přerušení nebo lze využít jednotku pro generování signálu na pinu OC0. o Lze ho normálně číst i do něj zapisovat.
17
IMTEE
Přednáška č. 7
Timer/Counter 1 •
16-ti bitový, dva 8-mi bitové registry TCNT1L a TCNT1H
•
Disponuje všemi funkcemi jako má T/C0 , ale dále je rozšiřuje a zavádí mnohá vylepšení.
•
Obsahuje dvě komparační jednotky OC1A a OC1B.
•
Má záchytnou jednotku ICR1 (Input Capture Register).
•
V režimech generování PWM dovoluje uživatelsky nastavit rozlišení (hodnota TOP je určena obsahem registru OCR1A nebo ICR1 nebo lze vybrat ze třech přednastavených hodnot, které odpovídají rozlišení 8, 9 a 10 bitů PWM).
•
Registry TCNT1, OCR1A, OCR1B a ICR1 jsou 16-ti bitové a proto je nutné při zápisu do nich a čtení z nich dodržet určitý postup aby nedošlo k porušení hodnoty, kterou uchovávají.
18
IMTEE
Přednáška č. 7
Přístup k 16-ti bitovým registrům •
Přístup po bajtech – přístup k registru na dvakrát.
•
Je nutné zabezpečit, že se během čtení nebo zápisu nezmění druhý bajt, pak by již obě poloviny k sobě nepatřily. Může se např. stát, že něž přečtu dolní bajt, může dojít ke změně horního bajtu.
•
Řešením je bufferovat jednu polovinu 16-ti bitového registru. Každý 16-ti bitový časovač má speciální 8-mi bitový registr (buffer), do kterého se dočasně ukládá horní bajt 16-ti bitového čísla.
•
Zápis o Při zápisu se nejprve horní bajt uloží do bufferu a pak se společně se zápisem dolního bajtu zapíše i obsah buffferu do vyššího bajtu daného registru. o Nejprve zapíšeme horní bajt a pak teprve dolní bajt.
•
Čtení o Při čtení dolního bajtu se zároveň horní bajt uloží do bufferu a následné čtení horního bajtu vyčte hodnotu z bufferu. Tím je zajištěno, že k sobě obě poloviny patří. o Nejprve čteme dolní bajt a pak teprve horní bajt.
•
Ne všechny 16-ti bitové registry jsou vybaveny bufferem. Např. při čtení OCR1A/B nedochází k bufferování horního bajtu.
•
Při programování v assembleru je nutno dbát na toto pravidlo. Při programování v C přistupujeme rovnou na celý 16-ti bitový registr (je-li to možné), správný přístup zajistí kompilátor.
19
IMTEE
Přednáška č. 7
Záchytná jednotka (Input Capture Unit) •
Slouží pro zachycení aktuální hodnoty čítače
•
Zdrojem vstupní události je buď pin ICP1 nebo výstup z analogového komparátoru (ACO).
•
Tímto způsobem lze přesně určovat např. délku pulsu, frekvenci, střídu vstupního signálu apod.
•
Po příchodu události dojde k zachycení 16-ti bitové hodnoty časovače TCNT1 do registru ICR1 (Input Capture Register) a zároveň se nastaví příznak ICF1 (Input Capture Flag). Je-li povoleno přerušení, vykoná se. Pro mazání příznaku platí stejná pravidla již dříve zmíněná.
•
Normálně je registr ICR1 určen pouze pro čtení, ale v režimu generování PWM může sloužit i jako zdroj pro definování TOP hodnoty, takže do něj lze zapisovat.
•
Lze zapnout filtrování vstupního signálu (omezovač šumu) v případě, že je zarušen. Bit ICNC1 v registru TCCR1B povoluje omezovač šumu (Noise Canceler). Filtrování spočívá ve srovnávání 4 po sobě jdoucích vzorků a úroveň se bere za správnou, jsou-li vzorky identické. Dojde tím také ke zpoždění 4 vzorků, než se zachytí obsah časovače do ICR1. Rychlost vzorkování je rovna frekvenci oscilátoru Fosc procesoru (není ovlivněna děličkou časovače).
•
Rozlišení komparační jednotky a také maximální čas, který lze změřit je dáno frekvencí taktovacího signálu časovače (tzn. že Fosc a použitou předděličkou).
20
IMTEE
Přednáška č. 7
Komparační jednotky •
Funkce komparačních jednotek je stejná jako u časovače 0
•
Rozdíl je v tom, že jsou zde přítomny dvě - OCR1A a OCR1B, obecné značení OCR1x. K nim náleží příznaky OCF1x, povolení přerušení OCIE1x a piny OC1x.
•
Informace z komparační jednotky opět používá jednotka generování průběhu, dle zvoleného módu.
•
Registr OCR1x je dvojitě bufferován, tzn. že jsou v podstatě přítomny dva registry, z toho jeden je buffer. Bufferování je nutné při generování PWM pro správné načasování zápisu do OCR1x aby nevznikl tzv. glitch.
•
V normálním módu komparace určují bity COM1x1 a COM1x0 v registru TCCR1A jakým způsobem bude ovlivněn výstupní pin OC1x při shodě komparace. Princip je stejný jako u 8-mi bitového časovače 0.
21
IMTEE
Přednáška č. 7
Módy časovače/čítače 1 •
Lze využít všechny již zmíněné módy uvedené u časovače/čítače 0.
•
Jsou zde ale určitá vylepšení.
•
Je zde přidán jeden mód navíc (Phase and Frequency Correct Mode) a řada dalších kombinací.
•
Volba módu se provádí nastavením bitů WGM13, WGM12, WGM11 a WGM10 v řídících registrech TCCR1A a TCCR1B. Lze navolit celkem 16 různých kombinací (módů).
•
Normální mód o Stejné jako u č/č 0 s tím rozdílem, že používáme 16-ti bitový časovač.
•
CTC mód (Clear Timer on Compare Match) o Princip stejný jako u č/č 0, ale …… o Pro definici TOP hodnoty lze použít buď komparační registr OCR1A nebo registr ICR1. o Všechny poznatky řečené u č/č 0 v tomto módu platí i zde s tím rozdílem, že zde používáme 16-ti bitový časovač. (Co se stane při zápisu nuly nebo maximální hodnoty do komparačního registru a vzorce pro výpočet frekvence jsou stejné jako u č/č 0).
22
IMTEE
•
Přednáška č. 7
Fast PWM mód o Princip stejný jako u č/č 0 v tomto módu, ale …… o Lze hýbat s TOP hodnotou čímž lze měnit rozlišení PWM. (U č/č 0 napevno 8 bit – čítá od 0 do 255). Rozlišení zde může nabývat pevných hodnot 8, 9 nebo 10 bitů nebo může být určeno hodnotou v registru ICR1 nebo OCR1A. Maximální rozlišení je 16 bit (ICR1 nebo OCR1A = 65535). Minimální je 2 bity (ICR1 nebo OCR1A = 3). Pro rozlišení platí následující vztah: log (TOP + 1) RFPWM = log ( 2 ) o Většinou se použije registr ICR1 pro definování TOP hodnoty – rozlišení (nebo se použije jedna z přednastavených hodnot). Registry OCR1A a OCR1B slouží jako komparační. o Chceme-li často měnit frekvenci PWM (uvědomit si souvislost mezi frekvencí a rozlišením) je lepší použít OCR1A pro definici TOP hodnoty, protože je bufferován na rozdíl od ICR1. o Je-li použit OCR1A jako TOP, je nutné nastavit pin OC1A do módu změny stavu při dosažení komparační shody. Pak je na výstupu signál se střídou 50 %. Jinak by se výstup neměnil. Tím se vlastně dostaneme do CTC módu. o Frekvence PWM se vypočte jako: FOSC fOC1xPWM = , kde n je dělící poměr předděličky časovače n ⋅ (1 + TOP) o Chování v případě zápisu limitních hodnot do komparačního registru je stejné jako u č/č 0. o Lze nastavit invertující a neinvertující mód PWM pomocí bitů COM1A1 a COM1A0 v registru TCCR1A.
23
IMTEE
•
Přednáška č. 7
Phase Correct PWM mód o Princip stejný jako u č/č 0 v tomto módu, ale ……. o Rozlišení lze opět volit jako u předchozího Fast PWM módu stejným způsobem (8, 9 nebo 10 bitů či TOP = OCR1A nebo TOP = ICR1). o Změna TOP hodnoty (a tím změna frekvence), když časovač běží, může způsobit nesymetrický puls na výstupním pinu OC1x – viz obrázek. Proto se doporučuje použít nově zavedený mód Phase and Frequency Correct Mode, kde je toto ošetřeno. V případě, že se TOP hodnota nemění, jsou tyto dva módy rovnocenné. o Frekvence PWM se vypočte jako: FOSC , kde n je dělící poměr předděličky časovače f OC1xPCPWM = 2 ⋅ n ⋅ TOP
24
IMTEE •
Přednáška č. 7
Phase and Frequency Correct PWM mód o Skoro stejný jako předešlý mód Phase Correct s tím rozdílem, že se komparační hodnota do registru OCR1A(B) automaticky z bufferu zapisuje v momentě kdy časovač dosáhne nuly. V předešlém módu to bylo naopak – když časovač dosáhl TOP hodnoty. Tím je dosaženo symetrie pulsu vzhledem k periodě. o Vše co platí pro předchozí mód platí i pro tento.
25
IMTEE
Přednáška č. 7
Přehled registrů pro obsluhu časovače/čítače 1 •
Řídící registr TCCR1A
o A – bity patřící komparační jednotce A o B – bity patřící komparační jednotce B o FOC1A a FOC1B – vynucení signálu shody komparace (pouze v ne-PWM módu časovače) o WGM11 a WGM10 – výběr módů časovače spolu s WGM13 a WGM12 o COM1A(B)1 a COM1A(B)0 – výběr chování pinu OC1A(B), závisí na zvoleném módu časovače •
Řídící registr TCCR1B
o ICNC1 – aktivace/deaktivace omezovače šumu pro záchytnou jednotku o ICES1 – určuje při jaké hraně vstupního signálu dojde k zachycení, vzestupná (ICES1 = 0) nebo sestupná (ICES0 = 1) hrana o WGM13 a WGM12 – výběr módů časovače spolu s WGM11 a WGM10 o CS12, CS11 a CS10 – volba zdroje signálu a předděličky
26
IMTEE
Přednáška č. 7
Módy časovače 1
•
Povolení/zákaz přerušení – registr TIMSK
o TICIE1 – povolení (1) / zákaz (0) přerušení při zachycení o OCIE1A(B) – povolení (1) / zákaz (0) přerušení při komparaci (jednotka A nebo B) o TOIE1 – povolení (1) / zákaz (0) přerušení při přetečení časovače •
Registr s příznaky – registr TIFR
o ICF1 – příznak, že došlo k zachycení na pinu ICP1 nebo je příznak nastaven, při dosažení TOP hodnoty, když je ICR1 použit v módech PWM o TOV1 – příznak přetečení časovače 1 o OCF1A(B) – příznak dosažení shody při komparaci OCR1A(B) a TCNT1
27
IMTEE
Přednáška č. 7
Timer/Counter 2 •
8-mi bitový
•
Má stejné vlastnosti jako č/č 0.
•
Navíc může být taktován asynchronně z externího krystalu 32,768 kHz připojeného na vývody TOSC1 a TOSC2 mikrokontroléru. Využití jako RTC (hodiny).
•
Výběr zdroje se provádí v registru ASSR (Asynchronous Status Register).
•
Při práci s časovačem v asynchronním režimu je nutno dodržovat určité postupy.
•
Podrobnosti viz datasheet.
28