io.h 3.6 KB

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