Hallo,
ich habe ein für mich unerklärliches Problem.
Edit: µC PIC16F18877
Der Timer4 (Timer2 und Timer6 gleiches Verhalten) löst keinen Interrupt
mehr aus, wenn ich den Postscaler auf andere Werte als 1:1 stelle.
1 | // Timer4 init
|
2 | T4CLKCONbits.CS = 0b0001; // Clock Source FOSC/4
|
3 | T4CONbits.CKPS = 0b010; // Prescaler 1:4
|
4 | T4CONbits.OUTPS = 0b0000; // Postscaler 1:1
|
5 | T4HLTbits.MODE0 = 0; // normal running mode
|
6 | T4PR = 208;
|
7 | PIE4bits.TMR4IE = 1;
|
8 |
|
9 | INTCONbits.PEIE = 1;
|
10 | INTCONbits.GIE = 1;
|
11 |
|
12 | T4CONbits.ON = 1;
|
1 | void __interrupt() isr(void)
|
2 | {
|
3 | if(TMR4IF == 1)
|
4 | {
|
5 | ...
|
6 | TMR4IF = 0;
|
7 | }
|
8 | }
|
Dieser Code läuft wie erwartet. Sobald ich den Postscaler Wert auf
irgendwas beliebig anderes stelle (1:2 ... 1:16) wird die ISR nicht mehr
aufgerufen. Kennt jemand das Problem?
Viele Grüße, Joe