السلام عليكم و رحمة الله و بركاته
بفضل الله خطر لى سؤال عن الميكرو و لم اعرف اجابته ,
و بفضل الله عرفتها فاردت ان اشارككم السؤال , ثم اشارككم الاجابة .
السؤال : لو ان مقاطعة حدثت مثلا مقاطعة خاصة بتايمر OVER FLOW INTERRUPT ,
و اثناء تنفيذ كود هذه المقاطعة ISR او ما يسمى INTERRUPT HANDLER
و قبل انتهائها و الرجوع للبرنامج الاصلى حدثت مقاطعة اخرى مثلا من الضغط على مفتاح رقم 1 , ثم مقاطعة ثالثة من المفتاح رقم 2 .
(باعتبار ان المفتاحين موصلين على مقاطعات خارجية )
... فماذا سيحدث اثناء المقاطعة الحالية , هل يستجيب البرنامج للمقاطعات الجديدة و يترك الحالية ام لا ؟
... و ماذا سيحدث بعد انتهاء المقاطعة الحالية هل سيستجيب البرنامج للمقاطعتان و باى منهم سيبدأ , ام انه لن يستجيب لهما ؟
طبعا عارف ان احنا لا نحب المقاطعات ؟ لكن عدم حبنا لها لا يعنى انها جزء مهم من الميكرو و مفيد جدا فى حالات خاصة ؟
و ما توفيقى الا بالله
|
السلام عليكم
الله عليك يا استاذ مشتاق الله سؤال ولا على البال
اعتقد اذا كانت اكثر من مقاطعة يجب ان تكون هنالك اولوية بحيث اذا كانت المقاطعة رقم 2 وحدثت مقاطعة رقم 1 يجب ان تتوقف مقاطعة رقم 2 واكمال المقاطعة رقم 1 .
واذا كانت المقاطعة برقم 1 وحدثت مقاطعة رقم 2 يُكمل الاولى بعتبارها الاولوية وعند انتهائها اذا كان الايعاز بحدوث مقاطعة رقم 2 باقي يدخل فيها اي المقاطعة رقم 2 واذا غاب الايعاز فلايطبق
طبعاً هذا يتم عن طريق كاتب البرنامج والتحكم من خلال السجلات
INTCON
OPTION_REG
بخاصية التفعيل أو عدم التفعيل
والله اعلم