CCS C Software and Maintenance Offers
FAQFAQ   FAQForum Help   FAQOfficial CCS Support   SearchSearch  RegisterRegister 

ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

CCS does not monitor this forum on a regular basis.

Please do not post bug reports on this forum. Send them to support@ccsinfo.com

#INLINE fixes the warning , but why ???

 
Post new topic   Reply to topic    CCS Forum Index -> General CCS C Discussion
View previous topic :: View next topic  
Author Message
asmboy



Joined: 20 Nov 2007
Posts: 2128
Location: albany ny

View user's profile Send private message AIM Address

#INLINE fixes the warning , but why ???
PostPosted: Wed Jan 28, 2015 2:45 pm     Reply with quote

Program build with xtal oscillator of 10mhz 18f2525

timer 0,1,2 have simple flag based #int handlers

there is NO #INT handler for timer3...

there are NO delay_xx calls of any kind ( _MS _US _CYCLES - nothing !!)

.LST hdr
CCS PCH C Compiler, Version 5.036, 15300 28-Jan-15 15:12

Filename: D:\A_FW2\Q8.lst

ROM used: 20222 bytes (41%)
Largest free fragment is 28926
RAM used: 487 (12%) at main() level
518 (13%) worst case
Stack used: 6 locations (4 in main + 2 for interrupts)
Stack size: 31
Code:


void Wait25MS(unsigned int8 howmany){
     #bit TMR3IF=0xFA1.1
     set_timer3(0);
     tmr3if=0;
     while(howmany){
           if (TMR3IF){
                tmr3if=0;
                --howmany;
           }
     }
}

// even this junk substitute causes the same warning.....

void Wait25MS(unsigned int8 howmany){
     while(howmany) --howmany; 
}


then this .ERR file

>>> Warning 203 "Q8.c" Line 1900(1,1): Condition always TRUE ( while(1) )
>>> Warning 216 "Q8.c" Line 2461(1,2): Interrupts disabled during call to prevent re-entrancy: (Wait25MS)
Memory usage: ROM=41% RAM=12% - 13%
0 Errors, 2 Warnings.
Build Successful.

BTW: line 2461 is the very last line of MAIN() and the program file itself...

what is there about calling a non interrupting delay function that causes this ??

BTW: i get the exact same warning in Ver 4.141 too
Makes no sense to me........

BUT making the function
#INLINE
fixes the re-entrant warning
and.
then it compiles with just the one silly warn about while(1);

huh ??
PCM programmer



Joined: 06 Sep 2003
Posts: 21708

View user's profile Send private message

PostPosted: Wed Jan 28, 2015 3:21 pm     Reply with quote

I didn't get any warnings. Tested with vs. 5.036.
Quote:
Executing: "C:\Program files\Picc\CCSC.exe" +FH "PCH_Test.c" +DF +LY -T -A +M -Z +Y=9 +EA -EW #__18F2525=TRUE
Memory usage: ROM=0% RAM=0% - 0%
0 Errors, 0 Warnings.
Build Successful.
Loaded C:\Program Files\PICC\Projects\PCH_Test\PCH_Test.cof.
BUILD SUCCEEDED: Wed Jan 28 13:18:58 2015

Note while(TRUE) removes the other warning.
Test program:
Code:

#include <18F2525.h> 
#fuses HS,NOWDT
#use delay (clock=10M)

void Wait25MS(unsigned int8 howmany){
     #bit TMR3IF=0xFA1.1
     set_timer3(0);
     tmr3if=0;
     while(howmany){
           if (TMR3IF){
                tmr3if=0;
                --howmany;
           }
     }
}

//==========================
void main()
{
   
while(TRUE);
}
Ttelmah



Joined: 11 Mar 2010
Posts: 19225

View user's profile Send private message

PostPosted: Wed Jan 28, 2015 4:06 pm     Reply with quote

It would suggest wait25ms, is being called inside an interrupt somewhere. If you call the routine in the main code, and also inside an interrupt routine, you will get the interrupt_disabled warning. This is because code cannot be called from inside 'itself'. Search here.
Since it does not use any variables, declaring it as #inline, will allow it to be used in both places, since it then becomes two separate routines.
asmboy



Joined: 20 Nov 2007
Posts: 2128
Location: albany ny

View user's profile Send private message AIM Address

PostPosted: Wed Jan 28, 2015 4:38 pm     Reply with quote

Just Got it: Thanks PCM_P

this is an inherited code mess being altered for a brand new client
- AND i had done a blind quick S&R job on to get rid of delay_MS () salted throughout the program , using timer3 for 25 msec increments of delay
and did not catch a function calling a function calling the function in question in the nest-- ;-((

AND MR. T was correct - i overlooked the stack situation inside the #int

the upside is i can now restructure the #int handler to do the deed
in question in MAIN() with just a bit flag set.

T H A N K S to you both for the kind analysis
Ttelmah



Joined: 11 Mar 2010
Posts: 19225

View user's profile Send private message

PostPosted: Thu Jan 29, 2015 1:50 am     Reply with quote

Inherited code.....

Trying to work out an epithet for this without being rude.

Anyway, you 'step forwards'. Smile
drh



Joined: 12 Jul 2004
Posts: 192
Location: Hemet, California USA

View user's profile Send private message

PostPosted: Thu Jan 29, 2015 9:09 am     Reply with quote

It's always fun trying to figure out what another person intended their undocumented code to do, then figure out why is doesn't do that. Then correct or re-write to make the customer happy. Even more fun getting paid to do that.
_________________
David
asmboy



Joined: 20 Nov 2007
Posts: 2128
Location: albany ny

View user's profile Send private message AIM Address

PostPosted: Thu Jan 29, 2015 9:24 am     Reply with quote

Code:

Inherited code.....


has anybody else run into 'comments' in alien code only to find that they say more about the authors degree ( or lack ) of skill than-
about the code it purports to describe ??

It is especially difficult when the circuitry allegedly under control
is deficient too. Good code can't fix a bad circuit, and making 'hacks' to an existing circuit board at the same time as reworking the code itself is extra fun to be had , with "inheritance" ...........
temtronic



Joined: 01 Jul 2010
Posts: 9113
Location: Greensville,Ontario

View user's profile Send private message

PostPosted: Thu Jan 29, 2015 10:07 am     Reply with quote

some times it's easier,faster, cheaper.... to just 'start from scratch' especially these days with hi speed PCs, CCS C compiler and 'instant' programming unlike the good old dayze of diode based boot 'proms', papertape readers, real 'core'.....

sigh
I miss them!

jay
Ttelmah



Joined: 11 Mar 2010
Posts: 19225

View user's profile Send private message

PostPosted: Thu Jan 29, 2015 10:13 am     Reply with quote

The really fun one, is where you have what may be quite competent documentation, but it is in another language. Unfortunately a lot of technical terms are not translated by either programs or translators, unless you have one who 'knows' the specific stuff about a technical process. Trying to find a polyglot who is a specialist in a mix of fields like chemistry, electronics, industrial measurement, & optics, can be very hard indeed. Some of the automated translations are positively 'hysterical', on technical phrases....
Display posts from previous:   
Post new topic   Reply to topic    CCS Forum Index -> General CCS C Discussion All times are GMT - 6 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group