mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik LPC21xx PLL - Verhalten bei Reset


Autor: Volker T. (funker211)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Forum,

ich beobachte ein eigenartiges Verhalten meines LPC2129 beim Reset, 
genaugenommen der PLL. Laut Datanblatt sollte die PLL beim Start inaktiv 
sein und der MSEL auf 0 stehen (M = MSEL + 1 -> fcclk = M * fin = (MSEL 
+ 1) * fin). Ausserdem sollte der Teiler VPBDIV, der den Takt der 
Peripherie gemäß fpclk = fcclk / div definiert einen Wert von '00' 
haben, was in div = 4 resultiert.

So. Gestern starte ich also mein Olimex LPC-P2129 EvalBoard und sehe im 
Debugger, dass MSEL = 2 ist (--> M = 3) und VPBDIV = '00' (--> div = 0).

Resultat:
fin = 14.745.600 Hz
fcclk = fin * 3 = 44.236.800 Hz
fpclk = fcclk / 4 = 11.059.200 Hz

Schön. Heute starte ich das gleiche Board, diesmal erhalte ich MSEL = 2 
(M=3) und VPBDIV = '01' (div=1).

Resultat:
fin = 14.745.600 Hz
fcclk = fin * 3 = 44.236.800 Hz
fpclk = fcclk / 1 = 44.236.800 Hz

Anzumerken sei dabei, dass jeweils die selbe Firmware lief. Die 
Startup-Routine und der Rest der Firmware stammt von mir selbst und es 
gibt keine einzige Stelle, an der ich irgendwelche Programmierungen der 
PLL mache.

Zunächst erwartete ich, dass ggf. irgendwas im Flash drinen blieb, das 
zunächst ausgeführt wird und meine PLL setzt, noch bevor ich mit dem 
Debugger über JTAG meine Firmware lade. Aber dann sollte das Verhalten 
jeden Tag das gleiche sein, oder?

Irgendwelche Ideen? Ist es vielleicht der Philips BootLoader, der 
standardmäßig hier irgendwas verändert?

Autor: Dietmar (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Irgendwelche Ideen? Ist es vielleicht der Philips BootLoader, der
>standardmäßig hier irgendwas verändert?

Aus dem LPC2119/2129/2194/2292/2294 User Manual, S. 263:
"The on-chip PLL is not used by the boot code."

Und wenn, nach einem Boot-Vorgang mußt du ohnehin einen Reset auslösen, 
womit die PLL in den Urzustand kommt.

>Laut Datanblatt sollte die PLL beim Start inaktiv
>sein und der MSEL auf 0 stehen

Ist bei mir tatsächlich so...

>Ausserdem sollte der Teiler VPBDIV, der den Takt der
>Peripherie gemäß fpclk = fcclk / div definiert einen Wert von '00'
>haben, was in div = 4 resultiert.

Stimmt ebenfalls...

Und ist es auch absolut ausgeschlossen, daß dein Sourcecode nicht 
irgendwie z.B. über Pointer Zufallswerte in den System Control Block 
schreibt, denn darin befinden sich PLL und VPB Divider?

Gruß

Dietmar

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]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [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.