analog_input.h 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. #ifndef __ANALOG_INPUT_H
  2. #define __ANALOG_INPUT_H
  3. #include <stdbool.h>
  4. typedef struct
  5. {
  6. uint8_t state; // 0 - выкл, 1 - вкл
  7. uint8_t mode; // режим измерения (0 - напряжение, 1 - ток)
  8. uint8_t name; //
  9. uint8_t gain_factor; // коэффициент усиления
  10. float k_factor; //
  11. float b_factor; //
  12. } ai_t;
  13. // Режим измерения (ток или напряжение)
  14. typedef enum
  15. {
  16. MEAS_VOLTAGE = 0,
  17. MEAS_CURRENT,
  18. } MEAS_CHAN_MODE_t;
  19. typedef enum
  20. {
  21. MUX_301_CH = 0,
  22. AN_INP_1,
  23. AN_INP_2,
  24. AN_INP_3,
  25. AN_INP_4,
  26. AN_INP_5,
  27. AN_INP_6,
  28. V_ISO_CL, // +24 V
  29. V_ISO, // +5 V
  30. MUX_401_CH,
  31. AN_INP_7,
  32. AN_INP_8,
  33. AN_INP_9,
  34. AN_INP_10,
  35. AN_INP_11,
  36. AN_INP_12,
  37. CRNT_LIM_U_BFR_R,
  38. CRNT_LIM_U_ABFR_R,
  39. NUMBER_ADC_CH,
  40. } ANALOG_IN_t;
  41. //
  42. void ai_init_modbus_params(void);
  43. //
  44. void ai_init(void);
  45. //
  46. void ai_led_update(void);
  47. //
  48. void ai_set(void);
  49. //
  50. void ai_set_meas_mode(void);
  51. //
  52. bool ai_adc_init(void);
  53. //
  54. void ai_processing(void);
  55. //
  56. void adc_meas_two_channels(ai_t *one, ai_t *two, uint16_t *out_one, uint16_t *out_two);
  57. //
  58. uint8_t adc_get_gain(uint8_t tmp);
  59. //
  60. void adc_print_data(void);
  61. //
  62. void adc_print_data_extend(void);
  63. //
  64. void adc_task(void *params);
  65. //
  66. void ai_connect_channel(uint8_t channel);
  67. //
  68. void ai_set_mode(MEAS_CHAN_MODE_t mode, uint8_t channel);
  69. //
  70. void ai_set_mode_word(MEAS_CHAN_MODE_t mode, uint8_t channel);
  71. //
  72. void ai_ext_sens_power(uint16_t state);
  73. //
  74. void ai_leds_processing(void);
  75. //
  76. void ai_connect_test(void);
  77. //
  78. void ai_mode_test(void);
  79. extern uint16_t ai_gain[];
  80. extern uint16_t adc_com_raw_data[];
  81. extern float adc_com_data[];
  82. extern uint16_t adc_com_fil_data[];
  83. extern uint16_t adc_add_raw_data[];
  84. extern uint16_t ai_alarm;
  85. extern uint16_t ai_state_bit;
  86. #endif // __ANALOG_INPUT_H