Merge pull request #14 from m0ivq/master

Added Alert Pin functions.
This commit is contained in:
Limor "Ladyada" Fried 2021-02-18 10:44:00 -05:00 committed by GitHub
commit 59eb2affc5
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 157 additions and 7 deletions

1
.gitignore vendored
View file

@ -1,3 +1,4 @@
html/
Doxyfile
.vscode/
.pio/

View file

@ -223,3 +223,106 @@ bool Adafruit_INA260::conversionReady(void) {
Adafruit_I2CRegisterBits(MaskEnable, 1, 3);
return conversion_ready.read();
}
/**************************************************************************/
/*!
@brief Reads the current parameter that asserts the ALERT pin
@return The current parameter that asserts the ALERT PIN
*/
/**************************************************************************/
INA260_AlertType Adafruit_INA260::getAlertType(void) {
Adafruit_I2CRegisterBits alert_type =
Adafruit_I2CRegisterBits(MaskEnable, 6, 10);
return (INA260_AlertType)alert_type.read();
}
/**************************************************************************/
/*!
@brief Sets which parameter asserts the ALERT pin
@param alert
The parameter which asserts the ALERT pin
*/
/**************************************************************************/
void Adafruit_INA260::setAlertType(INA260_AlertType alert) {
Adafruit_I2CRegisterBits alert_type =
Adafruit_I2CRegisterBits(MaskEnable, 6, 10);
alert_type.write(alert);
}
/**************************************************************************/
/*!
@brief Reads the current alert limit setting
@return The current bus alert limit setting
*/
/**************************************************************************/
float Adafruit_INA260::getAlertLimit(void) {
Adafruit_I2CRegisterBits alert_limit =
Adafruit_I2CRegisterBits(AlertLimit, 16, 0);
return (float)alert_limit.read() * 1.25;
}
/**************************************************************************/
/*!
@brief Sets the Alert Limit
@param limit
The new limit that triggers the alert
*/
/**************************************************************************/
void Adafruit_INA260::setAlertLimit(float limit) {
Adafruit_I2CRegisterBits alert_limit =
Adafruit_I2CRegisterBits(AlertLimit, 16, 0);
alert_limit.write((int16_t)(limit / 1.25));
}
/**************************************************************************/
/*!
@brief Reads the current alert polarity setting
@return The current bus alert polarity setting
*/
/**************************************************************************/
INA260_AlertPolarity Adafruit_INA260::getAlertPolarity(void) {
Adafruit_I2CRegisterBits alert_polarity =
Adafruit_I2CRegisterBits(MaskEnable, 1, 1);
return (INA260_AlertPolarity)alert_polarity.read();
}
/**************************************************************************/
/*!
@brief Sets Alert Polarity Bit
@param polarity
The polarity of the alert pin
*/
/**************************************************************************/
void Adafruit_INA260::setAlertPolarity(INA260_AlertPolarity polarity) {
Adafruit_I2CRegisterBits alert_polarity =
Adafruit_I2CRegisterBits(MaskEnable, 1, 1);
alert_polarity.write(polarity);
}
/**************************************************************************/
/*!
@brief Reads the current alert latch setting
@return The current bus alert latch setting
*/
/**************************************************************************/
INA260_AlertLatch Adafruit_INA260::getAlertLatch(void) {
Adafruit_I2CRegisterBits alert_latch =
Adafruit_I2CRegisterBits(MaskEnable, 1, 0);
return (INA260_AlertLatch)alert_latch.read();
}
/**************************************************************************/
/*!
@brief Sets Alert Latch Bit
@param state
The parameter which asserts the ALERT pin
*/
/**************************************************************************/
void Adafruit_INA260::setAlertLatch(INA260_AlertLatch state) {
Adafruit_I2CRegisterBits alert_latch =
Adafruit_I2CRegisterBits(MaskEnable, 1, 0);
alert_latch.write(state);
}
/**************************************************************************/
/*!
@brief Checks if the Alert Flag is set
@return true if the flag is set
*/
/**************************************************************************/
bool Adafruit_INA260::alertFunctionFlag(void) {
Adafruit_I2CRegisterBits alert_function_flag =
Adafruit_I2CRegisterBits(MaskEnable, 1, 4);
return alert_function_flag.read();
}

