#ifndef __IO_H #define __IO_H #include // -------------------------------------------------------------------------- // // Дискретые входы #define DI_NUMBER 8 // Количество входов #define DI_MODE_IN 0 // Режим обычного входа #define DI_MODE_CNT 1 // Режим счетного входа // -------------------------------------------------------------------------- // // Выходы #define DO_NUMBER 8 // Количество выходов #define DEBOUNCE_CNT 50 // -------------------------------------------------------------------------- // // Аналоговые входы #define AI_NUMBER 12 // // -------------------------------------------------------------------------- // // 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