Ik wilde eens met een zwaardere PIC aan de gang en heb een dsPIC33FJ256GP504 aangeschaft.
De PIC draait inmiddels wel, maar ik krijg geen (Timer3) interrupt aan de gang.
In de simulator draait Timer3 en de overflow-vlag wordt netjes geset (IFS0,#T3IF) wanneer de timer overloopt.
Echter i.p.v. naar de interrupt te springen springt hij naar de reset-vector :+
Wat doe ik fout?

Instellingen die van belang kunnen zijn:

.text                             ;Start of Code section

 .ORG 0x000024
      goto  __T3Interrupt

__reset: 
       goto _startup


  .ORG 0x000200
_startup:
; First initialize the stack pointer and the Stack pointer limit
        MOV #__SP_init, W15       ;Initalize the Stack Pointer
        MOV #__SPLIM_init, W0     ;Initialize the Stack Pointer Limit Register
        MOV W0, SPLIM
        NOP                       ;Add NOP to follow SPLIM initialization


   bclr IFS0,#T3IF      ; clear the interruptflag
   bset IEC0,#T3IE      ; interrupt for timer3 on
   bclr IPC2,#T3IP0     ; interrupt priority level
   bclr IPC2,#T3IP1     ; for timer 3
   bset IPC2,#T3IP2     ; level4
   bset T3CON,#TON      ; timer3 on
   clr  INTCON2
   bset INTCON1,#NSTDIS ; no nested interrupts

Fout inmiddels gevonden:
De interrupt moet "global" gedeclareerd worden, ook al gebruik je maar 1 sourcefile :+

Dus dit moet er bij gezet:
.global __T3Interrupt ;Declare Timer 3 ISR name global

En dit moet eruit, daar klopt geen hout van.:
.ORG 0x000024
goto __T3Interrupt

De label "__T3Interrupt" staat namelijk al in het linkerscript en staat in de vectortabel vast op plaats 0x000024.

Weer wat geleerd ;)