IRQ Arduino Nano

Odpovědět
RomanT
Příspěvky: 1
Registrován: 06 říj 2020, 10:05
Reputation: 0

IRQ Arduino Nano

Příspěvek od RomanT » 06 říj 2020, 10:08

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.

ondraN
Příspěvky: 932
Registrován: 08 srp 2019, 20:01
Reputation: 0

Re: IRQ Arduino Nano

Příspěvek od ondraN » 06 říj 2020, 10:52

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.

jankop
Příspěvky: 1029
Registrován: 06 zář 2017, 20:04
Reputation: 0
Bydliště: Brno
Kontaktovat uživatele:

Re: IRQ Arduino Nano

Příspěvek od jankop » 06 říj 2020, 11:12

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

milos
Příspěvky: 1
Registrován: 05 říj 2020, 16:56
Reputation: 0

Re: IRQ Arduino Nano

Příspěvek od milos » 06 říj 2020, 15:51

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

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 11 hostů