io.h 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. #ifndef __IO_H
  2. #define __IO_H
  3. #include <stdbool.h>
  4. // Период опроса входов 100 мс
  5. #define INPUT_NUMBER 8 // Количество входов
  6. #define OUTPUT_NUMBER 8 // Количество выходов
  7. #define DEBOUNCE_CNT 50
  8. // Прочие параметры из других модулей для передачи по modbus
  9. //uint32_t uptime;
  10. // -------------------------------------------------------------------------- //
  11. //
  12. void io_port_init(void);
  13. //
  14. void io_init(void);
  15. //
  16. void io_tim_init(void);
  17. // -------------------------------------------------------------------------- //
  18. typedef struct
  19. {
  20. gpio_type *port;
  21. uint16_t pin;
  22. } simple_gpio_t;
  23. typedef struct
  24. {
  25. gpio_type *port;
  26. uint16_t pin;
  27. uint16_t mode; // 0 - обычный вход, 1 - счетный вход
  28. gpio_port_source_type port_source;
  29. uint16_t pin_source;
  30. uint32_t deb_counter;
  31. bool p_flag;
  32. uint32_t cnt;
  33. } in_t;
  34. typedef struct
  35. {
  36. gpio_type *port;
  37. uint16_t pin;
  38. uint16_t mode; // 0 - обычный выход, 1 - режим ШИМ
  39. } out_t;
  40. // -------------------------------------------------------------------------- //
  41. // Текущие параметры
  42. extern uint16_t input_state[INPUT_NUMBER]; // состояние входа
  43. extern uint32_t input_cnt[INPUT_NUMBER]; // счетчики входов
  44. //uint16_t output_state[INPUT_NUMBER]; // состояние выхода, 0 - норма, 1 - обрыв, 2 - КЗ
  45. // -------------------------------------------------------------------------- //
  46. // Структуры настроек. Хранятся во внутренней памяти контроллера.
  47. //
  48. typedef struct
  49. {
  50. uint16_t mode; // режим работы, 0 - вход, 1 - счетчик импульсов
  51. uint16_t debounce_time; // период антидребезга в мс
  52. } input_t;
  53. //
  54. // контроль состояний - обрыв, КЗ, норма
  55. typedef struct
  56. {
  57. uint16_t state; // состояние выхода
  58. uint16_t pwm; //
  59. uint16_t mode; // режим работы, 0 - выход, 1 - PWM
  60. uint16_t smode_state; // значение в безопасном режиме,
  61. // 0 - разомкнут, 1 - замкнут
  62. uint16_t smode_pwm; // значение PWM в безопасном режиме (%)
  63. uint16_t normal_state; // нормальное состояние выхода
  64. // 0 - разомкнут, 1 - замкнут
  65. } output_t;
  66. typedef struct
  67. {
  68. uint16_t smode; // безопасный режим 0 - включен, 1 - выключен
  69. uint16_t com_timeout; // время ожидания запроса от мастера
  70. } system_t;
  71. // Структура системных настроек
  72. /*
  73. typedef struct
  74. {
  75. uint16_t model; // Модель
  76. uint32_t proddate; // Дата производства
  77. uint32_t serial; // Серийный номер
  78. uint8_t fw_version[8]; // Версия ПО
  79. uint8_t test_state; // Статус тестирования
  80. } sys_settings_t;
  81. */
  82. #endif // __IO_H