On a totally unrelated subject to my sio.c message, I have a second problem. 
 I've built a computer-controlled drill, that is controlled via the parallel 
port.  This drill uses stepper motors, at 1/2 step.  My driver software 
implements a maximum-acceleration control algorithm that ensures that at any 
point in time, any axis will not experience more than X m/s/s of 
acceleration.  This keeps the drill from self-destructing. :)  Unfortunately, 
it means I need access to a very precise timing source to issue the step 
instructions to the motor control board.

        Right now, I use for() as a timing loop.  I calibrate it on program start 
and can then get very precise timing.  There are, of course, the intermittent 
interruptions of the multitasker.  So this solution is not ideal by any 
means.  In fact, the for() loop approach is really meant for the DOS port of 
this software.  I'm wondering if there is any way I can access a more precise 
interrupt-driven (or blocking) timing source.  I know I can do a select() 
with supposedly microsecond accuracy, but I doubt that it is in fact that 
accurate in practice (doesn't the kernel only use a 100Hz clock or 
something?).  Is there any way to get at the system timers on the 
motherboard?  Those can provide precise timing, no?

                --Bart

To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message

Reply via email to