اطلاعیه

Collapse
No announcement yet.

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

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

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

    ببخشید دیر جواب دادم سرم شلوغ بود
    با عرض پوزش فراوان به خاطر اشتباه در مقدار فرکانس xmega=200mhz
    توضیح:فرکانس نوسان ساز در xmega قبل از ضرب شدن در pll تقسیم بر 4 میشود (32mhz/4=8mhz) واین موردی بود که در نظر نگرفته بودم در ولتاژ 3.3v تا 64MHZ PLL=8 در ولتاژ 3.6v تا PLL=9 72mhz قابل افزایش میباشد میکرو در فرکانس 72mhz کمی گرم میکند ولی مشکلی پیش نیامده وبه کار خود ادامه میدهد
    با توجه به اینکه خروجی PWM تا یک چهارم فرکانس مرجع قابل افزایش میباشد در فرکانس 64MHZ تونستم LCD رو درایو کنم ولی از CF نشد استفاده کنم از NAND های samsong استفاده کردم سرعت نمایش برای فیلم دیدن کافی نیست

    دیدگاه


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

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

      دیدگاه


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

        سلام
        این کد واسه راه اندازی 32 مگاهرتز داخلی xmega درسته ؟

        void init_main_clock_pll() {
        OSC.XOSCCTRL |= OSC_FRQRANGE_2TO9_gc |OSC_XOSCSEL_XTAL_256CLK_gc;
        OSC.CTRL |= OSC_XOSCEN_bm;
        do {
        ;
        } while (!(OSC.STATUS & OSC_XOSCRDY_bm)); // now ext oscillator ready
        CCP = CCP_IOREG_gc;
        CLK.CTRL = CLK_SCLKSEL_XOSC_gc; // 0x03 now sys clocked ext osc, for you 8Mhz
        CCP = CCP_IOREG_gc;
        CLK.PSCTRL = CLK_PSADIV_1_gc | CLK_PSBCDIV_1_2_gc; // setup clk prescalers
        OSC.CTRL &= OSC_RC2MEN_bm;// stop internal osc 2Mhz
        OSC.PLLCTRL = OSC_PLLSRC_XOSC_gc | ((0x08 & OSC_PLLFAC_gm) << OSC_PLLFAC_gp); // setup pll
        OSC.CTRL |= OSC_PLLEN_bm; //
        do {
        ;
        } while (!(OSC.STATUS & OSC_PLLRDY_bm)); // now pll ready
        CCP = CCP_IOREG_gc;
        CLK.CTRL = CLK_SCLKSEL_PLL_gc; // now sys clocked from pll
        OSC.CTRL &= OSC_XOSCEN_bm;
        }

        دیدگاه


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

          راه اندازی 32 مگاهرتز داخلی:

          کد:
          OSC_CTRL|=OSC_RC32MEN_bm;
           while(!(OSC_STATUS & OSC_RC32MRDY_bm));
           CCP = CCP_IOREG_gc;
           CLK_CTRL=CLK_SCLKSEL_RC32M_gc;
          اوژن: به معنای افکننده و شکست دهنده است
          دانایی، توانایی است-Knowledge is POWER
          برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
          وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
          قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
          اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
          ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

          دیدگاه


            #20
            کریستال خارجی

            سلام
            من میخواهم از کریستال خارجی در xmega استفاده کنم و سرعت 32mhz یا بیشتر را هم به من بده چه کار باید بکنم؟ (بسکام)
            سوال دیگر اینکه استفاده از کریستال داخلی 32mhz به طور دایم مشکلی ندارد؟

            دیدگاه


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

              استاد دستور
              _delay_ms(1000);
              زمان کمی ایجاد میکنه

              Warning 3 "F_CPU" redefined [enabled by default]
              این اخطار هم میده مشکل کجاست ؟
              [move][img width=133 height=100]http://bargiri.persiangig.com/aks/0.306310001356499787_taknaz_ir.gif[/img][/move]

              دیدگاه


                #22
                پاسخ : کریستال خارجی

                نوشته اصلی توسط negar_b
                من میخواهم از کریستال خارجی در xmega استفاده کنم و سرعت 32mhz یا بیشتر را هم به من بده چه کار باید بکنم؟ (بسکام)
                سوال دیگر اینکه استفاده از کریستال داخلی 32mhz به طور دایم مشکلی ندارد؟
                باید کریستال مورد نظر را به پین های مربوطه متصل کنید و PLL را هم با ضریب مناسب فعال کنید و اسیلاتور کریستالی را به عنوان ورودی PLL قرار دهید و در نهایت PLLبه عنوان منبع کلاک انتخاب شود. در دستورات بسکام به این منظور دو دستور CONFIG OSC و CONFIG SYSCLOCK وجود دارد که در توضیح آن ندیدم که امکان تعریف ضریب PLL یا اعمال خروجی اسیلاتور کریستالی به ورودی PLL وجود داشته باشد. به نظر می رسد در این رابطه باید از مقدار دهی مستقیم به رجیسترها استفاده شود.

                نوشته اصلی توسط حامد رحیمی
                استاد دستور
                _delay_ms(1000);
                زمان کمی ایجاد میکنه

                Warning 3 "F_CPU" redefined [enabled by default]
                این اخطار هم میده مشکل کجاست ؟
                سوال شما در مورد کدام نمونه کد است؟
                اوژن: به معنای افکننده و شکست دهنده است
                دانایی، توانایی است-Knowledge is POWER
                برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
                وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
                قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
                اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
                ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

                دیدگاه


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

                  پس از قرار معلوم باید از کریستال داخلی استفاده کنم . کریستال داخلی در بلند مدت مشکل ساز نیست؟

                  دیدگاه


                    #24
                    پاسخ : پاسخ : کریستال خارجی

                    نوشته اصلی توسط طراح

                    سوال شما در مورد کدام نمونه کد است؟
                    من کدی که شما زحمتش رو کشیدین که فرکانس کاری رو روی 32 مگ داخلی تنظیم میکنه مشکل دارم
                    دستور
                    _delay_ms(1000);
                    در فرکانس کاری 2 مگ تقریبا درست عمل میکنه
                    ولی روی 32 مگا هرتز زمان خیلی کمی وقفه روی cpu اجرا میشه
                    ورودی این تابع _delay_ms(1000);
                    به غیر از زمان باید فرکانس کاری هم باشه
                    F_CPU
                    رو من وارد میکنم ولی متاسفانه خطا میکه با مراجعه به هدر میشه فهمید که ثابت F_CPU روی مقدار پیش فرض قرار میگیره و این اخطار ظاهر میشه

                    اضافه شده در تاریخ :
                    atmelstudio 6.1


                    اضافه شده در تاریخ :
                    نوشته اصلی توسط negar_b
                    پس از قرار معلوم باید از کریستال داخلی استفاده کنم . کریستال داخلی در بلند مدت مشکل ساز نیست؟
                    در مقابل استاد جسارت کردم جواب بدم
                    ولی عرض کنم خدمت شما نوسان سازی کریستال خارجی خیلی بهتر از کریستال داخلی (rc داخلی ) می باشد
                    طبق تجربیات بنده اگر در سیستم کاری شما تایمینگ و زمان بندی بسیار مهم باشد استفاده از کلاک داخلی اصلا صحیح نیست با تغیرات دمایی تغیرات زیادی در فرکانس کاری به وجود می اید
                    با در نظر داشتن توصیه های دیتا شیت استفاده از کریستال هیچ مشکلی را به همراه نخواهد داشت
                    فقط در حد امکان از دادن گرمای شدید به بدنه کریستال هنگام لحیم کاری خود داری کنید
                    [move][img width=133 height=100]http://bargiri.persiangig.com/aks/0.306310001356499787_taknaz_ir.gif[/img][/move]

                    دیدگاه


                      #25
                      پاسخ : پاسخ : کریستال خارجی

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

                      دیدگاه


                        #26
                        پاسخ : پاسخ : پاسخ : کریستال خارجی

                        نوشته اصلی توسط طراح
                        مقدار فرکانس کلاک حتما در یکی از header های مورد استفاده شما (مثلا avr_compiler.h در صورتی که از آن استفاده شده باشد) تعریف شده و باید آن را تغییر دهید. اما از آنجایی که نمونه کد پروژه را قرار نداده اید، امکان راهنمایی بیشتری میسر نیست.
                        کد:
                        /*
                         * _32MHZ_internal_rc_osilator.c
                         *
                         * Created: 6/19/2013 11:11:40 PM
                         * Author: hamed
                         */ 
                        
                        #include <avr/io.h>
                        #include <avr/delay.h>
                        int main(void)
                        {
                        	
                        	OSC_CTRL|=OSC_RC32MEN_bm;
                        	while(!(OSC_STATUS & OSC_RC32MRDY_bm));
                        	CCP = CCP_IOREG_gc;
                        	CLK_CTRL=CLK_SCLKSEL_RC32M_gc;
                        	# define F_CPU 32000000UL
                        	PORTK_DIR=0xff;
                        
                        	
                        	
                          while(1)
                          {
                        		//PORTK_OUT=0xff;
                        	  PORTK_OUTTGL=0xff; /// TOGELE KARDANE KHOROOJII
                        	  _delay_ms(1000);
                        	  
                        	  //TODO:: Please write your application code
                          }
                        }
                        [move][img width=133 height=100]http://bargiri.persiangig.com/aks/0.306310001356499787_taknaz_ir.gif[/img][/move]

                        دیدگاه


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

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

                          دیدگاه


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

                            با تشکر از پاسخهای شما
                            با توجه به صحبتهای آقای طراح پس می شود مثلا یک کریستال 16 مگاهرتز استفاده کرد و pll را 2 قرار بدیم که در 2 ضرب شود و سرعت 32 مگا هرتز را به ما بدهد این حرف درسته؟
                            من یک برنامه دیدم که با آن با دست کاری ریجیسترها در بسکام به سرعت 50 مگاهرتز رسیده بود البته با کریستال داخلی. پس این امکان در بسکام وجود دارد.
                            اگر لطف کنید برنامه راه اندازی با کریستال خارجی (32 mhz) را قرار دهید ممنون می شم . خودم به بیسیک تبدیلش میکنم.بازم ممنون

                            دیدگاه


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

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

                              دیدگاه


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

                                نوشته اصلی توسط طراح
                                تعریف F_CPU را قبل از include کردن avr/delay.h قرار دهید و نتیجه را اطلاع دهید.
                                با تشکر از استاد
                                مشکل حل شد
                                سوالی که برای بنده پیش امده
                                فرض بر اینکه برنامه در دو فرکانس اجرا میشود
                                فرکانس حلقه اول 2 مگا و حلقه دوم 32 مگا عملا چون فرکانس تغیر میکند لایب Delay.h
                                به درد نخور خواهد شد
                                [move][img width=133 height=100]http://bargiri.persiangig.com/aks/0.306310001356499787_taknaz_ir.gif[/img][/move]

                                دیدگاه

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