Clock / ATxmega 128A1

Gast #2202289
Lesenswert?

Hallo,

ich versuche meinen ATxmega von den voreingestellten 2MHz auf einen 
32kHz Takt (extern) zu holen. Doch leider scheint es mit diesem Stück 
Quelltext nicht zu klappen. Kann mir jemand sagen, was daran falsch sein 
kann. Danke.



                /*Oscillator 32KHz:*/
    OSC.XOSCCTRL=OSC_XOSCSEL_32KHz_gc;
          /*Enable External Oscillator:*/
     OSC.CTRL |=OSC_XOSCEN_bm;
    while(!(OSC.STATUS & OSC_XOSCRDY_bm))
      {
      }
          /*Switch to External Clock Source:*/
    CLK.CTRL=CLK_SCLKSEL_XOSC_gc;

Danke.
Gast #2202791
Lesenswert?

Hallo,

This program was produced by the
CodeWizardAVR V2.05.1b Evaluation
Automatic Program Generator




void system_clocks_init(void);


int main(void)
{

system_clocks_init();

while (1)
{

}

 return (0);
}

void system_clocks_init(void)
{
unsigned char n,s;

// Save interrupts enabled/disabled state
s=SREG;
// Disable interrupts
cli();

// External 32,000 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: 32,000 kHz
// ClkPer2: 32,000 kHz
// ClkPer:  32,000 kHz
// ClkCPU:  32,000 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;

// Select the system clock source: External Osc. or Clock
n=(CLK.CTRL & (~CLK_SCLKSEL_gm)) | CLK_SCLKSEL_XOSC_gc;
CCP=CCP_IOREG_gc;
CLK.CTRL=n;

// Disable the unused oscillators: 2 MHz, 32 MHz, internal 32 kHz, PLL
OSC.CTRL&= ~(OSC_RC2MEN_bm | OSC_RC32MEN_bm | OSC_RC32KEN_bm | 
OSC_PLLEN_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
}

Gruß XMEGA

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren