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

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

الصورة الرمزية حسن هادي محمود
حسن هادي محمود
:: عضو ذهبي ::
تاريخ التسجيل: Sep 2012
الدولة: العراق /البصره
المشاركات: 2,687
نشاط [ حسن هادي محمود ]
قوة السمعة:138
قديم 14-09-2014, 02:27 AM المشاركة 113   
افتراضي



لم افهم لمادا اخترت 20 ميلي تانية

حيث جعلنا انتربت لكل 20ms وبالطبع نحن لن نصل الى انتربت لان اساسا زمن التحكم هو 10ms اي نريد فقط من تايمر 0 أحتساب زمن الحقيقي

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

طبعا انت تستطيع أستخدام تايمر0 بدون حاجه الى التفعيل انتربت
تحياتي

اعلانات

abdewidad
:: مهندس متميز ::
تاريخ التسجيل: Dec 2013
الدولة: casablanca
المشاركات: 712
نشاط [ abdewidad ]
قوة السمعة:0
قديم 14-09-2014, 05:18 PM المشاركة 114   
افتراضي


اخي العزيز
الكود الدي حاولت فهمه ولم استطع

time=0;
cont=ratio*100;
while(time<cont)
{
time=128*(tmr0-100);
}
led_check=0;
trigger=1;
delay_us(100);
trigger=0;
}
عندما اغير من زاوية القدح ratio فاني اغير cont
ثم ندخل في حلقة بها شرط عندما يكون تيمر 0 اكبر cont فانه يقوم بارسال نبضة ثم غلقها في rb3
عندما يكون تيمر 0 اصغر من cont فانه ينفد time=128*(tmr0-100)
لم افهمه جيدا ماالفائدة منها

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

الصورة الرمزية حسن هادي محمود
حسن هادي محمود
:: عضو ذهبي ::
تاريخ التسجيل: Sep 2012
الدولة: العراق /البصره
المشاركات: 2,687
نشاط [ حسن هادي محمود ]
قوة السمعة:138
قديم 14-09-2014, 05:33 PM المشاركة 115   
افتراضي


اخي العزيز
الكود الدي حاولت فهمه ولم استطع

time=0;
cont=ratio*100;
while(time<cont)
{
time=128*(tmr0-100);
}
led_check=0;
trigger=1;
delay_us(100);
trigger=0;
}
عندما اغير من زاوية القدح ratio فاني اغير cont
ثم ندخل في حلقة بها شرط عندما يكون تيمر 0 اكبر cont فانه يقوم بارسال نبضة ثم غلقها في rb3
عندما يكون تيمر 0 اصغر من cont فانه ينفد time=128*(tmr0-100)
لم افهمه جيدا ماالفائدة منها
السلام عليكم
time هو متغير لاحتساب الزمن
اما while(time<cont فهذا لوب مستمر اي مايكرو يبقى بداخل هذا لوب طالما لايزال زمن اقل cont و cont هو زمن الذي تحدث عنده قدح التراياك وعليه اذا تريد قدح تراياك عند زاويا 90 درجه اي زمن = 90/180 *10=5 اي انه مايكرو يجب ان ينتظر 5ms لكي بعدها يتم قدح التراياك وعليه لوب مهمته أبقاء مايكرو في حاله أنتظار قبل ارسال النبضه
فبعدما يصبح time اكبر من cont يخرج مايكرو من لوب ومن ثم يقوم بأرسال نبضه الى التراياك اي
كود:
 trigger=1;
  delay_us(100);   
 trigger=0;


abdewidad
:: مهندس متميز ::
تاريخ التسجيل: Dec 2013
الدولة: casablanca
المشاركات: 712
نشاط [ abdewidad ]
قوة السمعة:0
قديم 14-09-2014, 06:17 PM المشاركة 116   
افتراضي


بارك الله فيك اخي العزيز على الشرح المبسط
اخي بخص سويتش ادا ارد ان اجعله عندما ابقى ضاغط عليى اغير لاضاءة
if(sw_inc)

{
delay_ms(300);
if(ratio>5)ratio -=1;
oldstate1 = 0;
}


abdewidad
:: مهندس متميز ::
تاريخ التسجيل: Dec 2013
الدولة: casablanca
المشاركات: 712
نشاط [ abdewidad ]
قوة السمعة:0
قديم 14-09-2014, 06:25 PM المشاركة 117   
افتراضي


بارك الله فيك اخي العزيز على الشرح المبسط
اخي بخص سويتش ادا ارد ان اجعله عندما ابقى ضاغط عليى اغير لاضاءة
if(sw_inc)

{
delay_ms(300);
if(ratio>5)ratio -=1;
oldstate1 = 0;
}


abdewidad
:: مهندس متميز ::
تاريخ التسجيل: Dec 2013
الدولة: casablanca
المشاركات: 712
نشاط [ abdewidad ]
قوة السمعة:0
قديم 14-09-2014, 06:30 PM المشاركة 118   
افتراضي


هل يمكن استغلال المنافد الاخرى لجعل 2 من ديمر على نفس البيك
اي استغلال البورت الدي فيه ليد وجعل 2 سويتش
هل ممكن لان البيك يدم 2 من تيمر 0 و1


الصورة الرمزية حسن هادي محمود
حسن هادي محمود
:: عضو ذهبي ::
تاريخ التسجيل: Sep 2012
الدولة: العراق /البصره
المشاركات: 2,687
نشاط [ حسن هادي محمود ]
قوة السمعة:138
قديم 15-09-2014, 01:52 AM المشاركة 119   
افتراضي


هل يمكن استغلال المنافد الاخرى لجعل 2 من ديمر على نفس البيك
اي استغلال البورت الدي فيه ليد وجعل 2 سويتش
هل ممكن لان البيك يدم 2 من تيمر 0 و1
أعتقد يمكن ولكن يجب تغير الكود لانه كود
كود:
while(time<cont)
{
time=128*(tmr0-100);
}
يصبح غير مجدي لانه سوف يؤثر على كل بأعتبار ان نبضات متزامنه عند كل نقطه 0
وبتالي يحتاج الى استبداله بطريقه أخرى
أحاول ارتب ذلك
تحياتي


الصورة الرمزية حسن هادي محمود
حسن هادي محمود
:: عضو ذهبي ::
تاريخ التسجيل: Sep 2012
الدولة: العراق /البصره
المشاركات: 2,687
نشاط [ حسن هادي محمود ]
قوة السمعة:138
قديم 15-09-2014, 01:57 AM المشاركة 120   
افتراضي


بارك الله فيك اخي العزيز على الشرح المبسط
اخي بخص سويتش ادا ارد ان اجعله عندما ابقى ضاغط عليى اغير لاضاءة
if(sw_inc)

{
delay_ms(300);
if(ratio>5)ratio -=1;
oldstate1 = 0;
}
لم أجرب ذلك ولكن ستنجح أن شالله
بس تأكد من شرط if(sw_inc) هل ==0 او ==1

أخي كريم لغرض كتابه الكود في مشاركه ولكي يظهر اكثر وضوحا أضغط على علامه # وموجود ضمن صفحه مشاركه فتظهر لك هكذا
كود:
هنا الصق الكود

إضافة رد

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

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

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


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

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