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; |
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.