Stránka 1 z 1

IRQ Arduino Nano

Napsal: 06 říj 2020, 10:08
od RomanT
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.

Re: IRQ Arduino Nano

Napsal: 06 říj 2020, 10:52
od ondraN
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.

Re: IRQ Arduino Nano

Napsal: 06 říj 2020, 11:12
od jankop
Ten první způsob by měl být zařazením

Kód: Vybrat vše

EIFR = bit (INTF0); 
před ukončením přerušovací rutiny

http://gammon.com.au/interrupts

Re: IRQ Arduino Nano

Napsal: 06 říj 2020, 15:51
od milos
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