سلاممممممممممممممممممم
من یه برنامه ساده برا تست تایمر واچ داگ نوشتم و میخوام 8 تا led متصل به PORTA به ترتیب روشن بشه و چون واچ داگ رو روی 0.5 ثانیه تنظیم کردم، و زمان بین روشن شدن هر LED هم 0.1 ثانیه هستش، و باید سر LED 5 ام میکرو ریست بشه و دوباره از LED اول میکرو LED ها رو روشن کنه و هی و هی و هی.... همن طور LED های 1 تا 5 روشن و خاموش میشن..............
ولی چرا برنامه واچ داگش کار نمیکنه و LED ها همین طور از اول تا آخر روشن و خاموش میشن(هم تو عمل و هم تو پروتئوس همین طور بود) ...انگار نه انگار که من از واچ داگ استفاده کردم
مشکل کار کجاس؟(دوستان اگه لطف کنن راهنمایی کنن، چون دارم یه مطلب مینویسم و این قسمت پروژش مشکل داره)
[code=c]#include <mega16.h>
#include <delay.h>
void WDT_Turn_on(void)
{
// Watchdog Timer initialization
// Watchdog Timer Prescaler: OSC/512k - 0.5(s)
WDTCR = (0<<WDTOE) | (1<<WDE) | (1<<WDP2) | (0<<WDP1) | (1<<WDP0);
}
void main(void)
{
int i;
DDRA = (1<<DDA7) | (1<<DDA6) | (1<<DDA5) | (1<<DDA4) | (1<<DDA3) | (1<<DDA2) | (1<<DDA1) | (1<<DDA0);
PORTA = (0<<PORTA7) | (0<<PORTA6) | (0<<PORTA5) | (0<<PORTA4) | (0<<PORTA3) | (0<<PORTA2) | (0<<PORTA1) | (0<<PORTA0);
WDT_Turn_on();
while (1)
{
for(i=1; i<=128; i*=2)
{
PORTA = i;
delay_ms(100);
}
//#asm("wdr" - MCUCSR |= (1<<WDRF); - WatchDog Reset
}
}
[/code]
اضافه شده در تاریخ :
خب یافتم، جواب مشکل تو راهنمای کدویژن نوشته شده....کلا این تابع دیلای دردسر همیشه
This function automatically resets the wtachdog timer every 1ms by generating the wdr instruction
تست میکنم و خبر میدم. ^_^
اضافه شده در تاریخ :
خب یه موردی که هستش این کد ویژن همچین مشکلی با DELAY_US نداره، ولی وقتی پروژه رو در عمل و در پروتئوس میبندی بازم میبینی که پروتئوس درست کار نمیکنه و این دلیل دیگه ای بر این که پروتئوس میکرو ها رو هم درست شبیه سازی نمیکنه.................بابا ولش کنید این پروتئوس رو(یکی بیاد به خودم یگه ^_^)----مطلب آموزشش رو مینویسم و فیلم و عکس و... رو تو یه مطلب میزارم و لینک رو اگه یادم بود میزارم اینجا، دوستان اگه تجربه ای دانسته ای ندانسته ای هر چی از واچ داگ میدونن بگن.....
من یه برنامه ساده برا تست تایمر واچ داگ نوشتم و میخوام 8 تا led متصل به PORTA به ترتیب روشن بشه و چون واچ داگ رو روی 0.5 ثانیه تنظیم کردم، و زمان بین روشن شدن هر LED هم 0.1 ثانیه هستش، و باید سر LED 5 ام میکرو ریست بشه و دوباره از LED اول میکرو LED ها رو روشن کنه و هی و هی و هی.... همن طور LED های 1 تا 5 روشن و خاموش میشن..............
ولی چرا برنامه واچ داگش کار نمیکنه و LED ها همین طور از اول تا آخر روشن و خاموش میشن(هم تو عمل و هم تو پروتئوس همین طور بود) ...انگار نه انگار که من از واچ داگ استفاده کردم
مشکل کار کجاس؟(دوستان اگه لطف کنن راهنمایی کنن، چون دارم یه مطلب مینویسم و این قسمت پروژش مشکل داره)
[code=c]#include <mega16.h>
#include <delay.h>
void WDT_Turn_on(void)
{
// Watchdog Timer initialization
// Watchdog Timer Prescaler: OSC/512k - 0.5(s)
WDTCR = (0<<WDTOE) | (1<<WDE) | (1<<WDP2) | (0<<WDP1) | (1<<WDP0);
}
void main(void)
{
int i;
DDRA = (1<<DDA7) | (1<<DDA6) | (1<<DDA5) | (1<<DDA4) | (1<<DDA3) | (1<<DDA2) | (1<<DDA1) | (1<<DDA0);
PORTA = (0<<PORTA7) | (0<<PORTA6) | (0<<PORTA5) | (0<<PORTA4) | (0<<PORTA3) | (0<<PORTA2) | (0<<PORTA1) | (0<<PORTA0);
WDT_Turn_on();
while (1)
{
for(i=1; i<=128; i*=2)
{
PORTA = i;
delay_ms(100);
}
//#asm("wdr" - MCUCSR |= (1<<WDRF); - WatchDog Reset
}
}
[/code]
اضافه شده در تاریخ :
خب یافتم، جواب مشکل تو راهنمای کدویژن نوشته شده....کلا این تابع دیلای دردسر همیشه
This function automatically resets the wtachdog timer every 1ms by generating the wdr instruction
تست میکنم و خبر میدم. ^_^
اضافه شده در تاریخ :
خب یه موردی که هستش این کد ویژن همچین مشکلی با DELAY_US نداره، ولی وقتی پروژه رو در عمل و در پروتئوس میبندی بازم میبینی که پروتئوس درست کار نمیکنه و این دلیل دیگه ای بر این که پروتئوس میکرو ها رو هم درست شبیه سازی نمیکنه.................بابا ولش کنید این پروتئوس رو(یکی بیاد به خودم یگه ^_^)----مطلب آموزشش رو مینویسم و فیلم و عکس و... رو تو یه مطلب میزارم و لینک رو اگه یادم بود میزارم اینجا، دوستان اگه تجربه ای دانسته ای ندانسته ای هر چی از واچ داگ میدونن بگن.....
دیدگاه