work in progress
Dependencies: FastAnalogIn FastIO USBDevice mbed FastPWM SimpleDMA
Fork of Pinscape_Controller by
TSL1410R/tsl410r.cpp
- Committer:
- mjr
- Date:
- 2015-02-27
- Revision:
- 17:ab3cec0c8bf4
- Parent:
- 14:df700b22ca08
File content as of revision 17:ab3cec0c8bf4:
#if 0 // this file is no longer used - the method bodies are no in the header, // which was necessary because of the change to a template class, which // itself was necessary because of the use of the FastIO library #include "mbed.h" #include "tsl1410r.h" template <PinName siPin, PinName clockPin> TSL1410R<siPin, clockPin>:: TSL1410R<siPin, clockPin>(PinName aoPort) : ao(aoPort) { // clear out power-on noise by clocking through all pixels twice clear(); clear(); } template <PinName siPin, PinName clockPin> void TSL1410R<siPin, clockPin>::clear() { // clock in an SI pulse si = 1; clock = 1; clock = 0; si = 0; // clock out all pixels for (int i = 0 ; i < nPix + 1 ; ++i) { clock = 1; clock = 0; } } template <PinName siPin, PinName clockPin> void TSL1410R<siPin, clockPin>:: read(uint16_t *pix, int n, void (*cb)(void *ctx), void *cbctx, int cbcnt) { // start the next integration cycle by pulsing SI and one clock si = 1; clock = 1; clock = 0; si = 0; // figure how many pixels to skip on each read int skip = nPix/n - 1; // figure the callback interval int cbInterval = nPix; if (cb != 0) cbInterval = nPix/(cbcnt+1); // read all of the pixels for (int src = 0, dst = 0 ; src < nPix ; ) { // figure the end of this callback interval int srcEnd = src + cbInterval; if (srcEnd > nPix) srcEnd = nPix; // read one callback chunk of pixels for ( ; src < srcEnd ; ++src) { // read this pixel pix[dst++] = ao.read_u16(); // clock in the next pixel clock = 1; clock = 0; // clock skipped pixels for (int i = 0 ; i < skip ; ++i, ++src) { clock = 1; clock = 0; } } // call the callback, if we're not at the last pixel if (cb != 0 && src < nPix) (*cb)(cbctx); } // clock out one extra pixel to leave A1 in the high-Z state clock = 1; clock = 0; } #endif /* 0 */