#ifndef __IO_H #define __IO_H #include // Период опроса входов 100 мс // -------------------------------------------------------------------------- // // Дискретые входы #define DI_NUMBER 8 // Количество входов #define DI_MODE_IN 0 // Режим обычного входа #define DI_MODE_CNT 1 // Режим счетного входа // -------------------------------------------------------------------------- // // Выходы #define DO_NUMBER 8 // Количество выходов #define DEBOUNCE_CNT 50 // Прочие параметры из других модулей для передачи по modbus //uint32_t uptime; // -------------------------------------------------------------------------- // // void io_port_init(void); // void io_init(void); // void io_tim_init(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 input_state[DI_NUMBER]; // состояние входа extern uint16_t input_state_bit; // битовое поле extern uint32_t input_cnt[DI_NUMBER]; // счетчики входов 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[]; //uint16_t output_state[DI_NUMBER]; // состояние выхода, 0 - норма, 1 - обрыв, 2 - КЗ // -------------------------------------------------------------------------- // // Структуры настроек. Хранятся во внутренней памяти контроллера. // // контроль состояний - обрыв, КЗ, норма 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; // Структура системных настроек /* typedef struct { uint16_t model; // Модель uint32_t proddate; // Дата производства uint32_t serial; // Серийный номер uint8_t fw_version[8]; // Версия ПО uint8_t test_state; // Статус тестирования } sys_settings_t; */ #endif // __IO_H