Forum: Mikrocontroller und Digitale Elektronik AVR Xmega - PLL oder nur RC für 32MHz-Betrieb


von Bernhard R. (bernhard_r874)


Lesenswert?

Hallo!

Um einen AVR Xmega mit 32MHz zu betreiben hat man mindestens zwei 
Möglichkeiten:

1. Interner 32MHz RC Oszillator

2. Interner 2MHz/32MHz + PLL x16

3. (bei meiner Frage aktuell nicht relevant) Externer Quarz + PLL


Ob 32 oder 2MHz RC Oszillator - beide haben ziemlich ähnliche Werte bei 
Temperaturdrift und Stabilität.


Hat die Nutzung der PLL irgendwelche Vorteile?
CLKper4 oder CLKper2 wird nicht benötigt, es geht nur um den CPU-Takt.

Grüße,
Bernhard

von Stefan F. (Gast)


Lesenswert?

> Hat die Nutzung der PLL irgendwelche Vorteile?

Die PLL brauchst du, um eine höhere Taktfrequenz zu erzeugen, als der 
Oszillator bereit stellt. Aber ich denke, das war nicht die eigentliche 
Frage.

Ich hatte mal einen Xmega mit 32MHz R/C Oszillator+PLL verwendet und 
festgestellt, dass die serielle UART Kommunikation manchmal instabil 
ist. Das Problem verschwand sofort, nachdem ich die PLL zusätzlich mit 
dem 32kHz Oszillator synchronisierte.
1
        // Set clock source to 32Mhz using the internal R/C Oscillator.
2
        OSC.CTRL|=OSC_RC32MEN_bm;
3
        while (!(OSC.STATUS & OSC_RC32MRDY_bm)); 
4
        CCP=CCP_IOREG_gc;
5
        CLK.CTRL=CLK_SCLKSEL_RC32M_gc; 
6
        // Synchronize to the calibrated 32kHz oscillator (needed for the UART)
7
        OSC.CTRL&=(~OSC_RC2MEN_bm);
8
        OSC.CTRL|= OSC_RC32KEN_bm;
9
        while (!(OSC.STATUS & OSC_RC32KRDY_bm)); 
10
        OSC.DFLLCTRL &= ~OSC_RC32MCREF_bm;
11
        DFLLRC32M.CTRL |= DFLL_ENABLE_bm;

Warum dadurch irgendwas besser wurde, hab ich selbst nicht verstanden. 
Aber seit dem nutze ich genau diesen Code immer wieder (vier mal) und 
hatte keine Probleme mehr mit UART.

von Bernhard R. (bernhard_r874)


Lesenswert?

DFLL sollte man schon immer aktivieren. Schau Dir mal die Diagramme im 
Datenblatt an. Die Stabilität ist schon deutlich besser mit DFLL.

Ohne DFLL:

Bei 3.6V schwankt der 32MHz Oszillator von -40 bis 100°C von 36Mhz bis 
31MHz
5MHz Unterschied!


Mit DFLL:

Bei 3.6V schwankt der 32MHz Oszillator von -40 bis 100°C von ~31.75Mhz 
bis ~32.15MHz
400kHz Unterschied.


Aber zurück zu meiner Frage:

Hat die PLL bei CLK = 32MHz irgendwelche anderen Vorteile?

Ohne PLL ist die CPU sicher etwas sparsamer.

von Curby23523 N. (Gast)


Lesenswert?

Aber denke dran, dass selbst mit DFLL der intrne Oszillator nicht 100% 
genau ist,egaö ob mit internen oder externen 32kHz Quarz abgeglichen. 
Z.B. können dann Sinusfrequenzen auf einem DAC mittels DDS immernoch 
merkbar ungenau sein. Da braucht man dann einen externen Quarz mit sehr 
wenig Drift.

Mit der PLL kannst du 128MHz Takt erzeugen, den teilst du durch 4 und 
hast deine 32MHz zusätzlich. Dann kannst du die CPU mit 32MHz takten, 
aber z.B. die Hires der Timer mit 128MHz, womit diese 16-fach bessere 
Auflösung bekommen (die Frequenz hingenen kann nicht erhöht werden 
hierdurch).

von Bernhard R. (bernhard_r874)


Lesenswert?

RC ist nie 100% genau - das sollte jedem bewusst sein.
Bei anderen Anwendungen nutze ich einen externen Quarz.

HIRES und EBI geht auch mit höherem Takt mit PLL - auch klar.

Sei es drum, darum geht es ja nicht.

>CLKper4 oder CLKper2 wird nicht benötigt, es geht nur um den CPU-Takt.

von M. (Gast)


Lesenswert?

Für UART und Baudraten unter 100000, Temperaturdifferenzen im 
Innenbereich sowie die üblichen MC—Apps langt der interne Osc eigentlich 
immer!

von Bernhard R. (bernhard_r874)


Lesenswert?

M. schrieb:
> Für UART und Baudraten unter 100000, Temperaturdifferenzen im
> Innenbereich sowie die üblichen MC—Apps langt der interne Osc eigentlich
> immer!

Welche Vorteile hat die PLL bei 115200 Baud?

Ob PLL oder RC der Takt ist immer 32MHz

von Stefan F. (Gast)


Lesenswert?

> Dann kannst du die CPU mit 32MHz takten,
> aber z.B. die Hires der Timer mit 128MHz, womit diese 16-fach bessere
> Auflösung bekommen

Ah, cool. Das wusste ich noch nicht.

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.