mirror of
https://gitea.ecohim.ru:3000/RS485_Relay/RS485_Relay2_fw.git
synced 2025-08-07 16:20:30 +03:00
Unofficial update by Zhironkin
This commit is contained in:
@@ -12,6 +12,10 @@
|
||||
#define REL_MAIN_BIT (1u<<0)
|
||||
#define REL_AUX_BIT (1u<<1)
|
||||
|
||||
#define MOTOR_MIN 0
|
||||
#define MOTOR_MAX 255
|
||||
|
||||
|
||||
void loop_iterate();
|
||||
|
||||
|
||||
|
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* user_modbus.h
|
||||
*
|
||||
* Created on: 13 <20><><EFBFBD>. 2019 <20>.
|
||||
* Created on: 13 <20><><EFBFBD>. 2019 <20>.
|
||||
*/
|
||||
|
||||
#ifndef MODBUS_LOGIC_H_
|
||||
@@ -9,9 +9,11 @@
|
||||
#include <stdint.h>
|
||||
|
||||
#define BOARD_ADRESS 34 //Relay Module 1
|
||||
#define BOARD_ADRESS_Panel 32 //Relay Module 1
|
||||
#define BOARD_ADRESS_DAC 36 //DAC module 1
|
||||
//#define BOARD_ADRESS 35 //Relay Module 2
|
||||
|
||||
#define BUS_IDLE_TIME 3
|
||||
#define BUS_IDLE_TIME 15
|
||||
|
||||
#define MODBUS_PROTOCOL_VERSION (1)
|
||||
#define MODBUS_HEADER_SIZE (13)
|
||||
|
@@ -12,6 +12,7 @@
|
||||
|
||||
#define BOARD_DESC_LEN (23)
|
||||
|
||||
extern TIM_HandleTypeDef htim3;
|
||||
static const char board_description[BOARD_DESC_LEN] = "RS485 Relay Module v1";
|
||||
extern uint16_t tranfer_errors_count;
|
||||
extern uint16_t last_rx_time;
|
||||
@@ -56,17 +57,9 @@ void loop_iterate()
|
||||
REL_AUX_OFF;
|
||||
LED_AUX_OFF;
|
||||
}
|
||||
/*
|
||||
if(motor_pwm>MOTOR_MAX)motor_pwm=MOTOR_MAX;
|
||||
if(motor_pwm<MOTOR_MIN)motor_pwm=MOTOR_MIN;
|
||||
if(motor_pwm==0)
|
||||
//TCCR1A&=~(1<<COM1B1);
|
||||
else
|
||||
{
|
||||
//MOTOR_PWM = motor_pwm;
|
||||
//TCCR1A|=(1<<COM1B1);
|
||||
}
|
||||
*/
|
||||
|
||||
|
||||
/* */
|
||||
modbus_loop_iterate();
|
||||
HAL_Delay(1);
|
||||
}
|
||||
@@ -151,7 +144,18 @@ uint8_t write_register(uint16_t address, uint16_t value)
|
||||
switch (address)
|
||||
{
|
||||
case 0x2001: relays = value; break;
|
||||
case 0x2002: motor_pwm = value; break;
|
||||
case 0x2002: motor_pwm = value;
|
||||
if(motor_pwm>MOTOR_MAX)motor_pwm=MOTOR_MAX;
|
||||
if(motor_pwm<MOTOR_MIN)motor_pwm=MOTOR_MIN;
|
||||
if(motor_pwm==0)
|
||||
HAL_TIM_PWM_Stop(&htim3, TIM_CHANNEL_1);
|
||||
else
|
||||
{
|
||||
HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_1);
|
||||
__HAL_TIM_SetCompare(&htim3, TIM_CHANNEL_1, motor_pwm);
|
||||
HAL_Delay(5);
|
||||
}
|
||||
break;
|
||||
default: ret = 1;
|
||||
}
|
||||
return ret;
|
||||
|
@@ -12,6 +12,9 @@
|
||||
volatile uint8_t recv_buffer[BUFFERS_SIZE];
|
||||
volatile uint8_t send_buffer[BUFFERS_SIZE];
|
||||
|
||||
extern uint16_t uart_rx_counter;
|
||||
extern uint16_t uart_rx_len;
|
||||
|
||||
uint16_t bytes_to_send = 0;
|
||||
uint16_t last_rx_time = 0xFFFF;
|
||||
enum recv_state cmd_receiving = RECV_IDLE;
|
||||
@@ -30,7 +33,16 @@ void UART_RxCpltCallback(void)
|
||||
// Check destination address
|
||||
if (recv_buffer[5] != BOARD_ADRESS)
|
||||
{
|
||||
cmd_receiving = RECV_ERROR;
|
||||
|
||||
// if(recv_buffer[5]==BOARD_ADRESS_Panel || recv_buffer[5]==BOARD_ADRESS_DAC )
|
||||
// {
|
||||
|
||||
// memset(&recv_buffer[0],0,BUFFERS_SIZE);
|
||||
|
||||
last_rx_time =0;
|
||||
|
||||
// }
|
||||
cmd_receiving = RECV_ERROR;
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -76,14 +88,15 @@ void modbus_loop_iterate()
|
||||
{
|
||||
if (cmd_receiving == RECV_ERROR)
|
||||
{
|
||||
//delay_ms(30); // poor man's way to synchronize packets
|
||||
// HAL_Delay(10); // poor man's way to synchronize packets
|
||||
if(last_rx_time>=BUS_IDLE_TIME)
|
||||
{
|
||||
{
|
||||
cmd_receiving = RECV_IDLE;
|
||||
// memset(&recv_buffer[0],0,BUFFERS_SIZE);
|
||||
//TXEN_485 = 1;
|
||||
//delay_us(10);
|
||||
//TXEN_485 = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (cmd_receiving == RECV_IDLE)
|
||||
{
|
||||
|
@@ -94,9 +94,9 @@ void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* htim_base)
|
||||
/* Peripheral clock enable */
|
||||
__HAL_RCC_TIM1_CLK_ENABLE();
|
||||
/* TIM1 interrupt Init */
|
||||
HAL_NVIC_SetPriority(TIM1_BRK_UP_TRG_COM_IRQn, 0, 0);
|
||||
HAL_NVIC_EnableIRQ(TIM1_BRK_UP_TRG_COM_IRQn);
|
||||
HAL_NVIC_SetPriority(TIM1_CC_IRQn, 0, 0);
|
||||
HAL_NVIC_SetPriority(TIM1_BRK_UP_TRG_COM_IRQn, 2, 0);
|
||||
HAL_NVIC_EnableIRQ(TIM1_BRK_UP_TRG_COM_IRQn);
|
||||
HAL_NVIC_SetPriority(TIM1_CC_IRQn, 1, 0);
|
||||
HAL_NVIC_EnableIRQ(TIM1_CC_IRQn);
|
||||
/* USER CODE BEGIN TIM1_MspInit 1 */
|
||||
|
||||
|
Reference in New Issue
Block a user