Hi,
ich habe vor kurzem angefangen mich mit dem HI-TECH Compiler zu beschäftigen (vorher nur CCS).
Bei dem unten stehenden Beispiel habe ich einen 18F2620 verwendet, was ich da nicht verstehe ist warum ich die Interrupt Prioritäten aktivieren muss (IPEN=1) damit der Interrupt ausgelöst wird. Ich würde lieber im Compatibility Mode bleiben...
Was habe ich da übersehen?
Danke, LG
#pragma config IESO = OFF, FCMEN = OFF, OSC = XT
#pragma config BORV = 0, BOREN = OFF, PWRT = OFF
#pragma config WDTPS = 1, WDT = OFF
#pragma config MCLRE = OFF, LPT1OSC = OFF, PBADEN = OFF, CCP2MX = PORTC
#pragma config DEBUG = OFF, XINST = OFF, LVP = OFF,/*BBSIZ = 1024, 18F2680 only*/, STVREN = OFF,
#pragma config CP0 = OFF, CP1 = OFF, CP2 = OFF, CP3 = OFF
#pragma config CPD = OFF, CPB= OFF
#pragma config WRT3 = OFF, WRT2 = OFF, WRT1 = OFF, WRT0 = OFF
#pragma config WRTD = OFF, WRTB = OFF, WRTC = OFF
#pragma config EBTR3 = OFF, EBTR2 = OFF, EBTR1 = OFF, EBTR0 = OFF
#pragma config EBTRB = OFF
#include <htc.h>
volatile char rtc_postscaler;
void init(void) {
TRISA=0b00000000;
TRISB=0b00000000;
TRISC=0b00000000;
ADCON1=0b00001111; //all ANx digital
LATA=0b00000000;
LATB=0b00000000;
LATC=0b00000000;
//Timer2 RTC config
T2CON=0b00001111; //prescaler 16:1 and postscaler 2:1
PR2=249; //250 counts
TMR2IE=1; //enable timer2 interrupt
IPEN=1; //why???????
}
void main(void) {
init();
//ei();
GIE=1;
while (1) {
}
}
void interrupt interrupt_isr(void){
if((TMR2IE)&&(TMR2IF)){
rtc_postscaler++;
if(rtc_postscaler==125) {
rtc_postscaler=0;
LATC4=1;
}
if(rtc_postscaler==10) {LATC4=0;}
TMR2IF=0;
}
}