AVR-CLASSIC MK-də kəsilmələrin təşkili
AVR-Classic MK-də daxili, yaxud xarici hadisələr ilə əlaqədar daha vacib məsələnin həlli üçün cari proqramın yerinə yetirilməsi müvəqqəti dayandırıla bilər. MK-də kəsilmə baş verərkən əmrlər sayğacı PC –nin məzmunu stekdə yadda saxlanılır , uyğun kəsilmə vektorunun ünvanı isə PC-ə yüklənir.Bu ünvanda yerləşən nisbi keçid əmri ilə kəsilməyə xidmət proqramının başlanğıcı təyin edilir. Kəsilməyə xidmət alt proqramının sonu PC-nin əvvəlki məzmununu bərpa etməklə əsas proqrama qayıdışı təmin edən RETI qayıdış əmri ilə bitir.Kəsilmə mənbələri kimi müxtəlif periferiya qurğuları istifadə edildiyindən kəsilmələrin sayı (2-16) MK-nin konkret modelindən asılı olur.
Kəsilmə vektorları. AVR-Classic MK çoxsəviyyəli üstünlüklü kəsilmə sisteminə malikdir.Proqram yaddaşında 001H ünvanından başlayaraq kəsilmə vektorları cədvəli yerləşir. Kəsilmə vektorunun cədvəldəki mövqeyi onun üstünlük dərəcəsini müəyyən edir: kiçik ünvanda daha böyük üstünlük dərəcəsinə malik kəsilmə vektoru yerləşir. Cədvəlin ölçüsü MK-nin konkret modelindən asılı olaraq(2-16) dəyişir.Misal üçün, cədvəl 6.4-də AT90S1200/ AT90S2313 modeli üçün kəsilmə vektorları verilmişdir.
Kəsilmənin emalı. Bütün kəsilmələrə ümumi icazə üçün SREG(I)=”1” olmalıdır. Ayrı-ayrı kəsilmə siqnallarına icazə/qadağa(maskalama) kəsilmə sorğusuna icazə registrində uyğun bitlərin “1”/”0” edilməsi ilə müəyyənləşdirilir.Kəsilmənin emalı aşağıdakı ardıcıllıqla yerinə yetirilir.
kəsilmə siqnalının hasil edilməsi şərtləri yarandıqda uyğun bayraqlar qalxır(“1”) və SREG(I)=”0” edilərək növbəti kəsilmələrə müvəqqəti olaraq qadağa qoyulur.Lakin çoxsəviyyəli kəsilmənin təmini üçün kəsilməyə xidmət alt proqramında bu bit “1” kimi saxlanıla bilər.
əgər kəsilmə sorğusuna icazə verilmişsə,onda PC-ə uyğun kəsilmə vektorunun ünvanı (002H-010H) yüklənir.Bu halda kəsilmə bayrağı “0” edilir. Kəsilmə qadağan edildiyi halda bu bayraq “1” vəziyyətində qalır(ona iczə verilənə,yaxud alt proqramından”0” edilənə qədər).
Kəsilməyə xidmət alt proqramı yerinə yetirilir.
Kəsilmədən qayıdış RETİ əmri icra olunur və SREG(I)=”1” edilərək növbəti kəsilməyə icazə verilir.
CPU-da PC-nin məzmunu avtomatik olaraq bərpa edilir və əsas proqramın icrası kəsildiyi yerdən başlayaraq davam edir.
Kəsilməyə xidmət alt proqramı çağrılarkən SREG registrinin məzmunu yadda saxlanılmadığından istifadəçi xidmət proqramına daxil olmaqdan əvvəl SREG –ni yadda saxlamalı və sonra da bərpa etməlidir.
Statik hadisələrin (məsələn,taymerin sayğacı ilə müqayisə registrinin məzmunu üst-üstə düşdükdə) yaratdığı kəsilmə üçün uyğun bayraq yalnız onların baş verdiyi anda qalxmış olur.Bu kəsilməyə icazə olduğu halda onun bayrağı “0” edilmişsə,onda bu bayraq növbəti dəfə həmin hadisə baş verərkən “1” olacaqdır. Digər tərəfdən xarici kəsilmə siqnalı gərginlik səviyyəsi kimi formalaşdığından belə kəsilmələr üçün bayraqlar nəzərdə tutulmayıb və kəsilmənin baş verməsi haqqında məlumat onu törədən hadisə davam etdiyi müddətdə yadda saxlanılır.
AVR-Classic MK kəsilmələr növbəsini dəstəkləyir.Əgər kəsilməyə ümumi icazə “0” halında bir neçə kəsilmə siqnalları yaranmışsa,onların“1” qiymətli bayraqları ümumi icazə “1” olana qədər yadda saxlanılır. Kəsilməyə ümumi icazə verildikdən sonra üstünlük dərəcələri nəzərə alınmaqla bu kəsilmələrə xidmət edilir.
İxtiyari kəsilmə siqnalına cavab müddəti (bayrağın qalxdığı andan uyğun kəsilməyə xidmət alt proqramının birinci əmri yerinə yetirilənə qədər ) 4 ədəd IC(Instruction Cycle-əmrlər dövrü) təşkil edir.İlk 2 ədəd IC ərzində PC-nin məzmunu stekdə saxlanılır, növbəti 2 ədəd IC ərzində isə kəsilməyə xidmət alt proqramına keçid baş verir..Əgər kəsilmə baş verən anda əsas proqramda davamiyyəti bir neçə IC olan əmr icra edilirsə,onda yalnız bu əmrin icrası bitdikdən sonra proqram kəsiləcəkdir.Əsas proqrama qayıdış da 4 ədəd IC müddəti tələb edir. Kəsilmədən çıxdıqdan sonra CPU həmişə növbəti kəsilməyə qədər heç olmazsa əsas proqramdakı 1 əmri yerinə yetirməlidir.
Xarici kəsilmələrin idarə edilməsi üçün GIMSK və GIFR registrləri nəzərdə tutulmuşdur(şək..6.12). GIMSK (General Interrupt Mask Register- əaas kəsilmələrin maskalanması registri ) –də xarici INT0 və INT1 kəsilmə siqnallarına icazə/qadağa(maskalama) bayraqları vardır. SREG(I)=”1” olduğu halda bu bayraqların qalxmış vəziyyəti INT0 və INT1 kəsilmələrinə icazə verir. GIFR (General Interrupt Flag Register- əsas kəsilmələrin bayraqları registri) –dəki INTF0 və INTF1 bayraqları xarici kəsilmələrin baş verməsini əks etdirir. GIMSK registrndə icazə verilmiş xarici kəsilmə bayrağı GIFR-də qalxmışsa ,onda uyğun kəsilməyə xidmət alt proqramı işə düşür və aparatla (yaxud proqramla) uyğun INTF bayrağı “0” edilir.
Taymerlərdən yaranan kəsilmələr TIMSK və TIFR registrləri ilə idarə edilir. TIMSK (Timer Interrupt Mask Register-taymerdən kəsilmənin maskalanması registri ) taymerlərdən gələn kəsilmələrə icazə/qadağanı müəyyən edir.Strukturu şək.6.13 a-da verilən TIMSK registrində taymerlərin hər hansı kəsilmə siqnallarına icazənin vəziyyəti əks etdirir. TIFR (Timer Interrupt Flag Register-taymerdən kəsilmə bayraqları registri) registri isə bu siqnalların olması haqqında bayraqları yadda saxlayır.
Şək.6.14-də analoq komparatoru (AC) ,DAC,UART və EEPROM-dan kəsilmə siqnallarının idarəsi üçün registrlərin strukturu göstərilmişdir.Analoq komparatorunun idarəsi registri ACSR-də kəsilmə ilə əlaqədar ACI(AC-interrrupt-flag—kəsilmə bayraqları) və ACIE(AC-interrrupt-flagEnable- kəsilməyə icazə ) bitləri uyğun olaraq AC-dan kəsilməyə icazəni və kəsilmə siqnalının vəziyyətini əks etdirir.ADC-nin idarəsi registri ADCSR-də ADC –dən kəsilmə bayraqları və onlara icazə əlamətləri uyğun olaraq ACIE və ADIF bitləri ilə müəyyən edilir. UART blokunun idarəsi üçün UCSR registrində qəbul/ötürmə/verilənlər buferinin boşalması kimi bayraqlara icazə kimi məlumatlar saxlanılır.EEPROM-nın idarəsi EECR registrinin EERI bitində EEPROM-dan kəsilməyə icazə əlaməti qeyd edilir.