Hlavní navigace

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

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.

Tweetni to Odměnte autora  Jak to funguje?

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,80
Tweetni to Odměnte autora  Jak to funguje?

Vzdělávejte sebe i své lidi





.
  •  
    Firemní školení pro web a online marketing
  • Obsah školení přizpůsobíme na míru vaší firmě.
  • Odnesete si informace, které ihned uplatníte v praxi.

Detailní informace o individuálních školeních pro firmy »

       

Přehled názorů

hmmm, a co dela
dejfson 19. 8. 2009 00:39
Nový
To je spíš jen hra na čítač.
Medved 19. 8. 2009 07:51
Nový
└ 
Re: To je spíš jen hra na čítač.
povinná 19. 8. 2009 20:37
Nový
zakmity
rado 19. 8. 2009 08:15
Nový
├ 
Re: zakmity
vojta 19. 8. 2009 12:56
Nový
└ 
Re: zakmity
povinná 19. 8. 2009 20:34
Nový
 
├ 
Re: zakmity
Michal Fojtík 19. 8. 2009 20:43
Nový
 
└ 
Re: zakmity
JAZZZ 19. 8. 2009 22:31
Nový
 
 
└ 
Re: zakmity
Zmrd 20. 8. 2009 07:29
Nový
Nebo z kalkulačky
NA 19. 8. 2009 08:41
Nový
└ 
Re: Nebo z kalkulačky
PL 19. 8. 2009 11:51
Nový
Re: Jak spočítat, kolikrát projelo autíčko na autodráze?
Martin 19. 8. 2009 10:15
Nový
└ 
Re: Jak spočítat, kolikrát projelo autíčko na autodráze?
Culibrk 20. 8. 2009 08:56
Nový
WTF?
FFF 19. 8. 2009 10:39
Nový
└ 
Re: WTF?
s 19. 8. 2009 11:55
Nový
Zajima to vubec nekoho?
mekkys 19. 8. 2009 10:41
Nový
├ 
Re: Zajima to vubec nekoho?
povik 19. 8. 2009 11:15
Nový
│
└ 
Re: Zajima to vubec nekoho?
pet 19. 8. 2009 11:30
Nový
│
 
└ 
Re: Zajima to vubec nekoho?
Culibrk 20. 8. 2009 08:51
Nový
├ 
Re: Zajima to vubec nekoho?
FFF 19. 8. 2009 13:10
Nový
│
└ 
Re: Zajima to vubec nekoho?
J.M. 19. 8. 2009 13:31
Nový
├ 
Re: Zajima to vubec nekoho?
Johnny S 19. 8. 2009 17:59
Nový
└ 
Re: Zajima to vubec nekoho?
mk 21. 8. 2009 10:33
Nový
 
└ 
Re: Zajima to vubec nekoho?
qk 22. 8. 2009 01:41
Nový
centralni mozek lidstva
turzin.netau.net 19. 8. 2009 12:46
Nový
└ 
Re: centralni mozek lidstva
Michal Fojtík 19. 8. 2009 20:53
Nový
 
└ 
Re: centralni mozek lidstva
milan 19. 8. 2009 23:18
Nový
 
 
└ 
Re: centralni mozek lidstva
Seth 20. 8. 2009 10:33
Nový
Kvalitka :D
Seth 19. 8. 2009 14:43
Nový
├ 
Re: Kvalitka :D
Medved 19. 8. 2009 16:26
Nový
│
├ 
Re: Kvalitka :D
Seth 19. 8. 2009 21:57
Nový
│
│
└ 
Re: Kvalitka :D
Medved 20. 8. 2009 15:10
Nový
│
└ 
Re: Kvalitka :D
Drakor 20. 8. 2009 11:27
Nový
├ 
Re: Kvalitka :D
sh 19. 8. 2009 22:25
Nový
│
└ 
Re: Kvalitka :D
Seth 20. 8. 2009 10:00
Nový
└ 
Re: Kvalitka :D
Culibrk 20. 8. 2009 09:05
Nový
 
└ 
Re: Kvalitka :D
Culibrk 20. 8. 2009 09:12
Nový
atomicke cteni...
mbnmnm 19. 8. 2009 15:34
Nový
└ 
Re: atomicke cteni...
vandrovnik 19. 8. 2009 17:38
Nový
 
└ 
Re: atomicke cteni...
mbnmbnm 20. 8. 2009 16:31
Nový
to je zradlo :)
uber bear 19. 8. 2009 19:18
Nový
└ 
Re: to je zradlo :)
Hnidopich 19. 8. 2009 19:26
Nový
Zlá věc
XiXao 21. 8. 2009 00:05
Nový
       

Tento text je již více než dva měsíce starý. Chcete-li na něj reagovat v diskusi, pravděpodobně vám již nikdo neodpoví. Pro řešení aktuálních problémů doporučujeme využít naše diskusní fórum.

Zasílat nově přidané příspěvky e-mailem