| Andy Peters 06/18/09 17:30 Read: 283 times Tucson, Az USA |
#166231 - free-running counter/timer Responding to: Per Westermark's previous message |
Per Westermark said:
On another note. You don't have to start/stop a timer to use it for timing. I often use a free-running timer. It may have an interrupt handler ticking every 1ms or 10ms or whatever. But I can also let a software delay read out the current value and then wait until it has ticked a specific number of steps or a specific number of turn-arounds or whatever is applicable. I do this, too, although most recently on Xilinx MicroBlaze and PPC designs. The hardware includes a free-running 32-bit counter, and I make this counter available to both arbitrary FPGA logic as well as appearing to the micro as a read-only register. Before going into the for(;;) loop I read and save the counter value. The main loop of the micro application reads that register once per run through the loop, and compares the difference between the saved value and the current value, and if it exceeds some constant, then I do whatever I needed to do at that interval, and I save the new count, and start it all again. This works well for millisecond counts, and at 80 MHz, the counter rolls over every 53 seconds and anyways, my compare takes rollovers into account. I suppose if I needed microsecond-level accuracy I'd consider something else, like perhaps having the counter interrupt. -a |
| 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 |



