Kysymys:
Mitä eroa on keskeytyksellä muutoksen ja ulkoisen keskeytyksen välillä PIC-tiedostoissa
tsiflana
2012-10-04 21:44:07 UTC
view on stackexchange narkive permalink

Mikä on IOC: n ja EXT Interrupt -toiminnon ero PIC: ssä? Käytän tällä hetkellä PIC12F1822: ta, ja lukuun ottamatta ylimääräistä tarkistustasoa, joka on tehtävä IOC: lle (ts. Mikä nasta aiheutti keskeytyksen), nämä kaksi ovat identtisiä.

Mikä on käytännön ero, jos sellainen on? Milloin käyttäisit yhtä tai toista?

Viisi vastused:
perilbrain
2012-10-04 22:38:05 UTC
view on stackexchange narkive permalink

Katso tätä asiakirjaa, jossa todetaan: -

Keskeytä muutokseen
Tämä ominaisuus on samanlainen kuin ulkoinen keskeytys -toiminto, paitsi että portinvaihdon keskeytys laukaisee minkä tahansa muutoksen (ei vain yhden tyyppisen siirtymän) millä tahansa nastalla, jolle se on käytössä. Tämä tekee siitä joustavamman (on saatavana useammalla nastalla), mutta myös vaikeampi käsitellä oikein.

Jon L
2012-10-04 22:49:13 UTC
view on stackexchange narkive permalink

Tämä tehdään todennäköisesti sirun keskeytysarkkitehtuurin yksinkertaistamiseksi siten, että keskeytysvektoritaulukossa on vähemmän merkintöjä. Keskeytys muutoksen yhteydessä voidaan asettaa laukaisemaan, kun porttirekisteri muuttuu, ja siitä voi olla hyötyä esimerkiksi näppäimistömatriisissa, johon et halua kirjoittaa keskeytyspalvelurutiinia (ISR) jokaiselle yksittäiselle nastalle. Voit kirjoittaa vain yhden, joka voi tarkistaa koko portin arvon, mikä voi olla mikä olet todella kiinnostunut sovelluksesta riippuen.

supercat
2012-10-06 13:45:47 UTC
view on stackexchange narkive permalink

Kolme suurinta eroa keskeytysmuutoksen ja ulkoisen keskeytysnastan välillä:

  1. Ulkoisten keskeytysnastojen avulla ohjelmisto voi määrittää, aiheuttaako keskeytys nousevan reunan vai putoavan reunan ; jos esim. tappi on matala ja yksi on kiinnostunut vain putoavista reunoista, keskeytys ei käynnisty ennen kuin tappi nousee ja putoaa alaspäin. Käyttämällä keskeytys muutoksella -ohjelmaa on herättävä molemmista tapahtumista.
  2. Ulkoisissa keskeytysnapeissa on yksittäiset salpauksen tilabitit. Vaikka tulopulssi tulee ja menee ennen kuin ohjelmistolla on mahdollisuus reagoida siihen, ohjelmisto voi silti selvittää, että se tapahtui, ja reagoida sopivasti.
  3. I / O-portin lukeminen, jossa pin-vaihdon keskeytys on käytössä juuri aika, jolloin tulomuutokset voivat johtaa siihen, että tapinvaihdon keskeytys ei käynnisty. Sen sijaan ulkoisen keskeytystapin liitetyn I / O-portin lukemisella ei ole vaikutusta keskeytykseen. Ehdotan edellisen käyttämistä, kun se on käytännössä mahdollista.
Bruno Ferreira
2012-10-04 22:54:17 UTC
view on stackexchange narkive permalink

Ulkoinen keskeytys laukaistaan ​​periaatteessa tietyllä (nousevalla tai laskevalla, käyttäjän määrittelemällä) reunalla, kun taas keskeytys muutoksella laukaistaan ​​millä tahansa (sekä nousevalla että laskevalla) reunalla.

Ainakin mainitun OP: n [PIC12F1822] (http://ww1.microchip.com/downloads/en/DeviceDoc/41413C.pdf) IOC voidaan myös konfiguroida (käyttäjän määrittämä) laukaisemaan nousevalla reunalla, laskevalla reunalla tai molemmat (13 §). Joten ainoa ero näyttää siltä, ​​että ulkoinen keskeytys voidaan konfiguroida laukaisemaan vain jommallakummasta kahdesta reunatunnistuksesta.
Scott Seidman
2012-10-05 02:23:49 UTC
view on stackexchange narkive permalink

Muutoksen keskeytys tapahtuu yleensä I / O: n puolitavulla, kun ulkoiset keskeytykset ovat yleensä yksittäisille biteille. Kuten jo sanoit, yksi asia, joka sinun on tehtävä KOK: n ISR: ssä, on selvittää, mikä bitti (tai bittiä) muuttui.

KOK on myös hieman vaikeampi käyttää, jopa sen ulkopuolella. On välttämätöntä lukea portti pian ennen keskeytyksen ottamista käyttöön ja vielä tärkeämpää on lukea satama ISR: n sisällä! Jos sinulla on hitaasti muuttuva signaali ja luulet voivasi asettaa lipun ISR: n sisään ja tehdä lukemasi myöhemmin, ISR: n ulkopuolella, ajattele uudelleen! Portin (tai minkä tahansa portissa olevan bitin, jos muistan oikein) luku nollaa vertailussa olevan salvan, joka laukaisee keskeytyksen. Jos et tyhjennä sitä ISR: n sisällä, se käynnistyy uudelleen, kun poistut ISR: stä. Jos muistat tehdä tämän, se on kaikki hyvää, mutta jos unohdat ja luulet voivasi lukea porttia, kun kiertää sitä, tulet hieman turhautumaan, kunnes muistat lukea ISR: ssä.



Tämä Q & A käännettiin automaattisesti englanniksi.Alkuperäinen sisältö on saatavilla stackexchange-palvelussa, jota kiitämme cc by-sa 3.0-lisenssistä, jolla sitä jaetaan.
Loading...