Date: Tue, 11 Nov 1997 14:02:32 -0800 (PST) From: "Jamil J. Weatherbee" <jamil@trojanhorse.ml.org> To: Peter Dufault <dufault@hda.com> Cc: hackers@freebsd.org Subject: Re: LabPC+ Driver Specifics Message-ID: <Pine.BSF.3.96.971111135016.353A-100000@trojanhorse.ml.org> In-Reply-To: <199711110109.UAA20154@hda.hda.com>
next in thread | previous in thread | raw e-mail | index | archive | help
Can you possibly take a glance at my source in a few days? > There is only one clock on that board. does that mean if you say set AD_MICRO_PERIOD = 10000 and you are reading from 4 of the 8 channels then really each channel is only getting 25 readings per second. (I can't remember of the labpc if internally multiplexed like my board) > > If you have (or are implementing) independent clocks you probably have > (or are implementing) independent FIFOs or other memory channels > and you should handle it as separate instances of the driver, i.e., > as if each is a separate board. Not possible (there is only one clock) and any drivers would have to be cooperating with each other So data acquisiton doesn't start on a labpc channel until the _first_ read, then it is continuous until closing? I was going to have my channels when open not spew any data. when you ioctl() AD_START they start to read at the MICRO_PERIOD rate. when you AD_STOP they stop spewing. Of course if each has its own virtual clock this might not be neccessary. That was my problem in a multiplexed system say you have 3 channels open. channel 1 wants 10hz signal channel 2 wants 20hz signal channel 3 wants 30hz signal then for me you have to do some pretty fancy scheduling stuff and run the 8253 at 60 hz having it go through a scheduling list on each interrupt of which channel to read. Can you explain what the concept of frame means to you in this context? I am currently chaining together each buffer as it comes in and biodone() it when i am finished filling it up (and I AM using QUEUE macros, i finally figured out you were using the structures in your own kind of hacked up way which is fine).. I fear that the labpc can get 8 readings on one interrupt wheras I really only have one port but it is double multiplexed (reading is the two step process of setting a multilplexer address, and letting that settle for 1 click then (thus the external multiplexer signal) then starting a conversion going a click (always more than the 30microsecond conversion time) and reading the result. if I want 48 channels at 10 samples/sec each my clock rate is 960hz for instance.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.3.96.971111135016.353A-100000>