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

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

geniusse01
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2008
الدولة: Jordan - Amman
المشاركات: 1,139
نشاط [ geniusse01 ]
قوة السمعة:101
قديم 01-06-2009, 11:45 AM المشاركة 1   
افتراضي المقاطعات وكيفية الاستفادة منها.. Twitter FaceBook Google+



السلام عليكم جميعا

هناك الكثير من المميزات الهامة الموجودة في المتحكمات والتي تسهل عمله بشكل كبير جدا ، بالاضافة انه يمكن الاستغناء عن كثير من الدارات عند استخدام هذا المتحكم في دارة معينة ، بالاضفة انه متعدد الوظائف وهذه اهم ميزة فيه. لان عمل المتحكم يعتمد على البرنامج المخزن فيه..وبتغيير هذا البرنامج تتغير الوظيفة التي يقوم بها المتحكم..فمثلا يمكن استخدامه كموقت ..او كمقارن.. او فلاشر وغيرها الكثير الكثير من الامور التي نحتاجها في الدارات الالكترونية..ومن الميزات الهامة للمتحكم ما يدعى بالمقاطعة..

عندما اتذكر المقاطعة (وقد يدعوها البعض الانتربت Interrupt) يخطر على بالي شخص عزيز قد بدا بالمتحكمات من زمن طويل واذكر مثاله على المقاطعة وهي كالتالي:

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

اسباب المقاطعة (الانتربت) قد تكون :

1)خارجية : وهي التي تحدث لسبب خارجي مثل تغير الجهد على احد الاطراف مثل الطرف RB0.

2) داخلية : تحدث بسبب تغييرات السجلات الداخلية للمتحكم مثل ما يسمى بطفحان التايمر زيرو (TMR0 overflow)..

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

ما اريد ان اقوله انه المقاطعة بشكل عام تعتمد على مسجلين داخليين للمتحكم هما مسجل المقاطعة ( INTCON)ومسجل الخيارات ( OPTION_REG)
وساشرح الافكار اعتمادا عليها ولمن يجد صعوبة في اي معلومة فيمكنه الاستفسار عنها وان شاء الله سيجد الجواب الشافي من جميع الاعضاء في القرية...

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

واريد التذكير بانني اتعلم منكم ومعكم..وان كان هناك اخطاء فلانني بشر واتعلم معكم..ارجو من الله التوفيق لكم جميعا..

واخر دعوانا ان الحمدلله رب العالمين..وصلى الله على سيدنا محمد وعلى اله وصحبه وسلم..


التعديل الأخير تم بواسطة : geniusse01 بتاريخ 13-01-2010 الساعة 07:02 PM
احصائية الشكر والاعجاب - 2 شكراً, 0 عدم اعجاب, 3 اعجاب
شكراً Omar Mekkawy, mounir.rouabah ( شكر العضو على هذه المشاركة )
اعجاب sohaib A.Z, Omar Mekkawy, mounir.rouabah ( أعجبته المشاركة )
اعلانات

الصورة الرمزية عطية حسن محمود
عطية حسن محمود
:: عضو ذهبي و مشرف سابق لورشة صيانة التلفزيون ::
تاريخ التسجيل: Aug 2005
المشاركات: 1,073
نشاط [ عطية حسن محمود ]
قوة السمعة:119
قديم 01-06-2009, 01:48 PM المشاركة 2   
افتراضي


توكل على الله
وانا معاك واتمنى شرح مكتبات المايكروسى بالمرة
اما امور اللغة البرمجية فلا اعتقد انها صعبة
مثلا ما المقصود ب
ADCON1=0X07
وما المقصود ب
PORTB=0X80

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

الصورة الرمزية ahmad72
ahmad72
:: عضو ذهبي ::
تاريخ التسجيل: Aug 2004
المشاركات: 729
نشاط [ ahmad72 ]
قوة السمعة:104
قديم 01-06-2009, 02:14 PM المشاركة 3   
Thumbs up


السلام عليكم ورحمه الله وبركاته
توكل على الله ونحن متابعين معك
وفقك الله
جزاك الله كل خير
السلام عليكم ورحمه الله وبركاته


الصورة الرمزية حيدر علاج حسن
حيدر علاج حسن
:: مشرف منتدى الهندسة الكهربائية ::
تاريخ التسجيل: Mar 2005
الدولة: IRAQ
المشاركات: 10,061
نشاط [ حيدر علاج حسن ]
قوة السمعة:390
قديم 01-06-2009, 06:32 PM المشاركة 4   
افتراضي


شكرا للجهود الرائعة منك و بارك الله فيك
استمر ونحن معك

حيدر علاج حسن

حمودي1010
:: مهندس جيد ::
تاريخ التسجيل: Apr 2007
المشاركات: 237
نشاط [ حمودي1010 ]
قوة السمعة:0
قديم 01-06-2009, 07:32 PM المشاركة 5   
ha


