[vox-tech] Must a 300 microsecond delay keep the CPU busy?
John Wojnaroski
castle at mminternet.com
Tue Apr 4 12:46:16 PDT 2006
Not knowing the details of your board, it is a little tough to propose a
better solution, but here goes.
Since your using the parallel port, you should consider an interrupt
based driver, have the board provide the interrupt signal when the A/D
conversion is completed. Most A/D chips provide a sense line that
indicates when the converion is completed and the data can be read. that
way you don't have to "wait" for the board.
Connect the sense line to the interrupt pin on the parallel port.
Then create a tasklet that is called by the driver to move the data from
kernel space to user space.
This is a bit more complex than a simple polling scheme, but far more
elegant and reliable and totally independent of CPU speed or processor
performance. Odds are you won't even notice the short time the CPU is
servicing the interrupt.
Regards
John W
Chris Jenks wrote:
>
> Dear Group,
>
> I'm writing a C program on my Debian system to read from an
> interface board through the parallel port. I need to wait at least 300
> microseconds before reading from the next channel, to give the A/D
> converter on the board time to stabilize, but I don't want to wait
> much longer (e.g., 10 milliseconds) because it will make the program
> too slow. The delay functions (usleep, nanosleep...) only provide
> delays down to 10-30 milliseconds, despite their name, because they
> apparently yield the CPU to other tasks with every call. The best
> solution I've found it to read (or write) to a port (e.g., 0x80),
> which takes one microsecond. By doing this 300 times, I get something
> close to the wanted delay, plus a little because of time sharing, but
> it is good enough. The only thing I don't like is that my process
> takes about 97% of the CPU, even though it spends almost all its time
> waiting. The CPU is a fanless 386, and it runs pretty hot at 97%
> usage. Is there an elegant solution to this, or should I look for a
> CPU fan? I would like to leave this a time-sharing system.
>
> Thanks,
>
> Chris
> _______________________________________________
> vox-tech mailing list
> vox-tech at lists.lugod.org
> http://lists.lugod.org/mailman/listinfo/vox-tech
>
>
More information about the vox-tech
mailing list