با سلام به همه دوستان
من تایمر wd رو با استفاده از یک تابع بصورت زیر روی حالت 2.2 ثانیه تنظیم کردم
در هر جای برنامه که لازم باشه تایمر رو ریست می کنم با دستور #asm("WDR"
حالا مشکل اینجاست که در زمانی که نباید میکرو ریست بشه تایمر سگ نگهبان عمل می کنه
یعنی میکرو داره به درستی کار می کنه ولی wd اون رو ریست می کنه
دقیقا در زمانی کمتر از 2.2 ثانیه !!!!
برای مثال من کد زیر رو نوشتم ولی میکرو دائما توسط wd ریست میشه و حتی چیزی رو هم روی lcd نشون نمیدهد
لطفا راهنمایی بفرمائید
من تایمر wd رو با استفاده از یک تابع بصورت زیر روی حالت 2.2 ثانیه تنظیم کردم
کد:
void watchdog_on(void){ WDTCR=0x0F;; } void watchdog_off(void){ WDTCR=0X18; WDTCR=0X00; }

حالا مشکل اینجاست که در زمانی که نباید میکرو ریست بشه تایمر سگ نگهبان عمل می کنه
یعنی میکرو داره به درستی کار می کنه ولی wd اون رو ریست می کنه
دقیقا در زمانی کمتر از 2.2 ثانیه !!!!
برای مثال من کد زیر رو نوشتم ولی میکرو دائما توسط wd ریست میشه و حتی چیزی رو هم روی lcd نشون نمیدهد
کد:
watchdog_on(); #asm("WDR") gm_flag=4; if (ini_flag!=1) initialize(); #asm("WDR") lcd_clear(); lcd_gotoxy(0,0); lcd_putsf("main"); delay_ms(500); #asm("WDR")
دیدگاه