Stránka 1 z 1

počítání Arduinem generovaných impulsů na výstupu

Napsal: 05 kvě 2019, 20:33
od HrAd
Jak by jste řešili počítání impulsů na výstupu Arduina po dobu kdy bude zmáčknute tlačítko a současně zaznamenávali čas po který bylo tlačítko zmáčknuté?
Lze to vůbec klasickým Wiringem?
Mé zkušenosti jsou malé, ale předpokládám že nikoliv.
Jak by jste to řešily co nejednodušeji a jakými prostředky-funkcemi?
Konstrukce je jasná:
1. testuji ON a OFF tlačítka
2. po dobu kdy je ON generuji impulzy na výstupný pin
3. generované impulzy počítám
4. zaznamenávám čas od ON do OFF

Re: počítání Arduinem generovaných impulsů na výstupu

Napsal: 05 kvě 2019, 21:12
od jankop
Záleží na rozlišení, které ovšem nezmiňuješ. Když budu generovat pulzy v nějakém časovém intervalu, tak je nebudu počítat, protože budu vědět, kolik jsem jich vygeneroval. Je opravdu rozdíl, řešit 10 impulzů za minutu nebo 12 687impulzů za sekundu..

Re: počítání Arduinem generovaných impulsů na výstupu

Napsal: 05 kvě 2019, 21:24
od HrAd
je to skoro v tom rozsahu :-(
počítejme někde kolem 1 Hz - 15 kHz

Re: počítání Arduinem generovaných impulsů na výstupu

Napsal: 06 kvě 2019, 18:33
od Wojta
Tak teď ještě rozlišení jak říká jankop, jak přesně musí být pulzy časované. Další věc je zda chceš mít program čistě na tohle a nebo bude program krom generování a měření dělat ještě něco jiného. Chceš použít knihovny nebo se opravdu držet jen fcí v arduinu (ten čirý wiring)? Tyhle věci se dají udělat na tisíc způsobů. Na prasáka před digitalWrite a delay, zneužitím funkcí jako tone, knihovnami pro časování s přerušeními atd... :D

Re: počítání Arduinem generovaných impulsů na výstupu

Napsal: 06 kvě 2019, 21:13
od HrAd
Je mne jasné že čim níže k HW (strojáku) tím vše bude přesnější, ale take složitější...
Jde jenom o teoretickou úvahu jak by jste to řešili řekněme a s jakýmí vlastnostmi-neřestmi by to které řešeni bylo:
- pouze ve wiringu
- wiring s použitím knihoven
- třeba C a k tomu stroják

Ja si na hraní zatim zvolil 2. variantu s první knihovnou co mne přišla pod ruku konkrétně TimeOne a krmím tím krokáč ať vidím zda jede či ne.

Re: počítání Arduinem generovaných impulsů na výstupu

Napsal: 07 kvě 2019, 04:20
od gilhad
Záleží na tom, proč to vůbec chceš (a jak přesné to musí být).

15 kHz na 20MHz stroji je víc než 1.000 instrukcí / impulz.
člověk má reakční dobu docela pomalou (pod 0.1s se asi nedostaneš), takže pokud ti mačká tlačítka člověk, tak je to s přesností na 1.000 a víc pulzů.

Nicméně já bych na to šel tak, že bych si nastavil časovač na správnou frekvenci a pověsil interrupt na změnu toho pinu - tak bych měl přesný počet pulzů, interrupt zvládá v pohodě ( a netřeba se o něj moc starat), navíc klidně si tam dám bytovou proměnnou jako counter, když přeteče, zvednu další, která počítá násobky 256 (čili vyšší řády) a ušetřil spoustu času na počítání s dlouhýma číslama.

nastavil interrupt na tlačítko ON, při spuštění bych uložil čas, vynuloval counter(y), nastavil příznak běhu, spustil timer a tento interrupt disabloval a nastavill místo toho interrupt na tlačítko OFF.
interrupt tlačítka OFF by zastavil timer, shodil příznak běhu a přehodil interrupt na tlačítko ON.

Přesné výsledky, přehled o okamžitém stavu a loop() volná pro užitečnou činnost.