Prosím o radu:
Při sestupné hraně na pin3 volám ISR funkci.
Pokud během provádění ISR funkce přijde další sestupná hrana dojde po ukončení ISR funkce k dalšímu spuštění ISR.
Prosím o radu jak zakázat “zapamatování“ sestupné hrany na pin3. Deska arduino nano.
IRQ Arduino Nano
Re: IRQ Arduino Nano
Jsou dvě cesty jak to udělat. Buď těsně před opuštěním ISR vynulovat registr interruptu od pinu (nemám teď datasheet, tak neřeknu jaký). Druhá možnost je si v ISR uložit čas (millis, případně i mikros) a před provedením hlavní rutiny se vždy podívat, kolik uplynulo od posledního interruptu a buď rutinu provést, nebo opustit.
První řešení je lepší tím, že šetří výkon a paměť. Má nevýhodu v tom, že impuls můře přijít těsně po tom, co jsme registr snulovali.
Druhé řešení je náročnější na čas i sežere pár byte paměti, ale umožní přesně definovat minimální odstup zpracování ISR a je HW přenositelné na jiný MCU.
První řešení je lepší tím, že šetří výkon a paměť. Má nevýhodu v tom, že impuls můře přijít těsně po tom, co jsme registr snulovali.
Druhé řešení je náročnější na čas i sežere pár byte paměti, ale umožní přesně definovat minimální odstup zpracování ISR a je HW přenositelné na jiný MCU.
-
- Příspěvky: 1030
- Registrován: 06 zář 2017, 20:04
- Reputation: 0
- Bydliště: Brno
- Kontaktovat uživatele:
Re: IRQ Arduino Nano
Ten první způsob by měl být zařazením
před ukončením přerušovací rutiny
http://gammon.com.au/interrupts
Kód: Vybrat vše
EIFR = bit (INTF0);
http://gammon.com.au/interrupts
Re: IRQ Arduino Nano
Díky moc za radu. Řešil jsem to půl dne a přitom je to tak jednoduché Mám půjčovnu lodí na Vltavě, rád vám vaší ochotu oplatím. www.ingetour.cz
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 7 hostů