Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
C12666.h@0:575ebe257bd6, 2016-12-15 (annotated)
- 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?
User | Revision | Line number | New 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 |