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
@ 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.
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).
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...
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?
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.
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.
> 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.
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.