قسم الميكروكنترولر والروبوت ودوائر الاتصال بالحاسب الالي قسم المتحكمات الـ microcontroller و المعالجات microprocessor و التحكم الرقمي بالكمبيوتر CNC والانظمة الآلية والروبوت Robots

أدوات الموضوع

مشتاق الله
:: مهندس متميز ::
تاريخ التسجيل: Oct 2015
المشاركات: 620
نشاط [ مشتاق الله ]
قوة السمعة:0
قديم 19-05-2017, 08:29 AM المشاركة 1   
x4 سؤال ؟ و جواب ! Twitter FaceBook Google+



السلام عليكم و رحمة الله و بركاته

بفضل الله خطر لى سؤال عن الميكرو و لم اعرف اجابته ,
و بفضل الله عرفتها فاردت ان اشارككم السؤال , ثم اشارككم الاجابة .

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


... فماذا سيحدث اثناء المقاطعة الحالية , هل يستجيب البرنامج للمقاطعات الجديدة و يترك الحالية ام لا ؟

... و ماذا سيحدث بعد انتهاء المقاطعة الحالية هل سيستجيب البرنامج للمقاطعتان و باى منهم سيبدأ , ام انه لن يستجيب لهما ؟

طبعا عارف ان احنا لا نحب المقاطعات ؟ لكن عدم حبنا لها لا يعنى انها جزء مهم من الميكرو و مفيد جدا فى حالات خاصة ؟

و ما توفيقى الا بالله




اعلانات

الصورة الرمزية assed
assed
:: عضو فضي ::
تاريخ التسجيل: Jul 2014
الدولة: العراق - بغداد
المشاركات: 1,036
نشاط [ assed ]
قوة السمعة:97
قديم 19-05-2017, 04:36 PM المشاركة 2   
افتراضي


السلام عليكم و رحمة الله و بركاته

بفضل الله خطر لى سؤال عن الميكرو و لم اعرف اجابته ,
و بفضل الله عرفتها فاردت ان اشارككم السؤال , ثم اشارككم الاجابة .

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


... فماذا سيحدث اثناء المقاطعة الحالية , هل يستجيب البرنامج للمقاطعات الجديدة و يترك الحالية ام لا ؟

... و ماذا سيحدث بعد انتهاء المقاطعة الحالية هل سيستجيب البرنامج للمقاطعتان و باى منهم سيبدأ , ام انه لن يستجيب لهما ؟

طبعا عارف ان احنا لا نحب المقاطعات ؟ لكن عدم حبنا لها لا يعنى انها جزء مهم من الميكرو و مفيد جدا فى حالات خاصة ؟

و ما توفيقى الا بالله



السلام عليكم
الله عليك يا استاذ مشتاق الله سؤال ولا على البال
اعتقد اذا كانت اكثر من مقاطعة يجب ان تكون هنالك اولوية بحيث اذا كانت المقاطعة رقم 2 وحدثت مقاطعة رقم 1 يجب ان تتوقف مقاطعة رقم 2 واكمال المقاطعة رقم 1 .
واذا كانت المقاطعة برقم 1 وحدثت مقاطعة رقم 2 يُكمل الاولى بعتبارها الاولوية وعند انتهائها اذا كان الايعاز بحدوث مقاطعة رقم 2 باقي يدخل فيها اي المقاطعة رقم 2 واذا غاب الايعاز فلايطبق

طبعاً هذا يتم عن طريق كاتب البرنامج والتحكم من خلال السجلات
INTCON
OPTION_REG
بخاصية التفعيل أو عدم التفعيل

والله اعلم

احصائية الشكر والاعجاب - 1 شكراً, 0 عدم اعجاب, 1 اعجاب
شكراً مشتاق الله ( شكر العضو على هذه المشاركة )
اعجاب مشتاق الله ( أعجبته المشاركة )
اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )
  

مشتاق الله
:: مهندس متميز ::
تاريخ التسجيل: Oct 2015
المشاركات: 620
نشاط [ مشتاق الله ]
قوة السمعة:0
قديم 19-05-2017, 08:27 PM المشاركة 3   
sun


السلام عليكم و رحمة الله و بركاته

