Infrared Thermopile Sensor in Chip-Scale Package
AMG8833.h@4:d3c9c6df14a8, 2019-01-22 (annotated)
- Committer:
- mcm
- Date:
- Tue Jan 22 11:40:31 2019 +0000
- Revision:
- 4:d3c9c6df14a8
- Parent:
- 3:cae1eaf473be
The driver was completed and tested ( NUCLEO-L152RE ), it works as expected
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mcm | 1:0a4da176082f | 1 | /** |
mcm | 1:0a4da176082f | 2 | * @brief AMG8833.h |
mcm | 1:0a4da176082f | 3 | * @details Infrared Array Sensor "Grid-EYE". |
mcm | 1:0a4da176082f | 4 | * Header file. |
mcm | 1:0a4da176082f | 5 | * |
mcm | 1:0a4da176082f | 6 | * |
mcm | 1:0a4da176082f | 7 | * @return N/A |
mcm | 1:0a4da176082f | 8 | * |
mcm | 1:0a4da176082f | 9 | * @author Manuel Caballero |
mcm | 1:0a4da176082f | 10 | * @date 11/January/2019 |
mcm | 1:0a4da176082f | 11 | * @version 11/January/2019 The ORIGIN |
mcm | 1:0a4da176082f | 12 | * @pre N/A. |
mcm | 1:0a4da176082f | 13 | * @warning N/A |
mcm | 1:0a4da176082f | 14 | * @pre This code belongs to Nimbus Centre ( http://www.nimbus.cit.ie ). All rights reserved. |
mcm | 1:0a4da176082f | 15 | */ |
mcm | 1:0a4da176082f | 16 | #ifndef AMG8833_H |
mcm | 1:0a4da176082f | 17 | #define AMG8833_H |
mcm | 1:0a4da176082f | 18 | |
mcm | 1:0a4da176082f | 19 | #include "mbed.h" |
mcm | 1:0a4da176082f | 20 | |
mcm | 1:0a4da176082f | 21 | |
mcm | 1:0a4da176082f | 22 | /** |
mcm | 1:0a4da176082f | 23 | Example: |
mcm | 1:0a4da176082f | 24 | @code |
mcm | 4:d3c9c6df14a8 | 25 | #include "mbed.h" |
mcm | 4:d3c9c6df14a8 | 26 | #include "AMG8833.h" |
mcm | 1:0a4da176082f | 27 | |
mcm | 4:d3c9c6df14a8 | 28 | AMG8833 myAMG8833 ( I2C_SDA, I2C_SCL, AMG8833::AMG8833_ADDRESS_AD_SELECT_VDD, 400000 ); |
mcm | 4:d3c9c6df14a8 | 29 | Serial pc ( USBTX, USBRX ); // tx, rx |
mcm | 4:d3c9c6df14a8 | 30 | |
mcm | 4:d3c9c6df14a8 | 31 | DigitalOut myled ( LED1 ); |
mcm | 4:d3c9c6df14a8 | 32 | Ticker newAction; |
mcm | 4:d3c9c6df14a8 | 33 | |
mcm | 4:d3c9c6df14a8 | 34 | |
mcm | 4:d3c9c6df14a8 | 35 | |
mcm | 4:d3c9c6df14a8 | 36 | //@brief Constants. |
mcm | 4:d3c9c6df14a8 | 37 | // |
mcm | 4:d3c9c6df14a8 | 38 | |
mcm | 4:d3c9c6df14a8 | 39 | |
mcm | 4:d3c9c6df14a8 | 40 | //@brief Variables. |
mcm | 4:d3c9c6df14a8 | 41 | // |
mcm | 4:d3c9c6df14a8 | 42 | volatile uint32_t myState; // State that indicates when to perform an ADC sample |
mcm | 4:d3c9c6df14a8 | 43 | |
mcm | 4:d3c9c6df14a8 | 44 | |
mcm | 4:d3c9c6df14a8 | 45 | |
mcm | 4:d3c9c6df14a8 | 46 | // |
mcm | 4:d3c9c6df14a8 | 47 | // @brief FUNCTION PROTOTYPES |
mcm | 4:d3c9c6df14a8 | 48 | // |
mcm | 4:d3c9c6df14a8 | 49 | void changeDATA ( void ); |
mcm | 4:d3c9c6df14a8 | 50 | |
mcm | 4:d3c9c6df14a8 | 51 | |
mcm | 4:d3c9c6df14a8 | 52 | |
mcm | 4:d3c9c6df14a8 | 53 | |
mcm | 4:d3c9c6df14a8 | 54 | //@brief FUNCTION FOR APPLICATION MAIN ENTRY. |
mcm | 4:d3c9c6df14a8 | 55 | // |
mcm | 4:d3c9c6df14a8 | 56 | int main() |
mcm | 4:d3c9c6df14a8 | 57 | { |
mcm | 4:d3c9c6df14a8 | 58 | AMG8833::AMG8833_status_t aux; |
mcm | 4:d3c9c6df14a8 | 59 | AMG8833::AMG8833_data_t myAMG8833_Data; |
mcm | 4:d3c9c6df14a8 | 60 | |
mcm | 4:d3c9c6df14a8 | 61 | pc.baud ( 115200 ); |
mcm | 4:d3c9c6df14a8 | 62 | |
mcm | 4:d3c9c6df14a8 | 63 | |
mcm | 4:d3c9c6df14a8 | 64 | myled = 1; |
mcm | 4:d3c9c6df14a8 | 65 | wait(3); |
mcm | 4:d3c9c6df14a8 | 66 | myled = 0; |
mcm | 4:d3c9c6df14a8 | 67 | |
mcm | 4:d3c9c6df14a8 | 68 | // Put the device in Normal mode |
mcm | 4:d3c9c6df14a8 | 69 | myAMG8833_Data.operationMode = AMG8833::PCTL_NORMAL_MODE; |
mcm | 4:d3c9c6df14a8 | 70 | aux = myAMG8833.AMG8833_SetOperationMode ( myAMG8833_Data ); |
mcm | 4:d3c9c6df14a8 | 71 | |
mcm | 4:d3c9c6df14a8 | 72 | // Reset the device by software |
mcm | 4:d3c9c6df14a8 | 73 | aux = myAMG8833.AMG8833_SoftwareReset ( AMG8833::RST_INITIAL_RESET ); |
mcm | 4:d3c9c6df14a8 | 74 | wait_ms ( 500 ); |
mcm | 4:d3c9c6df14a8 | 75 | |
mcm | 4:d3c9c6df14a8 | 76 | // Set frame rate: 10 FPSC |
mcm | 4:d3c9c6df14a8 | 77 | aux = myAMG8833.AMG8833_SetFrameMode ( AMG8833::FPSC_10FPS ); |
mcm | 4:d3c9c6df14a8 | 78 | |
mcm | 4:d3c9c6df14a8 | 79 | // Set moving average Output Mode: OFF |
mcm | 4:d3c9c6df14a8 | 80 | aux = myAMG8833.AMG8833_SetAverageOutputMode ( AMG8833::MAMOD_WICE_MOVING_AVERAGE_OUTPUT_MODE_OFF ); |
mcm | 4:d3c9c6df14a8 | 81 | |
mcm | 4:d3c9c6df14a8 | 82 | // Clear all flags |
mcm | 4:d3c9c6df14a8 | 83 | aux = myAMG8833.AMG8833_ClearFlags ( ( AMG8833::OVT_CLR_THERMISTOR_TEMPERATURE_OVERFLOW_CLEAR_FLAG | AMG8833::OVS_CLR_TEMPERATURE_OVERFLOW_CLEAR_FLAG | AMG8833::INTCLR_INTERRUPT_OUTBREAK_CLEAR_FLAG ) ); |
mcm | 4:d3c9c6df14a8 | 84 | |
mcm | 4:d3c9c6df14a8 | 85 | // Resume from reset state |
mcm | 4:d3c9c6df14a8 | 86 | aux = myAMG8833.AMG8833_SoftwareReset ( AMG8833::RST_RESUME_FROM_RESET ); |
mcm | 4:d3c9c6df14a8 | 87 | wait_ms ( 500 ); |
mcm | 4:d3c9c6df14a8 | 88 | |
mcm | 4:d3c9c6df14a8 | 89 | // Put the device in Normal mode |
mcm | 4:d3c9c6df14a8 | 90 | myAMG8833_Data.operationMode = AMG8833::PCTL_NORMAL_MODE; |
mcm | 4:d3c9c6df14a8 | 91 | aux = myAMG8833.AMG8833_SetOperationMode ( myAMG8833_Data ); |
mcm | 4:d3c9c6df14a8 | 92 | |
mcm | 4:d3c9c6df14a8 | 93 | |
mcm | 4:d3c9c6df14a8 | 94 | myState = 0UL; // Reset the variable |
mcm | 4:d3c9c6df14a8 | 95 | newAction.attach( &changeDATA, 1U ); // the address of the function to be attached ( changeDATA ) and the interval ( 1s ) |
mcm | 4:d3c9c6df14a8 | 96 | |
mcm | 4:d3c9c6df14a8 | 97 | |
mcm | 4:d3c9c6df14a8 | 98 | // Let the callbacks take care of everything |
mcm | 4:d3c9c6df14a8 | 99 | while(1) { |
mcm | 4:d3c9c6df14a8 | 100 | sleep(); |
mcm | 4:d3c9c6df14a8 | 101 | |
mcm | 4:d3c9c6df14a8 | 102 | if ( myState == 1UL ) { |
mcm | 4:d3c9c6df14a8 | 103 | myled = 1U; |
mcm | 4:d3c9c6df14a8 | 104 | |
mcm | 4:d3c9c6df14a8 | 105 | // Get thermistor temperature value |
mcm | 4:d3c9c6df14a8 | 106 | aux = myAMG8833.AMG8833_GetThermistorValue ( &myAMG8833_Data ); |
mcm | 4:d3c9c6df14a8 | 107 | |
mcm | 4:d3c9c6df14a8 | 108 | // Get pixel temperature values |
mcm | 4:d3c9c6df14a8 | 109 | aux = myAMG8833.AMG8833_GetPixelTemperatures ( &myAMG8833_Data ); |
mcm | 4:d3c9c6df14a8 | 110 | |
mcm | 4:d3c9c6df14a8 | 111 | |
mcm | 4:d3c9c6df14a8 | 112 | // Transmit result through the UART |
mcm | 4:d3c9c6df14a8 | 113 | // Raw data |
mcm | 4:d3c9c6df14a8 | 114 | //uint8_t myAuxVar = 0U; |
mcm | 4:d3c9c6df14a8 | 115 | //myAuxVar = ( myAMG8833_Data.termistorOutputRawValue >> 8U ) ; |
mcm | 4:d3c9c6df14a8 | 116 | //pc.putc( myAuxVar ); |
mcm | 4:d3c9c6df14a8 | 117 | //myAuxVar = ( myAMG8833_Data.termistorOutputRawValue & 0xFF ) ; |
mcm | 4:d3c9c6df14a8 | 118 | //pc.putc( myAuxVar ); |
mcm | 4:d3c9c6df14a8 | 119 | |
mcm | 4:d3c9c6df14a8 | 120 | //for ( uint32_t i = 0U; i < 64U; i++ ) |
mcm | 4:d3c9c6df14a8 | 121 | //{ |
mcm | 4:d3c9c6df14a8 | 122 | // myAuxVar = ( myAMG8833_Data.pixelOutputRawValues[i] >> 8U ) ; |
mcm | 4:d3c9c6df14a8 | 123 | // pc.putc( myAuxVar ); |
mcm | 4:d3c9c6df14a8 | 124 | // myAuxVar = ( myAMG8833_Data.pixelOutputRawValues[i] & 0xFF ) ; |
mcm | 4:d3c9c6df14a8 | 125 | // pc.putc( myAuxVar ); |
mcm | 4:d3c9c6df14a8 | 126 | //} |
mcm | 4:d3c9c6df14a8 | 127 | |
mcm | 4:d3c9c6df14a8 | 128 | |
mcm | 4:d3c9c6df14a8 | 129 | // Final data |
mcm | 4:d3c9c6df14a8 | 130 | pc.printf ( "\r\n%0.4fC\r\n[ %0.2f, %0.2f, %0.2f, %0.2f, %0.2f, %0.2f, %0.2f, %0.2f\r\n %0.2f, %0.2f, %0.2f, %0.2f, %0.2f, %0.2f, %0.2f, %0.2f\r\n %0.2f, %0.2f, %0.2f, %0.2f, %0.2f, %0.2f, %0.2f, %0.2f\r\n %0.2f, %0.2f, %0.2f, %0.2f, %0.2f, %0.2f, %0.2f, %0.2f\r\n %0.2f, %0.2f, %0.2f, %0.2f, %0.2f, %0.2f, %0.2f, %0.2f\r\n %0.2f, %0.2f, %0.2f, %0.2f, %0.2f, %0.2f, %0.2f, %0.2f\r\n %0.2f, %0.2f, %0.2f, %0.2f, %0.2f, %0.2f, %0.2f, %0.2f\r\n %0.2f, %0.2f, %0.2f, %0.2f, %0.2f, %0.2f, %0.2f, %0.2f ]\r\n", |
mcm | 4:d3c9c6df14a8 | 131 | myAMG8833_Data.termistorOutputValue, myAMG8833_Data.pixelOutputValues[0], myAMG8833_Data.pixelOutputValues[1], myAMG8833_Data.pixelOutputValues[2], myAMG8833_Data.pixelOutputValues[3], myAMG8833_Data.pixelOutputValues[4], myAMG8833_Data.pixelOutputValues[5], myAMG8833_Data.pixelOutputValues[6], myAMG8833_Data.pixelOutputValues[7], myAMG8833_Data.pixelOutputValues[8], myAMG8833_Data.pixelOutputValues[9], myAMG8833_Data.pixelOutputValues[10], |
mcm | 4:d3c9c6df14a8 | 132 | myAMG8833_Data.pixelOutputValues[11], myAMG8833_Data.pixelOutputValues[12], myAMG8833_Data.pixelOutputValues[13], myAMG8833_Data.pixelOutputValues[14], myAMG8833_Data.pixelOutputValues[15], myAMG8833_Data.pixelOutputValues[16], myAMG8833_Data.pixelOutputValues[17], myAMG8833_Data.pixelOutputValues[18], myAMG8833_Data.pixelOutputValues[19], myAMG8833_Data.pixelOutputValues[20], myAMG8833_Data.pixelOutputValues[21], myAMG8833_Data.pixelOutputValues[22], |
mcm | 4:d3c9c6df14a8 | 133 | myAMG8833_Data.pixelOutputValues[23], myAMG8833_Data.pixelOutputValues[24], myAMG8833_Data.pixelOutputValues[25], myAMG8833_Data.pixelOutputValues[26], myAMG8833_Data.pixelOutputValues[27], myAMG8833_Data.pixelOutputValues[28], myAMG8833_Data.pixelOutputValues[29], myAMG8833_Data.pixelOutputValues[30], myAMG8833_Data.pixelOutputValues[31], myAMG8833_Data.pixelOutputValues[32], myAMG8833_Data.pixelOutputValues[33], myAMG8833_Data.pixelOutputValues[34], |
mcm | 4:d3c9c6df14a8 | 134 | myAMG8833_Data.pixelOutputValues[35], myAMG8833_Data.pixelOutputValues[36], myAMG8833_Data.pixelOutputValues[37], myAMG8833_Data.pixelOutputValues[38], myAMG8833_Data.pixelOutputValues[39], myAMG8833_Data.pixelOutputValues[40], myAMG8833_Data.pixelOutputValues[41], myAMG8833_Data.pixelOutputValues[42], myAMG8833_Data.pixelOutputValues[43], myAMG8833_Data.pixelOutputValues[44], myAMG8833_Data.pixelOutputValues[45], myAMG8833_Data.pixelOutputValues[46], |
mcm | 4:d3c9c6df14a8 | 135 | myAMG8833_Data.pixelOutputValues[47], myAMG8833_Data.pixelOutputValues[48], myAMG8833_Data.pixelOutputValues[49], myAMG8833_Data.pixelOutputValues[50], myAMG8833_Data.pixelOutputValues[51], myAMG8833_Data.pixelOutputValues[52], myAMG8833_Data.pixelOutputValues[53], myAMG8833_Data.pixelOutputValues[54], myAMG8833_Data.pixelOutputValues[55], myAMG8833_Data.pixelOutputValues[56], myAMG8833_Data.pixelOutputValues[57], myAMG8833_Data.pixelOutputValues[58], |
mcm | 4:d3c9c6df14a8 | 136 | myAMG8833_Data.pixelOutputValues[59], myAMG8833_Data.pixelOutputValues[60], myAMG8833_Data.pixelOutputValues[61], myAMG8833_Data.pixelOutputValues[62], myAMG8833_Data.pixelOutputValues[63] ); |
mcm | 4:d3c9c6df14a8 | 137 | |
mcm | 4:d3c9c6df14a8 | 138 | |
mcm | 4:d3c9c6df14a8 | 139 | // Reset the variables |
mcm | 4:d3c9c6df14a8 | 140 | myState = 0UL; |
mcm | 4:d3c9c6df14a8 | 141 | myled = 0U; |
mcm | 4:d3c9c6df14a8 | 142 | } |
mcm | 4:d3c9c6df14a8 | 143 | } |
mcm | 4:d3c9c6df14a8 | 144 | } |
mcm | 4:d3c9c6df14a8 | 145 | |
mcm | 4:d3c9c6df14a8 | 146 | |
mcm | 4:d3c9c6df14a8 | 147 | |
mcm | 4:d3c9c6df14a8 | 148 | /// |
mcm | 4:d3c9c6df14a8 | 149 | / @brief changeDATA ( void ) |
mcm | 4:d3c9c6df14a8 | 150 | / |
mcm | 4:d3c9c6df14a8 | 151 | / @details It changes myState variable |
mcm | 4:d3c9c6df14a8 | 152 | / |
mcm | 4:d3c9c6df14a8 | 153 | / @param[in] N/A |
mcm | 4:d3c9c6df14a8 | 154 | / |
mcm | 4:d3c9c6df14a8 | 155 | / @param[out] N/A. |
mcm | 4:d3c9c6df14a8 | 156 | / |
mcm | 4:d3c9c6df14a8 | 157 | / |
mcm | 4:d3c9c6df14a8 | 158 | / @return N/A. |
mcm | 4:d3c9c6df14a8 | 159 | / |
mcm | 4:d3c9c6df14a8 | 160 | / |
mcm | 4:d3c9c6df14a8 | 161 | / @author Manuel Caballero |
mcm | 4:d3c9c6df14a8 | 162 | / @date 10/December/2018 |
mcm | 4:d3c9c6df14a8 | 163 | / @version 10/December/2018 The ORIGIN |
mcm | 4:d3c9c6df14a8 | 164 | / @pre N/A |
mcm | 4:d3c9c6df14a8 | 165 | / @warning N/A. |
mcm | 4:d3c9c6df14a8 | 166 | // |
mcm | 4:d3c9c6df14a8 | 167 | void changeDATA ( void ) |
mcm | 4:d3c9c6df14a8 | 168 | { |
mcm | 4:d3c9c6df14a8 | 169 | myState = 1UL; |
mcm | 4:d3c9c6df14a8 | 170 | } |
mcm | 1:0a4da176082f | 171 | @endcode |
mcm | 1:0a4da176082f | 172 | */ |
mcm | 1:0a4da176082f | 173 | |
mcm | 1:0a4da176082f | 174 | |
mcm | 1:0a4da176082f | 175 | /*! |
mcm | 1:0a4da176082f | 176 | Library for the AMG8833 Infrared Array Sensor "Grid-EYE". |
mcm | 1:0a4da176082f | 177 | */ |
mcm | 1:0a4da176082f | 178 | class AMG8833 |
mcm | 1:0a4da176082f | 179 | { |
mcm | 1:0a4da176082f | 180 | public: |
mcm | 1:0a4da176082f | 181 | /** |
mcm | 1:0a4da176082f | 182 | * @brief DEFAULT ADDRESSES |
mcm | 1:0a4da176082f | 183 | */ |
mcm | 1:0a4da176082f | 184 | typedef enum |
mcm | 1:0a4da176082f | 185 | { |
mcm | 3:cae1eaf473be | 186 | AMG8833_ADDRESS_AD_SELECT_VDD = ( 0b1101001 << 1U ), /*!< AMG8833 I2C Address: AD_SELECT to VDD */ |
mcm | 3:cae1eaf473be | 187 | AMG8833_ADDRESS_AD_SELECT_GND = ( 0b1101000 << 1U ) /*!< AMG8833 I2C Address: AD_SELECT to GND */ |
mcm | 1:0a4da176082f | 188 | } AMG8833_addresses_t; |
mcm | 1:0a4da176082f | 189 | |
mcm | 1:0a4da176082f | 190 | |
mcm | 1:0a4da176082f | 191 | |
mcm | 1:0a4da176082f | 192 | /** |
mcm | 1:0a4da176082f | 193 | * @brief REGISTER MAP |
mcm | 1:0a4da176082f | 194 | */ |
mcm | 1:0a4da176082f | 195 | typedef enum |
mcm | 1:0a4da176082f | 196 | { |
mcm | 1:0a4da176082f | 197 | AMG8833_PCTL = 0x00, /*!< Power Control Register ( Read/Write ) */ |
mcm | 1:0a4da176082f | 198 | AMG8833_RST = 0x01, /*!< Reset Register ( Write Only ) */ |
mcm | 1:0a4da176082f | 199 | AMG8833_FPSC = 0x02, /*!< Frame Rate Register ( Read/Write ) */ |
mcm | 1:0a4da176082f | 200 | AMG8833_INTC = 0x03, /*!< Interrupt Control Register ( Read/Write ) */ |
mcm | 1:0a4da176082f | 201 | AMG8833_STAT = 0x04, /*!< Status Register ( Read Only ) */ |
mcm | 1:0a4da176082f | 202 | AMG8833_SCLR = 0x05, /*!< Status Clear Register ( Write Only ) */ |
mcm | 1:0a4da176082f | 203 | AMG8833_AVE = 0x07, /*!< Average Register ( Read/Write ) */ |
mcm | 1:0a4da176082f | 204 | AMG8833_INTHL = 0x08, /*!< Interrupt Level upper limit [7:0] ( Read/Write ) */ |
mcm | 1:0a4da176082f | 205 | AMG8833_INTHH = 0x09, /*!< Interrupt Level upper limit [11:8] ( Read/Write ) */ |
mcm | 1:0a4da176082f | 206 | AMG8833_INTLL = 0x0A, /*!< Interrupt Level lower limit [7:0] ( Read/Write ) */ |
mcm | 1:0a4da176082f | 207 | AMG8833_INTLH = 0x0B, /*!< Interrupt Level lower limit [11:8] ( Read/Write ) */ |
mcm | 1:0a4da176082f | 208 | AMG8833_IHYSL = 0x0C, /*!< Interrupt Hysteresis Level [7:0] ( Read/Write ) */ |
mcm | 1:0a4da176082f | 209 | AMG8833_IHYSH = 0x0D, /*!< Interrupt Hysteresis Level [11:8] ( Read/Write ) */ |
mcm | 1:0a4da176082f | 210 | AMG8833_TTHL = 0x0E, /*!< Thermistor Register lower [7:0] ( Read Only ) */ |
mcm | 1:0a4da176082f | 211 | AMG8833_TTHH = 0x0F, /*!< Thermistor Register upper [11:8] ( Read Only ) */ |
mcm | 1:0a4da176082f | 212 | AMG8833_INT0 = 0x10, /*!< Interrupt Table Register 0 ( Read Only ) */ |
mcm | 1:0a4da176082f | 213 | AMG8833_INT1 = 0x11, /*!< Interrupt Table Register 1 ( Read Only ) */ |
mcm | 1:0a4da176082f | 214 | AMG8833_INT2 = 0x12, /*!< Interrupt Table Register 2 ( Read Only ) */ |
mcm | 1:0a4da176082f | 215 | AMG8833_INT3 = 0x13, /*!< Interrupt Table Register 3 ( Read Only ) */ |
mcm | 1:0a4da176082f | 216 | AMG8833_INT4 = 0x14, /*!< Interrupt Table Register 4 ( Read Only ) */ |
mcm | 1:0a4da176082f | 217 | AMG8833_INT5 = 0x15, /*!< Interrupt Table Register 5 ( Read Only ) */ |
mcm | 1:0a4da176082f | 218 | AMG8833_INT6 = 0x16, /*!< Interrupt Table Register 6 ( Read Only ) */ |
mcm | 1:0a4da176082f | 219 | AMG8833_INT7 = 0x17, /*!< Interrupt Table Register 7 ( Read Only ) */ |
mcm | 1:0a4da176082f | 220 | AMG8833_T01L = 0x80, /*!< Pixel 1 Output Value (Lower Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 221 | AMG8833_T01H = 0x81, /*!< Pixel 1 Output Value (Upper Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 222 | AMG8833_T02L = 0x82, /*!< Pixel 2 Output Value (Lower Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 223 | AMG8833_T02H = 0x83, /*!< Pixel 2 Output Value (Upper Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 224 | AMG8833_T03L = 0x84, /*!< Pixel 3 Output Value (Lower Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 225 | AMG8833_T03H = 0x85, /*!< Pixel 3 Output Value (Upper Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 226 | AMG8833_T04L = 0x86, /*!< Pixel 4 Output Value (Lower Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 227 | AMG8833_T04H = 0x87, /*!< Pixel 4 Output Value (Upper Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 228 | AMG8833_T05L = 0x88, /*!< Pixel 5 Output Value (Lower Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 229 | AMG8833_T05H = 0x89, /*!< Pixel 5 Output Value (Upper Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 230 | AMG8833_T06L = 0x8A, /*!< Pixel 6 Output Value (Lower Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 231 | AMG8833_T06H = 0x8B, /*!< Pixel 6 Output Value (Upper Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 232 | AMG8833_T07L = 0x8C, /*!< Pixel 7 Output Value (Lower Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 233 | AMG8833_T07H = 0x8D, /*!< Pixel 7 Output Value (Upper Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 234 | AMG8833_T08L = 0x8E, /*!< Pixel 8 Output Value (Lower Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 235 | AMG8833_T08H = 0x8F, /*!< Pixel 8 Output Value (Upper Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 236 | AMG8833_T09L = 0x90, /*!< Pixel 9 Output Value (Lower Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 237 | AMG8833_T09H = 0x91, /*!< Pixel 9 Output Value (Upper Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 238 | AMG8833_T10L = 0x92, /*!< Pixel 10 Output Value (Lower Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 239 | AMG8833_T10H = 0x93, /*!< Pixel 10 Output Value (Upper Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 240 | AMG8833_T11L = 0x94, /*!< Pixel 11 Output Value (Lower Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 241 | AMG8833_T11H = 0x95, /*!< Pixel 11 Output Value (Upper Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 242 | AMG8833_T12L = 0x96, /*!< Pixel 12 Output Value (Lower Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 243 | AMG8833_T12H = 0x97, /*!< Pixel 12 Output Value (Upper Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 244 | AMG8833_T13L = 0x98, /*!< Pixel 13 Output Value (Lower Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 245 | AMG8833_T13H = 0x99, /*!< Pixel 13 Output Value (Upper Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 246 | AMG8833_T14L = 0x9A, /*!< Pixel 14 Output Value (Lower Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 247 | AMG8833_T14H = 0x9B, /*!< Pixel 14 Output Value (Upper Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 248 | AMG8833_T15L = 0x9C, /*!< Pixel 15 Output Value (Lower Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 249 | AMG8833_T15H = 0x9D, /*!< Pixel 15 Output Value (Upper Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 250 | AMG8833_T16L = 0x9E, /*!< Pixel 16 Output Value (Lower Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 251 | AMG8833_T16H = 0x9F, /*!< Pixel 16 Output Value (Upper Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 252 | AMG8833_T17L = 0xA0, /*!< Pixel 17 Output Value (Lower Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 253 | AMG8833_T17H = 0xA1, /*!< Pixel 17 Output Value (Upper Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 254 | AMG8833_T18L = 0xA2, /*!< Pixel 18 Output Value (Lower Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 255 | AMG8833_T18H = 0xA3, /*!< Pixel 18 Output Value (Upper Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 256 | AMG8833_T19L = 0xA4, /*!< Pixel 19 Output Value (Lower Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 257 | AMG8833_T19H = 0xA5, /*!< Pixel 19 Output Value (Upper Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 258 | AMG8833_T20L = 0xA6, /*!< Pixel 20 Output Value (Lower Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 259 | AMG8833_T20H = 0xA7, /*!< Pixel 20 Output Value (Upper Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 260 | AMG8833_T21L = 0xA8, /*!< Pixel 21 Output Value (Lower Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 261 | AMG8833_T21H = 0xA9, /*!< Pixel 21 Output Value (Upper Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 262 | AMG8833_T22L = 0xAA, /*!< Pixel 22 Output Value (Lower Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 263 | AMG8833_T22H = 0xAB, /*!< Pixel 22 Output Value (Upper Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 264 | AMG8833_T23L = 0xAC, /*!< Pixel 23 Output Value (Lower Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 265 | AMG8833_T23H = 0xAD, /*!< Pixel 23 Output Value (Upper Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 266 | AMG8833_T24L = 0xAE, /*!< Pixel 24 Output Value (Lower Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 267 | AMG8833_T24H = 0xAF, /*!< Pixel 24 Output Value (Upper Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 268 | AMG8833_T25L = 0xB0, /*!< Pixel 25 Output Value (Lower Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 269 | AMG8833_T25H = 0xB1, /*!< Pixel 25 Output Value (Upper Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 270 | AMG8833_T26L = 0xB2, /*!< Pixel 26 Output Value (Lower Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 271 | AMG8833_T26H = 0xB3, /*!< Pixel 26 Output Value (Upper Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 272 | AMG8833_T27L = 0xB4, /*!< Pixel 27 Output Value (Lower Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 273 | AMG8833_T27H = 0xB5, /*!< Pixel 27 Output Value (Upper Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 274 | AMG8833_T28L = 0xB6, /*!< Pixel 28 Output Value (Lower Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 275 | AMG8833_T28H = 0xB7, /*!< Pixel 28 Output Value (Upper Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 276 | AMG8833_T29L = 0xB8, /*!< Pixel 29 Output Value (Lower Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 277 | AMG8833_T29H = 0xB9, /*!< Pixel 29 Output Value (Upper Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 278 | AMG8833_T30L = 0xBA, /*!< Pixel 30 Output Value (Lower Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 279 | AMG8833_T30H = 0xBB, /*!< Pixel 30 Output Value (Upper Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 280 | AMG8833_T31L = 0xBC, /*!< Pixel 31 Output Value (Lower Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 281 | AMG8833_T31H = 0xBD, /*!< Pixel 31 Output Value (Upper Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 282 | AMG8833_T32L = 0xBE, /*!< Pixel 32 Output Value (Lower Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 283 | AMG8833_T32H = 0xBF, /*!< Pixel 32 Output Value (Upper Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 284 | AMG8833_T33L = 0xC0, /*!< Pixel 33 Output Value (Lower Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 285 | AMG8833_T33H = 0xC1, /*!< Pixel 33 Output Value (Upper Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 286 | AMG8833_T34L = 0xC2, /*!< Pixel 34 Output Value (Lower Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 287 | AMG8833_T34H = 0xC3, /*!< Pixel 34 Output Value (Upper Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 288 | AMG8833_T35L = 0xC4, /*!< Pixel 35 Output Value (Lower Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 289 | AMG8833_T35H = 0xC5, /*!< Pixel 35 Output Value (Upper Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 290 | AMG8833_T36L = 0xC6, /*!< Pixel 36 Output Value (Lower Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 291 | AMG8833_T36H = 0xC7, /*!< Pixel 36 Output Value (Upper Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 292 | AMG8833_T37L = 0xC8, /*!< Pixel 37 Output Value (Lower Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 293 | AMG8833_T37H = 0xC9, /*!< Pixel 37 Output Value (Upper Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 294 | AMG8833_T38L = 0xCA, /*!< Pixel 38 Output Value (Lower Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 295 | AMG8833_T38H = 0xCB, /*!< Pixel 38 Output Value (Upper Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 296 | AMG8833_T39L = 0xCC, /*!< Pixel 39 Output Value (Lower Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 297 | AMG8833_T39H = 0xCD, /*!< Pixel 39 Output Value (Upper Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 298 | AMG8833_T40L = 0xCE, /*!< Pixel 40 Output Value (Lower Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 299 | AMG8833_T40H = 0xCF, /*!< Pixel 40 Output Value (Upper Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 300 | AMG8833_T41L = 0xD0, /*!< Pixel 41 Output Value (Lower Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 301 | AMG8833_T41H = 0xD1, /*!< Pixel 41 Output Value (Upper Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 302 | AMG8833_T42L = 0xD2, /*!< Pixel 42 Output Value (Lower Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 303 | AMG8833_T42H = 0xD3, /*!< Pixel 42 Output Value (Upper Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 304 | AMG8833_T43L = 0xD4, /*!< Pixel 43 Output Value (Lower Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 305 | AMG8833_T43H = 0xD5, /*!< Pixel 43 Output Value (Upper Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 306 | AMG8833_T44L = 0xD6, /*!< Pixel 44 Output Value (Lower Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 307 | AMG8833_T44H = 0xD7, /*!< Pixel 44 Output Value (Upper Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 308 | AMG8833_T45L = 0xD8, /*!< Pixel 45 Output Value (Lower Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 309 | AMG8833_T45H = 0xD9, /*!< Pixel 45 Output Value (Upper Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 310 | AMG8833_T46L = 0xDA, /*!< Pixel 46 Output Value (Lower Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 311 | AMG8833_T46H = 0xDB, /*!< Pixel 46 Output Value (Upper Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 312 | AMG8833_T47L = 0xDC, /*!< Pixel 47 Output Value (Lower Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 313 | AMG8833_T47H = 0xDD, /*!< Pixel 47 Output Value (Upper Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 314 | AMG8833_T48L = 0xDE, /*!< Pixel 48 Output Value (Lower Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 315 | AMG8833_T48H = 0xDF, /*!< Pixel 48 Output Value (Upper Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 316 | AMG8833_T49L = 0xE0, /*!< Pixel 49 Output Value (Lower Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 317 | AMG8833_T49H = 0xE1, /*!< Pixel 49 Output Value (Upper Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 318 | AMG8833_T50L = 0xE2, /*!< Pixel 50 Output Value (Lower Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 319 | AMG8833_T50H = 0xE3, /*!< Pixel 50 Output Value (Upper Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 320 | AMG8833_T51L = 0xE4, /*!< Pixel 51 Output Value (Lower Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 321 | AMG8833_T51H = 0xE5, /*!< Pixel 51 Output Value (Upper Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 322 | AMG8833_T52L = 0xE6, /*!< Pixel 52 Output Value (Lower Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 323 | AMG8833_T52H = 0xE7, /*!< Pixel 52 Output Value (Upper Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 324 | AMG8833_T53L = 0xE8, /*!< Pixel 53 Output Value (Lower Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 325 | AMG8833_T53H = 0xE9, /*!< Pixel 53 Output Value (Upper Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 326 | AMG8833_T54L = 0xEA, /*!< Pixel 54 Output Value (Lower Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 327 | AMG8833_T54H = 0xEB, /*!< Pixel 54 Output Value (Upper Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 328 | AMG8833_T55L = 0xEC, /*!< Pixel 55 Output Value (Lower Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 329 | AMG8833_T55H = 0xED, /*!< Pixel 55 Output Value (Upper Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 330 | AMG8833_T56L = 0xEE, /*!< Pixel 56 Output Value (Lower Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 331 | AMG8833_T56H = 0xEF, /*!< Pixel 56 Output Value (Upper Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 332 | AMG8833_T57L = 0xF0, /*!< Pixel 57 Output Value (Lower Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 333 | AMG8833_T57H = 0xF1, /*!< Pixel 57 Output Value (Upper Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 334 | AMG8833_T58L = 0xF2, /*!< Pixel 58 Output Value (Lower Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 335 | AMG8833_T58H = 0xF3, /*!< Pixel 58 Output Value (Upper Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 336 | AMG8833_T59L = 0xF4, /*!< Pixel 59 Output Value (Lower Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 337 | AMG8833_T59H = 0xF5, /*!< Pixel 59 Output Value (Upper Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 338 | AMG8833_T60L = 0xF6, /*!< Pixel 60 Output Value (Lower Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 339 | AMG8833_T60H = 0xF7, /*!< Pixel 60 Output Value (Upper Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 340 | AMG8833_T61L = 0xF8, /*!< Pixel 61 Output Value (Lower Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 341 | AMG8833_T61H = 0xF9, /*!< Pixel 61 Output Value (Upper Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 342 | AMG8833_T62L = 0xFA, /*!< Pixel 62 Output Value (Lower Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 343 | AMG8833_T62H = 0xFB, /*!< Pixel 62 Output Value (Upper Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 344 | AMG8833_T63L = 0xFC, /*!< Pixel 63 Output Value (Lower Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 345 | AMG8833_T63H = 0xFD, /*!< Pixel 63 Output Value (Upper Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 346 | AMG8833_T64L = 0xFE, /*!< Pixel 64 Output Value (Lower Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 347 | AMG8833_T64H = 0xFF /*!< Pixel 64 Output Value (Upper Level) ( Read Only ) */ |
mcm | 1:0a4da176082f | 348 | } AMG8833_register_map_t; |
mcm | 1:0a4da176082f | 349 | |
mcm | 1:0a4da176082f | 350 | |
mcm | 1:0a4da176082f | 351 | |
mcm | 1:0a4da176082f | 352 | /** |
mcm | 1:0a4da176082f | 353 | * @brief POWER CONTROL REGISTER |
mcm | 1:0a4da176082f | 354 | */ |
mcm | 1:0a4da176082f | 355 | /* PCTL: OPERATING MODE |
mcm | 1:0a4da176082f | 356 | * NOTE: Writing operation in Sleep mode is only active in return to Normal mode. Reading operation in Sleep mode is invalid. |
mcm | 1:0a4da176082f | 357 | */ |
mcm | 1:0a4da176082f | 358 | typedef enum |
mcm | 1:0a4da176082f | 359 | { |
mcm | 1:0a4da176082f | 360 | PCTL_MASK = 0xFF, /*!< PCTL bit mask */ |
mcm | 1:0a4da176082f | 361 | PCTL_NORMAL_MODE = 0x00, /*!< PCTL: Normal mode ( RESET ) */ |
mcm | 1:0a4da176082f | 362 | PCTL_SLEEP_MODE = 0x10, /*!< PCTL: Sleep mode */ |
mcm | 1:0a4da176082f | 363 | PCTL_STANDBY_60SEC_MODE = 0x20, /*!< PCTL: Stand-by mode ( 60sec intermittence ) */ |
mcm | 1:0a4da176082f | 364 | PCTL_STANDBY_10SEC_MODE = 0x21 /*!< PCTL: Stand-by mode ( 10sec intermittence ) */ |
mcm | 1:0a4da176082f | 365 | } AMG8833_pctl_t; |
mcm | 1:0a4da176082f | 366 | |
mcm | 1:0a4da176082f | 367 | |
mcm | 1:0a4da176082f | 368 | /** |
mcm | 1:0a4da176082f | 369 | * @brief RESET REGISTER |
mcm | 1:0a4da176082f | 370 | */ |
mcm | 1:0a4da176082f | 371 | typedef enum |
mcm | 1:0a4da176082f | 372 | { |
mcm | 1:0a4da176082f | 373 | RST_MASK = 0xFF, /*!< RST mask */ |
mcm | 1:0a4da176082f | 374 | RST_FLAG_RESET = 0x30, /*!< Flag reset */ |
mcm | 1:0a4da176082f | 375 | RST_INITIAL_RESET = 0x3F, /*!< Initial reset reset */ |
mcm | 1:0a4da176082f | 376 | RST_RESUME_FROM_RESET = 0x00 /*!< Resume from reset */ |
mcm | 1:0a4da176082f | 377 | } AMG8833_rst_t; |
mcm | 1:0a4da176082f | 378 | |
mcm | 1:0a4da176082f | 379 | |
mcm | 1:0a4da176082f | 380 | |
mcm | 1:0a4da176082f | 381 | /** |
mcm | 1:0a4da176082f | 382 | * @brief FRAME RATE REGISTER ( SETTING FRAME MODE ) |
mcm | 1:0a4da176082f | 383 | */ |
mcm | 1:0a4da176082f | 384 | typedef enum |
mcm | 1:0a4da176082f | 385 | { |
mcm | 1:0a4da176082f | 386 | FPSC_MASK = ( 1U << 0U ), /*!< FPSC mask */ |
mcm | 1:0a4da176082f | 387 | FPSC_1FPS = ( 1U << 0U ), /*!< FPSC: 1 FPSC */ |
mcm | 1:0a4da176082f | 388 | FPSC_10FPS = ( 0U << 0U ) /*!< FPSC: 10 FPSC ( RESET ) */ |
mcm | 1:0a4da176082f | 389 | } AMG8833_fpsc_t; |
mcm | 1:0a4da176082f | 390 | |
mcm | 1:0a4da176082f | 391 | |
mcm | 1:0a4da176082f | 392 | |
mcm | 1:0a4da176082f | 393 | /** |
mcm | 1:0a4da176082f | 394 | * @brief INTERRUPT CONTROL REGISTER |
mcm | 1:0a4da176082f | 395 | */ |
mcm | 1:0a4da176082f | 396 | /** |
mcm | 1:0a4da176082f | 397 | * INTMOD ( INTERRUPT MODE ) <1> |
mcm | 1:0a4da176082f | 398 | */ |
mcm | 1:0a4da176082f | 399 | typedef enum |
mcm | 1:0a4da176082f | 400 | { |
mcm | 1:0a4da176082f | 401 | INTMOD_MASK = ( 1U << 1U ), /*!< INTMOD mask */ |
mcm | 1:0a4da176082f | 402 | INTMOD_ABSOLUTE_INTERRUPT_MODE = ( 1U << 1U ), /*!< Absolute interrupt mode */ |
mcm | 1:0a4da176082f | 403 | INTMOD_DIFFERENCE_INTERRUPT_MODE = ( 0U << 1U ) /*!< Difference Interrupt Mode ( RESET ) */ |
mcm | 1:0a4da176082f | 404 | } AMG8833_intmod_t; |
mcm | 1:0a4da176082f | 405 | |
mcm | 1:0a4da176082f | 406 | |
mcm | 1:0a4da176082f | 407 | |
mcm | 1:0a4da176082f | 408 | /** |
mcm | 1:0a4da176082f | 409 | * INTEN ( INTERRUPT MODE ) <0> |
mcm | 1:0a4da176082f | 410 | */ |
mcm | 1:0a4da176082f | 411 | typedef enum |
mcm | 1:0a4da176082f | 412 | { |
mcm | 1:0a4da176082f | 413 | INTEN_MASK = ( 1U << 0U ), /*!< INTEN mask */ |
mcm | 1:0a4da176082f | 414 | INTEN_INT_OUTPUT_ACTIVE = ( 1U << 0U ), /*!< INT Output active */ |
mcm | 1:0a4da176082f | 415 | INTEN_INT_OUTPUT_REACTIVE = ( 0U << 0U ) /*!< INT Output reactive ( Hi-Z ) ( RESET ) */ |
mcm | 1:0a4da176082f | 416 | } AMG8833_inten_t; |
mcm | 1:0a4da176082f | 417 | |
mcm | 1:0a4da176082f | 418 | |
mcm | 1:0a4da176082f | 419 | |
mcm | 1:0a4da176082f | 420 | /** |
mcm | 1:0a4da176082f | 421 | * @brief STATUS REGISTER |
mcm | 1:0a4da176082f | 422 | */ |
mcm | 1:0a4da176082f | 423 | /** |
mcm | 1:0a4da176082f | 424 | * OVF_THS ( THERMISTOR TEMPERATURE OUTPUT OVERFLOW ) <3> |
mcm | 1:0a4da176082f | 425 | */ |
mcm | 1:0a4da176082f | 426 | typedef enum |
mcm | 1:0a4da176082f | 427 | { |
mcm | 1:0a4da176082f | 428 | OVF_THS_MASK = ( 1U << 3U ), /*!< OVF_THS mask */ |
mcm | 1:0a4da176082f | 429 | OVF_THS_THERMISTOR_TEMPERATURE_OVERFLOW = ( 1U << 3U ), /*!< Thermistor Temperature Output Overflow */ |
mcm | 1:0a4da176082f | 430 | OVF_THS_THERMISTOR_TEMPERATURE_NO_OVERFLOW = ( 0U << 3U ) /*!< Thermistor Temperature Output NO Overflow */ |
mcm | 1:0a4da176082f | 431 | } AMG8833_ovf_ths_t; |
mcm | 1:0a4da176082f | 432 | |
mcm | 1:0a4da176082f | 433 | |
mcm | 1:0a4da176082f | 434 | /** |
mcm | 1:0a4da176082f | 435 | * OVF_IRS ( TEMPERATURE OUTPUT OVERFLOW ) <2> |
mcm | 1:0a4da176082f | 436 | */ |
mcm | 1:0a4da176082f | 437 | typedef enum |
mcm | 1:0a4da176082f | 438 | { |
mcm | 1:0a4da176082f | 439 | OVF_IRS_MASK = ( 1U << 2U ), /*!< OVF_IRS mask */ |
mcm | 1:0a4da176082f | 440 | OVF_IRS_TEMPERATURE_OVERFLOW = ( 1U << 2U ), /*!< Temperature Output Overflow */ |
mcm | 1:0a4da176082f | 441 | OVF_IRS_TEMPERATURE_NO_OVERFLOW = ( 0U << 2U ) /*!< Temperature Output NO Overflow */ |
mcm | 1:0a4da176082f | 442 | } AMG8833_ovf_irs_t; |
mcm | 1:0a4da176082f | 443 | |
mcm | 1:0a4da176082f | 444 | |
mcm | 1:0a4da176082f | 445 | /** |
mcm | 1:0a4da176082f | 446 | * INTF ( INTERRUPT OUTBREAK ) <1> |
mcm | 1:0a4da176082f | 447 | */ |
mcm | 1:0a4da176082f | 448 | typedef enum |
mcm | 1:0a4da176082f | 449 | { |
mcm | 1:0a4da176082f | 450 | INTF_MASK = ( 1U << 1U ), /*!< INTF mask */ |
mcm | 1:0a4da176082f | 451 | INTF_INTERRUPT_OUTBREAK = ( 1U << 1U ), /*!< Interrupt Outbreak */ |
mcm | 1:0a4da176082f | 452 | INTF_INTERRUPT_NO_OUTBREAK = ( 0U << 1U ) /*!< Interrupt NO Outbreak */ |
mcm | 1:0a4da176082f | 453 | } AMG8833_intf_t; |
mcm | 1:0a4da176082f | 454 | |
mcm | 1:0a4da176082f | 455 | |
mcm | 1:0a4da176082f | 456 | |
mcm | 1:0a4da176082f | 457 | /** |
mcm | 1:0a4da176082f | 458 | * @brief STATUS CLEAR REGISTER |
mcm | 1:0a4da176082f | 459 | */ |
mcm | 1:0a4da176082f | 460 | /** |
mcm | 1:0a4da176082f | 461 | * OVT_CLR ( THERMISTOR TEMPERATURE OUTPUT OVERFLOW FLAG CLEAR ) <3> |
mcm | 1:0a4da176082f | 462 | */ |
mcm | 1:0a4da176082f | 463 | typedef enum |
mcm | 1:0a4da176082f | 464 | { |
mcm | 1:0a4da176082f | 465 | OVT_CLR_THERMISTOR_TEMPERATURE_OVERFLOW_CLEAR_FLAG = ( 1U << 3U ) /*!< Thermistor Temperature Output Overflow Clear Flag */ |
mcm | 1:0a4da176082f | 466 | } AMG8833_ovf_clr_t; |
mcm | 1:0a4da176082f | 467 | |
mcm | 1:0a4da176082f | 468 | |
mcm | 1:0a4da176082f | 469 | /** |
mcm | 1:0a4da176082f | 470 | * OVS_CLR ( TEMPERATURE OUTPUT OVERFLOW FLAG CLEAR ) <2> |
mcm | 1:0a4da176082f | 471 | */ |
mcm | 1:0a4da176082f | 472 | typedef enum |
mcm | 1:0a4da176082f | 473 | { |
mcm | 1:0a4da176082f | 474 | OVS_CLR_TEMPERATURE_OVERFLOW_CLEAR_FLAG = ( 1U << 2U ) /*!< Temperature Output Overflow Flag Clear */ |
mcm | 1:0a4da176082f | 475 | } AMG8833_ovs_clr_t; |
mcm | 1:0a4da176082f | 476 | |
mcm | 1:0a4da176082f | 477 | |
mcm | 1:0a4da176082f | 478 | /** |
mcm | 1:0a4da176082f | 479 | * INTCLR ( INTERRUPT OUTBREAK FLAG CLEAR ) <1> |
mcm | 1:0a4da176082f | 480 | */ |
mcm | 1:0a4da176082f | 481 | typedef enum |
mcm | 1:0a4da176082f | 482 | { |
mcm | 1:0a4da176082f | 483 | INTCLR_INTERRUPT_OUTBREAK_CLEAR_FLAG = ( 1U << 1U ) /*!< Interrupt Outbreak Clear Flag */ |
mcm | 1:0a4da176082f | 484 | } AMG8833_intclr_t; |
mcm | 1:0a4da176082f | 485 | |
mcm | 1:0a4da176082f | 486 | |
mcm | 1:0a4da176082f | 487 | |
mcm | 1:0a4da176082f | 488 | /** |
mcm | 1:0a4da176082f | 489 | * @brief AVERAGE REGISTER |
mcm | 1:0a4da176082f | 490 | */ |
mcm | 1:0a4da176082f | 491 | /** |
mcm | 1:0a4da176082f | 492 | * MAMOD ( TWICE MOVING AVERAGE OUTPUT MODE ) <5> |
mcm | 1:0a4da176082f | 493 | */ |
mcm | 1:0a4da176082f | 494 | typedef enum |
mcm | 1:0a4da176082f | 495 | { |
mcm | 1:0a4da176082f | 496 | MAMOD_MASK = ( 1U << 5U ), /*!< MAMOD mask */ |
mcm | 1:0a4da176082f | 497 | MAMOD_WICE_MOVING_AVERAGE_OUTPUT_MODE_ON = ( 1U << 5U ), /*!< Twice moving average Output Mode ON */ |
mcm | 1:0a4da176082f | 498 | MAMOD_WICE_MOVING_AVERAGE_OUTPUT_MODE_OFF = ( 0U << 5U ) /*!< Twice moving average Output Mode OFF ( RESET ) */ |
mcm | 1:0a4da176082f | 499 | } AMG8833_mamod_t; |
mcm | 1:0a4da176082f | 500 | |
mcm | 1:0a4da176082f | 501 | |
mcm | 1:0a4da176082f | 502 | |
mcm | 1:0a4da176082f | 503 | /** |
mcm | 1:0a4da176082f | 504 | * @brief INTERRUPT LEVEL REGISTER |
mcm | 1:0a4da176082f | 505 | */ |
mcm | 1:0a4da176082f | 506 | /** |
mcm | 1:0a4da176082f | 507 | * SETTING UPPER/LOWER LIMIT HYSTERESIS ON INTERRUPT LEVEL |
mcm | 1:0a4da176082f | 508 | */ |
mcm | 1:0a4da176082f | 509 | typedef enum |
mcm | 1:0a4da176082f | 510 | { |
mcm | 1:0a4da176082f | 511 | LIMIT_HYSTERESIS_INTHH_MASK = 0b00001111, /*!< INTHH mask */ |
mcm | 1:0a4da176082f | 512 | LIMIT_HYSTERESIS_INTLH_MASK = 0b00001111, /*!< INTLH mask */ |
mcm | 1:0a4da176082f | 513 | LIMIT_HYSTERESIS_IHYSH_MASK = 0b00001111 /*!< IHYSH mask */ |
mcm | 1:0a4da176082f | 514 | } AMG8833_limit_hysteresis_interrupt_level_t; |
mcm | 1:0a4da176082f | 515 | |
mcm | 1:0a4da176082f | 516 | |
mcm | 1:0a4da176082f | 517 | |
mcm | 1:0a4da176082f | 518 | /** |
mcm | 1:0a4da176082f | 519 | * @brief THERMISTOR REGISTER |
mcm | 1:0a4da176082f | 520 | */ |
mcm | 1:0a4da176082f | 521 | typedef enum |
mcm | 1:0a4da176082f | 522 | { |
mcm | 1:0a4da176082f | 523 | TTHH_MASK = 0b00001111 /*!< TTHH mask */ |
mcm | 1:0a4da176082f | 524 | } AMG8833_thermistor_register_t; |
mcm | 1:0a4da176082f | 525 | |
mcm | 1:0a4da176082f | 526 | |
mcm | 1:0a4da176082f | 527 | |
mcm | 1:0a4da176082f | 528 | /** |
mcm | 1:0a4da176082f | 529 | * @brief TEMPERATURE REGISTER |
mcm | 1:0a4da176082f | 530 | */ |
mcm | 1:0a4da176082f | 531 | typedef enum |
mcm | 1:0a4da176082f | 532 | { |
mcm | 1:0a4da176082f | 533 | TXXH_MASK = 0b00001111 /*!< TXXH mask */ |
mcm | 1:0a4da176082f | 534 | } AMG8833_temperature_register_t; |
mcm | 1:0a4da176082f | 535 | |
mcm | 1:0a4da176082f | 536 | |
mcm | 1:0a4da176082f | 537 | |
mcm | 1:0a4da176082f | 538 | |
mcm | 1:0a4da176082f | 539 | #ifndef AMG8833_VECTOR_STRUCT_H |
mcm | 1:0a4da176082f | 540 | #define AMG8833_VECTOR_STRUCT_H |
mcm | 1:0a4da176082f | 541 | |
mcm | 1:0a4da176082f | 542 | #define THERMISTOR_RESOLUTION 0.0625 /*!< Thermistor Temperature Data 1 LSB has 12 bit resolution at 0.0625C */ |
mcm | 1:0a4da176082f | 543 | #define TEMPERATURE_RESOLUTION 0.25 /*!< Pixel Temperature Data 1 LSB has 12 bit resolution at 0.25C */ |
mcm | 1:0a4da176082f | 544 | |
mcm | 1:0a4da176082f | 545 | typedef struct |
mcm | 1:0a4da176082f | 546 | { |
mcm | 1:0a4da176082f | 547 | float termistorOutputValue; /*!< Termistor output value in Celsius degrees */ |
mcm | 1:0a4da176082f | 548 | float pixelOutputValues[64U]; /*!< Pixel output values in Celsius degrees */ |
mcm | 1:0a4da176082f | 549 | |
mcm | 1:0a4da176082f | 550 | uint16_t termistorOutputRawValue; /*!< Termistor output raw value */ |
mcm | 1:0a4da176082f | 551 | uint16_t pixelOutputRawValues[64U]; /*!< Pixel output raw values */ |
mcm | 1:0a4da176082f | 552 | |
mcm | 1:0a4da176082f | 553 | AMG8833_pctl_t operationMode; /*!< AMG8833 operation mode */ |
mcm | 1:0a4da176082f | 554 | uint8_t pixelInterruptTable[64U]; /*!< Pixel interrupt table */ |
mcm | 1:0a4da176082f | 555 | } AMG8833_data_t; |
mcm | 1:0a4da176082f | 556 | #endif |
mcm | 1:0a4da176082f | 557 | |
mcm | 1:0a4da176082f | 558 | |
mcm | 1:0a4da176082f | 559 | /** |
mcm | 1:0a4da176082f | 560 | * @brief INTERNAL CONSTANTS |
mcm | 1:0a4da176082f | 561 | */ |
mcm | 1:0a4da176082f | 562 | typedef enum { |
mcm | 1:0a4da176082f | 563 | AMG8833_SUCCESS = 0, |
mcm | 1:0a4da176082f | 564 | AMG8833_FAILURE = 1, |
mcm | 1:0a4da176082f | 565 | I2C_SUCCESS = 0 /*!< I2C communication was fine */ |
mcm | 1:0a4da176082f | 566 | } AMG8833_status_t; |
mcm | 1:0a4da176082f | 567 | |
mcm | 1:0a4da176082f | 568 | |
mcm | 1:0a4da176082f | 569 | |
mcm | 1:0a4da176082f | 570 | |
mcm | 1:0a4da176082f | 571 | /** Create an AMG8833 object connected to the specified I2C pins. |
mcm | 1:0a4da176082f | 572 | * |
mcm | 1:0a4da176082f | 573 | * @param sda I2C data pin |
mcm | 1:0a4da176082f | 574 | * @param scl I2C clock pin |
mcm | 1:0a4da176082f | 575 | * @param addr I2C slave address |
mcm | 1:0a4da176082f | 576 | * @param freq I2C frequency |
mcm | 1:0a4da176082f | 577 | */ |
mcm | 1:0a4da176082f | 578 | AMG8833 ( PinName sda, PinName scl, uint32_t addr, uint32_t freq ); |
mcm | 1:0a4da176082f | 579 | |
mcm | 1:0a4da176082f | 580 | /** Delete AMG8833 object. |
mcm | 1:0a4da176082f | 581 | */ |
mcm | 1:0a4da176082f | 582 | ~AMG8833(); |
mcm | 1:0a4da176082f | 583 | |
mcm | 1:0a4da176082f | 584 | /** It reads the operation mode ( power control register ). |
mcm | 1:0a4da176082f | 585 | */ |
mcm | 1:0a4da176082f | 586 | AMG8833_status_t AMG8833_GetOperationMode ( AMG8833_data_t* myOperationMode ); |
mcm | 1:0a4da176082f | 587 | |
mcm | 1:0a4da176082f | 588 | /** It sets the operation mode ( power control register ). |
mcm | 1:0a4da176082f | 589 | */ |
mcm | 1:0a4da176082f | 590 | AMG8833_status_t AMG8833_SetOperationMode ( AMG8833_data_t myOperationMode ); |
mcm | 1:0a4da176082f | 591 | |
mcm | 1:0a4da176082f | 592 | /** It sets the reset mode. |
mcm | 1:0a4da176082f | 593 | */ |
mcm | 1:0a4da176082f | 594 | AMG8833_status_t AMG8833_SoftwareReset ( AMG8833_rst_t mySoftwareReset ); |
mcm | 1:0a4da176082f | 595 | |
mcm | 1:0a4da176082f | 596 | /** It sets frame mode. |
mcm | 1:0a4da176082f | 597 | */ |
mcm | 1:0a4da176082f | 598 | AMG8833_status_t AMG8833_SetFrameMode ( AMG8833_fpsc_t myFrameMode ); |
mcm | 1:0a4da176082f | 599 | |
mcm | 1:0a4da176082f | 600 | /** It sets interrupt function mode. |
mcm | 1:0a4da176082f | 601 | */ |
mcm | 1:0a4da176082f | 602 | AMG8833_status_t AMG8833_SetInterruptFunctionMode ( AMG8833_intmod_t myInterruptMode, AMG8833_inten_t myInterruptOutput ); |
mcm | 1:0a4da176082f | 603 | |
mcm | 1:0a4da176082f | 604 | /** It gets the status register value. |
mcm | 1:0a4da176082f | 605 | */ |
mcm | 1:0a4da176082f | 606 | AMG8833_status_t AMG8833_GetStatusRegisterValue ( uint8_t* myStatusRegisterValue ); |
mcm | 1:0a4da176082f | 607 | |
mcm | 1:0a4da176082f | 608 | /** It clears overflow and/or interrupt flags. |
mcm | 1:0a4da176082f | 609 | */ |
mcm | 1:0a4da176082f | 610 | AMG8833_status_t AMG8833_ClearFlags ( uint8_t myFlagsToBeCleared ); |
mcm | 1:0a4da176082f | 611 | |
mcm | 1:0a4da176082f | 612 | /** It sets twice moving average output mode. |
mcm | 1:0a4da176082f | 613 | */ |
mcm | 1:0a4da176082f | 614 | AMG8833_status_t AMG8833_SetAverageOutputMode ( AMG8833_mamod_t myAverageOutputMode ); |
mcm | 1:0a4da176082f | 615 | |
mcm | 1:0a4da176082f | 616 | /** It sets interrupt level upper/lower limit. |
mcm | 1:0a4da176082f | 617 | */ |
mcm | 1:0a4da176082f | 618 | AMG8833_status_t AMG8833_SetInterruptLevel ( int16_t myUpperLimit, int16_t myLowerLimit ); |
mcm | 1:0a4da176082f | 619 | |
mcm | 1:0a4da176082f | 620 | /** It sets interrupt hysteresis level when interrupt is generated. |
mcm | 1:0a4da176082f | 621 | */ |
mcm | 1:0a4da176082f | 622 | AMG8833_status_t AMG8833_SetHysteresisLevel ( int16_t myHysteresisLimit ); |
mcm | 1:0a4da176082f | 623 | |
mcm | 1:0a4da176082f | 624 | /** It gets thermistor raw temperature data. |
mcm | 1:0a4da176082f | 625 | */ |
mcm | 1:0a4da176082f | 626 | AMG8833_status_t AMG8833_GetThermistorRawData ( AMG8833_data_t* myThermistorRawData ); |
mcm | 1:0a4da176082f | 627 | |
mcm | 1:0a4da176082f | 628 | /** It gets thermistor temperature data. |
mcm | 1:0a4da176082f | 629 | */ |
mcm | 1:0a4da176082f | 630 | AMG8833_status_t AMG8833_GetThermistorValue ( AMG8833_data_t* myThermistorValue ); |
mcm | 1:0a4da176082f | 631 | |
mcm | 1:0a4da176082f | 632 | /** It gets pixel interrupt table. |
mcm | 1:0a4da176082f | 633 | */ |
mcm | 1:0a4da176082f | 634 | AMG8833_status_t AMG8833_GetPixelInterruptTable ( AMG8833_data_t* myPixelInterruptTable ); |
mcm | 1:0a4da176082f | 635 | |
mcm | 1:0a4da176082f | 636 | /** It gets pixel raw temperature data. |
mcm | 1:0a4da176082f | 637 | */ |
mcm | 1:0a4da176082f | 638 | AMG8833_status_t AMG8833_GetPixelRawTemperatures ( AMG8833_data_t* myPixelRawTemperatureData ); |
mcm | 1:0a4da176082f | 639 | |
mcm | 1:0a4da176082f | 640 | /** It gets pixel temperature value in Celsius degrees. |
mcm | 1:0a4da176082f | 641 | */ |
mcm | 1:0a4da176082f | 642 | AMG8833_status_t AMG8833_GetPixelTemperatures ( AMG8833_data_t* myPixelTemperatureData ); |
mcm | 1:0a4da176082f | 643 | |
mcm | 1:0a4da176082f | 644 | |
mcm | 1:0a4da176082f | 645 | |
mcm | 1:0a4da176082f | 646 | private: |
mcm | 1:0a4da176082f | 647 | I2C _i2c; |
mcm | 1:0a4da176082f | 648 | uint32_t _AMG8833_Addr; |
mcm | 1:0a4da176082f | 649 | }; |
mcm | 1:0a4da176082f | 650 | |
mcm | 1:0a4da176082f | 651 | #endif |