 |
:: ضو فضي ::
تاريخ التسجيل: Aug 2010
المشاركات: 350
|
|
نشاط [ DELTA67 ]
قوة السمعة:
|
|
21-03-2015, 05:23 PM
المشاركة 15
|
|
عـــــدنا
6- شـــرح عمل البرنامج:
هناك عدة طرق لاستخراج البتات 1 و 0 من اشارة الــ 22KHz أخترت منها تلك التي تمكننا من تصميم أبسط دارة ممكنة كما رأينا سابقا.
يمكنكم طبعا ايجاد حلول أخرى و افادتنا بها هنا حتى تعم الفائدة للجميع.
في دارتنا يبرمج المدخل RA4 كمدخل نبضات للمؤقت (العداد) TIMER0 .
في البداية ننتظر فترة الصمت (الفجوة) الــ Leading Gap و التي تسبق كل رسالة message. بعدها ننتظر أول جبهة صاعدة Rising edge لاشارة الــ 22KHz على الرجل RA4 ثم نبدأ بعد النبضات الداخلة خلال 1,2ms . اذا كان هذا العدد أقل من 15 فالبت هو 1 واذا كان أكبر فالبت هو 0 .
لاحظ أنني قلت 15 و لم أقل 11 كما رأينا و هذا لأن تردد الاشارة ليس 22KHz بالضبط في كل الريسيفرات بل هناك هامش للخطأ مسموح به و بالتالي يجب مراعاة ذلك. لذلك تم اختيار زمن عد النبضات 1,2ms و ليس 1ms بالضبط.
سيبقى لنا 0,3ms من زمن البت و هي مدة كافية لمعرفة نوع البت 0 أم 1 و تخزينه و القيام بالعمليات الأخرى التي نحتاجها لتجميع البايتات و التأكد من صحتها عن طريق بت الـ Parity الخ.
البرنامج مكتوب بالأسمبلي و اذا تطوع أحدكم لتحويله الى لغة أخرى سنكون شاكرين له.
يوجد تعليق على كل سطر من البرنامج تقريبا خاصة أهم جزء و هو استخراج بايتات الرسالة من اشارة الــ 22KHz.
و هذا هو رابط الكود:
https://www.sendspace.com/file/payqq8
الرجاء كل الرجاء ممن قام بتجربة هذا البوزيستيونر أو تطوير الكود مشاركتنا تجربته.
لا تنسوا أن هذا العمل أخذ مني الكثير من الوقت و الجهد و وقت و جهد آخر لتقديمه لكم هنا فلا تبخلو علينا رجاء بملاحظاتكم و آرائكم.
في النهاية لا يسعني الا أن أ شكر "القرويين" الذين أخذوا جزءا من وقتهم لكتابة ردودا لتشجيعي على مواصلة الموضوع.
كما لا يفوتني أن أذكر كل من قرأ الموضوع و لم يجد الوقت لكتابة ولو رد بسيط أذكره أن وقت الأعضاء الذين يكتبون المواضيع هو أيضا ثمين جدا لكنهم يبذلونه رخيصا لخدمكتكم.
تحياتي و الى لقاء جديد مع موضوع حصري جديد ان شاء الله.
انتظــــرونا
-------------------------------------------------
لا تسأل الطغاه لماذا طغو بل اسأل العبيد لماذا انحنو
التعديل الأخير تم بواسطة : DELTA67 بتاريخ 21-03-2015 الساعة 05:27 PM
|