#ifndef __ANALOG_INPUT_H #define __ANALOG_INPUT_H #include typedef struct { uint8_t state; // 0 - выкл, 1 - вкл uint8_t mode; // режим измерения (0 - напряжение, 1 - ток) uint8_t current_mode; // режим измерения тока (0 - 0-20 mA, 1 - 4-20 mA) uint8_t name; // uint8_t gain_factor; // коэффициент усиления float k_factor; // float b_factor; // } ai_t; typedef struct { bool alarm_flag; bool tim_flag; uint32_t cnt; } ai_alarm_t; // Режим измерения (ток или напряжение) typedef enum { MEAS_VOLTAGE = 0, MEAS_CURRENT, } MEAS_CHAN_MODE_t; typedef enum { MUX_301_CH = 0, AN_INP_1, AN_INP_2, AN_INP_3, AN_INP_4, AN_INP_5, AN_INP_6, V_ISO_CL, // +24 V V_ISO, // +5 V MUX_401_CH, AN_INP_7, AN_INP_8, AN_INP_9, AN_INP_10, AN_INP_11, AN_INP_12, CRNT_LIM_U_BFR_R, CRNT_LIM_U_ABFR_R, NUMBER_ADC_CH, } ANALOG_IN_t; // void ai_init_modbus_params(void); // void ai_init(void); // void ai_led_update(void); // void ai_set(void); // void ai_set_meas_mode(void); // bool ai_adc_init(void); // void ai_processing(void); // void adc_meas_two_channels(ai_t *one, ai_t *two, uint16_t *out_one, uint16_t *out_two); // uint8_t adc_get_gain(uint8_t tmp); // void adc_print_data(void); // void adc_print_data_extend(void); // void adc_task(void *params); // void adc_alarm_task(void *params); // void ai_voltage_alarm_detect(void); // void ai_current_alarm_detect(void); // void ai_alarm_tim_handler(void); // void ai_connect_channel(uint8_t channel); // void ai_set_mode(MEAS_CHAN_MODE_t mode, uint8_t channel); // void ai_set_mode_word(MEAS_CHAN_MODE_t mode, uint8_t channel); // void ai_ext_sens_power(uint16_t state); // void ai_leds_processing(void); // void ai_connect_test(void); // void ai_mode_test(void); extern uint16_t ai_gain[]; extern uint16_t adc_com_raw_data[]; extern float adc_com_data[]; extern uint16_t adc_com_fil_data[]; extern uint16_t adc_add_raw_data[]; extern uint16_t ai_alarm; extern uint16_t ai_state_bit; extern ai_alarm_t ai_alarm_f[]; extern ai_alarm_t ai_cur_lim; #endif // __ANALOG_INPUT_H