Forum: Mikrocontroller und Digitale Elektronik Clock / ATxmega 128A1


von Greenhorn (Gast)


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.

von XMEGA (Gast)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.