- Pertraukimų tipai
- Nutraukia „Arduino“
- Pertraukimų naudojimas „Arduino“
- Būtini komponentai
- Grandinės schema
- „Arduino“ pertraukiamasis programavimas
- „Arduino“ pertraukimo demonstracija
Apsvarstykite greitai važiuojantį automobilį, jei jis staiga atsitrenkia į kitą priešinga kryptimi važiuojantį automobilį, pirmiausia atsitinka taip, kad automobilyje esantis akselerometro jutiklis pajunta staigų greitėjimą ir suaktyvina išorinį mikrovaldiklio pertraukimą. mašina. Tada, remdamasis tuo pertraukimu, mikrovaldiklis sukuria elektrinį signalą, kad nedelsiant išsiskleistų oro pagalvės. Automobilyje esantys mikrovaldikliai vienu metu stebi daugelį dalykų, pavyzdžiui, automobilio greičio jutimą, kitų jutiklių patikrinimą, oro kondicionieriaus temperatūros kontrolę ir pan. Taigi, kas staiga atveria oro pagalvę per kelias sekundes? Atsakymas yra pertraukimas, čia naudojamas pertraukimo signalas, kuris turi aukščiausią prioritetą iš visų.
Kitas paprastas pertraukimų pavyzdys yra jutiklinio ekrano mobilieji telefonai, kuriems „Touch“ prasme teikiama pirmenybė. Beveik kiekvienas elektroninis prietaisas turi tam tikrą pertraukimą, kad „pertrauktų“ įprastą procesą ir atliktų tam tikrus svarbesnius veiksmus tam tikrame įvykyje. Įteikus pertraukimą, įprastas procesas atnaujinamas.
Taigi techniškai pertraukimai yra mechanizmas, kuriuo įvesties / išvesties ar instrukcijos gali sustabdyti įprastą procesoriaus vykdymą ir pats aptarnauti, kaip jis turi didesnį prioritetą. Pavyzdžiui, procesorius, atliekantis įprastą vykdymą, gali būti pertrauktas tam tikru jutikliu, kad įvykdytų tam tikrą procesą, kuris yra ISR (Interrupt Service Routine). Vykdęs ISR procesorius gali vėl tęsti įprastą vykdymą.
Pertraukimų tipai
Yra dviejų tipų pertraukimai:
Aparatinės įrangos pertraukimas: Tai atsitinka, kai įvyksta išorinis įvykis, kai išorinis pertraukimo kaištis keičia savo būseną iš LOW į HIGH arba HIGH į LOW.
Programinės įrangos pertraukimas: tai vyksta pagal programinės įrangos nurodymus. Pavyzdžiui, laikmačio pertraukimai yra programinės įrangos pertraukimas.
Nutraukia „Arduino“
Dabar pamatysime, kaip naudoti pertraukimus „Arduino Board“. Jis turi dviejų tipų pertraukimus:
- Išorinis pertraukimas
- Smeigtuko keitimo pertraukimas
Išorinis pertraukimas:
Šiuos pertraukimus interpretuoja aparatinė įranga ir jie yra labai greiti. Šiuos pertraukimus galima nustatyti suaktyvinti RISING, FALLING arba LOW lygių atveju.
„Arduino“ lenta |
Išoriniai pertraukimo kaiščiai: |
UNO, NANO |
2,3 |
Mega |
2,3,18,19,20,21 |
Smeigtuko keitimo pertraukimai:
„Arduinos“ gali būti įjungta daugiau pertraukimo kaiščių, naudojant kaiščių keitimo pertraukėles. „ATmega168 / 328“ pagrindu pagamintose „Arduino“ plokštėse bet kurie kaiščiai arba visi 20 signalo kaiščių gali būti naudojami kaip pertraukimo kaiščiai. Jie taip pat gali būti suaktyvinti naudojant RISING arba FALLING kraštus.
Pertraukimų naudojimas „Arduino“
Norint naudoti pertraukimus „Arduino“, reikia suprasti šias sąvokas.
Pertraukiamo aptarnavimo rutina (ISR)
Pertraukiamo aptarnavimo rutina arba pertraukimo tvarkytuvas yra įvykis, kuriame yra nedidelis instrukcijų rinkinys. Kai įvyksta išorinis pertraukimas, procesorius pirmiausia įvykdo šiuos kodus, esančius ISR, ir grįžta į būseną, kurioje paliko įprastą vykdymą.
ISR turi tokią sintaksę „Arduino“:
attachInterrupt (digitalPinToInterrupt (PIN), ISR, režimas);
digitalPinToInterrupt (kaištis): „Arduino Uno“, NANO, pertraukimui naudojami kaiščiai yra 2,3 ir mega 2,3,18,19,20,21. Čia nurodykite įvesties kaištį, kuris naudojamas išoriniam pertraukimui.
ISR: Tai funkcija, kuri iškviečiama, kai atliekamas išorinis pertraukimas.
Režimas: perėjimo, įsijungiančio, tipas, pvz., Kritimas, kilimas ir kt.
- RISING: Norėdami sukelti pertraukimą kaiščiui pereinant iš LOW į HIGH.
- KRITIMAS: suaktyvinti pertraukimą kai kaištis pereina iš HIGH į LOW.
- PAKEITIMAS: suaktyvinti pertraukimą kai kaištis pereina iš LOW į HIGH arba HIGH į LOW (ty kai pasikeičia smeigtuko būsena).
Kai kurios sąlygos naudojant „Interrupt“
- Pertraukiamo aptarnavimo įprasta funkcija (ISR) turi būti kuo trumpesnė.
- „Delay“ () funkcija neveikia ISR viduje, todėl jos reikėtų vengti.
Šioje „ Arduino“ pertraukimo pamokoje skaičius yra padidinamas nuo 0 ir du mygtukai naudojami pertraukimui suaktyvinti, kiekvienas iš jų yra prijungtas prie D2 ir D3. Šviesos diodas naudojamas nutraukti. Paspaudus vieną mygtuką, lemputė įsijungia ir ekrane rodomas nutrūkimas2 ir gęsta, o paspaudus kitą mygtuką lemputė išsijungia, o ekrane rodomas pertraukimas1 ir užgęsta.
Būtini komponentai
- „Arduino“ lenta (šioje pamokoje naudojama „Arduino NANO“)
- Mygtukas - 2
- LED - 1
- Rezistorius (10K) - 2
- LCD (16x2) - 1
- Bandomoji Lenta
- Laidų sujungimas
Grandinės schema
Grandinės jungtis tarp „Arduino Nano“ ir 16x2 LCD ekrano:
LCD ekranas |
„Arduino Nano“ |
VSS |
BND |
VDD |
+ 5 V |
V0 |
Į potenciometro centro PIN kodą Skystųjų kristalų ekrano kontrasto valdymui |
RS |
D7 |
RW |
BND |
E |
D8 |
D4 |
D9 |
D5 |
D10 |
D6 |
D11 |
D7 |
D12 |
A |
+ 5 V |
K. |
BND |
Du mygtukai yra sujungti su „Arduino Nano “ kaiščiais D2 ir D3. Jie naudojami dviem išoriniams pertraukikliams naudoti: vienas įjungia LED ir kitas išjungia LED. Kiekviename mygtuke yra 10k atsparumas žemyn, prijungtas prie žemės. Taigi paspaudus mygtuką yra logika HIGH (1), o nespaudus logika LOW (0). Nuleidžiamas rezistorius yra privalomas, kitaip prie įvesties kaiščių D2 ir D3 bus kintamos vertės.
Diodas taip pat naudojamas nurodyti, kad pertraukties buvo įsijungusi ar mygtukas paspaustas.
„Arduino“ pertraukiamasis programavimas
Šioje pamokoje skaičius padidinamas nuo 0, kuris nuolat rodomas (16x2) skystųjų kristalų ekrane, prijungtame prie „Arduino Nano“, kai tik paspaudžiamas kairysis mygtukas (pertraukimo kaištis D3), šviesos diodas įsijungia, o ekrane rodomas „Interrupt2“ ir kai dešinysis mygtukas (pertraukimo kaištis D2) paspaudus, šviesos diodas išsijungia ir ekrane rodoma Interrupt1.
Pilnas kodas su veikiančiu vaizdo įrašu pateikiamas šios pamokos pabaigoje.
1. Pirmiausia įtraukiamas skystųjų kristalų ekrano antraštės failas ir tada nustatomi skystųjų kristalų kaiščiai, naudojami jungiantis su „Arduino Nano“.
# įtraukti
2. Viduje sąrankos nustatymo () funkcijoje pirmiausia LCD ekrane parodykite įvadinį pranešimą. Sužinokite daugiau apie LCD sąsają su „Arduino“ čia.
lcd.prade (16,2); lcd.setCursor (0,0); lcd.print („CIRCUIT DIGEST“); lcd.setCursor (0,1); lcd.print ("ArduinoInterrupt"); vėlavimas (3000); lcd.clear ();
3. Toje pačioje „void setup“ () funkcijoje reikia nurodyti įvesties ir išvesties kaiščius. Kaištis D13 yra prijungtas prie šviesos diodų anodo, todėl šis kaištis turi būti apibrėžtas kaip išėjimas.
pinMode (13, OUTPUT);
4. Dabar svarbiausia programavimo dalis yra „ attachInterrupt ()“ funkcija, ji taip pat įtraukta į „void setup“ ().
attachInterrupt (digitalPinToInterrupt (2), buttonPressed1, RISING); attachInterrupt (digitalPinToInterrupt (3), buttonPressed2, RISING);
Čia nurodoma, kad kaištis 2 skirtas išoriniam pertraukimui, o „ buttonPressed1“ funkcija iškviečiama, kai D2 kaište yra RISING (LOW to HIGH). 3 kaištis taip pat skirtas išoriniam pertraukimui ir funkcija „PressPress2“ iškviečiama, kai D3 kaište yra RISING.
5. Tuštumos kilpos () viduje skaičius (i) padidinamas nuo nulio ir atspausdinamas LCD (16x2).
lcd.clear (); lcd.print ("Skaitiklis:"); lcd.print (i); ++ i; vėlavimas (1000);
Toje pačioje tuštumos kilpoje () „ digitalWrite“ () naudojamas kaiščiui D13, kuriame prijungtas šviesos diodų anodas. Priklausomai nuo kintamos išvesties vertės, LED įsijungs arba išsijungs
„digitalWrite“ (13, išvestis);
6. Svarbiausia dalis yra pertraukimo tvarkytuvo funkcijos sukūrimas pagal pavadinimą, kuris naudojamas funkcija attachInterrupt () .
Kadangi naudojami du pertraukimo kaiščiai 2 ir 3, reikia dviejų ISR. Čia šiame programavime naudojami šie ISR
buttonPressed1 ():
void buttonPressed1 () { output = LOW; lcd.setCursor (0,1); lcd.print ("1 pertraukimas"); }
Ši funkcija vykdoma, kai paspaudžiamas kaiščio D2 mygtukas (RISING EDGE). Ši funkcija pakeičia išėjimo būseną į LOW, todėl LED išsijungia ir LCD ekrane atspausdina „pertraukimą1“.
buttonPressed2 ():
void buttonPressed2 () {output = HIGH; lcd.setCursor (0,1); lcd.print ("Nutraukti2"); }
Ši funkcija vykdoma paspaudus kaiščio D3 mygtuką. Ši funkcija pakeičia išėjimo būseną į HIGH, todėl LED įsijungia, o LCD ekrane atspausdina „pertraukimą2“.
„Arduino“ pertraukimo demonstracija
1. Kai paspaudžiamas mygtukas kairėje pusėje, šviesos diodas įsijungia, o LCD ekrane rodoma Interrupt2.
2. Paspaudus mygtuką DĖŽUTĖ dešinėje pusėje, šviesos diodas išsijungia ir LCD ekrane rodoma Interrupt1
Štai kaip pertraukimas gali būti naudingas norint suaktyvinti bet kokią svarbią užduotį tarp įprasto vykdymo.