Atmel AVR Studio හි AVR පාලකයට බාධා කරන්න. බාධා කිරීම් - AVR අධ්‍යයනය - ලිපි නාමාවලිය - ක්ෂුද්‍ර පාලක - එය පහසුයි! ක්ෂුද්‍ර පාලකය බාධා කිරීම් වැඩසටහන් කිරීමට කුමන පරිසරයක

බාධා පද්ධති ඕනෑම පාලන පද්ධතියක වැදගත් අංගයකි.

මයික්‍රොප්‍රොසෙසර් පද්ධතිය කෙතරම් කාර්යක්ෂමව එහි කාර්යයන් ඉටු කරන්නේද යන්න බොහෝ දුරට එහි ක්‍රියාකාරිත්වය මත රඳා පවතී. MK-51 බාධා පද්ධතියේ සාමාන්‍ය ව්‍යුහය රූපයේ දැක්වේ. 14.3

MK-51 පවුලේ ක්ෂුද්‍ර පාලකයන් බාධා කිරීම් ප්‍රභවයන් පහක් සඳහා සහාය සපයයි:

* INT0 සහ INT1 යෙදවුම් හරහා පැමිණෙන බාහිර බාධා දෙකක් (පිළිවෙලින් P3: P3.2 සහ P3.3 වරාය රේඛා);

* ටයිමර්/කවුන්ටර T/C0 සහ T/C1 වෙතින් බාධා කිරීම් දෙකක්;

* අනුක්‍රමික වරාය බාධා කිරීම.

බාධා කිරීම් ඉල්ලීම් ක්ෂුද්‍ර පාලකයේ විශේෂ ක්‍රියාකාරී ලේඛනවල සටහන් කර ඇත: IE0, IE1, TF0, TF1 INT0, INT1, T/C0 සහ T/C1 වෙතින් වන බාධා ඉල්ලීම් TCON පාලන ලේඛනයේ (වගුව 14.4) අඩංගු වේ, සහ ධජ RI සහ TI අනුක්‍රමික වරායෙන් බාධාවක් ඉල්ලා සිටී - අනුක්‍රමික වරාය පාලනය කිරීම සඳහා SCON ලේඛනයේ.

වගුව 14.4. TCON රෙජිස්ටර් ආකෘතිය

0 IT0 INT0 බාධා කිරීම් වර්ගය සැකසීම

1 IE0 බාධා ඉල්ලීම් ධජය INT0

2 IT1 INT1 බාධා කිරීම් වර්ගය සැකසීම

3 IE1 බාධා ඉල්ලීම් ධජය INT1

4 TR0 ටයිමරය/කවුන්ටරය 0 සබල කරන්න

5 TF0 පිටාර ගැලීමේ ධජය (බාධා ඉල්ලීම) ටයිමරය/කවුන්ටරය 0

6 TR1 ටයිමරය/කවුන්ටරය සබල කරන්න 1

7 TF1 ටයිමරයේ/කවුන්ටරයේ පිටාර ගැලීමේ ධජය (බාධා ඉල්ලීම) 1

ධජ TF0 සහ TF1 අනුරූප ටයිමරය/කවුන්ටරය පිටාර ගලන විට දෘඪාංග මගින් සකසා ඇත (වඩාත් නිවැරදිව, T/Cx "සියල්ල" තත්වයේ සිට "සියලු ශුන්‍ය" තත්වයට සංක්‍රමණය වන විට).

කොඩි IE0 සහ IE1 පිළිවෙලින් IT0 සහ IT1 බාහිර බාධා කිරීම් වලින් දෘඩාංග මගින් සකසා ඇත. බාහිර ඉල්ලීමක් මඟින් අදාළ ආදානයේ සංඥා මට්ටම අඩු වූ විට හෝ මෙම සංඥාව ඉහළ සිට පහළ මට්ටමට මාරු වන විට (MK හි බාහිර ඔරලෝසු සංඛ්‍යාතයෙන් අඩකට වඩා වැඩි සංඛ්‍යාතයක් සමඟ) ධජය සැකසීමට හේතු විය හැක.

TCON පාලන ලේඛනයේ IT0 සහ IT1 බිටු සැකසීමෙන් ඉල්ලීම් වර්ගය වින්‍යාස කර ඇත. ITx = 0 සැකසීම අඩු සංඥා මට්ටමක් ඉල්ලා සිටීමට බාධා පද්ධතිය වින්‍යාස කරයි, ITx = 1 - අඩු සංඥා මට්ටමක් ඉල්ලා සිටීමට බාධාව සකසයි.

TI සහ RI කොඩි පිළිවෙලින් සම්ප්‍රේෂණය අවසන් වීමෙන් පසුව හෝ පිළිගැනීමේ අවසානයෙන් පසුව අනුක්‍රමික අතුරුමුහුණත් දෘඩාංග මගින් සකසා ඇත.

සියලුම නිශ්චිත බාධා කිරීම් ඉල්ලීම් කොඩි සැකසීම සහ යළි පිහිටුවීම සඳහා වැඩසටහන්ගතව පවතී. මෘදුකාංගයේ බාධා ඉල්ලීම් ධජය සැකසීමෙන් ක්ෂුද්‍ර පාලකයෙන් දෘඪාංගයේ එම ධජය සැකසීමට සමාන ප්‍රතිචාරයක් ලැබේ.

Flags TF0 සහ TF1 දෘඪාංග මගින් නැවත සකසනු ලබන්නේ පාලනය අදාල බාධා කිරීම් චර්යාව වෙත මාරු කරන විටය.

IEx ධජ යළි පිහිටුවීම දෘඪාංග තුළ සිදු කරනු ලබන්නේ බාධාව සේවා කරන විට INTx සංඥාව වැටීම දැනීමට බාධාව වින්‍යාස කර ඇත්නම් පමණි. ඉල්ලීම් සංඥාවේ මට්ටම දැනීමට බාධාව වින්‍යාස කර තිබේ නම්, IEx ධජය නැවත සැකසීම බාධා කිරීමේ සේවා වැඩසටහන මඟින් සිදු කළ යුතු අතර, ඉල්ලීම ඉවත් කිරීමට බාධා ප්‍රභවය මත ක්‍රියා කරයි.

TI සහ RI කොඩි යළි සැකසිය හැක්කේ මෘදුකාංගයෙන් පමණි.

IE බාධා කිරීම් සක්‍රීය කිරීමේ ලේඛනයේ අනුරූප බිටු සැකසීම හෝ ඉවත් කිරීම මගින් එක් එක් ආකාරයේ බාධා කිරීම් තනි තනිව සක්‍රීය කර හෝ අක්‍රිය කර ඇත. මෙම ලේඛනයේ සියලුම බාධා කිරීම් සඳහා සාමාන්‍ය අක්‍රීය බිට් එකක් ද අඩංගු වේ. IE ලේඛනයේ ආකෘතිය වගුවේ දක්වා ඇත. 14.5

වගුව 14.5. IE රෙජිස්ටර් බිටු පැවරීම

තනතුර ලියාපදිංචි කරන්න

බිට් සිහිවටන

කාර්යය

සියලු මූලාශ්‍රවලින් බාධා කිරීම් අබල කරන්න

භාවිතා නොකරනලද

භාවිතා නොකරනලද

වෙතින් බාධාව අබල කරන්න අනුක්රමික වරාය

T/C1 ටයිමරය/කවුන්ටර බාධාව අක්‍රීය කරන්න

වෙතින් බාධාව අබල කරන්න බාහිර මූලාශ්රය INT1

ටයිමර්/කවුන්ටර බාධා T/C0 අක්‍රීය කරන්න

බාහිර මූලාශ්‍ර INT0 වෙතින් බාධා කිරීම් අක්‍රීය කරන්න

සෑම ආකාරයකම බාධා කිරීම් සඳහා හැකි ප්‍රමුඛතා දෙකෙන් එකක් ක්‍රමලේඛනගතව පැවරිය හැක: 0 - අඩුම හෝ 1 - ඉහළම.

IP බාධා කිරීම් ප්‍රමුඛතා ලේඛනයේ අනුරූප බිට් සැකසීමෙන් හෝ ඉවත් කිරීමෙන් ප්‍රමුඛතා වින්‍යාස කෙරේ. මෙම ලේඛනයේ ආකෘතිය වගුවේ දක්වා ඇත. 14.6.

විවිධ ප්‍රමුඛතා ඇති මූලාශ්‍රවලින් එකවර බාධා ඉල්ලීම් ලැබුණු විට, ඉහළ ප්‍රමුඛතා මූලාශ්‍රයෙන් ලැබෙන ඉල්ලීම පළමුව සකසනු ලැබේ.

එකම ප්‍රමුඛතාවයකින් යුත් බාධා කිරීම් ඉල්ලීම් කිහිපයක් එකවර ලැබීමේදී, ඒවායේ සැකසීමේ අනුපිළිවෙල ක්ෂුද්‍ර පාලක දෘඩාංග මගින් තීරණය කරනු ලබන අතර මෘදුකාංග මගින් වෙනස් කළ නොහැක. මෙම ඇණවුම ඡන්ද බාධා ඉල්ලීම් කොඩි අනුපිළිවෙලට අනුරූප වේ, එය මෙසේ පෙනේ:

IT0 -> TF0 -> IT1 -> TF1 -> (RI, TI)

වගුව 14.6. IP රෙජිස්ටර් බිට් පැවරුම්

ස්ථානය Bit සිහිවටන කාර්යය ලියාපදිංචි කරන්න

7 - භාවිතා නොවේ

6 - භාවිතා නොවේ

5 - භාවිතා නොවේ

4 PS Serial port බාධා කිරීම් ප්‍රමුඛතාවය

3 PT1 ටයිමරය/කවුන්ටරය බාධා කිරීමේ ප්‍රමුඛතාවය T/C1

2 PX1 බාහිර මූලාශ්‍ර INT1 වෙතින් ප්‍රමුඛතාවය බාධා කරන්න

1 PT0 ටයිමර්/කවුන්ටර බාධා කිරීම් ප්‍රමුඛතාවය T/C0

0 PX0 බාහිර මූලාශ්‍ර INT0 වෙතින් ප්‍රමුඛතාවය බාධා කරන්න

දෘඩාංග ක්‍රියාත්මක කරන ලද බාධා හසුරුවන්න ඇමතුමක් පහත ක්‍රියා වලින් සමන්විත වේ:

* තොගයේ වැඩසටහන් කවුන්ටරයේ අගය සුරැකීම;

එක් එක් බාධා කිරීම් ප්‍රභවයන් සඳහා බාධා හසුරුවන්න ඇතුල්වීමේ ස්ථාන දෘඪාංගයේ සවි කර ඇත. ඒවායේ අගයන් වගුවේ දක්වා ඇත. 14.7.

වගුව 14.7. හසුරුවන්නන්ට බාධා කිරීමට ඇතුල් වීමේ ස්ථාන වල ලිපිනයන්

බාධා මූලාශ්රය

