PIC16 Kein Timer Interrupt bei Postscaler != 1:1

OP #6971138
Lesenswert?

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
Gast #6971819
Lesenswert?

Las dir das mal vom Codegenerator generieren.
....
Habs grad eh offen. Hier zum schmulen und kopieren:
1
void TMR2_Initialize(void)
2
{
3
    // Set TMR2 to the options selected in the User Interface
4

5
    // T2CS HFINTOSC; 
6
    T2CLKCON = 0x03;
7

8
    // T2PSYNC Not Synchronized; T2MODE Software control; T2CKPOL Rising Edge; T2CKSYNC Not Synchronized; 
9
    T2HLT = 0x00;
10

11
    // T2RSEL T2CKIPPS pin; 
12
    T2RST = 0x00;
13

14
    // PR2 0; 
15
    T2PR = 0x00;
16

17
    // TMR2 0; 
18
    T2TMR = 0x00;
19

20
    // Clearing IF flag before enabling the interrupt.
21
    PIR4bits.TMR2IF = 0;
22

23
    // Enabling TMR2 interrupt.
24
    PIE4bits.TMR2IE = 1;
25

26
    // Set Default Interrupt Handler
27
    TMR2_SetInterruptHandler(TMR2_DefaultInterruptHandler);
28

29
    // T2CKPS 1:1; T2OUTPS 1:16; TMR2ON on; 
30
    T2CON = 0x8F;
31
}

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren