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

   

الصورة الرمزية حيدر علاج حسن
حيدر علاج حسن
:: مشرف منتدى الهندسة الكهربائية ::
تاريخ التسجيل: Mar 2005
الدولة: IRAQ
المشاركات: 9,848
نشاط [ حيدر علاج حسن ]
قوة السمعة:
قديم 13-05-2013, 11:58 PM المشاركة 17   
افتراضي





انا ايظاا اريد هذا الكود ......
ههههههه لم ارى مشاركتك الا الان ....
هذا هو الكود ...
كود:
trisa=1;trisb=0;portb=0;porta=1;
while(1)
        {
         if(porta.f0)
                        {
                         while(porta.f0){}
                         portb=0;
                        }
         while(porta.f0==0)
                        {
                         delay_ms(10);
                         portb++;
                        }
        }
}

اعلانات

ennng
:: مهندس متميز ::
تاريخ التسجيل: Jul 2010
المشاركات: 453
نشاط [ ennng ]
قوة السمعة:
قديم 14-05-2013, 01:07 AM المشاركة 18   
افتراضي


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

23728 : 5.9ms
8.5us + (1/1hz) 1.0059s: X
عندي سؤاليين :
1-هل نحتاج الى كرستالة عالية للترددات المنخفضة لاني راح اشتغل باذن الله تعالى على 4MHz داخلية وترددات اقل من 10Hz وايه تنصحني فيه.
2-هل بامكان استخدام هذه الطريقة لاشارة او نبضات قادمة من نفس المتحكم او لا, على سبيل المثال انا ابطلع من البيك على اي pin اشارة مربعة ON/OFF هل بالامكان ادخال هذه الاشارة على نفس المتحكم على pin ال CCP
بارك الله فيك

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

Tico
:: عضو ذهبي ::
تاريخ التسجيل: May 2012
المشاركات: 1,423
نشاط [ Tico ]
قوة السمعة:
قديم 14-05-2013, 01:13 AM المشاركة 19   
افتراضي


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


ennng
:: مهندس متميز ::
تاريخ التسجيل: Jul 2010
المشاركات: 453
نشاط [ ennng ]
قوة السمعة:
قديم 14-05-2013, 01:16 AM المشاركة 20   
افتراضي


بارك الله فيك اخي حيدر اتفق معاك ان قيمة t على حسب الرسم هو ليس الزمن الذي من خلالة نستطيع ايجاد التردد ولكن الامر بسيط لمعرفة قيمة t نحسب قيمة T ومعلوم لدينا عرض النبضة اذا استخدمنا delay_ms وبالتالي فان t=T-delay_ms
ونحن هنا نبحث عن قيمة T وليس t
ماهو الكود الاخير


ennng
:: مهندس متميز ::
تاريخ التسجيل: Jul 2010
المشاركات: 453
نشاط [ ennng ]
قوة السمعة:
قديم 14-05-2013, 01:26 AM المشاركة 21   
افتراضي



الله يوفقك اخي Tico ويوفق الجميع لولا الله ثم هذا المنتدى الطيب وتعاون الجميع لما وصلنا الى هنا فالله يبارك في الجهود


Mohammedalharbi
:: مهندس متواجد ::
تاريخ التسجيل: Dec 2012
المشاركات: 58
نشاط [ Mohammedalharbi ]
قوة السمعة:
قديم 14-05-2013, 10:18 AM المشاركة 22   
افتراضي


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



