123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- #ifndef __IO_H
- #define __IO_H
- #include <stdbool.h>
- // -------------------------------------------------------------------------- //
- // Дискретые входы
- #define DI_NUMBER 8 // Количество входов
- #define DI_MODE_IN 0 // Режим обычного входа
- #define DI_MODE_CNT 1 // Режим счетного входа
- // -------------------------------------------------------------------------- //
- // Дискретные выходы
- #define DO_NUMBER 8 // Количество выходов
- #define DEBOUNCE_CNT 50
- // -------------------------------------------------------------------------- //
- // Аналоговые входы.
- #define AI_ALL_NUMBER 16 // Общее количество
- #define AI_COMMON_NUMBER 12 // Основные 12
- #define AI_ADD_NUMBER 4 // Дополнительные 4 входа
- // -------------------------------------------------------------------------- //
- // Аналоговые выходы.
- #define AO_NUMBER 4 // Количество выходов
- // -------------------------------------------------------------------------- //
- //
- void io_port_enable(void);
- // -------------------------------------------------------------------------- //
- typedef struct
- {
- gpio_type *port;
- uint16_t pin;
-
- } simple_gpio_t;
- typedef struct
- {
- gpio_type *port;
- uint16_t pin;
- uint16_t mode; // 0 - обычный вход, 1 - счетный вход
- uint32_t deb_counter;
- uint32_t cnt;
- bool p_flag;
- bool cnt_flag;
-
- } din_t;
- typedef struct
- {
- gpio_type *port;
- uint16_t pin;
- uint16_t mode; // 0 - обычный выход, 1 - режим ШИМ
- uint16_t pwm_period_cnt;
- uint16_t pwm_duty_cnt;
- uint16_t pwm_flag;
- uint16_t pwm_period;
- uint16_t pwm_duty;
-
- } out_t;
- extern uint16_t output_state_bit;
- extern uint16_t output_mode_bit;
- extern uint16_t output_pwm[];
- extern uint16_t output_pwm_save[];
- extern uint16_t output_pwm_period[];
- extern uint16_t output_pwm_period_save[];
- //
- // контроль состояний - обрыв, КЗ, норма
- typedef struct
- {
- uint16_t state; // состояние выхода
- uint16_t pwm; //
- uint16_t mode; // режим работы, 0 - выход, 1 - PWM
- uint16_t smode_state; // значение в безопасном режиме,
- // 0 - разомкнут, 1 - замкнут
- uint16_t smode_pwm; // значение PWM в безопасном режиме (%)
- uint16_t normal_state; // нормальное состояние выхода
- // 0 - разомкнут, 1 - замкнут
- } output_t;
- typedef struct
- {
- uint16_t smode; // безопасный режим 0 - включен, 1 - выключен
- uint16_t com_timeout; // время ожидания запроса от мастера
- } system_t;
- #endif // __IO_H
|