Keskeytykset ovat mikrokontrollerien tehokas ominaisuus, jonka avulla voit käsitellä tapahtumia asynkronisesti. Toisin kuin kysely, joka tarkistaa jatkuvasti tapahtumia, keskeytykset reagoivat välittömästi, kun tietty tapahtuma tapahtuu, kuten painikkeen painike tai ajastimen ylivuoto. Tämä opetusohjelma opastaa sinua ymmärtämään ja käyttämään keskeytyksiä Arduinon kanssa.
Mitä tarvitset
- Arduino UNO (tai yhteensopiva lauta)
- Painike
- 10K-OHM-vastus (alasvetokokoonpanoon)
- LED- ja 220-OHM-vastus (valinnainen)
- Leipälevy- ja hyppyjohdot
- Arduino IDE asennettu tietokoneellesi
Vaihe 1: Mitä keskeytykset ovat?
Keskeytys pysäyttää väliaikaisesti pääohjelman suorittamisen tietyn tapahtuman käsittelemiseksi. Kun tapahtuma on käsitelty, ohjelma jatkuu missä se lähti. Keskeytyksiä hallitaan käyttämällä erityisiä toimintoja, joita kutsutaan Keskeytyspalveluohjelmat (ISRS).
Arduinon keskeytykset
- Ulkoiset keskeytykset: Tapahtumat tietyillä nastailla (esim. Tappi 2 tai 3 Arduino UNO: lla).
- Pin Change keskeyttää: Minkä tahansa digitaalisen PIN -koodin muutos laukaisee.
- Ajastin keskeyttää: Ajastimen ylivuodot tai vertaa otteluita.
Vaihe 2: Ulkoisten keskeytyksien käyttäminen
Arduino UNO tukee ulkoisia keskeytyksiä nastaissa 2 ja 3. Voit määrittää nämä keskeytykset käynnistämään:
- Nouseva: Signaali menee matalasta korkeaan.
- Putoaminen: Signaali menee korkeasta matalaan.
- MUUTTAA: Signaalimuutos tila (matalasta korkeaan tai korkeaan alhaiseen).
- MATALA: Signaali pysyy alhaisena.
Esimerkki Koodi: Painikkeen havaitseminen Paina
Tämä esimerkki vaihtaa LED -levyn, kun painiketta 2 on painettu painiketta.
Selitys
-
attachInterrupt(digitalPinToInterrupt(pin), ISR, mode)
: Määrittää keskeytyksen.-
pin
: Keskeytystappi (esim. Tappi 2 tai 3 Arduino UNO: lla). -
ISR
: Suoritettava keskeytyspalvelu rutiini. -
mode
: Laukaiseva tila (RISING
,FALLING
,CHANGE
taiLOW
).
-
-
digitalPinToInterrupt(pin)
: Muuntaa PIN -luvun keskeytyksen numeroon.
Vaihe 3: PIN -muutoksen keskeytykset
PIN -muutoksen keskeytykset antavat sinun havaita muutokset missä tahansa digitaalisessa PIN -koodissa. Tämä vaatii lisäkirjastoja, kuten Ottaa käyttöön.
Esimerkki koodi: PIN -vaihtaminen keskeytys
Kirjaston asennus
Jos haluat käyttää PIN -muutoksen keskeytyksiä, asenna Ottaa käyttöön Kirjasto Arduino Library Manager -sovelluksen kautta.
Vaihe 4: Ajastin keskeyttää
Ajastimen keskeytykset ovat hyödyllisiä tehtävien aikataulussa tarkalla väliajoin. Katso Arduino -ajastinopetusohjelma Lisätietoja ajastimen keskeytyksistä.
Esimerkki: LED: n vilkkuminen ajastintatkin kanssa
Vaihe 5: Parhaat käytännöt keskeyttämisen käytöstä
- Pidä ISRS lyhyenä: Vältä ISRS: n viivästyksiä tai monimutkaisia laskelmia nopean vastauksen varmistamiseksi.
- Vältä sarjaviestintää ISRS: ssä: Sarjatoiminnot eivät välttämättä toimi luotettavasti ISR: n sisällä.
-
Käyttää
volatile
jaetuille muuttujille: Mark -muuttujat jaetut ISRS: n ja pääohjelman välillävolatile
Kääntäjien optimointikysymysten estämiseksi. - Dewance -tulot: Käsittele dekoiton logiikkaa ohjelmistossa tai laitteissa meluisilla signaaleilla, kuten painikkeen painikkeella.
-
Poista keskeytykset käytöstä kriittisten osien aikana: Käyttää
noInterrupts()
jainterrupts()
Kriittisten koodiosien suojaamiseksi.
Keskeytykset
- Käsittelypainikkeen painikkeet ilman kyselyä
- Pyörän kooderien lukeminen
- Kriittiset tapahtumat (esim. Tarkka moottorin ohjaus)
- Aikataulut määräajoin
- Reagointi ulkoisiin signaaleihin (esim. Anturit, viestintätapahtumat)
Vianetsintä
- Keskeyttää ei laukaista: Varmista, että oikea nasta ja tila on määritetty.
- Epävakaa käyttäytyminen: Poista meluisat signaalit ja vältä pitkiä ISR: itä.
- Konfliktit kirjastojen kanssa: Jotkut kirjastot käyttävät keskeytyksiä sisäisesti (esim. Servo, PWM). Varmista, ettei ole ristiriitoja koodisi kanssa.
Johtopäätös
Keskeytykset mahdollistavat reagoivan ja tehokkaan tapahtumien käsittelyn Arduino -projekteissa. Oppimalla käyttämään ulkoista, nastamuutosta ja ajastin keskeytyksiä, voit luoda vankkoja ja tarkkoja sovelluksia. Kokeile erityyppisiä keskeytyksiä projektien parantamiseksi ja suorituskyvyn optimoimiseksi!