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

L15 WARNING : MULTIPLE CALL TO SEGMENT

SMS interrupt 0{
berita(0x0000,0x3fff);
}

show interrupt 1{
berita(0x4000,0x7fff);
}

Interrupt 0 and interrupt 1 call the same
sub routine but for different purpose.

When compiled, the C51 generated warning L15:
MULTIPLE CALL TO SEGMENT

Segment : ?PR?_BERITA?RTX
Caller1 : ?PR?_SMS?RTX
Caller2 : ?PR?_SHOW?RTX

The program does'nt work at all if
the HEX file programmed to the chip AT89S51.

Any one please, How to omit the warning,
or to use interrupts calls one sub routine
for a different purposes.

Thank you very much
Kurnia Brahmana

Parents
  • Hi Kurnia. Try this, it may solve your problem,
    As what is already suggested by Stefan, you better use a reentrant stack for the perticular function "berita".
    While at defination also you put the reentrant attrib, as...

    berita(x,y) reentrant;
    main()
    {
    }
    SMS interrupt 0{
    berita(0x0000,0x3fff);
    }
    
    show interrupt 1{
    berita(0x4000,0x7fff);
    }
    .
    .
    .
    berita(x,y) reentrant
    {
    .
    .
    }
    
    

Reply
  • Hi Kurnia. Try this, it may solve your problem,
    As what is already suggested by Stefan, you better use a reentrant stack for the perticular function "berita".
    While at defination also you put the reentrant attrib, as...

    berita(x,y) reentrant;
    main()
    {
    }
    SMS interrupt 0{
    berita(0x0000,0x3fff);
    }
    
    show interrupt 1{
    berita(0x4000,0x7fff);
    }
    .
    .
    .
    berita(x,y) reentrant
    {
    .
    .
    }
    
    

Children
  • Try this, it may solve your problem,

    That is problematic because "reentrant" by definition creates slower code and slower code in ISRs is usually (IMHO always) a bad idea.

    As what is already suggested by Stefan
    Stefan "suggested" no such thing, he said "make sure it is reentrant" and stated clearly "Personally I prefer not to call functions from interrupt handlers at all"

    I advise STRONGLY gainst calling subroutines from ISRs and advise WITH AS MUCH FORCE AS I CAN against calling subroutines from more than one level (if you have to, then only call from main OR only call from one ISR)

    Erik