Forum: Mikrocontroller und Digitale Elektronik Taktrate LPC2134


von Michael (Gast)


Lesenswert?

Hallo Zusammen,
ich programmiere zur Zeit einen ARM7-LPC2134. Ich verwende für die 
Takterzeugung einen externen Oszillator mit 14,7456 MHz. Die Taktrate, 
die der Controller allerdings intern erzeugt liegt ca. um den Faktor 1,2 
höher. Wie kann dann sein?? Ich habe keinen Prescaler eingeschaltet.
Über Antworten würde ich mich sehr freuen.
Gruß
Michael

von Robert T. (robertteufel)


Lesenswert?

Also ich nehme mal an Du hast Startup Dateien von Keil oder IAR 
benuetzt. Die schalten normalerweisse die PLL ein. Allerdings ist ein 
Faktor 1.2 SEHR merkwuerdig.

Da gibt es ausser der PLL nichts was den Takt nach oben schrauben 
koennte. Hast Du mal den clock am Eingang gemessen? Ist manchmal etwas 
schwierig weil der mit einer zusaetzlichen Lastkapazitaet evtl. anders 
ist als ohne. Ich denke an eine Schwingung auf der Oberwelle, was auch 
noch einen anderen Takt verursachen koennte, der waere dann allerdings 
3-fach oder so.

Gruss, Robert

von Michael (Gast)


Lesenswert?

Ja ich habe den Keil-Compiler und auch die dazugehörige startup-Datei 
verwendet.
Den Takt habe ich gemessen, der ist tatsächlich exakt 14,7456 MHz. Die 
PLL habe ich auch ausgeschaltet.
Wenn der interne Takt ein ganzzahliges Vielfaches wäre, dann könnte ich 
es ja irgendwo verstehen...

Gruß Michael

von Benedikt K. (benedikt)


Lesenswert?

Wie hast du die 1,2 gemessen ?

von Compy (Gast)


Lesenswert?

Ich denk, du schwabbelst an einem Port-Pin um den Takt zu "messen", 
oder?
Vielleicht bei der Rückrechnung eine Instruktion übersehn? Taktzahlen 
für die verwendeten Instruktionen alle richtig eingesetzt?

von Michael (Gast)


Lesenswert?

>Ich denk, du schwabbelst an einem Port-Pin um den Takt zu "messen",
>oder?

Ja.
Ich will den Timer Interrupt so einstellen, dass er alle 100 us auslöst. 
Verknüpfe dann den Interrupt mit einem Port-Pin (LED). Laut Rechnung 
müsste das Timer-Register dann auf
0,0001 sec * 14745600*1/sec = 1474,56 = 0x5C3 eingestellt sein. Bei 
diesem Wert löst der Interrupt dann aber ca. alle 80 us aus. Ich habe 
den Wert dann hingemurkst und auf 0x748 eingestellt um die 100 us zu 
erhalten.

>Wie hast du die 1,2 gemessen ?

Der Faktor 1,2 ist dann einfach der Faktor von 80 us auf 100 us 
(ungefähr).

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.