سلام
من با AT91SAM7X256 کار میکنم
و با کامپایلر IAR
می خواهم یه تابع تاخیر بنویسم(یه چیزی مثل تابع کتابخونه AVR-GCC)
من با استفاده از دستورات زیر کلاک میکرو را روی 48 مگا هرتز تنطیم میکنم
بعد می خواهم یک تاخیر فرضا 1 ثانیه ایجاد کنم
پس تابعی به این صورت می نویسم :nerd:
ولی این تاخیر خیلی کمتر از 1 ثانیه است
من با نوشتم کد زیر حدود 0.2 ثانیه تاخیر میگیرم
چرا ؟
کجای کار من اشتباه است؟
من با AT91SAM7X256 کار میکنم
و با کامپایلر IAR
می خواهم یه تابع تاخیر بنویسم(یه چیزی مثل تابع کتابخونه AVR-GCC)
من با استفاده از دستورات زیر کلاک میکرو را روی 48 مگا هرتز تنطیم میکنم
کد:
*AT91C_CKGR_MOR = 0xF01; *AT91C_CKGR_PLLR = 0x2903FFC; *AT91C_PMC_MCKR = 0x3; *AT91C_PMC_SCER = 0x1;
پس تابعی به این صورت می نویسم :nerd:
کد:
void delay(void){ unsigned long m , n; unsigned long MCKLCD=48054857; for (m=0;m <MCKLCD;m++); }
من با نوشتم کد زیر حدود 0.2 ثانیه تاخیر میگیرم
کد:
void delay(void){ unsigned long m , n; for (n=0;n<1000000;n++) for (m=0;m <MCKLCD;m++); }
کجای کار من اشتباه است؟
دیدگاه