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

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

ahmad abdullah
:: مهندس متميز ::
تاريخ التسجيل: Jun 2010
الدولة: لبنان-فلسطين
المشاركات: 586
نشاط [ ahmad abdullah ]
قوة السمعة:0
قديم 16-09-2011, 02:56 PM المشاركة 1   
افتراضي مساعدة بخصوص الانتظار في المايكروكنترولر Twitter FaceBook Google+



اخواني ...
لنقول انه لدينا مايكروكنترولر ...
اذا انا اردت ان اعمل الآتي ، ان اضيئ ليد لونه احمر لمدة 20 ثانية مثلاً ، ثم
وضعت اي حساس فلنقول حساس دخان ، فأعطانا الحساس 5 فولت على احد اطراف المايكرو مشيراً لوجود الدخان ... فعند ذلك يضيء ليد اخضر لمدة ثانيتن

سيكون الكود كالآتي :
كود:
 
portb.b0=1;
delay_ms(20000);
if (porta.b0==1)
{
portb.b1=1;
delay_ms(2000)}
حسناً المشكلة هي ،انه لن يفحص المايكرو الطرف الموصول به حساس الدخان الا بعد مرورو ال20 ثانية التي تخص الليد الاحمر ... فما الحل يا اخوان ... قد تقولون لي استخدام المقاطعات ، لكن المقاطعة فيه برنامج واحد وليس اكثر من برنامج مقاطعة !! هل كلامي صحيح ؟

اعلانات

abu-thabit
:: مهندس متميز ::
تاريخ التسجيل: Oct 2010
المشاركات: 339
نشاط [ abu-thabit ]
قوة السمعة:0
قديم 16-09-2011, 03:10 PM المشاركة 2   
افتراضي


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


واجهتني هذه المشكلة سابقا وازعجتني جدا ولكن الحل كان اسهل مما اتوقع


وهو تجنب استخدام امر الانتظار بل استتخدام عداد

اي يضيء الليد الاحمر ثم يبدأ العداد بالعد ( حسب ماتريد) ويمكن في نفس الوقت ان يفحص حالة الحساس
كما يمكن تشغيل الليد الاخضر بنفس الطريق

اتمنى ان يكون جوابي صحيحا


وفي انتظار الاساتذة


دمت في رعاية الله

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

moode3
:: مهندس ::
تاريخ التسجيل: Sep 2011
المشاركات: 48
نشاط [ moode3 ]
قوة السمعة:0
قديم 16-09-2011, 03:20 PM المشاركة 3   
افتراضي


حياك الله أخي

طيب يالغالي ليه ما تستخدم interrupt مع timer 0

أتوقع تنفع
حيكون الليد أحمر إلى أن يعطي الحساس دخان و حينور الليد الأخضر على حسبب ما تريد


انا ما اعرف للسي أعرف البيسك

تحياتي لك
أخوك
أبو راشد
أتمنى أكون أفدتك


الصورة الرمزية free_matrex2010
free_matrex2010
:: مهندس متواجد ::
تاريخ التسجيل: Oct 2009
المشاركات: 181
نشاط [ free_matrex2010 ]
قوة السمعة:0
قديم 16-09-2011, 03:24 PM المشاركة 4   
افتراضي


l
portb.f0=1
delay_ms(2000)
loop
if (porta.f0=1)
portb.f1=1
delay_ms(2000)
goto loop


moode3
:: مهندس ::
تاريخ التسجيل: Sep 2011
المشاركات: 48
نشاط [ moode3 ]
قوة السمعة:0
قديم 16-09-2011, 03:35 PM المشاركة 5   
افتراضي


أشكرك أخي free ولكن الأخ طلب أنه يكون 20 وليس ثانيتين
تحياتي لك


ahmad abdullah
:: مهندس متميز ::
تاريخ التسجيل: Jun 2010
الدولة: لبنان-فلسطين
المشاركات: 586
نشاط [ ahmad abdullah ]
قوة السمعة:0
قديم 16-09-2011, 04:06 PM المشاركة 6   
افتراضي


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

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


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


اخواني ...
لنقول انه لدينا مايكروكنترولر ...
اذا انا اردت ان اعمل الآتي ، ان اضيئ ليد لونه احمر لمدة 20 ثانية مثلاً ، ثم
وضعت اي حساس فلنقول حساس دخان ، فأعطانا الحساس 5 فولت على احد اطراف المايكرو مشيراً لوجود الدخان ... فعند ذلك يضيء ليد اخضر لمدة ثانيتن

سيكون الكود كالآتي :
كود:
 
portb.b0=1;
delay_ms(20000);
if (porta.b0==1)
{
portb.b1=1;
delay_ms(2000)}
حسناً المشكلة هي ،انه لن يفحص المايكرو الطرف الموصول به حساس الدخان الا بعد مرورو ال20 ثانية التي تخص الليد الاحمر ... فما الحل يا اخوان ... قد تقولون لي استخدام المقاطعات ،
السلام عليكم
يمكن حل المشكلة دون استخدام المقاطعات , لكن هذا يعتمد على حساسية النظام يعنى اقصى تاخير زمنى مسموح به (بالنسبة لحساس الدخان هنا)

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


moode3
:: مهندس ::
تاريخ التسجيل: Sep 2011
المشاركات: 48
نشاط [ moode3 ]
قوة السمعة:0
قديم 16-09-2011, 05:00 PM المشاركة 8   
افتراضي


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

الف شكر الكم جميعاً
يالغالي زي ما ذكر انا ما اشتغل على micro c أنا على basic لو تبي على basic ممكن أسويلك شرح

تحياتي لك
أخوك
أبو راشد

إضافة رد

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

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

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


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

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