با سلام دوستان من یه مشکل عجیبی برخوردم لطفا یکی راهنمایی کند خیلی ممنون. مشکل اینه که:
من سرعت هسته آرم AT91sam7x256 را تنظیم کردم طبق دیتا شیت بعد در خروجی که بیشتر از چند کیلوهرتز نمیتونم خروجی بگیرم گذشته از این سرعت هسته هم از 10MHz بالاتر نمیره .
این مطالب رو هم اینطوری فهمیدم طبق دیتا شیت
AT91C_BASE_CKGR->CKGR_MOR = 0xF01;
AT91C_BASE_CKGR->CKGR_PLLR = 0x2703FF0;
AT91C_BASE_PMC->PMC_MCKR = 0x3;
AT91C_BASE_PMC->PMC_SCER = 0x1;
با این دستور باید 48MHz سرعت داشته باشم بالاترین سرعتی هم که تست کردم
AT91C_BASE_CKGR->CKGR_PLLR = 0x51E3FF0; که باید 100MHz سرعت بده بیشتر از اینم هنگ میکنه حالا برای یه تابع ساده مثل زیر
do{
j++;
} while(j<dlyus);;
که هر بار مرورش باید یه سیکل یا نهایتا دو سیکل طول بکشد باید برای 0.1 ثانیه حد اقل باید حدود 2,500,000 تکرار داشته باشم در صورتی که فقط با حدود 190000 بار تکرار تقریبا به این عدد میرسم که تقریبا 12 تا 40 برابر کمتره و اگه سر انگشتی حساب کتاب کنیم 48/12=4 یعنی سیستم باسرعت 4MHz داره کار میکنه خیلی ور رفتم دیگه هنگ کردم لطفا یکی راهنمایی کند. در ضمن روی پورت خروجی هم در حد چند کیلو هرتز که سیگنال ایجاد میکنی دیگه کار نمیکند . اونم خیلی ساده با برنامه زیر
من جایی را اشتباه رفتم یا آرم همینه خواهشا یکی راهنمایی کند
من سرعت هسته آرم AT91sam7x256 را تنظیم کردم طبق دیتا شیت بعد در خروجی که بیشتر از چند کیلوهرتز نمیتونم خروجی بگیرم گذشته از این سرعت هسته هم از 10MHz بالاتر نمیره .
این مطالب رو هم اینطوری فهمیدم طبق دیتا شیت
AT91C_BASE_CKGR->CKGR_MOR = 0xF01;
AT91C_BASE_CKGR->CKGR_PLLR = 0x2703FF0;
AT91C_BASE_PMC->PMC_MCKR = 0x3;
AT91C_BASE_PMC->PMC_SCER = 0x1;
با این دستور باید 48MHz سرعت داشته باشم بالاترین سرعتی هم که تست کردم
AT91C_BASE_CKGR->CKGR_PLLR = 0x51E3FF0; که باید 100MHz سرعت بده بیشتر از اینم هنگ میکنه حالا برای یه تابع ساده مثل زیر
do{
j++;
} while(j<dlyus);;
که هر بار مرورش باید یه سیکل یا نهایتا دو سیکل طول بکشد باید برای 0.1 ثانیه حد اقل باید حدود 2,500,000 تکرار داشته باشم در صورتی که فقط با حدود 190000 بار تکرار تقریبا به این عدد میرسم که تقریبا 12 تا 40 برابر کمتره و اگه سر انگشتی حساب کتاب کنیم 48/12=4 یعنی سیستم باسرعت 4MHz داره کار میکنه خیلی ور رفتم دیگه هنگ کردم لطفا یکی راهنمایی کند. در ضمن روی پورت خروجی هم در حد چند کیلو هرتز که سیگنال ایجاد میکنی دیگه کار نمیکند . اونم خیلی ساده با برنامه زیر
*AT91C_PIOA_SODR = 0x00000137; // PA.0 to be set
delay_us(100000);
*AT91C_PIOA_CODR = 0x00000137; // PA.0 to be cleared
delay_us(100000);
انجام میدم هیچ پیچیدگی هم در کار نیست از 7 یا 8 کیلو هرتز که بالا تر میره سرعت سیگنال پایه پورت خروجی PA0 هنگ میکنه دیگه سیگنال نمیده برای تست پایه هم از یه فرکانس متر تا 100 کیلوهرتزی استفاده کردم .delay_us(100000);
*AT91C_PIOA_CODR = 0x00000137; // PA.0 to be cleared
delay_us(100000);
من جایی را اشتباه رفتم یا آرم همینه خواهشا یکی راهنمایی کند
دیدگاه