LPC810 (ARM Cortex-M0+) PLL Setup

#3462064
Lesenswert?

Hi,

Ich habe mir jetzt einiges an Beispielcode im Netz angeschaut und bin 
immer wieder über die gleiche Frage gestolpert. Beim Aktivieren der PLL 
macht jeder Code folgendes in genau diese Reihenfolge:

* PLL einschalten (PDRUNCFG, SYSPLLCTRL)
* warten bis stabil (SYSPLLSTAT)
* main clock auf PLL umschalten (MAINCLKSEL)
* Teiler setzen (SYSAHBCLKDIV)

Jetzt wundere ich mich, warum der Teiler im Regsiter  SYSAHBCLKDIV 
gesetzt wird, machdem (!) die PLL als MainClock geschaltet wurde. 
Eigentlich muss das doch vorher passieren, damit die maximale Frequenz 
nicht überschritten wird.
Ich hab im Datenblatt nichts dazu gefunden, wann die Umschaltung der 
MainClock aktiv wird und was eigentlich beim Übertakten passiert. Aber 
nach meinem (naiven) Verständnis läuft der Core doch dann kurzfristig 
mit einer viel zu hohen Frequenz, z.B. 60 MHz statt 30 MHz, weil der 
Teiler noch 1 ist. Was passiert hier genau, warum geht das?
* Internet-Copy/Paste Fehler?
* Gibt es in der Hardware einen Schutz?
* Gehen dann einfach Clock-Pulse verloren, so das die genaue Taktung für 
eine kurze Weile undefiniert ist?

Die beste Antwort die ich bisher gefunden habe ist: Das steht exakt so 
im Datenblatt, dass das so gemacht wird. Also nicht versuchen, da etwas 
zu verstehen.

Axel

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren