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

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

محمد ع يسى
:: عضو فضي ::
تاريخ التسجيل: May 2015
الدولة: مصر
المشاركات: 1,044
نشاط [ محمد ع يسى ]
قوة السمعة:81
قديم 22-06-2016, 11:57 AM المشاركة 1   
افتراضي مقاطعة مستعصية معايا.. مشكلة عجيبة Twitter FaceBook Google+



السلام عليكم ورحمة الله وبركاته.
لقد كتبت هذا الكود على البك PIC16F887 وكان التردد 20ميجا:



لاحظ الأمر الذي بالمربع الأحمر.. لا فائدة منه لكن لا يعمل الكود على المحاكاه إلا به... حيث لا بد أن أكتب portb.f0 تساوي صفر أو port.f1 أو port.f2 حتى port.f7 بينما لو كتبت portb فقط يفشل الكود.. إذا جعلته بورت c أو d تفشل.
إذا مسحته تفشل المهمة على المحاكاة وعلى الواقع أيضا.. لكني جربته على الواقع مرة واحدة وليس عدة مرات مما يجعلني غير متأكد.

هذه صورة المحاكاة:



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


التعديل الأخير تم بواسطة : محمد ع يسى بتاريخ 22-06-2016 الساعة 12:13 PM
اعلانات

magdy_3
:: مهندس متميز ::
تاريخ التسجيل: Aug 2006
الدولة: Philippines
المشاركات: 343
نشاط [ magdy_3 ]
قوة السمعة:0
قديم 22-06-2016, 11:07 PM المشاركة 2   
افتراضي


السلام عليكم
اخى العزيز
جرب هذا الكود وبدون ان تضع مقاومة رفع جربه على التوصيل كما فى الصورة
كود:
void interrupt()
{
 if(portb.f7==0)
{
  portc=tmr0;
  tmr0=0;
 }
  else
 {
  portd=tmr0;
  tmr0=0;
 }
 intcon.f0=0;
 }
void main()
 {
 anselh=0;
portc=portd=0;
trisc=trisd=0;
tmr0=0;
option_reg=0b01010111;
intcon=0b10001000;
iocb=0b10000000;
 }


التعديل الأخير تم بواسطة : magdy_3 بتاريخ 23-06-2016 الساعة 12:39 AM
اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )
  

محمد ع يسى
:: عضو فضي ::
تاريخ التسجيل: May 2015
الدولة: مصر
المشاركات: 1,044
نشاط [ محمد ع يسى ]
قوة السمعة:81
قديم 23-06-2016, 01:21 AM المشاركة 3   
افتراضي


جزاك الله خيرا أخي مجدي.. سأجربه إن شاء الله بعد الصلاة... لكن أنا ليست مشكلتي كود يقضي الغرض وخلاص.. فيمكنني كتابة التعليمة السابقة اللي مالهاش لازمة اللي داخل المربع وخلاص.. لكني أريد أن أعرف لماذا يفشل الكود الذي كتبته إن كان بدون هذه التعليمة؟!!


magdy_3
:: مهندس متميز ::
تاريخ التسجيل: Aug 2006
الدولة: Philippines
المشاركات: 343
نشاط [ magdy_3 ]
قوة السمعة:0
قديم 23-06-2016, 03:19 AM المشاركة 4   
افتراضي


جزاك الله خيرا أخي مجدي.. سأجربه إن شاء الله بعد الصلاة... لكن أنا ليست مشكلتي كود يقضي الغرض وخلاص.. فيمكنني كتابة التعليمة السابقة اللي مالهاش لازمة اللي داخل المربع وخلاص.. لكني أريد أن أعرف لماذا يفشل الكود الذي كتبته إن كان بدون هذه التعليمة؟!!
السلام عليكم
اخى الكريم
لما جربت الكود بتاعك لم يعمل نهائى علشان كدة قولتلك جرب الكود ده
ولاكن بعد ان كتبت الامر الى ملهوش لازمة اشتغل معايا طبيعى
واكتشفت ان المشكلة فى انك بتصفر علم المقاطعة قبل اوامر الدالة بينا المفروض يكون تصفير العلم اخر امر فى دالة المقاطعة
مثل
كود:
void interrupt()
{

 if(intcon.f0==1)
 {
 if(portb.f7==0)
{
  portc=tmr0;
  tmr0=0;
 }
  else
 {
  portd=tmr0;
  tmr0=0;
 }
 }
 intcon.f0=0;
 }
void main()
 {ansel=0;
  anselh=0;
  c1on_bit=0;
  c2on_bit=0;
trisb=128;portb=0;
portc=portd=0;
trisc=trisd=0;
tmr0=0;
option_reg=0b11010111;
intcon=0b10001000;
iocb=0b10000000;
 }
انا جربت كودك بعد ما صفرت العلم فى اخر امر وبدون الكود الى ملوش لازمة واشتغل تمام جرب انت واخبرنا بنتيجة
سلام

إضافة رد

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

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

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


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

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