analog_input.h 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  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 gain_factor; // коэффициент усиления
  9. } ai_t;
  10. // Режим измерения (ток или напряжение)
  11. typedef enum
  12. {
  13. MEAS_VOLTAGE = 0,
  14. MEAS_CURRENT,
  15. } MEAS_CHAN_MODE_t;
  16. typedef enum
  17. {
  18. MUX_301_CH = 0,
  19. AN_INP_1,
  20. AN_INP_2,
  21. AN_INP_3,
  22. AN_INP_4,
  23. AN_INP_5,
  24. AN_INP_6,
  25. V_ISO_CL, // +24 V
  26. V_ISO, // +5 V
  27. MUX_401_CH,
  28. AN_INP_7,
  29. AN_INP_8,
  30. AN_INP_9,
  31. AN_INP_10,
  32. AN_INP_11,
  33. AN_INP_12,
  34. CRNT_LIM_U_BFR_R,
  35. CRNT_LIM_U_ABFR_R,
  36. NUMBER_ADC_CH,
  37. } ANALOG_IN_t;
  38. //
  39. void ai_init(void);
  40. //
  41. void ai_set_meas_mode(void);
  42. //
  43. bool ai_adc_init(void);
  44. //
  45. void ai_processing(void);
  46. //
  47. void adc_get_two_channles(ANALOG_IN_t one, ANALOG_IN_t two);
  48. //
  49. void adc_print_data(void);
  50. //
  51. void adc_task(void *params);
  52. //
  53. void ai_connect_channel(uint8_t channel);
  54. //
  55. void ai_set_mode(MEAS_CHAN_MODE_t mode, uint8_t channel);
  56. //
  57. void ai_set_mode_word(MEAS_CHAN_MODE_t mode, uint8_t channel);
  58. //
  59. void ai_ext_sens_power(uint16_t state);
  60. //
  61. void ai_leds_processing(void);
  62. //
  63. void ai_connect_test(void);
  64. //
  65. void ai_mode_test(void);
  66. extern uint16_t adc_raw_data[];
  67. extern uint16_t ai_alarm;
  68. #endif // __ANALOG_INPUT_H