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

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

أبو عبيدة2020
:: مهندس ::
تاريخ التسجيل: May 2007
المشاركات: 6
نشاط [ أبو عبيدة2020 ]
قوة السمعة:0
قديم 18-08-2009, 01:06 PM المشاركة 1   
افتراضي سؤال مهم أخواني Twitter FaceBook Google+



هل ممكن ان نعمل أكثر من interrupt عل ال pic في نفس الوقت .؟

اعلانات

الصورة الرمزية SAMI-ALG
SAMI-ALG
:: مهندس جيد ::
تاريخ التسجيل: Jul 2009
الدولة: الجزائر
المشاركات: 199
نشاط [ SAMI-ALG ]
قوة السمعة:0
قديم 18-08-2009, 03:44 PM المشاركة 2   
افتراضي


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

لا يمكن ذالك اخي الكريم

اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )
  

الصورة الرمزية ahmad72
ahmad72
:: عضو ذهبي ::
تاريخ التسجيل: Aug 2004
المشاركات: 729
نشاط [ ahmad72 ]
قوة السمعة:109
قديم 18-08-2009, 03:58 PM المشاركة 3   
sun


السلام عليكم ورحمه الله وبركاته
فعلا كما قال اخى الكريم لا يمكن ان تحدث مقاطعتين فى نفس الوقت
او مقاطعه من داخل مقاطعه
والله اعلم
بالتوفيق
السلام عليكم


robota
:: عضو ذهبي ::
تاريخ التسجيل: Jul 2009
الدولة: الخرطوم_السودان
المشاركات: 926
نشاط [ robota ]
قوة السمعة:103
قديم 18-08-2009, 04:23 PM المشاركة 4   
افتراضي


السلام عليكم..
نعم اخى يمكن ذلك فى نفس البرنامج و لكن اذا حدث interrupt معين فسيكون المعالج منشغل بتنفيذ الاوامر الخاصة بحيز الinterrupt لذلك يجب مراعاة ان لا يحدث اكثر من مقاظعة فى نفس الوقت(اللحظة)
لكن عموما يمكن ان يكون هناك اكثر من مقاطعة فى نفس البرنامج.


الصورة الرمزية ahmad72
ahmad72
:: عضو ذهبي ::
تاريخ التسجيل: Aug 2004
المشاركات: 729
نشاط [ ahmad72 ]
قوة السمعة:109
قديم 18-08-2009, 05:04 PM المشاركة 5   
sun


السلام عليكم..
نعم اخى يمكن ذلك فى نفس البرنامج و لكن اذا حدث interrupt معين فسيكون المعالج منشغل بتنفيذ الاوامر الخاصة بحيز الinterrupt لذلك يجب مراعاة ان لا يحدث اكثر من مقاظعة فى نفس الوقت(اللحظة)
لكن عموما يمكن ان يكون هناك اكثر من مقاطعة فى نفس البرنامج.
السلام عليكم ورحمه الله وبركاته
يا اخى يرحمك الله هو لم يسال عن اكثر من مقاطعه فى البرنامج
وانما فى نفس الوقت
ان كنت انا فهمت السؤال خطا فليصححه الاخ السائل
السلام عليكم


أبو عبيدة2020
:: مهندس ::
تاريخ التسجيل: May 2007
المشاركات: 6
نشاط [ أبو عبيدة2020 ]
قوة السمعة:0
قديم 18-08-2009, 05:15 PM المشاركة 6   
افتراضي


بارك الله فيكم أخواني على اجاباتكم

السلام عليكم ورحمه الله وبركاته
يا اخى يرحمك الله هو لم يسال عن اكثر من مقاطعه فى البرنامج
وانما فى نفس الوقت
ان كنت انا فهمت السؤال خطا فليصححه الاخ السائل
السلام عليكم

نعم كما قال اخي احمد اسأل هل تحدث عدة مقاطعات في نفس الوقت مثلاً على RB0 و والتغير RB4,5,6,7 إذا لا ينفع؟؟

عندي سؤال اخر إذا كان ينفع أن تكون هناك أكثر من مقاطعة ولكن ليس في نفس الوقت فكيف نعمل؟؟

