Seriál - PIC16F84 - 20 - čítač/časovač
30. 11. 07 - 12:26. Napsal Jiří Chytil. Přečteno 7725x. 5 komentářů
Nastavení a použití čítače a časovače v MCU PIC16F84.
Čítač / časovač (dále jen č/č) má pro svou práci vyčleněn 8 bitový registr a předděličkou s dělícím poměrem až 1:256. Rozdíl mezi čítačem a časovačem je ve zdroji signálu. Signál pro časovač pochází z hodinového signálu oscilátoru. Frekvence načítání je tedy stejná jako frekvence vykonávání strojových cyklů tedy Frekvence Oscilátoru vydělá čtyřmi. Zatím co signál pro čítač pochází z externího zdroje signálu. Tím může být například ona klávesnice, o které byla zmínka v předchozí kapitolka. Režim č/č volíme nastavením nebo nulováním bitu T0CS (v registru OPTION). Pokud je bit nulován, je zvolen režim časovače. Pokud je bit nastaven, tedy je v logické jedna, máme zvolen režim čítače. Již jsme zmínil, že čítač reaguje na externí signál. Ovšem jsou zde nějaké podmínky. Na externím signálu totiž dochází ke zpoždění od aktivní hrany signálu do inkrementování obsahu registru. Doba trvání tohoto zpoždění jsou dva strojové cykly. Této doby tedy nemůžeme využít k přivedení dalšího impulzu, který by PIC byl schopen zaregistrovat. Dalším bitem registru OPTION, který zde hraje roli je T0SE, který určuje, zda bude čítač reagovat na sestupnou nebo vzestupnou hranu. Pokud je vynulován, probíhá inkrementace s náběžnou hranou a pokud je nastaven, probíhá s hranou sestupnou. Vstup je opatřen Schmittovým klopným obvodem (dále jen SKO).
Dalším důležitým obvodem je zmíněná dělička. Jeli-li použita předdělička můžeme na uP přivádět i impulzy s vyšší frekvencí než bez ní. Musí ale být dodrženo doba trvání impulzu, ta je pro L i H minimálně 10ns. Předdělička je nastavována bity PS0, PS1, PS2 v registru OPTION. Různými kombinacemi lze dosáhnout dělícího poměru 1:2 až 1:256. Předěličku před č/č zařezujeme vynulováním bitu PSA v registru OPTION. Dělící poměry nastavuje podle tabulky na následující straně.
Předdělička pro č/č je sdílena s časovačem WATCHDOG, pokud tedy děličku použít nechceme, přiřazujeme ji časovači WATCHDOG nastavením bitu PSA do logické jedna. U časovače WATCHDOG (o kterém se budeme bavit později) lze poměry dělení nastavit od 1:1 (dělička je vlastně nevyužita) po 1:128. Nyní bych přistoupil k ukázce kódu, prozatím si ukážeme pouze čítač.
INCLUDE "P16F84A.INC" LIST P=16F84A, R=DEC __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC ;------------------------------------------------------------- BSF STATUS,RP0 ;inicializace uP MOVLW b'00000000' MOVWF TRISB MOVLW b'00011111' MOVWF TRISA MOVLW b'10100111' ;nastavení čítače MOVWF OPTION_REG BCF STATUS,RP0 zac MOVF TMR0,0 ;přesun dat z TMR0 MOVWF PORTB ;na port B GOTO zac END ;konec programu
Program pracuje velice jednoduše. Jde jen o ukázku, kdy nějakými signály přičítáme do registru hodnoty a zobrazujeme je na výstupech PORTB. Dělení v tomto programu je nastavené na 1:256 (červeně vyznačené bity). Zeleně vyznačené bity určují nastavení zdroje impulzů a aktivní hrany. Bit vyznačený fialově předřazuje předděličku před čítač.
Novinky Další novinky
Anketa
Jaký obchod preferujete při nákupu součástek?
TME
GES
GME
Farnell
SOS electronic
TIPA
EZK
PS Electronic
Mouser
Buček
Denkl Electronic
FK Technics
Hadex
Conrad
Jiný český
Jiný zahraniční
Poslední komentáře