Uzilishlarni qayta ishlash
Uzilishlar-bu asosan mikrokontrollerning apparat qismi tomonidan ishlab chiqarilgan ma'lum funktsiyalarga qo'ng'iroqlar. Uzilish natijasida dasturning bajarilishi to'xtaydi va tegishli uzilishni qayta ishlash tartibiga o'tish sodir bo'ladi.
Uzilishlar ichki va tashqi. Ichki uzilish manbalari o'rnatilgan mikrokontroller modullari (masalan, taymer/hisoblagich yoki qo'riqchi). Tashqi uzilishlar Reset (RESET pinidagi signal) yoki INT pinlarida oldindan o'rnatilgan darajadagi signallar tufayli yuzaga keladi. Masalan, AVR mikrokontrollerlarida uzilishni keltirib chiqaradigan INT0/INT1 pinlaridagi signallarning tabiati MCUCR boshqaruv registrining bitlari yordamida aniqlanadi: ISC00 (0-toifa), ISC01 – 1-toifa) - INT0 kirish uchun; ISC 10( 2-toifa), ISC11 (3 – toifa) - INT1 kirish uchun (jadval. 3.1 va jadval. 3.2).
Jadval 3.1. INT0 kiritish orqali uzilishni faollashtirish usulini tanlash
Chiqarish ISC01
|
tushirish 1sc00
|
tavsif
|
0
|
0
|
Interrupt log darajasida chaqiriladi. 0 INT0 kirishida
|
1
|
0
|
Interrupt INT0 signalining tushayotgan old tomonida chaqiriladi
|
1
|
1
|
Interrupt INT0 signalining ko'tarilgan old tomonida chaqiriladi
|
Jadval 3.2. INT1 kiritish orqali uzilishni faollashtirish usulini tanlash
Chiqarish ISC11
|
tushirish Isc10
|
tavsif
|
0
|
0
|
Interrupt darajasi bo'yicha chaqiriladi log. 0 INT1 kirishida
|
1
|
0
|
Interrupt INT1 signalining ko'tarilgan jabhasi bo'ylab chaqiriladi
|
1
|
1
|
Interrupt INT1 signalining tushgan jabhasi bo'ylab chaqiriladi
|
AVR mikrokontrollerlarida barcha uzilishlar, shu jumladan asl holatini tiklash, mahalliy uzilish vektoriga mos keladi – dastur xotirasining dastlabki sohasidagi manzil, unga ko'ra kompilyator uzilishni qayta ishlash tartibiga o'tish buyrug'ini joylashtiradi. AVR mikrokontrollerlarining ba'zi modellarida uzilish vektorlari ro'yxati quyidagicha ko'rinishi mumkin (jadval. 3.3). AVR mikrokontrollerlarida barcha uzilishlar bir xil ustuvorlikka ega va bir vaqtning o'zida ikkita uzilish sodir bo'lganda, birinchi bo'lib kichikroq vektor raqami bilan uzilish qayta ishlanadi.
Jadval 3.3. Interrupt vektorlari
Manzil
xotira
Dastur xotirasidagi manzil
|
uzilish manbai
|
tavsif
|
0x0000
|
RESET
|
Qayta tiklash signali
|
qayta
|
tiklash signali
|
INT0 kirish uchun tashqi uzilish so'rovi
|
0x0001 INT0 kirish uchun uzilish
|
uchun
|
tashqi so'rov INT0 0x0002 INT1 kirish
|
uchun uzilish
|
uchun tashqi so'rov INT1 0x0003 T / S1
|
taymer/hisoblagich bilan ushlash T / S1
|
0x0004
|
T / S1
|
taqqoslash registriga mos keladi va taymer t / S1
|
0x0005
|
T / S1
|
taymerda taqqoslash registri T/C1
|
0x0006
|
T/C1
|
taymer/hisoblagich toshib ketishi t/C1
|
0x0007
|
T/C0
|
taymer/hisoblagich toshib ketishi t/C0
|
0x0008
|
SPI
|
SPI interfeysi orqali ma'lumotlarni uzatish tugallandi
|
0x0009
|
UART
|
0X0009 uart uart qabul qiluvchisi tomonidan baytni qabul qilish tugallandi
|
0x000a UART uart
|
qabul
|
qiluvchisi ma'lumotlari registri bo'sh
|
0x000v uart uart
|
UART
|
UART transceiver tomonidan ma'lumotlarni uzatish tugallandi
|
0x000c
|
ANA_COMP
|
qabul qiluvchisi tomonidan 0x000c Ana_comp Analog taqqoslagichdan uzilish
|
Interrupt paydo bo'lgan paytda, qaytish manzili stekka joylashtiriladi-bu uzilishni qayta ishlash tartibidan chiqqandan keyin birinchi bo'lib bajarilishi kerak bo'lgan buyruq manzili. Oxirgi interrupt Processing subroutine assembler buyrug'ini bajarish natijasida (AVR mikrokontrollerlari uchun reti buyrug'i va pic – retfie mikrokontrollerlari uchun) qaytish manzili stekdan buyruq hisoblagichiga olinadi va dastur bajarilishi davom etadi.
|