Debouncing, was: Brouk pro vstupy 24V

Pavel Hudecek edizon na seznam.cz
Pondělí Říjen 19 15:11:21 CEST 2015


Např. ve většině mých FW je synchronizační proměnná, která se nastaví na 1 
vždy při milisekundovém přerušení (to mám snad ve všech a tam kde ne, je zas 
1/10, nebo 1/50 ms) a pak je čekací funkce, která se volá jako součást 
jakéhokoli čekání a v ní je někde if, v rámci kterého se vykonávají věci, co 
by se měly vykonávat každou ms, ale neměly by zdržovat přerušení. A mezi ně 
typicky řadím i deboucing vstupů od kláves a jiných kontaktů. Různé vstupy 
samozřejmě můžou mít různý počet ms pro vyhodnocení změn. Výsledek se zas 
uloží do patřičných proměnných a jejich hodnoty už používají různé jiné 
části programu po svém.

PH

-----------------------
From: Tomáš Hamouz
Filtrace zákmitů a vyhodnocování programem jsou snad dvě na sobě nezávislé
funkce, jen je třeba dodržet aby filtrace byla dostatečně rychlá i pro
ten nejrychlejší vstup.

Klidně bych nechal filtraci vstupů společnou, a nechal program ať si
hodnotu vyhodnotí kdy chce. Samozřejmě pokud je u těch pomalých vstupů
výslovný požadavek na pomalou filtraci, pak je to třeba filtrovat zvlášť.

> Ano, podobný algoritmus jsem si kdysi napsal v ASM a od té doby ho téměř
> beze změn používám. V tom odkazu to dělají trochu efektivněji.
> Problém nastane, když jsou vstupy zapojené bez hlubší znalosti logiky
> programu a liší frekvence čtení sousedních vstupů. Často se sejdou periody
> od 1s do 1 ms. Pak má někde smyl posuvný registr pro každý vstup zvlášť.

----------------------
> From: Hw-list [mailto:hw-list-bounces na list.hw.cz] On Behalf Of Tomáš 
> Hamouz
> Znáte Vertical counters?
> Počítáte všechny vstupy najednou.

> např.
> http://www.compuphase.com/electronics/debouncing.htm

> Lze pozšířit na 3 bity, viz
> http://everything2.com/title/vertical+counter 



Další informace o konferenci Hw-list