česky english Vítejte, dnes je sobota 23. listopad 2024

Připojení čítače/časovače 8253 k mikroprocesoru přes SPI rozhraní

DPS 3/2011 | Články
Autor: doc. Ing. Rudolf Jalovecký, CSc., Univerzita obrany

Programovatelný časovač/čítač 8253 respektive novější 8254 je vývojově jeden z prvních programovatelných obvodů, které se v minulosti objevily na trhu. Jeho vlastnosti jsou i v současnosti velmi užitečné a zcela nezávislá programovatelnost všech tří časovačů v 6 různých módech je velmi variabilní. Nevýhodou obvodu jsou jeho vstupní obvody, tedy obvody sloužící k připojení k mikroprocesoru. Obvod je řešen pro připojení na paralelní port a dalších 5 řídicích vstupů, což odpovídá době vývoje tohoto obvodu, tedy používání standardních 8bitových procesorů s vyvedenou adresovou, datovou a řídicí sběrnicí. Pro použití s moderními mikroprocesory je vhodné upravit toto rozhraní tak, aby byl časovač vhodně připojitelný k současným typům procesorů, bez zabrání většího počtu V/V linek procesoru. Jeden z možných způsobů připojení je použít sériový protokol SPI, který najdeme v každém jednočipovém mikroprocesoru resp. jej můžeme i jednoduše naprogramovat [3] a následně použít obvod typu SIPO (Seriál Input Paralel Output).

Článek konkrétně ukazuje připojení programovatelného obvodu 8253 k mikroprocesoru s použitím sérioparalelního převodníku HCT595 (SIPO). Pro potřebu získání prakticky 13 paralelních linek a použití časovače pouze v režimu zápisu (nebudeme tedy používat režimy čtení dat z čítačů) lze sérioparalelní převod realizovat např. podle obr. 1.

Obr. 1 Schéma zapojení programovatelného čítače 8253 na sériové rozhraní SPI

Obr. 1 Schéma zapojení programovatelného čítače 8253 na sériové rozhraní SPI

Připojení obvodu SIPO k SPI je popsané např. v [1] či [2] a je řešeno prakticky dvěma vodiči označenými SODATA [Serial Output DATA] a SCLK [Serial Clock]. Ostatní dva vodiče slouží k ovládání režimů obvodu HCT595. Signál RESET je generován z Reset obvodu použitého pro mikroprocesor a signál CE_595 pak slouží k programovému výběru obou SIPO obvodů. Pro ovládání konkrétního programovatelného obvodu 8253 je použit signál CE_53. Z předvedeného principu zapojení výběru obvodu 8253 je zřetelné, že je možné použít i více programovatelných obvodů 8253 zapojených paralelně na oba obvody SIPO a výběr konkrétního programovatelného obvodu realizovat signály výběru konkrétního obvodu (označeno např. CE_53_1, CE_R3_2 apod.).

Obr. 2 Zobrazení významu jednotlivých bitů řídicího slova pro obsluhu časovače 8253

Obr. 2 Zobrazení významu jednotlivých bitů řídicího slova pro obsluhu časovače 8253

Tabulka 1 Popis signálů pro ovládání obvodů SIPO dle obr. 1

Z hlediska programové obsluhy bude celý časovač obsloužen dvěma 8bitovými slovy. V prvním vysílaném slově využijeme jen dolní 4 bity jako řídicí slovo pro časovač (viz tab. 1.), druhé 8bitové slovo bude obsahovat vysílaná data. Podrobný význam jednotlivých bitů je na obr. 2. Na straně mikroprocesoru připojíme celou sestavu 5 vodičů, z nichž pouze 4 budou ovládány přímo procesorem. Na obr. 3 je uveden záznam z logického analyzátoru se zachycením okamžiku zápisu řídicího slova do čítače 2.

Obr. 3 Časový průběh signálu pro obsluhu programovatelného obvodu 8253 jedním řídicím slovem 1111 1001 zápis do čítače 2 1010 1100 data

Obr. 3 Časový průběh signálu pro obsluhu programovatelného obvodu 8253 jedním řídicím slovem 1111 1001 zápis do čítače 2 1010 1100 data

V některých mikroprocesorech není vestavěno plné rozhraní SPI, to lze poměrně jednoduše obejít jeho naprogramováním [3] za cenu ztráty určitého strojového času.

Informativní popis programovatelného čítače /časovače 8253

Programovatelný čítač/časovač je velmi univerzálním programovatelným obvodem. Lze jej využít na mnoho aplikací, které by se s vestavěnými čítači obtížně realizovaly, resp. by je plně vytížily. Ať již je to generování různých časových událostí, které mohou nastat za určitých podmínek, realizace čítačů událostí (i nahodilých) pro něž využití vnitřního časovače je velký přepych, generování opakovacích frekvencí a v neposlední řadě generování dvou PWM signálů se společnou opakovací frekvencí a různou střídou impulsu, např. pro řízení otáček ss motorů [6, 7].

Vnitřní schéma obvodu je na obr. 4. Vidíme zde 3 šestnáctibitové čítače, které mohou čítat v dekadickém nebo hexadecimálním módu. Vstupy čítačů jsou označeny CLK (0, 1, 2), neboť se většinou na vstup přivádí čítané impulsy či hodinové impulsy. Výstupy čítačů jsou označeny OUT (0, 1, 2), jejich funkce je různá podle nastaveného módu čítání. Zajímavá je funkce hradlovacího vstupu GATE, která je rozdílná podle naprogramovaného módu čítače, ale prakticky ve všech módech čítačů je hradlovací vstup GATE použit pro ovládání čítání vnitřního čítače resp. pro spouštění čítání.

Obr. 4 Vnitřní blokové schéma programovatelného časovače 8253

