Forum: Mikrocontroller und Digitale Elektronik ATxmega32a4 und Quarz?


von Andy (Gast)


Lesenswert?

Hallo,
Ich bin gerade dabei einen Print mit einem ATxmega32a4 zu entwerfen. Bis 
jetzt habe ich immer den Meag328p verwendet. Bei dem war es so, dass ich 
für die serielle Kommunikation einen externen Quarz verwendet habe, da 
der interne zu ungenau ist.
Wie ist es nun bei dem XMega32a4? Sind da die internen Frequenzen genau 
bzw. genau genug, um Bussystem wie UART, DMX, DALI... zu realisieren? 
Laut Datenblatt sind die Genauigkeiten beim XMega um einiges besser, 
aber reicht das?
Vielen Dank für eure Infos!

mfg
Andy

von Andy (Gast)


Lesenswert?

Hat keiner Erfahrungen mit dem Thema??

lg

von andz (Gast)


Lesenswert?

Ich kann nur vom Atmega32u4 sprechen, und da ist der interne Ostillatior 
auf jedenfall zu ungenau für USB...schätzt der interne Ostillatior wird 
bei aktuellen Megas ziemlich gleich sein...

von Michael 9. (michael93) Benutzerseite


Lesenswert?

Hi,

wenn du keine Platzprobleme hast: mach einfach alles so, dass du den 
Quarz weglassen kannst und dann kannst ja testen. Wenns ohne nicht 
klappt, dann kannst du ihn ja bei schlauer Vorbereitung ganz einfach 
noch reinlöten. Würd ich zumindest so machen.

Michael

von Andy (Gast)


Lesenswert?

Hallo,
Ich probiere gerade beim ATxmega32A4 den externen Quarz zu 
konfigurieren. Leider gibt es dabei Probleme. Hat irgendwer von euch 
schon mal einen externen Quarz bei dem uC konfiguriert und kann mir den 
Code dazu geben?
Danke für eure Hilfe!

mfg
Andy

von xmega (Gast)


Lesenswert?

Servus,


Andy schrieb:
> Ich probiere gerade beim ATxmega32A4 den externen Quarz zu
>
> konfigurieren. Leider gibt es dabei Probleme.

CodeVisionAVR
CodeWizardAVR V2.04.8 Evaluation
16Mhz Quarz!!!


// System Clocks initialization
void system_clocks_init(void) // wird hier aufgerufen
{
unsigned char n,s;

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

// External 16000,000 kHz oscillator initialization
OSC.XOSCCTRL=OSC_FRQRANGE_12TO16_gc | OSC_XOSCSEL_XTAL_16KCLK_gc;
// Enable the external oscillator
OSC.CTRL|=OSC_XOSCEN_bm;

// System Clock prescaler A division factor: 1
// System Clock prescalers B & C division factors: B:1, C:1
// ClkPer4: 16000,000 kHz
// ClkPer2: 16000,000 kHz
// ClkPer:  16000,000 kHz
// ClkCPU:  16000,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;

// Wait for the external oscillator to stabilize
while ((OSC.STATUS & OSC_XOSCRDY_bm)==0);

// 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

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Sieh doch einfach einen Uhrenquarz an den TOSC-Pins vor. Damit kannst Du 
alle (!) internen Clocks und PLLs bei Bedarf eichen und hast einen 
ganzen Zoo an Taktquellen zur Verfügung, die Du zur Laufzeit ändern und 
umschalten kannst.

von XMega Fan (Gast)


Lesenswert?

Hallo,

der interne XMega 32MHz Oszillator hat eine sehr hohe Genauigkeit und 
Stabilität. Für RS232 vollkommen ausreichend!

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.