قناة علوم عظيمة على اليوتيوب

علوم الحاسوب

الميكرو-كونترولر المشروع الثالث : مقاطعات interrupts

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

في هدا المشروع سنتعرف  مقاطعات interrupts في المتحكم، و كيفية عملها.

int_1030x438.png (387 KB)

    المقاطعات هي في الأساس إشارات داخلية / خارجية توقف التعليمات الرئيسية التي يتم تنفيذها، يمكن أن يقطع هذه التعليمات الرئيسية العديد من الأحداث المفاجئة، مثلا إذا بدأ هاتفك فجأة في الرنين أثناء عملية "القراءة"، فسيتم تعليق العمل الرئيسي "قراءة" تم تجيب على الهاتف "مقطع interrupt"، و بعد إنتهائك من المكالمة فإنك ستعود إلى العمل الرئيسي "قراءة"، تعتمد معالجة إشارة المقاطعة بشكل أساسي على مصدر المقاطعة. يمكن أن يكون رنين هاتف أو فاتورة باب أو أيا كان. كل مقاطعة من هذه يمكن أن تعلق العمل الرئيسي "القراءة" وستتطلب جزءًا صغيرًا من وقتك للتعامل مع هذا الانقطاع. ثم يمكنك استئناف العمل الرئيسي بدءًا من حيث توقفت، و ال port المخصص للمقاطعات في ال PIC16F84A هو ال port B في الرجل الأولى. يعني أنه لن تعمل المقاطعة interrupt إلى إذا تم توصيلها بال Port B.

    الأن يتعين علينا تحديد رقم ال port الذي سنعمل عليه. في PIC16F84A ، يوجد رقم مخصص واحد فقط لطلبات المقاطعة الخارجية RB0. وهناك بعض الأرجل GPIO من PORTB تشارك طلب IOC (مقاطعة عند التغيير). في هذا المشروع، سنستخدم RB0 INT.

InterruptsS-1.png (113 KB)

    يمكن لـ RB0 INT، أن يطلق إشارة مقاطعة عند استقبال : إشارة 1 أو إشارة 0 ( يعني إما 5 فولت أو 0 فولت)، اختيار الإشارة التي تريد فيها المقاطعة هو تعيين أو مسح INTCONO.INTF من سجل OPTION_REG (سيتم وضعها تساوي 1 او 0، لكن في مشروع اليوم سنضع فيها 1). سنقوم بتعيينه للحصول على إشارة مقاطعة على كل إشارة 1 ( 5 فولت ) على الرجل RB0.

;INTCON.INTF = 1

Interrupts

نوصل الرجل RB0 بالزر وهو موصل إلى 5 فولت و نوقلها كذلك بالمقاومة حيت الأخيرة موصلة مع الأرضي، عند الضغط على الزر فإن الرجل RB0 تستقبل إشارة 1 يتوقف العمل الرئيسي تم تبذأ المقاطعة في العمل. و عنذ رفع اليد عن الزر فإن المتحكم يستأنف العمل الرئيسي من حيث توقف.

في الكود سنرى :

void main : هي الدالة الرئيسية، يتم كتابة بداخلها جميع الأوامر و التعليمات، و يمكن كتابة خارجها دوال أخرى لكن سيتحتم عليك المنادات عليها داخل ال void main، سنرى في المشاريع القادمة كيف يتم ذلك.

IF : هي حلقة في لغة c نسعملها لكتابة الشروط، نكتب if ثم افتح الأقواس: داخل هذه الأقواس سيجب عليك كتابة الشرط الخاص بك.

while : هي حلقة في لغة c، يتم استخدام هذه الحلقات لتكرار التعليمات البرمجية حتى يتحقق شرط معين أو لتكرار الأوامر بدون توقف.

delay : هي من الشروط الأساسية التي يجب عليك عدم نسيانها، فهي تحدد له المدة الزمنية للأوامر، فإن لم تحدد له delay فإنه سينفد الأوامر بسرعة كبيرة يستحيل رؤية الأوامر عند تنفيدها.

porta.f0 : هنا نحدد  له رقم ال port ليتعرف عليه عند تغيير في إشارته، f0 تعني RA0، فإذا اردنا ان نحدد له PORT معين فإن نقول له porta.f3 مثلا اي ال port RA3.

Tris : تعني أننا سنحدد ما إذا كان الPORT مدخل أو مخرج،  نكتبله Tris تم نحدد رمز ال port B مثلا و تصبح Trisb ثم نكتب تساوي = و بعدها إذا اردناه كمخرج سنكتب 0x00 و كمدخل 0xff فتصبح الكتابة على شكل ;Trisb=0x00 كمخرج و ;Trisa=0xff كمدخل، في نهاية السطر لا تنسى ; فهي ضرورية في لغة السي C.

Interrupts.jpg (173 KB)

لا يجب أن يكون تركيب أربعة من مصابيح LED وزر ضغط أمرًا بالغ الأهمية، قم بتوصيل الأرجل الطاقة واختبر كل شيء. يجب أن تعمل بشكل لا تشوبه أية عيوب!

السابق
فيروز الرحابنة: من عاصي ومنصور إلى زياد روح متجددة انطلقت بها للعالمية
التالي
سعر صرف ليرة تركية أمام الدولار تحليل 09 يونيو | توقعات سعر صرف ليرة تركية أمام الدولار

0 تعليقات

أضف تعليقا

اترك تعليقاً