Library for Adafruit AMG8833. Forked from arduino version

Dependents:   AMG3x3

Committer:
hisyamfs
Date:
Fri Jun 14 12:49:30 2019 +0000
Revision:
0:9aaf1afdeac0
okey;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
hisyamfs 0:9aaf1afdeac0 1 #ifndef LIB_ADAFRUIT_AMG88XX_H
hisyamfs 0:9aaf1afdeac0 2 #define LIB_ADAFRUIT_AMG88XX_H
hisyamfs 0:9aaf1afdeac0 3
hisyamfs 0:9aaf1afdeac0 4 #include "mbed.h"
hisyamfs 0:9aaf1afdeac0 5
hisyamfs 0:9aaf1afdeac0 6 /*=========================================================================
hisyamfs 0:9aaf1afdeac0 7 I2C ADDRESS/BITS
hisyamfs 0:9aaf1afdeac0 8 -----------------------------------------------------------------------*/
hisyamfs 0:9aaf1afdeac0 9 #define AMG88xx_ADDRESS (0x69 << 1)
hisyamfs 0:9aaf1afdeac0 10 /*=========================================================================*/
hisyamfs 0:9aaf1afdeac0 11
hisyamfs 0:9aaf1afdeac0 12 /*=========================================================================
hisyamfs 0:9aaf1afdeac0 13 REGISTERS
hisyamfs 0:9aaf1afdeac0 14 -----------------------------------------------------------------------*/
hisyamfs 0:9aaf1afdeac0 15 enum
hisyamfs 0:9aaf1afdeac0 16 {
hisyamfs 0:9aaf1afdeac0 17 AMG88xx_PCTL = 0x00,
hisyamfs 0:9aaf1afdeac0 18 AMG88xx_RST = 0x01,
hisyamfs 0:9aaf1afdeac0 19 AMG88xx_FPSC = 0x02,
hisyamfs 0:9aaf1afdeac0 20 AMG88xx_INTC = 0x03,
hisyamfs 0:9aaf1afdeac0 21 AMG88xx_STAT = 0x04,
hisyamfs 0:9aaf1afdeac0 22 AMG88xx_SCLR = 0x05,
hisyamfs 0:9aaf1afdeac0 23 //0x06 reserved
hisyamfs 0:9aaf1afdeac0 24 AMG88xx_AVE = 0x07,
hisyamfs 0:9aaf1afdeac0 25 AMG88xx_INTHL = 0x08,
hisyamfs 0:9aaf1afdeac0 26 AMG88xx_INTHH = 0x09,
hisyamfs 0:9aaf1afdeac0 27 AMG88xx_INTLL = 0x0A,
hisyamfs 0:9aaf1afdeac0 28 AMG88xx_INTLH = 0x0B,
hisyamfs 0:9aaf1afdeac0 29 AMG88xx_IHYSL = 0x0C,
hisyamfs 0:9aaf1afdeac0 30 AMG88xx_IHYSH = 0x0D,
hisyamfs 0:9aaf1afdeac0 31 AMG88xx_TTHL = 0x0E,
hisyamfs 0:9aaf1afdeac0 32 AMG88xx_TTHH = 0x0F,
hisyamfs 0:9aaf1afdeac0 33 AMG88xx_INT_OFFSET = 0x010,
hisyamfs 0:9aaf1afdeac0 34 AMG88xx_PIXEL_OFFSET = 0x80
hisyamfs 0:9aaf1afdeac0 35 };
hisyamfs 0:9aaf1afdeac0 36
hisyamfs 0:9aaf1afdeac0 37 enum power_modes{
hisyamfs 0:9aaf1afdeac0 38 AMG88xx_NORMAL_MODE = 0x00,
hisyamfs 0:9aaf1afdeac0 39 AMG88xx_SLEEP_MODE = 0x01,
hisyamfs 0:9aaf1afdeac0 40 AMG88xx_STAND_BY_60 = 0x20,
hisyamfs 0:9aaf1afdeac0 41 AMG88xx_STAND_BY_10 = 0x21
hisyamfs 0:9aaf1afdeac0 42 };
hisyamfs 0:9aaf1afdeac0 43
hisyamfs 0:9aaf1afdeac0 44 enum sw_resets {
hisyamfs 0:9aaf1afdeac0 45 AMG88xx_FLAG_RESET = 0x30,
hisyamfs 0:9aaf1afdeac0 46 AMG88xx_INITIAL_RESET = 0x3F
hisyamfs 0:9aaf1afdeac0 47 };
hisyamfs 0:9aaf1afdeac0 48
hisyamfs 0:9aaf1afdeac0 49 enum frame_rates {
hisyamfs 0:9aaf1afdeac0 50 AMG88xx_FPS_10 = 0x00,
hisyamfs 0:9aaf1afdeac0 51 AMG88xx_FPS_1 = 0x01
hisyamfs 0:9aaf1afdeac0 52 };
hisyamfs 0:9aaf1afdeac0 53
hisyamfs 0:9aaf1afdeac0 54 enum int_enables{
hisyamfs 0:9aaf1afdeac0 55 AMG88xx_INT_DISABLED = 0x00,
hisyamfs 0:9aaf1afdeac0 56 AMG88xx_INT_ENABLED = 0x01
hisyamfs 0:9aaf1afdeac0 57 };
hisyamfs 0:9aaf1afdeac0 58
hisyamfs 0:9aaf1afdeac0 59 enum int_modes {
hisyamfs 0:9aaf1afdeac0 60 AMG88xx_DIFFERENCE = 0x00,
hisyamfs 0:9aaf1afdeac0 61 AMG88xx_ABSOLUTE_VALUE = 0x01
hisyamfs 0:9aaf1afdeac0 62 };
hisyamfs 0:9aaf1afdeac0 63
hisyamfs 0:9aaf1afdeac0 64 /*=========================================================================*/
hisyamfs 0:9aaf1afdeac0 65
hisyamfs 0:9aaf1afdeac0 66 #define AMG88xx_PIXEL_ARRAY_SIZE 64
hisyamfs 0:9aaf1afdeac0 67 #define AMG88xx_PIXEL_TEMP_CONVERSION .25
hisyamfs 0:9aaf1afdeac0 68 #define AMG88xx_THERMISTOR_CONVERSION .0625
hisyamfs 0:9aaf1afdeac0 69
hisyamfs 0:9aaf1afdeac0 70 /**************************************************************************/
hisyamfs 0:9aaf1afdeac0 71 /*!
hisyamfs 0:9aaf1afdeac0 72 @brief Class that stores state and functions for interacting with AMG88xx IR sensor chips
hisyamfs 0:9aaf1afdeac0 73 */
hisyamfs 0:9aaf1afdeac0 74 /**************************************************************************/
hisyamfs 0:9aaf1afdeac0 75 class Adafruit_AMG88xx {
hisyamfs 0:9aaf1afdeac0 76 public:
hisyamfs 0:9aaf1afdeac0 77 //constructors
hisyamfs 0:9aaf1afdeac0 78 Adafruit_AMG88xx(PinName sda, PinName scl);
hisyamfs 0:9aaf1afdeac0 79
hisyamfs 0:9aaf1afdeac0 80 int begin(char addr = AMG88xx_ADDRESS);
hisyamfs 0:9aaf1afdeac0 81
hisyamfs 0:9aaf1afdeac0 82 void readPixels(float *buf, uint8_t size = AMG88xx_PIXEL_ARRAY_SIZE);
hisyamfs 0:9aaf1afdeac0 83 float readThermistor();
hisyamfs 0:9aaf1afdeac0 84
hisyamfs 0:9aaf1afdeac0 85 void setMovingAverageMode(int mode);
hisyamfs 0:9aaf1afdeac0 86
hisyamfs 0:9aaf1afdeac0 87 void enableInterrupt();
hisyamfs 0:9aaf1afdeac0 88 void disableInterrupt();
hisyamfs 0:9aaf1afdeac0 89 void setInterruptMode(uint8_t mode);
hisyamfs 0:9aaf1afdeac0 90 void getInterrupt(uint8_t *buf, uint8_t size = 8);
hisyamfs 0:9aaf1afdeac0 91 void clearInterrupt();
hisyamfs 0:9aaf1afdeac0 92
hisyamfs 0:9aaf1afdeac0 93 //this will automatically set hysteresis to 95% of the high value
hisyamfs 0:9aaf1afdeac0 94 void setInterruptLevels(float high, float low);
hisyamfs 0:9aaf1afdeac0 95
hisyamfs 0:9aaf1afdeac0 96 //this will manually set hysteresis
hisyamfs 0:9aaf1afdeac0 97 void setInterruptLevels(float high, float low, float hysteresis);
hisyamfs 0:9aaf1afdeac0 98
hisyamfs 0:9aaf1afdeac0 99 private:
hisyamfs 0:9aaf1afdeac0 100 char _i2caddr;
hisyamfs 0:9aaf1afdeac0 101
hisyamfs 0:9aaf1afdeac0 102 I2C _i2c;
hisyamfs 0:9aaf1afdeac0 103
hisyamfs 0:9aaf1afdeac0 104 void write8(uint8_t reg, uint8_t value);
hisyamfs 0:9aaf1afdeac0 105 void write16(uint8_t reg, uint16_t value);
hisyamfs 0:9aaf1afdeac0 106 uint8_t read8(uint8_t reg);
hisyamfs 0:9aaf1afdeac0 107
hisyamfs 0:9aaf1afdeac0 108 int read(uint8_t reg, uint8_t *buf, uint8_t num);
hisyamfs 0:9aaf1afdeac0 109 int write(uint8_t reg, uint8_t *buf, uint8_t num);
hisyamfs 0:9aaf1afdeac0 110 void _i2c_init();
hisyamfs 0:9aaf1afdeac0 111
hisyamfs 0:9aaf1afdeac0 112 float signedMag12ToFloat(uint16_t val);
hisyamfs 0:9aaf1afdeac0 113 float int12ToFloat(uint16_t val);
hisyamfs 0:9aaf1afdeac0 114
hisyamfs 0:9aaf1afdeac0 115 int constrain(int value, int min, int max);
hisyamfs 0:9aaf1afdeac0 116 int min(int val1, int val2);
hisyamfs 0:9aaf1afdeac0 117 int max(int val1, int val2);
hisyamfs 0:9aaf1afdeac0 118
hisyamfs 0:9aaf1afdeac0 119 uint8_t min(uint8_t val1, uint8_t val2);
hisyamfs 0:9aaf1afdeac0 120 uint8_t max(uint8_t val1, uint8_t val2);
hisyamfs 0:9aaf1afdeac0 121
hisyamfs 0:9aaf1afdeac0 122 // The power control register
hisyamfs 0:9aaf1afdeac0 123 struct pctl {
hisyamfs 0:9aaf1afdeac0 124 // 0x00 = Normal Mode
hisyamfs 0:9aaf1afdeac0 125 // 0x01 = Sleep Mode
hisyamfs 0:9aaf1afdeac0 126 // 0x20 = Stand-by mode (60 sec intermittence)
hisyamfs 0:9aaf1afdeac0 127 // 0x21 = Stand-by mode (10 sec intermittence)
hisyamfs 0:9aaf1afdeac0 128
hisyamfs 0:9aaf1afdeac0 129 uint8_t PCTL : 8;
hisyamfs 0:9aaf1afdeac0 130
hisyamfs 0:9aaf1afdeac0 131 uint8_t get() {
hisyamfs 0:9aaf1afdeac0 132 return PCTL;
hisyamfs 0:9aaf1afdeac0 133 }
hisyamfs 0:9aaf1afdeac0 134 };
hisyamfs 0:9aaf1afdeac0 135 pctl _pctl;
hisyamfs 0:9aaf1afdeac0 136
hisyamfs 0:9aaf1afdeac0 137 //reset register
hisyamfs 0:9aaf1afdeac0 138 struct rst {
hisyamfs 0:9aaf1afdeac0 139 //0x30 = flag reset (all clear status reg 0x04, interrupt flag and interrupt table)
hisyamfs 0:9aaf1afdeac0 140 //0x3F = initial reset (brings flag reset and returns to initial setting)
hisyamfs 0:9aaf1afdeac0 141
hisyamfs 0:9aaf1afdeac0 142 uint8_t RST : 8;
hisyamfs 0:9aaf1afdeac0 143
hisyamfs 0:9aaf1afdeac0 144 uint8_t get() {
hisyamfs 0:9aaf1afdeac0 145 return RST;
hisyamfs 0:9aaf1afdeac0 146 }
hisyamfs 0:9aaf1afdeac0 147 };
hisyamfs 0:9aaf1afdeac0 148 rst _rst;
hisyamfs 0:9aaf1afdeac0 149
hisyamfs 0:9aaf1afdeac0 150 //frame rate register
hisyamfs 0:9aaf1afdeac0 151 struct fpsc {
hisyamfs 0:9aaf1afdeac0 152
hisyamfs 0:9aaf1afdeac0 153 //0 = 10FPS
hisyamfs 0:9aaf1afdeac0 154 //1 = 1FPS
hisyamfs 0:9aaf1afdeac0 155 uint8_t FPS : 1;
hisyamfs 0:9aaf1afdeac0 156
hisyamfs 0:9aaf1afdeac0 157 uint8_t get() {
hisyamfs 0:9aaf1afdeac0 158 return FPS & 0x01;
hisyamfs 0:9aaf1afdeac0 159 }
hisyamfs 0:9aaf1afdeac0 160 };
hisyamfs 0:9aaf1afdeac0 161 fpsc _fpsc;
hisyamfs 0:9aaf1afdeac0 162
hisyamfs 0:9aaf1afdeac0 163 //interrupt control register
hisyamfs 0:9aaf1afdeac0 164 struct intc {
hisyamfs 0:9aaf1afdeac0 165
hisyamfs 0:9aaf1afdeac0 166 // 0 = INT output reactive (Hi-Z)
hisyamfs 0:9aaf1afdeac0 167 // 1 = INT output active
hisyamfs 0:9aaf1afdeac0 168 uint8_t INTEN : 1;
hisyamfs 0:9aaf1afdeac0 169
hisyamfs 0:9aaf1afdeac0 170 // 0 = Difference interrupt mode
hisyamfs 0:9aaf1afdeac0 171 // 1 = absolute value interrupt mode
hisyamfs 0:9aaf1afdeac0 172 uint8_t INTMOD : 1;
hisyamfs 0:9aaf1afdeac0 173
hisyamfs 0:9aaf1afdeac0 174 uint8_t get(){
hisyamfs 0:9aaf1afdeac0 175 return (INTMOD << 1 | INTEN) & 0x03;
hisyamfs 0:9aaf1afdeac0 176 }
hisyamfs 0:9aaf1afdeac0 177 };
hisyamfs 0:9aaf1afdeac0 178 intc _intc;
hisyamfs 0:9aaf1afdeac0 179
hisyamfs 0:9aaf1afdeac0 180 //status register
hisyamfs 0:9aaf1afdeac0 181 struct stat {
hisyamfs 0:9aaf1afdeac0 182 uint8_t unused : 1;
hisyamfs 0:9aaf1afdeac0 183 //interrupt outbreak (val of interrupt table reg)
hisyamfs 0:9aaf1afdeac0 184 uint8_t INTF : 1;
hisyamfs 0:9aaf1afdeac0 185
hisyamfs 0:9aaf1afdeac0 186 //temperature output overflow (val of temperature reg)
hisyamfs 0:9aaf1afdeac0 187 uint8_t OVF_IRS : 1;
hisyamfs 0:9aaf1afdeac0 188
hisyamfs 0:9aaf1afdeac0 189 //thermistor temperature output overflow (value of thermistor)
hisyamfs 0:9aaf1afdeac0 190 uint8_t OVF_THS : 1;
hisyamfs 0:9aaf1afdeac0 191
hisyamfs 0:9aaf1afdeac0 192 uint8_t get(){
hisyamfs 0:9aaf1afdeac0 193 return ( (OVF_THS << 3) | (OVF_IRS << 2) | (INTF << 1) ) & 0x0E;
hisyamfs 0:9aaf1afdeac0 194 }
hisyamfs 0:9aaf1afdeac0 195 };
hisyamfs 0:9aaf1afdeac0 196 stat _stat;
hisyamfs 0:9aaf1afdeac0 197
hisyamfs 0:9aaf1afdeac0 198 //status clear register
hisyamfs 0:9aaf1afdeac0 199 //write to clear overflow flag and interrupt flag
hisyamfs 0:9aaf1afdeac0 200 //after writing automatically turns to 0x00
hisyamfs 0:9aaf1afdeac0 201 struct sclr {
hisyamfs 0:9aaf1afdeac0 202 uint8_t unused : 1;
hisyamfs 0:9aaf1afdeac0 203 //interrupt flag clear
hisyamfs 0:9aaf1afdeac0 204 uint8_t INTCLR : 1;
hisyamfs 0:9aaf1afdeac0 205 //temp output overflow flag clear
hisyamfs 0:9aaf1afdeac0 206 uint8_t OVS_CLR : 1;
hisyamfs 0:9aaf1afdeac0 207 //thermistor temp output overflow flag clear
hisyamfs 0:9aaf1afdeac0 208 uint8_t OVT_CLR : 1;
hisyamfs 0:9aaf1afdeac0 209
hisyamfs 0:9aaf1afdeac0 210 uint8_t get(){
hisyamfs 0:9aaf1afdeac0 211 return ((OVT_CLR << 3) | (OVS_CLR << 2) | (INTCLR << 1)) & 0x0E;
hisyamfs 0:9aaf1afdeac0 212 }
hisyamfs 0:9aaf1afdeac0 213 };
hisyamfs 0:9aaf1afdeac0 214 sclr _sclr;
hisyamfs 0:9aaf1afdeac0 215
hisyamfs 0:9aaf1afdeac0 216 //average register
hisyamfs 0:9aaf1afdeac0 217 //for setting moving average output mode
hisyamfs 0:9aaf1afdeac0 218 struct ave {
hisyamfs 0:9aaf1afdeac0 219 uint8_t unused : 5;
hisyamfs 0:9aaf1afdeac0 220 //1 = twice moving average mode
hisyamfs 0:9aaf1afdeac0 221 uint8_t MAMOD : 1;
hisyamfs 0:9aaf1afdeac0 222
hisyamfs 0:9aaf1afdeac0 223 uint8_t get(){
hisyamfs 0:9aaf1afdeac0 224 return (MAMOD << 5);
hisyamfs 0:9aaf1afdeac0 225 }
hisyamfs 0:9aaf1afdeac0 226 };
hisyamfs 0:9aaf1afdeac0 227 struct ave _ave;
hisyamfs 0:9aaf1afdeac0 228
hisyamfs 0:9aaf1afdeac0 229 //interrupt level registers
hisyamfs 0:9aaf1afdeac0 230 //for setting upper / lower limit hysteresis on interrupt level
hisyamfs 0:9aaf1afdeac0 231
hisyamfs 0:9aaf1afdeac0 232 //interrupt level upper limit setting. Interrupt output
hisyamfs 0:9aaf1afdeac0 233 // and interrupt pixel table are set when value exceeds set value
hisyamfs 0:9aaf1afdeac0 234 struct inthl {
hisyamfs 0:9aaf1afdeac0 235 uint8_t INT_LVL_H : 8;
hisyamfs 0:9aaf1afdeac0 236
hisyamfs 0:9aaf1afdeac0 237 uint8_t get(){
hisyamfs 0:9aaf1afdeac0 238 return INT_LVL_H;
hisyamfs 0:9aaf1afdeac0 239 }
hisyamfs 0:9aaf1afdeac0 240 };
hisyamfs 0:9aaf1afdeac0 241 struct inthl _inthl;
hisyamfs 0:9aaf1afdeac0 242
hisyamfs 0:9aaf1afdeac0 243 struct inthh {
hisyamfs 0:9aaf1afdeac0 244 uint8_t INT_LVL_H : 4;
hisyamfs 0:9aaf1afdeac0 245
hisyamfs 0:9aaf1afdeac0 246 uint8_t get(){
hisyamfs 0:9aaf1afdeac0 247 return INT_LVL_H;
hisyamfs 0:9aaf1afdeac0 248 }
hisyamfs 0:9aaf1afdeac0 249 };
hisyamfs 0:9aaf1afdeac0 250 struct inthh _inthh;
hisyamfs 0:9aaf1afdeac0 251
hisyamfs 0:9aaf1afdeac0 252 //interrupt level lower limit. Interrupt output
hisyamfs 0:9aaf1afdeac0 253 //and interrupt pixel table are set when value is lower than set value
hisyamfs 0:9aaf1afdeac0 254 struct intll {
hisyamfs 0:9aaf1afdeac0 255 uint8_t INT_LVL_L : 8;
hisyamfs 0:9aaf1afdeac0 256
hisyamfs 0:9aaf1afdeac0 257 uint8_t get(){
hisyamfs 0:9aaf1afdeac0 258 return INT_LVL_L;
hisyamfs 0:9aaf1afdeac0 259 }
hisyamfs 0:9aaf1afdeac0 260 };
hisyamfs 0:9aaf1afdeac0 261 struct intll _intll;
hisyamfs 0:9aaf1afdeac0 262
hisyamfs 0:9aaf1afdeac0 263 struct intlh {
hisyamfs 0:9aaf1afdeac0 264 uint8_t INT_LVL_L : 4;
hisyamfs 0:9aaf1afdeac0 265
hisyamfs 0:9aaf1afdeac0 266 uint8_t get(){
hisyamfs 0:9aaf1afdeac0 267 return (INT_LVL_L & 0xF);
hisyamfs 0:9aaf1afdeac0 268 }
hisyamfs 0:9aaf1afdeac0 269 };
hisyamfs 0:9aaf1afdeac0 270 struct intlh _intlh;
hisyamfs 0:9aaf1afdeac0 271
hisyamfs 0:9aaf1afdeac0 272 //setting of interrupt hysteresis level when interrupt is generated.
hisyamfs 0:9aaf1afdeac0 273 //should not be higher than interrupt level
hisyamfs 0:9aaf1afdeac0 274 struct ihysl {
hisyamfs 0:9aaf1afdeac0 275 uint8_t INT_HYS : 8;
hisyamfs 0:9aaf1afdeac0 276
hisyamfs 0:9aaf1afdeac0 277 uint8_t get(){
hisyamfs 0:9aaf1afdeac0 278 return INT_HYS;
hisyamfs 0:9aaf1afdeac0 279 }
hisyamfs 0:9aaf1afdeac0 280 };
hisyamfs 0:9aaf1afdeac0 281 struct ihysl _ihysl;
hisyamfs 0:9aaf1afdeac0 282
hisyamfs 0:9aaf1afdeac0 283 struct ihysh {
hisyamfs 0:9aaf1afdeac0 284 uint8_t INT_HYS : 4;
hisyamfs 0:9aaf1afdeac0 285
hisyamfs 0:9aaf1afdeac0 286 uint8_t get(){
hisyamfs 0:9aaf1afdeac0 287 return (INT_HYS & 0xF);
hisyamfs 0:9aaf1afdeac0 288 }
hisyamfs 0:9aaf1afdeac0 289 };
hisyamfs 0:9aaf1afdeac0 290 struct ihysh _ihysh;
hisyamfs 0:9aaf1afdeac0 291
hisyamfs 0:9aaf1afdeac0 292 //thermistor register
hisyamfs 0:9aaf1afdeac0 293 //SIGNED MAGNITUDE FORMAT
hisyamfs 0:9aaf1afdeac0 294 struct tthl {
hisyamfs 0:9aaf1afdeac0 295 uint8_t TEMP : 8;
hisyamfs 0:9aaf1afdeac0 296
hisyamfs 0:9aaf1afdeac0 297 uint8_t get(){
hisyamfs 0:9aaf1afdeac0 298 return TEMP;
hisyamfs 0:9aaf1afdeac0 299 }
hisyamfs 0:9aaf1afdeac0 300 };
hisyamfs 0:9aaf1afdeac0 301 struct tthl _tthl;
hisyamfs 0:9aaf1afdeac0 302
hisyamfs 0:9aaf1afdeac0 303 struct tthh {
hisyamfs 0:9aaf1afdeac0 304 uint8_t TEMP : 3;
hisyamfs 0:9aaf1afdeac0 305 uint8_t SIGN : 1;
hisyamfs 0:9aaf1afdeac0 306
hisyamfs 0:9aaf1afdeac0 307 uint8_t get(){
hisyamfs 0:9aaf1afdeac0 308 return ( (SIGN << 3) | TEMP) & 0xF;
hisyamfs 0:9aaf1afdeac0 309 }
hisyamfs 0:9aaf1afdeac0 310 };
hisyamfs 0:9aaf1afdeac0 311 struct tthh _tthh;
hisyamfs 0:9aaf1afdeac0 312
hisyamfs 0:9aaf1afdeac0 313 //temperature registers 0x80 - 0xFF
hisyamfs 0:9aaf1afdeac0 314 /*
hisyamfs 0:9aaf1afdeac0 315 //read to indicate temperature data per 1 pixel
hisyamfs 0:9aaf1afdeac0 316 //SIGNED MAGNITUDE FORMAT
hisyamfs 0:9aaf1afdeac0 317 struct t01l {
hisyamfs 0:9aaf1afdeac0 318 char TEMP : 8;
hisyamfs 0:9aaf1afdeac0 319
hisyamfs 0:9aaf1afdeac0 320 char get(){
hisyamfs 0:9aaf1afdeac0 321 return TEMP;
hisyamfs 0:9aaf1afdeac0 322 }
hisyamfs 0:9aaf1afdeac0 323 };
hisyamfs 0:9aaf1afdeac0 324 struct t01l _t01l;
hisyamfs 0:9aaf1afdeac0 325
hisyamfs 0:9aaf1afdeac0 326 struct t01h {
hisyamfs 0:9aaf1afdeac0 327 char TEMP : 3;
hisyamfs 0:9aaf1afdeac0 328 char SIGN : 1;
hisyamfs 0:9aaf1afdeac0 329
hisyamfs 0:9aaf1afdeac0 330 char get(){
hisyamfs 0:9aaf1afdeac0 331 return ( (SIGN << 3) | TEMP) & 0xF;
hisyamfs 0:9aaf1afdeac0 332 }
hisyamfs 0:9aaf1afdeac0 333 };
hisyamfs 0:9aaf1afdeac0 334 struct t01h _t01h;
hisyamfs 0:9aaf1afdeac0 335 */
hisyamfs 0:9aaf1afdeac0 336
hisyamfs 0:9aaf1afdeac0 337
hisyamfs 0:9aaf1afdeac0 338 };
hisyamfs 0:9aaf1afdeac0 339
hisyamfs 0:9aaf1afdeac0 340 #endif