- Pārtraukumu veidi
- Pārtrauc Arduino
- Pārtraukumu izmantošana Arduino
- Nepieciešamās sastāvdaļas
- Ķēdes shēma
- Arduino pārtraukuma programmēšana
- Arduino pārtraukuma demonstrācija
Apsveriet ātri braucošu automašīnu, ja pēkšņi to notriec cita automašīna pretējā virzienā, pirmais, kas notiek, ir tāds, ka automašīnā esošais akselerometra sensors izjūt pēkšņu paātrinājumu un izraisa ārēju traucējumu mikrokontrollerim, kas atrodas mašīna. Tad, pamatojoties uz šo pārtraukumu, mikrokontrolleris rada elektrisko signālu, lai nekavējoties iedarbinātu drošības spilvenus. Automašīnā esošie mikrokontrolleri vienlaikus uzrauga daudzas lietas, piemēram, automašīnas ātruma noteikšanu, citu sensoru pārbaudi, gaisa kondicionētāja temperatūras kontroli utt. Tātad, kas padara pēkšņu gaisa spilvena atvēršanos dažu sekunžu laikā? Atbilde ir pārtraukumi, šeit tiek izmantots pārtraukuma signāls, kam ir visaugstākā prioritāte.
Vēl viens vienkāršs pārtraukumu piemērs ir skārienekrāna mobilie tālruņi, kuriem ir augstākā prioritāte “Touch” nozīmē. Gandrīz katrai elektroniskajai ierīcei ir kāda veida pārtraukumi, lai “pārtrauktu” parasto procesu un veiktu dažas augstākas prioritātes konkrētā pasākumā. Regulārais process tiek atsākts pēc pārtraukuma pasniegšanas.
Tātad tehniski pārtraucieni ir mehānisms, ar kura palīdzību I / O vai instrukcija var apturēt procesora normālu izpildi un apkalpot sevi tāpat, kā tam ir lielāka prioritāte. Piemēram, procesoru, kas veic normālu izpildi, var pārtraukt kāds sensors, lai veiktu noteiktu procesu, kas atrodas ISR (Interrupt Service Routine). Pēc ISR izpildes procesors var atkal atsākt parasto izpildi.
Pārtraukumu veidi
Ir divu veidu pārtraukumi:
Aparatūras pārtraukums: tas notiek, kad notiek ārējs notikums, piemēram, ārējā pārtraukuma tapa maina savu stāvokli no LOW uz HIGH vai HIGH uz LOW.
Programmatūras pārtraukums: tas notiek saskaņā ar programmatūras norādījumiem. Piemēram, taimera pārtraukumi ir programmatūras pārtraukumi.
Pārtrauc Arduino
Tagad mēs redzēsim, kā izmantot pārtraukumus Arduino Board. Tam ir divu veidu pārtraukumi:
- Ārējais pārtraukums
- Pin Change Interrupt
Ārējais pārtraukums:
Šos pārtraukumus interpretē aparatūra un tie ir ļoti ātri. Šos pārtraukumus var iestatīt, lai aktivizētos RISING, FALLING vai LOW līmeņu gadījumā.
Arduino dēlis |
Ārējās pārtraucošās tapas: |
UNO, NANO |
2,3 |
Mega |
2,3,18,19,20,21 |
Tapu maiņas pārtraukumi:
Arduinos var iespējot vairāk pārtraukšanas tapu, izmantojot tapu maiņas pārtraukumus. ATmega168 / 328 bāzes Arduino dēļos jebkuras tapas vai visas 20 signāla tapas var izmantot kā pārtraukuma tapas. Tos var iedarbināt arī, izmantojot RISING vai FALLING malas.
Pārtraukumu izmantošana Arduino
Lai pārtraukumus izmantotu Arduino, ir jāsaprot šādi jēdzieni.
Pārtraucošā pakalpojumu kārtība (ISR)
Pārtraucošā pakalpojuma kārtība vai pārtraucējs ir notikums, kurā ir neliels instrukciju kopums. Kad notiek ārējs pārtraukums, procesors vispirms izpilda šo kodu, kas atrodas ISR, un atgriežas stāvoklī, kurā tas atstāja parasto izpildi.
ISR ir šāda sintakse Arduino:
attachInterrupt (digitalPinToInterrupt (pin), ISR, režīms);
digitalPinToInterrupt (piespraude): Arduino Uno NANO pārtraucšanai izmantotās tapas ir 2,3 un mega 2,3,18,19,20,21. Šeit norādiet ievades tapu, ko izmanto ārējam pārtraukumam.
ISR: tā ir funkcija, kuru izsauc, kad tiek veikts ārējs pārtraukums.
Režīms: pārejas veids, kas ieslēdzas, piemēram, krišana, pacelšanās utt.
- RISING: lai aktivizētu pārtraukumu, kad tapa pāriet no LOW uz HIGH.
- KRITUMS: lai aktivizētu pārtraukumu, kad tapa pāriet no HIGH uz LOW.
- CHANGE: lai aktivizētu pārtraukumu, kad tapa pāriet no LOW uz HIGH vai HIGH uz LOW (ti, mainoties tapas stāvoklim).
Daži nosacījumi, lietojot pārtraukt
- Pakalpojuma Pārtraukšanas rutīnas funkcijai (ISR) jābūt pēc iespējas īsākai.
- Delay () funkcija nedarbojas ISR iekšienē, un tā ir jāizvairās.
Šajā Arduino Interrupt apmācībā skaitlis tiek palielināts no 0 un tiek izmantotas divas spiedpogas, lai aktivizētu Interrupt, katra no tām ir savienota ar D2 un D3. LED tiek izmantots, lai norādītu pārtraukumu. Ja tiek nospiesta viena spiedpoga, LED ieslēdzas un displejā tiek parādīts pārtraukums2 un nodziest, un , nospiežot citu spiedpogu, LED tiek izslēgts, un displejā redzams pārtraukums1 un nodziest.
Nepieciešamās sastāvdaļas
- Arduino dēlis (šajā apmācībā tiek izmantots Arduino NANO)
- Spiedpoga - 2
- LED - 1
- Rezistors (10K) - 2
- LCD (16x2) - 1
- Maizes dēlis
- Vadu savienošana
Ķēdes shēma
Ķēdes savienojums starp Arduino Nano un 16x2 LCD displeju:
LCD |
Arduino Nano |
VSS |
GND |
VDD |
+ 5V |
V0 |
Uz potenciometra centra PIN LCD kontrasta kontrolei |
RS |
D7 |
RW |
GND |
E |
D8 |
D4 |
D9 |
D5 |
D10 |
D6 |
D11 |
D7 |
D12 |
A |
+ 5V |
K |
GND |
Divas spiedpogas ir savienotas ar Arduino Nano ar tapām D2 un D3. Tos izmanto divu ārēju pārtraukumu izmantošanai, vienu LED ieslēgšanai un otru LED izslēgšanai. Katrai spiedpogai ir zemējuma piesaistīts 10k pretestība. Tātad, nospiežot spiedpogu, tā ir loģika HIGH (1) un, kad netiek nospiesta, tā ir logic LOW (0). Pavelkamais rezistors ir obligāts, pretējā gadījumā pie ieejas tapām D2 un D3 būs peldošas vērtības.
LED tiek izmantots arī, lai norādītu, ka Pārtraukums ir izraisījusi vai poga ir nospiesta.
Arduino pārtraukuma programmēšana
Šajā apmācībā skaitlis tiek palielināts no 0, kas nepārtraukti tiek parādīts (16x2) LCD, kas savienots ar Arduino Nano, ikreiz, kad tiek nospiesta kreisā spiedpoga (pārtraukuma tapa D3), gaismas diode iedegas un displejā tiek rādīts Interrupt2 un kad labā spiedpoga (pārtraukt tapu D2) tiek nospiests, gaismas diode izslēdzas un displejā parādās Interrupt1.
Šīs apmācības beigās ir norādīts pilns kods ar darba video.
1. Vispirms tiek iekļauts LCD displeja galvenes fails un pēc tam tiek definēti LCD kontakti, kas tiek izmantoti savienojumam ar Arduino Nano.
# iekļaut
2. Funkcijas void setup () iekšpusē vispirms LCD displejā parādiet ievada ziņojumu. Uzziniet vairāk par LCD saskarni ar Arduino šeit.
lcd.begin (16,2); lcd.setCursor (0,0); lcd.print ("CIRCUIT DIGEST"); lcd.setCursor (0,1); lcd.print ("ArduinoPārtraukt"); kavēšanās (3000); lcd.clear ();
3. Tad tajā pašā void setup () funkcijā ir jānorāda ievades un izvades tapas. Tapa D13 ir savienota ar LED anodu, tāpēc šī tapa ir jādefinē kā izeja.
pinMode (13, OUTPUT);
4. Tagad galvenā svarīgā programmēšanas daļa ir funkcija attachInterrupt (), tā ir iekļauta arī void setup () iekšpusē.
attachInterrupt (digitalPinToInterrupt (2), buttonPressed1, RISING); attachInterrupt (digitalPinToInterrupt (3), buttonPressed2, RISING);
Šeit ir norādīts, ka tapa 2 ir paredzēta ārējam pārtraukumam, un funkcija buttonPressed1 tiek izsaukta, ja D2 tapā ir RISING (LOW to HIGH). 3. tapa ir paredzēta arī ārējam pārtraukumam, un, ja D3 tapā ir RISING, tiek izsaukta buttonPressed2 funkcija.
5. Tukšuma cilpas () iekšpusē skaitlis (i) tiek palielināts no nulles un tiek izdrukāts uz LCD (16x2).
lcd.clear (); lcd.print ("Skaitītājs:"); lcd.print (i); ++ i; kavēšanās (1000);
Tajā pašā tukšajā lokā (), tapā D13, kur ir pievienots LED anods, tiek izmantots digitalWrite () . Atkarībā no mainīgās izejas vērtības LED ieslēgsies vai izslēgsies
digitalWrite (13, izeja);
6. Vissvarīgākā daļa ir pārtraukuma apstrādātāja funkcijas izveidošana atbilstoši nosaukumam, kas tiek izmantots funkcija attachInterrupt () .
Tā kā tiek izmantoti divi pārtraukuma tapas 2 un 3, ir nepieciešami divi ISR. Šeit šajā programmēšanā tiek izmantoti šādi ISR
buttonPressed1 ():
void buttonPressed1 () { output = LOW; lcd.setCursor (0,1); lcd.print ("1. pārtraukums"); }
Šī funkcija tiek veikta, nospiežot tapas D2 spiedpogu (RISING EDGE). Šī funkcija izejas stāvokli maina uz LOW, izraisot LED izslēgšanos, un uz LCD displeja izdrukā “pārtraukt1”.
buttonPressed2 ():
void buttonPressed2 () {output = HIGH; lcd.setCursor (0,1); lcd.print ("Pārtraukt2"); }
Šī funkcija tiek veikta, nospiežot tapas D3 spiedpogu. Šī funkcija izejas stāvokli maina uz HIGH, izraisot LED ieslēgšanos, un uz LCD displeja izdrukā “break2”.
Arduino pārtraukuma demonstrācija
1. Nospiežot PUSH BUTTON pa kreisi, gaismas diode iedegas un LCD displejā parādās Interrupt2.
2. Kad tiek nospiesta PUSH poga labajā pusē, gaismas diode izslēdzas un LCD displejā parādās Interrupt1
Tādā veidā pārtraukt var būt noderīgi, lai aktivizētu jebkuru svarīgu uzdevumu starp parasto izpildi.