عندي سؤاليين :
1-هل نحتاج الى كرستالة عالية للترددات المنخفضة لاني راح اشتغل باذن الله تعالى على 4MHz داخلية وترددات اقل من 10Hz وايه تنصحني فيه.
2-هل بامكان استخدام هذه الطريقة لاشارة او نبضات قادمة من نفس المتحكم او لا, على سبيل المثال انا ابطلع من البيك على اي pin اشارة مربعة ON/OFF هل بالامكان ادخال هذه الاشارة على نفس المتحكم على pin ال CCP
بارك الله فيك
شكرا اخي enng على كلامك الطيب..واشكرك على تصحيح الخطا..المفروض تكون 5.9ms + (1/1hz)
1- لم الاحظ خطا مع الترددات المنخفضة..الخطا دائما يكون مع الترددات العالية وذلك لوصول ثاني rising edge قبل الانتهاء من حفظ اول rising edge. و4 ميجاهرتز جداً مناسبه لحساب ترددات منخفضة.
2- الفكرة ممتازة لكن لم اجربها..اتوقع انك تقدر تعملها. فرضا نستخدم ccp1 في وضع capture و ccp2 في وضع pwm ممكن التحدي الصعب فيها التعامل مع المقاطعات. اتمنى ان توافينا بالنتائج ان قمت بتنفيذها.

عليكم السلام اخي و شكرا جزيلا لك ...
نعم هو كذلك و نحن نريد حساب الزمن t و طبعا لا يمكن ان نقول هو مقلوب التردد
السلام عليكم اخي حيدر..اعتقد ان شوفت كود قبل فترة لحساب t_off. فكرة الكود تعتمد على تهيئة CPP1 على capture falling edge وتتم قراءة الوقت وبعد كذا تهيئة ال CPP1 على capture rising edge وقراءة الوقت. ومن ثم حساب الفرق بين القرائتين. وعلى حسب ماقريت في الداتا شيت, عند تغيير حالة ال CPP1 من rising edge الى falling edge او العكس ممكن تتفعل مقاطعة (CPPIF=1). لذلك لازم نصفرها بعد التغيير ومن ثم قراءة الوقت.


الصورة الرمزية حيدر علاج حسن
حيدر علاج حسن
:: مشرف منتدى الهندسة الكهربائية ::
تاريخ التسجيل: Mar 2005
الدولة: IRAQ
المشاركات: 9,848
نشاط [ حيدر علاج حسن ]
قوة السمعة:
قديم 14-05-2013, 09:15 PM المشاركة 23   
افتراضي


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

بارك الله فيك اخي حيدر اتفق معاك ان قيمة t على حسب الرسم هو ليس الزمن الذي من خلالة نستطيع ايجاد التردد ولكن الامر بسيط لمعرفة قيمة t نحسب قيمة T ومعلوم لدينا عرض النبضة اذا استخدمنا delay_ms وبالتالي فان t=T-delay_ms
ونحن هنا نبحث عن قيمة T وليس t
ماهو الكود الاخير
الكود يحسب t و هو ما فهمته من طلبك و ما نبحث عنه انا و المهندس عبد السلام


الصورة الرمزية حيدر علاج حسن
حيدر علاج حسن
:: مشرف منتدى الهندسة الكهربائية ::
تاريخ التسجيل: Mar 2005
الدولة: IRAQ
المشاركات: 9,848
نشاط [ حيدر علاج حسن ]
قوة السمعة:
قديم 14-05-2013, 09:25 PM المشاركة 24   
افتراضي




السلام عليكم اخي حيدر..اعتقد ان شوفت كود قبل فترة لحساب t_off. فكرة الكود تعتمد على تهيئة CPP1 على capture falling edge وتتم قراءة الوقت وبعد كذا تهيئة ال CPP1 على capture rising edge وقراءة الوقت. ومن ثم حساب الفرق بين القرائتين. وعلى حسب ماقريت في الداتا شيت, عند تغيير حالة ال CPP1 من rising edge الى falling edge او العكس ممكن تتفعل مقاطعة (CPPIF=1). لذلك لازم نصفرها بعد التغيير ومن ثم قراءة الوقت.
و عليك السلام اخي محمد ....
الكود الذي نبغي يفضل عدم استخدام المقاطعة فيه لانه سيدمج مع كود اخر يعمل بالمقاطعة و اخشى ان يحصل تضارب بين المقاطعتين ....
لاحظ انني جعلت الزمن يخرج على المنفذ B و كل ما ينتهي من حساب الزمن بين نبضتين يصفر و يعيد الحساب بين النبضتين التاليتين ....



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