Forum: Mikrocontroller und Digitale Elektronik Xmega PLL umschalten möglich?


von Christian F. (vossi)


Lesenswert?

Hi,
ich betreibe meinen Xmega 128A3U mit dem internen 32 MHz Oszillator.
Er läuft stabil mit 48 MHz (PLL auf 6).

Ich möchte nun während er läuft in bestimmten Programmteilen den 
PLL-Faktor umschalten, aber leider funktioniert das nicht.

Ich habe diverse Varianten (mit CCP vorher vor jeder Änderung) probiert:
PLL ausschalten, PLL Faktor ändern, warten bis PLLReady, PLL 
einschalten.

Kann mir da einer helfen???

Danke

: Verschoben durch User
von Falk B. (falk)


Lesenswert?

@ Christian Forstreuter (vossi)

>ich betreibe meinen Xmega 128A3U mit dem internen 32 MHz Oszillator.
>Er läuft stabil mit 48 MHz (PLL auf 6).

Gut.

>Ich möchte nun während er läuft in bestimmten Programmteilen den
>PLL-Faktor umschalten, aber leider funktioniert das nicht.

Logisch. Dazu musst du erstmal auf eine andere Taktquelle umschalten, 
Z.B. den internen 32 MHz RCO. Dann kannst du am PLL-Faktor was ändern 
und wieder zurück schalten.

Aber generell scheint mir der Ansatz so oder so zweifelhaft bis 
unsinnig, in 99,9% aller Fälle läßt man den Takt einmal eingestellt wie 
er ist und macht den Rest mittels Sleep Mode.

Auch ja, der Beitrag ist hier falsch, Admins, bitte mal verschieben.

von Christian F. (vossi)


Lesenswert?

Hallo, danke für den Tip - es funktioniert jetzt.
Ich hatte schon probiert PLL zu deaktivieren vor dem umschalten, aber 
das reichte nicht.

Man muss auf 32 MHz ohne PLL gehen, dann PLL disablen PLL-Faktor ändern 
und dann wieder zurück auf PLL.

Es geht mir nicht um's sparen, sondern genau das Gegenteil:

Ich möchte den Xmega mit max. Geschwindigkeit nutzen.
Ich lese mit 48 MHz aus einem 15ns-SRAM in meinem C64-Eigenbau und 
schreibe dann mit 60 MHz in das TFT Display.
60 MHz funktionieren (selbst bei aktuell 30 Grad Umgebungstemperatur) 
übrigens problemlos mit der USB-Variante (A3U).

von Simon K. (simon) Benutzerseite


Lesenswert?

Christian Forstreuter schrieb:
> Hallo, danke für den Tip - es funktioniert jetzt.
> Ich hatte schon probiert PLL zu deaktivieren vor dem umschalten, aber
> das reichte nicht.
>
> Man muss auf 32 MHz ohne PLL gehen, dann PLL disablen PLL-Faktor ändern
> und dann wieder zurück auf PLL.

Und mit welchem Takt soll der Prozessor nach dem Deaktivieren der PLL 
dann laufen?

> Ich möchte den Xmega mit max. Geschwindigkeit nutzen.
> Ich lese mit 48 MHz aus einem 15ns-SRAM in meinem C64-Eigenbau und
> schreibe dann mit 60 MHz in das TFT Display.
> 60 MHz funktionieren (selbst bei aktuell 30 Grad Umgebungstemperatur)
> übrigens problemlos mit der USB-Variante (A3U).
Oh weia...

von Christian F. (vossi)


Lesenswert?

Es funktioniert problemlos.
Die Xmegas mit USB sind für 48 MHz gebaut (auch wenn Atmel sie nur mit 
32 MHz angibt). 20% Übertakten ist überhaupt kein Problem.
Die Xmegas ohne USB laufen nur bis 40 MHz, was ja bestätigt, das in den 
A3U, A4U andere Hardware steckt!

Nach dem alleinigen deaktivieren der PLL lief der Xmega mit 32 Mhz 
weiter. - hab ich im Analyzer kontrolliert. - warum auch immer?

von Simon K. (simon) Benutzerseite


Lesenswert?

Christian Forstreuter schrieb:
> Es funktioniert problemlos.
> Die Xmegas mit USB sind für 48 MHz gebaut (auch wenn Atmel sie nur mit
> 32 MHz angibt).
Das wäre mir neu. Nur der USB Teil in dem AVR ist bis 48 MHz 
spezifiziert.

