Ultra-Small, Low-Power, I2C-Compatible, 3.3-kSPS, 12-Bit ADCs. With Internal Reference, Oscillator, and Programmable Comparator.

Committer:
mcm
Date:
Mon Jul 22 10:12:44 2019 +0000
Revision:
3:b7fd92ede3a7
Parent:
2:9931ca41f17d
This driver was completed and tested ( NUCLEO-L152RE ), it works as expected.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mcm 2:9931ca41f17d 1 /**
mcm 2:9931ca41f17d 2 * @brief ADS101X.cpp
mcm 3:b7fd92ede3a7 3 * @details Ultra-Small, Low-Power, I2C-Compatible, 3.3-kSPS, 12-Bit ADCs. With Internal Reference, Oscillator, and Programmable Comparator.
mcm 2:9931ca41f17d 4 * Function file.
mcm 2:9931ca41f17d 5 *
mcm 2:9931ca41f17d 6 *
mcm 2:9931ca41f17d 7 * @return N/A
mcm 2:9931ca41f17d 8 *
mcm 2:9931ca41f17d 9 * @author Manuel Caballero
mcm 2:9931ca41f17d 10 * @date 22/July/2019
mcm 2:9931ca41f17d 11 * @version 22/July/2019 The ORIGIN
mcm 2:9931ca41f17d 12 * @pre N/A.
mcm 2:9931ca41f17d 13 * @warning N/A
mcm 3:b7fd92ede3a7 14 * @pre This code belongs to AqueronteBlog ( http://unbarquero.blogspot.com ).
mcm 2:9931ca41f17d 15 */
mcm 2:9931ca41f17d 16
mcm 2:9931ca41f17d 17 #include "ADS101X.h"
mcm 2:9931ca41f17d 18
mcm 2:9931ca41f17d 19
mcm 2:9931ca41f17d 20 ADS101X::ADS101X ( PinName sda, PinName scl, uint32_t addr, uint32_t freq, ADS101X_device_t device )
mcm 2:9931ca41f17d 21 : _i2c ( sda, scl )
mcm 2:9931ca41f17d 22 , _ADS101X_Addr ( addr )
mcm 2:9931ca41f17d 23 , _device ( device )
mcm 2:9931ca41f17d 24 {
mcm 2:9931ca41f17d 25 _i2c.frequency( freq );
mcm 2:9931ca41f17d 26 }
mcm 2:9931ca41f17d 27
mcm 2:9931ca41f17d 28
mcm 2:9931ca41f17d 29 ADS101X::~ADS101X()
mcm 2:9931ca41f17d 30 {
mcm 2:9931ca41f17d 31 }
mcm 2:9931ca41f17d 32
mcm 2:9931ca41f17d 33
mcm 2:9931ca41f17d 34 /**
mcm 2:9931ca41f17d 35 * @brief ADS101X_StartSingleConversion ( void );
mcm 2:9931ca41f17d 36 *
mcm 2:9931ca41f17d 37 * @details It starts a new single conversion.
mcm 2:9931ca41f17d 38 *
mcm 2:9931ca41f17d 39 * @param[in] N/A.
mcm 2:9931ca41f17d 40 *
mcm 2:9931ca41f17d 41 * @param[out] N/A.
mcm 2:9931ca41f17d 42 *
mcm 2:9931ca41f17d 43 *
mcm 2:9931ca41f17d 44 * @return Status of ADS101X_StartSingleConversion.
mcm 2:9931ca41f17d 45 *
mcm 2:9931ca41f17d 46 *
mcm 2:9931ca41f17d 47 * @author Manuel Caballero
mcm 2:9931ca41f17d 48 * @date 22/July/2019
mcm 2:9931ca41f17d 49 * @version 222/July/2019 The ORIGIN
mcm 2:9931ca41f17d 50 * @pre This function can only be used when in power-down state and has no effect
mcm 2:9931ca41f17d 51 * when a conversion is ongoing.
mcm 2:9931ca41f17d 52 * @warning N/A.
mcm 2:9931ca41f17d 53 */
mcm 2:9931ca41f17d 54 ADS101X::ADS101X_status_t ADS101X::ADS101X_StartSingleConversion ( void )
mcm 2:9931ca41f17d 55 {
mcm 2:9931ca41f17d 56 char cmd[3] = { 0U };
mcm 2:9931ca41f17d 57 uint16_t myConfig = 0U;
mcm 2:9931ca41f17d 58 uint32_t aux = I2C_SUCCESS;
mcm 2:9931ca41f17d 59
mcm 2:9931ca41f17d 60 /* Read the register to mask it */
mcm 2:9931ca41f17d 61 cmd[0] = ADS101X_CONFIG;
mcm 2:9931ca41f17d 62 aux |= _i2c.write ( _ADS101X_Addr, &cmd[0], 1U, true );
mcm 2:9931ca41f17d 63 aux |= _i2c.read ( _ADS101X_Addr, &cmd[1], 2U );
mcm 2:9931ca41f17d 64
mcm 2:9931ca41f17d 65 /* Mask it and update the register */
mcm 2:9931ca41f17d 66 myConfig = cmd[1];
mcm 2:9931ca41f17d 67 myConfig <<= 8U;
mcm 2:9931ca41f17d 68 myConfig |= cmd[2];
mcm 2:9931ca41f17d 69
mcm 2:9931ca41f17d 70 myConfig |= CONFIG_OS_BUSY;
mcm 2:9931ca41f17d 71 cmd[1] = (char)( myConfig >> 8U );
mcm 2:9931ca41f17d 72 cmd[2] = (char)( myConfig );
mcm 2:9931ca41f17d 73 aux |= _i2c.write ( _ADS101X_Addr, &cmd[0], sizeof( cmd )/sizeof( cmd[0] ), false );
mcm 2:9931ca41f17d 74
mcm 2:9931ca41f17d 75
mcm 2:9931ca41f17d 76
mcm 2:9931ca41f17d 77 if ( aux == I2C_SUCCESS )
mcm 2:9931ca41f17d 78 {
mcm 2:9931ca41f17d 79 return ADS101X_SUCCESS;
mcm 2:9931ca41f17d 80 }
mcm 2:9931ca41f17d 81 else
mcm 2:9931ca41f17d 82 {
mcm 2:9931ca41f17d 83 return ADS101X_FAILURE;
mcm 2:9931ca41f17d 84 }
mcm 2:9931ca41f17d 85 }
mcm 2:9931ca41f17d 86
mcm 2:9931ca41f17d 87
mcm 2:9931ca41f17d 88
mcm 2:9931ca41f17d 89 /**
mcm 2:9931ca41f17d 90 * @brief ADS101X_GetOS ( ADS101X_data_t* );
mcm 2:9931ca41f17d 91 *
mcm 2:9931ca41f17d 92 * @details It checks if the device is not currently performing a conversion.
mcm 2:9931ca41f17d 93 *
mcm 2:9931ca41f17d 94 * @param[in] N/A.
mcm 2:9931ca41f17d 95 *
mcm 2:9931ca41f17d 96 * @param[out] myADS101X: Operational status flag.
mcm 2:9931ca41f17d 97 *
mcm 2:9931ca41f17d 98 *
mcm 2:9931ca41f17d 99 * @return Status of ADS101X_GetOS.
mcm 2:9931ca41f17d 100 *
mcm 2:9931ca41f17d 101 *
mcm 2:9931ca41f17d 102 * @author Manuel Caballero
mcm 2:9931ca41f17d 103 * @date 22/July/2019
mcm 2:9931ca41f17d 104 * @version 22/July/2019 The ORIGIN
mcm 2:9931ca41f17d 105 * @pre N/A
mcm 2:9931ca41f17d 106 * @warning N/A.
mcm 2:9931ca41f17d 107 */
mcm 2:9931ca41f17d 108 ADS101X::ADS101X_status_t ADS101X::ADS101X_GetOS ( ADS101X_data_t* myADS101X )
mcm 2:9931ca41f17d 109 {
mcm 2:9931ca41f17d 110 char cmd[2] = { 0U };
mcm 2:9931ca41f17d 111 uint16_t myConfig = 0U;
mcm 2:9931ca41f17d 112 uint32_t aux = I2C_SUCCESS;
mcm 2:9931ca41f17d 113
mcm 2:9931ca41f17d 114 /* Read the register to mask it */
mcm 2:9931ca41f17d 115 cmd[0] = ADS101X_CONFIG;
mcm 2:9931ca41f17d 116 aux |= _i2c.write ( _ADS101X_Addr, &cmd[0], 1U, true );
mcm 2:9931ca41f17d 117 aux |= _i2c.read ( _ADS101X_Addr, &cmd[0], sizeof( cmd )/sizeof( cmd[0] ) );
mcm 2:9931ca41f17d 118
mcm 2:9931ca41f17d 119 /* Parse it */
mcm 2:9931ca41f17d 120 myConfig = cmd[0];
mcm 2:9931ca41f17d 121 myConfig <<= 8U;
mcm 2:9931ca41f17d 122 myConfig |= cmd[1];
mcm 2:9931ca41f17d 123 myADS101X->os = (ADS101X_config_os_t)( myConfig & CONFIG_OS_MASK );
mcm 2:9931ca41f17d 124
mcm 2:9931ca41f17d 125
mcm 2:9931ca41f17d 126
mcm 2:9931ca41f17d 127 if ( aux == I2C_SUCCESS )
mcm 2:9931ca41f17d 128 {
mcm 2:9931ca41f17d 129 return ADS101X_SUCCESS;
mcm 2:9931ca41f17d 130 }
mcm 2:9931ca41f17d 131 else
mcm 2:9931ca41f17d 132 {
mcm 2:9931ca41f17d 133 return ADS101X_FAILURE;
mcm 2:9931ca41f17d 134 }
mcm 2:9931ca41f17d 135 }
mcm 2:9931ca41f17d 136
mcm 2:9931ca41f17d 137
mcm 2:9931ca41f17d 138
mcm 2:9931ca41f17d 139 /**
mcm 2:9931ca41f17d 140 * @brief ADS101X_SetMux ( ADS101X_data_t );
mcm 2:9931ca41f17d 141 *
mcm 2:9931ca41f17d 142 * @details It sets input multiplexer configuration.
mcm 2:9931ca41f17d 143 *
mcm 2:9931ca41f17d 144 * @param[in] myADS101X: Input multiplexer configuration.
mcm 2:9931ca41f17d 145 *
mcm 2:9931ca41f17d 146 * @param[out] N/A.
mcm 2:9931ca41f17d 147 *
mcm 2:9931ca41f17d 148 *
mcm 2:9931ca41f17d 149 * @return Status of ADS101X_SetMux.
mcm 2:9931ca41f17d 150 *
mcm 2:9931ca41f17d 151 *
mcm 2:9931ca41f17d 152 * @author Manuel Caballero
mcm 2:9931ca41f17d 153 * @date 22/July/2019
mcm 2:9931ca41f17d 154 * @version 22/July/2019 The ORIGIN
mcm 2:9931ca41f17d 155 * @pre N/A
mcm 2:9931ca41f17d 156 * @warning ADS1015 only.
mcm 2:9931ca41f17d 157 */
mcm 2:9931ca41f17d 158 ADS101X::ADS101X_status_t ADS101X::ADS101X_SetMux ( ADS101X_data_t myADS101X )
mcm 2:9931ca41f17d 159 {
mcm 2:9931ca41f17d 160 char cmd[3] = { 0U };
mcm 2:9931ca41f17d 161 uint16_t myConfig = 0U;
mcm 2:9931ca41f17d 162 uint32_t aux = I2C_SUCCESS;
mcm 2:9931ca41f17d 163
mcm 2:9931ca41f17d 164 /* Only ADS1015 supports this functionality */
mcm 2:9931ca41f17d 165 if ( _device == DEVICE_ADS1015 )
mcm 2:9931ca41f17d 166 {
mcm 2:9931ca41f17d 167 /* Read the register to mask it */
mcm 2:9931ca41f17d 168 cmd[0] = ADS101X_CONFIG;
mcm 2:9931ca41f17d 169 aux |= _i2c.write ( _ADS101X_Addr, &cmd[0], 1U, true );
mcm 2:9931ca41f17d 170 aux |= _i2c.read ( _ADS101X_Addr, &cmd[1], 2U );
mcm 2:9931ca41f17d 171
mcm 2:9931ca41f17d 172 /* Mask it and update the register */
mcm 2:9931ca41f17d 173 myConfig = cmd[1];
mcm 2:9931ca41f17d 174 myConfig <<= 8U;
mcm 2:9931ca41f17d 175 myConfig |= cmd[2];
mcm 2:9931ca41f17d 176
mcm 2:9931ca41f17d 177 myConfig &= ~CONFIG_MUX_MASK;
mcm 2:9931ca41f17d 178 myConfig |= myADS101X.mux;
mcm 2:9931ca41f17d 179 cmd[1] = (char)( myConfig >> 8U );
mcm 2:9931ca41f17d 180 cmd[2] = (char)( myConfig );
mcm 2:9931ca41f17d 181 aux |= _i2c.write ( _ADS101X_Addr, &cmd[0], sizeof( cmd )/sizeof( cmd[0] ), false );
mcm 2:9931ca41f17d 182 }
mcm 2:9931ca41f17d 183 else
mcm 2:9931ca41f17d 184 {
mcm 2:9931ca41f17d 185 return ADS101X_DEVICE_NOT_SUPPORTED;
mcm 2:9931ca41f17d 186 }
mcm 2:9931ca41f17d 187
mcm 2:9931ca41f17d 188
mcm 2:9931ca41f17d 189 if ( aux == I2C_SUCCESS )
mcm 2:9931ca41f17d 190 {
mcm 2:9931ca41f17d 191 return ADS101X_SUCCESS;
mcm 2:9931ca41f17d 192 }
mcm 2:9931ca41f17d 193 else
mcm 2:9931ca41f17d 194 {
mcm 2:9931ca41f17d 195 return ADS101X_FAILURE;
mcm 2:9931ca41f17d 196 }
mcm 2:9931ca41f17d 197 }
mcm 2:9931ca41f17d 198
mcm 2:9931ca41f17d 199
mcm 2:9931ca41f17d 200
mcm 2:9931ca41f17d 201 /**
mcm 2:9931ca41f17d 202 * @brief ADS101X_GetMux ( ADS101X_data_t* );
mcm 2:9931ca41f17d 203 *
mcm 2:9931ca41f17d 204 * @details It gets input multiplexer configuration.
mcm 2:9931ca41f17d 205 *
mcm 2:9931ca41f17d 206 * @param[in] N/A.
mcm 2:9931ca41f17d 207 *
mcm 2:9931ca41f17d 208 * @param[out] myADS101X: Input multiplexer configuration..
mcm 2:9931ca41f17d 209 *
mcm 2:9931ca41f17d 210 *
mcm 2:9931ca41f17d 211 * @return Status of ADS101X_GetMux.
mcm 2:9931ca41f17d 212 *
mcm 2:9931ca41f17d 213 *
mcm 2:9931ca41f17d 214 * @author Manuel Caballero
mcm 2:9931ca41f17d 215 * @date 22/July/2019
mcm 2:9931ca41f17d 216 * @version 22/July/2019 The ORIGIN
mcm 2:9931ca41f17d 217 * @pre N/A
mcm 2:9931ca41f17d 218 * @warning ADS1015 only.
mcm 2:9931ca41f17d 219 */
mcm 2:9931ca41f17d 220 ADS101X::ADS101X_status_t ADS101X::ADS101X_GetMux ( ADS101X_data_t* myADS101X )
mcm 2:9931ca41f17d 221 {
mcm 2:9931ca41f17d 222 char cmd[2] = { 0U };
mcm 2:9931ca41f17d 223 uint16_t myConfig = 0U;
mcm 2:9931ca41f17d 224 uint32_t aux = I2C_SUCCESS;
mcm 2:9931ca41f17d 225
mcm 2:9931ca41f17d 226 /* Only ADS1015 supports this functionality */
mcm 2:9931ca41f17d 227 if ( _device == DEVICE_ADS1015 )
mcm 2:9931ca41f17d 228 {
mcm 2:9931ca41f17d 229 /* Read the register to mask it */
mcm 2:9931ca41f17d 230 cmd[0] = ADS101X_CONFIG;
mcm 2:9931ca41f17d 231 aux |= _i2c.write ( _ADS101X_Addr, &cmd[0], 1U, true );
mcm 2:9931ca41f17d 232 aux |= _i2c.read ( _ADS101X_Addr, &cmd[0], sizeof( cmd )/sizeof( cmd[0] ) );
mcm 2:9931ca41f17d 233
mcm 2:9931ca41f17d 234 /* Parse the data */
mcm 2:9931ca41f17d 235 myConfig = cmd[0];
mcm 2:9931ca41f17d 236 myConfig <<= 8U;
mcm 2:9931ca41f17d 237 myConfig |= cmd[1];
mcm 2:9931ca41f17d 238 myADS101X->mux = (ADS101X_config_mux_t)( myConfig & CONFIG_MUX_MASK );
mcm 2:9931ca41f17d 239 }
mcm 2:9931ca41f17d 240 else
mcm 2:9931ca41f17d 241 {
mcm 2:9931ca41f17d 242 return ADS101X_DEVICE_NOT_SUPPORTED;
mcm 2:9931ca41f17d 243 }
mcm 2:9931ca41f17d 244
mcm 2:9931ca41f17d 245
mcm 2:9931ca41f17d 246 if ( aux == I2C_SUCCESS )
mcm 2:9931ca41f17d 247 {
mcm 2:9931ca41f17d 248 return ADS101X_SUCCESS;
mcm 2:9931ca41f17d 249 }
mcm 2:9931ca41f17d 250 else
mcm 2:9931ca41f17d 251 {
mcm 2:9931ca41f17d 252 return ADS101X_FAILURE;
mcm 2:9931ca41f17d 253 }
mcm 2:9931ca41f17d 254 }
mcm 2:9931ca41f17d 255
mcm 2:9931ca41f17d 256
mcm 2:9931ca41f17d 257
mcm 2:9931ca41f17d 258 /**
mcm 2:9931ca41f17d 259 * @brief ADS101X_SetGain ( ADS101X_data_t );
mcm 2:9931ca41f17d 260 *
mcm 2:9931ca41f17d 261 * @details It sets programmable gain amplifier.
mcm 2:9931ca41f17d 262 *
mcm 2:9931ca41f17d 263 * @param[in] myPGA: Programmable gain.
mcm 2:9931ca41f17d 264 *
mcm 2:9931ca41f17d 265 * @param[out] N/A.
mcm 2:9931ca41f17d 266 *
mcm 2:9931ca41f17d 267 *
mcm 2:9931ca41f17d 268 * @return Status of ADS101X_SetGain.
mcm 2:9931ca41f17d 269 *
mcm 2:9931ca41f17d 270 *
mcm 2:9931ca41f17d 271 * @author Manuel Caballero
mcm 2:9931ca41f17d 272 * @date 22/July/2019
mcm 2:9931ca41f17d 273 * @version 22/July/2019 The ORIGIN
mcm 2:9931ca41f17d 274 * @pre N/A
mcm 2:9931ca41f17d 275 * @warning Not ADS1013.
mcm 2:9931ca41f17d 276 */
mcm 2:9931ca41f17d 277 ADS101X::ADS101X_status_t ADS101X::ADS101X_SetGain ( ADS101X_data_t myPGA )
mcm 2:9931ca41f17d 278 {
mcm 2:9931ca41f17d 279 char cmd[3] = { 0U };
mcm 2:9931ca41f17d 280 uint16_t myConfig = 0U;
mcm 2:9931ca41f17d 281 uint32_t aux = I2C_SUCCESS;
mcm 2:9931ca41f17d 282
mcm 2:9931ca41f17d 283 /* Only ADS1015/ADS1014 supports this functionality */
mcm 2:9931ca41f17d 284 if ( _device != DEVICE_ADS1013 )
mcm 2:9931ca41f17d 285 {
mcm 2:9931ca41f17d 286 /* Read the register to mask it */
mcm 2:9931ca41f17d 287 cmd[0] = ADS101X_CONFIG;
mcm 2:9931ca41f17d 288 aux |= _i2c.write ( _ADS101X_Addr, &cmd[0], 1U, true );
mcm 2:9931ca41f17d 289 aux |= _i2c.read ( _ADS101X_Addr, &cmd[1], 2U );
mcm 2:9931ca41f17d 290
mcm 2:9931ca41f17d 291 /* Mask it and update the register */
mcm 2:9931ca41f17d 292 myConfig = cmd[1];
mcm 2:9931ca41f17d 293 myConfig <<= 8U;
mcm 2:9931ca41f17d 294 myConfig |= cmd[2];
mcm 2:9931ca41f17d 295
mcm 2:9931ca41f17d 296 myConfig &= ~CONFIG_PGA_MASK;
mcm 2:9931ca41f17d 297 myConfig |= myPGA.pga;
mcm 2:9931ca41f17d 298 cmd[1] = (char)( myConfig >> 8U );
mcm 2:9931ca41f17d 299 cmd[2] = (char)( myConfig );
mcm 2:9931ca41f17d 300 aux |= _i2c.write ( _ADS101X_Addr, &cmd[0], sizeof( cmd )/sizeof( cmd[0] ), false );
mcm 2:9931ca41f17d 301 }
mcm 2:9931ca41f17d 302 else
mcm 2:9931ca41f17d 303 {
mcm 2:9931ca41f17d 304 return ADS101X_DEVICE_NOT_SUPPORTED;
mcm 2:9931ca41f17d 305 }
mcm 2:9931ca41f17d 306
mcm 2:9931ca41f17d 307
mcm 2:9931ca41f17d 308 if ( aux == I2C_SUCCESS )
mcm 2:9931ca41f17d 309 {
mcm 2:9931ca41f17d 310 return ADS101X_SUCCESS;
mcm 2:9931ca41f17d 311 }
mcm 2:9931ca41f17d 312 else
mcm 2:9931ca41f17d 313 {
mcm 2:9931ca41f17d 314 return ADS101X_FAILURE;
mcm 2:9931ca41f17d 315 }
mcm 2:9931ca41f17d 316 }
mcm 2:9931ca41f17d 317
mcm 2:9931ca41f17d 318
mcm 2:9931ca41f17d 319
mcm 2:9931ca41f17d 320 /**
mcm 2:9931ca41f17d 321 * @brief ADS101X_GetGain ( ADS101X_data_t* );
mcm 2:9931ca41f17d 322 *
mcm 2:9931ca41f17d 323 * @details It gets programmable gain amplifier.
mcm 2:9931ca41f17d 324 *
mcm 2:9931ca41f17d 325 * @param[in] N/A.
mcm 2:9931ca41f17d 326 *
mcm 2:9931ca41f17d 327 * @param[out] myPGA: Programmable gain.
mcm 2:9931ca41f17d 328 *
mcm 2:9931ca41f17d 329 *
mcm 2:9931ca41f17d 330 * @return Status of ADS101X_GetGain.
mcm 2:9931ca41f17d 331 *
mcm 2:9931ca41f17d 332 *
mcm 2:9931ca41f17d 333 * @author Manuel Caballero
mcm 2:9931ca41f17d 334 * @date 22/July/2019
mcm 2:9931ca41f17d 335 * @version 22/July/2019 The ORIGIN
mcm 2:9931ca41f17d 336 * @pre N/A
mcm 2:9931ca41f17d 337 * @warning Not ADS1013.
mcm 2:9931ca41f17d 338 */
mcm 2:9931ca41f17d 339 ADS101X::ADS101X_status_t ADS101X::ADS101X_GetGain ( ADS101X_data_t* myPGA )
mcm 2:9931ca41f17d 340 {
mcm 2:9931ca41f17d 341 char cmd[2] = { 0U };
mcm 2:9931ca41f17d 342 uint16_t myConfig = 0U;
mcm 2:9931ca41f17d 343 uint32_t aux = I2C_SUCCESS;
mcm 2:9931ca41f17d 344
mcm 2:9931ca41f17d 345 /* Only ADS1015/ADS1014 supports this functionality */
mcm 2:9931ca41f17d 346 if ( _device != DEVICE_ADS1013 )
mcm 2:9931ca41f17d 347 {
mcm 2:9931ca41f17d 348 /* Read the register to mask it */
mcm 2:9931ca41f17d 349 cmd[0] = ADS101X_CONFIG;
mcm 2:9931ca41f17d 350 aux |= _i2c.write ( _ADS101X_Addr, &cmd[0], 1U, true );
mcm 2:9931ca41f17d 351 aux |= _i2c.read ( _ADS101X_Addr, &cmd[0], sizeof( cmd )/sizeof( cmd[0] ) );
mcm 2:9931ca41f17d 352
mcm 2:9931ca41f17d 353 /* Parse the data */
mcm 2:9931ca41f17d 354 myConfig = cmd[0];
mcm 2:9931ca41f17d 355 myConfig <<= 8U;
mcm 2:9931ca41f17d 356 myConfig |= cmd[1];
mcm 2:9931ca41f17d 357 myPGA->pga = (ADS101X_config_pga_t)( myConfig & CONFIG_PGA_MASK );
mcm 2:9931ca41f17d 358 }
mcm 2:9931ca41f17d 359 else
mcm 2:9931ca41f17d 360 {
mcm 2:9931ca41f17d 361 return ADS101X_DEVICE_NOT_SUPPORTED;
mcm 2:9931ca41f17d 362 }
mcm 2:9931ca41f17d 363
mcm 2:9931ca41f17d 364
mcm 2:9931ca41f17d 365 if ( aux == I2C_SUCCESS )
mcm 2:9931ca41f17d 366 {
mcm 2:9931ca41f17d 367 return ADS101X_SUCCESS;
mcm 2:9931ca41f17d 368 }
mcm 2:9931ca41f17d 369 else
mcm 2:9931ca41f17d 370 {
mcm 2:9931ca41f17d 371 return ADS101X_FAILURE;
mcm 2:9931ca41f17d 372 }
mcm 2:9931ca41f17d 373 }
mcm 2:9931ca41f17d 374
mcm 2:9931ca41f17d 375
mcm 2:9931ca41f17d 376
mcm 2:9931ca41f17d 377 /**
mcm 2:9931ca41f17d 378 * @brief ADS101X_SetMode ( ADS101X_data_t );
mcm 2:9931ca41f17d 379 *
mcm 2:9931ca41f17d 380 * @details It sets the device operating mode.
mcm 2:9931ca41f17d 381 *
mcm 2:9931ca41f17d 382 * @param[in] myMode: Continuous/Single-shot mode conversion.
mcm 2:9931ca41f17d 383 *
mcm 2:9931ca41f17d 384 * @param[out] N/A.
mcm 2:9931ca41f17d 385 *
mcm 2:9931ca41f17d 386 *
mcm 2:9931ca41f17d 387 * @return Status of ADS101X_SetMode.
mcm 2:9931ca41f17d 388 *
mcm 2:9931ca41f17d 389 *
mcm 2:9931ca41f17d 390 * @author Manuel Caballero
mcm 2:9931ca41f17d 391 * @date 22/July/2019
mcm 2:9931ca41f17d 392 * @version 22/July/2019 The ORIGIN
mcm 2:9931ca41f17d 393 * @pre N/A
mcm 2:9931ca41f17d 394 * @warning N/A.
mcm 2:9931ca41f17d 395 */
mcm 2:9931ca41f17d 396 ADS101X::ADS101X_status_t ADS101X::ADS101X_SetMode ( ADS101X_data_t myMode )
mcm 2:9931ca41f17d 397 {
mcm 2:9931ca41f17d 398 char cmd[3] = { 0U };
mcm 2:9931ca41f17d 399 uint16_t myConfig = 0U;
mcm 2:9931ca41f17d 400 uint32_t aux = I2C_SUCCESS;
mcm 2:9931ca41f17d 401
mcm 2:9931ca41f17d 402 /* Read the register to mask it */
mcm 2:9931ca41f17d 403 cmd[0] = ADS101X_CONFIG;
mcm 2:9931ca41f17d 404 aux |= _i2c.write ( _ADS101X_Addr, &cmd[0], 1U, true );
mcm 2:9931ca41f17d 405 aux |= _i2c.read ( _ADS101X_Addr, &cmd[1], 2U );
mcm 2:9931ca41f17d 406
mcm 2:9931ca41f17d 407 /* Mask it and update the register */
mcm 2:9931ca41f17d 408 myConfig = cmd[1];
mcm 2:9931ca41f17d 409 myConfig <<= 8U;
mcm 2:9931ca41f17d 410 myConfig |= cmd[2];
mcm 2:9931ca41f17d 411
mcm 2:9931ca41f17d 412 myConfig &= ~CONFIG_MODE_MASK;
mcm 2:9931ca41f17d 413 myConfig |= myMode.mode;
mcm 2:9931ca41f17d 414 cmd[1] = (char)( myConfig >> 8U );
mcm 2:9931ca41f17d 415 cmd[2] = (char)( myConfig );
mcm 2:9931ca41f17d 416 aux |= _i2c.write ( _ADS101X_Addr, &cmd[0], sizeof( cmd )/sizeof( cmd[0] ), false );
mcm 2:9931ca41f17d 417
mcm 2:9931ca41f17d 418
mcm 2:9931ca41f17d 419
mcm 2:9931ca41f17d 420 if ( aux == I2C_SUCCESS )
mcm 2:9931ca41f17d 421 {
mcm 2:9931ca41f17d 422 return ADS101X_SUCCESS;
mcm 2:9931ca41f17d 423 }
mcm 2:9931ca41f17d 424 else
mcm 2:9931ca41f17d 425 {
mcm 2:9931ca41f17d 426 return ADS101X_FAILURE;
mcm 2:9931ca41f17d 427 }
mcm 2:9931ca41f17d 428 }
mcm 2:9931ca41f17d 429
mcm 2:9931ca41f17d 430
mcm 2:9931ca41f17d 431
mcm 2:9931ca41f17d 432 /**
mcm 2:9931ca41f17d 433 * @brief ADS101X_GetMode ( ADS101X_data_t* );
mcm 2:9931ca41f17d 434 *
mcm 2:9931ca41f17d 435 * @details It gets the device operating mode.
mcm 2:9931ca41f17d 436 *
mcm 2:9931ca41f17d 437 * @param[in] _N/A.
mcm 2:9931ca41f17d 438 *
mcm 2:9931ca41f17d 439 * @param[out] myMode: Continuous/Single-shot mode conversion..
mcm 2:9931ca41f17d 440 *
mcm 2:9931ca41f17d 441 *
mcm 2:9931ca41f17d 442 * @return Status of ADS101X_GetMode.
mcm 2:9931ca41f17d 443 *
mcm 2:9931ca41f17d 444 *
mcm 2:9931ca41f17d 445 * @author Manuel Caballero
mcm 2:9931ca41f17d 446 * @date 22/July/2019
mcm 2:9931ca41f17d 447 * @version 22/July/2019 The ORIGIN
mcm 2:9931ca41f17d 448 * @pre N/A
mcm 2:9931ca41f17d 449 * @warning N/A.
mcm 2:9931ca41f17d 450 */
mcm 2:9931ca41f17d 451 ADS101X::ADS101X_status_t ADS101X::ADS101X_GetMode ( ADS101X_data_t* myMode )
mcm 2:9931ca41f17d 452 {
mcm 2:9931ca41f17d 453 char cmd[2] = { 0U };
mcm 2:9931ca41f17d 454 uint16_t myConfig = 0U;
mcm 2:9931ca41f17d 455 uint32_t aux = I2C_SUCCESS;
mcm 2:9931ca41f17d 456
mcm 2:9931ca41f17d 457 /* Read the register to mask it */
mcm 2:9931ca41f17d 458 cmd[0] = ADS101X_CONFIG;
mcm 2:9931ca41f17d 459 aux |= _i2c.write ( _ADS101X_Addr, &cmd[0], 1U, true );
mcm 2:9931ca41f17d 460 aux |= _i2c.read ( _ADS101X_Addr, &cmd[0], sizeof( cmd )/sizeof( cmd[0] ) );
mcm 2:9931ca41f17d 461
mcm 2:9931ca41f17d 462 /* Parse the data */
mcm 2:9931ca41f17d 463 myConfig = cmd[0];
mcm 2:9931ca41f17d 464 myConfig <<= 8U;
mcm 2:9931ca41f17d 465 myConfig |= cmd[1];
mcm 2:9931ca41f17d 466 myMode->mode = (ADS101X_config_mode_t)( myConfig & CONFIG_MODE_MASK );
mcm 2:9931ca41f17d 467
mcm 2:9931ca41f17d 468
mcm 2:9931ca41f17d 469
mcm 2:9931ca41f17d 470 if ( aux == I2C_SUCCESS )
mcm 2:9931ca41f17d 471 {
mcm 2:9931ca41f17d 472 return ADS101X_SUCCESS;
mcm 2:9931ca41f17d 473 }
mcm 2:9931ca41f17d 474 else
mcm 2:9931ca41f17d 475 {
mcm 2:9931ca41f17d 476 return ADS101X_FAILURE;
mcm 2:9931ca41f17d 477 }
mcm 2:9931ca41f17d 478 }
mcm 2:9931ca41f17d 479
mcm 2:9931ca41f17d 480
mcm 2:9931ca41f17d 481
mcm 2:9931ca41f17d 482 /**
mcm 2:9931ca41f17d 483 * @brief ADS101X_SetDataRate ( ADS101X_data_t );
mcm 2:9931ca41f17d 484 *
mcm 2:9931ca41f17d 485 * @details It sets the data rate.
mcm 2:9931ca41f17d 486 *
mcm 2:9931ca41f17d 487 * @param[in] myDR: Data rate.
mcm 2:9931ca41f17d 488 *
mcm 2:9931ca41f17d 489 * @param[out] N/A.
mcm 2:9931ca41f17d 490 *
mcm 2:9931ca41f17d 491 *
mcm 2:9931ca41f17d 492 * @return Status of ADS101X_SetDataRate.
mcm 2:9931ca41f17d 493 *
mcm 2:9931ca41f17d 494 *
mcm 2:9931ca41f17d 495 * @author Manuel Caballero
mcm 2:9931ca41f17d 496 * @date 22/July/2019
mcm 2:9931ca41f17d 497 * @version 22/July/2019 The ORIGIN
mcm 2:9931ca41f17d 498 * @pre N/A
mcm 2:9931ca41f17d 499 * @warning N/A.
mcm 2:9931ca41f17d 500 */
mcm 2:9931ca41f17d 501 ADS101X::ADS101X_status_t ADS101X::ADS101X_SetDataRate ( ADS101X_data_t myDR )
mcm 2:9931ca41f17d 502 {
mcm 2:9931ca41f17d 503 char cmd[3] = { 0U };
mcm 2:9931ca41f17d 504 uint16_t myConfig = 0U;
mcm 2:9931ca41f17d 505 uint32_t aux = I2C_SUCCESS;
mcm 2:9931ca41f17d 506
mcm 2:9931ca41f17d 507 /* Read the register to mask it */
mcm 2:9931ca41f17d 508 cmd[0] = ADS101X_CONFIG;
mcm 2:9931ca41f17d 509 aux |= _i2c.write ( _ADS101X_Addr, &cmd[0], 1U, true );
mcm 2:9931ca41f17d 510 aux |= _i2c.read ( _ADS101X_Addr, &cmd[1], 2U );
mcm 2:9931ca41f17d 511
mcm 2:9931ca41f17d 512 /* Mask it and update the register */
mcm 2:9931ca41f17d 513 myConfig = cmd[1];
mcm 2:9931ca41f17d 514 myConfig <<= 8U;
mcm 2:9931ca41f17d 515 myConfig |= cmd[2];
mcm 2:9931ca41f17d 516
mcm 2:9931ca41f17d 517 myConfig &= ~CONFIG_DR_MASK;
mcm 2:9931ca41f17d 518 myConfig |= myDR.dr;
mcm 2:9931ca41f17d 519 cmd[1] = (char)( myConfig >> 8U );
mcm 2:9931ca41f17d 520 cmd[2] = (char)( myConfig );
mcm 2:9931ca41f17d 521 aux |= _i2c.write ( _ADS101X_Addr, &cmd[0], sizeof( cmd )/sizeof( cmd[0] ), false );
mcm 2:9931ca41f17d 522
mcm 2:9931ca41f17d 523
mcm 2:9931ca41f17d 524
mcm 2:9931ca41f17d 525 if ( aux == I2C_SUCCESS )
mcm 2:9931ca41f17d 526 {
mcm 2:9931ca41f17d 527 return ADS101X_SUCCESS;
mcm 2:9931ca41f17d 528 }
mcm 2:9931ca41f17d 529 else
mcm 2:9931ca41f17d 530 {
mcm 2:9931ca41f17d 531 return ADS101X_FAILURE;
mcm 2:9931ca41f17d 532 }
mcm 2:9931ca41f17d 533 }
mcm 2:9931ca41f17d 534
mcm 2:9931ca41f17d 535
mcm 2:9931ca41f17d 536
mcm 2:9931ca41f17d 537 /**
mcm 2:9931ca41f17d 538 * @brief ADS101X_GetDataRate ( ADS101X_data_t* );
mcm 2:9931ca41f17d 539 *
mcm 2:9931ca41f17d 540 * @details It gets the data rate.
mcm 2:9931ca41f17d 541 *
mcm 2:9931ca41f17d 542 * @param[in] N/A.
mcm 2:9931ca41f17d 543 *
mcm 2:9931ca41f17d 544 * @param[out] myDR: Data rate.
mcm 2:9931ca41f17d 545 *
mcm 2:9931ca41f17d 546 *
mcm 2:9931ca41f17d 547 * @return Status of ADS101X_GetDataRate.
mcm 2:9931ca41f17d 548 *
mcm 2:9931ca41f17d 549 *
mcm 2:9931ca41f17d 550 * @author Manuel Caballero
mcm 2:9931ca41f17d 551 * @date 22/July/2019
mcm 2:9931ca41f17d 552 * @version 22/July/2019 The ORIGIN
mcm 2:9931ca41f17d 553 * @pre N/A
mcm 2:9931ca41f17d 554 * @warning N/A.
mcm 2:9931ca41f17d 555 */
mcm 2:9931ca41f17d 556 ADS101X::ADS101X_status_t ADS101X::ADS101X_GetDataRate ( ADS101X_data_t* myDR )
mcm 2:9931ca41f17d 557 {
mcm 2:9931ca41f17d 558 char cmd[2] = { 0U };
mcm 2:9931ca41f17d 559 uint16_t myConfig = 0U;
mcm 2:9931ca41f17d 560 uint32_t aux = I2C_SUCCESS;
mcm 2:9931ca41f17d 561
mcm 2:9931ca41f17d 562 /* Read the register to mask it */
mcm 2:9931ca41f17d 563 cmd[0] = ADS101X_CONFIG;
mcm 2:9931ca41f17d 564 aux |= _i2c.write ( _ADS101X_Addr, &cmd[0], 1U, true );
mcm 2:9931ca41f17d 565 aux |= _i2c.read ( _ADS101X_Addr, &cmd[0], sizeof( cmd )/sizeof( cmd[0] ) );
mcm 2:9931ca41f17d 566
mcm 2:9931ca41f17d 567 /* Parse the data */
mcm 2:9931ca41f17d 568 myConfig = cmd[0];
mcm 2:9931ca41f17d 569 myConfig <<= 8U;
mcm 2:9931ca41f17d 570 myConfig |= cmd[1];
mcm 2:9931ca41f17d 571 myDR->dr = (ADS101X_config_dr_t)( myConfig & CONFIG_DR_MASK );
mcm 2:9931ca41f17d 572
mcm 2:9931ca41f17d 573
mcm 2:9931ca41f17d 574
mcm 2:9931ca41f17d 575 if ( aux == I2C_SUCCESS )
mcm 2:9931ca41f17d 576 {
mcm 2:9931ca41f17d 577 return ADS101X_SUCCESS;
mcm 2:9931ca41f17d 578 }
mcm 2:9931ca41f17d 579 else
mcm 2:9931ca41f17d 580 {
mcm 2:9931ca41f17d 581 return ADS101X_FAILURE;
mcm 2:9931ca41f17d 582 }
mcm 2:9931ca41f17d 583 }
mcm 2:9931ca41f17d 584
mcm 2:9931ca41f17d 585
mcm 2:9931ca41f17d 586
mcm 2:9931ca41f17d 587 /**
mcm 2:9931ca41f17d 588 * @brief ADS101X_SetComparator ( ADS101X_data_t );
mcm 2:9931ca41f17d 589 *
mcm 2:9931ca41f17d 590 * @details It sets the comparator configuration.
mcm 2:9931ca41f17d 591 *
mcm 2:9931ca41f17d 592 * @param[in] myCOMP: Comparator Mode/Polarity/Latching/Queue and disable.
mcm 2:9931ca41f17d 593 *
mcm 2:9931ca41f17d 594 * @param[out] N/A.
mcm 2:9931ca41f17d 595 *
mcm 2:9931ca41f17d 596 *
mcm 2:9931ca41f17d 597 * @return Status of ADS101X_SetComparator.
mcm 2:9931ca41f17d 598 *
mcm 2:9931ca41f17d 599 *
mcm 2:9931ca41f17d 600 * @author Manuel Caballero
mcm 2:9931ca41f17d 601 * @date 22/July/2019
mcm 2:9931ca41f17d 602 * @version 22/July/2019 The ORIGIN
mcm 2:9931ca41f17d 603 * @pre N/A
mcm 2:9931ca41f17d 604 * @warning ADS1014 and ADS1015 only.
mcm 2:9931ca41f17d 605 */
mcm 2:9931ca41f17d 606 ADS101X::ADS101X_status_t ADS101X::ADS101X_SetComparator ( ADS101X_data_t myCOMP )
mcm 2:9931ca41f17d 607 {
mcm 2:9931ca41f17d 608 char cmd[3] = { 0U };
mcm 2:9931ca41f17d 609 uint16_t myConfig = 0U;
mcm 2:9931ca41f17d 610 uint32_t aux = I2C_SUCCESS;
mcm 2:9931ca41f17d 611
mcm 2:9931ca41f17d 612 /* Only ADS1015/ADS1014 supports this functionality */
mcm 2:9931ca41f17d 613 if ( _device != DEVICE_ADS1013 )
mcm 2:9931ca41f17d 614 {
mcm 2:9931ca41f17d 615 /* Read the register to mask it */
mcm 2:9931ca41f17d 616 cmd[0] = ADS101X_CONFIG;
mcm 2:9931ca41f17d 617 aux |= _i2c.write ( _ADS101X_Addr, &cmd[0], 1U, true );
mcm 2:9931ca41f17d 618 aux |= _i2c.read ( _ADS101X_Addr, &cmd[1], 2U );
mcm 2:9931ca41f17d 619
mcm 2:9931ca41f17d 620 /* Mask it and update the register */
mcm 2:9931ca41f17d 621 myConfig = cmd[1];
mcm 2:9931ca41f17d 622 myConfig <<= 8U;
mcm 2:9931ca41f17d 623 myConfig |= cmd[2];
mcm 2:9931ca41f17d 624
mcm 2:9931ca41f17d 625 myConfig &= ~( CONFIG_COMP_MODE_MASK | CONFIG_COMP_POL_MASK | CONFIG_COMP_LAT_MASK | CONFIG_COMP_QUE_MASK );
mcm 2:9931ca41f17d 626 myConfig |= ( myCOMP.comp_mode | myCOMP.comp_pol | myCOMP.comp_lat | myCOMP.comp_que );
mcm 2:9931ca41f17d 627 cmd[1] = (char)( myConfig >> 8U );
mcm 2:9931ca41f17d 628 cmd[2] = (char)( myConfig );
mcm 2:9931ca41f17d 629 aux |= _i2c.write ( _ADS101X_Addr, &cmd[0], sizeof( cmd )/sizeof( cmd[0] ), false );
mcm 2:9931ca41f17d 630 }
mcm 2:9931ca41f17d 631 else
mcm 2:9931ca41f17d 632 {
mcm 2:9931ca41f17d 633 return ADS101X_DEVICE_NOT_SUPPORTED;
mcm 2:9931ca41f17d 634 }
mcm 2:9931ca41f17d 635
mcm 2:9931ca41f17d 636
mcm 2:9931ca41f17d 637 if ( aux == I2C_SUCCESS )
mcm 2:9931ca41f17d 638 {
mcm 2:9931ca41f17d 639 return ADS101X_SUCCESS;
mcm 2:9931ca41f17d 640 }
mcm 2:9931ca41f17d 641 else
mcm 2:9931ca41f17d 642 {
mcm 2:9931ca41f17d 643 return ADS101X_FAILURE;
mcm 2:9931ca41f17d 644 }
mcm 2:9931ca41f17d 645 }
mcm 2:9931ca41f17d 646
mcm 2:9931ca41f17d 647
mcm 2:9931ca41f17d 648
mcm 2:9931ca41f17d 649 /**
mcm 2:9931ca41f17d 650 * @brief ADS101X_GetComparator ( ADS101X_data_t* );
mcm 2:9931ca41f17d 651 *
mcm 2:9931ca41f17d 652 * @details It gets the comparator configuration.
mcm 2:9931ca41f17d 653 *
mcm 2:9931ca41f17d 654 * @param[in] N/A.
mcm 2:9931ca41f17d 655 *
mcm 2:9931ca41f17d 656 * @param[out] myCOMP: Comparator Mode/Polarity/Latching/Queue and disable.
mcm 2:9931ca41f17d 657 *
mcm 2:9931ca41f17d 658 *
mcm 2:9931ca41f17d 659 * @return Status of ADS101X_GetComparator.
mcm 2:9931ca41f17d 660 *
mcm 2:9931ca41f17d 661 *
mcm 2:9931ca41f17d 662 * @author Manuel Caballero
mcm 2:9931ca41f17d 663 * @date 22/July/2019
mcm 2:9931ca41f17d 664 * @version 22/July/2019 The ORIGIN
mcm 2:9931ca41f17d 665 * @pre N/A
mcm 2:9931ca41f17d 666 * @warning ADS1014 and ADS1015 only.
mcm 2:9931ca41f17d 667 */
mcm 2:9931ca41f17d 668 ADS101X::ADS101X_status_t ADS101X::ADS101X_GetComparator ( ADS101X_data_t* myCOMP )
mcm 2:9931ca41f17d 669 {
mcm 2:9931ca41f17d 670 char cmd[2] = { 0U };
mcm 2:9931ca41f17d 671 uint16_t myConfig = 0U;
mcm 2:9931ca41f17d 672 uint32_t aux = I2C_SUCCESS;
mcm 2:9931ca41f17d 673
mcm 2:9931ca41f17d 674 /* Only ADS1015/ADS1014 supports this functionality */
mcm 2:9931ca41f17d 675 if ( _device != DEVICE_ADS1013 )
mcm 2:9931ca41f17d 676 {
mcm 2:9931ca41f17d 677 /* Read the register to mask it */
mcm 2:9931ca41f17d 678 cmd[0] = ADS101X_CONFIG;
mcm 2:9931ca41f17d 679 aux |= _i2c.write ( _ADS101X_Addr, &cmd[0], 1U, true );
mcm 2:9931ca41f17d 680 aux |= _i2c.read ( _ADS101X_Addr, &cmd[0], sizeof( cmd )/sizeof( cmd[0] ) );
mcm 2:9931ca41f17d 681
mcm 2:9931ca41f17d 682 /* Parse the data */
mcm 2:9931ca41f17d 683 myConfig = cmd[0];
mcm 2:9931ca41f17d 684 myConfig <<= 8U;
mcm 2:9931ca41f17d 685 myConfig |= cmd[1];
mcm 2:9931ca41f17d 686
mcm 2:9931ca41f17d 687 myCOMP->comp_mode = (ADS101X_config_comp_mode_t)( myConfig & CONFIG_COMP_MODE_MASK );
mcm 2:9931ca41f17d 688 myCOMP->comp_pol = (ADS101X_config_comp_pol_t)( myConfig & CONFIG_COMP_POL_MASK );
mcm 2:9931ca41f17d 689 myCOMP->comp_lat = (ADS101X_config_comp_lat_t)( myConfig & CONFIG_COMP_LAT_MASK );
mcm 2:9931ca41f17d 690 myCOMP->comp_que = (ADS101X_config_comp_que_t)( myConfig & CONFIG_COMP_QUE_MASK );
mcm 2:9931ca41f17d 691 }
mcm 2:9931ca41f17d 692 else
mcm 2:9931ca41f17d 693 {
mcm 2:9931ca41f17d 694 return ADS101X_DEVICE_NOT_SUPPORTED;
mcm 2:9931ca41f17d 695 }
mcm 2:9931ca41f17d 696
mcm 2:9931ca41f17d 697
mcm 2:9931ca41f17d 698 if ( aux == I2C_SUCCESS )
mcm 2:9931ca41f17d 699 {
mcm 2:9931ca41f17d 700 return ADS101X_SUCCESS;
mcm 2:9931ca41f17d 701 }
mcm 2:9931ca41f17d 702 else
mcm 2:9931ca41f17d 703 {
mcm 2:9931ca41f17d 704 return ADS101X_FAILURE;
mcm 2:9931ca41f17d 705 }
mcm 2:9931ca41f17d 706 }
mcm 2:9931ca41f17d 707
mcm 2:9931ca41f17d 708
mcm 2:9931ca41f17d 709
mcm 2:9931ca41f17d 710 /**
mcm 2:9931ca41f17d 711 * @brief ADS101X_SetLowThresholdValue ( ADS101X_data_t );
mcm 2:9931ca41f17d 712 *
mcm 2:9931ca41f17d 713 * @details It sets the low threshold value.
mcm 2:9931ca41f17d 714 *
mcm 2:9931ca41f17d 715 * @param[in] myLoThres: low threshold value.
mcm 2:9931ca41f17d 716 *
mcm 2:9931ca41f17d 717 * @param[out] N/A.
mcm 2:9931ca41f17d 718 *
mcm 2:9931ca41f17d 719 *
mcm 2:9931ca41f17d 720 * @return Status of ADS101X_SetLowThresholdValue.
mcm 2:9931ca41f17d 721 *
mcm 2:9931ca41f17d 722 *
mcm 2:9931ca41f17d 723 * @author Manuel Caballero
mcm 2:9931ca41f17d 724 * @date 22/July/2019
mcm 2:9931ca41f17d 725 * @version 22/July/2019 The ORIGIN
mcm 2:9931ca41f17d 726 * @pre N/A
mcm 2:9931ca41f17d 727 * @warning N/A.
mcm 2:9931ca41f17d 728 */
mcm 2:9931ca41f17d 729 ADS101X::ADS101X_status_t ADS101X::ADS101X_SetLowThresholdValue ( ADS101X_data_t myLoThres )
mcm 2:9931ca41f17d 730 {
mcm 2:9931ca41f17d 731 char cmd[3] = { 0U };
mcm 2:9931ca41f17d 732 uint32_t aux = I2C_SUCCESS;
mcm 2:9931ca41f17d 733
mcm 2:9931ca41f17d 734 /* lo-threshold cannot be greather than 4095 */
mcm 2:9931ca41f17d 735 if ( (uint16_t)myLoThres.lo_thresh > 4095U )
mcm 2:9931ca41f17d 736 {
mcm 2:9931ca41f17d 737 return ADS101X_VALUE_OUT_OF_RANGE;
mcm 2:9931ca41f17d 738 }
mcm 2:9931ca41f17d 739 else
mcm 2:9931ca41f17d 740 {
mcm 2:9931ca41f17d 741 /* Update the register */
mcm 2:9931ca41f17d 742 myLoThres.lo_thresh <<= 4U;
mcm 2:9931ca41f17d 743
mcm 2:9931ca41f17d 744 cmd[0] = ADS101X_LO_THRESH;
mcm 2:9931ca41f17d 745 cmd[1] = (char)( myLoThres.lo_thresh >> 8U );
mcm 2:9931ca41f17d 746 cmd[2] = (char)( myLoThres.lo_thresh );
mcm 2:9931ca41f17d 747 aux |= _i2c.write ( _ADS101X_Addr, &cmd[0], sizeof( cmd )/sizeof( cmd[0] ), false );
mcm 2:9931ca41f17d 748 }
mcm 2:9931ca41f17d 749
mcm 2:9931ca41f17d 750
mcm 2:9931ca41f17d 751 if ( aux == I2C_SUCCESS )
mcm 2:9931ca41f17d 752 {
mcm 2:9931ca41f17d 753 return ADS101X_SUCCESS;
mcm 2:9931ca41f17d 754 }
mcm 2:9931ca41f17d 755 else
mcm 2:9931ca41f17d 756 {
mcm 2:9931ca41f17d 757 return ADS101X_FAILURE;
mcm 2:9931ca41f17d 758 }
mcm 2:9931ca41f17d 759 }
mcm 2:9931ca41f17d 760
mcm 2:9931ca41f17d 761
mcm 2:9931ca41f17d 762
mcm 2:9931ca41f17d 763 /**
mcm 2:9931ca41f17d 764 * @brief ADS101X_GetLowThresholdValue ( ADS101X_data_t );
mcm 2:9931ca41f17d 765 *
mcm 2:9931ca41f17d 766 * @details It gets the low threshold value.
mcm 2:9931ca41f17d 767 *
mcm 2:9931ca41f17d 768 * @param[in] N/A.
mcm 2:9931ca41f17d 769 *
mcm 2:9931ca41f17d 770 * @param[out] myLoThres: low threshold value.
mcm 2:9931ca41f17d 771 *
mcm 2:9931ca41f17d 772 *
mcm 2:9931ca41f17d 773 * @return Status of ADS101X_GetLowThresholdValue.
mcm 2:9931ca41f17d 774 *
mcm 2:9931ca41f17d 775 *
mcm 2:9931ca41f17d 776 * @author Manuel Caballero
mcm 2:9931ca41f17d 777 * @date 22/July/2019
mcm 2:9931ca41f17d 778 * @version 22/July/2019 The ORIGIN
mcm 2:9931ca41f17d 779 * @pre N/A
mcm 2:9931ca41f17d 780 * @warning N/A.
mcm 2:9931ca41f17d 781 */
mcm 2:9931ca41f17d 782 ADS101X::ADS101X_status_t ADS101X::ADS101X_GetLowThresholdValue ( ADS101X_data_t* myLoThres )
mcm 2:9931ca41f17d 783 {
mcm 2:9931ca41f17d 784 char cmd[2] = { 0U };
mcm 2:9931ca41f17d 785 uint16_t myConfig = 0U;
mcm 2:9931ca41f17d 786 uint32_t aux = I2C_SUCCESS;
mcm 2:9931ca41f17d 787
mcm 2:9931ca41f17d 788 /* Read the register to mask it */
mcm 2:9931ca41f17d 789 cmd[0] = ADS101X_LO_THRESH;
mcm 2:9931ca41f17d 790 aux |= _i2c.write ( _ADS101X_Addr, &cmd[0], 1U, true );
mcm 2:9931ca41f17d 791 aux |= _i2c.read ( _ADS101X_Addr, &cmd[0], sizeof( cmd )/sizeof( cmd[0] ) );
mcm 2:9931ca41f17d 792
mcm 2:9931ca41f17d 793 myConfig = cmd[0];
mcm 2:9931ca41f17d 794 myConfig <<= 8U;
mcm 2:9931ca41f17d 795 myConfig |= cmd[1];
mcm 2:9931ca41f17d 796
mcm 2:9931ca41f17d 797 /* Check if the reading is correct */
mcm 2:9931ca41f17d 798 if ( ( myConfig & ~LO_THRESH_MASK ) == 0x0000 )
mcm 2:9931ca41f17d 799 {
mcm 2:9931ca41f17d 800 /* Parse the data */
mcm 2:9931ca41f17d 801 myLoThres->lo_thresh = myConfig;
mcm 2:9931ca41f17d 802 myLoThres->lo_thresh >>= 4U;
mcm 2:9931ca41f17d 803 }
mcm 2:9931ca41f17d 804 else
mcm 2:9931ca41f17d 805 {
mcm 2:9931ca41f17d 806 return ADS101X_DATA_CORRUPTED;
mcm 2:9931ca41f17d 807 }
mcm 2:9931ca41f17d 808
mcm 2:9931ca41f17d 809
mcm 2:9931ca41f17d 810 if ( aux == I2C_SUCCESS )
mcm 2:9931ca41f17d 811 {
mcm 2:9931ca41f17d 812 return ADS101X_SUCCESS;
mcm 2:9931ca41f17d 813 }
mcm 2:9931ca41f17d 814 else
mcm 2:9931ca41f17d 815 {
mcm 2:9931ca41f17d 816 return ADS101X_FAILURE;
mcm 2:9931ca41f17d 817 }
mcm 2:9931ca41f17d 818 }
mcm 2:9931ca41f17d 819
mcm 2:9931ca41f17d 820
mcm 2:9931ca41f17d 821
mcm 2:9931ca41f17d 822 /**
mcm 2:9931ca41f17d 823 * @brief ADS101X_SetHighThresholdValue ( ADS101X_data_t );
mcm 2:9931ca41f17d 824 *
mcm 2:9931ca41f17d 825 * @details It sets the high threshold value.
mcm 2:9931ca41f17d 826 *
mcm 2:9931ca41f17d 827 * @param[in] myHiThres: High threshold value.
mcm 2:9931ca41f17d 828 *
mcm 2:9931ca41f17d 829 * @param[out] N/A.
mcm 2:9931ca41f17d 830 *
mcm 2:9931ca41f17d 831 *
mcm 2:9931ca41f17d 832 * @return Status of ADS101X_SetHighThresholdValue.
mcm 2:9931ca41f17d 833 *
mcm 2:9931ca41f17d 834 *
mcm 2:9931ca41f17d 835 * @author Manuel Caballero
mcm 2:9931ca41f17d 836 * @date 22/July/2019
mcm 2:9931ca41f17d 837 * @version 22/July/2019 The ORIGIN
mcm 2:9931ca41f17d 838 * @pre N/A
mcm 2:9931ca41f17d 839 * @warning N/A.
mcm 2:9931ca41f17d 840 */
mcm 2:9931ca41f17d 841 ADS101X::ADS101X_status_t ADS101X::ADS101X_SetHighThresholdValue ( ADS101X_data_t myHiThres )
mcm 2:9931ca41f17d 842 {
mcm 2:9931ca41f17d 843 char cmd[3] = { 0U };
mcm 2:9931ca41f17d 844 uint32_t aux = I2C_SUCCESS;
mcm 2:9931ca41f17d 845
mcm 2:9931ca41f17d 846 /* Hi_threshold cannot be greather than 4095 */
mcm 2:9931ca41f17d 847 if ( (uint16_t)myHiThres.hi_thresh > 4095U )
mcm 2:9931ca41f17d 848 {
mcm 2:9931ca41f17d 849 return ADS101X_VALUE_OUT_OF_RANGE;
mcm 2:9931ca41f17d 850 }
mcm 2:9931ca41f17d 851 else
mcm 2:9931ca41f17d 852 {
mcm 2:9931ca41f17d 853 /* Update the register */
mcm 2:9931ca41f17d 854 myHiThres.hi_thresh <<= 4U;
mcm 2:9931ca41f17d 855
mcm 2:9931ca41f17d 856 cmd[0] = ADS101X_HI_THRESH;
mcm 2:9931ca41f17d 857 cmd[1] = (char)( myHiThres.hi_thresh >> 8U );
mcm 2:9931ca41f17d 858 cmd[2] = (char)( myHiThres.hi_thresh );
mcm 2:9931ca41f17d 859 aux |= _i2c.write ( _ADS101X_Addr, &cmd[0], sizeof( cmd )/sizeof( cmd[0] ), false );
mcm 2:9931ca41f17d 860 }
mcm 2:9931ca41f17d 861
mcm 2:9931ca41f17d 862
mcm 2:9931ca41f17d 863 if ( aux == I2C_SUCCESS )
mcm 2:9931ca41f17d 864 {
mcm 2:9931ca41f17d 865 return ADS101X_SUCCESS;
mcm 2:9931ca41f17d 866 }
mcm 2:9931ca41f17d 867 else
mcm 2:9931ca41f17d 868 {
mcm 2:9931ca41f17d 869 return ADS101X_FAILURE;
mcm 2:9931ca41f17d 870 }
mcm 2:9931ca41f17d 871 }
mcm 2:9931ca41f17d 872
mcm 2:9931ca41f17d 873
mcm 2:9931ca41f17d 874
mcm 2:9931ca41f17d 875 /**
mcm 2:9931ca41f17d 876 * @brief ADS101X_GetHighThresholdValue ( ADS101X_data_t );
mcm 2:9931ca41f17d 877 *
mcm 2:9931ca41f17d 878 * @details It gets the high threshold value.
mcm 2:9931ca41f17d 879 *
mcm 2:9931ca41f17d 880 * @param[in] N/A.
mcm 2:9931ca41f17d 881 *
mcm 2:9931ca41f17d 882 * @param[out] myHiThres: High threshold value.
mcm 2:9931ca41f17d 883 *
mcm 2:9931ca41f17d 884 *
mcm 2:9931ca41f17d 885 * @return Status of ADS101X_GetHighThresholdValue.
mcm 2:9931ca41f17d 886 *
mcm 2:9931ca41f17d 887 *
mcm 2:9931ca41f17d 888 * @author Manuel Caballero
mcm 2:9931ca41f17d 889 * @date 22/July/2019
mcm 2:9931ca41f17d 890 * @version 22/July/2019 The ORIGIN
mcm 2:9931ca41f17d 891 * @pre N/A
mcm 2:9931ca41f17d 892 * @warning N/A.
mcm 2:9931ca41f17d 893 */
mcm 2:9931ca41f17d 894 ADS101X::ADS101X_status_t ADS101X::ADS101X_GetHighThresholdValue ( ADS101X_data_t* myHiThres )
mcm 2:9931ca41f17d 895 {
mcm 2:9931ca41f17d 896 char cmd[2] = { 0U };
mcm 2:9931ca41f17d 897 uint16_t myConfig = 0U;
mcm 2:9931ca41f17d 898 uint32_t aux = I2C_SUCCESS;
mcm 2:9931ca41f17d 899
mcm 2:9931ca41f17d 900 /* Read the register to mask it */
mcm 2:9931ca41f17d 901 cmd[0] = ADS101X_HI_THRESH;
mcm 2:9931ca41f17d 902 aux |= _i2c.write ( _ADS101X_Addr, &cmd[0], 1U, true );
mcm 2:9931ca41f17d 903 aux |= _i2c.read ( _ADS101X_Addr, &cmd[0], sizeof( cmd )/sizeof( cmd[0] ) );
mcm 2:9931ca41f17d 904
mcm 2:9931ca41f17d 905 myConfig = cmd[0];
mcm 2:9931ca41f17d 906 myConfig <<= 8U;
mcm 2:9931ca41f17d 907 myConfig |= cmd[1];
mcm 2:9931ca41f17d 908
mcm 2:9931ca41f17d 909 /* Check if the reading is correct */
mcm 2:9931ca41f17d 910 if ( ( myConfig & ~HI_THRESH_MASK ) == 0x000F )
mcm 2:9931ca41f17d 911 {
mcm 2:9931ca41f17d 912 /* Parse the data */
mcm 2:9931ca41f17d 913 myHiThres->hi_thresh = myConfig;
mcm 2:9931ca41f17d 914 myHiThres->hi_thresh >>= 4U;
mcm 2:9931ca41f17d 915 }
mcm 2:9931ca41f17d 916 else
mcm 2:9931ca41f17d 917 {
mcm 2:9931ca41f17d 918 return ADS101X_DATA_CORRUPTED;
mcm 2:9931ca41f17d 919 }
mcm 2:9931ca41f17d 920
mcm 2:9931ca41f17d 921
mcm 2:9931ca41f17d 922 if ( aux == I2C_SUCCESS )
mcm 2:9931ca41f17d 923 {
mcm 2:9931ca41f17d 924 return ADS101X_SUCCESS;
mcm 2:9931ca41f17d 925 }
mcm 2:9931ca41f17d 926 else
mcm 2:9931ca41f17d 927 {
mcm 2:9931ca41f17d 928 return ADS101X_FAILURE;
mcm 2:9931ca41f17d 929 }
mcm 2:9931ca41f17d 930 }
mcm 2:9931ca41f17d 931
mcm 2:9931ca41f17d 932
mcm 2:9931ca41f17d 933
mcm 2:9931ca41f17d 934 /**
mcm 2:9931ca41f17d 935 * @brief ADS101X_GetRawConversion ( ADS101X_data_t* );
mcm 2:9931ca41f17d 936 *
mcm 2:9931ca41f17d 937 * @details It gets the raw conversion value
mcm 2:9931ca41f17d 938 *
mcm 2:9931ca41f17d 939 * @param[in] N/A.
mcm 2:9931ca41f17d 940 *
mcm 2:9931ca41f17d 941 * @param[out] myRawD: Raw conversion value.
mcm 2:9931ca41f17d 942 *
mcm 2:9931ca41f17d 943 *
mcm 2:9931ca41f17d 944 * @return Status of ADS101X_GetRawConversion.
mcm 2:9931ca41f17d 945 *
mcm 2:9931ca41f17d 946 *
mcm 2:9931ca41f17d 947 * @author Manuel Caballero
mcm 2:9931ca41f17d 948 * @date 22/July/2019
mcm 2:9931ca41f17d 949 * @version 22/July/2019 The ORIGIN
mcm 2:9931ca41f17d 950 * @pre N/A
mcm 2:9931ca41f17d 951 * @warning N/A.
mcm 2:9931ca41f17d 952 */
mcm 2:9931ca41f17d 953 ADS101X::ADS101X_status_t ADS101X::ADS101X_GetRawConversion ( ADS101X_data_t* myRawD )
mcm 2:9931ca41f17d 954 {
mcm 2:9931ca41f17d 955 char cmd[2] = { 0U };
mcm 2:9931ca41f17d 956 uint16_t myConfig = 0U;
mcm 2:9931ca41f17d 957 uint32_t aux = I2C_SUCCESS;
mcm 2:9931ca41f17d 958
mcm 2:9931ca41f17d 959 /* Read the register to mask it */
mcm 2:9931ca41f17d 960 cmd[0] = ADS101X_CONVERSION;
mcm 2:9931ca41f17d 961 aux |= _i2c.write ( _ADS101X_Addr, &cmd[0], 1U, true );
mcm 2:9931ca41f17d 962 aux |= _i2c.read ( _ADS101X_Addr, &cmd[0], sizeof( cmd )/sizeof( cmd[0] ) );
mcm 2:9931ca41f17d 963
mcm 2:9931ca41f17d 964 myConfig = cmd[0];
mcm 2:9931ca41f17d 965 myConfig <<= 8U;
mcm 2:9931ca41f17d 966 myConfig |= cmd[1];
mcm 2:9931ca41f17d 967
mcm 2:9931ca41f17d 968 /* Check if the reading is correct */
mcm 2:9931ca41f17d 969 if ( ( myConfig & ~CONVERSION_D_MASK ) == 0x0000 )
mcm 2:9931ca41f17d 970 {
mcm 2:9931ca41f17d 971 /* Parse the data */
mcm 2:9931ca41f17d 972 myRawD->raw_conversion = myConfig;
mcm 2:9931ca41f17d 973 myRawD->raw_conversion >>= 4U;
mcm 2:9931ca41f17d 974 }
mcm 2:9931ca41f17d 975 else
mcm 2:9931ca41f17d 976 {
mcm 2:9931ca41f17d 977 return ADS101X_DATA_CORRUPTED;
mcm 2:9931ca41f17d 978 }
mcm 2:9931ca41f17d 979
mcm 2:9931ca41f17d 980
mcm 2:9931ca41f17d 981 if ( aux == I2C_SUCCESS )
mcm 2:9931ca41f17d 982 {
mcm 2:9931ca41f17d 983 return ADS101X_SUCCESS;
mcm 2:9931ca41f17d 984 }
mcm 2:9931ca41f17d 985 else
mcm 2:9931ca41f17d 986 {
mcm 2:9931ca41f17d 987 return ADS101X_FAILURE;
mcm 2:9931ca41f17d 988 }
mcm 2:9931ca41f17d 989 }
mcm 2:9931ca41f17d 990
mcm 2:9931ca41f17d 991
mcm 2:9931ca41f17d 992
mcm 2:9931ca41f17d 993 /**
mcm 2:9931ca41f17d 994 * @brief ADS101X_GetConversion ( ADS101X_data_t* );
mcm 2:9931ca41f17d 995 *
mcm 2:9931ca41f17d 996 * @details It gets the conversion value
mcm 2:9931ca41f17d 997 *
mcm 2:9931ca41f17d 998 * @param[in] N/A.
mcm 2:9931ca41f17d 999 *
mcm 2:9931ca41f17d 1000 * @param[out] myD: Conversion value.
mcm 2:9931ca41f17d 1001 *
mcm 2:9931ca41f17d 1002 *
mcm 2:9931ca41f17d 1003 * @return Status of ADS101X_GetConversion.
mcm 2:9931ca41f17d 1004 *
mcm 2:9931ca41f17d 1005 *
mcm 2:9931ca41f17d 1006 * @author Manuel Caballero
mcm 2:9931ca41f17d 1007 * @date 22/July/2019
mcm 2:9931ca41f17d 1008 * @version 22/July/2019 The ORIGIN
mcm 2:9931ca41f17d 1009 * @pre N/A
mcm 2:9931ca41f17d 1010 * @warning N/A.
mcm 2:9931ca41f17d 1011 */
mcm 2:9931ca41f17d 1012 ADS101X::ADS101X_status_t ADS101X::ADS101X_GetConversion ( ADS101X_data_t* myD )
mcm 2:9931ca41f17d 1013 {
mcm 2:9931ca41f17d 1014 float myGain = 0.0;
mcm 2:9931ca41f17d 1015 float myFactor = 0.0;
mcm 2:9931ca41f17d 1016 ADS101X_status_t aux = ADS101X_SUCCESS;
mcm 2:9931ca41f17d 1017
mcm 2:9931ca41f17d 1018 /* Get the raw conversion value */
mcm 2:9931ca41f17d 1019 aux = ADS101X_GetRawConversion ( &(*myD) );
mcm 2:9931ca41f17d 1020
mcm 2:9931ca41f17d 1021 /* Set up the gain accordingly */
mcm 2:9931ca41f17d 1022 switch ( _device )
mcm 2:9931ca41f17d 1023 {
mcm 2:9931ca41f17d 1024 case DEVICE_ADS1013:
mcm 2:9931ca41f17d 1025 myGain = 2.048;
mcm 2:9931ca41f17d 1026 break;
mcm 2:9931ca41f17d 1027
mcm 2:9931ca41f17d 1028 default:
mcm 2:9931ca41f17d 1029 case DEVICE_ADS1014:
mcm 2:9931ca41f17d 1030 case DEVICE_ADS1015:
mcm 2:9931ca41f17d 1031 switch ( myD->pga )
mcm 2:9931ca41f17d 1032 {
mcm 2:9931ca41f17d 1033 case CONFIG_PGA_FSR_6_144_V:
mcm 2:9931ca41f17d 1034 myGain = 6.144;
mcm 2:9931ca41f17d 1035 break;
mcm 2:9931ca41f17d 1036
mcm 2:9931ca41f17d 1037 case CONFIG_PGA_FSR_4_096_V:
mcm 2:9931ca41f17d 1038 myGain = 4.096;
mcm 2:9931ca41f17d 1039 break;
mcm 2:9931ca41f17d 1040
mcm 2:9931ca41f17d 1041 default:
mcm 2:9931ca41f17d 1042 case CONFIG_PGA_FSR_2_048_V:
mcm 2:9931ca41f17d 1043 myGain = 2.048;
mcm 2:9931ca41f17d 1044 break;
mcm 2:9931ca41f17d 1045
mcm 2:9931ca41f17d 1046 case CONFIG_PGA_FSR_1_024_V:
mcm 2:9931ca41f17d 1047 myGain = 1.024;
mcm 2:9931ca41f17d 1048 break;
mcm 2:9931ca41f17d 1049
mcm 2:9931ca41f17d 1050 case CONFIG_PGA_FSR_0_512_V:
mcm 2:9931ca41f17d 1051 myGain = 0.512;
mcm 2:9931ca41f17d 1052 break;
mcm 2:9931ca41f17d 1053
mcm 2:9931ca41f17d 1054 case CONFIG_PGA_FSR_0_256_V:
mcm 2:9931ca41f17d 1055 myGain = 0.256;
mcm 2:9931ca41f17d 1056 break;
mcm 2:9931ca41f17d 1057 }
mcm 2:9931ca41f17d 1058 break;
mcm 2:9931ca41f17d 1059 }
mcm 2:9931ca41f17d 1060
mcm 2:9931ca41f17d 1061 /* Calculate the conversion. Check full of scale */
mcm 2:9931ca41f17d 1062 if ( myD->raw_conversion == 0x7FF0 )
mcm 2:9931ca41f17d 1063 {
mcm 2:9931ca41f17d 1064 myFactor = ( myGain * ( 2048.0 - 1.0 ) ) / 2048.0;
mcm 2:9931ca41f17d 1065 }
mcm 2:9931ca41f17d 1066 else
mcm 2:9931ca41f17d 1067 {
mcm 2:9931ca41f17d 1068 myFactor = myGain / 2048.0;
mcm 2:9931ca41f17d 1069 }
mcm 2:9931ca41f17d 1070
mcm 2:9931ca41f17d 1071 /* Result */
mcm 2:9931ca41f17d 1072 myD->conversion = (float)( myFactor * myD->raw_conversion );
mcm 2:9931ca41f17d 1073
mcm 2:9931ca41f17d 1074
mcm 2:9931ca41f17d 1075 return aux;
mcm 2:9931ca41f17d 1076 }
mcm 2:9931ca41f17d 1077
mcm 2:9931ca41f17d 1078
mcm 2:9931ca41f17d 1079
mcm 2:9931ca41f17d 1080 /**
mcm 2:9931ca41f17d 1081 * @brief ADS101X_SoftReset ( I2C_parameters_t );
mcm 2:9931ca41f17d 1082 *
mcm 2:9931ca41f17d 1083 * @details It triggers a softreset.
mcm 2:9931ca41f17d 1084 *
mcm 2:9931ca41f17d 1085 * @param[in] N/A.
mcm 2:9931ca41f17d 1086 *
mcm 2:9931ca41f17d 1087 * @param[out] N/A.
mcm 2:9931ca41f17d 1088 *
mcm 2:9931ca41f17d 1089 *
mcm 2:9931ca41f17d 1090 * @return Status of ADS101X_SoftReset.
mcm 2:9931ca41f17d 1091 *
mcm 2:9931ca41f17d 1092 *
mcm 2:9931ca41f17d 1093 * @author Manuel Caballero
mcm 2:9931ca41f17d 1094 * @date 22/July/2019
mcm 2:9931ca41f17d 1095 * @version 22/July/2019 The ORIGIN
mcm 2:9931ca41f17d 1096 * @pre N/A
mcm 2:9931ca41f17d 1097 * @warning N/A.
mcm 2:9931ca41f17d 1098 */
mcm 2:9931ca41f17d 1099 ADS101X::ADS101X_status_t ADS101X::ADS101X_SoftReset ( void )
mcm 2:9931ca41f17d 1100 {
mcm 2:9931ca41f17d 1101 char cmd = 0U;
mcm 2:9931ca41f17d 1102 uint32_t aux;
mcm 2:9931ca41f17d 1103
mcm 2:9931ca41f17d 1104
mcm 2:9931ca41f17d 1105 /* Update the register */
mcm 2:9931ca41f17d 1106 cmd = ADS101X_RESET_COMMAND;
mcm 2:9931ca41f17d 1107 aux |= _i2c.write ( 0x00, &cmd, 1U, false );
mcm 2:9931ca41f17d 1108
mcm 2:9931ca41f17d 1109
mcm 2:9931ca41f17d 1110
mcm 2:9931ca41f17d 1111 if ( aux == I2C_SUCCESS )
mcm 2:9931ca41f17d 1112 {
mcm 2:9931ca41f17d 1113 return ADS101X_SUCCESS;
mcm 2:9931ca41f17d 1114 }
mcm 2:9931ca41f17d 1115 else
mcm 2:9931ca41f17d 1116 {
mcm 2:9931ca41f17d 1117 return ADS101X_FAILURE;
mcm 2:9931ca41f17d 1118 }
mcm 2:9931ca41f17d 1119 }