اطلاعیه

Collapse
No announcement yet.

نمایش مقدار فرکانس کاری at91sam7x256

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    نمایش مقدار فرکانس کاری at91sam7x256

    سلام :smile:
    چطور میشه مقدار فرکانسی رو که میکرو در حال کار در اون فرکانس هست رو فهمید یا به عبارتی با کدهای نوشته شده وتغییرات اعمال شده فرکانس فعلی میکرو چقدره؟ :surprised:

    #2
    پاسخ : نمایش مقدار فرکانس کاری at91sam7x256

    سلام
    مقدار فرکانس کاری میکرو را باید با توجه به تنظیم رجیسترها متوجه شد که در چه فرکانسی تنظیم کرده اید. اما می شود به صورت سخت افزار یک واحد داخلی میکرو که به فرکانس اصلی وابسته است را راه اندازی کرد و سیگنال خروجی را از آن دریافت کرد و بوسیله اسکوپ مقدار فرکانس را خواند.
    مثلا در برنامه زیر میکرو را در فرکانس 48M تنظیم کرده ایم و واحد PWM0 را راه اندازی کردیم و با توجه به فرمول های PWM فرکانس خروجی که PWM می دهد نصف فرکانس کاری میکرو می باشد یعنی 24M که از پایه PB19 می توان آنرا را با اسکوپ اندازه گرفت.


    کد:
    #include <Atmel/ioat91sam7x256.h>
    void main ()
    {
    //--------------------start up--------------------------
    AT91C_BASE_WDTC->WDTC_WDMR = AT91C_WDTC_WDDIS; // AT91C_WDTC_WDDIS=(1<<15)
    AT91C_BASE_RSTC->RSTC_RMR=0xA5000001;
    //--------------------speed up--------------------------
    AT91C_BASE_CKGR->CKGR_MOR = 0xF01;
    AT91C_BASE_CKGR->CKGR_PLLR = 0x2903FFC; 
    AT91C_BASE_PMC->PMC_MCKR = 0x3;
    AT91C_BASE_PMC->PMC_SCER = 0x1;
    //-----------------------------------------------------
    AT91C_BASE_PMC->PMC_PCER = (1<<AT91C_ID_PWMC); // AT91C_ID_PWMC=10
    //-----------------------------------------------------
    AT91C_BASE_PIOB->PIO_PDR = (1<<19);
    AT91C_BASE_PIOB->PIO_MDER = (1<<19);
    AT91C_BASE_PIOB->PIO_ASR = (1<<19);   
    AT91C_BASE_PWMC_CH0->PWMC_CMR = 0x200;   
    AT91C_BASE_PWMC_CH0->PWMC_CPRDR = 2;
    AT91C_BASE_PWMC_CH0->PWMC_CDTYR = 1;
    AT91C_BASE_PWMC->PWMC_ENA = 1;
    while(1); 
    }

    خوب در برنامه بالا تنظیم رجیسترها را انجام داده ایم و نتیجه را می دانیم که چه فرکانسی باید میکرو داشته باشد. اما اگر تنظیم رجیسترها را خودتان انجام نداده اید و می خواهید ببینید فرکانس میکرو چقدر است فقط کافی است برنامه زیر را در تابع main() خود بنویسید و فرکانس پایه PB19 را اندازه گیری کنید و آنرا در 2 ضرب کنید تا مقدار فرکانس کاری میکرو را بدست آورید.

    کد:
    AT91C_BASE_PMC->PMC_PCER = (1<<AT91C_ID_PWMC); // AT91C_ID_PWMC=10
    AT91C_BASE_PIOB->PIO_PDR = (1<<19);
    AT91C_BASE_PIOB->PIO_MDER = (1<<19);
    AT91C_BASE_PIOB->PIO_ASR = (1<<19);   
    AT91C_BASE_PWMC_CH0->PWMC_CMR = 0x200;   
    AT91C_BASE_PWMC_CH0->PWMC_CPRDR = 2;
    AT91C_BASE_PWMC_CH0->PWMC_CDTYR = 1;
    AT91C_BASE_PWMC->PWMC_ENA = 1;

    دیدگاه

    لطفا صبر کنید...
    X