ما شاء الله اخ
assed شكلك فاهم مش حافظ
لكن ان شاء الله غدا ساوضح الاجابة فيها بشئ من التفصيل .
لنترك الفرصة لو هناك راى اخر .

السلام عليكم
الله عليك يا استاذ مشتاق الله سؤال ولا على البال
اعتقد اذا كانت اكثر من مقاطعة يجب ان تكون هنالك اولوية بحيث اذا كانت المقاطعة رقم 2 وحدثت مقاطعة رقم 1 يجب ان تتوقف مقاطعة رقم 2 واكمال المقاطعة رقم 1 .
واذا كانت المقاطعة برقم 1 وحدثت مقاطعة رقم 2 يُكمل الاولى بعتبارها الاولوية وعند انتهائها اذا كان الايعاز بحدوث مقاطعة رقم 2 باقي يدخل فيها اي المقاطعة رقم 2 واذا غاب الايعاز فلايطبق

طبعاً هذا يتم عن طريق كاتب البرنامج والتحكم من خلال السجلات
INTCON
OPTION_REG
بخاصية التفعيل أو عدم التفعيل

والله اعلم
و ما توفيقى الا بالله




ماجد عباس محمد
:: نائب المشرف العام
::
تاريخ التسجيل: Jun 2009
الدولة: القاهرة - مصر
المشاركات: 12,214
نشاط [ ماجد عباس محمد ]
قوة السمعة:409
قديم 20-05-2017, 07:43 AM المشاركة 4   
افتراضي


هذا سؤال عام و يرجع للداتا شيت لمعرفة كيف يتصرف الميكرو المستخدم لكن عادة يحدث الآتى

أولا معظم الميكرو يضع أولويات للمقاطعة و كثير من الوحدات تتيح تغيير هذه الأولويات لتجعل هذا أولى من هذا أو العكس بمعنى لو حدث مقاطعتان فى آن يستجيب للأهم أولا
عند حدوث مقاطعة ففى أغلب الميكرو يحدث الغاء للاستجابة للمقاطعات التالية بتوقيف البت الخاصة بالمقاطعة العامة Interrupt Enable و تظل هكذا حتى تنفذ أمر الرجوع من المقاطعة (لذا هذا اختلاف جوهرى بين الرجوع من subroutine و الرجوع من المقاطعة) وهذا يكون هاما فى البرمجة بالأسيمبلى لذا ربما لا يكون واضحا لمستخدم البيك
عند العودة تتاح مرة أخرى المقاطعة كنتيجة للامر السابق

الغاء المقاطعة لا يعنى منعها فقط تلغى الأستجابة لها و لذلك ربما تحدث أكثر من مقاطعة اثناء تنفيذ الأولى و قبل الرجوع منها و كلها تسجل ولكن لا يستجاب لها
عند العودة ينفذ الميكرو أمر واحدا فقط من البرنامج الأصلى (وهذا ضرورى لتمكين استخدام المقاطعة فى التحرك فى البرنامج خطوة واحدة بخطوة واحدة لمتابعة الأخطاء و التحليل)
بعد تنفيذ هذه الخطوة يفحص المقاطعات المسجلة و المعلقه و يقوم يالإستجابة لأكثرها أهمية أو أولوية ليكرر نفس الدورة مرة أخرى

هذا يعنى أنه اثناء الإستجابة لمقاطعة ولو كانت الأقل أهمية لن يستجيب للأكثر أعمية فورا لذا فى وحدات الأتميل يمكنك ببساطة أن تتيح الأستجابة فى داخل كود المقاطعة لتتيح الإستجابة لمقاطعة أخرى لو شئت لكن فى وحدات البيك يجب أن تكون حريصا جدا لأن فى كل مقاطعة سيسجل اليا عنوان العودة كما أنك قد تضطر لحفظ محتويات بعض المسجلات التى ستستخدمها فى كود المقاطعة و نظرا لمحدودية الخانات المتاحة فى المسمى stack قد تتسبب ببساطة فى خروج الميكرو من مساره الصحيح


مشتاق الله
:: مهندس متميز ::
تاريخ التسجيل: Oct 2015
المشاركات: 620
نشاط [ مشتاق الله ]
قوة السمعة:0
قديم 20-05-2017, 08:42 PM المشاركة 5   
sun


