Sisällysluettelo:

Arduino - Säännöllinen keskeytys: 4 vaihetta
Arduino - Säännöllinen keskeytys: 4 vaihetta

Video: Arduino - Säännöllinen keskeytys: 4 vaihetta

Video: Arduino - Säännöllinen keskeytys: 4 vaihetta
Video: LoRa Transmitter Power Measurement with AD8318 and Arduino DIY Tool (EP10) 2024, Marraskuu
Anonim
Arduino - Määräaikainen keskeytys
Arduino - Määräaikainen keskeytys

Tässä ohjeessa on kyse jaksollisen keskeytyksen käyttämisestä Arduino -ohjelmien ajoitukseen. Tämä on askel orastavalle Arduino -ohjelmoijalle, joka tietää, että Arduino voi tehdä enemmän, mutta ei oikein tiedä, miten se tapahtuu.

Jos suorituskykyongelmia ilmenee, oletan, että käytät yhtä tai useampaa delay () -toimintoa. Temppu on päästä eroon delay () -toiminnoista ja korvata keskeytys. Viive () -toiminto pakottaa Arduinon tekemään mitään odottaessaan viiveen () päättymistä. Keskeytyksen avulla ohjelma voi tehdä muita asioita odottaessaan viiveen päättymistä. Yleensä on valtava määrä käyttämätöntä kuollutta aikaa, joka voitaisiin käyttää muihin tarkoituksiin, kun käytetään viivettä (). Keskeytyksen käyttäminen ratkaisee tämän ongelman.

Vaihe 1: Keskeytä käsittelijä

1. Lisää keskeytyksenkäsittelijä ohjelmaan. Kopioi ja liitä vain jonnekin asennuksen yläpuolelle ();

const unsigned long TIMER0_COUNT = 500; // 500 ms: n ajastinväli

// TIMER0 keskeytyskäsittelijän haihtuva bool -aika = false; ISR (TIMER0_COMPA_vect) {staattinen unsigned long count = 0; if (++ count> TIMER0_COUNT) {count = 0; aika = totta; // aika on tosi joka TIMER0_COUNT ms} // (aika on tyhjennettävä päärutiinissa)}

Vaihe 2: Aseta jaksollinen aikaväli

2. Aseta aikaväli. Tämä rutiinipossu palaa TIMER0 -keskeytykseen, joka asetetaan palamaan ~ 1 sekunnin välein.

"Väli" on käsiteltävien TIMER0 -keskeytysten lukumäärä. Jokainen aikaväli on ~ 1 ms, joten olet todella asettamassa, kuinka monta TIMER0 -keskeytystä lasketaan ennen väliajan aktivointia. IOW, aseta muuttuja TIMER0_COUNT niin monta millisekuntia kuin haluat odottaa. Käytä esimerkiksi 500 sekuntia. Käytä 3000 3 sekunnin ajan.

Vaihe 3: Keskeytä alustus

3. Lisää TIMER0 -alustuskoodi setup () -menetelmääsi. Jälleen kopioi ja liitä asetuksiin ().

// *** AJASTIN0 alustus ***

cli (); // sammuta kaikki keskeytykset TIMSK0 = 0; // sammuta ajastin0 alemmalle tärinälle OCR0A = 0xBB; // mielivaltainen keskeytysten määrä TIMSK0 | = _BV (OCIE0A); // säästöpossu takaisin keskeytyssei (); // kytke keskeytykset takaisin päälle

Vaihe 4: Koodin lisääminen

4. Lisää "aikatarkistus" -koodi silmukka () -menetelmään. Kopioi ja liitä silmukkaan ().

jos (aika) {

aika = epätosi; // tee jotain täällä}

"Aika = väärä;" linja on tärkeä. Ilman tätä riviä "tee jotain täällä" -rivi (t) suoritetaan joka kerta, kun ohjelma suorittaa silmukan ().

Tietenkin voit korvata oman toimintasi "tee jotain täällä" -rivillä. Aloita tulostamalla tekstiä tai vilkkumalla LED.

Olet valmis!

Suositeltava: