nothing to say

Dependencies:   mbed

Revision:
0:ca29dd5bc1d8
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/heimann32x32.h	Wed Feb 21 18:13:45 2018 +0000
@@ -0,0 +1,569 @@
+#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
+            end (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