| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 | 
							- #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
 
- {
 
-     uint8_t state;          // 0 - выкл, 1 - вкл
 
-     
 
- } di_t;
 
- //
 
- typedef struct
 
- {
 
-     uint8_t state;          // 0 - выкл, 1 - вкл
 
-     uint8_t mode;           // режим работы, 0 - вход, 1 - счетчик импульсов
 
-     uint8_t value;          // значение на выходе в режиме обычного выхода
 
-     uint16_t pwm_duty;      // значение заполнения ШИМ
 
-     uint16_t pwm_period;    // период ШИМ в [0.1с (10..1000)]
 
-     
 
- } do_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_state_save_bit;
 
- extern uint16_t output_value_bit;
 
- extern uint16_t output_value_save_bit;
 
- extern uint16_t output_mode_bit;
 
- extern uint16_t output_mode_save_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
 
 
  |