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>