2000-04-03
A simple Linux kernel module to drive the August 1996 EA Pocket Sampler.
Some time ago (1999-05-11) Max Lock emailed me about the driver and hardware unit, he was kind enough to email me some PDFs of the kit plans. These are a little more modern than mine, this unit has a precision voltage reference and requires no calibration, identical ADC hardware though.
A simple Linux char device driver was written to talk to the device. It implements:
It honours O_NONBLOCK and is concurrent read() safe. It should compile on Linux 1.2.13 and later, including 2.0.3x and 2.2.1x. It may need modification for the very latest kernels, Linux is a moving target.
read(): Returns text, a line of 4 integers. The first two are the sample time, epoch seconds, and microseconds (from do_gettimeofday()). The third is the level switch position for that sample (2 or 20 volts). The forth is the raw sample; 0-255.
In single shot mode (see below), a single sample is returned on read(), later reads on the same file descriptor will return 0 bytes readable. In periodic sampling mode, a blocking read() will occur, making the device node appear like a pipe.
write(): writing to the device controls the sampling interval. An integer in plain text is written to the device to change the sampling period. A zero will yield single shot mode, any other value will cause a sample to be taken every 100ms times that value. The default initial value is zero, or single shot mode.
open(), select(), and close() work as expected.
The code is here: eapsampler-2.0.tar.gz
Leave a comment on this article.