Hallo zusammen. Folgendes Problem beschäftigt mich. Ich steuere einen LPC2138 mit einem 12MHz Quarz. Intern multipliziere ich die Frequenz auf 60MHz. Dies ergibt eine Periodendauer von 16.666..ns. Die Hardware funktioniert einwandfrei. Nun will ich mit dem Timer einen 1us Interrupt generieren. Dies will ich mit folgendem Code realisieren. Ich teile mit dem Register T1PR die 60MHz auf 10MHz. Danach nochmals mit dem T1MR0 auf 1MHz. Dies sollte meinen Interrupt ergeben. Doch es funktioniert nicht! Wenn ich mit dem T1MR0 auf 100kHz teile hingegen schon!
1 | void Timer1Init (void) |
2 | {
|
3 | T1TCR = 0x02; //Timer1 disable, reset |
4 | T1CTCR = 0x00; //Timer1 in Timer Mode (Clock = PCLK) |
5 | T1PR = 5; //fPC = PCLK/(PR+1) |
6 | T1MR0 = 9; //fTC = fPC/(MRO+1) |
7 | T1MCR = 0x0003; //interrupt and reset TC, when MR0 equal to TC |
8 | T1TCR = 0x01; //Timer1 enable |
9 | }
|