Kazalo:

Arduino - periodični prekinitev: 4 koraki
Arduino - periodični prekinitev: 4 koraki

Video: Arduino - periodični prekinitev: 4 koraki

Video: Arduino - periodični prekinitev: 4 koraki
Video: Как использовать 4-канальное реле для управления нагрузкой переменного тока с помощью кода Arduino 2024, November
Anonim
Arduino - periodični prekinitev
Arduino - periodični prekinitev

Ta Instructable govori o uporabi periodičnih prekinitev za merjenje časa v programih Arduino. To je korak za nadobudnega programerja Arduina, ki ve, da lahko Arduino naredi več, vendar ne ve, kako to uresničiti.

Če obstaja težava pri delovanju, predvidevam, da uporabljate eno ali več funkcij delay (). Trik je v tem, da se znebite funkcij delay () in nadomestite prekinitev. Funkcija delay () prisili Arduino, da ne stori ničesar, medtem ko čaka na dokončanje delay (). Uporaba prekinitve omogoča, da vaš program počne druge stvari, medtem ko čaka na konec zamude. Običajno je ogromno neizkoriščenega mrtvega časa, ki bi ga lahko uporabili za druge stvari pri uporabi delay (). Uporaba prekinitve reši to težavo.

1. korak: Prekini upravljalnik

1. V program dodajte upravljalnik prekinitev. Samo kopirajte in prilepite nekam nad setup ();

const unsigned long TIMER0_COUNT = 500; // časovni interval 500 msec

// TIMER0 upravljalnik prekinitev hlapen bool čas = false; ISR (TIMER0_COMPA_vect) {statično nepodpisano dolgo število = 0; if (++ count> TIMER0_COUNT) {count = 0; čas = res; // čas je nastavljen na true vsakih TIMER0_COUNT ms} // (čas je treba počistiti v glavni rutini)}

2. korak: Nastavite periodični časovni interval

2. Nastavite časovni interval. Ta rutinski povratni udarec se vrne na prekinitev TIMER0, ki je nastavljena na sprožitev vsakih ~ 1 msec.

Vaš "interval" je število prekinitev TIMER0 za obdelavo. Vsak interval je ~ 1 msec, zato res nastavite, koliko prekinitev TIMER0 bo štelo, preden aktivirate interval. IOW, spremenljivko TIMER0_COUNT nastavite na koliko milisekund želite počakati. Na primer, za polovico sekunde uporabite 500. Uporabite 3000 za 3 sekunde.

3. korak: Prekinite inicializacijo

3. Metodi setup () dodajte kodo "TIMER0 initialization". Spet samo kopirajte in prilepite v setup ().

// *** TIMER0 inicializacija ***

cli (); // izklopi vse prekinitve TIMSK0 = 0; // izklopite timer0 za nižje tresenje OCR0A = 0xBB; // poljubno število prekinitev TIMSK0 | = _BV (OCIE0A); // nazaj na prekinitev sei (); // ponovno vklopi prekinitve

4. korak: Kam dodati kodo

4. Metodi zanke () dodajte kodo "preverjanje časa". Kopirajte in prilepite v zanko ().

if (čas) {

čas = napačno; // naredi nekaj tukaj}

"Čas = napačno;" linija je pomembna. Brez te vrstice bi se vrstice "naredi nekaj tukaj" izvedle vsakič, ko program izvede zanko ().

Seveda zamenjate svoje dejavnosti v vrstici »naredi nekaj tukaj«. Začnite s tiskanjem besedila ali utripanjem LED.

Končal si!

Priporočena: