Email: Password: Remember Me | Create Account (Free)

Back to Subject List

Old thread has been locked -- no new posts accepted in this thread
David Prentice
06/16/09 15:20
Read: 248 times
Wormshill
England


 
#166157 - I think you should read Murray's comments
Responding to: Andy Neil's previous message
Ok. I have just looked at Murray's code.

1. He has already stated that you need to calibrate the function.

2. Yes. It would need re-calibration for a change of memory model

3. Yes. It may need re-calibration for a change of compiler version. It may need re-calibration for a change in optimisation setting.


You can solve the memory model by specifying the data type of the local variable. Then the basic loop will remain the same. The preamble will obviously have a different but insignificant execution time. e.g:
void delay_ms(volatile unsigned int xcount)
{
    data volatile unsigned int count = xcount;
    for(count *= DELAY_MULTPLR; count > 0; count--) continue;

    return;
}



As I said in an earlier post, other compilers and cpus permit inline assembly. So you can use a macro that will produce the exact number of machine cycles.

Personally I would seek a delay_us(us) macro and a delay_ms(int ms) function. And this is exactly what you do with sdcc. But given the limitations of Keil, you could write a single delay.asm with conditional assembly for each memory model.

But for the average Joe, he can just check the given calibration constant and go.

As an exercise for Mr Neil and Mr Malund, I would be interested in a compiler version or setting that creates a different timing loop:
?C0001:
	SETB 	C
	MOV  	A,count?041+01H
	SUBB 	A,#00H
	MOV  	A,count?041
	SUBB 	A,#00H
	JC   	?C0004
?C0003:
	MOV  	A,count?041+01H
	DEC  	count?041+01H
	JNZ  	?C0001
	DEC  	count?041
?C0005:
	SJMP 	?C0001


Yes. I am well aware that the compiler is quite free to create different code. I doubt that it will alter the generation unless there is a version change. In which case the user would re-calibrate.

David.

List of 30 messages in thread
TopicAuthorDate
s/w delay function      Sandeep Gupta      06/02/09 00:50      
   Software loops can be optimized away      Per Westermark      06/02/09 01:07      
   lacks side-effects      Neil Kurzman      06/02/09 01:07      
      First time with LINT?      Andy Neil      06/02/09 01:19      
   lacks side-effects      Andy Neil      06/02/09 01:07      
      That does not mean it is an error.      Neil Kurzman      06/02/09 01:12      
      It also blocks      Jez Smith      06/02/09 01:49      
   How to post legible source code      Andy Neil      06/02/09 01:13      
   DELAY_0.1.ZIP Useful?      Murray R. Van Luyn      06/14/09 22:11      
      That doesn't help, and it won't work anyhow!      Andy Neil      06/15/09 01:54      
         I stand by it.      Murray R. Van Luyn      06/15/09 19:21      
            Yes a delay function is useful      David Prentice      06/16/09 02:39      
               wrong !!!!      Erik Malund      06/16/09 08:46      
               No, that's precisely where you're wrong      Andy Neil      06/16/09 12:35      
            How can you say that?      Andy Neil      06/16/09 12:43      
               I think you should read Murray's comments      David Prentice      06/16/09 15:20      
                  I have seen ...      Erik Malund      06/16/09 15:45      
                     Timers usable without start/stop too        Per Westermark      06/16/09 16:30      
                        free-running counter/timer      Andy Peters      06/18/09 17:30      
                           Unsigned integers      Per Westermark      06/18/09 17:39      
                              re: unsigned      Andy Peters      06/19/09 12:16      
                                 Try unsigned subtraction with borrow      Per Westermark      06/19/09 13:05      
                                 bug in second (improved!?) code block      Andy Peters      06/19/09 16:38      
   Delay Loops in 'C'..!!! NO      Mahesh Joshi      06/16/09 05:44      
      Go on. Suggest a SIMPLE alternative      David Prentice      06/16/09 06:20      
         My Methods      Mahesh Joshi      06/16/09 07:21      
            So he has a long list of constraints      David Prentice      06/16/09 07:46      
               oh boy what a load who wil have 10 minutes for this      Erik Malund      06/16/09 08:55      
                  Ok. I was being naughty.      David Prentice      06/16/09 10:28      
                     you forget the obvious ...      Erik Malund      06/16/09 10:49      

Back to Subject List