Jak spočítat, kolikrát projelo autíčko na autodráze?

Erik Yokotashi Hamera 19. 8. 2009

Vypadá to jednoduše. Na autodráhu se přidělá světelná závora a výstup se přivede na některý ze vstupů paralelního portu. Pak již jen čteme ve smyčce stav vstupů paralelního portu a při změně (na autodráze je celkem jedno, jestli při náběžné hraně nebo sestupné hraně, ale ne na obou) přičítáme jedničku.

Jenomže se občas stane, že si počítač nějakého průjezdu nevšimne. Takže je potřeba nějaká paměť na průjezdy.

Čítač

Nejjednodušším řešením je čítač. Čítač je zařízení, které dostává na vstup impulsy a na výstupu má číslo. Vyrábějí se různé obvody s čítači. Čítače binární (počítají jen 0 a 1, takže je to vlastně dělička kmitočtů dvěma), dekadické (počítají od 0 do 9 a při přechodu 9 → 0 pošlou na výstup impuls, nebo se jako impuls použije dekadická 0), hexadecimální (což jsou 4 binární za sebou), nebo třeba děliče 32768 (32768 Hz je běžný kmitočet hodinových krystalů, takže tento čítač vyrobí pulsy dlouhé 1 s). Připojovat k počítači dekadický čítač je spíše nepraktické, protože nevyužijeme všechny kombinace vstupů. Také se vyrábějí čítače, které umí čítat vpřed i vzad. Připojit jde samozřejmě jakýkoliv čítač, jen je potřeba, aby měl vyvedené všechny bity, které chceme brát v úvahu.

Jak takový čítač funguje uvnitř? Vzpomeňte si na popis klopného obvodu D. Při aktivním signálu C (hodiny) se přepíše stav vstupu D na výstup Q (a na /Q je pak samozřejmě negace Q). Co se stane, když zapojíme výstup /Q na vstup D? Při každém příchodu hodin se změní stav čítače, protože na /Q je vždy opačný stav, než byl naposledy na D. Obvody, které byly nakresleny minulém článku měly ovládání hodin úrovní. Obvod by tedy fungoval tak, že by se při log 1 na hodinovém vstupu rozkmital, protože by přepsal D → Q, tím by změnil /Q a tedy i D a to by zase přepsal na Q. Takový obvod by byl dost k ničemu. Běžné obvody D mají naštěstí hodiny řízené hranou a ne úrovní (jejich vnitřní zapojení je o něco složitější – obsahuje de facto dva klopné obvody R-S a nějaká hradla navíc), takže je lze takto zapojit.

Binární čítač

Na vstup C tedy přivádíme signál a na výstupu Q se nám mění signál vždy po vzestupné (nebo sestupné – podle použitého obvodu) hraně vstupního signálu, takže má poloviční kmitočet. Z hodnoty je vždy vidět, zda dosud přišel sudý, nebo lichý počet vstupních pulsů. Máme tedy binární čítač (umí dva stavy – 0 a 1).

Vícebitový čítač

Těchto čítačů není problém zapojit za sebe více – výstup Q jednoho se připojí na vstup C dalšího. Výsledný čítač je tolikabitový, kolik jich zapojíme. Například z pěti klopných obvodu D je čítač od 0 do 31. Pak samozřejmě čítač přeteče, takže nelze poznat, jestli mezi čteními přišlo 32 impulsů, 64 impulsů, nebo žádný.

5bitový čítač

Atomické čtení

Proč zrovna pět bitů? Paralelní port má pět vstupu. Možná vás napadne, proč nepoužít multiplexer vstupů …

Řekněme, že máme osmibitový čítač připojený přes čtyřbitový multiplexer. Na čítači je hodnota 0×2f. Čteme spodní půlku. Získali jsme ‚f‘. Přepneme multiplexer. Během toho přijde vstupní impuls a překlopí čítač na 0×30. Přečteme horní půlku. Získáme ‚3‘. Myslíme si, že na čítači je 0×3f, což je zjevně špatně. Správné hodnoty jsou 0×2f, nebo 0×30. Problém je tedy ve čtení nadvakrát. Řešení je použít nějaký registr, do kterého se hodnota přepíše najednou a pak ho postupně přečteme. Registr musí být alespoň stejně velký, jako čítač. To už jsme dělali při zvyšování počtu výstupu paralelního portu. Takže připojíme 16-bit čítač – to je 16 klopných obvodů, k tomu dalších 16 klopných obvodů na zapamatování a další obvody na multiplexer. To bude pěkně velká deska. A přesně takový šestnáctibitový čítač je v osmibitovém mikroprocesoru atmega8, což je jedno pouzdro za 32 Kč (také tam museli vyřešit atomické čtení 16-bit slova do dvou 8-bit registrů). Z toho je vidět, že nemá smysl dělat velké čítače z jednotlivých klopných obvodů (nejsou-li extrémní nároky na rychlost).