> 20% Übertakten ist überhaupt kein Problem.
Die Aussage ist so pauschal natürlich Unsinn. Bestimmte Peripherie kann 
beispielsweise schon bei Knapp über 32MHz aussteigen. Oder andere 
Umgebungsbedingungen wie hohe Temperatur und niedrige 
Versorgungsspannung kann Instabilitäten erzeugen.

> Die Xmegas ohne USB laufen nur bis 40 MHz, was ja bestätigt, das in den
> A3U, A4U andere Hardware steckt!
Das kann auch andere Gründe haben. Exemplarstreuungen oder Umstieg auf 
einen anderen Herstellungsprozess beispielsweise.

> Nach dem alleinigen deaktivieren der PLL lief der Xmega mit 32 Mhz
> weiter. - hab ich im Analyzer kontrolliert. - warum auch immer?
Weil die PLL wahrscheinlich nicht deaktiviert wurde, weil es eine Logik 
gibt, die das verhindert.

: Bearbeitet durch User
von Christian F. (vossi)


Lesenswert?

Das nur der USB-Teil bis 48 MHz spezifiziert ist - ist schon klar.
Aber die werden wohl kaum nur den USB-Teil für 48 MHz extra in einem 
anderen Prozess fertigen - das rechnet sich sicher nicht!

Das die USB Xmegas sich besser übertakten lassen haben schon andere 
untersucht (findet man in Web) und ich konnte es nachvollziehen.
60 MHz geht bei mir bei 30 Grad Umgebungstemperatur wie gesagt ohne 
Fehler.
Ich habs mit zwei unterschiedlich eingekauften Xmegas getestet.

Fehler auf dem Display kommen erst ab 66 MHz - Einzelne Pixelfehler 
sieht man sofort - könnte allerdings auch das Display sein, was da 
Probleme macht, wenn der write impuls nur noch 15ns ist!

Natürlich gibt es keine Garantie dafür - Atmel kann morgen die Fertigung 
umstellen und es geht nur noch 32 MHz.

Schade das man den PLL-Faktor nicht umschalten kann während PLL aktiv 
ist.

von Georg A. (georga)


Lesenswert?

> Ich habs mit zwei unterschiedlich eingekauften Xmegas getestet.

Du kannst jetzt noch das Ding weiter aufheizen und die Betriebsspannung 
senken, um die Grenzen rauszufinden ;) Solange das Einzelstücke bleiben, 
warum nicht...

> Schade das man den PLL-Faktor nicht umschalten kann während
> PLL aktiv ist.

Weil da vermutlich nichts eingebaut wurde, was sicherstellt, dass das 
Hochdrehen ohne Glitches oder Verletzungen des 50:50-Verhältnisses 
passiert.

von Simon K. (simon) Benutzerseite


Lesenswert?

Christian Forstreuter schrieb:
> Das nur der USB-Teil bis 48 MHz spezifiziert ist - ist schon klar.
> Aber die werden wohl kaum nur den USB-Teil für 48 MHz extra in einem
> anderen Prozess fertigen - das rechnet sich sicher nicht!
Die maximale Taktfrequenz hängt doch nicht (nur) vom Prozess ab! Sondern 
viel mehr von der Implementierung. So wird der schaltungsteil für USB 
wesentlich schneller, dafür aber stromhungriger sein und mehr chipfläche 
belegen. Nur weil der Teil für 48mhz spezifiziert ist, muss der Rest das 
nicht auch sein!

> Das die USB Xmegas sich besser übertakten lassen haben schon andere
> untersucht (findet man in Web) und ich konnte es nachvollziehen.
> 60 MHz geht bei mir bei 30 Grad Umgebungstemperatur wie gesagt ohne
> Fehler.
> Ich habs mit zwei unterschiedlich eingekauften Xmegas getestet.
Ja, so kann man das ausdrucken. Bei DIR geht es. Allgemeingültig kann 
man das aber nicht sagen.

> Natürlich gibt es keine Garantie dafür - Atmel kann morgen die Fertigung
> umstellen und es geht nur noch 32 MHz.
Oder die Temperatur ansteigen oder oder oder..

> Schade das man den PLL-Faktor nicht umschalten kann während PLL aktiv
> ist.
Das ist halt nur schwierig zu realisieren! So darf es bei dem umschalten 
nicht zu glitches kommen, sonst stürzt der Prozessor ab. Und das ist nur 
eines der Probleme. Soweit ich weiß gibt es diese Funktionalität bei 
keinem der modernen Prozessoren.

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.