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
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...
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
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
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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.