پاسخ : تنظیم منابع کلاک در XMEGA
سوال خوبی را مطرح کردید. در مراجعات بعدی به انجمن در این مورد به شما پاسخ خواهم داد.
نوشته اصلی توسط حامد رحیمی
delay_init(32); delay_init(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 }
OSC.XOSCCTRL=OSC_XOSCSEL_EXTCLK_gc;
OSC.XOSCCTRL=OSC_FRQRANGE_9TO12_gc|OSC_XOSCSEL_XTAL_16KCLK_gc;
دیدگاه