හසුරුවන්නන්ට බාධා කිරීමට ඇතුල් වීමේ ස්ථාන වල ලිපිනයන්

බාහිර බාධාව ( ITO)

ටයිමර් කවුන්ටරය (TFO)

බාහිර බාධාව (IT1)

ටයිමර් කවුන්ටරය (TF1)

අනුක්‍රමික වරාය (R1 හෝ T1)

බාධාකාරී හසුරුවන්නාගේ පළමු විධානය නිශ්චිත ලිපිනයෙහි පිහිටා තිබිය යුතුය. රීතියක් ලෙස, එවැනි විධානයක් යනු හසුරුවන්නා ඇත්ත වශයෙන්ම පිහිටා ඇති වැඩසටහනේ ස්ථානයට කොන්දේසි විරහිතව පැනීමට විධානයකි.

IE ලේඛනයේ තත්වය කුමක් වුවත්, ස්වයංක්‍රීයව බාධා කිරීම් හැසිරවීමේ පුරුද්දට මාරු වන විට, සේවා සපයන බාධාවෙහි ප්‍රමුඛතා මට්ටමට සමාන ප්‍රමුඛතා මට්ටමක් ඇති සියලුම බාධා කිරීම් අක්‍රීය වේ - එනම්, සමාන ප්‍රමුඛතා මට්ටමක් සහිත කැදලි බාධා කිරීම් අක්‍රීය වේ. . මේ අනුව, අඩු ප්‍රමුඛතා බාධාවකට (IP ලේඛනයේ අනුරූප බිට් එකේ "0" තිබීම) ඉහළ ප්‍රමුඛතා බාධාවකින් බාධා කළ හැකිය (IP ලේඛනයේ අනුරූප බිට් එකේ "1" තිබීම), නමුත් a අඩු ප්‍රමුඛතා එකක්. ඉහළ ප්‍රමුඛතා බාධාවක් සේවා කිරීම වෙනත් මූලාශ්‍රයකින් බාධා කළ නොහැක.

බාධා හසුරුවන්නා වෙතින් ආපසු පැමිණීම RETI උපදෙස් භාවිතයෙන් සිදු කරනු ලැබේ, එය බාධා හසුරුවන්නා කැඳවූ අවස්ථාවේ එහි ගබඩා කර ඇති PC වැඩසටහන් කවුන්ටරයේ අගය සහ බාධා කිරීමේ ප්‍රමුඛතා තර්කය තොගයෙන් ප්‍රතිසාධනය කරයි.


බාධා කිරීම් ගැන කතා කරමු.බාධා කිරීම් යන වචනය තමාටම කථා කරයි; අමතර ක්‍රියා සිදු කිරීම සඳහා ක්‍රියාවලියක් යම් කාලයක් සඳහා නතර වේ. බාධා කිරීම් බාහිර හෝ අභ්යන්තර විය හැකිය. මගේ යාලුවෙක්ගෙන් අහපු සරල උදාහරණයක් කියන්නම්...

ඔහු කුස්සියේ පිඟන් සෝදන්නට සූදානම් වූ අතර, උද්යෝගයෙන් පටන් ගත්තේය, ඔහුගේ අත් පෙරළා ගත්තේය ... නමුත් පිඟන් තෙල් සහිත වූ අතර, ඔහුට විරාමයක් ඇති වූයේ, එක් රාක්කයක තෙල් සහිත පිඟන් සේදීම සඳහා ඩිටර්ජන්ට් සොයා ගැනීමටය. මුළුතැන්ගෙයි ඒකකය, ඉන්පසු ඔහු නැවතත් සිය කාර්යය දිගටම කරගෙන ගියේය. නමුත් යම් අවස්ථාවක දී දුරකථනය නාද වූ අතර, ඔහු නැවතත් ඔහුගේ කාර්යයට විරාමයක් තබා, දුරකථනය අතට ගත්තේය, ඔහුගේ නැන්දම්මා කතා කර ඇය බැලීමට එන බව පැවසුවාය, එබැවින් ඔහුට පෙර සිල්ලර බඩු මිලදී ගැනීමට වෙළඳසැලට යාමට අවශ්‍ය විය. පැමිණියා. මම කඩේට ගිහින් පිඟන් ටික හෝදලා ගියා විතරයි.

මෙම උදාහරණය බාධා කිරීම් වර්ග දෙකක් පෙන්වයි, පළමුවැන්න ප්‍රධාන කාර්යය ක්‍රියාත්මක කිරීම හා සම්බන්ධ වේ - තෙල් සහිත කෑම සඳහා ඩිටර්ජන්ට් සෙවීම - අභ්‍යන්තර බාධාවක්, දෙවැන්න - දුරකථන ඇමතුම- බාහිර බාධා කිරීම්.
ක්ෂුද්‍ර පාලකයක, වෙනත් මූලාශ්‍රවලින් එන සංඥා නිසා බාහිර බාධා ඇති වේ, ක්ෂුද්‍ර පාලකය තුළම ගොඩනගා ඇති උපාංග නිසා අභ්‍යන්තර බාධා ඇති වේ. බාධා කිරීම් එතරම් ආකර්ෂණීය වන්නේ ඇයි?
පළමුවැන්න නම්, අපට වෙනත් කාර්යයක් ඉටු කිරීම සඳහා ප්රධාන ක්රියාවලිය නතර කළ හැකි අතර, පසුව මෙම ක්රියාවලිය දිගටම කරගෙන යා හැක.
දෙවැන්න සහ බොහෝ විට ප්‍රධාන එක අභ්‍යන්තරය හේතුවෙන් සියලුම කාර්යයන් ඉටු කිරීමේ ක්‍රියාවලිය වේගවත් කිරීම ලෙස සැලකේ. අමතර උපාංග. අපි අපේ උදාහරණයට නැවත යමු. අපි හිතමු මගේ මිත්‍රයා පිඟන් සෝදන්න පටන් ගත්තේ එයාගේ බිරිඳ ඒ වෙනකොටත් ගෙදර ආපු වෙලාවේ. තෙල් සහිත පිඟන් දුටු ඔහු ඇයගෙන් පිඟන් සෝදන දියරයක් සොයා ගන්නා ලෙස ඉල්ලා සිටින අතර, ඔහු සේදීමේදී ඇය දැනටමත් ඔහුට මෙම දියර ගෙන එනු ඇත. ඒත් එක්කම දුරකථනය නාද වුණා, මගේ බිරිඳ දුරකථනය අරගෙන අම්මා එක්ක කතා කරලා කඩේට ගියා. එක්ව, සෑම දෙයක්ම ඉතා ඉක්මනින් සිදු විය!
සහ හිරවීම ඊටත් වඩා පහසුය - i.e. ප්රධාන වැඩසටහනක් නොමැත.
මගේ මිතුරා සෝෆා මත වාඩි වී කිසිවක් නොකරයි, ගෘහ සේවිකාව අපිරිසිදු කෑම දැක, ඒ ගැන ඔහුට පවසා, අවසර ලබාගෙන සෝදා ගැනීමට පටන් ගනී. දුරකථනය නාද වන විට, ඔහු තම බිරිඳට දුරකථනය ගන්නැයි කියයි, බිරිඳ දුරකථනයෙන් කතා කරයි, සංවාදය සිල්ලර වෙළඳසැලට යයි ... අලංකාරය! මෙම අවස්ථාවෙහිදී, I/O උපාංග කිහිපයක් ක්ෂුද්‍ර පාලකය තුළ එකවර ක්‍රියාත්මක වේ (නවීන ක්ෂුද්‍ර පාලකවල ඒවායින් බොහොමයක් තිබිය හැකිය) සහ සමස්ත ප්‍රොසෙසරයේ ක්‍රියාකාරිත්වය බොහෝ වාරයක් වැඩි වේ, නමුත් උපාංග වලින් සිදුවන බාධා අනුපිළිවෙලින් එකින් එක සකසනු ලැබේ (සමගාමීව නොවේ. ), ප්‍රමුඛතාවය මත පදනම්ව (අපගේ උදාහරණයේ දී, ගෘහ සේවිකාවට වඩා බිරිඳට ඉහළ ප්‍රමුඛතාවයක් ඇත).

බාධා කිරීම් කළමනාකරණය කිරීම සඳහා රෙජිස්ටර් කිහිපයක් වගකිව යුතුය
SREG - තත්ව ලේඛනය(ජනපදය). අපි ආදාන / ප්රතිදාන උපාංග වගුව දෙස බලමු. SREG ලේඛනයේ හත්වන බිට් එක වේ I (බාධා) ධජය, ගෝලීය බාධා කිරීම් සක්‍රීය ධජය ලෙස හැඳින්වේ.ධජය ඉවත් කර ඇත්නම් (හත්වන බිටු ශුන්‍යය), එවිට සියලු බාධා කිරීම් අක්‍රිය වේ. ධජය ඔසවන්නේ නම් (I සිට 1 දක්වා), අපි බාධා කිරීම් සක්‍රීය කරමු.

I ධජය සකසා ඇති අතර විධානයන් සමඟ නැවත සකස් කර ඇත:
SEI - බාධා කිරීම් සබල කරන්න
CLI - බාධා කිරීම් අක්රිය කරන්න
කුමන බාධාවන් ක්‍රියා කරයිද යන්න රෙජිස්ටර් භාවිතයෙන් සකසා ඇත - වෙස් මුහුණු වලට බාධා කරන්න.
බාධා කිරීම් ආවරණ පහත පරිදි නම් කර ඇත:
TIMSK,..,..,.. – ටයිමර් සහ අනෙකුත් බිල්ට් උපාංග වලින් බාධා කිරීම් කළමනාකරණය.
GIMSK (මෙගා පවුල තුළ GIKR) - සියලු බාහිර බාධා කිරීම් කළමනාකරණය.
බාධා කරන වෙස් මුහුණු බාධාකාරී කොඩි මත රඳා පවතී:
TIFR සහ GIFR පිළිවෙලින්(ගෝලීය බාධා සක්‍රීය කොඩිය සමඟ පටලවා නොගත යුතුය).

