بستن منو
×
فعال کردن واچ داگ تایمر آردوینو

راه اندازی واچ داگ تایمر در آردوینو

دسته بندی : آردوینو

چکیده :

آموزش راه اندازی و فعال سازی واچ داگ تایمر یا همان تایمر سگ نگهبان در آردوینو ، Watchdog برای جلو گیری از هنگ کردن آردوینو استفاده میشود

تایمر سگ نگهبان یا Watchdog Timer یک نوع تایمر است که از هنگ کردن آردوینو یا هر نوع میکرو کنترلی جلوگیری میکند که ما در این آموزش میخواهیم به این موضوع بپردازیم که چگونه این تایمر را در آردوینو راه اندازی کنیم .

بیشتر درباره واچ داگ تایمر بدانید (+)

 

Watchdog در آردوینو چگونه کار میکند ؟

تایمر سگ نگهبان در آردوینو

 

همون طور که میدونید تایمر سگ نگهبان برای جلوگیری از خطا های احتمالی برنامه استفاده میشه ، اگه بخوام خیلی ساده و شفاف بهتون بگم ، این تایمر به این شکل کار میکنه که اگه میکرو طی زمان تایین شده واچ داگ تایمر رو ریست نکنه ، واچ داگ تایمر میکرو رو ریست میکنه ، جالبه بود مگه نه ؟ 😉

 

چگونه واچ داگ تایمر Watchdog در آردوینو را فعال کنم؟

مرحله ۱ : فراخوانی کتابخانه

#include <avr/wdt.h>

این کتابخانه برای استفاده از تایمر سگ نگهبان باید فراخوانی بشه

 

مرحله ۲ : فعال / غیرفعال کردن واچ داگ تایمر

اگه یه قسمت برنامه فعال بودن واچ داگ تایمر مهم نیست ، این باید غیر فعال شه ، چرا ؟

اگه یه جایی قرار باشه آردوینو به حالت کم مصرف یا همون sleep بره ، این کار انجام نمیشه چون قراره هر دفعه یه پالس بفرسته به چیپ واچ داگ تایمر تا اون رو ریست کنه ، و این باعث میشه که مصرف انرژی بالا بره

فعال کردن واچ داگ تایمر

تابع:

wdt_enable(WDT Reset Timer);

مثال:

wdt_enable(WDTO_4S);

واچ داگ تایمر آردوینو را میتوان با زمان بندی ها مختلفی فعال کرد ، زمانی که وارد میکنید باید بزرگ تر از زمان حلقه loop باشد این زمان بین ۱۵ میلی ثانیه تا ۱۸ ثانیه است

جدول تنظیمات زمان واچ داگ تایمر
مدت زماننام مقدارمیکرو کنترلر های قابل پشتیبانی
۱۵ msWDTO_15MSATMega 8, 168, 328, 1280, 2560
۳۰ msWDTO_30MSATMega 8, 168, 328, 1280, 2560
۶۰ msWDTO_60MSATMega 8, 168, 328, 1280, 2560
۱۲۰ msWDTO_120MSATMega 8, 168, 328, 1280, 2560
۲۵۰ msWDTO_250MSATMega 8, 168, 328, 1280, 2560
۵۰۰ msWDTO_500MSATMega 8, 168, 328, 1280, 2560
۱ sWDTO_1SATMega 8, 168, 328, 1280, 2560
۲ sWDTO_2SATMega 8, 168, 328, 1280, 2560
۴ sWDTO_4SATMega 168, 328, 1280, 2560
۸ sWDTO_8SATMega 168, 328, 1280, 2560

غیر فعال کردن واچ داگ تایمر

wdt_disable();

مرحله ۳ : ریست کردن واچ داگ تایمر

ریست کردن واچ داگ تایمر به این معنیه که مقداری که گفتیم رو برامون برابر با ۰ میکنه

مثال : ماگفتیم که برامون تا ۲ ثانیه بشماره ، اگه شد ۲ ثانیه میکرو رو ریست میکنه ، پس ما باید قبل از اینکه اون میکرو رو ریست کنه ما اونو ریست کنیم

برای این کار از کد زیر استفاده میکنیم

wdt_reset();

 

مرحله ۴ : یک مثال ساده برای تست واچ داگ تایمر در آردوینو

شما باید از wdt_reset(); به درستی استفاده کنید ، چرا که اگه واچ داگ تایمر رو به موقع ریست نکنید اون میکرو رو ریست میکنه

همیشه مقدار زمانی که برای واچ داگ تایمر در آردوینو مشخص میکنید باید بیشترین مقدار باشه ، یعنی کل تاخیر ها را در نظر بگیرید

نمونه کد :

#include <avr/wdt.h>

void setup(){
//watchdog timer with 2 Seconds time out
wdt_enable(WDTO_2S);
}

void loop(){
//do stuff here

wdt_reset();
}

 

در بالا یک نمونه کد خیلی ساده از استفاده از واچ داگ تایمر برای شما عزیزان قرار دایم که ۲ ثانیه صبر میکند ، شما میتوانید این مقدار رو تغییر بدید

همچنین در صورت وجود هرگونه سوال یا ابهامی میتونید اون رو از ما بپرسید ، ما در اولین فرصت به سوالات شما پاسخ خواهیم داد

ساخت ولتمتر با آردوینو

پروژه ساخت ولتمتر با استفاده از آردوینو uno به همراه تمامی فایل ها و کامنت های تمامی خط های کد سورس کد [ پروژه کامل و رایگان ]

ساخت پالس موج مربعی با آردوینو

ساخت پالس موج مربعی با آردوینو برای تولید این پالس از pwm استفاده نخواهیم کرد و یک فرکانس با استفاده از تاخیر خواهیم ساخت با ما همراه باشید

4 دیدگاه برای “راه اندازی واچ داگ تایمر در آردوینو”

  1. امیر گفت:

    با سلام من برنامه نوشتم درون اون اینتراپت هم داره وقتی اینتراپت هست وقفه کار نمی کند می شه راهنمایی کنید

  2. مهرداد گفت:

    سلام . من یک برنامه با واچ داگ نوشتم آردوینو یکسره ریست میشه . و برنامه جدید که میخواهید روش بریزید چون آردوینو یکسره ریست میشه خطا میده. (آردوینو نانو).کسی از دوستان راه حل داره؟

  3. سعید گفت:

    با سلام و ممنون بابت مطلب مفیدی که گذاشتید
    من یه مشکل دارم با واچ داگ،اونم اینه که من یه برنامه دماسنج دارم که یه تایمر نزولی هم داره،وقتی واچ داگ رو در برنامه قرار میدم و مقدار واچ داگ رو بابر ۸ ثانیه میگذارم،درست زمانی که تایمر نزولی ۸ ثانیه ازش کم میشه،واچ داگ فعال میشه و میکرو رو ریست میکنه و تایمر و برنامه ها از دوباره شروع بکار میکنند و این روند همینطور ادامه داره،اگه میشه راهنمایی کنید که چیکار کنم؟

    1. PROMember5 گفت:

      شما باید در حلقه های لوپ خود که ممکنه هنگ کنه دستور ریست تایمر واچ داگ رو بدید تا قبل از اینکه میکرو رو ریست کنه خودش ریست شه.آیا این کار رو کردید؟
      اگه متوجه منظورم نشدید مطلب رو تا ته بخونید

دیدگاهتان را بنویسید

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

در حال اعتبار سنجی لطفا منتظر بمانید ...