Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 30 Sep 2001 10:18:01 -0500
From:      Bart Kus <bsd@shell-server.com>
To:        hackers@freebsd.org
Subject:   precise timing
Message-ID:  <200109301010.07784@EO>

next in thread | raw e-mail | index | archive | help
	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 majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200109301010.07784>