View file

@ -39,15 +39,14 @@
* Allowed values for setMode.
*/
typedef enum _mode {
INA260_MODE_SHUTDOWN = 0x00, /**< SHUTDOWN: Minimize quiescient current and
INA260_MODE_SHUTDOWN = 0x00, /**< SHUTDOWN: Minimize quiescient current and
turn off current into the device inputs. Set
another mode to exit shutown mode **/
INA260_MODE_TRIGGERED =
0x03, /**< TRIGGERED: Trigger a one-shot measurement
of current and bus voltage. Set the TRIGGERED
mode again to take a new measurement **/
INA260_MODE_TRIGGERED = 0x03, /**< TRIGGERED: Trigger a one-shot measurement
of current and bus voltage. Set the TRIGGERED
mode again to take a new measurement **/
INA260_MODE_CONTINUOUS = 0x07, /**< CONTINUOUS: (Default) Continuously update
the current, bus voltage and power
the current, bus voltage and power
registers with new measurements **/
} INA260_MeasurementMode;
@ -83,6 +82,43 @@ typedef enum _count {
INA260_COUNT_1024, ///< Window size: 1024 samples
} INA260_AveragingCount;
/**
* @brief Alert trigger options.
*
* Allowed values for setAlertType.
*/
typedef enum _alert_type {
INA260_ALERT_CONVERSION_READY = 0x1, ///< Trigger on conversion ready
INA260_ALERT_OVERPOWER = 0x2, ///< Trigger on power over limit
INA260_ALERT_UNDERVOLTAGE = 0x4, ///< Trigger on bus voltage under limit
INA260_ALERT_OVERVOLTAGE = 0x8, ///< Trigger on bus voltage over limit
INA260_ALERT_UNDERCURRENT = 0x10, ///< Trigger on current under limit
INA260_ALERT_OVERCURRENT = 0x20, ///< Trigger on current over limit
INA260_ALERT_NONE = 0x0, ///< Do not trigger alert pin (Default)
} INA260_AlertType;
/**
* @brief Alert pin polarity options.
*
* Allowed values for setAlertPolarity.
*/
typedef enum _alert_polarity {
INA260_ALERT_POLARITY_NORMAL = 0x0, ///< Active high open-collector (Default)
INA260_ALERT_POLARITY_INVERTED = 0x1, ///< Active low open-collector
} INA260_AlertPolarity;
/**
* @brief Alert pin latch options.
*
* Allowed values for setAlertLatch.
*/
typedef enum _alert_latch {
INA260_ALERT_LATCH_ENABLED = 0x1, /**< Alert will latch until Mask/Enable
register is read **/
INA260_ALERT_LATCH_TRANSPARENT = 0x0, /**< Alert will reset when fault is
cleared **/
} INA260_AlertLatch;
/*!
* @brief Class that stores state and functions for interacting with
* INA260 Current and Power Sensor
@ -100,6 +136,16 @@ public:
INA260_MeasurementMode getMode(void);
bool conversionReady(void);
bool alertFunctionFlag(void);
float getAlertLimit(void);
void setAlertLimit(float limit);
INA260_AlertLatch getAlertLatch(void);
void setAlertLatch(INA260_AlertLatch state);
INA260_AlertPolarity getAlertPolarity(void);
void setAlertPolarity(INA260_AlertPolarity polarity);
INA260_AlertType getAlertType(void);
void setAlertType(INA260_AlertType alert);
INA260_ConversionTime getCurrentConversionTime(void);
void setCurrentConversionTime(INA260_ConversionTime time);

View file

@ -1,5 +1,5 @@
name=Adafruit INA260 Library
version=1.3.5
version=1.4.0
author=Adafruit
maintainer=Adafruit <info@adafruit.com>
sentence=Arduino library for the INA260 sensors in the Adafruit shop