Diff: MCP4725.cpp
- Revision:
- 3:2d28c56053cd
- Parent:
- 2:e09b7dd7c1dd
--- a/MCP4725.cpp Thu Sep 07 20:12:56 2017 +0000 +++ b/MCP4725.cpp Fri Sep 08 18:25:52 2017 +0000 @@ -215,7 +215,7 @@ * @pre NaN * @warning NaN. */ -MCP4725::MCP4725_status_t MCP4725::MCP4725_SetNewValue ( MCP4725_write_command_type_t myWriteCMD, uint32_t myDACNewValue ) +MCP4725::MCP4725_status_t MCP4725::MCP4725_SetNewValue ( MCP4725_write_command_type_t myWriteCMD, Vector_new_dac_value_t myDACNewValue ) { char cmd[] = { 0, 0, 0 }; uint32_t aux = 0; @@ -223,19 +223,19 @@ // 12-Bit of resolution ONLY! - if ( myDACNewValue > 4095 ) + if ( myDACNewValue.DAC_New_Value > 4095 ) return MCP4725_FAILURE; // Prepare the data according to the write mode - cmd[1] |= ( ( myDACNewValue & 0xFF0 ) >> 4 ); - cmd[2] |= ( ( myDACNewValue & 0x00F ) << 4 ); + cmd[1] |= ( ( myDACNewValue.DAC_New_Value & 0xFF0 ) >> 4 ); + cmd[2] |= ( ( myDACNewValue.DAC_New_Value & 0x00F ) << 4 ); switch ( myWriteCMD ){ default: case FAST_MODE: - cmd[0] |= ( ( myDACNewValue & 0xF00 ) >> 8 ); - cmd[1] = ( myDACNewValue & 0x0FF ); + cmd[0] |= ( ( myDACNewValue.DAC_New_Value & 0xF00 ) >> 8 ); + cmd[1] = ( myDACNewValue.DAC_New_Value & 0x0FF ); dataTX = 2; break; @@ -300,3 +300,83 @@ else return MCP4725_FAILURE; } + + + +/** + * @brief MCP4725_GetEEPROM_Data ( Vector_data_t* ) + * + * @details It gets the eeprom value. + * + * @param[in] myEEPROMData: EEPROM value. + * + * @param[out] NaN. + * + * + * @return Status of MCP4725_GetEEPROM_Data. + * + * + * @author Manuel Caballero + * @date 8/September/2017 + * @version 8/September/2017 The ORIGIN + * @pre NaN + * @warning NaN. + */ +MCP4725::MCP4725_status_t MCP4725::MCP4725_GetEEPROM_Data ( Vector_data_t* myEEPROMData ) +{ + char cmd[] = { 0, 0, 0, 0, 0 }; + uint32_t aux = 0; + + // Read command + aux = i2c.read ( MCP4725_Addr, &cmd[0], 5 ); + + // Read EEPROM value + myEEPROMData->EEPROM_Data = ( ( cmd[3] & 0x0F ) << 8 ) | ( cmd[4] ); + + + + if ( aux == I2C_SUCCESS ) + return MCP4725_SUCCESS; + else + return MCP4725_FAILURE; +} + + + +/** + * @brief MCP4725_GetDAC_Data ( Vector_data_t* ) + * + * @details It gets the DAC value. + * + * @param[in] myDACData: DAC value. + * + * @param[out] NaN. + * + * + * @return Status of MCP4725_GetDAC_Data. + * + * + * @author Manuel Caballero + * @date 8/September/2017 + * @version 8/September/2017 The ORIGIN + * @pre NaN + * @warning NaN. + */ +MCP4725::MCP4725_status_t MCP4725::MCP4725_GetDAC_Data ( Vector_data_t* myDACData ) +{ + char cmd[] = { 0, 0, 0, 0, 0 }; + uint32_t aux = 0; + + // Read command + aux = i2c.read ( MCP4725_Addr, &cmd[0], 5 ); + + // Read DAC value + myDACData->DAC_Data = ( ( cmd[1] & 0xF0 ) << 4 ) | ( ( ( ( cmd[1] & 0x0F ) >> 4 ) | ( cmd[2] & 0xF0 ) >> 4 ) ); + + + + if ( aux == I2C_SUCCESS ) + return MCP4725_SUCCESS; + else + return MCP4725_FAILURE; +}