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?
>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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.