ايران ويج

نسخه‌ی کامل: watchdog
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
با سلام خدمت دوستان لطفا یک توضیح در مورد دستور watchdog هرکی میدونه بده ومنو راهنمایی کنه
میدونم بعد از یک زمان مشخص میکرو ریست میکنه اما علت استفادش نمیدونم
تازه بعد از زمان مشخص شده تمام متغیر ها دوباره به مقدار اولیه برگشته و برنامه از اون زیر برنامه که این دستور داخلش نوشته شده خارج شده وبه اول میاد
ایا این چیزای که گفتم درست بوده؟
من راهنمایی کنید
(۰۵-مهر-۱۳۹۲, ۲۲:۱۷:۵۵)nj_1368 نوشته است: [ -> ]با سلام خدمت دوستان لطفا یک توضیح در مورد دستور watchdog هرکی میدونه بده ومنو راهنمایی کنه
میدونم بعد از یک زمان مشخص میکرو ریست میکنه اما علت استفادش نمیدونم
تازه بعد از زمان مشخص شده تمام متغیر ها دوباره به مقدار اولیه برگشته و برنامه از اون زیر برنامه که این دستور داخلش نوشته شده خارج شده وبه اول میاد
ایا این چیزای که گفتم درست بوده؟
من راهنمایی کنید

وقتی واچ داگ ریست انجام میده دقیقا مثل این هست که شما از بیرون میکرو رو ریست کرده باشید.
-
اما علت استفاده بسته به خود برنامه نویس داره ولی اصولا بر می گرده به این که اگر در جایی از برنامه به هر دلیلی مشکلی ایجاد شد و میکرو نتونست کار خودش رو انجام بده ریست بشه یا مثلا یه دستگاه خارجی درست کار نکرد.
-
مثال:
شما یه دستگاه دارید که یه متوری رو کنترل می کنه اگه میکرو منتظر دریافت داده از سنسوری بشه و اون سنسور به هر دلیلی میکرو رو منتظر نگه داره موتور بدون هیچ نظارتی کارش رو می کنه ولی واچ داگ باعث میشه که میکرو ریست بشه و از وارد شدن خسارت بدلیل کنترل نشدن متور جلوگیری بکنه.
مثال:
شما یه برنامه نویشتید که مثلا یه چیزی رو مانیتور می کنه و اپراتور یه کلیدی رو هر جند وقت یک بار باید فشار بده که مثلا معلوم بشه خوابش نبرده که اگه این کار رو نکنه میکرو ریست می شه و دستگاه هم متوقف.
-
شاید بپرسید که این کار هارو که میشه با وقفه و این ها هم نوشت ولی در جواب باید گفت وقتی موضوع مهم باشه شما باید به صورت سخت افزاری محافظت رو انجام بدید و کلا عمل واچ داگ جلوگیری از بروز خطا هایی این چنینی در برنامه هست.
از نظر من مشکل اون مثال ها با یه timeOut نرم افزاری حل می شه و یه شمارنده بیشتر نیست.
کاربرد اصلی watch dog برای در آوردن میکرو از حالت هنگ کردن هست.

برای اون مثال ها ، اگر timeOut هم نتونست کارش رو انجام بدهه ، یعنی میکرو درست کار نمی کنه و هنگ کردهه که در این صورت watch dog عمل می کنه و بازم مشکلی پیش نمی یاد.

البته time out ها رو هم می شه با WD انجام داد ، منتها WD محدودیت هایی دارهه ، مخصوصا در برخی میکروها ، جدا از اون یک واحد جداست که بطبع باعث افزایش توان مصرفی هم می شه ( هر چند که جزءی باشه )
چطور میشه کاری کرد بعد از دوازده ساعت میکرو ریست بشه؟

البته مهم نیس دقیقا دوازده ساعت باشه چند دقیقه این طرف اونطرف مشکل نداره
از دوستان عزیز ممنونم که نظر دادن وراهنمایی کردن
ریست کردن میکرو یعنی میکرو از خط اول برنامرو دوباره میخونه؟پس باید تمام متغییرها هم دوباره صفر شده و به مقدار اولیه برگرده اگر دستور واج داگ داخل یک زیر برنامه فعال بشه بعد از گذشت زمان مشخص شده بر میگرده به اولین خط برنامه وتمام مراحلی که برای رسیدن به اون زیر برنامه طی شده باید دوباره انجام بشه؟

شما دوست عزیزم بنظر من برای درست کردن 12 ساعت اگر از تایمر داخلی میکرو استفاده کنید مشکلتون برطرف بشه
(۰۷-مهر-۱۳۹۲, ۲۰:۰۱:۰۲)nj_1368 نوشته است: [ -> ]از دوستان عزیز ممنونم که نظر دادن وراهنمایی کردن
ریست کردن میکرو یعنی میکرو از خط اول برنامرو دوباره میخونه؟پس باید تمام متغییرها هم دوباره صفر شده و به مقدار اولیه برگرده اگر دستور واج داگ داخل یک زیر برنامه فعال بشه بعد از گذشت زمان مشخص شده بر میگرده به اولین خط برنامه وتمام مراحلی که برای رسیدن به اون زیر برنامه طی شده باید دوباره انجام بشه؟
بله از اول برنامه شروع میشه.
عرض کردم دقیقا مثل اینه که ریست خارجی انجام داده باشید.
حالا وسط برنامه باشه- تو تابع باشه - تو وقفه - تو ... کلا ریست میشهBiggrin