#ifndef __IO_H #define __IO_H #include // Период опроса входов 100 мс #define INPUT_NUMBER 8 // Количество входов #define OUTPUT_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 - счетный вход gpio_port_source_type port_source; uint16_t pin_source; uint32_t deb_counter; bool p_flag; uint32_t cnt; } in_t; typedef struct { gpio_type *port; uint16_t pin; uint16_t mode; // 0 - обычный выход, 1 - режим ШИМ } out_t; // -------------------------------------------------------------------------- // // Текущие параметры extern uint16_t input_state[INPUT_NUMBER]; // состояние входа extern uint32_t input_cnt[INPUT_NUMBER]; // счетчики входов //uint16_t output_state[INPUT_NUMBER]; // состояние выхода, 0 - норма, 1 - обрыв, 2 - КЗ // -------------------------------------------------------------------------- // // Структуры настроек. Хранятся во внутренней памяти контроллера. // typedef struct { uint16_t mode; // режим работы, 0 - вход, 1 - счетчик импульсов uint16_t debounce_time; // период антидребезга в мс } input_t; // // контроль состояний - обрыв, КЗ, норма 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