LPC1766 Peripherie -> Frequenzproblem

Gast #2564241
Hallo zusammen,
ich Programmiere einen LPC1766-STK von Olimex mit der Software IAR .
Meine Frage bezieht sich auf die Frequenzeinstellung, genauer gesagt 
geht es in dem LCD Beispielprogramm 
(http://www.olimex.com/dev/index.html)  um den Takt für die 
Peripherie(Timer0 und 1).
Im Beispielprogramm werden zuerst der Takt und danach die Peripherie mit 
den Zeilen
  CLKSRCSEL_bit.CLKSRC = 1;   // Selects the main oscillator as a PLL 
clock source.
  PCLKSEL0 = PCLKSEL1  = 0;   // other peripherals 100/4 = 25MHz
eingestellt.

Laut Datenblatt :
00 PCLK_peripheral = CCLK/4 00
01 PCLK_peripheral = CCLK
10 PCLK_peripheral = CCLK/2
11 PCLK_peripheral = CCLK/8, except for CAN1, CAN2, and
CAN filtering when “11” selects = CCLK/6.

PCLKSEL0 = PCLKSEL1  = 1;
Änderst aber schon einmal nichts.

Weiter unten im Programm wird durch die Funktion
Int32U SYS_GetFsclk(void) noch einmal wie oben der main ocsillator als 
clock source herausgesucht und durch die Funktion
Int32U SYS_GetFpclk(Int32U Periphery) der Takt für die Peripherie.
Aber auch wenn ich hier den Teiler ändere, verändert sich nicht der Wert 
meines Timers.


Wieso ändert sich die Peripherie MHz nicht wenn ich PCLKSEL0 und 
PCLKSEL1  ändere?
Wieso wird oben clock source und die Peripherie definiert und weiter 
unten wieder durch die Funktionen  „gesucht“ und wieder  geändert?

Wenn ich mit dem Timer1 alle 100ms einen Ausgang schalten will, muss ich 
Timer1 mit 1250000 vorladen. (12,5 Mhz ?!)  Das Funktioniert auch. Wenn 
ich jetzt den Takt für die Peripherie „ändere“ sollte doch der Wert viel 
schneller/langsamer abgearbeitet werden und sich die 100ms auf z.B. 50ms 
verschieben?

Habe ich da ein prinzipielles Denkproblem?

Ich hoffe Ihr versteht mein Problem und könnt mir helfen.

Vielen dank!
PCLKSEL0 = PCLKSEL1  = 1;

Damit stellst du nur die Teiler für den WDT (PCLKSEL0) und QEI 
(PCLKSEL1) um da nur jeweils Bit 0 gesetzt wird. Für Timer0 z. B. sind 
aber Bits 2:3 in PCLKSEL0 zuständig.
1
PCLKSEL0 |= (1 << 2);
 Vorrausgesetzt da steht anfangs eine 0 drin.

Oder alles auf einmal:
1
PCLKSEL0 = PCLKSEL1 = 0x55555555;

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.