| David Prentice 06/16/09 02:39 Read: 273 times Wormshill England Msg Score: 0 +1 Good Answer/Helpful -1 Answer is Wrong |
#166115 - Yes a delay function is useful Responding to: Murray R. Van Luyn's previous message |
There are several ways to implement a delay.
1. Using the hardware Timers 2. A software delay loop Both methods depend on the system clock. The first method requires resources that may be already in use. The software method is fairly portable with the important proviso that you need to calibrate it for your particular compiler, version memory model .... Having done the single calibration, all of the project code is going to run at the intended speed. e.g. if you want to delay for one millisecond you call delay_ms(1) rather than some arbitrarily named function with some magic constant. With many microcontroller compilers, you implement the delay with inline ASM code with the parameters calculated by a C macro solely dependent on F_CPU and the #microseconds required. If the compiler does not permit inline ASM, you just have to calibrate a C loop that is written to give "predictable" code. ( probably by forcing specific memory model volatile variables). By no means perfect but a practical solution. And if you change compiler, cpu, memory model... you only have one place to alter or re-calibrate your macro or function. David. |
| Topic | Author | Date |
| 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 |



