Časovač (timer)

Page

Stránky / Arduino / Pod kapotou Arduina /

Arduino Uno používa mikrokontrolér ATmega328P a praktický každý mikrokontrolér v sebe obsahuje časovače. Časovače sa dajú využívať na množstvo úloh. Postupne sa s týmito možnosťami oboznámime.

ATmega328P

Mikrokontrolér obsahuje 3 časovače:

  • Timer0 - 8-bitový. Je využitý na aktualizáciu času v Arduine.
  • Timer1 - 16-bitový.
  • Timer2 - 8-bitový.

Časovače v ďalších mikrokontroléroch

ATtiny85

Mikrokontrolér obsahuje 2 časovače:

  • Timer0 - 8-bitový.
  • Timer1 - 8-bitový.

ATtiny13A

Mikrokontrolér obsahuje 1 časovač:

  • Timer0 - 8-bitový.

ATmega2560

Mikrokontrolér obsahuje 6 časovačov:

  • Timer0 - 8-bitový.
  • Timer1 - 16-bitový.
  • Timer2 - 8-bitový.
  • Timer3-5 - 16-bitový.

Zdroj hodinového signálu

Časovač potrebuje na svoju činnosť zdroj hodinového signálu. Ten môže byť rôzny a od toho závisí, ako sa bude časovač prejavovať.

  • Žiadny zdroj hodín - Vtedy je časovač vypnutý.
  • Interný hodinový signál - Základný hodinový signál je možné pomocou preddeličiek znížiť na požadovanú hodnotu. Deličky majú obvykle hodnoty 1, 8, 64, 256, 1024, ale niekedy sa vyskytujú aj iné hodnoty. Zníženie frekvencie hodín je užitočné, pretože obvykle časovače nepoužívame na vysokej frekvencii, ale snažíme o nejakú frekvenciu, ktorá je bližšia potrebám. Napríklad ak potrebujeme generovať nejaký signál na frekvencii 1 Hz, stačí nám signál základných hodín znížiť deličkou a až potom s ním nejako manipulovať.
  • Externý hodinový signál - Externý hodinový signál nám umožňuje rátať externé signály. Vtedy hovoríme, že časovať pracuje ako počítadlo.

Režim generovania signálu

Generovaný signál sa môže tvoriť v rôznych režimoch. Každý režim má svoje špecifické nastavenie registrov. Arduino napríklad tieto režimy používa na generovanie PWM signálu.

  • Normálny
  • PWM Phase Correct
  • CTC
  • Fast PWM
  • PWM Phase and Frequency Correct

Online kalkulačka

V článkoch sa na generátor zdrojového textu budem obracať často. Preto je vhodné, ak si zapamätáte tento hypertext a budete ho používať vo svojich projektoch.

CTC Timer Calculator

Články v blogu o časovačoch ATmega328P

8x PWM na jednom Arduine

Arduino Uno má 6 PWM kanálov na pinoch 3, 5, 6, 9, 10 a 11. V tomto článku si ukážeme, že to nemusí byť konečný počet. Hardverové PWM ale musíme nahradiť vlastným kódom. V tomto príklade využijeme timer, pomocou ktorého si budeme generovať prerušenie na dostatočne vysokej frekvencii, aby sme boli schopní simulovať PWM na ôsmich kanáloch naraz.

Čítanie stavu tlačidla pomocou timera

Pomocou timera si môžete zjednodušiť viaceré úlohy. Môžete ho využiť aj na kontrolu stavu tlačidla. V tomto článku si ukážeme, ako môžeme kontrolovať dve tlačidlá, ktoré menia hodnotu premennej. Jedno tlačidlo hodnotu znižuje a druhé ju zvyšuje. Počas stlačenia tlačidla sa všetko deje s minimom kódu a v tomto špeciálnom prípade nie je ani potrebné ošetrovať zákmity na tlačidlách.

16-bitové rozlíšenie PWM pre Arduino

Arduino má implicitne všetky PWM kanály nastavené na 8-bitové rozlíšenie. Toto nie je maximálne rozlíšenie. Timer1 vie použiť až 16-bitové rozlíšenie. V tomto článku si ukážeme, ako to urobiť.

Stmievač LED pomocou timera

Stmievanie LED diódy možno naprogramovať viacerými spôsobmi. V tomto článku sa zameriame na to, aby sme nemali v programe funkciu delay, ktorá brzdí beh programu tak, že sa už nemôže venovať ničomu inému. Nebudeme ani používať funkciu millis, ktorou sa dá odstrániť zdržiavanie programu. Namiesto toho budeme používať timer, ktorý si nastavíme tak, aby nám v pravidelných intervaloch dával signál, kedy máme vykonať ďalší krok stmievania.

Timer1 - 8, 9 a 10-bit PWM

Funkcia analogWrite v Arduine podporuje iba 8-bitový mód. Na timeri1 si možete zapnúť aj 9 a 10-bitový mód, ktorý vám poskytne vyššie rozlíšenie pre PWM signál. V tomto článku si ukážeme, ako sa to dá urobiť.

Timer1 - 10-bitové PWM a potenciometer

V tomto článku si ukážeme, ako sa používa 10-bitový mód na timeri1. Aby sme si mohli hodnotu striedy pohodlne nastavovať, použijeme jeden potenciometer. Analógové meranie poskytuje 10-bitové rozlíšenie a preto nemusíme robiť žiadnu konverziu. Nameranú hodnotu analógového vstupu si zobrazime na OLED displeji.

​Iné mikrokontroléry


24.01.2017


Menu