I've started tinkering with a PIC18F4680 (with CAN bus) usin microchips MPLAB C18 C compiler. I've been beating my head against problem for many hours now :evil:
I can't get interrupts to work. I have tried, TMR0, TMR1 and INT0.
have verified that TMRnIP, TMRnIE, TMRnIF and GIEH & IPEN are al HIGH yet my ISR does not get run. If I clear TMRnIF in the main loo TMRnIF is set again when the timer overflows so it appears the time is OK, the ISR just doesn't get run
I have checked the disassembly and there is a goto in 0x08 (the hig
pri interrupt vector) and my ISR at the address GOTOed
Any suggestions what the issue may be
Here is a section of my code
38: RCONbits.IPEN = 1; //enable priorit
level
00003C 8ED0 BSF 0xfd0, 0x7, ACCES
40: IPR1bits.TMR1IP = 1
00003E 809F BSF 0xf9f, 0, ACCES
41: PIR1bits.TMR1IF = 0
000040 909E BCF 0xf9e, 0, ACCES
42: PIE1bits.TMR1IE = 1
000042 809D BSF 0xf9d, 0, ACCES
43: TMR0H = 0; //clear time
000044 6AD7 CLRF 0xfd7, ACCES
44: TMR0L = 0; //clear time
000046 6AD6 CLRF 0xfd6, ACCES
46: INTCONbits.GIEH = 1; //enabl interrupt
00004C 8EF2 BSF 0xff2, 0x7, ACCES
47:
48: T1CONbits.TMR1ON = 0
00004E 90CD BCF 0xfcd, 0, ACCES
49: TMR1H = 0x00
000050 6ACF CLRF 0xfcf, ACCES
50: TMR1L = 0x00
000052 6ACE CLRF 0xfce, ACCES
51: T1CONbits.TMR1ON = 1
000054 80CD BSF 0xfcd, 0, ACCES
67:
//---------------------------------------------------------------------------
68: // High priority interrupt vecto
69:
70: #pragma code HIGH_INTERRUPT_VECTOR = 0x0
71: voi
72: InterruptVectorHigh (void
73:
74: _as
75: goto InterruptHandlerHigh //jump to interrup routin
000008 EF3E GOTO 0x7
00000A F000 NO
76: _endas
77:
00000C 0012 RETURN
78:
79: //---------------------------------------------------------------------------
80: // High priority interrupt routin
81:
82: #pragma cod
83: #pragma interrupt InterruptHandlerHig
84:
85: voi
86: InterruptHandlerHigh (
00007C CFDA MOVFF 0xfda, 0xfe
00007E FFE4 NO
000080 CFE2 MOVFF 0xfe2, 0xfd
000082 FFDA NO
000084 52E6 MOVF 0xfe6, F, ACCES
87:
88: // INTCONbits.TMR0IF = 0; //clea interrupt fla
89: Flags.Bit.Timeout = 1; //indicat timeou
000086 0100 MOVLB
000088 8160 BSF 0x60, 0, BANKE
90: LATAbits.LATA0 = !LATAbits.LATA0; //toggle LED o RB
00008A 7089 BTG 0xf89, 0, ACCES
91: // INTCONbits.INT0IF = 0
92: PIR1bits.TMR1IF = 0
00008C 909E BCF 0xf9e, 0, ACCES
93:
00008E 52E5 MOVF 0xfe5, F, ACCES
000090 CFE5 MOVFF 0xfe5, 0xfd
000092 FFDA NO
000094 0011 RETFIE 0x
Any help will something heavy being thrown against my wall. Thanks
Dea