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

   

الصورة الرمزية حيدر علاج حسن
حيدر علاج حسن
:: مشرف منتدى الهندسة الكهربائية ::
تاريخ التسجيل: Mar 2005
الدولة: IRAQ
المشاركات: 9,848
نشاط [ حيدر علاج حسن ]
قوة السمعة:
قديم 17-03-2016, 01:06 AM المشاركة 9   
افتراضي



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


تقبل مروري
اذا لم يضع زمن تاخير داخل دالة المقاطعة فلن يؤثر على سير العمليات في الكود الرئيسي .

اعلانات

ahmed idris
:: مهندس متميز ::
تاريخ التسجيل: Jul 2015
المشاركات: 450
نشاط [ ahmed idris ]
قوة السمعة:
قديم 17-03-2016, 01:55 AM المشاركة 10   
افتراضي


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


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

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

ahmed idris
:: مهندس متميز ::
تاريخ التسجيل: Jul 2015
المشاركات: 450
نشاط [ ahmed idris ]
قوة السمعة:
قديم 17-03-2016, 02:00 AM المشاركة 11   
افتراضي


ممكن اخواني مثال حول المقاطعة
تفضل أخي هذه ملفات كود + محاكاة لمثال بسيط عن استخدام مقاطعة الطرف RB0:
https://electrosome.com/wp-content/u...controller.zip
من هذا الموقع:
https://electrosome.com/interrupt-pic-microcontroller/
وهنا أدخلت تعديلات بسيطة عسى أن توضح لك الفكرة على الشكل الذي طلبت:
http://up.top4top.net/downloadf-755jo71-rar.html


الصورة الرمزية gheas
gheas
:: مهندس متواجد ::
تاريخ التسجيل: May 2005
الدولة: https://t.me/pump_upp
المشاركات: 125
نشاط [ gheas ]
قوة السمعة:
قديم 17-03-2016, 03:13 AM المشاركة 12   
افتراضي


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

تقبل مروري


الصورة الرمزية gheas
gheas
:: مهندس متواجد ::
تاريخ التسجيل: May 2005
الدولة: https://t.me/pump_upp
المشاركات: 125
نشاط [ gheas ]
قوة السمعة:
قديم 17-03-2016, 03:30 AM المشاركة 13   
افتراضي


اذا لم يضع زمن تاخير داخل دالة المقاطعة فلن يؤثر على سير العمليات في الكود الرئيسي .
السلام عليكم ورحمة الله
اخي الكريم لايستخدم التاخير الزمني داخل مقاطعة التايمرات نهائيا
ويكفي وضع التعليمة مثلا

كود:
PORTB=0XFF;
وعند كل طفحان للتايمر زيرور سيجعل PORTB =0XFF
واذا اردت فترات تاخير زمنية لقلب حالة البورت مثلا
ضع متحول وقم بزيادته كل مرة للطفحان واحسب الزمن اللازم للطفحان
حسب المقسم الترددي والهزاز الكريستالي ودقة التايمر المستخدم
لتحصل على الزمن المطلوب تاخيره
تقبل مروري


ahmed idris
:: مهندس متميز ::
تاريخ التسجيل: Jul 2015
المشاركات: 450
نشاط [ ahmed idris ]
قوة السمعة:
قديم 17-03-2016, 03:51 PM المشاركة 14   
افتراضي


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

تقبل مروري
السلام عليكم
أخي الكريم لم انسى ذلك ..
لكن مقاطعة الطرف RB0 لا تنفذ إلا مرة واحدة مع كل ضغطة على السويتش .
المتحكم ينفذ أمر المقاطعة وهو هنا قلب حالة الخرج RC0 ثم يعود الى تنفيذ البرنامج الرئيس من أول تعليمة بعد التعليمة التي توقف عندها لحظة الضغط على السويتش.
المقاطعة تحدث نتيجة تغير الحالة على الطرف RB0
هذا التغير على الطرف إما أن يبرمج ليتحقق بحافة صاعدة أو بحافة هابطة .
هنا اختار صاحب البرنامج أن يتم بحافة صاعدة وذلك بكتابة التعليمة التالية التي تهيء البت المخصص لذلك في المسجل OPTION_REG:
OPTION_REG.INTEDG = 1; // Set Rising Edge Trigger for INT
وبناء عليه فإن زمن تنفيذ مابداخل دالة المقاطعة والعودة الى متابعة تنفيذ البرنامج الرئيس (وهو قلب حالة خرج RC0) زمن ضئيل جداو لا علاقة له بزمن الضغط على السويتش..
بقي الكلام على زمن التأخير المدرج في دالة المقاطعة: لا علاقة له بتعليمات تنفيذ المقاطعة لكنه مرتبط بطبيعة مصدر الدخل على الطرف RB0 فهو سويتش ضغطة واحدة عليه ممكن تنتج عنها عدة نبضات متتالية (مشكل الارتدادات المعروف)



وهذا هو رابط ملفات المثال والمحاكاة على بروتوس مرة أخرى:
http://up.top4top.net/downloadf-755jo71-rar.html
للرجوع الى الكود للمعاينة والتصحيح ان اقتضى الحال


التعديل الأخير تم بواسطة : ahmed idris بتاريخ 17-03-2016 الساعة 04:40 PM

سعد55
:: مهندس متواجد ::
تاريخ التسجيل: Nov 2011
الدولة: العراق
المشاركات: 141
نشاط [ سعد55 ]
قوة السمعة:
قديم 17-03-2016, 10:55 PM المشاركة 15   
افتراضي


شكرا لكم جميعا



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