Tato konstrukce do procesoru PIC (spíše prográmek než konstrukce) je odpovědí na dotaz jednoho známého :
Cituji:
"Chcel som sa ta spytať či by sa dalo do PIC urobiť takéto niečo :
Jedná sa o to, že keď privediem na vstup log.1 len kratko, aby na vstupe bola log.1 natvrdo o dlžke 5 sec., a keď privedieš na vstup signál log.1 nekonečně dlhý, tak stále vyvolá na výstupe len 5 sec. impulz. a keď ten signál zanikne a znovu sa vyskytne tak to iste stále na výstupe len 5 sec. Je to možné ? Neviem, či som to správně napísal pre "programátora" :-) a potreboval by som takých 6 vstupov a 6 výstupov s tou istou logikou nezávisle.......důfam ze to nebude zložité....."




Požadovaný výstupní průběh

     Tolik k zadání. Pro Ty z Vás, kteří neovládají slovenštinu - požadavek zní: vytvořit 6x nezávislý monostabilní klopný obvod. Funkce bude taková, že pokud přijde krátký "jedničkový" impuls (log. 1) na jeden ze vstupů, odpovídající výstup se "překlopí" do stavu log. H na dobu 5 sekund. Pokud bude impuls na vstupu trvat déle, než 5 sekund, bude výsledkem pouze jeden impuls na výstupu. Další nový impuls bude následovat po dočasování, ale až po přechodu vstupu zpět do log. úrovně L a novém impulsu do úrovně H (viz Obr.1). Navíc, pokud se v době log. úrovně H na výstupu bude nějak měnit (impulsy ap.) úroveň na vstupu, nemá to mít vliv na právě probíhající časový impuls (viz Obr.2).

 
Obr. 1 - Různé stavy vstupu a výstupu - delší impuls na vstupu Obr. 2 - Různé stavy vstupu a výstupu - několik impulsů během časování


Popis programu:
     Po mé první odpovědi, že tento požadavek splní celkem "za levný peníz" časovač 555 v klasickém zapojení, jsem zjistil, že by pro požadovanou funkci muselo být těchto časovačů šest, samozřejmě každý s nezbytnou "bižuterií" kolem (kondenzátor, rezistory atd.).
     Pokud zvolíme procesor, a budeme na něj pohlížet pouze jako na programovatelnou součástku, zjistíme, že se zapojení rapidně zjednoduší (jen a pouze procesor), časy budou neporovnatelně přesnější a stabilnější, a hlavně, nebude problém časy nezávisle na sobě kdykoliv programově změnit. Navíc si časy v programu snadno spočítáme a nebudeme muset pracně nastavovat a měřit se stopkami v ruce u časovače s 555.

      Program zde nebudu pro jeho jednoduchost zbytečně moc rozebírat, v podstatě se neustále skenují jednotlivé vstupy a porovnávají se s uloženým stavem pro zjištění kladného impulsu. Pokud je impuls zjištěn, dojde k uložení předvolby do softwarového časovače odpovídajícího MKO, je nastaven výstupní bit do log. H a je nastaven příznak, řídící dekrementaci (snižování) softwarového časovače tohoto MKO. Vlastní dekrementaci softwarových časovačů (registrů) zajišťuje časovač 1, který vyvolá přerušení každých 20 msec. V obsluze tohoto přerušení se zjišťuje podle nastavených příznaků, který MKO je aktivní, a podle toho se sníží stav odpovídajícího softwarového časovače o 1. Pokud je dočasováno (samozřejmě opět se rozlišuje u kterého MKO) je výstup přestaven zpět do úrovně log. L.
      Je možné si s minimálními znalostmi programování ve zdrojovém souboru nastavit různé časy, samozřejmě pro každý MKO zvlášť. Hardwarová konfigurace procesoru je opravdu velmi jednoduchá, procesor má vnitřní taktování a vnitřní reset po připojení napájení. Prostě pouze připojíme napájení +5V, a zapojení je plně funkční, bez dalších součástek (kromě ošetřovacích rezistorů na vstupech).



Schéma zapojení



Známé nedostatky zapojení:
Možná časová nepřesnost +/- 20 msec (0,02 sec.) při časování - dáno řešením software, a možná mírná časová nepřesnost daná interním generátorem vnitřního taktování procesoru. Protože byla ale preferována maximální jednoduchost zapojení, nebyly tyto drobné chyby na závadu. Procesor i s těmito známými nedostatky předčí přesností časovač 555 o několik řádů (u časovače jde hlavně o stabilitu kapacity v komparátoru).
Napěťové úrovně odpovídající logickým úrovním log. H a log. L, max. 5V, takže z toho vyplívající ne naprosto univerzálnhí použití, opět poznamenávám, že toto zapojení bylo "šito namíru" do konkrétní aplikace, kde tato omezení nevadila.

Zveřejňuji toto zapojení a program (i ve zdrojovém kódu pro možné úpravy), neboť si myslím, že by mohl
(i přes svoji jednoduchost) přijít leckomu vhod.


Ke stažení jsou tyto soubory:

Velikost 44 kByte Archiv ZIP, obsahující schéma (*.bmp),
zdrojový kód (*.asm) a přeložený (*.hex) soubor.


Vytisknout stránku

Zpátky Zpátky
© DH servis 2002 -