Infrared Thermopile Sensor in Chip-Scale Package

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?

UserRevisionLine numberNew 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