Make Safety ADC use sequnece feature of ADC and use DMA to write data
This commit is contained in:
@@ -34,5 +34,8 @@
|
||||
#define SAFETY_ADC_TEMP_NOM_MV 760.0f
|
||||
#define SAFETY_ADC_TEMP_MV_SLOPE 2.5f
|
||||
|
||||
#define SAFETY_ADC_NUM_OF_CHANNELS 2
|
||||
#define SAFETY_ADC_CHANNELS TEMP_CHANNEL_NUM, INT_REF_CHANNEL_NUM
|
||||
|
||||
|
||||
#endif /* __SAFETY_ADC_HWCFG_H__ */
|
||||
|
@@ -31,20 +31,20 @@
|
||||
|
||||
enum safety_adc_meas_channel {SAFETY_ADC_MEAS_VREF, SAFETY_ADC_MEAS_TEMP};
|
||||
|
||||
void safety_adc_init();
|
||||
void safety_adc_init(void);
|
||||
|
||||
void safety_adc_deinit();
|
||||
void safety_adc_deinit(void);
|
||||
|
||||
void safety_adc_trigger_meas(enum safety_adc_meas_channel measurement);
|
||||
void safety_adc_trigger_meas(void);
|
||||
|
||||
/**
|
||||
* @brief Poll ADC result.
|
||||
* @param results adc results
|
||||
* @return 1 if measurement successful, 0 if not ready, -1 if ADC aborted or not started
|
||||
*/
|
||||
int safety_adc_poll_result(uint16_t *adc_result);
|
||||
int safety_adc_poll_result(void);
|
||||
|
||||
enum safety_adc_check_result handle_safety_adc();
|
||||
const uint16_t *safety_adc_get_values(void);
|
||||
|
||||
float safety_adc_convert_channel(enum safety_adc_meas_channel channel, uint16_t analog_value);
|
||||
|
||||
|
@@ -101,7 +101,7 @@ enum analog_value_monitor {
|
||||
*/
|
||||
#define MEAS_ADC_SAFETY_FLAG_KEY 0xe554dac3UL
|
||||
|
||||
#define SAFETY_CONTROLLER_ADC_DELAY_MS 120
|
||||
#define SAFETY_CONTROLLER_ADC_DELAY_MS 250
|
||||
|
||||
#define SAFETY_CONFIG_DEFAULT_PERSIST ERR_FLAG_PERSIST_ENTRY(ERR_FLAG_MEAS_ADC_OFF, false), \
|
||||
ERR_FLAG_PERSIST_ENTRY(ERR_FLAG_MEAS_ADC_WATCHDOG, false), \
|
||||
@@ -132,7 +132,7 @@ enum analog_value_monitor {
|
||||
ERR_FLAG_WEIGHT_ENTRY(ERR_FLAG_STACK, SAFETY_FLAG_CONFIG_WEIGHT_PANIC), \
|
||||
ERR_FLAG_WEIGHT_ENTRY(ERR_FLAG_SAFETY_ADC, SAFETY_FLAG_CONFIG_WEIGHT_PANIC), \
|
||||
ERR_FLAG_WEIGHT_ENTRY(ERR_FLAG_SYSTICK, SAFETY_FLAG_CONFIG_WEIGHT_PANIC), \
|
||||
/* Watchdog timeout is not handled perioodically, but only on startup.
|
||||
/* Watchdog timeout is not handled periodically, but only on startup.
|
||||
* Therefore, it is not listed here */\
|
||||
ERR_FLAG_WEIGHT_ENTRY(ERR_FLAG_WTCHDG_FIRED, SAFETY_FLAG_CONFIG_WEIGHT_NONE), \
|
||||
ERR_FLAG_WEIGHT_ENTRY(ERR_FLAG_UNCAL, SAFETY_FLAG_CONFIG_WEIGHT_NONE), \
|
||||
|
Reference in New Issue
Block a user