اطلاعیه

Collapse
No announcement yet.

چرا این برنامه کار نمیکنه

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

    چرا این برنامه کار نمیکنه

    با سلام
    این برنامه ساده به منظور یادگیری تنظیم کلاک هست
    در این برنامه از pll استفاده شده ، ضریب آن 2 هست . سورس کلاک کریستال 16 مگاهرتزی هست. مقسم ها A=1 و B&C=2 هستن . چرا وقتی ضریب pll رو میبرم رو 8، میکرو از کار می افته؟
    فکر میکنم با این تنظیمات پریفرال 4=128000000 و پریفرال 2=64000000 و cpu =32000000 که همه قانونی هستن . چرا نمیشه؟
    [FONT=Yekan]#include <xmega128a1.h>[/FONT]#include <io.h>
    #include <delay.h>


    void clk_setting (void)
    {
    OSC.XOSCCTRL|=0Xc3;
    OSC.CTRL=0X08;
    while(!(OSC.STATUS&0X08));
    OSC.PLLCTRL=0XC8;
    OSC.CTRL|=0X10;
    while(!(OSC.STATUS&0X10));



    CCP=0XD8;
    CLK.CTRL=0X04;
    CCP=0XD8;
    CLK.PSCTRL=0X03;
    }




    void main (void)
    {
    clk_setting();
    PORTC.DIRSET=0xff;
    PORTB.DIRSET=PIN0_bm;
    PORTCFG.CLKEVOUT=0x01;






    while(1)
    {
    PORTC.OUTTGL=PIN3_bm;
    delay_ms(20);
    }


    [FONT=Yekan]}[/FONT]
    تیم کاوش در مسابقات بین المللی ایران اپن 2016.نمایشی.مین یاب.
    علم را باید در آزمایشگاه یاد گرفت نه در دانشگاه!

    #2
    پاسخ : چرا این برنامه کار نمیکنه

    بجای
    کد:
    OSC.CTRL=0X08;
    بنویسید
    کد:
    OSC.CTRL|=0X08;
    یا به شکل اصولی تر:
    کد:
    OSC.CTRL|=OSC_XOSCEN_bm;
    و مورد دیگر اینکه Prescaler را قبل از تغییر منبع کلاک تغییر دهید نه بعد از آن.
    اوژن: به معنای افکننده و شکست دهنده است
    دانایی، توانایی است-Knowledge is POWER
    برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
    وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
    قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
    اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
    ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

    دیدگاه


      #3
      پاسخ : چرا این برنامه کار نمیکنه

      ممنون از جوابتون استاد
      یعنی prescaler رو در اول تابع کلاک تعریف کنم ، مشکل prescaler رفع میشه؟
      تشکر
      تیم کاوش در مسابقات بین المللی ایران اپن 2016.نمایشی.مین یاب.
      علم را باید در آزمایشگاه یاد گرفت نه در دانشگاه!

      دیدگاه

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