| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140 | #ifndef __IO_H#define __IO_H#include <stdbool.h>// Период опроса входов 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
 |