توكل على الله
نحن معك وننتضر الدروس بشق الانفس


شكرا



geniusse01
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2008
الدولة: Jordan - Amman
المشاركات: 1,139
نشاط [ geniusse01 ]
قوة السمعة:101
قديم 02-06-2009, 02:14 PM المشاركة 6   
افتراضي المقاطعات وكيفية تفعيلها


السلام عليكم

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

ان التعامل مع المقاطعات االثلاث تعتمد بشكل اساسي على سجل يدعى سجل المقاطعات (INTCON) :

وهو كما في الصورة عبارة عن سجل مكون من (8Bit) كل( Bit ) له وظيفة محددة وتوضيحها كالتالي:



البيت رقم 7 : وهو بيت تفعيل جميع انواع المقاطعات :عندما نضع القيمة (1)في هذا البيت يقوم بتفعيل جميع انواع المقاطعات الموجودة في المتحكم وبدونه لن تعمل اي مقاطعة في المتحكم.طبعا يتم الغاء جميع المقاطعات بوضع القيمة( 0) في هذا البيت.

البيت رقم6: وهو بيت تفعل مقاطعة الملحقات (مثل تفعيل مقاطعة المحول من ثماثلي الى ديجيتال ADC ) فعندما نريد استخدام مقاطعات للاجزاء الملحقة نقوم بوضع القيمة(1) في هذا البيت ، اما لالغائها فنقوم بوضع القيمة(0) في هذا البيت.بما ان المعظم لا يستخدم الملحقات لذلك فنحن نضع القيمة(0) غالبا في هذا البيت.

البيت رقم5: وهو بيت تفعيل مقاطعة طفحان التايمر زيرو، ولكن ماذا يعني هذا (طفحان التايمر زيرو)؟؟ان التايمر زيرو هو سجل مكون من 8 بيت ايضا، ويستطيع هذا السجل ان يعد من القيمة(00000000) وحتى القيمة (11111111) اي من صفر وحتى 255 فعتدما يصل الى القيمة الاخيرة وهي 255 فان التايمر يعود الى القيمة (0) بعدها (وهذا يدعي بالطفحان عندما تعود قيمة المسجل من 255 الى صفر بسبب وصوله للقيمة العليا للسجل )، فعندما نقوم بتفعيل هذه المقاطعة بوضع القيمة (1) في هذا البيت فان المقاطعة ستحدث عندما تتغير قمية العدد في التايمر زيرو من 255 الى صفر، وطبعا فان الغائها يتم بوضع القمية (0) في هذا البيت.وهذه من اهم المقاطعات وسنذكر السبب لاحقا.

البيت رقم4: وهو بيت تفعيل المقاطعة على الطرف صفر في البورت B اي انه عنما يتغير الجهد على الطرف (RB0) من القيمة صفر الى 5 فولت او العكس تحدث عملية مقاطعة في المتحكم وعندها يمكننا ان نطلب من المتحكم ان ينفذ مجموعة تعليمات عند حدوث هذه المقاطعة،يتم تفعيل هذه المقاطعة بوضع القيمة (1) في هذا البيت والغائها يتم بوضع القيمة (0) في هذا البيت.

البيت رقم3: وهو بيت تفعيل المقاطعة عندما يتغير الجهد على واحد من الاطراف رقم 4 او 5 او 6 او 7 للبورت B اي عندما يتغير الجهد على واحد من الاطراف (RB4\RB5\RB6\RB7) على الاقل من القمية صفى الى 5 فولت او العكس، وتحدث هذه المقاطعة عندما يتغير واحد على الاقل من الاطراف السابقة ، يتم تفعيل هذه المقاطعة بوضع القيمة (1) في هذا البيت والغائها يتم بوضع القيمة (0) في هذا البيت.

البيت رقم 2: وهو علم حدوث طفحان في التايمر زيرو، ايضا نسال انفسنا ماذا يعني علم حدوث مقاطعة,الان كما نعرف في الرياضات بشكل عام مثل كرة القدم فانه عند خروج الكرة من الملعب فان الحكم برفع العلم ليدل على ان الكرة خرجت خارج الملعب.. وهذه وظيفة العلم هنا. فعندما يحدث طفحان وتغير في القيمة من 255 الى القمية صفر فان هذا البيت يتحول تلقائيا من القيمة صفر الى القيمة واحد دلالة على حدوث طفحان للتايمر..طبعا تتم تصفير هذا البيت في بداية البرنامج وذلك ليستطيع ان يتغير الى القيمة واحد عند حدوث الطفحان في التايمر.

