راه اندازی واچ داگ در ARM

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

متاسفانه این پروژه را نمی توان داخل پروتئوس شبیه سازی کرد . باید این پروژه را به صورت سخت افزاری تست کنید. پروژه به این صورت است که یک کانتر در حلقه while شروع به شمارش می کند . ما هم زمان watchdog را 4 ثانیه گذاشته . بعد از گذشت 4 ثانیه از شمارش کانتر مدار ریست شده و پیغام watchdog نمایش داده می شود. و این عمل مجدد تکرار می شود. تابع ریست واچداگ هم موجود است که شما می توانید آن را استفاده کنید و مانع ریست شدن مدار توسط واچ داگ شوید.

/ 0 نظر / 208 بازدید