مقاطعة على RB4 بأن يضئ RA0 وإذا حدثت مقاطعة من التغير على RB4,5,6,7 يشغل عداد على الرجول RC


الصورة الرمزية SAMI-ALG
SAMI-ALG
:: مهندس جيد ::
تاريخ التسجيل: Jul 2009
الدولة: الجزائر
المشاركات: 199
نشاط [ SAMI-ALG ]
قوة السمعة:0
قديم 18-08-2009, 05:22 PM المشاركة 7   
افتراضي


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

تعمل ذالك عن طريق عملية test لل flag حيث ان كل مقاطعة لها ال flag الخاص بها

- يتم عمل ال test عند الدخول للبرنامج الرئيسي للمقاطعات

ودمت في رعاية الله وحفظه


أشرف الخطيب
:: مهندس متواجد ::
تاريخ التسجيل: Mar 2009
الدولة: مصــــــــــــــــــــــــــــــر
المشاركات: 195
نشاط [ أشرف الخطيب ]
قوة السمعة:0
قديم 18-08-2009, 07:15 PM المشاركة 8   
افتراضي


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

أخى أبو عبيدة ....

حتى يكون الكلام دقيقا يمكن أن نقول أنه يمكن أن يحدث مصدران أو سببان للمقاطعة فى وقت واحد

مثلا يمكن أن يحدث طفحان للتايمر زيرو TMR0 OVERFLOW وفى نفس الوقت يحدث تغير على الطرف RB0 ( المعد مسبقا كمصدر خارجى لحدوث مقاطعة )

ولكن السؤال هو : ماذا لو حدث السببان المسببان للمقاطعة فى نفس الوقت ؟؟؟

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

1- يترك المتحكم برنامجه الأساسى ويذهب إلى البرنامج الخاص بالمقاطعات وهو برنامج فرعى عادى جدا ولكن باسم خاص وهو INTERRUPT

2- بمجرد الدخول إلى هذا البرنامج الخاص يتم تعطيل أى مقاطعة تأتى لاحقا أى عمل mask للمقاطعات مؤقتا حتى يتم خدمة المصدر المسبب للمقاطعة
(كأنه يقول لن أستقبل الآن أى مقاطعة جديدة حتى أنتهى من خدمة المقاطعة الحالية )

إلى هنا ليس لنا دخل بما يحدث.... هذا كله يفعله المتحكم

3- م داخل البرنامج نقوم نحن باستطلاع الأعلام الخاصة للمقاطعات flags ( التى كنا قد عملنا تفعيل لها )

وهنا تكمن الفكرة :

إذا كنت قد فعلت المقاطعتين مثلا : مقاطعة طفحان التايمر زيرو بالإضافة إلى مقاطعة التغير على الطرف RB0
ثم حدثت المقاطعة بسبب حدوث السببان معا فى نفس الوقت فإنه داخل برنامج المقاطعة يمكنك تحديد أى من المقاطعتين لهما الأولوية عندك... كيف ذلك ؟؟

داخل البرنامج الخاص بالمقاطعة لو استطلعت علم مقاطعة طفحان التايمر زيرو أولا قبل علم التغير على الطرف RB0 ... فهذا يعتبر ايعازا منك أن مقاطعة طفحان التايمر زيرو لها أولوية عندك من المقاطعة نتيجة التغير على الطرف RB0RB0
RB0

أى أن الأولوية حددت عن طريق البرنامج ( وهذه إحدى الطرق لتحديد الأولوية للمقاطعات )....

وللعلم هناك متحكمات أكثر تطورا يمكن فيها تقسيم مصادر المقاطعات إلى نوعين : مقاطعات ذات ألوية منخفضة LOW PRIORITY INTERRUPTS ومقاطعات ذات أولوية عالية HIGH PRIORITY INTERRUPTS عن طريق بعض البتات فى مسجلات خاصة لذلك ....

4- ثم بعض خدمة المصادر التى سببت المقاطعة يتم الرجوع إلى البرنامج الرئيسى للاستكمال من حيث انتهى المتحكم

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

************************************************** **

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

المقاطعات وكيفية الاستفادة منها

أتمنى لك التوفيق.... وكل عام وأنت بخير

إضافة رد

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

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

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


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

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