This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
et:avr:interrupts [2014/09/17 10:29] – heikopikner | et:avr:interrupts [2020/07/20 09:00] (current) – external edit 127.0.0.1 | ||
---|---|---|---|
Line 21: | Line 21: | ||
Globaalne, kõigi katkestuste toimumise lubamine, määratakse ära juht- ja olekuregistris SREG. Võimaluse kõiki katkestusi keelata või lubada tingib andmete kaitse vajadus. Kuna katkestused katkestavad käimasoleva programmi täitmise, võivad nad segada või rikkuda andmeid, mida põhiprogramm katkestamise hetkel kasutas. Sellist olukorda saab vältida kõikide katkestuste keelamisega enne tundlike andmetega tegelemist. Globaalne katkestuste keelamine on lihtne, kui seda saab teha ühe registri (SREG) muutmisega. Pärast kriitilise programmiosa lõppu saab katkestused uuesti lubada ja kõik katkestused, | Globaalne, kõigi katkestuste toimumise lubamine, määratakse ära juht- ja olekuregistris SREG. Võimaluse kõiki katkestusi keelata või lubada tingib andmete kaitse vajadus. Kuna katkestused katkestavad käimasoleva programmi täitmise, võivad nad segada või rikkuda andmeid, mida põhiprogramm katkestamise hetkel kasutas. Sellist olukorda saab vältida kõikide katkestuste keelamisega enne tundlike andmetega tegelemist. Globaalne katkestuste keelamine on lihtne, kui seda saab teha ühe registri (SREG) muutmisega. Pärast kriitilise programmiosa lõppu saab katkestused uuesti lubada ja kõik katkestused, | ||
- | |||
- | ~~PB~~ | ||
<box 100% round # | <box 100% round # | ||
Line 39: | Line 37: | ||
} | } | ||
- | int main() | + | // Põhiprogramm |
+ | int main(void) | ||
{ | { | ||
// Muutujale x väärtuse omistamine | // Muutujale x väärtuse omistamine | ||
Line 69: | Line 68: | ||
</ | </ | ||
- | Atmeli | + | Atmeli |
- Madala prioriteediga katkestused | - Madala prioriteediga katkestused | ||
- Keskmise prioriteediga katkestused | - Keskmise prioriteediga katkestused | ||
- Kõrge prioriteediga katkestused | - Kõrge prioriteediga katkestused | ||
See tähendab, et kõrgema prioriteediga katkestus võib katkestada madalama prioriteediga katkestuse koodi. Seoses sellega tuleb katkestusi kasutades vastava prioriteediga katkestused ka kõigepealt lubada. | See tähendab, et kõrgema prioriteediga katkestus võib katkestada madalama prioriteediga katkestuse koodi. Seoses sellega tuleb katkestusi kasutades vastava prioriteediga katkestused ka kõigepealt lubada. | ||
- | |||
- | Illustratsioonilt on näha, kuidas kõrgema tasemega katkestus peatab madalama tasemega katkestuse ning madalama tasemega katkestuse programm jätkab tööd pärast kõrgema tasemega katkestuse töö lõppu. | ||
- | [{{: | ||
- | |||
- | ~~CL~~ | ||
- | |||
- | Kui järjest tuleb mitu samatasemelist katkestust, siis oodatakse eelneva katkestuse töö lõppu ning alles siis alustab samatasemeline katkestus tööd. Juhul, kui vahepeal tuleb mõni kõrgema tasemega katkestus lükkub edasi mõlema katkestuse programmi töö. | ||
- | [{{: | ||
- | |||
- | ~~CL~~ | ||
<code c> | <code c> | ||
Line 96: | Line 85: | ||
sei(); | sei(); | ||
</ | </ | ||
+ | |||
+ | Illustratsioonilt on näha, kuidas kõrgema tasemega katkestus peatab madalama tasemega katkestuse ning madalama tasemega katkestuse programm jätkab tööd pärast kõrgema tasemega katkestuse töö lõppu. | ||
+ | [{{: | ||
+ | |||
+ | ~~CL~~ | ||
+ | |||
+ | Kui järjest tuleb mitu samatasemelist katkestust, siis oodatakse eelneva katkestuse töö lõppu ning alles siis alustab samatasemeline katkestus tööd. Juhul, kui vahepeal tuleb mõni kõrgema tasemega katkestus lükkub edasi mõlema katkestuse programmi töö. | ||
+ | [{{: |