Interfacing with a Photodiode Array
The TAOS Photodiode Linear Sensor Array (TSL1406R) is an array of 768 photodiodes spread over the length of about 2 inches. Each of the individual photodiodes outputs an analog voltage which is proportional the intensity and duration of incident light. This duration is called the "integration time".
During the integration time, a separate dedicated capacitor is charged by each of the photodiodes. When the HOLD signal goes high, each of the charges accumulated during the integration time is simultaneously passed to its dedicated holding capacitor. The analog voltages on each holding capacitor can then be read one-by-one at the clock speed. Here I use the PWM function of the PIC to act as the CLK signal.
In this particular code, the data is clocked out so quickly that it is impossible to read every analog level (since the PIC is only capable of an analog read every ~5us). To remedy this, we low pass filter the analog output and read in analog data as quickly as possible.
Sample code: Photodiode_array.c