سلام.
من میخوام از watchdog استفاده کنم. دیتاشیت MEGA88 رو مطالعه کردم . خودش یه مثال داره که اون رو تست کردم و جواب نمیده. خودم هم هر بلایی سرش میارم درست نمیشه. مشکل اینه که prescale تایمرش ست نمیشه و با حداکثر فرکانسش کار میکنه.:
[PHP]void WDT_Prescaler_Change(void)
{
__disable_interrupt();
__watchdog_reset();
/* Start timed sequence */
WDTCSR |= (1<<WDCE) | (1<<WDE);
/* Set new prescaler(time-out) value = 64K cycles (~0.5 s) */
WDTCSR = (1<<WDE) | (1<<WDP2) | (1<<WDP0);
__enable_interrupt();
}[/PHP]
اونطور که توی دیتاشیت نوشته شده برای اعمال هر تغییری در رجیستر WDTCSR باید ابتدا بطور همزمان دو بیت WDE و WDCE همزمان یک بشه. بعدش 4 کلاک فرصت داریم تا مقادیر دلخواه رو توی رجیستر بنویسیم. وقتی که مقادیر رو می نویسیم باید WDCE رو هم صفر کنیم.
در simulation و دیباگ میکروی واقعی، نتونستم prescale رو تغییر بدم.
ممنون میشم راهنمایی کنید