ක්‍රියාත්මක කිරීමේ අනුපිළිවෙලට බාධා කරන්න:
ක්ෂුද්‍ර පාලකය සක්‍රිය කර ඇති විට, සියලුම බාධා කිරීම් කොඩි 0 ට යළි පිහිටුවනු ලැබේ. බාධා කිරීම් සක්‍රීය කිරීම සඳහා, වැඩසටහන SREG ලේඛනයේ ධජය I 1 ලෙස සැකසිය යුතුය. මෙයින් පසු, මාස්ක් රෙජිස්ටර් දේශීය බාධා කිරීම් සමඟ ලියාපදිංචි කරන්න (අපට අවශ්‍ය බාධා කිරීම්) .
බාධා කිරීමේ ඉල්ලීමක් (සංඥාවක්) පැමිණි විට, එය බාධා ධජය ඔසවයි (විවිධ බාධා කිරීම් අතර කැදලි බාධා කිරීම් සහ ප්‍රමුඛතාවය සංවිධානය කිරීමට බාධාව අක්‍රිය වුවද). බාධා කිරීම් අක්රිය කර නොමැති නම්, පාලකය සුදුසු අය සම්බන්ධ කර ගනී (බාධා දෛශික) - බාධා දෛශිකය, වත්මන් වැඩසටහන විරාම කිරීම.
බාධා දෛශිකයයනු බාධාවක් සිදු වූ විට වැඩසටහන යන ප්‍රදේශයේ ස්ථාවර රේඛාවකි.
බාධා දෛශික සම්පූර්ණ ලැයිස්තුව හැඳින්වේ බාධා දෛශික වගුව, පිහිටා ඇති වැඩසටහන් කේතයේ ආරම්භයේ.
එබැවින්, බාධා දෛශිකය වෙත ප්‍රවේශ වූ මොහොතේ, SREG ලේඛනයේ I ධජය සහ බාධා කිරීමට හේතු වූ ධජය 0 වෙත නැවත සකසා ඇති අතර, අනෙකුත් බාධා කිරීම් අක්‍රීය කරයි. බාධාව ක්‍රියාත්මක වන අතරතුර වෙනත් බාධා කිරීම් ඉල්ලීම් සිදු වුවහොත්, එම බාධා කිරීම් සඳහා කොඩි එසවී පවතී. වත්මන් බාධාව අවසන් වූ පසු, SREG ලේඛනයේ I ධජය ඔසවන අතර, ඊළඟ එක ක්‍රියාත්මක කිරීමට ඉඩ සලසයි. ඉල්ලීම් කිහිපයක් පැමිණ ඒවායේ කොඩි ඔසවන්නේ නම්, මතකයේ ආරම්භයට ආසන්නව වගුවේ ඇති ලිපිනයේ දෛශිකය කුඩා වන බාධාව පළමුව ක්‍රියාත්මක වේ. දෙවැන්න පහත දැක්වේ, සහ එසේ ය. ඊට අමතරව, ක්‍රමලේඛකයාට ඊනියා කැදලි බාධාවක් සංවිධානය කළ හැකිය, බාධා කිරීමේ වැඩසටහන ක්‍රියාත්මක කිරීමේදී තවත් බාධාවක් සිදු වූ විට. එවිට වත්මන් බාධාව ක්‍රියාත්මක කිරීම නවතා නව එකක් ක්‍රියාත්මක කරනු ලැබේ, ඉන්පසු නැවත්වූ බාධාව ක්‍රියාත්මක කිරීම නැවත ආරම්භ වේ.

උදාහරණයක් ලෙස, ATtiny2313 සඳහා බාධා දෛශික වගුව ලබා දී ඇත

Atmega16 සඳහා බාධා දෛශික වගුව පහත පරිදි වේ:

සසඳන විට, වගු කිසිසේත් නොගැලපේ.
ATtiny පවුල තුළ, බාධා දෛශික රේඛාව බිට් 16 ක් ගන්නා අතර, මෙගා පවුල තුළ එය බිට් 32 ක් ගනී (බාධා දෛශිකයන්ගේ ලිපින කෙරෙහි අවධානය යොමු කරන්න; වැඩසටහන් ප්‍රදේශයේ ලිපින රේඛාව 16 කින් නිරූපණය වන බව මම ඔබට මතක් කරමි. -බිට් වචනය).

ATtiny2313 සඳහා වැඩසටහන් කේතය මේ වගේ විය හැක:
.cseg .org 0 rjmp යළි පිහිටුවන්න rjmp INT_0 rjmp INT_1 rjmp Timer1_capt1 rjmp Timer1_comp1 rjmp Timer1_OVF1 rjmp Timer0_OVF0 rjmp UART_RX rjmp UART_PUART_PU T rjmp Timer1_compB rjmp Timer0_compA rj mp Timer0_compB rjmp USI_START rjmp USI_OVERFLOW rjmp EE_READY rjmp WDT_ OVERFLOW

ඔබට පෙනෙන පරිදි, බාධා දෛශිකය බාධා වැඩසටහන් ලේබල වලට සාපේක්ෂ පැනීමක් නිර්මාණය කරයි. පහත වගුව විකල්ප පෙන්වයි; 1. බාධා නොමැති විට; 2, 3. INT_1 ආදානයේදී බාහිර බාධා කිරීම් සමඟ.
ලේබල "හිස්" නම් (ලේබලය යටතේ වැඩසටහනක් නොමැත), එවිට කිසිවක් සිදු නොවේ, සහ වැඩසටහන අනුපිළිවෙලින් ඉතිරි ලේබල " හරහා ධාවනය" සහ ආරක්ෂිතව විධානය වෙත ළඟා වේ. RETI- Interrupt return - interrupt handler එකෙන් පිටවෙන්නවගුවේ පළමු තීරුවේ පෙන්වා ඇති පරිදි.

බාධා කිරීමේ වැඩසටහනක් ක්‍රියාත්මක කිරීමට, උදාහරණයක් ලෙස, INT_1 ආදානයේදී, ඔබට ලැයිස්තුවෙන් INT_1: ලේබලය ඉවත් කිරීමට අවශ්‍ය වේ. මෙය වගුවේ දෙවන තීරුවේ ක්රමානුකූලව පෙන්වා ඇත.
නමුත්, ක්‍රමලේඛකයාට සෑම අවස්ථාවකම සියලුම බාධා කිරීම් සහ ඒවා සඳහා වෙනම ලේබල් ලිවීම අපහසුය, විශේෂයෙන් නවතම මාදිලිවල, මේසය තරමක් විශාල වන විට; බාධා දෛශික රේඛාවේ වහාම RETI විධානය ලිවීම පහසුය. බාධාව භාවිතා නොවේ. එවිට වගුවේ තුන්වන තීරුවේ පෙන්වා ඇති පරිදි වැඩසටහන පෙනෙනු ඇත.

AVR පාලකයන්, ආකෘතිය අනුව, ආදාන 1 සිට 8 දක්වා තිබිය හැක බාහිර බාධා කිරීම්.
බාහිර බාධා කළමණාකරණ පද්ධතිය සලකා බලමු. මෙම කාර්යය සඳහා, ආකෘතිය අනුව I/O රෙජිස්ටර් වල පහත සංයෝජන සපයනු ලැබේ (අදාළ දත්ත පත්‍රිකාව බලන්න):
- GIMSK, EIFR, PCMSK, MCUCR;
- GIKR, GIFR, MCUCR;
- EIMSK, EICR, EIFR;
GIMSK, GIKR, EIMSK - බාධා කිරීම් ආවරණ,
EIFR, PCMSK, GIFR, EIFR - කොඩි බාධා කරන්න
අවසරය හෝ තහනම සඳහා බාහිර බාධා කිරීම්පාලන රෙජිස්ටර් අදහස් කරන්නේ: GIMSK-(සාමාන්‍ය බාධා කිරීම් මාස්ක් ලේඛනය)(කුඩා), GICR- (සාමාන්‍ය බාධා කිරීම් පාලන ලේඛනය)(මෙගා), MCUCR - (MCU පාලන ලේඛනය)




EIFR- බාහිර බාධා කිරීම් කොඩි ලේඛනය: 1 - සක්‍රීය, 0 - අක්‍රීය. සෑම බිට් එකක්ම (කොඩිය) අනුරූප පින් එකට බාධා ප්‍රභවයක් ලෙස ක්‍රියා කිරීමට ඉඩ සලසයි.

GIMSK රෙජිස්ටර් පාලන බිටු:
බිට් 7 - INT1: බාහිර බාධා කිරීම් ඉල්ලීම 1 සක්‍රීය කරන්න - INT1 බාධා කිරීම් සක්‍රීය බිට්: 1 - සක්‍රීය, 0 - අක්‍රීය. INT1 පින් එක ප්‍රතිදානයක් ලෙස වින්‍යාස කර තිබුණත් බාධාව ජනනය වේ. INT1 බිට් EIFR ධජ ලේඛනයේ බාධා කිරීමට සකසා ඇත. INT1 පින් එක ඔරලෝසු උත්පාදක යන්ත්‍රය සමඟ සමමුහුර්ත කර ඇත.

බිට් 6 - INT0: බාහිර බාධා කිරීම් ඉල්ලීම 0 සක්‍රීය කරන්න - බාධා කිරීම් සක්‍රීය කරන්න බිටු INT0: 1 - සක්‍රීය කර ඇත, 0 - අක්‍රීය කර ඇත. INT0 පින් එක ප්‍රතිදානයක් ලෙස වින්‍යාස කර තිබුණත් බාධාව ජනනය වේ. INT0 බිට් එක EIFR ධජ ලේඛනයේ බාධා කිරීමට සකසා ඇත. INT10 පින් ඔරලෝසු උත්පාදක යන්ත්රය සමඟ සමමුහුර්ත කර ඇත.

බිට් 5 - PCIE: Pin Change Interrupt Enable – interrupt enable bit on PCINT0...7 pins: 1 – enabled, 0 – disabled. PINT0...7 pins වල ඕනෑම වෙනසක් බාධාවක් ඇති කරයි. PINT0...7 PCMSK ධජ ලේඛනයේ බිටු මගින් තනි තනිව බාධා කිරීම් සඳහා වින්‍යාස කර ඇත.

PCMSK- පින් වෙනස් කිරීමේ මාස්ක් රෙජිසරය - කොඩි ලේඛනය PCMSK: 1 - අවසර, 0 - ආබාධිත. එක් එක් බිට් (කොඩිය) අනුරූප pin එක බාධා ප්‍රභවයක් ලෙස ක්‍රියා කිරීමට ඉඩ සලසයි. මෙම PCINT0...7 කටු ඔරලෝසු උත්පාදක යන්ත්රය සමඟ සමමුහුර්ත කර නැත, i.e. කිසියම් පින් එකක වෙනසක් සිදු වූ විට බාධාවක් ඇති වේ.

මෙගා8

සහ අදාළ කොඩි ලේඛනය


බිට් 7

බිට් 6 - INT0: බාහිර බාධා කිරීම් ඉල්ලීම 0 සක්‍රීය කරන්න - බාධා කිරීම් සක්‍රීය කරන්න බිටු INT0: 1 - සක්‍රීය කර ඇත, 0 - අක්‍රීය කර ඇත. INT0 පින් එක ප්‍රතිදානයක් ලෙස වින්‍යාස කර තිබුණත් බාධාව ජනනය වේ. INT0 bit GIFR ධජ ලේඛනයේ බාධා කිරීමට සකසා ඇත



GIFR – General Interrupt Flag Register: 1 – enabled, 0 – disabled. සෑම බිට් එකක්ම (කොඩිය) අනුරූප පින් එකට බාධා ප්‍රභවයක් ලෙස ක්‍රියා කිරීමට ඉඩ සලසයි.