البيت رقم1: وهو علم حدوث تغير في الطرف RB0 اي انه حدث هناك تغير للجهد على الطرف RB0 من القيمة صفر الى واحد او العكس .فعند حدوث تغيير للجهد على هذا الطرف تتحول قيمة هذا البيت من صفر الى واحد ، طبعا تتم تصفير هذا البيت في بداية البرنامج وذلك ليستطيع ان يتغير الى القيمة واحد عند حدوث تغيير للجهد على هذا الطرف.

البيت رقم0: وهو علم حدوث تغير في احد الاطراف (RB4\RB5\RB6\RB7) اي تغير احد هذه الاطراف على الاقل من القيمة صفر الى 5 فولت او العكس . فعند حدوث التغير لاحد الاطراف يتغير هذا البيت من القمية صفر الى واحد ، طبعا تتم تصفير هذا البيت في بداية البرنامج وذلك ليستطيع ان يتغير الى القيمة واحد عند حدوث تغيير للجهد على احد الاطراف السابقة ..

هذا هو السجل الرئيسي للتحكم بتفعيل المقاطعات بشكل عام بالاضافة الى تفعيل المقاطعات الثلاث التي سنتعلمها ان شاء الله.. هناك مجموعة ملاحظات بشكل عام نهتم فيها عند التعامل مع سجل المقاطعات:
1) عندما نريد تفعيل اي مقاطعة يجب اولا ان نقوم بتفعيل بيت رقم 7 لتفعيل جميع المقاطعات اولا بالاضافة الى المقاطعة المطلوبة.
2) بما اننا لن نتعامل مع اي مقاطعة للاجهزة الملحقة لذلك سنقوم بتصفير البيت رقم 6 دائما.
3) عندما نريد تفعيل مقاطعة معينة من المقاطعات السابقة نقوم بوضع القيمة (1) في البيت المحدد لنوع المقاطعة المطلوبة (مثلا لتفعيل مقاطعة التايمر زيرو مثلا نضع (1) في البيت رقم 5 لمسجل المقاطعة) ويمكن طبعا تفعيل اكثر من مقاطعة معا.
4) عند تفعيل المقاطعات يجب تصفير البيت رقم صفر والبيت رقم واحد والبيت رقم اثنين حتى يستطيع البيك ان يعرف بحدوث مقاطعة عندما تتغير هذه البيتات من صفر الى واحد.
5) يتم وضع القيمة المكافئة لمسجل المقاطعة في بداية البرنامج الرئيسي كالتالي:

INTCON=0Bxxxxxxxx;

حيث ان الرمز x يدل على قيمة كل بيت حسب المطلوب من برنامج المقاطعة.

الان قم بقراءة الدرس السابق بتمعن وحاول ان تجيب على الاسئلة التالية:

1)لنفرض اننا قمنا بوضع القيمة 1 في البيت رقم 4 فقط فماذا سيحدث عندما اضغط على مفتاح متصل على RB0؟؟
2)نريد تفعيل مقاطعة التايمر زيرو ومقاطعة الطرف RB0 فما القمية التي ساضعها في سجل المقاطعة؟؟
3)قام شخص بمحاولة تفعيل مقاطعة الطرف RB0 بالاضافة للاطراف (RB4-RB7) بوضع القيم التالية في سجل المقاطعة :

أ ) 00011000
ب)10000011
ج)10000000
د)10011011
هـ)11100000
و)01100111

ولم يحدث معه مقاطعة عند الضغط على المفاتيح المتصلة مع الاطراف السابقة! فهل يمكنك ان توضح لماذا لم تعمل المقاطعة بشكل صحيح في الحالات السابقة؟؟

4) اريد تفعيل مقاطعة التايمر زيرو فما القيمة التي ساضعها في سجل المقاطعة ؟؟
5)اريد تفعيل جميع المقاطعات السابقة،فما القيمة التي ساضعها في سجل المقاطعة ؟؟وكيف يمكن معرفة اي مقاطعة حدثت من المقاطعات الثلاثة؟؟؟


التعديل الأخير تم بواسطة : geniusse01 بتاريخ 03-06-2009 الساعة 04:48 PM

الصورة الرمزية ahmad72
ahmad72
:: عضو ذهبي ::
تاريخ التسجيل: Aug 2004
المشاركات: 729
نشاط [ ahmad72 ]
قوة السمعة:104
قديم 02-06-2009, 03:23 PM المشاركة 7   
sun


السلام عليكم ورحمه الله وبركاته
بارك الله فيك استاذ فادى على الشرح الجميل
وجزاك الله خيرا على مجهودك
السلام عليكم ورحمه الله وبركاته


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


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

ماشاء الله لاقوة إلا بالله......

مجهود كبير فعلا لإخراج الموضوع بهذا الجمال ......

واصل أخى فادى ونحن معاك إن شاء الله

جعل الله ذلك العمل فى ميزان حسناتك وأسعدك فى الدنيا والآخرة.......


إضافة رد

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

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

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


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

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