Keskeytykset, Interruptus

Pollauksessa : koodi suorittaa (ikuista) silmukkaa

• josta se käy tarkastamassa ovatko tietyn koodin suoritusehdot täyttyneet,
• jos ovat niin ohjelma suorittaa ko. ohjelman,
• jos ei, niin ko. koodia ei suoriteta vaan tarkastetaan välittömästi seuraava ehto.
     int main(void)
    {
    while(P3&0x01==0);
    while(P3&0x01)
            {
             if(P1&0x30&&P3&0x10)
                  P1=P1|0x80;
            else
                 P1=P1&DF;
            while(P3&0x10) ;
            }
    P1=0x00; P3=0x00;
    }

Toiminta:
• Prosessori käy lukemassa oheislaitteen tiedot ennalta ohjelmoidussa paikassa.
• Ohjelmoija sijoittaa kutsun omaan lukufunktioon (pää) ohjelmaan tarvitsemiinsa paikkoihin.

Soveltuvuus:
– Pollaaminen soveltuu lähinnä muuttuvan tiedon lukemiseen, kun luettavan arvon tapahtuma-ajalla ei ole merkitystä (esim. lämpötilan muuttuminen).
Arvo jatkuvasti saatavilla.
• Analogia: (Postin hakeminen) – Hoidat kaupungilla omia asioitasi ja aina kun tulet postinkohdalle (tai muuten siltä tuntuu) käyt tarkistamassa postitoimistosta onko sinulle tullut postia



Keskeytyspohjaiset järjestelmät



• Keskeytyspohjaisessa järjestelmässä koodi on sijoitettu keskeytyspalveluihin.
• Keskeytyksen aiheuttaa joko jokin ulkoinen tapahtuma, tai sisäinen kello (periodinen keskeytys).
• Keskeytyspalveluosoitteet on sijoitettu keskeytysvektoritaulukkoon.
• Keskeytyksillä on yleensä prioriteetit
– pienimmällä keskeytysvektoritaulukon järjestysnumerolla on suurin prioriteetti.
• Keskeytykseen mentäessä koko prosessorin tila talletetaan pinoon.

Aikakeskeytys



Toiminta:
• Kellopiiri ohjelmoidaan tuottamaan keskeytys tietyn ajan kuluttua. Prosessori käy lukemassa oheislaitteen tiedot aina keskeytyksen sattuessa. Keskeytysväli riippuu luettavan tiedon luonteesta.

Soveltuvuus:
– Trendikäyrien piirtäminen analogisesta arvosta
• Analogia: (Postin hakeminen)
– Laitat kellon soimaan joka puolen tunnin kuluttua. Aina kun kello soi lopetat sen mitä olet tekemässä ja menet postiin tarkistamaan onko sinulle tullut postia



Keskeytysrutiini



Rutiinin yleisrakenne
• Havaitse keskeytys
• Suorita loppuun mahdolliset kesken olevat käskyt
• Peru mahdolliset muut ohjelmatilan muutokset
• Talleta ohjelman tila
• Suorita keskeytyskäsittely
• Palauta ohjelmatila ja poistu


Laitekeskeytys



Toiminta:
• Oheispiiri ohjelmoidaan tuottamaan keskeytys aina kun sillä on tarjottavaa (pää)ohjelmalle.

Soveltuvuus:

• Satunnaisten tapahtumien lukeminen
• Nopeaa käsittelyä vaativat tapahtumat
• Kun luettavan tiedon tapahtumahetkellä on merkitys

Analogia: (Postin hakeminen)

• Annat postin tarkkailun virkailijan tehtäväksi ja pyydät häntä soittamaan sinulle kun postisi saapuu. Nyt voit huoletta hoitaa omia asioitasi.