به نام خدا :این دفعه می خواهیم تایمر نگهبان در میکروکنترلرهای avr را مورد بررسی قرار دهیم.

توجه: برای این مطلب تلاش های فروانی شده است. و بی شک کامل ترین اموزش جامع ای است که در این زمینه منتشر شده.  

(Watchdog times)   تایمرنگهبان

تعریف
این تایمر در همه AVR ها تعبیه شده است ، باعث می شود تا اگر به هر دلیلی عملیات میکروکترلر دچار اختلال شود(سیستم هنگ کند)میکرو به صورت خودکار reset شود. در اصل تایمر نگهبان یکی از شمارنده های میکرو کنترلر می باشد .که وظیفه محافظت از cpu را برعهده دارد.پایه شمارش این تایمر سیکل ماشین می باشد که قابل تنظیم است..

نوسان ساز تایمر نگهبان:این تایمر نگهبان از یک نوسان سازداخی با فرکانس 1مگاهرتز بهره می برد. فرکانس این نوسانگر وابسته به به ولتاژ تغذیه بوده

بطوری که در ولتاژ 5ولت فرکانس یک مگاهرتز را تولید می کند ودر ولتاژ های پایین تر فرکانس پایین تری تولید می کند .

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

  1. فعال سازی با فیوزبیت WDTON
  2. فعال نمودن به صورت نرم افزاری

1-فعال سازی با فیوزبیت : روش اول فقط در میکرو هایی امکان پذیر است که این فیوز بیت را دارند. با فعال شدن این فیوز بیت میکروکنترلر به صورت دائم در باز نشانی قرار می گیرد برای جلوگیری از این حالت باید در فواص کوتاه تری از ریست شدن میکرو از دستور اسمبلی زیر استفاده کرد.

#asm("WDR");

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

WDTCR=0b00001111;
for (i=0;i<10000;i++){#asm("WDR");}
PORTB.0=1; 

 مثال بالا زمان ریست شدن میکرو کنترلر در ولتاژپنج ولت 2.1 است زمان تقریبی تمام شدن حلقه یک ثانیه است در نتیجه

اگر از دستود اسمبلی استفاده نشود نباید دستورات بعد از حلقه اجرا شود. ولی مشاده می شود که به دلیل  ریست شدن تایمر نگهبان 2.2ثانیه پس از تمام شدن حلقه میکرو ریست می شود.و دستور بعد از جلقه اجرا می شود.

2-فعال نمودن به صورت نرم افزاری: در روش دوم که فعال سازی نرم افزاری است به کمک ریجستر

میتوان تایمر نگهبان را کنترل کرد. WDTCR 

WDTCR ریجستر

 

بیت های 5-7:بلا استفاده بوده و همیشه صفر خوانده می شوند.

زمانی که این بیت یک شود. بیت سوم پاک می شود(صفر می شود) و پس از یک شدن به طور خودکار پس :WDCE بیت

از گذر چهار سیکل سخت افزارآن را صفر می کند.

 نکته:در برخی از میکروکنترلرها نام این بیت کلمه زیر است برای کسب اطلاعات بیشتر به برگه اطلاعات(دیتاشیت) میکرو کنترلر مراجعه شود

                         WDTON  

اگر این بیت یک شود تایمر نگهبان فعال می شود. در غیر این صورت غیر فعال است این بیت فقط در صورتی پاک می شود.  :WDE 

یک شود WDCEکه بیت     

با استفاده از این بیت ها می توان زمان باز نشانی میکرو کنترلر را تنظیم کرد.   :WDP3-0 بیت های

نکته :این بیت ها فقط برای کنترل زمان باز نشانی هستند

در کدویژن  Delay_ms();تابع

  • علاوه بر ایجاد تاخیر دستود اسمبلی زیر را را به صورت خودکار هر 1میلی ثانیه اجرا می کند.
#asm("WDR")

غیر فعال کردن تایمرنگهبان: برای غیر فعال کردن تایمر نگهبان مراحل زیر را انجام دهید.

را یک کنید حتی اگر این قبل از این مرحله WDE  , WDCE بیت های -

یک شده باشد WDE بیت 

در مدت چهار سیکل چهار سیکل باید بیتEDW-2

را صفر نمود(همه بیت هه را صفر کنید)

WDTCR|=0x18  //WDCE=1 , WDE=1
WDTCR=0x00;   //WDR=0

 

فعال شده باشد . در داخل برنامه نمی توان تایمر نگهبان را غیر فعال کرد.WDTON نکته:در صورتی که فیوز بیت

 راه اندازی کرد.Codewizardنکته: تایمر نگهبان را می توان به سادگی توسط