Obr. 4 Vnitřní blokové schéma programovatelného časovače 8253

Mód 0 – čítač událostí

Po zápisu řídicího slova do čítače se výstup OUT nastaví do stavu „L“ a započne čítání impulsů na vstupu IN. Po ukončení čítání přejde výstup OUT do stavu „H“ a zůstane v tomto stavu až do okamžiku nového zápisu stavového slova. V literatuře se často tento režim nazývá jako přerušení na konci čítání.

Obr. 5 Grafický přehled funkce v módu 0

Obr. 5 Grafický přehled funkce v módu 0

Mód 1 – programovatelný MKO

Po zápisu řídicího slova do čítače se s následující vzestupnou hranou signálu GATE započne ihned čítání a současně výstup OUT přejde do stavu „L“ a zůstane až do okamžiku dočítání čítače na hodnotu 0000H. Další impuls na výstupu se objeví až po příchodu další vzestupné hrany signálu GATE.

Mód 2 – dělení frekvence číslem N (1 CLK)

Po zápisu řídicího slova do čítače se výstup OUT ihned nastaví na hodnotu „H“ po dočítání na hodnotu 0000H přejde výstup OUT na dobu jedné periody vstupního signálu na hodnotu „L“. Frekvence takto generovaných impulsů je rovna frekvenci vstupního signálu dělené hodnotou zapsanou do čítače.

Mód 3 – dělení frekvence číslem N (1:1)

Zcela shodný režim jako mód 2 s tím rozdílem, že pro sudou hodnotu zapsaného řídicího slova zůstane výstup OUT ve stavu „H“ po dobu poloviny zapsaného čísla, pro lichou hodnotu pak zůstává ve stavu „H“ o jednu periodu vstupního signálu déle. Po dočítání do hodnoty 0000H dochází opět k nastavení výstupu do úrovně „H“.

Mód 4 – generování programově spouštěného impulsu

Po zápisu řídicího slova do čítače se výstup OUT nastaví do stavu „H“ a počne čítání. Po dočítání do hodnoty 0000H dojde ke změně stavu výstupu OUT na „L“ po dobu jedné vstupní periody a pak hned přejde do stavu „H“. Ke změně výstupu již dále nedochází, pokud se nezapíše nová hodnota řídicího slova.

Mód 5 – generování signálem spouštěného impulsu

Stejná funkce jako v módu 4, s tím rozdílem, že čítač započne čítat s náběžnou hranou na vstupu GATE.

Co nám použití externího programovatelného čítače/časovače přináší?

Nespornou výhodou je skutečnost, že uvedený obvod nemá vstupní signál RESET a tudíž při případném resetu zařízení v průběhu jeho činnosti (zabloudění programu, zatuhnutí apod.) nedojde k přerušení funkcí naprogramovaných režimů činnosti. To je velmi výhodné např. při ovládání výstupního zařízení formou PWM., kdy výpadek řídicích impulsů může způsobit nepřípustné stavy na ovládaném zařízení.

Tabulka 2 Sériový výstup 2 × 595 – význam linek

Variabilita programování obvodu 8253 je velmi velká, každý časovač/čítač je možné zcela samostatně programovat v libovolném režimu a následně obsluhovat. Možnost paralelního rozšiřování, připojením více programovatelných obvodů, prakticky ke stávajícímu zapojení s minimálním rozšířením počtu V/V linek mikroprocesoru.

Nevýhodou uvedeného zapojení je skutečnost, že v dané konfiguraci není možné z obvodu 8253 číst informace, tedy využívat režimy čítače událostí pro případnou potřebu čtení dat z obvodu 8253 a přitom zachovat výhodu připojení k mikroprocesoru „jen“ přes sériové rozhraní PSI. Pro tento případ by bylo nutné schéma doplnit o jeden obvod PISO a zajistit v okamžiku čtení z obvodu 8253 programové odpojení prvního obvodu SIPO od datové sběrnice obvodu 8253.

Literatura

[1] JALOVECKÝ, R. Efektivně na PWM. Web HW server – www.hw.cz, 2001, [cit. 9. 1. 2010] URL: <http://hw.cz/ Teorie-a-praxe/Programovani/ART- 471-Efektivne-na-PWM-s-x51.html>
[2] JALOVECKÝ, R., Efektivně na PWM. Časopis Sdělovací technika, č. 8, 2000. ISSN 0036-9942.
[3] JALOVECKÝ, R. SPI rozhraní použité na SIPO obvod. Sdělovací technika, 2001, č. 8, ISSN 0036-9942.
[4] JALOVECKÝ, R., KYNCL, L. Ovladač stejnosměrného motoru využívající PWM, Sdělovací technika, 2001, č. 11, ISSN 0036-9942. (50 %)
[5] JALOVECKÝ, R., KYNCL, L. Ovladač stejnosměrného motoru využívající PWM, Web HW server – www. hw.cz, 2004, [cit. 10. 1. 2010], URL: <http://hw.cz/docs/motor_rizeni/ss_ motor_pwm.html>
[6] DUB, M.; JALOVECKÝ, R.: Unipolar PWM Generation Unit for BTS780GP Based Driver. In Proceedings of the International Conference on Military Technologies „ICMT 2009“. May 5-6, 2009, Brno, Czech Republic. Brno, University of Defence, 2009, s. 375–379. ISBN: 978-80- 7231-649-6.
[7] DUB, M.; JALOVECKÝ, R.: PWM Controlled DC Drive with ADuC812 Microcontroller. In Recent Advances in Mechatronics 2008-2009. Best contribution presented at the 8th International Conference „Mechatronics 2009“. November 18-20, 2009, Luhačovice, Czech Republic. Berlin Heidelberg, Springer-Verlag, 2009, s. 269–274. ISBN: 978-3-642-05021-3.