Sisukord:

Arduino - perioodiline katkestus: 4 sammu
Arduino - perioodiline katkestus: 4 sammu

Video: Arduino - perioodiline katkestus: 4 sammu

Video: Arduino - perioodiline katkestus: 4 sammu
Video: Переработка энкодера колеса прокрутки мыши и его тестирование с помощью Arduino Nano 2024, Juuni
Anonim
Arduino - perioodiline katkestus
Arduino - perioodiline katkestus

See juhend sisaldab Arduino programmides ajastamiseks perioodilise katkestuse kasutamist. See on samm algavale Arduino programmeerijale, kes teab, et Arduino suudab rohkem, kuid ei tea päris täpselt, kuidas seda teha.

Kui esineb jõudlusprobleeme, eeldan, et kasutate ühte või mitut delay () funktsiooni. Nipp on vabaneda delay () funktsioonist ja asendada katkestus. Funktsioon delay () sunnib Arduinot viivituse () lõpuleviimist oodates mitte midagi tegema. Katkestuse kasutamine võimaldab teie programmil viivituse lõppu oodates teha muid asju. Tavaliselt on viivitamata () kasutamisel tohutult palju kasutamata surnud aega, mida saaks kasutada muudeks asjadeks. Katkestuse kasutamine lahendab selle probleemi.

Samm: katkestage käitleja

1. Lisage oma programmi katkestuste käitleja. Lihtsalt kopeerige ja kleepige kuskile setup () kohale;

const unsigned long TIMER0_COUNT = 500; // 500 ms taimerintervall

// TIMER0 katkestuste töötleja lenduv bool aeg = vale; ISR (TIMER0_COMPA_vect) {staatiline allkirjastamata pikk arv = 0; if (++ count> TIMER0_COUNT) {count = 0; aeg = tõsi; // aeg määratakse iga TIMER0_COUNT ms järel tõeseks} // (aeg tuleb põhirutiinis tühjendada)}

Samm: määrake perioodiline ajaintervall

2. Määrake ajavahemik. See rutiinne sigadus tuleb tagasi TIMER0 katkestusele, mis käivitatakse iga ~ 1 ms järel.

Teie "intervall" on töötlemiseks vajalike TIMER0 katkestuste arv. Iga intervall on ~ 1 ms, nii et te tõesti määrate, mitu TIMER0 katkestust enne intervalli aktiveerimist lugeda. IOW, määrake muutujale TIMER0_COUNT nii palju millisekundeid, kui soovite oodata. Näiteks kasutage pool sekundit 500. Kasutage 3000 3 sekundit.

3. samm: initsialiseerimise katkestamine

3. Lisage "TIMER0 lähtestamise" kood oma setup () meetodile. Jällegi lihtsalt kopeerige ja kleepige seadistusse ().

// *** TIMER0 lähtestamine ***

cli (); // lülita kõik katkestused välja TIMSK0 = 0; // lülita taimer0 välja madalama värisemise korral OCR0A = 0xBB; // meelevaldne katkestuste arv TIMSK0 | = _BV (OCIE0A); // notsu tagasi katkestusele sei (); // lülitab katkestused uuesti sisse

Samm: kuhu oma kood lisada

4. Lisage "time check" kood oma loop () meetodile. Kopeerige ja kleepige silmusesse ().

kui (aeg) {

aeg = vale; // tee siin midagi}

"Aeg = vale;" rida on oluline. Ilma selle reata täidetakse rida "tee siin midagi" iga kord, kui programm käivitab tsükli ().

Loomulikult asendate oma tegevused reaga "tee siin midagi". Alustage teksti printimisega või LED -i vilkumisega.

Sa oled valmis!

Soovitan: