اطلاعیه

Collapse
No announcement yet.

اشکال در wathcdog

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    اشکال در wathcdog

    با سلام
    من یک برنامه برای تست watchdog میکرو با codevision نوشتم.

    #include <mega64.h>
    #include <delay.h>

    void main(void)
    {
    // Watchdog Timer initialization
    // Watchdog Timer Prescaler: OSC/16k
    #pragma optsize-
    WDTCR=0x1F;
    WDTCR=0x0F;
    #ifdef _OPTIMIZE_SIZE_
    #pragma optsize+
    #endif
    #asm("sei&quot

    while (1)
    {
    xxxxxx
    }
    }

    در حالت عدی watchdog کار کرده و میکرو را ریست میکند ولی اگر به جای xxxxxxx کد delay_ms(1); را جایگزین کنیم دیگر watchdog عمل نمیکند. و نکته جالب اگر با delay_us(1000); جایگزین کنیم برنامه کار میکند و watchdog میکرو را ریست می کنه!!! :angry:
    لطفا درباره این مورد اگر کسی تجربه ای داره منو راهنمائی کنه.

    #2
    پاسخ : اشکال در wathcdog

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

    دیدگاه


      #3
      پاسخ : اشکال در wathcdog

      بله دوست عزیز من نحوه کار watchdog را میدونم فقط میخواستم بدونم چرا وقتی برنامه توی یه while میفته کار میکنه ولی وقتی توی این while یک دستور delay_ms باشه دیگه واچ داگ کار نمیکنه!!!

      دیدگاه

      لطفا صبر کنید...
      X