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

شاطر | 
 

  مؤقت الحراسة (المراقبة) Watchdog Timer (WDT

استعرض الموضوع السابق استعرض الموضوع التالي اذهب الى الأسفل 
كاتب الموضوعرسالة
aboudi
عضو متميز
عضو متميز


عدد المساهمات : 210
نقاط : 285
تاريخ التسجيل : 14/04/2012

مُساهمةموضوع: مؤقت الحراسة (المراقبة) Watchdog Timer (WDT   الجمعة 31 أغسطس 2012, 8:04 pm

السلام عليكم

مؤقت الحراسة (المراقبة) Watchdog Timer (WDT

الغرض الأساسى لمؤقت الحراسة (المراقبة)
الميكروكونترولر يعمل فى عالم واقعى به تداخلات وذبذبات فى مصدر القدرة وحتى أمراض وعلل فى البرمجيات . هذه المشاكل تؤثر على عمل المعالج وقد تؤدى الى تعليمات برمجية خاطئة .
يوجد خطر كبير وداهم مع أى نظام يعتمد فى أساسه على المعالجات وهو أن فشل البرمجيات بطريقة ما يصبح النظام غير عامل ولا يستجيب للتعليمات .
فى الكومبيوتر الشخصى المكتبى يمكنك التغلب على ذلك بإعاد التشغيل reboot.
لكن فى تطبيقات الأنظمة الأخرى يمكن أن يسبب كارثة لأنه قد لا يتواجد أى مستخدم ليلاحظ أن هناك خطأ ما كما قد لا تتواجد وسيلة ربط أو واجهة interface مع المستخدم .
فى كثير من المواقف قد يكون التصفير اليدوى هو كل ما نحتاجه (كما فى الكومبيوتر الشخصى) .
وعلى الرغم من ذلك فهناك أيضا الكثير من الحالات لا يكون فيها التصفير اليدوى عمليا والنتيجة تكون مأساة مثل حالات أجهزة تنظيم ضربات القلب أو فى الطائرات و الأقمار الصناعية .
مؤقت المراقبة أو الحراسة يقدم الحل المناسب لهده المشكلة .
يمكن للمصمم المبرمج إستخدام مؤقت الحراسة أو المراقبة والذى يقوم أتوماتيكيا بعمل تصفير للجهاز .

ما هو مؤقت الحراسة ؟:
مؤقت الحراسة هو عداد بمذبذب حر بدائرة RC داخل شريحة الميكروكونترولر ولا يحتاج أى مكونات خارجية والذى يقوم بالعد بإستمرار (عند تمكينه) وإذا حدث به طفحان overflow فإنه يجبر الميكروكونترولر على التصفير reset .
هذا المذبذب منفصل عن مذبذب ساعة الميكروكونترولر(ساعة النظام) المتصل بالطرف OSC1/CLKIN وهذا يعنى أن مؤقت الحراسة سوف يعمل حتى لو توقف مذبذب ساعة النظام كما فى الحالة عند تنفيذ تعليمة النوم SLEEP .
فى الميكروكونترولر PIC16F84A (على سبيل المثال) يتم تمكين enabled مؤقت الحراسة بواسطة أحد خانات التهيئة . ومن ثم إما أن يعمل أو لا يعمل خلال فترة تشغيل الميكروكونترولر . بالطبع قد لا ترغب فى إستخدام مؤقت الحراسة .
يتم ذلك عند حرق (تحميل) البرنامج على الميكروكونترولر والأفضل وضع سطر فى البرنامج للتهيئة كما يلى :
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذه الصورة]

هذا السطر لا يقوم فقط بفصل مؤقت الحراسة ( _WDT_OFF) ولكنه أيضا يحدد نوع المذبذب الداخلى (كريستال _XT_OSC) وأيضا فصل حماية شفرة البرنامج (ليسمح لك ببرمجة الجهاز مرة أخرى عند الرغبة ) ( _CP_OFF ) , كما أنه يؤدى إلى تفعيل التصفير عند بدأ توصيل القدرة ( _PWRTE_ON ) كما يمكن عدم تمكين مؤقت الحراسة من العمل disabled بجعل خانتة التهيئة WDTE بالقيمة المنطقية (0) .

[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذه الصورة]

الفترة الطبيعية لمؤقت الحراسة (بدون إستخدام معامل قسمة التردد prescaler ) هى 18 ms وتسمى "فترة انتهاء المهلة" time-out period .
فترة إنتهاء المهلة تتغير مع درجة الحرارة والجهد الموجب VDD ونوع الميكروكونترولر .
عند الرغبة فى زيادة فترة إنتهاء المهلة يتم إستخدام معامل القسمة للتردد prescaler بقيمة تصل الى 1:128 .
يتم تخصيص معامل القسمة لمؤقت الحراسة برمجيا عن طريق مسجل الخيارات OPTION_REG ومن ثم يمكن الحصول على فترة إنتهاء المهلة تصل الى 2.3 seconds .

[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذه الصورة]

تعليمة مسح مؤقت الحراسة CLRWDT وتعليمة النوم SLEEP تقومان بتصفير مؤقت الحراسة WDT ومعامل القسمة ( إذا كان مخصصا لمؤقت الحراسة) ليعمل بالطريقة المطلوبة .
الخانة (معكوس TO ) فى سجل الحالة STATUS يتم مسحها clearعند إنتهاء فترة مهلة مؤقت الحراسة

[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذه الصورة]


إستخدام مؤقت الحراسة يكون حسب رغبة المبرمج وعندئذ يجب التأكد من أنه خلال البرنامج يتم مسح مؤقت المراقبة WDT بصفة دورية بالتعليمة (clrwdt) .
فى العادة يتم ذلك كجزء من البرنامج فى حلقة غير منتهية وبحيث يتم تنفيذ البرنامج فى كل مرة فى فترة زمنية أقل من 18ms ( فترة مهلة وتأخير ) يظل خلالها مؤقت الحراسة غير فعال .
فإذا حدث خطأ ما وأنتهت هذه المهلة يقوم المؤقت عندئذ بعمل تصفير الجهاز .
التصفير نتيجة مؤقت الحراسة عامة خبر غير سار للنظام حيث بالطبع يدمر جميع قيم الضبط الحالى ويبدأ البرنامج من جديد . مع ذلك فهذا افضل من عدم التشغيل كليا .
لاحظ أن مؤقت الحراسة يترك دليل عمله خلفه ويكون ذلك من خلال الخانة TO بسجل الحالة STATUS .
من الممكن إختبار هذه الخانة عند بداية البرنامج وبالتالى نستطيع أن نفرق بين التصفير نتيجة بداية توصيل القدرة والتصفير نتيجة مؤقت الحراسة .



منقول للفائدة
الرجوع الى أعلى الصفحة اذهب الى الأسفل
معاينة صفحة البيانات الشخصي للعضو
aboudi
عضو متميز
عضو متميز


عدد المساهمات : 210
نقاط : 285
تاريخ التسجيل : 14/04/2012

مُساهمةموضوع: رد: مؤقت الحراسة (المراقبة) Watchdog Timer (WDT   الجمعة 31 أغسطس 2012, 8:06 pm

آلية (ميكانيزم) عمل التصفير بمؤقت الحراسة Watchdog Timer

هذا النوع من التصفير موجود فى جميع أفراد عائلة الميكروكونترولر PIC , مؤقت الحراسة هو مؤقت مستقل ويعمل حرا بإستخدام مذبذب خاص داخلى بدائرة RC .

يستخدم مؤقت الحراسة فى وظيفتين :
الوظيفة الأولى : إجبار المعالج على عمل تصفير reset لنفسه إذا أصبح تنفيذ البرنامج غير مستقر .
الوظيفة الثانية : أجبار المعالج على النهوض أو الإستيقاظ من نظام الخمول أو النوم sleep دوريا.

[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذه الصورة]

عند إستخدام نظام "الحراسة" فإن المؤقت يتم تصفيره من خلال البرنامج باستخدام تعليمة تصفير مؤقت الحراسة (CLRWDT) .
إذا حدث لأى سبب عدم استقرار فى عمل الميكروكونترولر عندئذ لن تنفذ تعليمة تصفير مؤقت الحراسة (CLRWDT) فى الوقت المحدد (فترة انتهاء المهلة timeout) حيث يقوم مؤقت الحراسة بالعد الى نهايته ويبدأ من الصفر من جديد (تسمى حالة طفحان overflow) .
عند الوصول ألى هذه الحالة فإنه يتم إجبار الميكروكونترولر على البدء من حالة معروفة مرة اخرى.
لذلك فإن مكان التعليمة CLRWDT مهم حتى تكون مؤثرة .

[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذه الصورة]

يمكن إستخدام معامل قسمة التردد prescalar لتغيير الزمن الخاص بمؤقت الحراسة .
إذا كان الميكروكونترولر فى نظام النوم SLEEP فعند حدوث طفحان لمؤقت الحراسة يجبر الميكروكونترولر على الإستيقاظ واستمرار تنفيذ البرنامج من المكان بعد تعليمة النوم SLEEP .
يجب ملاحظة أنه عند استخدام نظام المذبذب الكريستال فإن مؤقت بدء المذبذب سوف يعطى تأخر للمذبذب حتى يستقر بعد الاستيقاظ .
بمجرد إستيقاظ الميكروكونترولر يقوم بتحديد ما إذا كان هناك تغيير فى الأحداث (مثل تغيير حالة المداخل والمخارج) ويقوم بتنفيذ الكود المناسب .
بعد ذلك يقوم الكود بإرسال الميكروكونترولر مرة أخرى إلى نظام النوم وتتكرر الدورة .
إستخدام مؤقت الحراسة بهذه الطريقة يوفر الطاقة لأن الميكروكونترولر يكون فى نظام النوم فى أغلب الأوقات
عند استخدام مؤقت الحراسة هناك بعض النقاط الهامة التى يجب أخذها فى الإعتبار عند تصميم البرنامج :
النقطة الاولى : هى أنه عند تمكين enabled مؤقت الحراسة فلا يمكن أبدا وقف عمله بالبرمجة . ويظل يعمل حتى إن كان الميكروكونترولر فى نظام النوم .
النقطة الثانية : مؤقت الحراسة يستخدم مذبذب RC داخلى خاص وبسيط وفترة تأخيره تختلف من جهاز إلى اخر وتعتمد على قيمة التغير فى جهد التغذية وفى درجة الحرارة لذالك يجب على المصمم أخذ هذه التغيرات فى الاعتبار .
النقطة الاخيرة : دائرة مؤقت الحراسة تسحب تيار إضافى عند تمكينها للعمل فيجب أخذ ذلك فى الاعتبار عن حساب التيار المطلوب للتطبيق .



اسأل الله ان يوفق الجميع


الرجوع الى أعلى الصفحة اذهب الى الأسفل
معاينة صفحة البيانات الشخصي للعضو
Admin
المراقب العام
المراقب العام


عدد المساهمات : 968
نقاط : 1679
تاريخ التسجيل : 12/04/2012

مُساهمةموضوع: رد: مؤقت الحراسة (المراقبة) Watchdog Timer (WDT   الأحد 02 سبتمبر 2012, 2:37 am

شكرا لك اخى عبودى على هذا الموضوع الهام
الرجوع الى أعلى الصفحة اذهب الى الأسفل
معاينة صفحة البيانات الشخصي للعضو http://microworld.forumarabia.com
opt_muh
عضو جديد
عضو جديد


عدد المساهمات : 2
نقاط : 2
تاريخ التسجيل : 27/11/2012

مُساهمةموضوع: رد: مؤقت الحراسة (المراقبة) Watchdog Timer (WDT   الثلاثاء 27 نوفمبر 2012, 8:32 pm

Wink
الرجوع الى أعلى الصفحة اذهب الى الأسفل
معاينة صفحة البيانات الشخصي للعضو
eng_mo7amed_3ly
عضو جديد
عضو جديد


عدد المساهمات : 9
نقاط : 9
تاريخ التسجيل : 20/12/2012
العمر : 33
الموقع : Egypt

مُساهمةموضوع: رد: مؤقت الحراسة (المراقبة) Watchdog Timer (WDT   الأحد 23 ديسمبر 2012, 1:56 am


جزاك الله خيرا زميلنا العزيز على هذا المجهود الرائع
الرجوع الى أعلى الصفحة اذهب الى الأسفل
معاينة صفحة البيانات الشخصي للعضو
aboudi
عضو متميز
عضو متميز


عدد المساهمات : 210
نقاط : 285
تاريخ التسجيل : 14/04/2012

مُساهمةموضوع: رد: مؤقت الحراسة (المراقبة) Watchdog Timer (WDT   الأربعاء 26 ديسمبر 2012, 1:03 pm

eng_mo7amed_3ly كتب:

جزاك الله خيرا زميلنا العزيز على هذا المجهود الرائع

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


عدد المساهمات : 3
نقاط : 3
تاريخ التسجيل : 24/01/2013

مُساهمةموضوع: رد: مؤقت الحراسة (المراقبة) Watchdog Timer (WDT   الجمعة 25 يناير 2013, 12:24 am

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


عدد المساهمات : 210
نقاط : 285
تاريخ التسجيل : 14/04/2012

مُساهمةموضوع: رد: مؤقت الحراسة (المراقبة) Watchdog Timer (WDT   الجمعة 25 يناير 2013, 4:09 pm

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


عدد المساهمات : 2
نقاط : 2
تاريخ التسجيل : 27/07/2013

مُساهمةموضوع: رد: مؤقت الحراسة (المراقبة) Watchdog Timer (WDT   السبت 27 يوليو 2013, 8:17 am

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


عدد المساهمات : 968
نقاط : 1679
تاريخ التسجيل : 12/04/2012

مُساهمةموضوع: رد: مؤقت الحراسة (المراقبة) Watchdog Timer (WDT   السبت 27 يوليو 2013, 8:57 pm

mselman كتب:
معلومات مهمه جدا الف شكر
الشكر لله وبالتوفيق
الرجوع الى أعلى الصفحة اذهب الى الأسفل
معاينة صفحة البيانات الشخصي للعضو http://microworld.forumarabia.com
 
مؤقت الحراسة (المراقبة) Watchdog Timer (WDT
استعرض الموضوع السابق استعرض الموضوع التالي الرجوع الى أعلى الصفحة 
صفحة 1 من اصل 1

صلاحيات هذا المنتدى:لاتستطيع الرد على المواضيع في هذا المنتدى
عالم الميكروكنترولر والتحكم :: قسم الميكروكنترولر :: منتدى دروس الميكروكنترولر والمحاكاة-
انتقل الى: