Michael Hogan / Mbed 2 deprecated Hamamatsu_C12666MA

Dependencies:   mbed

Committer:
mikehogan62
Date:
Thu Dec 15 04:47:55 2016 +0000
Revision:
0:575ebe257bd6
Initial publication of code for Hamamatsu C12666MA sensor and Pure Engineering carrier module for ST Micro mbed modules.  Licensed as Creative Commons, non-commercial, shara alike .. see https://creativecommons.org/licenses/by-nc-sa/2.0/ for details

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mikehogan62 0:575ebe257bd6 1 #ifndef C1266_H
mikehogan62 0:575ebe257bd6 2 #define C1266_H
mikehogan62 0:575ebe257bd6 3 #include "mbed.h"
mikehogan62 0:575ebe257bd6 4
mikehogan62 0:575ebe257bd6 5
mikehogan62 0:575ebe257bd6 6 enum SpecState {spec_idle, spec_start, spec_sample_clock0, spec_sample_clock1, spec_sample_clock2, spec_sample_clock3};
mikehogan62 0:575ebe257bd6 7
mikehogan62 0:575ebe257bd6 8 // number of different spectral bins
mikehogan62 0:575ebe257bd6 9 #define SPEC_CHANNELS 256
mikehogan62 0:575ebe257bd6 10
mikehogan62 0:575ebe257bd6 11 // default clock pulse width
mikehogan62 0:575ebe257bd6 12 #define DEFAULT_CLOCK_PULSE_US 100
mikehogan62 0:575ebe257bd6 13
mikehogan62 0:575ebe257bd6 14 // shortest clock pulse width we will permit
mikehogan62 0:575ebe257bd6 15 #define MIN_CLOCK_PULSE_US 5
mikehogan62 0:575ebe257bd6 16
mikehogan62 0:575ebe257bd6 17 // default gain limits for hi gain and low gain
mikehogan62 0:575ebe257bd6 18 // If we exceed these levels,
mikehogan62 0:575ebe257bd6 19 #define DEFAULT_VIDEO_AD_MAX_HI_GAIN 40000
mikehogan62 0:575ebe257bd6 20 #define DEFAULT_VIDEO_AD_MAX_LO_GAIN 32000
mikehogan62 0:575ebe257bd6 21
mikehogan62 0:575ebe257bd6 22 #define DEFAULT_VIDEO_BIAS 0
mikehogan62 0:575ebe257bd6 23 #define SPEC_SERIAL_NUM_LEN 32
mikehogan62 0:575ebe257bd6 24
mikehogan62 0:575ebe257bd6 25
mikehogan62 0:575ebe257bd6 26
mikehogan62 0:575ebe257bd6 27 void specClockFn();
mikehogan62 0:575ebe257bd6 28
mikehogan62 0:575ebe257bd6 29 class C12666_spectrometer
mikehogan62 0:575ebe257bd6 30 {
mikehogan62 0:575ebe257bd6 31 public:
mikehogan62 0:575ebe257bd6 32 C12666_spectrometer();
mikehogan62 0:575ebe257bd6 33 ~C12666_spectrometer();
mikehogan62 0:575ebe257bd6 34
mikehogan62 0:575ebe257bd6 35
mikehogan62 0:575ebe257bd6 36 // set the serial number and calibration coefficients for that serial number
mikehogan62 0:575ebe257bd6 37 void setCalibration(const char* psz_newSerialNum, double newA_0, double newB_1, double newB_2, double newB_3, double newB_4, double newB_5){
mikehogan62 0:575ebe257bd6 38 strncpy(pszSerialNum, psz_newSerialNum, SPEC_SERIAL_NUM_LEN-1);
mikehogan62 0:575ebe257bd6 39 A_0 = newA_0;
mikehogan62 0:575ebe257bd6 40 B_1 = newB_1;
mikehogan62 0:575ebe257bd6 41 B_2 = newB_2;
mikehogan62 0:575ebe257bd6 42 B_3 = newB_3;
mikehogan62 0:575ebe257bd6 43 B_4 = newB_4;
mikehogan62 0:575ebe257bd6 44 B_5 = newB_5;
mikehogan62 0:575ebe257bd6 45
mikehogan62 0:575ebe257bd6 46 }
mikehogan62 0:575ebe257bd6 47
mikehogan62 0:575ebe257bd6 48 // retrieve all of the calibration coefficients
mikehogan62 0:575ebe257bd6 49 void getCalibration(char* psz_getSerialNum, double& getA_0, double& getB_1, double& getB_2, double& getB_3, double& getB_4, double& getB_5){
mikehogan62 0:575ebe257bd6 50 strncpy(psz_getSerialNum, pszSerialNum, SPEC_SERIAL_NUM_LEN-1);
mikehogan62 0:575ebe257bd6 51 getA_0 = A_0;
mikehogan62 0:575ebe257bd6 52 getB_1 = B_1;
mikehogan62 0:575ebe257bd6 53 getB_2 = B_2;
mikehogan62 0:575ebe257bd6 54 getB_3 = B_3;
mikehogan62 0:575ebe257bd6 55 getB_4 = B_4;
mikehogan62 0:575ebe257bd6 56 getB_5 = B_5;
mikehogan62 0:575ebe257bd6 57 }
mikehogan62 0:575ebe257bd6 58
mikehogan62 0:575ebe257bd6 59 void getVolatileParams(int& specClockSig_, int& specReady_, SpecState& specState_, int& specDataIndex_, unsigned int& specBufferFilling_);
mikehogan62 0:575ebe257bd6 60 void getRawSpectrum(uint16_t* rawSpectrumBuffer);
mikehogan62 0:575ebe257bd6 61
mikehogan62 0:575ebe257bd6 62 void Start();
mikehogan62 0:575ebe257bd6 63 void Stop();
mikehogan62 0:575ebe257bd6 64 void setNumDarks();
mikehogan62 0:575ebe257bd6 65
mikehogan62 0:575ebe257bd6 66 void setWhiteLED(int onOrOff);
mikehogan62 0:575ebe257bd6 67 void setUVLED(int onOrOff);
mikehogan62 0:575ebe257bd6 68 void setClockPeriod(long clockPeriod_usec);
mikehogan62 0:575ebe257bd6 69 inline long getClockPeriod(){ return clockPulse_us; }
mikehogan62 0:575ebe257bd6 70
mikehogan62 0:575ebe257bd6 71
mikehogan62 0:575ebe257bd6 72 protected:
mikehogan62 0:575ebe257bd6 73
mikehogan62 0:575ebe257bd6 74
mikehogan62 0:575ebe257bd6 75 timestamp_t clockPulse_us;
mikehogan62 0:575ebe257bd6 76
mikehogan62 0:575ebe257bd6 77
mikehogan62 0:575ebe257bd6 78
mikehogan62 0:575ebe257bd6 79
mikehogan62 0:575ebe257bd6 80
mikehogan62 0:575ebe257bd6 81
mikehogan62 0:575ebe257bd6 82 char pszSerialNum[SPEC_SERIAL_NUM_LEN];
mikehogan62 0:575ebe257bd6 83 double A_0;
mikehogan62 0:575ebe257bd6 84 double B_1;
mikehogan62 0:575ebe257bd6 85 double B_2;
mikehogan62 0:575ebe257bd6 86 double B_3;
mikehogan62 0:575ebe257bd6 87 double B_4;
mikehogan62 0:575ebe257bd6 88 double B_5;
mikehogan62 0:575ebe257bd6 89
mikehogan62 0:575ebe257bd6 90
mikehogan62 0:575ebe257bd6 91 };
mikehogan62 0:575ebe257bd6 92
mikehogan62 0:575ebe257bd6 93 #endif