Diskusní téma: Lekce 21 - Arduino a využití přerušení (interrupt) a ošetření záchvěvů při stisku tlačítka

Datum
Vložil
Titulek

Preruseni

Nedávno jsem narazil na tuto stránku a když si pročítám tento tutoriál tak musím nesouhlasit s autorem. Jeho ošetření "bouncingu" není příliš šťastné. Delay je třeba v programu používat co nejméně.

Pro ošetření zákmitů bez potíží využívám toto:

void interrupt()
{
static unsigned long last_millis = 0;
unsigned long m = millis();
if (m - last_millis < 500) ; // ignoruj preruseni
else {
state = !state;
buttonTime=millis();
last_millis = m;
}


Procesor nestojí a může pokračovat v činnosti. Taktéž je to velmi spolehlivé řešení. Ve výše uvedeném případě je nastaven čas 500ms po který jsou další ipmuplzy vyvolané přerušením ignorovány.

S pozdravem Marek (aka CZ_Iceman)

Zpět na diskuzi

Vyhledávání

arduino8.cz © 2015 Všechna práva vyhrazena.