WDT چیست؟

WATCH DOG TIMER چیست ؟

WDT مخفف Watch Dog Timer است که به معنای سگ نگهبان می باشد . WDT یکی از قابلیت های مفید و کاربردی در تراشه های میکروکنترلر است که با کمک آن می توان بر روی عملکرد میکروکنترلر نظارت داشت و در صورتی که تراشه به هر علتی قادر به اجرای برنامه نبود (هنگ کرد) ، آن را ریست کرد .

فرض کنید در در محیطی صنعتی و نویز پذیر از میکروکنترلر استفاده می کنید . در این صورت بسته به نوع مدار و همچنین میکروکنترلر ، درصدی احتمال برای اثر گذاری نویز بر روی تراشه وجود دارد که در صورت وقوع این وضعیت ، میکروکنترلر هنگ می کند و دیگر قادر به اجرای برنامه نیست . در این شرایط لازم است که برای اجرای برنامه ، تراشه ریست شود که این عمل مستلزم نظارت کاربری بر مدار است تا در صورت هنگ کردن ، از این موضوع اطلاع حاصل کند .

در حالت عادی این ریست باید توسط کاربر انجام پذیرد که با بالا رفتن تعداد مدارات به کار گرفته شده در محیط مذکور و یا کار کردن دائمی مدارها ، نظارت توسط کاربر سخت ، هزینه بر و در مواردی غیر ممکن خواهد بود .

اما در میکروکنترلرهایی که مجهز به WDT هستند ، وظیفهء کاربر نظارت کننده را WDT بر عهده دارد و آن را به خوبی انجام می دهد . WDT این امکان را دارد که پس از شمارش صعودی و سر ریز شدن تایمر ، میکروکنترلر را ریست کند . WDT در اکثر موارد از یک شبکه RC داخلی برای تامین کلاک مورد نظر خود استفاده می کند که در این حالت حتی اگر کلاک اصلی میکروکنترلر نیز قطع شود ، باز هم WDT به کارش ادامه خواهد داد . همچنین امکان تعیین پرسکالر (پیش مقسم فرکانسی) بر روی کلاک اعمالی به WDT نیز وجود دارد که با کمک آن می توان زمان های سرریز WDT را تغییر داد .

WDT در تراشه های در حالت کلی به صورت یکسان عمل می کند ، اما در حالت جزئی ممکن است تفاوتهایی در عملکرد WDT در بین انواع میکروکنترلر باشد .

چگونگی کار با WDT :

ابتدا با توجه به مقدار پرسکالر اعمالی و فرکانس کلاک WDT ، زمان سر ریز را محاسبه کرده ، سپس با فعال سازی WDT ، عمل نظارت آغاز می شود . برنامه کاری باید به نحوی نوشته شده باشد که قبل از اینکه WDT ریست شود ، مقدار آن توسط میکروکنترلر ۰ شود . در این شرایط اگر میکروکنترلر در حالت کار عادی خود باشد ، قبل از سر ریز شدن WDT ، مقدار آنرا ریست می کند (جلوگیری از سر ریز تایمر) و به این ترتیب WDT سر ریز نشده و نمی تواند سیستم را ریست کند (مدار در حالت عادی به کار خود ادامه می دهد ) ؛ ولی اگر میکرو کنترلر به هر دلیلی هنگ کند و قادر به اجرای برنامه نباشد ، دیگر نمی تواند WDT را قبل از سر ریز شدن ریست کند و بنابراین WDT سر ریز شده و تراشه را ریست می کند و به این ترتیب از هنگ ماندن تراشه جلوگیری می کند و سریع آنرا از حالت هنگ خارج می کند .

نکته :

ریست مربوط به WDT در انواع مختلف میکروکنترلر ، متفاوت است ؛ به صورتی که در برخی از میکروکنترلر ها ریست شدن توسط WDT همانند ریست خارجی است که تمامی مقادیر رجیستر ها ، متغیرها و .. را ریست می کند ، اما در برخی دیگر هم ریست شدن توسط WDT تنها بر روی برخی از رجیستر ها تاثیر می گذارد .

بعضی میکروها WDT داخلی ندارند برای این میکروها میتوان از پایه ریست میکرو استفاده کرد بدین صورت که یک نوسانگر با فرکانس کم مثلا ۲۰ هرتز به پایه ریست متصل شود و در برنامه هر از گاهی یک پایه مشخص از میکرو را صفر و سپس یک کنید تا این پایه از نوسان جلوگیری نماید بدیهی است در صورتی که میکرو هنگ نماید و پایه اشاره شده نتواند نوسانساز را ریست نماید نوسانساز به کار افتاده و میکرو را ریست نموده و روز از نو روزی از نو ! توجه داشته باشید که برای صفر و یک کردن پایه اشاره شده از قرار دادن چند خط برنامه در لوپ اصلی برنامه استفاده کنید و هرگز از سابروتین و فراخوانی سابروتین استفاده نکنید زیرا ممکن است سیستم هنگ نماید ولی اتفاقی سابروتین اجرا شود به عبارتی میکرو هنگ کرده ولی WDT عمل نکند.

مطالب مرتبط

۲ دیدگاه‌

  1. NAVIDHDS گفت:

    با عرض سلام خدمت شما

    با توجه به مطلبی که در باره WATCHDOG فرمودید می خواستم بپرسم آیا در سری ۸۰۵۱ و AVR این سیستم به چه صورت است. .چگونه و با چه روشی می توان مثلا در یک دستگاه با نمایشگر ال سی دی کاری کرد که در صورت عمل کردن WATCHDOG برنامه میکرو از اول اجرا نشده و فقط از قسمت خاصی از برنامه میکرو شروع به کار کند مثلا قسمت نوشته های معرفی دستگاه بر روی ال سی دی دوباره ظاهر نشود و کاربر متوجه ریست شدن دستگاه نشود ؟

    با تشکر

    • Misaghsepehr گفت:

      دوست عزیزسلام:
      ۸۰۵۱ این قابلیت رو نداره.
      اما درمورد AVR میتونی یه بیت از نوعEEPROM تعریف کنی معرفی دستگاه که انجام بشه و بعدش این بیت رو ست کنی. برنامه ی معرفی دستگاه رو باید توی یه IF بذاری که اگر این بیت ۰ بود بیاد معرفی دستگه رو انجا بده و اگر ۱ بود این کار رو انجام نده.

پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

*