![]() |
#1
|
|||
|
|||
![]() بسم الله الرحمن الرحيم
المتحكمات تنفذ الاوامر والتعليمات بطريقة تسلسلية كما هو معروف ..لا مشكل إذا كان البرنامج لا يستغرق زمنا طويلا قبل العودة الى نقطة البدء .. لكن في المقابل اذا كان بالبرنامج زمن تأخير كبير، فإن انتظار انتهاء الزمن قبل ان ينفذ المتحكم أمرا ما في اية لحظة يعتبر مشكلة .. المصنع انتبه لذلك .. ووفر في المتحكم خاصية المقاطعات .. لتوضيح طريقة برمجة المقاطعات بالمرفقات تطبيق بسيط يشغل 3 مقاطعات من اصل 4 يتوفرعليها المتحكم PIC16F628/ PIC16F84: ![]() المقاطعات المبرمجة ودور كل منها: *مقاطعة التايمر 0 : دورها داخلي في البيك وهو توليد نبضة داخلية تفعل المتغير Var_tmr0 الذي يعد عددا محددا من المرات لتوليد نبضة 1 تانية دورية .. نبضة 1 تانية تلك ، تفعل متغيرا ثانيا تمت برمجته "عداد" وهو المتغير compteur (التسميات اختيارية) ناتج العد يظهر في البرنامج الرئيس على المنفذ "أ".. البرنامج الرئيس كل عمله هو ما تقدم : اظهار ناتج العد على اطراف من المنفذ أ * مقاطعة المدخل "RB0" : الضغط على المدخل يحدث مقاطعة ويجبر المتحكم على إظهار الرقم الذي يتضمنه ماكرو RB0 * مقاطعة المدخل "RB" : مقاطعة تتم من اي طرف من الاطراف الاربعة RB4..RB7 وتجبر هي ايضا المتحكم على إظهار الرقم الذي يتضمنه الماكرو الخاص بها .. |
#2
|
||||
|
||||
![]() السلام عليكم اخى العزيز المهندس/ زكى شاكر
شكرا جزيلا على هذا الموضوع الرائع المقاطعات من الأمور الهامة فى عالم البرمجة ولما يتناولها فلوكود فسوف تكون بسيطة بإذن الله وعندما يكون تناولها عن طريقك فسوف تكون ابسط بمشيئة الله تحياتى لك أخى العزيز .. وتقدير لمجهودك الكبير ولا يسعنى إلا ان أقول جزاك الله عنا كل خير
__________________
![]() |
#3
|
||||
|
||||
![]()
ما شاء الله عليك استاذى الفاضل
لا حرمنا الله من ابداعاتك تحياتى
__________________
|
#4
|
|||
|
|||
![]()
شكرا لك استاذ زكى ولكن ممكن تشرح لنا اعدادات المقاطعات علشان انا مش فاهم نختار على اى اساس كما فى الصورة يوجد اختيارات كثيرة
![]() ![]() وجزاك الله خير |
#5
|
|||
|
|||
![]()
السلام عليكم
أخي العزيز نور نادر وأخي العزيز أحمد السيد .. شكرا جزيلا على اهتمامكم بالموضوع وعلى كلامك الطيب وتشجيعاتكم المستمرة . بارك الله فيكم جميعا . |
#6
|
|||
|
|||
![]() اقتباس:
لفهم الاعدادات لابد من معرفة ما يحدث داخل البيك .. تردد تنفيذ التعليمات:من المعروف ان تردد مذبذب المتحكم يتم تقسيمه داخليا على 4 .. اذا كان المذبذب بكريستالة 4 ميغاهرتز ( 4000000هرتز) فإن التردد الذي سيعمل عليه المتحكم في تنفيذ كل تعليمة هو ربع ذلك التردد اي : 4000000/4 = 1000000 هرتز وإذا كان التردد الاصلي للكريستالة هو 19660800هرتز (كما في الصورة المرفقة) سيكون تردد العمل هو الربع اي: 4915200 هرتز --- توليد تردد مقاطعة التايمر 0" التردد الداخل يقسم على 4 والناتج يقسمه سجل داخلي بالمتحكم يسمى Prescaler هذا المسجل هو في الواقع مقسم تردد قابل للبرمجة على اي معامل من اللائحة المحددة له : يمكن ان نختار معامل التقسيم على 1 او 2 او 4 او 8....او 256 طبعا اذا قسمنا على واحد كما جاء في مثالك، فان الناتج لا يتغير .. الناتج عن تلك القسمة يقسمه التايمر0 (هو ايضا مسجل ) على 256 (التايمر مبرمج هنا كعداد يعد من 0 الى 255 اي 256 مرة ) سنحصل في النهاية على تردد معين (كلما اكمل التايمر العد اي كلما "طفح " ببساطة كلما اكمل دورة عد من 0 الة 255 وانتقل الى 0 ليبدأ العد باستمرار ..) الصورة التالية تبين ما سبق : ![]() نفس الطريقة تم استخدامها في المثال السابق (اول مشاركة بالموضوع ) ..بقيمة تردد مختلفة وبمعامل تقسيم Prescaler مناسب ------- 2/ السؤال الثاني المتعلق بالمقاطعة RB0 والخياران الموجودان هما فقط لاختيار قطبية التحكم في المدخل RB0 هل ندخل جهدا موجبا ام سالبا و كل خيار يناسبه توصيل خاص به : ![]() اتمنى ان تكون السطور القليلة السابقة قد ساهمت في فهم مقاطعة التايمر 0 |
#8
|
||||
|
||||
![]() ما شاء الله اخى/ زكى شاكر
توضيح غاية فى الروعة والجمال أسأل الله ان يكرمك ويزيدك من علمه ويجعل جميع أعمالك هذه فى ميزان حسناتك ويعطيك القدرة على الاستمرار فى العطاء لتعم الفائدة علينا جميعا تحياتى
__________________
![]() |
#9
|
|||
|
|||
![]()
مشكور استاذ زكى شاكر على هذا الشرح
وبارك الله فيك |
#10
|
|||
|
|||
![]()
جزاك الله خيرا استاذ زكي على هذا الطرح المفيد
وأسأل الله لك التوفيق والتفوق دائما |
![]() |
مواقع النشر (المفضلة) |
الكلمات الدلالية (Tags) |
interruptions, المقاطعات |
أدوات الموضوع | |
انواع عرض الموضوع | |
|
|