GICR රෙජිස්ටර් පාලන බිටු:
බිට් 7– : බාහිර බාධා ඉල්ලීම 1 සබල කරන්න – interrupt enable bit INT1: 1 - අවසර, 0 - තහනම්. INT1 පින් එක ප්‍රතිදානයක් ලෙස වින්‍යාස කර තිබුණත් බාධාව ජනනය වේ. INT1 bit GIFR ධජ ලේඛනයේ බාධා කිරීමට සකසා ඇත

බිට් 6 - INT0: බාහිර බාධා ඉල්ලීම 0 සබල කරන්න - interrupt enable bit INT0: 1 - අවසර, 0 - තහනම්. INT0 පින් එක ප්‍රතිදානයක් ලෙස වින්‍යාස කර තිබුණත් බාධාව ජනනය වේ. INT0 bit GIFR ධජ ලේඛනයේ බාධා කිරීමට සකසා ඇත

බිට් 5 - INT2: බාහිර බාධා ඉල්ලීම 2 සබල කරන්න - interrupt enable bit INT2: 1 - අවසර, 0 - තහනම්. INT2 පින් එක ප්‍රතිදානයක් ලෙස වින්‍යාස කර තිබුණත් බාධාව ජනනය වේ. INT2 bit GIFR ධජ ලේඛනයේ බාධා කිරීමට සකසා ඇත

සියලුම පාලක වල INT0 සහ INT1 ආදාන වල ක්‍රියාකාරිත්වය MCUCR ලේඛනයේ පහත්-අනුපිළිවෙල බිටු මගින් පාලනය වේ.

MCUCR- MCU පාලන ලේඛනය
පාලන බිටු:
බිටු 1, 0 - ISC01, ISC00 (බාධා සංවේදී පාලන 0 බිට් 1 සහ බිට් 0) - මෙම බිටු වල තත්වය INT0 pin මත සිදුවීම තීරණය කරයි, එය INT0 බාධාවක් ජනනය කරයි:
ISC01=0, ISC00=0 - තාර්කික ශුන්‍ය මට්ටම;
ISC01=0, ISC00=1 - තාර්කික තත්ත්වයෙහි කිසියම් වෙනසක්;
ISC01=1, ISC00=0 – වැටෙන දාරයක;
ISC01=1, ISC00=1 – නැඟී එන අද්දර.

බිටු 3, 2 - ISC11, ISC10 (බාධා සංවේදී පාලන 1 බිට් 1 සහ බිට් 0) - මෙම බිටු වල තත්වය INT1 pin හි සංඥා මට්ටම තීරණය කරයි, එය INT1 බාධාව ජනනය කරයි:
ISC11=0, ISC10=0 - තාර්කික ශුන්‍ය මට්ටම;
ISC11=0, ISC10=1 - තාර්කික තත්ත්වයෙහි කිසියම් වෙනසක්;
ISC11=1, ISC10=0 - වැටෙන දාරයක;
ISC11=1, ISC10=1 – නැඟී එන අද්දර.

හොඳයි, බාහිර බාධා කිරීම් ගැන අපි අවම වශයෙන් කතා කර ඇති බව පෙනේ.
බාධා කිරීම් වැඩ කිරීමට නම්, ඒවා ඒ අනුව ලියාපදිංචි කළ යුතු බව පැහැදිලිය.
INT1 මත ආරම්භ කරන ලද බාධාවෙහි ආරම්භය සංඥාවේ නැගී එන කෙළවරේ කුඩා සඳහා එකතු කරමු:

Ldi r16.0x80 ; r16 හි 0b10000000 ldi r17.0x0C අංකය ලියන්න; MCUCR,r17 වලින් 0b00001100 අංකය r17 ලියන්න; ISC11=1, ISC10=1 out GIMSK,r16 මත බාධාව උත්පාදනය වනු ඇත; වෙස් මුහුණ INT0 sei සකසන්න
මාර්ගය වන විට, ඔබට tiny2313 හි බාධාවක් ජනනය කළ හැකිය ඕනෑම PCINT0...7 කටු, Mega දක්වා 48 මාලාවේ මෙම විශේෂාංග නොමැත...
වැඩසටහන බිඳවැටීමට හේතු විය හැකි බාධා කිරීම් සිදු විය හැකි මෙහෙයුම් තිබේ. එවැනි අවස්ථාවන්හිදී, මෙහෙයුම ආරම්භ කිරීමට පෙර අපි CLI ලියන්නෙමු, සහ SEI වලින් පසුව. එවැනි මෙහෙයුම් හැඳින්වේ - පරමාණුක.
ඕනෑම බාධාවක අරමුණ සිදුවීමක් ග්‍රහණය කර ගැනීම නිසා බාධා කිරීම් වැඩසටහන් සංයුක්ත වීම සහ උපරිම වේගයකින් ක්‍රියාත්මක කිරීම යෝග්‍ය වේ. අනුව නම් විවිධ හේතුවැඩසටහන සෙමින් ක්‍රියාත්මක වේ, එය සිදුවීම පටිගත කර ටික වේලාවකට පසුව එය සැකසීමට ප්‍රමාණවත් වේ.

අනවශ්‍ය තොරතුරු සමඟ ඉදිරිපත් කරන ලද ද්‍රව්‍ය අවුල් නොකිරීමට, පාඨකයන්ට දත්ත පත්‍රිකා භාවිතා කරන ලෙස මම නිර්දේශ කරමි, සියල්ල පැහැදිලි නැතිනම්, සංසදවල නිතර ප්‍රශ්න අසන්න.
මීලඟට, අපි ගොඩනඟන ලද ටයිමර් මත පදනම්ව අභ්යන්තර බාධා කිරීම් විස්තරාත්මකව සලකා බලමු. පාඨකයින්. ඡන්දය සඳහා සහභාගී වීමට, ලියාපදිංචි වී ඔබේ පරිශීලක නාමය සහ මුරපදය සමඟ වෙබ් අඩවියට පිවිසෙන්න.

ATmega8 ක්ෂුද්‍ර පාලකයේ ඇති එක් වාසියක් වන්නේ එහි විවිධ බාධා කිරීම් වල පුළුල් පරාසයයි.

බාධා කරන්නප්‍රධාන වැඩසටහන ක්‍රියාත්මක කිරීම අත්හිටුවන ලද සිදුවීමක් වන අතර යම් ආකාරයක බාධාවක් හසුරුවන ශ්‍රිතයක් ලෙස හැඳින්වේ.

බාධා කිරීම් අභ්යන්තර හා බාහිර වශයෙන් බෙදා ඇත. අභ්‍යන්තර බාධා කිරීම් වල ප්‍රභවයන් ඇතුලත් ක්ෂුද්‍ර පාලක මොඩියුල (ටයිමර්, USART සම්ප්‍රේෂකය, ආදිය) ඇතුළත් වේ. බාහිර සංඥා microcontroller pins වෙත පැමිණෙන විට බාහිර බාධා කිරීම් සිදු වේ (උදාහරණයක් ලෙස, RESET සහ INT pins වල සංඥා). බාධාවක් ඇතිවීමට තුඩු දෙන සංඥා වල ස්වභාවය පාලන ලේඛනයේ පිහිටුවා ඇත MCUCR, විශේෂයෙන්ම බිටු වල - INT 0 ආදානය සඳහා ISC00 (bit 0) සහ ISC01 (bit 1); INT1 ආදානය සඳහා ISC10 (bit2) සහ ISC11 (bit3).

ATmega8 ක්ෂුද්‍ර පාලකයේ, සෑම බාධාවකටම තමන්ගේම ඇත බාධා දෛශිකය(නිශ්චිත බාධා කිරීම් පුරුද්දට පැනීමේ විධානය ගබඩා කර ඇති වැඩසටහන් මතක ප්‍රදේශයේ ආරම්භයේ ලිපිනය). mega8 හි, සියලු බාධා කිරීම් වලට එකම ප්‍රමුඛතාවයක් ඇත. බාධා කිරීම් කිහිපයක් එකවර සිදු වුවහොත්, පහළ දෛශික අංකය සහිත බාධාව පළමුව සකසනු ලැබේ.

Atmega8 හි දෛශික බාධා කරන්න

ලිපිනය බාධා මූලාශ්රය විස්තර
0x0000 යළි පිහිටුවන්න සංඥාව නැවත සකසන්න
0x0001 INT0 INT0 ආදානයේදී බාහිර බාධා ඉල්ලීම
0x0002 INT1 INT1 ආදානයේදී බාහිර බාධා ඉල්ලීම
0x0003 T/C1 ටයිමර් ග්‍රහණය T/C1
0x0004 T/C1 තරඟය T/C1 ටයිමරය සංසන්දනය කිරීමේ රෙජිස්ටර් A
0x0005 T/C1 T/C1 කාලගණකයේ B සංසන්දනය කිරීමේ ලේඛනය සමඟ ගැලපේ
0x0006 T/C1 T/C1 කවුන්ටරය පිටාර ගැලීම
0x0007 T/C0 T/C0 කවුන්ටරය පිටාර ගැලීම
0x0008 SPI SPI දත්ත හුවමාරුව සම්පූර්ණයි
0x0009 UART UART සම්ප්‍රේෂකය දත්ත ලැබීම සම්පූර්ණ කර ඇත.
0x000A UART UART දත්ත ලේඛනය හිස්ය
0x000B UART UART සම්ප්‍රේෂකය මඟින් දත්ත සම්ප්‍රේෂණය සම්පූර්ණයි
0x000C ANA_COMP ඇනලොග් සංසන්දකයෙන් බාධා කරන්න

කළමනාකරණයට බාධා කරන්න

ATmega8 හි බාධා කිරීම් කළමනාකරණය කිරීම සඳහා 4 රෙජිස්ටර් වගකිව යුතුය:

GIMSK(එනම් GICR) - INT0, INT1 ආදානවල සංඥා මත පදනම්ව බාධා කිරීම් තහනම්/සක්‍රීය කරන්න

GIFR- සියලුම බාහිර බාධා කිරීම් කළමනාකරණය

TIMSK, TIFR- ටයිමර් / කවුන්ටර වලින් බාධා කිරීම් කළමනාකරණය

ලියාපදිංචි කරන්න GIMSK(GICR)

INTFx=1: INTx ආදානයේදී බාධාවක් ඇති විය. බාධා කිරීම් හැසිරවීමේ පුරුද්දට ඇතුල් වන විට, INTFx ස්වයංක්‍රීයව ලොග් තත්වයට නැවත සකසනු ලැබේ. 0

ලියාපදිංචි කරන්න TIMSK

7 6 5 4 3 2 1 0
TOIE1
OCIE1A
OCIE1B
-
TICIE
-
TOIE0
-

TOIE1=1: T/C1 පිටාර ගැලීමේ බාධාව සබල කර ඇත

OCIE1A=1: සංසන්දන ලේඛනය A කවුන්ටරයේ T/C1 සක්‍රීය කර ඇති අන්තර්ගතයට ගැළපෙන විට බාධා කරන්න

OCIE1B=1: සංසන්දන ලේඛනය B කවුන්ටරයේ T/C1 සබල කර ඇති අන්තර්ගතයට ගැළපෙන විට බාධා කරන්න

