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 | 19.05.2014 |
---|---|
Vložil | Marek |
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