- Vrste prekida
- Prekidi u Arduinu
- Korištenje prekida u Arduinu
- Komponente potrebne
- Kružni dijagram
- Arduino programiranje prekida
- Demonstracija Arduino prekida
Razmislite o automobilu koji se brzo kreće. Ako ga iznenada udari drugi automobil u suprotnom smjeru, prvo što se dogodi je da senzor akcelerometra prisutan u automobilu osjeti naglo smanjenje ubrzanja i aktivira vanjski prekid mikrokontrolera prisutan u kola. Zatim na temelju tog prekida mikrokontroler proizvodi električni signal za trenutno aktiviranje zračnih jastuka. Mikrokontroleri prisutni u automobilu istovremeno prate mnoge stvari poput osjetljivosti brzine automobila, provjere ostalih senzora, kontrole temperature klima uređaja itd. Što onda naglo otvara zračni jastuk u sekundi? Odgovor je prekidi, ovdje se koristi signal prekida koji ima najveći prioritet od svih.
Još jedan jednostavan primjer prekida su mobiteli sa dodirnim zaslonom koji imaju najveći prioritet osjećaju "dodira". Gotovo svaki elektronički uređaj ima neku vrstu prekida kako bi 'prekinuo' redoviti postupak i učinio neke stvari s većim prioritetom na određenom događaju. Redovni postupak nastavlja se nakon služenja prekida.
Dakle, tehnički, prekidi su mehanizam pomoću kojeg I / O ili naredba mogu obustaviti normalno izvršavanje procesora i servisirati se kao da imaju veći prioritet. Na primjer, procesor koji radi normalno izvršavanje može ga prekinuti neki senzor radi izvođenja određenog postupka koji je prisutan u ISR (Interrupt Service Rutine). Nakon izvršavanja ISR procesor može ponovno nastaviti normalno izvršenje.
Vrste prekida
Postoje dvije vrste prekida:
Hardverski prekid: Događa se kada se dogodi vanjski događaj kao što vanjski prekidač promijeni svoje stanje iz LOW u HIGH ili HIGH u LOW.
Softverski prekid: Događa se prema uputama softvera. Na primjer, timer prekidi su softverski prekidi.
Prekidi u Arduinu
Sada ćemo vidjeti kako koristiti prekide na Arduino Boardu. Ima dvije vrste prekida:
- Vanjski prekid
- Prekid promjene pina
Vanjski prekid:
Ovi se prekidi tumače hardverski i vrlo su brzi. Ovi prekidi mogu se postaviti da se aktiviraju u slučaju RISING ili FALLING ili LOW nivoa.
|
Arduino ploča |
Vanjske igle za prekid: |
|
UNO, NANO |
2,3 |
|
Mega |
2,3,18,19,20,21 |
Prekidi promjene pin-a:
Arduinosi mogu omogućiti više pinova za prekide korištenjem prekida za promjenu pina. U Arduino pločama temeljenim na ATmega168 / 328 bilo koji pinovi ili svih 20 signalnih pinova mogu se koristiti kao prekidačke pinove. Oni se također mogu pokrenuti pomoću RISING ili FALLING rubova.
Korištenje prekida u Arduinu
Da bismo koristili prekide u Arduinu, treba razumjeti sljedeće koncepte.
Rutinska usluga prekida (ISR)
Rutinska usluga prekida ili rukovatelj prekidima događaj je koji sadrži mali skup uputa. Kada se dogodi vanjski prekid, procesor prvo izvršava ovaj kod koji je prisutan u ISR-u i vraća se natrag u stanje u kojem je napustio normalno izvršenje.
ISR ima sljedeću sintaksu u Arduinu:
attachInterrupt (digitalPinToInterrupt (pin), ISR, način rada);
digitalPinToInterrupt (pin): U Arduino Uno, NANO pinovi koji se koriste za prekide su 2,3 i u mega 2,3,18,19,20,21. Ovdje navedite ulazni pin koji se koristi za vanjski prekid.
ISR: To je funkcija koja se poziva kada se izvrši vanjski prekid.
Način rada: vrsta prijelaza za aktiviranje, npr. Pad, uspon itd.
- RISING: Za pokretanje prekida kada klin prelazi iz LOW u HIGH.
- PADANJE: Da bi se pokrenuo prekid kada klin prelazi iz VISOKOG u NIZKI.
- PROMJENA: Za pokretanje prekida kada pin prelazi iz LOW u HIGH ili HIGH u LOW (tj. Kada se stanje pina promijeni).
Neki uvjeti tijekom upotrebe prekida
- Rutinska funkcija usluge prekida (ISR) mora biti što kraća.
- Funkcija Delay () ne radi unutar ISR-a i treba je izbjegavati.
U ovom vodiču za Arduino prekide broj se uvećava od 0 i koriste se dvije tipke za aktiviranje prekida, a svaka je spojena na D2 i D3. LED se koristi za označavanje prekida. Ako se pritisne jedan gumb, LED se UKLJUČI, a zaslon prikazuje prekid2 i isključuje se, a kada se pritisne drugi gumb, LED se isključuje, a zaslon prikazuje prekid1 i gasi se.
Komponente potrebne
- Arduino ploča (u ovom se vodiču koristi Arduino NANO)
- Tipka - 2
- LED - 1
- Otpornik (10K) - 2
- LCD (16x2) - 1
- Daska za kruh
- Spajanje žica
Kružni dijagram