TICIE=1: අල්ලා ගැනීමේ කොන්දේසිය සපුරා ඇති විට බාධා සක්රිය කර ඇත

TOIE0=1: T/C0 පිටාර ගැලීමේ බාධාව සබල කර ඇත

ලියාපදිංචි කරන්න TIFR

7 6 5 4 3 2 1 0
TOV1
OCF1A
OCF1B
-
ICF1
-
TOV0
-

TOV1=1: T/C1 පිටාර ගැලීම සිදු විය

OCF1A=1: සංසන්දනාත්මක ලේඛනය A කවුන්ටරයේ T/C1 අවසර දී ඇති අන්තර්ගතය සමඟ සමපාත විය

OCF1B=1: සංසන්දනාත්මක ලේඛනය B කවුන්ටරයේ T/C1 අවසර දී ඇති අන්තර්ගතයට ගැලපේ

ICF=1: අල්ලා ගැනීමේ කොන්දේසි සපුරා ඇත

TOV0=1: T/C0 පිටාර ගැලීම සිදු විය

බාධා කිරීම් හැසිරවීමේ උපසිරැසියට ඇතුළු වන විට, බාධාවට අනුරූප වන TIFR රෙජිස්ටර් ධජය ස්වයංක්‍රීයව ලොග් තත්වයට නැවත සකසනු ලැබේ. 0

SREG තත්ත්ව ලේඛනයේ (bit 7 = 1) සාමාන්‍ය බාධා කිරීම් සක්‍රීය කළ විට පමණක් බාධා කිරීම් ක්‍රියා කරයි. බාධාවක් සිදු වූ විට, මෙම බිට් ස්වයංක්‍රීයව 0 වෙත නැවත සකසනු ලැබේ, පසුකාලීන බාධා කිරීම් අක්‍රීය කරයි.

මෙම උදාහරණයේදී, INT0 පින් එක අදින්න ආදාන මාදිලියේ සක්‍රීය කර ඇත. බොත්තමක් භාවිතයෙන් පින් එක බිමට කෙටි කළ විට, එය මත තාර්කික 0 සකසා ඇත (සංඥාවේ දාරය සැපයුම් වෝල්ටීයතාවයේ සිට 0 දක්වා පහත වැටේ) සහ බාධා හසුරුවන්නා ක්‍රියා විරහිත කර, වරායේ ශුන්‍ය පින්ට සම්බන්ධ විදුලි බුබුල දල්වයි. බී

void lampON()
{
PORTB.0=1;
DDRB.0=1;
}

බාධාවක් හිස් ext_int0_isr(ශුන්‍ය)
{
lampON ();
}

DDRD.2=0;
PORTD.2=1;

