نوشته اصلی توسط
farzadsw
درضمن برای استفاده از رجیستر های سریع (FIO ) باید تو رجیستر SCS مشخص کنید که واحد GPIO از حالت سریع استفاده کنه (مقدار بیتش 1 تنظیم بشه)
در برنامه تایمر که به ساده ترین صورت نوشته شده این تنظیم SCS=1 را انجام داده ام. بذارید این برنامه ساده را بذارم:
کد:
int main(){
SCS=1;
//timer0 setting
T0CTCR=0; // set T/C for Timer
T0PR=0; // no prescale
T0MR0=1;
T0MCR=2; //when T0MR0 is match with T0TC,reset counter(T0TC)
T0EMR=0x30; //when T0MR0 is match with T0TC,toggle MAT0.0
//LEDs setting
PINSEL3=0x3000000; //P1.28
//main loop
while(1){
T0TCR=2;
T0TCR=1; // reset counter , disable counter
while(1){
}
}
}
تنظیمات pllحداکثری هم تا حالا n بار گفتم. خوب همان طور که ملاحظه می کنید ما از همان ابتدا خروجی را در حالت سریع می گذاشتیم. با این اوصاف بیشتر از 2.5 مگ بهمون نمیده. حتی با این دستور هم بیشتر از 4 مگ بهمون نمی ده:
کد:
while(1){
set_led1;
set_led2;
clr_led1;
}
set_led2 برای اینه که یه زمانی کوتاه بگذره بعدled1 ریست بشه. البته ما می خواهیم از مد سخت افزاری استفاده کنیم.
حالا با این مطالب گفته شده برای استفاده از حالت سریع که عنوان کردید، تنظیم دیگری هست که از قلم افتاده؟
با تشکر