Obsah:

Arduino - Periodické přerušení: 4 kroky
Arduino - Periodické přerušení: 4 kroky

Video: Arduino - Periodické přerušení: 4 kroky

Video: Arduino - Periodické přerušení: 4 kroky
Video: Testing my arduino nano with 4 hardware interrupts! Yes it is possible! 2024, Červenec
Anonim
Arduino - Periodické přerušení
Arduino - Periodické přerušení

This Instructable is about using a periodic interrupt for timing in Arduino programs. Toto je krok pro začínajícího programátora Arduina, který ví, že Arduino dokáže víc, ale neví, jak toho dosáhnout.

Pokud existuje problém s výkonem, předpokládám, že používáte jednu nebo více funkcí delay (). Jde o to zbavit se funkce delay () a nahradit přerušení. Funkce delay () nutí Arduino nic nedělat, zatímco čeká na dokončení delay (). Použití přerušení umožňuje vašemu programu dělat jiné věci, zatímco čeká na konec zpoždění. Při použití delay () je obvykle obrovské množství nevyužitého mrtvého času, který by mohl být použit na jiné věci. Tento problém řeší použití přerušení.

Krok 1: Handler přerušení

1. Přidejte obslužný program přerušení do svého programu. Stačí zkopírovat a vložit někam nad setup ();

konst bez znaménka dlouhý TIMER0_COUNT = 500; // Interval časovače 500 ms

// TIMER0 obsluha přerušení volatile bool time = false; ISR (TIMER0_COMPA_vect) {static unsigned long count = 0; if (++ count> TIMER0_COUNT) {count = 0; čas = pravda; // čas je nastaven na true každých TIMER0_COUNT ms} // (čas je třeba vymazat v hlavní rutině)}

Krok 2: Nastavte periodický časový interval

2. Nastavte časový interval. Tato rutina se sama přepíná na přerušení TIMER0, které je nastaveno tak, aby se spouštělo každých ~ 1 ms.

Váš „interval“je počet přerušení TIMER0, která se mají zpracovat. Každý interval je ~ 1 ms, takže opravdu nastavujete, kolik přerušení TIMER0 se má počítat, než aktivujete svůj interval. IOW, nastavte proměnnou TIMER0_COUNT na mnoho milisekund, na které chcete počkat. Například použijte 500 po dobu jedné půl sekundy. Použijte 3 000 na 3 sekundy.

Krok 3: Přerušení inicializace

3. Přidejte kód „inicializace TIMER0“do metody setup (). Opět stačí zkopírovat a vložit v setup ().

// *** Inicializace TIMER0 ***

cli (); // vypnout všechna přerušení TIMSK0 = 0; // vypnout timer0 pro nižší jitter OCR0A = 0xBB; // počet libovolných přerušení TIMSK0 | = _BV (OCIE0A); // prasátko zpět na přerušení sei (); // opětovné zapnutí přerušení

Krok 4: Kam přidat kód

4. Přidejte do metody loop () kód „kontrola času“. Zkopírujte a vložte do smyčky ().

pokud (čas) {

time = false; // udělej něco tady}

„Čas = nepravda;“linka je důležitá. Bez tohoto řádku by se řádky „udělej něco tady“spustily pokaždé, když program provede loop ().

Samozřejmě své vlastní aktivity suplujete v řádku „udělejte něco tady“. Začněte vytištěním textu nebo blikáním LED diody.

Jsi hotový!

Doporučuje: