This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

dummy isr for unused interrupts

Hello together,

I'm using the XC866-Board from Infineon.
As I don't use all the availible interrupts in my program I would like to simply overwrite the NOPs of the interrupt vectors with RETIs to make sure the program does not accidentaly run into my code when an unused interrupt should occure.
Is there a simpler alternative than writing a interrupt service routine for every unused interrupt like

void dummyISR() interrupt xy
{
}

Thanks in advance

Parents
  • Hi,
    we realized something very similar. We needed an isr jump table to an adress with offset. So we place the jumps by hand into the code.

    VEC_SEG     EQU 2         ;Segment für Sprungziel z.B. 2 für 2:OFFSETh
    VEC_OFF     EQU 0000H     ;Offset im Segment z.B. 1000H für SEG:1000h
    
    VECT_TAB SECTION CODE AT 0    ; linken auf Adresse 0000h
    VEC_PROC PROC
      ; The RESET vector (0000H) is used by the boot application
      JMPS 0, 0800H             ;bm-Vektor-Tabelle auf 0x800 verschoben
      JMPS VEC_SEG,VEC_OFF+004H
    VEC_PROC ENDP
    VECT_TAB ENDS
    
    
    $if (MONITOR = 0)
     VECT_TAB0 SECTION CODE AT 8       ; Ohne Monitor linken auf Adresse 0008h
    $else
     VECT_TAB0 SECTION CODE AT 00CH    ; Mit Monitor inken auf Adresse 000Ch
    $endif
    
    VEC_PROC0 PROC
    $if (MONITOR = 0)
      JMPS VEC_SEG,VEC_OFF+008H
    $endif
      JMPS VEC_SEG,VEC_OFF+00CH
      JMPS VEC_SEG,VEC_OFF+010H
      JMPS VEC_SEG,VEC_OFF+014H
      JMPS VEC_SEG,VEC_OFF+018H
      JMPS VEC_SEG,VEC_OFF+01CH
      JMPS VEC_SEG,VEC_OFF+020H
      JMPS VEC_SEG,VEC_OFF+024H
      JMPS VEC_SEG,VEC_OFF+028H
      JMPS VEC_SEG,VEC_OFF+02CH
      JMPS VEC_SEG,VEC_OFF+030H
      JMPS VEC_SEG,VEC_OFF+034H
      JMPS VEC_SEG,VEC_OFF+038H
      JMPS VEC_SEG,VEC_OFF+03CH
      JMPS VEC_SEG,VEC_OFF+040H  ;CC0INT
      JMPS VEC_SEG,VEC_OFF+044H  ;CC1INT
      JMPS VEC_SEG,VEC_OFF+048H  ;CC2INT
      JMPS VEC_SEG,VEC_OFF+04CH  ;CC3INT
      JMPS VEC_SEG,VEC_OFF+050H  ;CC4INT
      JMPS VEC_SEG,VEC_OFF+054H  ;CC5INT
      JMPS VEC_SEG,VEC_OFF+058H  ;CC6INT
      JMPS VEC_SEG,VEC_OFF+05CH  ;CC7INT
      JMPS VEC_SEG,VEC_OFF+060H  ;CC8INT
      JMPS VEC_SEG,VEC_OFF+064H  ;CC9INT
      JMPS VEC_SEG,VEC_OFF+068H  ;CC10INT
      JMPS VEC_SEG,VEC_OFF+06CH  ;CC11INT
      JMPS VEC_SEG,VEC_OFF+070H  ;CC12INT
      JMPS VEC_SEG,VEC_OFF+074H  ;CC13INT
      JMPS VEC_SEG,VEC_OFF+078H  ;CC14INT
    VEC_PROC0 ENDP
    VECT_TAB0 ENDS
    

    In the same manner it should be possible to place RETI commands at a defined adress. I hope you will find something similar in A51 assemmbler because this code is written for the C167.

    ...Leo

Reply
  • Hi,
    we realized something very similar. We needed an isr jump table to an adress with offset. So we place the jumps by hand into the code.

    VEC_SEG     EQU 2         ;Segment für Sprungziel z.B. 2 für 2:OFFSETh
    VEC_OFF     EQU 0000H     ;Offset im Segment z.B. 1000H für SEG:1000h
    
    VECT_TAB SECTION CODE AT 0    ; linken auf Adresse 0000h
    VEC_PROC PROC
      ; The RESET vector (0000H) is used by the boot application
      JMPS 0, 0800H             ;bm-Vektor-Tabelle auf 0x800 verschoben
      JMPS VEC_SEG,VEC_OFF+004H
    VEC_PROC ENDP
    VECT_TAB ENDS
    
    
    $if (MONITOR = 0)
     VECT_TAB0 SECTION CODE AT 8       ; Ohne Monitor linken auf Adresse 0008h
    $else
     VECT_TAB0 SECTION CODE AT 00CH    ; Mit Monitor inken auf Adresse 000Ch
    $endif
    
    VEC_PROC0 PROC
    $if (MONITOR = 0)
      JMPS VEC_SEG,VEC_OFF+008H
    $endif
      JMPS VEC_SEG,VEC_OFF+00CH
      JMPS VEC_SEG,VEC_OFF+010H
      JMPS VEC_SEG,VEC_OFF+014H
      JMPS VEC_SEG,VEC_OFF+018H
      JMPS VEC_SEG,VEC_OFF+01CH
      JMPS VEC_SEG,VEC_OFF+020H
      JMPS VEC_SEG,VEC_OFF+024H
      JMPS VEC_SEG,VEC_OFF+028H
      JMPS VEC_SEG,VEC_OFF+02CH
      JMPS VEC_SEG,VEC_OFF+030H
      JMPS VEC_SEG,VEC_OFF+034H
      JMPS VEC_SEG,VEC_OFF+038H
      JMPS VEC_SEG,VEC_OFF+03CH
      JMPS VEC_SEG,VEC_OFF+040H  ;CC0INT
      JMPS VEC_SEG,VEC_OFF+044H  ;CC1INT
      JMPS VEC_SEG,VEC_OFF+048H  ;CC2INT
      JMPS VEC_SEG,VEC_OFF+04CH  ;CC3INT
      JMPS VEC_SEG,VEC_OFF+050H  ;CC4INT
      JMPS VEC_SEG,VEC_OFF+054H  ;CC5INT
      JMPS VEC_SEG,VEC_OFF+058H  ;CC6INT
      JMPS VEC_SEG,VEC_OFF+05CH  ;CC7INT
      JMPS VEC_SEG,VEC_OFF+060H  ;CC8INT
      JMPS VEC_SEG,VEC_OFF+064H  ;CC9INT
      JMPS VEC_SEG,VEC_OFF+068H  ;CC10INT
      JMPS VEC_SEG,VEC_OFF+06CH  ;CC11INT
      JMPS VEC_SEG,VEC_OFF+070H  ;CC12INT
      JMPS VEC_SEG,VEC_OFF+074H  ;CC13INT
      JMPS VEC_SEG,VEC_OFF+078H  ;CC14INT
    VEC_PROC0 ENDP
    VECT_TAB0 ENDS
    

    In the same manner it should be possible to place RETI commands at a defined adress. I hope you will find something similar in A51 assemmbler because this code is written for the C167.

    ...Leo

Children