اطلاعیه

Collapse
No announcement yet.

تنظیم منابع کلاک در XMEGA

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

    #31
    پاسخ : تنظیم منابع کلاک در XMEGA

    نوشته اصلی توسط حامد رحیمی
    سوالی که برای بنده پیش امده
    فرض بر اینکه برنامه در دو فرکانس اجرا میشود
    فرکانس حلقه اول 2 مگا و حلقه دوم 32 مگا عملا چون فرکانس تغیر میکند لایب Delay.h
    به درد نخور خواهد شد
    سوال خوبی را مطرح کردید. در مراجعات بعدی به انجمن در این مورد به شما پاسخ خواهم داد.
    اوژن: به معنای افکننده و شکست دهنده است
    دانایی، توانایی است-Knowledge is POWER
    برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
    وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
    قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
    اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
    ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

    دیدگاه


      #32
      پاسخ : تنظیم منابع کلاک در XMEGA

      برای این مورد میشه کار های زیادی انجام داد.
      مثلا:
      کتابخانه به نحوی تغییر داده شود که فرکانس جدید در هر کجا قابل تعیین باشد مثل:

      کد:
      delay_init(32);
      delay_init(2);

      که بعد از دستورات بالا هر جا تاخیر بر حسب میلی ثانیه یا .......... لازم باشد بر حسب فرکانس تعیین شده عمل می نماید.

      یا توابع تعیین تاخیر با نامهای مختلف در برنامه ایجاد شود که هر کدام مربوط به فرکانس کاری مورد نظر باشد

      و روش های دیگر.
      دکتر شريعتي:

      زنده بودن را به بيداري بگذرانيم که سالها به اجبار خواهيم خفت.

      دیدگاه


        #33
        پاسخ : تنظیم منابع کلاک در XMEGA

        با تشکر من لایب deley.h موجود در atmel studio رو باز و مطالعه کردم متاسفانه نتونستم اطلاعاتی رو بده دست بیارم
        سوالات زیادی در مورد سویچ فرکانس واسم مبهمه
        اول از همه اینکه در مورد اور کردن
        اولین و حساس ترین قسمتی که ممکنه تویی اور کلاک از کار بیفته کدوم قسمت سخت افزاریه ؟
        یا اینکه سویچ فرکانس چند سیکل کاری طول کشیده و ایا cpu بدون کلاک میماند ؟
        [move][img width=133 height=100]http://bargiri.persiangig.com/aks/0.306310001356499787_taknaz_ir.gif[/img][/move]

        دیدگاه


          #34
          پاسخ : پاسخ : تنظیم منابع کلاک در XMEGA

          نوشته اصلی توسط طراح
          برای فعال سازی PLL هم فرکانس دقیق کریستال را ذکر کنید
          در مورد کریستال خوب نمیدونم کریستال چند مگاهرتز قرار بدم . نظر شما چیه ؟ برای من مهم سرعت میکرو هست که 32mhz یا بیشتر را بدهد . حالا کریستال خارجی هر فرکانسی داشته باشه مهم نیست .
          در مورد تذکرتون هم ممنونم.

          دیدگاه


            #35
            پاسخ : پاسخ : تنظیم منابع کلاک در XMEGA

            نوشته اصلی توسط negar_b
            در مورد کریستال خوب نمیدونم کریستال چند مگاهرتز قرار بدم . نظر شما چیه ؟ برای من مهم سرعت میکرو هست که 32mhz یا بیشتر را بدهد . حالا کریستال خارجی هر فرکانسی داشته باشه مهم نیست .
            در مورد تذکرتون هم ممنونم.
            ضریب pll
            2تا 31 برابر است
            1*31=31 mhz
            2*16=32 mhz
            [move][img width=133 height=100]http://bargiri.persiangig.com/aks/0.306310001356499787_taknaz_ir.gif[/img][/move]

            دیدگاه


              #36
              پاسخ : تنظیم منابع کلاک در XMEGA

              با تشکر از پاسخ شما
              با قرار دادن کریستال 16 مگ خارجی و همچنین کد زیر به نتیجه مطلوب رسیدم:
              Config Osc = Disabled , Extosc = Enabled , Range = 12mhz_16mhz , Startup = Xtal_256clk
              Config Sysclock = External , Prescalea = 1 , Prescalebc = 1_1
              Osc_xoscctrl = 203
              Osc_ctrl = 9
              Clk_psctrl = 0
              Osc_pllctrl = 194
              Waitms 1
              Osc_ctrl = 31
              Waitms 1
              Cpu_ccp = 216
              Clk_ctrl = 4

              دیدگاه


                #37
                پاسخ : تنظیم منابع کلاک در XMEGA

                نوشته اصلی توسط حامد رحیمی
                سوالی که برای بنده پیش امده
                فرض بر اینکه برنامه در دو فرکانس اجرا میشود
                فرکانس حلقه اول 2 مگا و حلقه دوم 32 مگا عملا چون فرکانس تغیر میکند لایب Delay.h
                به درد نخور خواهد شد
                توابعی مانند delay_ms_ و delay_us_ امکان پذیرش آرگومان متغیر را دارند. بنابراین می توانید مقدار ورودی به تابع را بصورت حاصلضرب یک متغیر n در زمان مورد نظر خود در نظر بگیرید و همچنین در define انجام شده برای تنظیم فرکانس، کمترین مقدار فرکانس را قراردهید. حال در مراحل مختلف برنامه و زمانی که فرکانس کلاک تغییر می کند می توانید مقدار n را به همان نسبت تغییر دهید و در کمترین فرکانس هم n=1 خواهد بود.
                اوژن: به معنای افکننده و شکست دهنده است
                دانایی، توانایی است-Knowledge is POWER
                برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
                وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
                قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
                اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
                ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

                دیدگاه


                  #38
                  پاسخ : تنظیم منابع کلاک در XMEGA

                  سلام
                  لطفا در مورد تنظیم کریستال خارجی با کدویژن هم توضیح بدید.
                  من هر کاری مینم بر میگرده روی 2 مگ داخلی.

                  دیدگاه


                    #39
                    پاسخ : تنظیم منابع کلاک در XMEGA

                    در تنظیم منبع کلاک از طریق رجیسترها، فرقی بین کدویژن و سایر کامپایلرها نیست و در مورد جزئیات این مقداردهی در پست های ابتدای تاپیک توضیح داده شده است.
                    اوژن: به معنای افکننده و شکست دهنده است
                    دانایی، توانایی است-Knowledge is POWER
                    برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
                    وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
                    قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
                    اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
                    ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

                    دیدگاه


                      #40
                      پاسخ : تنظیم منابع کلاک در XMEGA

                      سلام
                      کسی تا حالا با کدویزارد کریستال خارجی رو تنظیم کرده من هر کاری میکنم جواب نمیده.
                      برای pll هم مشکل دارم.
                      لطفا راهنمایی کنید.

                      دیدگاه


                        #41
                        پاسخ : تنظیم منابع کلاک در XMEGA

                        در توضیح سوال خود مواردی مانند فرکانس کریستال (که در نوع کد نوشته شده تفاوت ایجاد می کند) و نمونه کدی که از آن جواب نگرفته اید و همچنین برای pll ضریب تقویت مورد نظر و منبع کلاک تامین کننده آن را تعیین کنید.
                        اوژن: به معنای افکننده و شکست دهنده است
                        دانایی، توانایی است-Knowledge is POWER
                        برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
                        وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
                        قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
                        اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
                        ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

                        دیدگاه


                          #42
                          پاسخ : تنظیم منابع کلاک در XMEGA

                          سلام.ایا در xmega این امکان وجود داره که فرکانس کار رو مثلا در 32 مگ تنظیم کرد (یعنی دستورات با این سرعت اجرا بشن) و یک فرکانس متفاوت مثلا 2 مگ یا 48 مگ رو به صورت CLKOUT در خروجی یک پین بوجود اورد؟ :-/

                          دیدگاه


                            #43
                            پاسخ : تنظیم منابع کلاک در XMEGA

                            برای فرکانس های کمتر از فرکانس کلاک cpu به چند روش می توانید عمل کنید:

                            1- قرار دادن گزینه ClkPER/2^M به عنوان ورودی Event و هدایت آن روی پین های PC7 یا PD7 یا PE7 (و همچنین PC4 یا PD4 یا PE4 در سری AU)
                            2- قرار دادن یکی از تایمرها به عنوان منبع Event و عمل کردن مانند مرحله قبل.
                            3- استفاده از خروجی های PWM در مد Frequency generation

                            برای ایجاد فرکانسی بالاتر از کلاک cpu موردی که اکنون به نظرم می رسد، امکان ظاهر کردن فرکانس های ClkPER2 با فرکانس دو برابر و یا ClkPER4 با فرکانس 4 برابر کلاک cpu در سری AU روی پین های ذکر شده در بند 1 است.
                            اوژن: به معنای افکننده و شکست دهنده است
                            دانایی، توانایی است-Knowledge is POWER
                            برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
                            وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
                            قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
                            اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
                            ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

                            دیدگاه


                              #44
                              پاسخ : تنظیم منابع کلاک در XMEGA

                              من با این کد که خود کدویزارد ساخت جواب نگرفتم.
                              pll فرکانس کریستال خارجی 11.0592 و pll ضرب در 2
                              حتی کریستال خارجی رو هم که گذاشتم جواب نداد.

                              کد:
                              // System Clocks initialization
                              void system_clocks_init(void)
                              {
                              unsigned char n,s;
                              
                              // Optimize for speed
                              #pragma optsize- 
                              // Save interrupts enabled/disabled state
                              s=SREG;
                              // Disable interrupts
                              #asm("cli")
                              
                              // External 11059.200 kHz clock source on XTAL1 initialization
                              OSC.XOSCCTRL=OSC_XOSCSEL_EXTCLK_gc;
                              // Enable the external clock source
                              OSC.CTRL|=OSC_XOSCEN_bm;
                              
                              // System Clock prescaler A division factor: 1
                              // System Clock prescalers B & C division factors: B:1, C:1
                              // ClkPer4: 22118.400 kHz
                              // ClkPer2: 22118.400 kHz
                              // ClkPer: 22118.400 kHz
                              // ClkCPU: 22118.400 kHz
                              n=(CLK.PSCTRL & (~(CLK_PSADIV_gm | CLK_PSBCDIV1_bm | CLK_PSBCDIV0_bm))) |
                              	CLK_PSADIV_1_gc | CLK_PSBCDIV_1_1_gc;
                              CCP=CCP_IOREG_gc;
                              CLK.PSCTRL=n;
                              
                              // PLL initialization
                              // PLL clock cource: External Osc. or Clock
                              // PLL multiplication factor: 2
                              // PLL frequency: 22.118400 MHz
                              // Set the PLL clock source and multiplication factor
                              n=(OSC.PLLCTRL & (~(OSC_PLLSRC_gm | OSC_PLLFAC_gm))) |
                              	OSC_PLLSRC_XOSC_gc | 2;
                              CCP=CCP_IOREG_gc;
                              OSC.PLLCTRL=n;
                              // Enable the PLL
                              OSC.CTRL|=OSC_PLLEN_bm;
                              
                              // System Clock prescaler A division factor: 1
                              // System Clock prescalers B & C division factors: B:1, C:1
                              // ClkPer4: 22118.400 kHz
                              // ClkPer2: 22118.400 kHz
                              // ClkPer: 22118.400 kHz
                              // ClkCPU: 22118.400 kHz
                              n=(CLK.PSCTRL & (~(CLK_PSADIV_gm | CLK_PSBCDIV1_bm | CLK_PSBCDIV0_bm))) |
                              	CLK_PSADIV_1_gc | CLK_PSBCDIV_1_1_gc;
                              CCP=CCP_IOREG_gc;
                              CLK.PSCTRL=n;
                              
                              // Wait for the PLL to stabilize
                              while ((OSC.STATUS & OSC_PLLRDY_bm)==0);
                              
                              // Select the system clock source: Phase Locked Loop
                              n=(CLK.CTRL & (~CLK_SCLKSEL_gm)) | CLK_SCLKSEL_PLL_gc;
                              CCP=CCP_IOREG_gc;
                              CLK.CTRL=n;
                              
                              // Disable the unused oscillators: 2 MHz, 32 MHz, internal 32 kHz
                              OSC.CTRL&= ~(OSC_RC2MEN_bm | OSC_RC32MEN_bm | OSC_RC32KEN_bm);
                              
                              // Peripheral Clock output: Disabled
                              PORTCFG.CLKEVOUT=(PORTCFG.CLKEVOUT & (~PORTCFG_CLKOUT_gm)) | PORTCFG_CLKOUT_OFF_gc;
                              
                              // Restore interrupts enabled/disabled state
                              SREG=s;
                              // Restore optimization for size if needed
                              #pragma optsize_default
                              }

                              دیدگاه


                                #45
                                پاسخ : تنظیم منابع کلاک در XMEGA

                                کدی که قرار داده اید برای فعال کردن کریستال خارجی نیست. بلکه برای اعمال کلاک خارجی نوشته شده است. برای کریستال 11.059 مگاهرتز، بجای خط زیر:

                                کد:
                                OSC.XOSCCTRL=OSC_XOSCSEL_EXTCLK_gc;


                                باید نوشته شود:

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

                                دیدگاه

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