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

   

yac100
:: مهندس متواجد ::
تاريخ التسجيل: Mar 2007
الدولة: فلسطين - غزة
المشاركات: 140
نشاط [ yac100 ]
قوة السمعة:
قديم 25-04-2012, 11:37 AM المشاركة 17   
x9



كل الشكر لأخي حيدر وكذلك الشكر لأخي باسم ماجد
وبارك الله فيكم علي المجهود الطيب
لكن اخي الحبيب حيدر انا فاهم قصدك جيدا بالنسبة للتأخير لكن ما أقصده انا هو أن التأخير الذي استخدمه انا موجود ضمن دالة المقاطعة كالتالي
كود:
viod interrupt()
{
     RD6_Bit = 1 ;
     Delay_ms(60000);
     RD6_Bit = 0;
}


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

اعلانات

الصورة الرمزية حيدر علاج حسن
حيدر علاج حسن
:: مشرف منتدى الهندسة الكهربائية ::
تاريخ التسجيل: Mar 2005
الدولة: IRAQ
المشاركات: 9,848
نشاط [ حيدر علاج حسن ]
قوة السمعة:
قديم 25-04-2012, 03:13 PM المشاركة 18   
افتراضي


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

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

yac100
:: مهندس متواجد ::
تاريخ التسجيل: Mar 2007
الدولة: فلسطين - غزة
المشاركات: 140
نشاط [ yac100 ]
قوة السمعة:
قديم 26-04-2012, 03:40 PM المشاركة 19   
افتراضي


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


Imozar
:: مهندس متميز ::
تاريخ التسجيل: Dec 2011
المشاركات: 315
نشاط [ Imozar ]
قوة السمعة:
قديم 26-04-2012, 03:57 PM المشاركة 20   
افتراضي


فكرة لاأدري إن كانت قابلة للتطبيق :
هنا :
http://www.qariya.com/vb/showpost.ph...0&postcount=17
تستبدل المقاطعة بمقاطعة التايمر 0
التايمر 0 مع عداد يبقى يعمل في الخلف .

و بهذا توفر المقاطعة RD6 للهدف الجديد .


yac100
:: مهندس متواجد ::
تاريخ التسجيل: Mar 2007
الدولة: فلسطين - غزة
المشاركات: 140
نشاط [ yac100 ]
قوة السمعة:
قديم 26-04-2012, 04:02 PM المشاركة 21   
افتراضي


فكرة لاأدري إن كانت قابلة للتطبيق :
هنا :
http://www.qariya.com/vb/showpost.ph...0&postcount=17
تستبدل المقاطعة بمقاطعة التايمر 0
التايمر 0 مع عداد يبقى يعمل في الخلف .

و بهذا توفر المقاطعة RD6 للهدف الجديد .
لم افهم قصدك جيدا يا اخي الكريم Imozar .
لكن هل يمكن وضع التايمر0 داخل دالة المقاطعة ونفعلها كعداد يصل إلي دقيقة بدل التأخير Delay , وكيف,
وبارك الله فيك


Imozar
:: مهندس متميز ::
تاريخ التسجيل: Dec 2011
المشاركات: 315
نشاط [ Imozar ]
قوة السمعة:
قديم 26-04-2012, 05:14 PM المشاركة 22   
افتراضي


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


yac100
:: مهندس متواجد ::
تاريخ التسجيل: Mar 2007
الدولة: فلسطين - غزة
المشاركات: 140
نشاط [ yac100 ]
قوة السمعة:
قديم 28-04-2012, 01:54 PM المشاركة 23   
افتراضي


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

اخواني الاحباب
عندي مشكلة وهي عندما يتم تفعيل TMR0 وهي تفعيل البت 5 في المسجل INTCON لا يعمل البرنامج يقف عن العمل
كود:
 INTCON = 0B10110000;
ما المشكلة وكيف يتم حلها وكيف يتم تحديدها 60 ثانية
الرجاء يتم الرد بسرعة للضرورة
وبارك الله فيكم


Imozar
:: مهندس متميز ::
تاريخ التسجيل: Dec 2011
المشاركات: 315
نشاط [ Imozar ]
قوة السمعة:
قديم 28-04-2012, 09:45 PM المشاركة 24   
افتراضي


أخي
بداية كنت أقصد بالعبارة "مقاطعة RD6" المقاطعة التي تشغل البت RD6
هذه المقاطعة إما مقاطعة portb interrupt أو مقاطعة RB0
هذا فقط للتوضيح.
ثانيا
هذا الكود :
INTCON = 0B10110000;
يفعل مقاطعة التايمر 0 + مقاطعة RB0
فإذا كنت قد اخترت مقاطعة RB0 ومقاطعة التايمر 0 فهو صحيح .
لكن لو كنت تقصد مقاطعة التايمر 0 + مقاطعة portb interrupt فهو يحتاج الى تغيير.
ثالثا لفهم طريقة برمجة التايمر 0 وطريقة الحصول على 60 تانية بواسطة عد التواني التايمر 0،اعتقد ان كود ساعة رقمية بالبيك تعتمد على فكرة استخدام التايمر 0 لتدبير الزمن الحقيقي قد تفيدك.
كمثال:
http://www.qariya.com/vb/showthread.php?t=106817



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