We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
Good afternoon,
I'm trying to register a serial (com-0) interrupt using uVision 3 on the Cypress FX2LP. The code compiles fine, but the linker warns:
WARNING L16: UNCALLED SEGMENT, IGNORED OVERLAY PROCESS SEGMENT: ?PR?COM_ISR?MAIN
My ISR looks like this:
static void com_isr (void) interrupt 4 { char c; if (RI) { c = SBUF0; // read character RI = 0; // clear interrupt request flag if (istart + ILEN != iend) { inbuf[iend++ & (ILEN-1)] = c; } } if (TI != 0) { TI = 0; // clear interrupt request flag if (ostart != oend) { // if characters in buffer and SBUF0 = outbuf[ostart++ & (OLEN-1)]; // transmit character sendfull = 0; } else { // if all characters transmitted sendactive = 0; // clear 'sendactive' } } }
This code is pretty much copy and pasted from the Keil Help section on Serial Transmission.
This ISR is not being called, even with IE=0x80 (to enable global interrupts) and ES0 = 1 (to enable serial 0 interrupts). Does anyone have any suggestions?
Thanks,
Montana
void com_isr (void) interrupt 4 {
every Keil user has such working did you retype and 'skip' an error in the code?
Erik
You haven't set the option to disable vector table generation, have you...?
I think you got it, noiv will definetely do it if the vector is not set in assembler (I guess that would be the only way to do it manually)
I have used noiv for bootloader/app switch, but see no other use - any takers?