Watchdog Timer


1) التصفير الخارجي الذي عند وضع مدخل ال Reset في الوضع LOW طبعاً هذا هو المعروف لنا في العادة و في الأردوينو توجد كبسة صغيرة Reset button .
![]() |
Arduino Uno R3 و كبسة التصفير موجودة في الجهة اليسرى العلوية بالقرب من منفذ ال USB |
2) وضع يسمى "Brown Out Detection "BOD و هو قد يكون جديد على البعض لكنه ذو اهمية كبيرة اذا انه يضع المتحكم الأصغري Microcontroller في وضع التصفير اذا هبطت فولتية التغذية عن فولتية محددة "حسب 3 فولتيات مختلفة 4.3 و 2.7 و 1.8 فولت , في الأردوينو 2.7 فولت و لا يمكن الأستفادة منها فعلياً لعدة أسباب " و اذا سنحت الفرصة سأتحدث عنه في وقت أخر" .
3)وضعية ال Watchdog timer . و هو ما سنتابع حديثنا عنه من الآن فصاعداً .

يعمل نظام ال Watchdog timer على كريستالة داخلية 128KHz .
لا يعمل ال Watchdog timer فقط على أعادة تهيئة البرنامج فقط بل يعمل ايضاً على مقاطعة وظيفة محددة و تنفيذها عند انقضاء زمن ال timOut او ممكن أن يقوم بوظيفة التصفير و المقاطعة في آن واحد , قد لا تفهم شيئاً من هذا لأنه موضوع جديد بعض الشيء و استخداماته متقدمة بعض الشيء, لكن أكمل باقي المقال حتى تتضح لك الفكرة بالأمثلة .

سنقوم أولاً بعمل تهيئة للكود المكتوب بحيث أنه بعد 4 ثواني من تشغيل البرنامج يقوم بعمل تهيئة للبرنامج ليبدأ العمل من جديد .
البرامج بشكل عام و كيفية التعامل معها ستجدها في النشرة الفنية الكاملة ص 56 حيث الكودات مكتوبة بلغة الأسيمبلي و ال C .
كل ما ستحتاجه هو فقط هو بطاقة الأردوينو لهذه التجربة و جهاز كمبيوتر .
الكود الأول سيكون لوضع التهيئة فقط .
سنقوم هنا بجعل المتحكم في حالة سبات sleep mode و ثم عمل ايقاظ له wakeup بواسطة ال watchdog فور انتهاء الزمن المحدد Timeout .
الكود الثاني : وضع التهيئة و المقاطعة معاً .
في الكود أمر جديد ألا و هو أمر استدعاء التصفير للمؤقت ISR WDT_vector حيث يجب أعادة تصفير ال Register flag بعد كل عملية و هذا يتم داخل جملة المقاطعة للتفاصيل ص67 من النشرة الفنية .

هناك مرجع مفيد لهذا الموضوع من اعداد المهندس عبد الله جلول حول عائلة ال AVR و بالتحديد ATMEGA32 باللغة العربية يمكن الأطلاع عليه من خلال الرابط هنا و هنا
طبعاً استفدت جداً في كتابة هذا المقال من Donal Morrissey و كتابته الرائعة حول هذا الموضوع

0 التعليقات :
إرسال تعليق