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!