اطلاعیه

Collapse
No announcement yet.

تنظیم کلاک در Atmel Studio

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

    تنظیم کلاک در Atmel Studio

    درود بر همه مهندسین عزیز. یه سوال داشتم. کلاک پیش فرض یا همون F_Cpu رو چجوری تو atmel studio باید تنظیم کرد؟
    تو avr studio تو منوی project بود. ولی تو at st پیداش نکردم.

    #2
    پاسخ : تنظیم کلاک در Atmel Studio

    اگر AVR کار می کنی که خوب برای تنظیم کلاک فقط کافیه که در هنگام پروگرام در فرم Device Programer فیوز بیت SUT_CKSEL رو روی کلاک اکسترنال بزاری و کریستال مورد نظرت رو بهش وصل کنی در سخت افزار .
    اما برای ایجاد تاخیر در برنامه برای تنظیم زمان بندی درست می تونی از این کد استفاده کنی .

    کد:
    //delay functions
    #define F_CPU 8000000UL 		//Your clock speed in Hz (8Mhz here)
    
    //-----------------delays---------------------------------------------------------
    #define LOOP_CYCLES 8 				//Number of cycles that the loop takes
    
    #define fcpu_delay_us(num) delay_int(num/(LOOP_CYCLES*(1/(F_CPU/1000000.0))))
    #define fcpu_delay_ms(num) delay_int(num/(LOOP_CYCLES*(1/(F_CPU/1000.0))))
    
    void delay_int(unsigned long delay);
    //--------------------------------------------------------------------------------
    و در انتهای برنامه هم این تابع رو اضافه کن

    کد:
    void delay_int(unsigned long delay)
    {
    	while(delay--) asm volatile("nop");
    };
    اگر با Xmega کار می خوای بکنی روش کار فرق میکنه بگو تا بگم .
    - به دنبال فرصت عمری تباه کردم ! فرصت جوانی ام بود من اشتباه کردم .

    دیدگاه


      #3
      پاسخ : تنظیم کلاک در Atmel Studio

      ممنون میشم اگه بفرمایید. :redface:

      دیدگاه


        #4
        پاسخ : تنظیم کلاک در Atmel Studio

        برا تاخیر من خودم فایل delay.h رو دستکاری کردم. گزینه F_CPU = 1000000 رو به F_CPU = 8000000 تغییر دادم. البته فکر کنم کار درستی نباشه. :biggrin:

        دیدگاه


          #5
          پاسخ : تنظیم کلاک در Atmel Studio

          نوشته اصلی توسط fedora
          ممنون میشم اگه بفرمایید. :redface:
          در تابع main این تابع رو فراخونی کنید

          کد:
          	system_clocks_init();
          خود تابع رو این شکل تعریف کنید

          کد:
          // System Clocks initialization
          void system_clocks_init(void)
          {
          	OSC.XOSCCTRL=0XCB;
          	OSC.CTRL = 9;
          	while(!(OSC.STATUS & 8));
          	CCP = 0xD8;
          	CLK.CTRL = 0x03;
          	CLK.PSCTRL = 0x01;
          }
          - به دنبال فرصت عمری تباه کردم ! فرصت جوانی ام بود من اشتباه کردم .

          دیدگاه

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