السلام عليكم و رحمة الله و بركاته


جزاه الله خيرا اخ ماجد , كانت اجابته وافية , و لم استطع الا القليل من الاضافة + الالوان


هذا سؤال عام و يرجع للداتا شيت لمعرفة كيف يتصرف الميكرو المستخدم لكن عادة يحدث الآتى
هذه النقطة مهمة لان مرجعية اى ميكرو هى الداتا شيت الخاص به و هى التى بها تفاصيل هذه النقطة بالذات .

أولا معظم الميكرو يضع أولويات للمقاطعة و كثير من الوحدات تتيح تغيير هذه الأولويات لتجعل هذا أولى من هذا أو العكس بمعنى لو حدث مقاطعتان فى آن يستجيب للأهم أولا.

عند حدوث مقاطعة ففى أغلب الميكرو يحدث الغاء للاستجابة للمقاطعات التالية بتوقيف البت الخاصة بالمقاطعة العامة Interrupt Enable و تظل هكذا حتى تنفذ أمر الرجوع من المقاطعة (لذا هذا اختلاف جوهرى بين الرجوع من subroutine و الرجوع من المقاطعة)

(لان فى
subroutine يكون الميكرو مستعد لاى مقاطعة و يستجيب لها ان حدثت و يخرج من subroutine الى المقاطعة ثم من المقاطعة يعود subroutine ثم منه الى البرنامج الاصلى .)
وهذا يكون هاما فى البرمجة بالأسيمبلى لذا ربما لا يكون واضحا لمستخدم البيك
عند العودة تتاح مرة أخرى المقاطعة كنتيجة للامر السابق

الغاء المقاطعة لا يعنى منعها فقط تلغى الأستجابة لها و لذلك ربما تحدث أكثر من مقاطعة اثناء تنفيذ الأولى و قبل الرجوع منها و كلها تسجل ولكن لا يستجاب لها
عند العودة ينفذ الميكرو أمر واحدا فقط من البرنامج الأصلى (وهذا ضرورى لتمكين استخدام المقاطعة فى التحرك فى البرنامج خطوة واحدة بخطوة واحدة لمتابعة الأخطاء و التحليل)
بعد تنفيذ هذه الخطوة يفحص المقاطعات المسجلة و المعلقه و يقوم يالإستجابة لأكثرها أهمية أو أولوية ليكرر نفس الدورة مرة أخرى

هذا يعنى أنه اثناء الإستجابة لمقاطعة ولو كانت الأقل أهمية لن يستجيب للأكثر أعمية فورا لذا فى وحدات الأتميل يمكنك ببساطة أن تتيح الأستجابة فى داخل كود المقاطعة لتتيح الإستجابة لمقاطعة أخرى لو شئت

( نعم يمكنك فى الاتميل تفعيل امكانية الخروج من مقاطعة لاخرى و يسمى Nested Interrupt كن فى وحدات البيك يجب أن تكون حريصا جدا لأن فى كل مقاطعة سيسجل اليا عنوان العودة كما أنك قد تضطر لحفظ محتويات بعض المسجلات التى ستستخدمها فى كود المقاطعة و نظرا لمحدودية الخانات المتاحة فى المسمى stack قد تتسبب ببساطة فى خروج الميكرو من مساره الصحيح

__________________
مقالات المهندس ماجد عباس محمد

إضافة رد

العلامات المرجعية

«     الموضوع السابق       الموضوع التالي    »
أدوات الموضوع

الانتقال السريع إلى


الساعة معتمدة بتوقيت جرينتش +3 الساعة الآن: 11:39 AM
موقع القرية الالكترونية غير مسؤول عن أي اتفاق تجاري أو تعاوني بين الأعضاء
فعلى كل شخص تحمل مسئولية نفسه إتجاه مايقوم به من بيع وشراء وإتفاق وأعطاء معلومات موقعه
التعليقات المنشورة لا تعبر عن رأي موقع القرية الالكترونية ولايتحمل الموقع أي مسؤولية قانونية حيال ذلك (ويتحمل كاتبها مسؤولية النشر)

Powered by vBulletin® Version 3.8.6, Copyright ©2000 - 2025