اطلاعیه

Collapse
No announcement yet.

مشکل در سرعت PIO در ARM9 اتمل AT91SAM9x512

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

    مشکل در سرعت PIO در ARM9 اتمل AT91SAM9x512


    سلام

    من در حال کار با برد AT91SAM9x-512 با نرم افزار IAR می باشم. من میخوام با PIO ها با سرعت حداقل 10MHz کار کنم ولی متاسفانه با داشتن برنامه زیر سرعت toggle در پورت زیر 1MHz است.

    void main()
    {
    unsigned char test2=0;
    // Initialize main oscillator
    //---------------------------
    AT91C_BASE_PMC->PMC_MOR = BOARD_OSCOUNT | AT91C_CKGR_MOSCEN;
    while (!(AT91C_BASE_PMC->PMC_SR & AT91C_PMC_MOSCS));

    // Initialize PLLA at 200MHz (198.656)
    AT91C_BASE_PMC->PMC_PLLAR = BOARD_CKGR_PLLA
    | BOARD_PLLACOUNT
    | BOARD_MULA
    | BOARD_DIVA;
    while (!(AT91C_BASE_PMC->PMC_SR & AT91C_PMC_LOCKA));

    // Initialize PLLB for USB usage (if not already locked)
    // if (!(AT91C_BASE_PMC->PMC_SR & AT91C_PMC_LOCKB))
    {
    AT91C_BASE_PMC->PMC_PLLBR = BOARD_USBDIV
    | BOARD_CKGR_PLLB
    | BOARD_PLLBCOUNT
    | BOARD_MULB
    | BOARD_DIVB;
    while (!(AT91C_BASE_PMC->PMC_SR & AT91C_PMC_LOCKB));
    }

    // Wait for the master clock if it was already initialized
    while (!(AT91C_BASE_PMC->PMC_SR & AT91C_PMC_MCKRDY));

    // Switch to fast clock
    //---------------------
    // Switch to main oscillator + prescaler
    AT91C_BASE_PMC->PMC_MCKR = BOARD_PRESCALER;
    while (!(AT91C_BASE_PMC->PMC_SR & AT91C_PMC_MCKRDY));

    // Switch to PLL + prescaler
    AT91C_BASE_PMC->PMC_MCKR |= AT91C_PMC_CSS_PLLA_CLK;
    while (!(AT91C_BASE_PMC->PMC_SR & AT91C_PMC_MCKRDY));

    ///-------PIO Configuration

    AT91C_BASE_PIOC->PIO_OER = 1 << AT91C_PIO_PC30;
    AT91C_BASE_PIOC->PIO_PER = 1 << AT91C_PIO_PC30;
    AT91C_BASE_PMC->PMC_PCER = 1 << AT91C_ID_PIOC;

    while(1)
    {
    if(test2 == 0)
    {
    AT91C_BASE_PIOC->PIO_SODR = AT91C_PIO_PC30;
    test2 = 1;
    }
    else if(test2 == 1)
    {
    AT91C_BASE_PIOC->PIO_CODR = AT91C_PIO_PC30;
    test2 = 0;
    }
    }


    موضوعی که هست اینه که من برنامه مربوط به NAND FLASH همراه برد را که روی چیپ میریزم روی بعضی از پایه های NANAFLAS (که در این شرایط در مد peripheral است] از طرف پروسسور پالس 40M ایجاد میشه در حالی که در مد IO سرعت خیلی پائین تره.
    حدس من اینه که سرعت باس APB در این نوع پروسسور که بیشتر کاربرد نصب ویندوز داره کم هست . نظر دوستان دیگه چیه؟

    #2
    پاسخ : مشکل در سرعت PIO در ARM9 اتمل AT91SAM9x512

    چرا از تایمر استفاده نمی کنی؟ تو لوپ انداختن دستورات زمانبندیه درستی به شما نمی ده !
    یه تایمر با فرکانس مناسب بساز که با فرکانس 10MHZ وقفه بده ! فقط چون برکانس وقفه بالاست تو زمانی که وقفه نمیده خودتو برای اون آماده کن که تا وقفه زد با یه دستور از وقفه در بیاد چون وقتت کمه!
    بعد یه مسئله دیگه دستوراتتو ساده بنویس 10MHz زمان کمیو واسه تصمیمگیری میذاره !

    اگه خروجیت یه آرایش منظم داره اصلا از خروجی های تایمر استفاده کن که کلا سخت افزاریه!

    دیدگاه


      #3
      پاسخ : مشکل در سرعت PIO در ARM9 اتمل AT91SAM9x512

      سلام

      ممنون از پاسخ شما.

      مشکل من چیز دیگه ایه. من یه پروژه نسبتا جامع دارم با این پروسسور انجام میدم و اول کار در واقع برای زمان بندی از تایمر استفاده کردم. ولی با توجه به اینکه به اون چیزی که میخواستم نرسیدم، تصمیم گرفتم یه برنامه ساده را تست کنم که الان تو پست اول گذاشته بودم. من عملا همه تیکه های برنامه را حذف کردم و فقط میخواستم ببینم که اگر تو main یک پین را toggle کنم به چه سرعتی میرسم که با یه موضوع باور نکردنی روبرو شدم و اون هم فرکانس زیر یک مگا در خروجیه. بر همین اساس من اول به این شک کردم که نکنه pllA که فرکانس پروسسور و mck را فراهم میکنه درست تنظیم نشده و اومدم یک تایمر را با تنظیم اینکه فرکانس ورودیش 10M باشه طوری Config کردم که با فرکانس مثلا 10k وارد روتین وقفه بشم و در روتین وقفه با toggle کردن یک پین این فرکانس را با اسکوپ در خروجی پایه دیدم. در کمال ناباوری با بالا بردن سرعت وقفه تایمر به بالای 200-300 کیلوهرتز عملا دیدم که تایمر نمیتونه با سرعت بالاتر وقفه بخوره. به همین دلیل گفتم نکنه باس Apb مشکلی داره چون عملا این نوع پروسسور بیشتر برای نصب سیستم عامل هست و نیاز داره که سرعت USB Host، Ethernet و حافظه های جانبیش قوی باشه که هست و شاید مثل یک pc نیازی به سرعت بالا در باس APB نداره

      دیدگاه

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