/* * board_logic.c * */ #include #include #include "main.h" #include "modbus_logic.h" #include "board_logic.h" #define BOARD_DESC_LEN (23) static const char board_description[BOARD_DESC_LEN] = "RS485 Relay Module v1"; extern uint16_t tranfer_errors_count; extern uint16_t last_rx_time; #define REL_MAIN_ON HAL_GPIO_WritePin(RL_MAIN_GPIO_Port, RL_MAIN_Pin, GPIO_PIN_SET) #define REL_MAIN_OFF HAL_GPIO_WritePin(RL_MAIN_GPIO_Port, RL_MAIN_Pin, GPIO_PIN_RESET) #define REL_AUX_ON HAL_GPIO_WritePin(RL_AUX_GPIO_Port, RL_AUX_Pin, GPIO_PIN_SET) #define REL_AUX_OFF HAL_GPIO_WritePin(RL_AUX_GPIO_Port, RL_AUX_Pin, GPIO_PIN_RESET) #define LED_MAIN_ON HAL_GPIO_WritePin(LED_MAIN_GPIO_Port, LED_MAIN_Pin, GPIO_PIN_SET) #define LED_MAIN_OFF HAL_GPIO_WritePin(LED_MAIN_GPIO_Port, LED_MAIN_Pin, GPIO_PIN_RESET) #define LED_AUX_ON HAL_GPIO_WritePin(LED_AUX_GPIO_Port, LED_AUX_Pin, GPIO_PIN_SET) #define LED_AUX_OFF HAL_GPIO_WritePin(LED_AUX_GPIO_Port, LED_AUX_Pin, GPIO_PIN_RESET) #define LED_ACT_ON HAL_GPIO_WritePin(LED_ACT_GPIO_Port, LED_ACT_Pin, GPIO_PIN_SET) #define LED_ACT_OFF HAL_GPIO_WritePin(LED_ACT_GPIO_Port, LED_ACT_Pin, GPIO_PIN_RESET) uint16_t relays=0; uint16_t motor_pwm=0; uint16_t led_time_act=0; void update_service_indication(void); void loop_iterate() { if(relays&REL_MAIN_BIT) { REL_MAIN_ON; LED_MAIN_ON; } else { REL_MAIN_OFF; LED_MAIN_OFF; } if(relays&REL_AUX_BIT) { REL_AUX_ON; LED_AUX_ON; } else { REL_AUX_OFF; LED_AUX_OFF; } /* if(motor_pwm>MOTOR_MAX)motor_pwm=MOTOR_MAX; if(motor_pwm= 0x0010 && address <= 0x0099) { int index = address - 0x0010; if (index < BOARD_DESC_LEN) *value = board_description[index]; else *value = 0; } else if (address == 0x2001) //Read relays state { *value = relays; } else if (address == 0x2002) //Read motor pwm { *value = motor_pwm; } else return 1; return 0; } uint8_t write_register(uint16_t address, uint16_t value) { uint8_t ret; ret=0; #ifdef UART_DEBUG printf("Write A=0x%X D=0x%X\n\r",address,value); #endif switch (address) { case 0x2001: relays = value; break; case 0x2002: motor_pwm = value; break; default: ret = 1; } return ret; }