Forum: Mikrocontroller und Digitale Elektronik LPC810 (ARM Cortex-M0+) PLL Setup


von Axel H. (axelh)


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

: Bearbeitet durch User
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.