Čítač jako výstup

Je-li potřeba více výstupů, ale procházejí se cyklicky všechny, nebo se procházejí vždy vzestupně a nevadí, když se na chvíli zapne nějaký nepotřebný, je možno ušetřit nějaké výstupy oproti dekodéru 1zN použitím čítače. Čítač potřebuje jeden výstup (kterým se čítá) a jeden vstup (kterým se zjišťuje, kdy je na začátku), případně druhý vstup (kterým se resetuje).

Za pomoci vhodně zapojených čítačů by šlo například připojit binární hodiny na jediný výstup paralelního portu (nebo by je samozřejmě šlo udělat jenom z čítačů a krystalového oscilátoru – tak fungují i běžné digitálky).

Ohodnoťte jako ve škole:

Průměrná známka 2,79

Našli jste v článku chybu?
Zasílat nově přidané příspěvky e-mailem
Lupa.cz: Wi-Fi o vás ví mnohé. Co umí hotspot v hospodě?

Wi-Fi o vás ví mnohé. Co umí hotspot v hospodě?

Podnikatel.cz: Rozjel byznys s koženými obojky pro psy

Rozjel byznys s koženými obojky pro psy

Podnikatel.cz: Babiš chce zrušit daňový bonus na dítě

Babiš chce zrušit daňový bonus na dítě

120na80.cz: Střevní chřipka řádí. Co s ní?

Střevní chřipka řádí. Co s ní?

Podnikatel.cz: Není jim to, tak to vrátí. Víme, jak na ně

Není jim to, tak to vrátí. Víme, jak na ně

Měšec.cz: Vše o dani z nemovitých věcí

Vše o dani z nemovitých věcí

Vitalia.cz: Pozor na potraviny s atropinem

Pozor na potraviny s atropinem

Lupa.cz: Osmý plán na stavbu rychlých sítí je nedodělek

Osmý plán na stavbu rychlých sítí je nedodělek

Lupa.cz: Jak na wifi zdarma? Praha 11 se spojila s komunitou

Jak na wifi zdarma? Praha 11 se spojila s komunitou

Podnikatel.cz: Podal přiznání, má přeplatek. Nevrátí mu ho

Podal přiznání, má přeplatek. Nevrátí mu ho

Měšec.cz: Katalogoví šmejdi. Oberou vás o 30 tisíc a legálně.

Katalogoví šmejdi. Oberou vás o 30 tisíc a legálně.

Podnikatel.cz: Kontrola ze sociálky se nedozvonila, má průšvih

Kontrola ze sociálky se nedozvonila, má průšvih

Vitalia.cz: Černá ředkev: silné přírodní antibiotikum

Černá ředkev: silné přírodní antibiotikum

Lupa.cz: Tip: tucet užitečných shieldů pro Arduino

Tip: tucet užitečných shieldů pro Arduino

Vitalia.cz: Proč si černý kašel cestu zpátky našel

Proč si černý kašel cestu zpátky našel

Vitalia.cz: Ministerstvo: Palmový olej nezakážeme, není důvod

Ministerstvo: Palmový olej nezakážeme, není důvod

Podnikatel.cz: Proč podnikat, když hází klacky pod nohy

Proč podnikat, když hází klacky pod nohy

Podnikatel.cz: Snadné a levné nástroje na emailing

Snadné a levné nástroje na emailing

Lupa.cz: Vlhký sen vnitra se splnil: vznikl státní podnik pro IT

Vlhký sen vnitra se splnil: vznikl státní podnik pro IT

Vitalia.cz: Fuck you, rakovino

Fuck you, rakovino

Ušetřete