Kružna veza između Arduino Nano i LCD zaslona 16x2:
|
LCD |
Arduino Nano |
|
VSS |
GND |
|
VDD |
+ 5V |
|
V0 |
Na PIN centra potenciometra Za kontrolu kontrasta LCD-a |
|
RS |
D7 |
|
RW |
GND |
|
E |
D8 |
|
D4 |
D9 |
|
D5 |
D10 |
|
D6 |
D11 |
|
D7 |
D12 |
|
A |
+ 5V |
|
K |
GND |
Dvije tipke povezane su na Arduino Nano na pin D2 i D3. Koriste se za korištenje dva vanjska prekida, jedan za UKLJUČIVANJE LED-a i drugi za ISKLJUČIVANJE LED-a. Svaka tipka ima otpornik za povlačenje od 10 k povezan s masom. Dakle, kad se pritisne tipka, to je logika VISOKO (1), a kada se ne pritisne to je logika NISKA (0). Vučni otpor je obvezan, inače će na ulaznom pinu D2 i D3 biti plutajuće vrijednosti.
LED se koristi za označavanje da Prekid je pokrenuo ili je tipka pritisnuta.
Arduino programiranje prekida
U ovom se priručniku broj povećava s 0 koji se kontinuirano prikazuje na (16x2) LCD-u povezanom s Arduino Nano-om, kad god se pritisne lijevi gumb (prekidač D3), LED se uključuje i zaslon prikazuje Interrupt2, a kada desni gumb (prekidni pin D2) pritisnut LED se isključuje i na zaslonu se prikazuje Interrupt1.
Kompletni kôd s video zapisom nalazi se na kraju ovog vodiča.
1. Prvo se uključi datoteka zaglavlja za LCD zaslon, a zatim se definiraju igle za LCD koje se koriste za povezivanje s Arduino Nano.
#include
2. Unutar funkcije void setup (), prvo prikažite neku uvodnu poruku na LCD zaslonu. Ovdje saznajte više o povezivanju LCD-a s Arduinom.
lcd.početak (16,2); lcd.setCursor (0,0); lcd.print ("DIGEST CIRCUIT"); lcd.setCursor (0,1); lcd.print ("ArduinoInterrupt"); kašnjenje (3000); lcd.clear ();
3. Tada se u istoj funkciji void setup () moraju navesti ulazne i izlazne pinove. Pin D13 spojen je na LED anodu, tako da ovaj pin mora biti definiran kao izlaz.
pinMode (13, IZLAZ);
4. Sada dolazi glavni važan dio programiranja, a to je funkcija attachInterrupt (), ona je također uključena u void setup ().
attachInterrupt (digitalPinToInterrupt (2), buttonPress1, RISING); attachInterrupt (digitalPinToInterrupt (3), buttonPress2, RISING);
Ovdje je navedeno da je pin 2 za vanjski prekid, a funkcija buttonPress1 poziva se kada postoji RISING (LOW to HIGH) na D2 pinu. A pin 3 je također za vanjski prekid i funkcija buttonPress2 poziva se kada postoji RISING na D3 pinu.
5. Unutar praznine petlje () broj (i) se povećava s nule i ispisuje na LCD (16x2).
lcd.clear (); lcd.print ("BROJILO:"); lcd.print (i); ++ i; kašnjenje (1000);
U istoj praznoj petlji (), digitalWrite () koristi se na pinu D13 gdje je spojena LED anoda. Ovisno o vrijednosti u promjenjivom izlazu, LED će se uključiti ili isključiti
digitalWrite (13, izlaz);
6. Najvažniji dio je stvaranje funkcije obrađivača prekida prema nazivu koji se koristi u funkciji attachInterrupt () .
Kako se koriste dva prekidna pina 2 i 3, tako su potrebna dva ISR-a. Ovdje se u ovom programiranju koriste sljedeći ISR
buttonPress1 ():
gumb za voidPress1 () { izlaz = LOW; lcd.setCursor (0,1); lcd.print ("Prekid 1"); }
Ova se funkcija izvršava kada se pritisne tipka na zatiču D2 (RISING EDGE). Ova funkcija mijenja stanje izlaza u LOW (LOW) zbog čega se LED isključuje i ispisuje "prekid1" na LCD zaslon.
buttonPress2 ():
void buttonPress2 () {output = HIGH; lcd.setCursor (0,1); lcd.print ("Prekid2"); }
Ova se funkcija izvršava kad se pritisne tipka na zatiču D3. Ova funkcija mijenja stanje izlaza u HIGH zbog čega se LED uključuje i ispisuje "prekid2" na LCD zaslon.
Demonstracija Arduino prekida
1. Kad se pritisne GUMB ZA GURANJE na lijevoj strani, LED se UKLJUČUJE, a LCD prikazuje Prekid2.

2. Kada se pritisne GUMB NA GUMU s desne strane, LED se isključuje, a LCD prikazuje Prekid1

Na taj način prekid može biti koristan za pokretanje bilo kojeg važnog zadatka između normalnog izvršavanja.
