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


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Bernhard R. (bernhard_r874)


Bewertung
0 lesenswert
nicht 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. (stefanus)


Bewertung
0 lesenswert
nicht 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.

: Bearbeitet durch User
von Bernhard R. (bernhard_r874)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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. (stefanus)


Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.