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.
Dependencies: eye_r_eye-htpa32x32-v_1_8-ticker mbed
Fork of eye_r_eye-htpa32x32-v_1_8-ticker by
heimann32x32.h
- Committer:
- withboobs
- Date:
- 2018-03-15
- Revision:
- 2:270ef0ab1a2e
- Parent:
- 0:851be67e4df5
File content as of revision 2:270ef0ab1a2e:
#ifndef _I2C_HEIMANN32X32_ #define _I2C_HEIMANN32X32_ #define AdrPixCMin 0x00 #define AdrPixCMax 0x04 #define AdrGradScale 0x08 #define AdrTableNumber 0x0B //changed to 0x0B with Rev 0.14 and adpated TN readout #define AdrEpsilon 0x0D #define AdrMBITPixC 0x1A #define AdrBIASPixC 0x1B #define AdrCLKPixC 0x1C #define AdrBPAPixC 0x1D #define AdrPUPixC 0x1E #define AdrVddMeasTh1 0x26 #define AdrVddTh1 0x46 #define AdrPTATGrad 0x34 #define AdrVddScaling 0x4E #define AdrVddScalingOff 0x4F #define AdrMBITUser 0x60 #define AdrBIASUser 0x61 #define AdrCLKUser 0x62 #define AdrBPAUser 0x63 #define AdrPUUser 0x64 #define AdrDevID 0x74 #define AdrGlobalOffset 0x54 #define AdrGlobalGain 0x55 #define AdrVddCompValues2 0x340 #define AdrVddCompValues 0x540 #define AdrTh1 0x740 #define AdrTh2 0xF40 #define AdrPixC 0x1740 #define BIAScurrentDefault 0x05 #define CLKTRIMDefault 0x15 //0x20 to let it run with 10 Hz #define BPATRIMDefault 0x0C //#define MBITTRIMDefault 0x0C #define PUTRIMDefault 0x88 //pixelcount etc. for 32x32d #define Pixel 1024 //=32x32 #define PixelEighth 128 #define LINE 32 #define COLUMN 32 #define DATALength 1292//1098 //length of first packet #define DATALength2 1288//1096 //lenght of second/last packet #define DataLengthHalf 646 #define PTATamount 8 #define ELOFFSET 1024 //start address of el. Offset #define ELAMOUNT 256 #define ELAMOUNTHALF 128 #define StackSize 16 //must be choosen by the user! #define PTATSTARTADSRESS 1282 #define VDDADDRESS 1280 #define GetElEveryFrameX 10 //amount of normal frames to capture after which the el. Offset is fetched #define STACKSIZEPTAT 30 //should be an even number #define STACKSIZEVDD 50 //should be an even number #define VddStackAmount 30 #define ReadToFromTable #ifdef ReadToFromTable #define HTPA32x32dL2_1HiSiF5_0 //#define HTPA32x32dL2_1HiSiF5_0 //#define HTPA32x32dL2_1HiSiF5_0_withSiFilter //#define HTPA32x32dL3_6HiSi //#define HTPA32x32dL3_6HiSi_Rev1 //#define HTPA32x32dL7_0HiSi //#define HTPA32x32dL5_0HiGeF7_7 //#define HTPA32x32dL1_6HiGe //#define HTPA32x32dR1L1_6HiGe_Gain3k3 //#define HTPA32x32dR1L2_1SiF5_0_N2 //#define HTPA32x32dL2_1HiSiF5_0_Gain3k3 //is used for SensorRev. 1 //#define HTPA32x32dR1L2_1HiSiF5_0_Precise //#define HTPA32x32dR1L2_85Hi_Gain3k3 //#define HTPA32x32dR1L3_6HiSi_Rev1_Gain3k3 //#define HTPA32x32dR1L5_0HiGeF7_7_Gain3k3 //#define HTPA32x32dR1L7_0HiSi_Gain3k3 #ifdef HTPA32x32dL5_0HiGe #define TABLENUMBER 79 #define PCSCALEVAL 100000000 //327000000000 //PixelConst scale value for table... lower 'L' for (long) #define NROFTAELEMENTS 7 #define NROFADELEMENTS 471 //130 possible due to Program memory, higher values possible if NROFTAELEMENTS is decreased #define TAEQUIDISTANCE 100 //dK #define ADEQUIDISTANCE 64 //dig #define ADEXPBITS 6 //2^ADEXPBITS=ADEQUIDISTANCE #define TABLEOFFSET 512 #define EQUIADTABLE //if defined, ADELEMENTS have to be 2^N quantizied! else more CPU Power is needed #ifdef EQUIADTABLE #undef FLOATTABLE #endif #endif #ifdef HTPA32x32dL5_0HiGeF7_7 #define TABLENUMBER 92 #define PCSCALEVAL 100000000 //327000000000 //PixelConst scale value for table... lower 'L' for (long) #define NROFTAELEMENTS 7 #define NROFADELEMENTS 471 //130 possible due to Program memory, higher values possible if NROFTAELEMENTS is decreased #define TAEQUIDISTANCE 100 //dK #define ADEQUIDISTANCE 64 //dig #define ADEXPBITS 6 //2^ADEXPBITS=ADEQUIDISTANCE #define TABLEOFFSET 256 #define EQUIADTABLE //if defined, ADELEMENTS have to be 2^N quantizied! else more CPU Power is needed #ifdef EQUIADTABLE #undef FLOATTABLE #endif #endif #ifdef HTPA32x32dR1L5_0HiGeF7_7_Gain3k3 #define TABLENUMBER 113 #define PCSCALEVAL 100000000 //327000000000 //PixelConst scale value for table... lower 'L' for (long) #define NROFTAELEMENTS 7 #define NROFADELEMENTS 1595 //130 possible due to Program memory, higher values possible if NROFTAELEMENTS is decreased #define TAEQUIDISTANCE 100 //dK #define ADEQUIDISTANCE 64 //dig #define ADEXPBITS 6 //2^ADEXPBITS=ADEQUIDISTANCE #define TABLEOFFSET 1024 #define EQUIADTABLE //if defined, ADELEMENTS have to be 2^N quantizied! else more CPU Power is needed #ifdef EQUIADTABLE #undef FLOATTABLE #endif #define MBITTRIMDefault 0x2C #define SensRv 1 #endif #ifdef HTPA32x32dL1_6HiGe #define TABLENUMBER 101 #define PCSCALEVAL 100000000 //PixelConst scale value for table... lower 'L' for (long) #define NROFTAELEMENTS 7 #define NROFADELEMENTS 471 //possible due to Program memory, higher values possible if NROFTAELEMENTS is decreased #define TAEQUIDISTANCE 100 //dK #define ADEQUIDISTANCE 64 //dig #define ADEXPBITS 6 //2^ADEXPBITS=ADEQUIDISTANCE #define TABLEOFFSET 256 #define EQUIADTABLE //if defined, ADELEMENTS have to be 2^N quantizied! else more CPU Power is needed #ifdef EQUIADTABLE #undef FLOATTABLE #endif #endif #ifdef HTPA32x32dR1L1_6HiGe_Gain3k3 #define TABLENUMBER 119 #define PCSCALEVAL 100000000 //327000000000 //PixelConst scale value for table... lower 'L' for (long) #define NROFTAELEMENTS 7 #define NROFADELEMENTS 1595 //130 possible due to Program memory, higher values possible if NROFTAELEMENTS is decreased #define TAEQUIDISTANCE 100 //dK #define ADEQUIDISTANCE 64 //dig #define ADEXPBITS 6 //2^ADEXPBITS=ADEQUIDISTANCE #define TABLEOFFSET 1024 #define EQUIADTABLE //if defined, ADELEMENTS have to be 2^N quantizied! else more CPU Power is needed #ifdef EQUIADTABLE #undef FLOATTABLE #endif #define MBITTRIMDefault 0x2C #define SensRv 1 #endif #ifdef HTPA32x32dL2_1HiSi #define TABLENUMBER 80 #define PCSCALEVAL 100000000 //PixelConst scale value for table... lower 'L' for (long) #define NROFTAELEMENTS 7 #define NROFADELEMENTS 471 //130 possible due to Program memory, higher values possible if NROFTAELEMENTS is decreased #define TAEQUIDISTANCE 100 //dK #define ADEQUIDISTANCE 64 //dig #define ADEXPBITS 6 //2^ADEXPBITS=ADEQUIDISTANCE #define TABLEOFFSET 256 #define EQUIADTABLE //if defined, ADELEMENTS have to be 2^N quantizied! else more CPU Power is needed #ifdef EQUIADTABLE #undef FLOATTABLE #endif #endif #ifdef HTPA32x32dL2_1HiSiF5_0 #define TABLENUMBER 96 #define PCSCALEVAL 100000000 //PixelConst scale value for table... lower 'L' for (long) #define NROFTAELEMENTS 7 #define NROFADELEMENTS 471 //130 possible due to Program memory, higher values possible if NROFTAELEMENTS is decreased #define TAEQUIDISTANCE 100 //dK #define ADEQUIDISTANCE 64 //dig #define ADEXPBITS 6 //2^ADEXPBITS=ADEQUIDISTANCE #define TABLEOFFSET 256 #define EQUIADTABLE //if defined, ADELEMENTS have to be 2^N quantizied! else more CPU Power is needed #ifdef EQUIADTABLE #undef FLOATTABLE #endif #endif #ifdef HTPA32x32dR1L2_1SiF5_0_N2 #define TABLENUMBER 130 #define PCSCALEVAL 100000000 //327000000000 //PixelConst scale value for table... lower 'L' for (long) #define NROFTAELEMENTS 7 #define NROFADELEMENTS 1595 //130 possible due to Program memory, higher values possible if NROFTAELEMENTS is decreased #define TAEQUIDISTANCE 100 //dK #define ADEQUIDISTANCE 64 //dig #define ADEXPBITS 6 //2^ADEXPBITS=ADEQUIDISTANCE #define TABLEOFFSET 192 #define EQUIADTABLE //if defined, ADELEMENTS have to be 2^N quantizied! else more CPU Power is needed #ifdef EQUIADTABLE #undef FLOATTABLE #endif #define MBITTRIMDefault 0x2C #define SensRv 1 #endif #ifdef HTPA32x32dL2_1HiSiF5_0_Gain3k3 #define TABLENUMBER 114 #define PCSCALEVAL 100000000 //327000000000 //PixelConst scale value for table... lower 'L' for (long) #define NROFTAELEMENTS 7 #define NROFADELEMENTS 1595 //130 possible due to Program memory, higher values possible if NROFTAELEMENTS is decreased #define TAEQUIDISTANCE 100 //dK #define ADEQUIDISTANCE 64 //dig #define ADEXPBITS 6 //2^ADEXPBITS=ADEQUIDISTANCE #define TABLEOFFSET 1024 #define EQUIADTABLE //if defined, ADELEMENTS have to be 2^N quantizied! else more CPU Power is needed #ifdef EQUIADTABLE #undef FLOATTABLE #endif #define MBITTRIMDefault 0x2C //use REF_CAL=2 here. Table does not match, so GlobalGain ist set to 50 % to compensate this. #define SensRv 1 //Sensor Revision is set to 1 (Redesign) #endif #ifdef HTPA32x32dR1L2_1HiSiF5_0_Precise #define TABLENUMBER 116 #define PCSCALEVAL 100000000 //327000000000 //PixelConst scale value for table... lower 'L' for (long) #define NROFTAELEMENTS 22 #define NROFADELEMENTS 1000 //130 possible due to Program memory, higher values possible if NROFTAELEMENTS is decreased #define TAEQUIDISTANCE 50 //dK #define ADEQUIDISTANCE 32 //dig #define ADEXPBITS 5 //2^ADEXPBITS=ADEQUIDISTANCE #define TABLEOFFSET 1024 #define EQUIADTABLE //if defined, ADELEMENTS have to be 2^N quantizied! else more CPU Power is needed #ifdef EQUIADTABLE #undef FLOATTABLE #endif #define MBITTRIMDefault 0x2C #define SensRv 1 #endif #ifdef HTPA32x32dL2_1HiSiF5_0_withSiFilter #define TABLENUMBER 97 #define PCSCALEVAL 100000000 //PixelConst scale value for table... lower 'L' for (long) #define NROFTAELEMENTS 7 #define NROFADELEMENTS 471 //130 possible due to Program memory, higher values possible if NROFTAELEMENTS is decreased #define TAEQUIDISTANCE 100 //dK #define ADEQUIDISTANCE 64 //dig #define ADEXPBITS 6 //2^ADEXPBITS=ADEQUIDISTANCE #define TABLEOFFSET 256 #define EQUIADTABLE //if defined, ADELEMENTS have to be 2^N quantizied! else more CPU Power is needed #ifdef EQUIADTABLE #undef FLOATTABLE #endif #endif #ifdef HTPA32x32dR1L2_85Hi_Gain3k3 #define TABLENUMBER 127 #define PCSCALEVAL 100000000 //327000000000 //PixelConst scale value for table... lower 'L' for (long) #define NROFTAELEMENTS 7 #define NROFADELEMENTS 1595 //130 possible due to Program memory, higher values possible if NROFTAELEMENTS is decreased #define TAEQUIDISTANCE 100 //dK #define ADEQUIDISTANCE 64 //dig #define ADEXPBITS 6 //2^ADEXPBITS=ADEQUIDISTANCE #define TABLEOFFSET 1024 #define EQUIADTABLE //if defined, ADELEMENTS have to be 2^N quantizied! else more CPU Power is needed #ifdef EQUIADTABLE #undef FLOATTABLE #endif #define MBITTRIMDefault 0x2C #define SensRv 1 #endif #ifdef HTPA32x32dL3_6HiSi #define TABLENUMBER 81 #define PCSCALEVAL 100000000 //PixelConst scale value for table... lower 'L' for (long) #define NROFTAELEMENTS 7 #define NROFADELEMENTS 471 //130 possible due to Program memory, higher values possible if NROFTAELEMENTS is decreased #define TAEQUIDISTANCE 100 //dK #define ADEQUIDISTANCE 64 //dig #define ADEXPBITS 6 //2^ADEXPBITS=ADEQUIDISTANCE #define TABLEOFFSET 256 #define EQUIADTABLE //if defined, ADELEMENTS have to be 2^N quantizied! else more CPU Power is needed #ifdef EQUIADTABLE #undef FLOATTABLE #endif #endif #ifdef HTPA32x32dL3_6HiSi_Rev1 #define TABLENUMBER 106 #define PCSCALEVAL 100000000 //PixelConst scale value for table... lower 'L' for (long) #define NROFTAELEMENTS 7 #define NROFADELEMENTS 471 //130 possible due to Program memory, higher values possible if NROFTAELEMENTS is decreased #define TAEQUIDISTANCE 100 //dK #define ADEQUIDISTANCE 64 //dig #define ADEXPBITS 6 //2^ADEXPBITS=ADEQUIDISTANCE #define TABLEOFFSET 256 #define EQUIADTABLE //if defined, ADELEMENTS have to be 2^N quantizied! else more CPU Power is needed #ifdef EQUIADTABLE #undef FLOATTABLE #endif #endif #ifdef HTPA32x32dR1L3_6HiSi_Rev1_Gain3k3 #define TABLENUMBER 117 #define PCSCALEVAL 100000000 //PixelConst scale value for table... lower 'L' for (long) #define NROFTAELEMENTS 7 #define NROFADELEMENTS 1595 //130 possible due to Program memory, higher values possible if NROFTAELEMENTS is decreased #define TAEQUIDISTANCE 100 //dK #define ADEQUIDISTANCE 64 //dig #define ADEXPBITS 6 //2^ADEXPBITS=ADEQUIDISTANCE #define TABLEOFFSET 1024 #define EQUIADTABLE //if defined, ADELEMENTS have to be 2^N quantizied! else more CPU Power is needed #ifdef EQUIADTABLE #undef FLOATTABLE #endif #define MBITTRIMDefault 0x2C #define SensRv 1 #endif #ifdef HTPA32x32dL7_0HiSi #define TABLENUMBER 107 #define PCSCALEVAL 100000000 //PixelConst scale value for table... lower 'L' for (long) #define NROFTAELEMENTS 7 #define NROFADELEMENTS 471 //130 possible due to Program memory, higher values possible if NROFTAELEMENTS is decreased #define TAEQUIDISTANCE 100 //dK #define ADEQUIDISTANCE 64 //dig #define ADEXPBITS 6 //2^ADEXPBITS=ADEQUIDISTANCE #define TABLEOFFSET 256 #define EQUIADTABLE //if defined, ADELEMENTS have to be 2^N quantizied! else more CPU Power is needed #ifdef EQUIADTABLE #undef FLOATTABLE #endif #endif #ifdef HTPA32x32dR1L7_0HiSi_Gain3k3 #define TABLENUMBER 118 #define PCSCALEVAL 100000000 //PixelConst scale value for table... lower 'L' for (long) #define NROFTAELEMENTS 7 #define NROFADELEMENTS 1595 //130 possible due to Program memory, higher values possible if NROFTAELEMENTS is decreased #define TAEQUIDISTANCE 100 //dK #define ADEQUIDISTANCE 64 //dig #define ADEXPBITS 6 //2^ADEXPBITS=ADEQUIDISTANCE #define TABLEOFFSET 640 #define EQUIADTABLE //if defined, ADELEMENTS have to be 2^N quantizied! else more CPU Power is needed #ifdef EQUIADTABLE #undef FLOATTABLE #endif #define MBITTRIMDefault 0x2C #define SensRv 1 #endif #ifdef HTPA32x32dL2_1HiSiDLC #define TABLENUMBER 83 #define PCSCALEVAL 100000000 //PixelConst scale value for table #define NROFTAELEMENTS 7 #define NROFADELEMENTS 471 #define TAEQUIDISTANCE 100 //dK #define ADEQUIDISTANCE 64 //dig #define ADEXPBITS 6 //2^ADEXPBITS=ADEQUIDISTANCE #define TABLEOFFSET 512 #define EQUIADTABLE //if defined, ADELEMENTS have to be 2^N quantizied! else more CPU Power is needed #ifdef EQUIADTABLE #undef FLOATTABLE #endif #endif #ifdef HTPA32x32dL2_1Si_withSiFilter #define TABLENUMBER 88 #define PCSCALEVAL 100000000 //PixelConst scale value for table #define NROFTAELEMENTS 7 #define NROFADELEMENTS 471 #define TAEQUIDISTANCE 100 //dK #define ADEQUIDISTANCE 8 //dig #define ADEXPBITS 3 //2^ADEXPBITS=ADEQUIDISTANCE #define TABLEOFFSET 64 #define EQUIADTABLE //if defined, ADELEMENTS have to be 2^N quantizied! else more CPU Power is needed #ifdef EQUIADTABLE #undef FLOATTABLE #endif #endif #ifdef HTPA32x32dL5_0HiGeMult #define TABLENUMBER0 79 #define PCSCALEVAL 100000000 //327000000000 //PixelConst scale value for table... lower 'L' for (long) #define NROFTAELEMENTS 7 #define NROFADELEMENTS 251 //130 possible due to Program memory, higher values possible if NROFTAELEMENTS is decreased #define TAEQUIDISTANCE 100 //dK #define ADEQUIDISTANCE 128 //dig #define ADEXPBITS 7 //2^ADEXPBITS=ADEQUIDISTANCE #define TABLEOFFSET 256 #define EQUIADTABLE //if defined, ADELEMENTS have to be 2^N quantizied! else more CPU Power is needed #ifdef EQUIADTABLE #undef FLOATTABLE #endif #endif #endif // // I2C stuff // #define HTP_ADDRESS (0x34) #define HTP_EEPROM_ADDRESS (0xa0) // // REGISTERS: EEPROM // #define HTP_EEPROM_CALIB_HI 0x00 #define HTP_EEPROM_CALIB_LO 0x1A #define HTP_EEPROM_PTAT_HI 0x00 #define HTP_EEPROM_PTAT_GRAD_LO 0x34 #define HTP_EEPROM_PTAT_OFFS_LO 0x38 #define HTP_EEPROM_TN_EPS_HI 0x00 #define HTP_EEPROM_TN_LO 0x0C #define HTP_EEPROM_EPS_LO 0x0D #define HTP_EEPROM_GRADSCALE_HI 0x00 #define HTP_EEPROM_GRADSCALE_LO 0x08 #define HTP_EEPROM_PIXC_HI 0x00 #define HTP_EEPROM_PIXCMIN_LO 0x00 #define HTP_EEPROM_PIXCMAX_LO 0x04 #define HTP_EEPROM_PIX_HI 0x17 #define HTP_EEPROM_PIX_LO 0x40 #define HTP_EEPROM_THGRAD_HI 0x07 #define HTP_EEPROM_THGRAD_LO 0x40 #define HTP_EEPROM_THOFFS_HI 0x0f #define HTP_EEPROM_THOFFS_LO 0x40 // // REGISTERS: HTP // #define HTP_CONFIG 0x01 #define HTP_STATUS 0x02 #define HTP_TRIM1_ADC 0x03 #define HTP_TRIM2_BIAS1 0x04 #define HTP_TRIM3_BIAS2 0x05 #define HTP_TRIM4_FREQ 0x06 #define HTP_TRIM5_BPA1 0x07 #define HTP_TRIM6_BPA2 0x08 #define HTP_TRIM7_PU 0x09 #define HTP_DATA1 0x0a #define HTP_DATA2 0x0b // // CONFIG REGISTER CONFIGURATION BITS // #define CONFIG_WAKEUP 0B00000001 #define CONFIG_BLIND 0B00000010 #define CONFIG_START 0B00001000 #define CONFIG_BLOCK_LSB 0B00010000 #define CONFIG_BLOCK_MSB 0B00100000 // // STATUS REGISTER CONFIGURATION BITS // #define STATUS_EOC 0B00000001 #define STATUS_BLOCK_LSB 0B00000100 #define STATUS_BLOCK_MSB 0B00001000 // // TRIM1/ADC REGISTER CONFIGURATION BITS // #define TRIM1_ADC_MASK 0B00001111 // // TRIM2/BIAS1 REGISTER CONFIGURATION BITS // TRIM3/BIAS2 REGISTER CONFIGURATION BITS // #define TRIM_BIAS_MASK 0B00011111 // // TRIM4/FREQ REGISTER CONFIGURATION BITS // #define TRIM_FREQ_MASK 0B00111111 // // TRIM5/BPA1 REGISTER CONFIGURATION BITS // TRIM6/BPA2 REGISTER CONFIGURATION BITS // #define TRIM_BPA_MASK 0B00011111 // // TRIM7/PU REGISTER CONFIGURATION BITS // #define PU_SDA_1K 0B00010000 #define PU_SDA_10K 0B00100000 #define PU_SDA_50K 0B01000000 #define PU_SDA_100K 0b10000000 #define PU_SCL_1K 0B00000001 #define PU_SCL_10K 0B00000010 #define PU_SCL_50K 0B00000100 #define PU_SCL_100K 0B00001000 #define HTPA_PROC_RAW 0x00 #define HTPA_PROC_ELOFFS 0x01 #define HTPA_PROC_THOFFS 0x02 #define HTPA_PROC_CONVERT 0x04 // // CLASS // class HTPA32x32 { public: HTPA32x32(I2C * _i2c, I2C * _i2ce, uint8_t a1 = HTP_ADDRESS, uint8_t a2 = HTP_EEPROM_ADDRESS); volatile uint8_t mbit, bias, clk, bpa, pu, epsilon, gradScale, tn, proc, available; volatile int i2c_addr_htpa, i2c_addr_eeprom; volatile float PixC[1024], PixCmin, PixCmax, PTATgrad, PTAToffs; volatile uint16_t Ta_dK, Ta_dK_prev, Ta_dK_prev_prev; volatile int16_t Data[1024], ThGrad[1024], ThOffs[1024], ElOffs[256]; volatile uint16_t TempTable_TA[NROFADELEMENTS]; uint8_t ADC ( void ), ADC(uint8_t); uint8_t PU ( void ), PU(uint8_t); uint8_t BIAS ( void ), BIAS (uint8_t); uint8_t CLOCK ( void ), CLOCK (uint8_t); uint8_t BPA ( void ), BPA (uint8_t); uint8_t eoc (void); void init( void ); void readb(); void start(); void apply_offsets( void ); uint16_t find_dk_from_v ( int16_t v ); private: I2C * i2c, *i2ce; uint8_t b; void read_eeprom(uint8_t HiReg, uint8_t LoReg, char *data_ptr, int DCnt); void download_PIJ( void ); void find_temptable_from_ta ( void ); }; #endif