PIC16F610 Timer0 Interrupt

Gast #5265879
Lesenswert?

Hallo,
ich schreibe ein erstes Programm für den o.g. PIC. Diese kleine Programm 
soll den Pin RA1 togglen. Dies scheint nicht zu funktionieren, da der 
Pin dauerhaft high ist (gemessen).
Es ist kein Quarz angeschlossen (interner Oszillator wird verwendet). 
Verwendete IDE ist MPLAB X v3.55, Compiler ist XC8 v1.20.
1
// CONFIG
2
#pragma config FOSC = INTOSCIO  // Oscillator Selection bits (INTOSCIO oscillator: I/O function on RA4/OSC2/CLKOUT pin, I/O function on RA5/OSC1/CLKIN)
3
#pragma config WDTE = OFF       // Watchdog Timer Enable bit (WDT disabled and can be enabled by SWDTEN bit of the WDTCON register)
4
#pragma config PWRTE = OFF      // Power-up Timer Enable bit (PWRT disabled)
5
#pragma config MCLRE = ON       // MCLR Pin Function Select bit (MCLR pin function is MCLR)
6
#pragma config CP = OFF         // Code Protection bit (Program memory code protection is disabled)
7
#pragma config IOSCFS = 8MHZ    // Internal Oscillator Frequency Select bit (8 MHz)
8
#pragma config BOREN = OFF      // Brown-out Reset Selection bits (BOR Disabled)
9

10
// #pragma config statements should precede project file includes.
11
// Use project enums instead of #define for ON and OFF.
12

13
#include <xc.h>
14

15

16
void main(void)
17
{
18
  // Init Port A
19
  PORTA = 0x00;
20
  TRISA = 0x34;
21
  
22
  //init Timer0 
23
  OPTION_REGbits.T0CS=0; //TIMER MODE
24
  OPTION_REGbits.PSA=0b0; // enable prescaler
25
  OPTION_REGbits.PS=0b110;
26
  INTCONbits.T0IE = 1;
27
  PORTAbits.RA1 =1;
28
  ei();
29
  
30
  while(1)
31
  {
32
      
33
  }
34
  
35
}
36

37
void interrupt isr(void)
38
{
39
  if(INTCONbits.T0IF ==1)
40
  {
41
    INTCONbits.T0IF = 0;
42
    if(PORTAbits.RA1 == 0)
43
    {
44
      PORTAbits.RA1 = 1;
45
    }
46
    else
47
    {
48
      PORTAbits.RA1 = 0;
49
    }
50
  }
51
}

Da der Pin RA1 dauerhaft high ist, scheint die ISR nicht aufgerufen zu 
werden. Hat irgendjemand eine Idee, was mein Fehler sein könnte?

Vielen Dank!

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