SREG|= (1 අතරතුර (1) (

ඉහත උදාහරණය මඟින් Code Vision AVR (interrupt void ext_int0_isr(void)) හි බාධා දෛශික සකසන ආකාරය ද පෙන්වයි. බාධා දෛශික වෙනත් අවස්ථා සඳහාද එලෙසම සකසා ඇත:

EXT_INT0 2
EXT_INT1 3
TIM2_COMP 4
TIM2_OVF 5
TIM1_CAPT 6
TIM1_COMPA 7
TIM1_COMPB 8
TIM1_OVF 9
TIM0_OVF 10
SPI_STC 11
USART_RXC 12
USART_DRE 13
USART_TXC 14
ADC_INT 15
EE_RDY 16
ANA_COMP 17
TWI 18
SPM_READY 19

කොටස AVR ක්ෂුද්‍ර පාලකපර්යන්ත උපාංග විශාල සංඛ්‍යාවක් (ADC, Timer/Counters, EXTI, Analog Comparator, EEPROM, USART, SPI, I2C, ආදිය) ඇතුළත් වන අතර, ඒ සෑම එකක්ම දත්ත/සංඥා සහ අනෙකුත් තොරතුරු මත යම් යම් ක්‍රියා සිදු කළ හැක. යෙදුම් කාර්යක්ෂමතාව වැඩි දියුණු කිරීමට සහ AVR ක්ෂුද්‍ර පාලක මත පදනම්ව සියලු වර්ගවල උපාංග සංවර්ධනය කිරීමේදී පිරිවැය අඩු කිරීමට මෙම උපාංග ක්ෂුද්‍ර පාලකයට ඒකාබද්ධ කර ඇත.

දත්ත මතකයේ පිහිටා ඇති I/O රෙජිස්ටර් හරහා ප්‍රොසෙසරය පර්යන්ත උපාංග සන්නිවේදනය/පාලනය කරයි, ඒවා සාමාන්‍ය විචල්‍යයන් මෙන් භාවිතා කිරීමට ඉඩ සලසයි. සෑම උපාංගයකටම තමන්ගේම I/O රෙජිස්ටර් ඇත.

සියලුම I/O රෙජිස්ටර් කණ්ඩායම් තුනකට බෙදිය හැකිය: දත්ත රෙජිස්ටර්, පාලන රෙජිස්ටර් සහ තත්ව රෙජිස්ටර්.

පාලන රෙජිස්ටර් භාවිතා කරමින්, උපාංගය එක් ආකාරයකින් හෝ වෙනත් ආකාරයකින් ක්‍රියා කිරීමට වින්‍යාස කර ඇත, යම් සංඛ්‍යාතයක්, නිරවද්‍යතාවයක් යනාදිය, සහ දත්ත රෙජිස්ටර් භාවිතා කරමින්, කාර්යයේ ප්‍රති result ලය කියවනු ලැබේ. මෙම උපාංගයේ(ඇනලොග්-ඩිජිටල් පරිවර්තනය, ලැබුණු දත්ත, ටයිමරය/කවුන්ටර අගය, ආදිය). මෙහි සංකීර්ණ කිසිවක් නොමැති බව පෙනේ (ඇත්ත වශයෙන්ම, මෙහි සංකීර්ණ කිසිවක් නොමැත :)), උපාංගය සක්‍රිය කර, අපේක්ෂිත මෙහෙයුම් ආකාරය සඳහන් කර, පසුව ඉතිරිව ඇත්තේ කූපන් ක්ලිප් කිරීම, සූදානම් කළ දත්ත කියවීම පමණි සහ ගණනය කිරීම් වලදී ඒවා භාවිතා කරන්න. සියලුම පර්යන්ත උපාංග ක්ෂුද්‍ර පාලක මධ්‍යයට සමාන්තරව සහ විවිධ සංඛ්‍යාතවල පවා ක්‍රියා කරන බැවින් මෙම දත්ත කියවීම “කවදද” (උපාංගය එහි ක්‍රියාකාරිත්වය සම්පූර්ණ කර තිබේද නැතහොත් තවමත් දත්ත සැකසෙමින් පවතී) සම්පූර්ණ ප්‍රශ්නය වේ. සන්නිවේදනය ක්‍රියාත්මක කිරීමේ ප්‍රශ්නය පැන නගී. සහ ප්රොසෙසරය අතර සමමුහුර්තකරණය සහ පර්යන්ත උපාංගය.

ඔබ දැනටමත් අනුමාන කර ඇති පරිදි, උපාංගය සහ ප්‍රොසෙසරය අතර සන්නිවේදනය සහ සමමුහුර්තකරණය ක්‍රියාත්මක කිරීම සඳහා, යම් උපාංගයක වත්මන් ක්‍රියාකාරී තත්ත්වය ගබඩා කරන “තත්ව රෙජිස්ටර්” භාවිතා වේ. රෙජිස්ටර් තත්වයේ" (කොඩිය), මෙම උපාංගයේ වත්මන් තත්වය හෝ එහි තනි ක්‍රියාකාරිත්වය ගැන "කතා කරන" වත්මන් අගය (වැඩ අවසන් / සම්පූර්ණ කර නැත, දත්ත සැකසීමේදී දෝෂය, හිස් ලියාපදිංචි කිරීම යනාදිය).

ප්‍රොසෙසරය සහ පර්යන්ත උපාංගයක් අතර සන්නිවේදන යාන්ත්‍රණය ක්‍රියාත්මක කරනු ලබන්නේ මෙම උපාංගයේ විශේෂිත කාර්යයක් සඳහා වගකිව යුතු කොඩි ඡන්ද විමසීම මගිනි. විශේෂිත ධජයක (උපාංගයේ තත්වය) අගය මත පදනම්ව, ඔබට වැඩසටහන් ක්‍රියාත්මක කිරීමේ ප්‍රවාහය (ශාඛා කිරීම) වෙනස් කළ හැකිය. උදා:

යම් ධජයක් සකසා තිබේදැයි පරීක්ෂා කිරීම (සමහර සිදුවීමක් සිදුවී ඇත):

නම් (RegX & (1<< Flag) ) // RegX ලේඛනයේ ධජය සකසා ඇත්නම්
{
// දෙයක් කරන්න
}

යම් ක්‍රියාවක් (සිදුවීම) සම්පූර්ණ කිරීම සඳහා රැඳී සිටීම:

අතරතුර(!(RegX & (1<

වැඩසටහන් ප්‍රමාණය සහ ක්‍රමලේඛ වේගය යන දෙඅංශයෙන්ම කොඩි විමසීම තරමක් සම්පත්-දැඩි කාර්යයකි. AVR ක්ෂුද්‍ර පාලකවල ඇති මුළු කොඩි සංඛ්‍යාව තරමක් විශාල බැවින් (වාසියක්), ඡන්ද කොඩි මගින් ප්‍රොසෙසරය සහ උපාංගය අතර සන්නිවේදනය ක්‍රියාත්මක කිරීම ඔබ ලියන වැඩසටහනේ කාර්යක්ෂමතාව (කේත වේගය / කේත ප්‍රමාණය) අඩුවීමට හේතු වේ. ඊට අමතරව, වැඩසටහන ඉතා ව්‍යාකූල වන අතර, එය කේතයේ සවිස්තරාත්මක නිදොස්කරණය සමඟ පවා හඳුනා ගැනීමට අපහසු දෝෂ පෙනුමට දායක වේ.

AVR ක්ෂුද්‍ර පාලක සඳහා වැඩසටහන් වල කාර්යක්ෂමතාව වැඩි කිරීම සඳහා මෙන්ම මෙම වැඩසටහන් නිර්මාණය කිරීමේ සහ නිදොස් කිරීමේ ක්‍රියාවලියට පහසුකම් සැලසීම සඳහා, සංවර්ධකයින් විසින් සියලුම පර්යන්ත උපාංග "බාධා ප්‍රභවයන්" සමඟ සන්නද්ධ කර ඇත ( මූලාශ්‍රවලට බාධා කරන්න), සමහර උපාංගවලට බහුවිධ බාධා මූලාශ්‍ර තිබිය හැක.

බාධා කිරීම් මූලාශ්ර භාවිතා කිරීම, එය ක්රියාත්මක වේ සමමුහුර්ත කිරීමේ යාන්ත්රණය, ප්‍රොසෙසරය සහ පර්යන්ත උපාංගය අතර, එනම්, ප්‍රොසෙසරය පර්යන්ත උපාංගයේ දත්ත, ඡන්ද සලකුණු සහ වෙනත් ක්‍රියා ලබා ගැනීම ආරම්භ කරන්නේ උපාංගය මේ සඳහා සූදානම් වූ විට පමණි (එය දත්ත සැකසීම සම්පූර්ණ කිරීම වාර්තා කරනු ඇත, දෝෂයක් දත්ත සැකසීම, ලේඛනය හිස් ය, ආදිය), "බාධා ඉල්ලීමක්" ජනනය කිරීමෙන් ( බාධා කිරීමේ ඉල්ලීම), යම් ධජයක අගය මත පදනම්ව (උපාංගය/ක්‍රියාකාරීත්වය/සිදුවීම් තත්ත්වය).

සාහිත්‍යයේ, බොහෝ විට, “බාධා ඉල්ලීම” (IRQ) සිට “බාධා සේවා ක්‍රියා පටිපාටිය” (ISR) දක්වා වූ සමස්ත සිදුවීම් දාමයම කෙටියෙන් හැඳින්වෙන්නේ බාධාවක් ( බාධා කරන්න).

බාධාවක් යනු කුමක්ද?


බාධාව යනු සිදුවීමක් සිදුවීම පිළිබඳව ප්‍රොසෙසරයට දැනුම් දෙන සංඥාවකි. මෙම අවස්ථාවෙහිදී, වත්මන් විධාන අනුක්‍රමය ක්‍රියාත්මක කිරීම අත්හිටුවා ඇති අතර පාලනය මෙම සිදුවීමට අනුරූප වන බාධා හැසිරවීමේ ක්‍රියා පටිපාටියට මාරු කරනු ලැබේ, ඉන්පසු කේත ක්‍රියාත්මක කිරීම බාධා වූ ස්ථානයේ සිට හරියටම දිගටම පවතී (පාලනය ආපසු හැරීම). (විකි)

චර්යාවට බාධා කරන්න(Interrupt Service Routine) යනු කිසියම් සිදුවීමක් සිදු වූ විට ක්‍රියාත්මක කළ යුතු ශ්‍රිතයක්/සබ්‍රවුටීන් එකක් මිස අන් කිසිවක් නොවේ. අනෙකුත් සියලුම කාර්යයන්ගෙන් එහි වෙනස අවධාරණය කිරීම සඳහා අපි "ක්රියා පටිපාටිය" යන වචනය භාවිතා කරමු.

ක්‍රියා පටිපාටිය සහ සරල ක්‍රියාකාරකම් අතර ඇති ප්‍රධාන වෙනස නම් සාමාන්‍ය “ශ්‍රිතයෙන් ආපසු යාම” (එකලස් විධානය RET) වෙනුවට, ඔබ “බාධාවෙන් ආපසු යන්න” (එකලස් කිරීමේ විධානය RETI) - " බාධාවෙන් ආපසු යන්න".

AVR බාධා කිරීමේ ගුණාංග:

  • AVR ක්ෂුද්‍ර පාලකවල කොටසක් වන සෑම පර්යන්ත උපාංගයකටම අවම වශයෙන් එක් බාධා ප්‍රභවයක් ඇත. මෙම සියලු බාධා කිරීම් අතර, නැවත පිහිටුවීමේ බාධාව ද ඇතුළත් කළ යුතුය, එහි අරමුණ අනෙක් සියල්ලට වඩා වෙනස් වේ.
  • සෑම බාධාවකටම බාධා සේවා චර්යාව වෙත යොමු කරන දැඩි ලෙස පවරා ඇති දෛශිකයක් (සබැඳියක්) ඇත. සියලුම බාධා දෛශික වැඩසටහන් මතකයේ ආරම්භයේම පිහිටා ඇති අතර එකට "බාධා දෛශික වගුව" සාදයි.
  • සෑම බාධාවක්ම නිශ්චිත “බාධා සක්‍රීය බිට්” සමඟ සම්බන්ධ වේ.එබැවින්, නිශ්චිත බාධාවක් භාවිතා කිරීම සඳහා, ඔබ එහි “බාධා සක්‍රීය බිට්” වෙත ලිවිය යුතුය - ලොගය. ඒකකය. තවද, ඔබ යම් යම් බාධා කිරීම් සක්‍රීය කර තිබේද නැද්ද යන්න නොසලකා, SREG තත්ත්‍ව ලේඛනයේ ඇති “Global Interrupt Enable bit” වෙත තාර්කික එකක් ලියන තෙක් ක්ෂුද්‍ර පාලකය මෙම බාධා කිරීම් සැකසීම ආරම්භ නොකරනු ඇත.එසේම, සියලුම බාධා කිරීම් අක්‍රිය කිරීමට indefinite time), general interrupt enable bit එකට තාර්කික බිංදුවක් ලිවිය යුතුය.

යළි පිහිටුවීමේ බාධාව, අනෙක් සියල්ල මෙන් නොව, අබල කළ නොහැක. එවැනි බාධා කිරීම් Non-Maskable interrupts ලෙසද හැඳින්වේ.

  • සෑම බාධාවකටම දැඩි ලෙස අර්ථ දක්වා ඇති ප්‍රමුඛතාවයක් ඇත. බාධාවක ප්‍රමුඛතාවය "බාධා දෛශික වගුවේ" එහි පිහිටීම මත රඳා පවතී.වගුවෙහි දෛශික සංඛ්‍යාව අඩු වන තරමට බාධාවේ ප්‍රමුඛතාවය වැඩි වේ.එනම් ඉහළම ප්‍රමුඛතාවය වන්නේ ප්‍රථමයෙන් පිහිටා ඇති යළි පිහිටුවීමේ බාධාවයි. වගුව සහ ඒ අනුව මතක වැඩසටහන් වල "බාධා දෛශික වගුවේ" යළි පිහිටුවීමේ බාධාව අනුගමනය කරන බාහිර බාධා කිරීම් INT0, Reset වලට වඩා අඩු ප්‍රමුඛතාවයක් ඇත, නමුත් අනෙකුත් සියලුම බාධා කිරීම් වලට වඩා වැඩි ය.

නැවත පිහිටුවීමේ දෛශිකය හැර, බාධා දෛශික වගුව, GICR ලේඛනයේ IVSEL බිට් සැකසීමෙන් ෆ්ලෑෂ් මතකයේ ඇරඹුම් කොටසේ ආරම්භයට ගෙන යා හැක. ෆියුස් බිට් - BOOTRST ක්‍රමලේඛනය කිරීමෙන් නැවත පිහිටුවීමේ දෛශිකය ෆ්ලෑෂ් මතකයේ ඇරඹුම් කොටසේ ආරම්භයට ගෙන යා හැක.



Fig.1 ATmega16 බාධා දෛශික වගුව

සාමාන්‍ය මූලාකෘතියට බාධා කරන්න


බාධාකාරී හැසිරවීමේ පුරුද්දක් ලෙස ශ්‍රිතයක් ප්‍රකාශ කිරීමට, ඔබ යම් මූලාකෘති නීති අනුගමනය කළ යුතු අතර එමඟින් සම්පාදකයාට/සබැඳියට ඔබට අවශ්‍ය බාධාව එහි හැසිරවීමේ චර්යාව සමඟ නිවැරදිව හඳුනා ගැනීමට සහ සම්බන්ධ කිරීමට හැකි වේ.

පළමුව, බාධා කිරීමේ සේවා පුරුද්දට කිසිවක් තර්කයක් ලෙස පිළිගත නොහැක (ශුන්‍ය), සහ කිසිවක් ආපසු ලබා දිය නොහැක (ශුන්‍ය). මෙයට හේතුව AVR හි ඇති සියලුම බාධාවන් අසමමුහුර්ත වීමයි, එබැවින් වැඩසටහන ක්‍රියාත්මක කිරීම බාධා කරන්නේ කොතැනින්ද, කාගෙන් ලබා ගත යුතුද සහ කාටද වටිනාකම ආපසු ලබා දිය යුතුද යන්න සහ ඇතුළු වීමේ කාලය අවම කිරීම සහ බාධාවෙන් පිටවීම.

හිස් isr (ශුන්‍ය)

දෙවනුව, ශ්‍රිත මූලාකෘතියට පෙර, එය බාධාකාරී හැසිරවීමේ ක්‍රියා පටිපාටියක් බව ඔබ සඳහන් කළ යුතුය. ඔබ දන්නා පරිදි, C භාෂාවේ ප්රධාන කාර්යයේ භාවිතා කරන කේතය පමණක් ක්රියාත්මක වේ. ප්‍රධාන ශ්‍රිතයේ ඇති බාධා හැසිරවීමේ ක්‍රියා පටිපාටිය කොතැනකවත් භාවිතා නොකරන බැවින්, සම්පාදකය එය අනවශ්‍ය ලෙස “ඉවතට” නොයනු ඇත, ක්‍රියා පටිපාටියේ මූලාකෘතියට පෙර මෙම ශ්‍රිතය බාධා කිරීම් හැසිරවීමේ ක්‍රියා පටිපාටියක් බව දැක්විය යුතුය.

AVR Studio පරිසරය තුළ බාධා කිරීම් හැසිරවීමේ ක්‍රියා පටිපාටියේ මූලාකෘතිය

#ඇතුළත්

අයිඑස්ආර් (XXX_vect)
{

}

AVR Studio (AVR GCC) හි, සෑම බාධාකාරී දිනචරියාවක්ම ISR මැක්‍රෝ නිර්වචනයකින් ආරම්භ වන අතර, පසුව වරහන් තුළ පහත ගොඩනැගීම සිදු කෙරේ:

XXX_vect

එහිදී "XXX" යනු බාධා දෛශිකයේ නමයි. නිශ්චිත AVR ක්ෂුද්‍ර පාලකයක් සඳහා වන සියලුම දෛශික නම් ක්ෂුද්‍ර පාලකයේ දත්ත පත්‍රිකාවේ "බාධා දෛශික වගුව" තුළ හෝ එහි ශීර්ෂ ගොනුවේ සොයාගත හැක. උදාහරණයක් ලෙස, ATmega16 ක්ෂුද්‍ර පාලකය සඳහා වන “බාධා දෛශික වගුව” රූපය 1 හි පෙන්වා ඇත, එහිදී මූලාශ්‍ර තීරුවේ බාධා දෛශිකයන්ගේ සියලුම නම් ලැයිස්තුගත කර ඇත. මෙම ක්ෂුද්‍ර පාලකයේ ශීර්ෂ ගොනුවෙන් ද නම් සොයාගත හැකිය (C :\Program Files\Atmel\AVR Tools\AVR Toolchain\avr\include\avr\iom16.h), Fig. 2 බලන්න. අපට අවශ්‍ය වන්නේ වගුවේ අපට අවශ්‍ය දෛශිකයේ නම සොයාගෙන උපසර්ගය එකතු කිරීමයි. එයට "_vect".


Fig.2 AVR Studio සඳහා ATmega16 ශීර්ෂ ගොනුව

උදාහරණයක් ලෙස, USART (USART, Rx Complete) හරහා බයිටයක් ලබා ගැනීම සඳහා බාධා කිරීම් හැසිරවීමේ ක්‍රියා පටිපාටියක් ලියමු:

අයිඑස්ආර් (USART_RXC_vect)
{
// හැසිරවීමේ ශරීරය බාධා කරන්න
}

මාර්ගය වන විට: AVR Studio හි කිසියම් බාධාවක් භාවිතා කිරීමට පෙර, ඔබ ව්‍යාපෘතිය තුළ io.h සහ interrupt.h යන ශීර්ෂ ගොනු ඇතුළත් කළ යුතුය:

#ඇතුළත්
#ඇතුළත්

AVR Studio (AVR GCC) හි බාධා හසුරුවන්නන් ගැන ඔබට avr-libc හි බාධා කිරීම් හසුරුවන කොටසෙහි හැඳින්වීමෙහි වැඩිදුර කියවිය හැක.

ImageCraft පරිසරයේ බාධා කිරීම් හැසිරවීමේ ක්‍රියා පටිපාටියේ මූලාකෘතිය

#pragma interrupt_handler : iv_XXX
හිස්< handler_name>(ශුන්‍ය)
{
// හැසිරවීමේ ශරීරය බාධා කරන්න
}

ImageCraft පරිසරය තුළ, මූලාකෘති බාධා කිරීම් චර්යාව මේ ආකාරයෙන් පෙනේ:

හිස්< handler_name>(ශුන්‍ය)

කොහෙද , ඔබට මෙම බාධා හසුරුවන්නාට දීමට අවශ්‍ය නම මෙයයි. බාධා කිරීම් හැසිරවීමේ ක්‍රියා පටිපාටි ප්‍රකාශ කිරීම සඳහා වන එක් අවශ්‍යතාවයක් නම්, ශ්‍රිත මූලාකෘතියට පෙර එය බාධාකාරී හසුරුවක් බව දැක්විය යුතුය. මෙය සිදු කරනු ලබන්නේ ප්‍රයෝග විධානයක් භාවිතා කරමිනි interrupt_handler :

#pragma interrupt_handler : iv_XXX

කොහෙද මෙය බාධාකාරී හසුරුවන්නක් ලෙස භාවිත කෙරෙන ශ්‍රිතයේ නම වන අතර, “iv_XXX” ඉදිකිරීම යනු “iv_” උපසර්ගය සහිත බාධා දෛශිකයේ (XXX) නමයි. AVR Studio හි මෙන්ම, සියලුම දෛශික නම් නිශ්චිත AVR ක්ෂුද්‍ර පාලකයක් සඳහා ලබා දී ඇති ක්ෂුද්‍ර පාලකයේ දත්ත පත්‍රිකාවේ "බාධා දෛශික වගුව" හෝ එහි ශීර්ෂ ගොනුව තුළ සොයාගත හැකිය (රූපය 3 බලන්න).


ImageCraft IDE සඳහා Fig.3 ATmega16 ශීර්ෂ ගොනුව

උදාහරණයක් ලෙස, ImageCraft පරිසරය තුළ USART (USART, Rx Complete) හරහා බයිටයක් ලබා ගැනීම සඳහා බාධාවක් හැසිරවීමේ ක්‍රියා පටිපාටිය මේ ආකාරයෙන් පෙනෙනු ඇත:

#pragma interrupt_handler usart_rxc_isr: iv_USART_RXC
void usart_rxc_isr(ශුන්‍ය)
{
// හැසිරවීමේ ශරීරය බාධා කරන්න
}

ImageCraft IDE හි බාධා කිරීම් හැසිරවීමේ ක්‍රියා පටිපාටි පිළිබඳ වැඩිදුර තොරතුරු සංවර්ධන පරිසරයේ Help->Programming the AVR->Interrupt Handlers මෙනුවෙන් සොයාගත හැක.

සමහර විට, බාධා හසුරුවන්නන් කිහිප දෙනෙකුට එකම දේ කිරීමට අවශ්‍ය නම්, වැඩසටහන් මතකය සුරැකීමට, ඔබට බාධා දෛශික කිහිපයක් එකම බාධා කිරීම් පුරුද්දට යොමු කළ හැකිය.

AVR චිත්‍රාගාරයේ එය පෙනෙන්නේ:

අයිඑස්ආර් (INT0_vect)
{
// මොනවා හරි කරන්න
}
ISR(INT1_vect, ISR_ALIASOF(INT0_vect) );

මුලින්ම පැමිණෙන්නේ නිශ්චිත දෛශිකයක් සඳහා වන බාධා සැකසුම් ක්‍රියා පටිපාටියයි, මෙම අවස්ථාවේදී INT0. අනෙකුත් සියලුම ක්‍රියා පටිපාටි ඉදිකිරීම් භාවිතා කරන ඕනෑම බාධාකාරී හසුරුවකට යොමු විය හැක:

අයිඑස්ආර් (YYY_vect, ISR_ALIASOF(XXX_vect) );

මෙහි YYY යනු XXX දෛශිකය සඳහා කලින් ප්‍රකාශිත බාධා හසුරුවන්නාට යොමු වන බාධා දෛශිකයේ නමයි.

ImageCraft හි එය මේ ආකාරයෙන් පෙනේ:

#pragma interrupt_handler : iv_XXX : iv_YYY
හිස්< handler_name>(ශුන්‍ය)
{
// හැසිරවීමේ ශරීරය බාධා කරන්න
}

#pragma interrupt_handler : iv_XXX
#pragma interrupt_handler : iv_YYY
හිස්< handler_name>(ශුන්‍ය)
{
// හැසිරවීමේ ශරීරය බාධා කරන්න
}

මෙහි දෛශික XXX සහ YYY එකම බාධා කිරීම් හසුරුවන්න වෙත යොමු වේ .

AVR ක්ෂුද්‍ර පාලකවල බාධාව ක්‍රියා කරන්නේ කෙසේද?

1. අපි උපකල්පනය කරමු " බාධා ඉල්ලීම” (IRQ).

මාර්ගය වන විට: බාධා කිරීම් සැකසීම සඳහා ඉල්ලීම් කිහිපයක් එකවර සිදුවුවහොත්, ඉහළම ප්‍රමුඛතාවය සහිත බාධාව පළමුව සකසනු ලැබේ, අනෙකුත් සියලුම ඉල්ලීම් ඉහළ ප්‍රමුඛතා බාධාව අවසන් වූ පසු සකසනු ලැබේ.

2. විභාගය.

මෙම බාධාව සඳහා සක්‍රීය බිට් සකසා තිබේ නම් (බාධා සක්‍රීය බිට්), සහ ප්‍රොසෙසර තත්ත්‍ව ලේඛනයේ (SREG) I-bit (සාමාන්‍ය බාධා කිරීම් සක්‍රීය බිට්) සකසා ඇත්නම්, ප්‍රොසෙසරය බාධා කිරීමේ සේවා දින චර්යාව සකස් කිරීම ආරම්භ කරයි. interrupt enable bit (SREG රෙජිස්ටර් හි I-bit) නැවත සකසනු ලැබේ, එමඟින් අනෙකුත් සියලුම බාධා කිරීම් අක්‍රීය කරයි. වෙනත් කිසිදු සිදුවීමක් වත්මන් බාධාව සැකසීමට බාධා කළ නොහැකි වන පරිදි මෙය සිදු වේ.

මාර්ගය වන විට: බාධා කිරීම් හැසිරවීමේ ක්‍රියාවලියේදී ඔබ I-bit ලොග් තත්වයට සකසන්නේ නම්. ඒකක, එවිට ඕනෑම සක්රිය බාධාවක් වත්මන් බාධාව සැකසීමට බාධා කළ හැක. එවැනි බාධා කිරීම් nested interrupts ලෙස හැඳින්වේ.

3. සකස් කිරීම.

ප්‍රොසෙසරය වත්මන් එකලස් කිරීමේ උපදෙස් ක්‍රියාත්මක කිරීම සම්පූර්ණ කරයි, පසුව ඊළඟ උපදෙස් වල ලිපිනය තොගය මත තබයි (PC->STACK). ඊළඟට, ප්‍රොසෙසරය "බාධා කිරීමේ ඉල්ලීමක්" (IRQ) ඉදිරිපත් කර ඇත්තේ කුමන බාධා ප්‍රභවයද යන්න පරීක්ෂා කරයි, ඉන් පසුව, දෛශික වගුවෙන් මෙම ප්‍රභවයේ (සබැඳිය) දෛශිකය භාවිතා කරමින් (එය එක් එක් බාධා කිරීම් ප්‍රභවයට තදින් පවරා ඇත), එය ඉදිරියට යයි. බාධා කිරීම් සැකසුම් ක්‍රියා පටිපාටිය (JMP උපදේශනය) එපමණයි, ප්‍රොසෙසරය අවම වශයෙන් ඔරලෝසු චක්‍ර 4 ක් වැය කරයි (ඉල්ලීම දිස්වන මොහොත සහ වත්මන් උපදෙස් ක්‍රියාත්මක වන කාලය අනුව) මෙය IRQ සඳහා ඉතා හොඳ ප්‍රතිචාර කාලයකි. වෙනත් නිෂ්පාදකයන්ගෙන් ක්ෂුද්ර පාලක.

මාර්ගය අනුව: ක්ෂුද්‍ර පාලකය නිද්‍රා ප්‍රකාරයේදී IRQ හටගන්නේ නම්, IRQ වෙත ප්‍රතිචාර දැක්වීමේ කාලය තවත් ඔරලෝසු චක්‍ර හතරකින් වැඩි වේ, තවද ෆියුස් බිටු SUT1 සහ SUT0 (ආරම්භක වේලාව) තුළ ගබඩා කර ඇති කාලය වැඩි වේ.

බාධා කිරීම - ප්‍රොසෙසරයෙන් ක්ෂණික ප්‍රතිචාරයක් අවශ්‍ය වන සිදුවීමකි. ප්‍රතිචාරය වන්නේ ප්‍රොසෙසරය වත්මන් වැඩසටහන සැකසීමට බාධා කරන බවයි ( බාධා කළ වැඩසටහන) සහ වෙනත් වැඩසටහනක් ක්‍රියාත්මක කිරීමට ඉදිරියට යයි ( බාධා කිරීමේ වැඩසටහන), මෙම උත්සවය සඳහා විෙශේෂෙයන් නිර්මාණය කර ඇත. මෙම වැඩසටහන අවසන් වූ පසු, ප්‍රොසෙසරය බාධා වූ වැඩසටහන ක්‍රියාත්මක කිරීමට නැවත පැමිණේ.

බාධා කිරීම් අවශ්‍ය සෑම සිදුවීමක්ම සමඟ ඇත බාධා සංඥාව, මේ ගැන පරිගණකයට දැනුම් දීම සහ ඇමතීම බාධා ඉල්ලීම.

වැඩසටහනේ තත්ත්වයඅනුරූප වේලාවේදී සියලුම ගබඩා මූලද්‍රව්‍යවල ප්‍රාන්ත සමූහයක් නියෝජනය කරයි (උදාහරණයක් ලෙස, අවසාන විධානය ක්‍රියාත්මක කිරීමෙන් පසුව). බාධාවක් සිදු වූ විට, ක්ෂුද්‍ර පාලකය මඟින් වැඩසටහන් කවුන්ටරයේ අන්තර්ගතය තොගයේ ගබඩා කර ඊට අනුරූප බාධා දෛශිකයේ ලිපිනය පටවනු ලැබේ. බාධා කිරීමේ සේවා චර්යාවේ අවසාන විධානය ප්‍රධාන වැඩසටහන වෙත ආපසු ගොස් කලින් ගබඩා කර ඇති වැඩසටහන් කවුන්ටරය ප්‍රතිසාධනය කරන විධානයක් විය යුතුය. බාධා හසුරුවන්නා ක්‍රියාත්මක වන අතර, සමහර තොරතුරු වෙනස් විය හැක. එබැවින්, බාධාකාරී හසුරුවන්නා වෙත ගමන් කරන විට, වෙනස් වන මූලද්රව්ය සුරැකීමට අවශ්ය වේ. එවැනි මූලද්රව්ය කට්ටලය වේ වැඩසටහන් රාජ්ය දෛශිකය. මෙම අවස්ථාවෙහිදී, මතක සෛල තත්ත්වය පිළිබඳ වෙනත් තොරතුරු සැලකිය යුතු නොවේ හෝ ක්රමලේඛනගතව ප්රතිෂ්ඨාපනය කළ හැකිය.

දෛශිකය ආරම්භක තත්වය වැඩසටහනේ ආරම්භක දියත් කිරීම සඳහා අවශ්ය සියලු තොරතුරු අඩංගු වේ. බොහෝ අවස්ථාවන්හීදී, ආරම්භක තත්ත්‍ව දෛශිකයේ අඩංගු වන්නේ එක් මූලද්‍රව්‍යයක් පමණි - දියත් කෙරෙන වැඩසටහනේ ආරම්භක ලිපිනය.

බාධා දෛශිකයබාධා කිරීම් වැඩසටහනේ (හැසිරුම්කරු) ආරම්භක තත්වයේ දෛශිකය වන අතර එහි ආරම්භක ලිපිනය ඇතුළුව හසුරුවන්නා වෙත යාමට අවශ්‍ය සියලුම තොරතුරු අඩංගු වේ. සෑම බාධාකාරී වර්ගයකටම තමන්ගේම බාධා කිරීම් දෛශිකයක් ඇත, එය අනුරූප හසුරුවන්නා ක්‍රියාත්මක කිරීම ආරම්භ කරයි. සාමාන්‍යයෙන්, බාධා දෛශික කෙටි ලිපින සහිත විශේෂයෙන් වෙන් කර ඇති ස්ථාවර මතක ස්ථානවල ගබඩා කර ඇත. බාධා දෛශික වගුව. සුදුසු බාධා කිරීම් වැඩසටහන වෙත පැනීමට, ප්‍රොසෙසරයට බාධා දෛශිකයක් සහ මෙම දෛශිකයේ ලිපිනය තිබිය යුතුය. මෙම ලිපිනයෙහි, රීතියක් ලෙස, බාධාකාරී හැසිරවීමේ උපසිරැසි වෙත කොන්දේසි විරහිත ජම්ප් විධානයක් ඇත.

රීතියක් ලෙස, ගබඩා කිරීම සහ ආපසු පැමිණීම පාලනය කිරීම බාධාකාරී හසුරුවන්නා වෙත පවරා ඇත. මෙම අවස්ථාවෙහිදී, හසුරුවන්නා කොටස් තුනකින් සමන්විත වේ - සූදානම් කිරීමේ (පෙරවදන) සහ අවසාන (එපිලෝග්), වැඩසටහන් මාරු කිරීම සහතික කරන අතර, ඉල්ලීම මගින් ඉල්ලා සිටින මෙහෙයුම් සිදු කරන සැබෑ බාධා කිරීම් වැඩසටහන. ප්‍රතිචාර කාලය යනු බාධා කිරීමේ ඉල්ලීමක් ලැබුණු මොහොතේ සිට බාධා කිරීමේ වැඩසටහන ක්‍රියාත්මක කිරීම ආරම්භ වන තෙක් කාල පරතරය ලෙස අර්ථ දැක්වේ.


tp- බාධා කිරීම් සඳහා පද්ධති ප්රතිචාර කාලය;
t z- බාධා කළ වැඩසටහනේ තත්වය ගබඩා කිරීම සඳහා කාලය;
t ppr- සැබෑ බාධා කිරීම් වැඩසටහනේ වේලාව;
t in- බාධා වූ වැඩසටහනේ තත්වය යථා තත්ත්වයට පත් කිරීමට කාලය

ඉල්ලීම් ප්‍රභවයන් කිහිපයක් තිබේ නම්, පැමිණෙන ඉල්ලීම් සඳහා සේවා සැපයීමේ නිශ්චිත අනුපිළිවෙලක් ස්ථාපිත කළ යුතුය. ප්රමුඛතා සබඳතාහෝ සේවා විනය. හැකි සියලුම ප්‍රොසෙසර බාධා කිරීම් වර්ග කට්ටලය වේ බාධා පද්ධතියක්ෂුද්ර පාලකය. සේවා විනය තීරණය කරනුයේ එකවර ලැබුණු ඉල්ලීම් කිහිපයකින් පළමුව ක්‍රියා කළ යුතුද යන්න සහ මෙම ඉල්ලීමඑක් හෝ තවත් බාධා කිරීම් හසුරුවන්නාට බාධා කරන්න.
බාධාවක් ක්‍රියාවට නංවන අතරතුර ඉහළ ප්‍රමුඛතා බාධා කිරීම් ඉල්ලීමක් ලැබුණහොත්, පාලනය ඉහළ ප්‍රමුඛතා බාධා කිරීම් හසුරුවන්නා වෙත මාරු කරනු ලබන අතර පහළ ප්‍රමුඛතා බාධා කිරීම් හසුරුවන්නා අත්හිටුවනු ලැබේ. මතු වෙනවා කැදැල්ලට බාධා කරන්න. එකිනෙකා අත්හිටුවිය හැකි උපරිම වැඩසටහන් සංඛ්යාව ලෙස හැඳින්වේ බාධා කිරීම් ගැඹුර.

නව ඉල්ලීමක් එකම මූලාශ්‍රයෙන් (එකම ප්‍රමුඛතාවය) පැමිණෙන විට බාධා ඉල්ලීම සේවා නොලබන්නේ නම්, එවිට පද්ධතියේ සන්තෘප්තිය බාධා කිරීම. මෙම අවස්ථාවේදී, බාධා කිරීම් ඉල්ලීම් වලින් කොටසක් අහිමි වනු ඇත, ඒ සඳහා සාමාන්ය මෙහෙයුම් microcontroller අවසර නැත.

බාධා පද්ධතියේ ලක්ෂණවේ:

  • බාධා කිරීම් ඉල්ලීම් මුළු ගණන බාධා කිරීම් ඉල්ලීම් මූලාශ්ර සංඛ්යාව;
  • බාධා නිරූපණ වර්ගය - රීතියක් ලෙස, බාධා ඉල්ලීමක් තාර්කික සංඥා මට්ටමකින් නිරූපණය කෙරේ;
  • බාධා කිරීම් ප්‍රමුඛතාවය - එක් එක් බාධා කිරීම් ඉල්ලීම් ක්‍රියාවට නංවන අනුපිළිවෙල තීරණය කරයි; ප්‍රමුඛතාවය වැඩි වන තරමට, ඒ සඳහා බාධා කිරීමේ වැඩසටහන ක්‍රියාත්මක කිරීමේ ප්‍රමාදය කෙටි වේ;
  • ප්රතිචාර කාලය - බාධා කිරීම් ඉල්ලීමේ පෙනුම සහ බාධා කිරීම් වැඩසටහන ක්රියාත්මක කිරීමේ ආරම්භය අතර කාල පරතරය;
  • බාධා කිරීම් ප්රමාදය - වැඩසටහන ගබඩා කිරීම සහ ප්රතිෂ්ඨාපනය කිරීම සඳහා මුළු කාලය විසින් තීරණය කරනු ලැබේ;
  • ගැඹුර, සාමාන්යයෙන් බාධා පද්ධතියේ ප්රමුඛතා මට්ටම් ගණන සමග සමපාත වේ;
  • පද්ධතියේ සන්තෘප්තිය බාධා කිරීම;
  • වැඩසටහන් බාධාවන්ගේ අවසර ලත් අවස්ථා (සාමාන්‍යයෙන් ඊළඟ විධානය ක්‍රියාත්මක කිරීමේ අවසානය).

ආවරණ ආවරණ බාධා කරන්නඑක් එක් ආකාරයේ බාධා කිරීම් වලට ප්‍රතිචාර දැක්වීමට හෝ එය නොසලකා හැරීමට ක්ෂුද්‍ර පාලකයට පැවසීමට භාවිතා කරයි. බාධා කිරීම් මාස්ක් යනු ද්විමය කේතයක් නියෝජනය කරන අතර එහි බිටු බාධා ඉල්ලීමේ ප්‍රභවයන් වෙත පවරා ඇත. ද්විමය කේතයේ ඇති එක් බිට් එකක් මයික්‍රොකොන්ට්‍රෝලර්ට පවසන්නේ මෙවැනි බාධා කිරීම් හැසිරවීමටයි. ශුන්‍ය බිටු, ඊට පටහැනිව, ක්ෂුද්‍ර පාලකයට නිශ්චිත ආකාරයේ බාධා කිරීම් සැකසීමට ඉදිරියට යාමට ඉඩ නොදේ.
රීතියක් ලෙස, බාධා කිරීම් ආවරණ වලට අමතරව, ගෝලීය බාධා කිරීම් සක්‍රීය බිට් එකක් ද ඇත, එහි ශුන්‍ය අගය සියලු බාධා කිරීම් හසුරුවන්නා අක්‍රීය කරයි (දෘඪාංග යළි පිහිටුවීම සහ ක්‍රියාත්මක කිරීමේ වැඩසටහනේ ආරම්භයට පැනීම හැර).
interrupt mask binary code එකට අමතරව binary code එකකුත් තියෙනවා කොඩි බාධා කරන්න, ක්ෂුද්‍ර පාලකය තුළ නිශ්චිත ඉල්ලීම සහිත මූලාශ්‍ර කිහිපයක් තිබේ නම් බාධා කිරීමේ ප්‍රභවය සැකසීමට බාධා හසුරුවන්නාට ඉඩ සලසයි.




ඉහල