Add supply voltage monitor to safety adc and safety controller
This commit is contained in:
@@ -49,6 +49,12 @@
|
||||
*/
|
||||
#define INT_REF_CHANNEL_NUM (17)
|
||||
|
||||
#define SAFETY_ADC_SUPPLY_VOLTAGE_MONITOR_CHANNEL_NUM (15)
|
||||
#define SAFETY_ADC_SUPPLY_VOLTAGE_MONITOR_PIN (5)
|
||||
#define SAFETY_ADC_SUPPLY_VOLTAGE_MONITOR_PORT GPIOC
|
||||
#define SAFETY_ADC_SUPPLY_VOLTAGE_MONITOR_PORT_RCC_MASK RCC_AHB1ENR_GPIOCEN
|
||||
|
||||
|
||||
/**
|
||||
* @brief Nominal value of the internal reference voltage.
|
||||
*
|
||||
@@ -77,7 +83,7 @@
|
||||
* @brief Number of channels to handle for the SAFETY ADC.
|
||||
* @note The maximum amount of channels is limited to 16
|
||||
*/
|
||||
#define SAFETY_ADC_NUM_OF_CHANNELS 8
|
||||
#define SAFETY_ADC_NUM_OF_CHANNELS 12
|
||||
|
||||
/**
|
||||
* @brief Channel numbers to sample with the SAFETY ADC
|
||||
@@ -91,7 +97,9 @@
|
||||
* @warning Safety controller expects the current measurment list. If you change it, check @ref safety_controller_handle_safety_adc
|
||||
*/
|
||||
#define SAFETY_ADC_CHANNELS TEMP_CHANNEL_NUM, TEMP_CHANNEL_NUM, TEMP_CHANNEL_NUM, TEMP_CHANNEL_NUM, \
|
||||
INT_REF_CHANNEL_NUM, INT_REF_CHANNEL_NUM, INT_REF_CHANNEL_NUM, INT_REF_CHANNEL_NUM
|
||||
INT_REF_CHANNEL_NUM, INT_REF_CHANNEL_NUM, INT_REF_CHANNEL_NUM, INT_REF_CHANNEL_NUM, \
|
||||
SAFETY_ADC_SUPPLY_VOLTAGE_MONITOR_CHANNEL_NUM, SAFETY_ADC_SUPPLY_VOLTAGE_MONITOR_CHANNEL_NUM, \
|
||||
SAFETY_ADC_SUPPLY_VOLTAGE_MONITOR_CHANNEL_NUM, SAFETY_ADC_SUPPLY_VOLTAGE_MONITOR_CHANNEL_NUM
|
||||
|
||||
|
||||
/* Check the channel count of the safety ADC */
|
||||
|
@@ -35,6 +35,7 @@
|
||||
enum safety_adc_meas_channel {
|
||||
SAFETY_ADC_MEAS_VREF, /**< @brief Internal reference voltage @note This will not output the internal reference voltage but the recalculated external voltage! */
|
||||
SAFETY_ADC_MEAS_TEMP, /**< @brief Internal temperature sensor */
|
||||
SAFETY_ADC_MEAS_SUPPLY, /**< @brief Supply voltage */
|
||||
};
|
||||
|
||||
/**
|
||||
|
@@ -52,6 +52,7 @@ enum safety_flag {
|
||||
ERR_FLAG_TIMING_MAIN_LOOP = (1<<14),
|
||||
ERR_FLAG_SAFETY_MEM_CORRUPT = (1<<15),
|
||||
ERR_FLAG_SAFETY_TAB_CORRUPT = (1<<16),
|
||||
ERR_FLAG_AMON_SUPPLY_VOLT = (1<<17),
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -76,6 +77,7 @@ enum timing_monitor {
|
||||
enum analog_value_monitor {
|
||||
ERR_AMON_VREF = (1<<0),
|
||||
ERR_AMON_UC_TEMP = (1<<1),
|
||||
ERR_AMON_SUPPLY_VOLT = (1<<2),
|
||||
};
|
||||
|
||||
#define ERR_FLAG_ENTRY(errflag) {.name=#errflag, .flag = (errflag), .error_state = false, .error_state_inv = true, .key = 0UL, .weight = NULL, .persistency = NULL}
|
||||
@@ -117,7 +119,8 @@ enum analog_value_monitor {
|
||||
#define SAFETY_ADC_VREF_TOL_MVOLT (100.0f)
|
||||
#define SAFETY_ADC_TEMP_LOW_LIM (0.0f)
|
||||
#define SAFETY_ADC_TEMP_HIGH_LIM (65.0f)
|
||||
|
||||
#define SAFETY_ADC_SUPPLY_MVOLT (3300.0f)
|
||||
#define SAFETY_ADC_SUPPLY_TOL_MVOLT (150.0f)
|
||||
|
||||
#define SAFETY_EXT_WATCHDOG_PORT GPIOD
|
||||
#define SAFETY_EXT_WATCHDOG_RCC_MASK RCC_AHB1ENR_GPIODEN
|
||||
@@ -149,7 +152,8 @@ enum analog_value_monitor {
|
||||
ERR_FLAG_PERSIST_ENTRY(ERR_FLAG_DEBUG, true), \
|
||||
ERR_FLAG_PERSIST_ENTRY(ERR_FLAG_TIMING_MAIN_LOOP, true), \
|
||||
ERR_FLAG_PERSIST_ENTRY(ERR_FLAG_SAFETY_MEM_CORRUPT, true), \
|
||||
ERR_FLAG_PERSIST_ENTRY(ERR_FLAG_SAFETY_TAB_CORRUPT, true),
|
||||
ERR_FLAG_PERSIST_ENTRY(ERR_FLAG_SAFETY_TAB_CORRUPT, true), \
|
||||
ERR_FLAG_PERSIST_ENTRY(ERR_FLAG_AMON_SUPPLY_VOLT, false), \
|
||||
|
||||
#define SAFETY_CONFIG_DEFAULT_WEIGHTS ERR_FLAG_WEIGHT_ENTRY(ERR_FLAG_MEAS_ADC_OFF, SAFETY_FLAG_CONFIG_WEIGHT_PID), \
|
||||
ERR_FLAG_WEIGHT_ENTRY(ERR_FLAG_MEAS_ADC_WATCHDOG, SAFETY_FLAG_CONFIG_WEIGHT_PID), \
|
||||
@@ -169,6 +173,7 @@ enum analog_value_monitor {
|
||||
ERR_FLAG_WEIGHT_ENTRY(ERR_FLAG_DEBUG, SAFETY_FLAG_CONFIG_WEIGHT_NONE), \
|
||||
ERR_FLAG_WEIGHT_ENTRY(ERR_FLAG_TIMING_MAIN_LOOP, SAFETY_FLAG_CONFIG_WEIGHT_PANIC), \
|
||||
ERR_FLAG_WEIGHT_ENTRY(ERR_FLAG_SAFETY_MEM_CORRUPT, SAFETY_FLAG_CONFIG_WEIGHT_PID), \
|
||||
ERR_FLAG_WEIGHT_ENTRY(ERR_FLAG_SAFETY_TAB_CORRUPT, SAFETY_FLAG_CONFIG_WEIGHT_PANIC),
|
||||
ERR_FLAG_WEIGHT_ENTRY(ERR_FLAG_SAFETY_TAB_CORRUPT, SAFETY_FLAG_CONFIG_WEIGHT_PANIC), \
|
||||
ERR_FLAG_WEIGHT_ENTRY(ERR_FLAG_AMON_SUPPLY_VOLT, SAFETY_FLAG_CONFIG_WEIGHT_PID), \
|
||||
|
||||
#endif /* __SAFETY_CONFIG_H__ */
|
||||
|
Reference in New Issue
Block a user