aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW
diff options
context:
space:
mode:
authorAvi Levkovich <avi@twine-s.com>2020-12-24 16:20:40 +0200
committerAvi Levkovich <avi@twine-s.com>2020-12-24 16:20:40 +0200
commit49251db3f95a2c3146fc94ef2d487042891a6220 (patch)
tree22058c544122b6476a3618f12c959c0041789c9a /Software/Embedded_SW
parent7769a81204af381152824b3a3b30aaaddf76aaca (diff)
downloadTango-49251db3f95a2c3146fc94ef2d487042891a6220.tar.gz
Tango-49251db3f95a2c3146fc94ef2d487042891a6220.zip
Add support for multi BTSR ultra feeders
Diffstat (limited to 'Software/Embedded_SW')
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c2
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/Uart_Comm/BTSR/BTSR.c334
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/Uart_Comm/BTSR/BTSR.h111
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c2
-rw-r--r--Software/Embedded_SW/Embedded/Modules/General/Safety.c2
5 files changed, 221 insertions, 230 deletions
diff --git a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c
index c37bbc437..4b343a383 100644
--- a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c
+++ b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c
@@ -122,7 +122,7 @@ LS_DISPENSER_7_8 LS_Dispenser_7_8;
LS_DRYER_DH Ls_Dryer_Dh;
F3_LS_01 LS_Spare;
-void FPGA_Read_LS_Safty_Ind_Reg()
+void FPGA_Read_LS_Safty_Ind_Reg()//MillisecLoop
{
// uint8_t temp[8] = {0,0,0,0,0,0,0,0},i;
#ifndef EVALUATION_BOARD
diff --git a/Software/Embedded_SW/Embedded/Drivers/Uart_Comm/BTSR/BTSR.c b/Software/Embedded_SW/Embedded/Drivers/Uart_Comm/BTSR/BTSR.c
index 118891a39..54296e0dc 100644
--- a/Software/Embedded_SW/Embedded/Drivers/Uart_Comm/BTSR/BTSR.c
+++ b/Software/Embedded_SW/Embedded/Drivers/Uart_Comm/BTSR/BTSR.c
@@ -40,9 +40,8 @@ static uint32_t GlobalClk;
uint8_t BTSR_RX_Buff[Max_BTSR_RX_Bytes];
uint16_t TX_Timeout = 0xFFFF;//6250
uint16_t RX_Timeout = 0xFFFF;//1
-float BTSR_Length = 0;
-#define BTSR_RADIUS 3 //TBD ?
+BTSR_t BTSR[MaxUFeeders];
typedef enum
{
@@ -80,7 +79,6 @@ void U4RX()
void uart4_intHandler()
{
- //static uint8_t nop = 0;
//Get interrupt flags
unsigned long status = UARTIntStatus(UART4_BASE, 1);
@@ -409,56 +407,6 @@ uint8_t BTSR_Send_Buf(uint8_t *Buf, uint8_t size)
return TxResult;
}
-
-/*
-uint8_t BTSR_Send_Buf(uint8_t *Buf, uint8_t size)
-{
- int TxResult = 0;
- uint8_t i = 1;//change to ADD0 and send the rest of bytes (1..Size)
- const uint8_t Save_Size = size;
-
- BTSR_Change_Comm_Mode(TX_FIRST_BYTE);
- Task_sleep (eOneMillisecond);
- TxResult |=ROM_UARTCharPutNonBlocking(UART4_BASE,Buf[0]);
-
- BTSR_Change_Comm_Mode(TX_NOT_FIRST_BYTE);
- Task_sleep (eOneMillisecond);
-
- while(size)
- {
- if(size <= 16) //FIFO is working for data up to 16 bytes
- {
- for(; i < Save_Size; i++)
- {
- TxResult |=ROM_UARTCharPutNonBlocking(UART4_BASE,Buf[i]);
- }
- size = 0;// all sent
- }
- else
- {
- for(; i < 16; i++)
- {
- TxResult |=ROM_UARTCharPutNonBlocking(UART4_BASE,Buf[i]);
- }
- size -= 16;
- }
-
- while(HWREG(UART4_BASE + UART_O_FR) & UART_FR_BUSY)//UARTFR
- {
- if(TX_Timeout)
- {
- TX_Timeout--;
- }
- else
- return ERROR;
- }
- }
-
- UART4_RS485_Direction(RX);
-
- return TxResult;
-}
-*/
uint8_t BTSR_Send_Buf_3xADD1(uint8_t *Buf, uint8_t size)//Only for commands with 3 bytes with Address 1 (0x06/0xFD)
{
int TxResult = 0;
@@ -634,50 +582,16 @@ uint8_t BTSR_Read_Status(uint8_t BTSR_Id, uint8_t Application, uint8_t Yarn_Type
//----------------------------------------------------------------------------------------------------------------
//----------------------------------------------------------------------------------------------------------------
-//BTSR_ALARM_AND_ENABLING_STATUS_READ
-typedef struct
-{
- bool D0 : 1;//0
- bool D1 : 1;//1
- bool D2 : 1;//2
- bool D3 : 1;//3
- bool D4 : 1;//4
- bool D5 : 1;//5
- bool D6 : 1;//6
- bool D7 : 1;//7
-}BITS;
-typedef union
-{
- BITS Bit[6];
- uint8_t Byte[6];
-}BTSR_ALARM_AND_ENABLING_STATUS_READ;
-typedef union
-{
- struct
- {
- uint8_t SW_VERSION;//0XDE
- uint8_t SW_UNDER_VERSION;//0X01
- uint8_t BYTE_U0X55;//0X55
- uint8_t BYTE_F0X46;//0X46
- uint8_t PRODUCT_CODE;//0X13
- uint8_t TENSION_SENSOR_END_SCALE;//0X65
- uint8_t BOARD_HW_VERSION;//0X02
- uint8_t BOOTLOADER_SW_VERSION;//0X0A
- uint8_t BYTE_0X32;//0X32
- uint8_t SPARE;//0X00
- uint8_t CHECKSUM_LSB;//0X60
- uint8_t CHECKSUM_MSB;//0X01
- }Byte;
-uint8_t Buf[12];
-}BTSR_DEVICE_INFORMATION_READ;
-BTSR_ALARM_AND_ENABLING_STATUS_READ BTSR_Status;
-BTSR_DEVICE_INFORMATION_READ BTSR_Info;
+
+
+//BTSR_ALARM_AND_ENABLING_STATUS_READ BTSR_Status;
+//BTSR_DEVICE_INFORMATION_READ BTSR_Info;
typedef union
{
@@ -726,11 +640,11 @@ typedef union
uint32_t TARGET ;
uint16_t TENSION_ERROR ;
uint16_t ALARM_TIME ;
- uint8_t SPARE1[2] ;
+ uint8_t SPARE1[2] ;
uint8_t ALARM_ENABLING ;
uint8_t TARGET_ENABLING ;
uint8_t RELAX_YARN_SPEED;
- uint8_t SPARE2[6] ;
+ uint8_t SPARE2[6] ;
uint16_t CHECKSUM ;
}Byte;
@@ -739,15 +653,15 @@ uint8_t Buf[39];
BTSR_ADVANCED_TENSION_PROGRAMMING BTSR_Adv_Tension_Prog;
-void BTSR_Configuration_Set(uint8_t UFeeder_ID)
+void BTSR_Configuration_Set(UFeeder_Index UFeeder_i)//15
{
memset(BTSR_TX_Buff, 0, Max_BTSR_TX_Bytes);
- BTSR_TX_Buff[0] = UFeeder_ID;
+ BTSR_TX_Buff[0] = BTSR[UFeeder_i].ID;
BTSR_TX_Buff[1] = 0x36;
- BTSR_TX_Buff[2] = 0x80;//CCW
+ BTSR_TX_Buff[2] = BTSR[UFeeder_i].DirectionCCW << 7;
BTSR_TX_Buff[3] = 0x01;//YYT OFF, UNICO OFF
- BTSR_TX_Buff[4] = 0x40;//FLIP DISPLAY
+ BTSR_TX_Buff[4] = BTSR[UFeeder_i].Flip_Display << 6;
BTSR_Calculate_CheckSum(BTSR_TX_Buff,18);
@@ -755,7 +669,7 @@ void BTSR_Configuration_Set(uint8_t UFeeder_ID)
}
-void BTSR_Advanced_Style_Load(uint8_t UFeeder_ID, uint16_t Tension, uint16_t Tension_Error, uint16_t Time_Alarm, BTSR_APPLICATION Application, BTSR_YARN_TYPE YarnType )
+void BTSR_Advanced_Style_Load(UFeeder_Index UFeeder_i)
{
//memset(BTSR_AdvStyle_Load.Buf, 0, Size);
/*
@@ -777,20 +691,20 @@ void BTSR_Advanced_Style_Load(uint8_t UFeeder_ID, uint16_t Tension, uint16_t Ten
memset(BTSR_TX_Buff, 0, Max_BTSR_TX_Bytes);
- BTSR_TX_Buff[0] = UFeeder_ID;
+ BTSR_TX_Buff[0] = BTSR[UFeeder_i].ID;
BTSR_TX_Buff[1] = 0x4B;
- BTSR_TX_Buff[2] = 0xCD;//1
- BTSR_TX_Buff[3] = 0x00;//2
+ BTSR_TX_Buff[2] = BTSR[UFeeder_i].Tension & 0XFF;//1
+ BTSR_TX_Buff[3] = BTSR[UFeeder_i].Tension >> 8;//2
- BTSR_TX_Buff[10] = 0x02;//9
- BTSR_TX_Buff[11] = 0x00;//10
- BTSR_TX_Buff[12] = 0x04;//11
- BTSR_TX_Buff[13] = 0x00;//12
+ BTSR_TX_Buff[10] = BTSR[UFeeder_i].Tension_Err & 0XFF;//9
+ BTSR_TX_Buff[11] = BTSR[UFeeder_i].Tension_Err >> 8;//10
+ BTSR_TX_Buff[12] = BTSR[UFeeder_i].Alarm_Time & 0XFF;//11
+ BTSR_TX_Buff[13] = BTSR[UFeeder_i].Alarm_Time >> 8;//12
- BTSR_TX_Buff[15] = FLAT_KNIT;//14
- BTSR_TX_Buff[16] = ALL_YARNS2;//15
+ BTSR_TX_Buff[15] = BTSR[UFeeder_i].Application;//14
+ BTSR_TX_Buff[16] = BTSR[UFeeder_i].Yarn_Type;//15
BTSR_Calculate_CheckSum(BTSR_TX_Buff,23);
@@ -798,22 +712,22 @@ void BTSR_Advanced_Style_Load(uint8_t UFeeder_ID, uint16_t Tension, uint16_t Ten
}
-void BTSR_Advanced_Tension_Prog(uint8_t UFeeder_ID, uint16_t Tension, uint16_t Tension_Error, uint16_t Time_Alarm )
+void BTSR_Advanced_Tension_Prog(UFeeder_Index UFeeder_i )
{
memset(BTSR_TX_Buff, 0, Max_BTSR_TX_Bytes);
- BTSR_TX_Buff[0] = UFeeder_ID;
+ BTSR_TX_Buff[0] = BTSR[UFeeder_i].ID;
BTSR_TX_Buff[1] = 0x39;
- BTSR_TX_Buff[4] = Tension & 0XFF;//3
- BTSR_TX_Buff[5] = Tension >> 8;//4
+ BTSR_TX_Buff[4] = BTSR[UFeeder_i].Tension & 0XFF;//3
+ BTSR_TX_Buff[5] = BTSR[UFeeder_i].Tension >> 8;//4
- BTSR_TX_Buff[22] = Tension_Error & 0XFF;//21
- BTSR_TX_Buff[23] = Tension_Error >> 8;//22
+ BTSR_TX_Buff[22] = BTSR[UFeeder_i].Tension_Err & 0XFF;//21
+ BTSR_TX_Buff[23] = BTSR[UFeeder_i].Tension_Err >> 8;//22
- BTSR_TX_Buff[24] = Time_Alarm & 0XFF;//23
- BTSR_TX_Buff[25] = Time_Alarm >> 8;//24
+ BTSR_TX_Buff[24] = BTSR[UFeeder_i].Alarm_Time & 0XFF;//23
+ BTSR_TX_Buff[25] = BTSR[UFeeder_i].Alarm_Time >> 8;//24
BTSR_TX_Buff[28] = 0x01;//27 ‘1’ TENSION ERROR ENABLED
@@ -822,15 +736,15 @@ void BTSR_Advanced_Tension_Prog(uint8_t UFeeder_ID, uint16_t Tension, uint16_t T
BTSR_Send_Buf(BTSR_TX_Buff,39);
}
-void BTSR_Application_Yarn_Type_Set(uint8_t BTSR_Id, BTSR_APPLICATION Application, BTSR_YARN_TYPE Yarn_Type )
+void BTSR_Application_Yarn_Type_Set(UFeeder_Index UFeeder_i)
{
//APPLICATION_AND_YARN_TYPOLOGY_SET_27
memset(BTSR_TX_Buff, 0, Max_BTSR_TX_Bytes);
- BTSR_TX_Buff[0] = BTSR_Id;
+ BTSR_TX_Buff[0] = BTSR[UFeeder_i].ID;
BTSR_TX_Buff[1] = 0x3F;
- BTSR_TX_Buff[2] = Application;
- BTSR_TX_Buff[3] = Yarn_Type;
+ BTSR_TX_Buff[2] = BTSR[UFeeder_i].Application;
+ BTSR_TX_Buff[3] = BTSR[UFeeder_i].Yarn_Type;
BTSR_Calculate_CheckSum(BTSR_TX_Buff,4);
@@ -838,16 +752,17 @@ void BTSR_Application_Yarn_Type_Set(uint8_t BTSR_Id, BTSR_APPLICATION Applicatio
}
-void BTSR_Status_Reset(uint8_t UFeeder_ID)//35
+void BTSR_Status_Reset(UFeeder_Index UFeeder_i)//35
{
memset(BTSR_TX_Buff, 0, Max_BTSR_TX_Bytes);
- BTSR_TX_Buff[0] = UFeeder_ID;
+ BTSR_TX_Buff[0] = BTSR[UFeeder_i].ID;
BTSR_TX_Buff[1] = 0x27;
+
BTSR_TX_Buff[2] = 0x07;//RESET_0
BTSR_TX_Buff[3] = 0x00;//RESET_1
BTSR_TX_Buff[4] = 0x00;//SPARE
- BTSR_TX_Buff[4] = 0x00;//SPARE
+ BTSR_TX_Buff[5] = 0x00;//SPARE
BTSR_Calculate_CheckSum(BTSR_TX_Buff,6);
@@ -855,11 +770,11 @@ void BTSR_Status_Reset(uint8_t UFeeder_ID)//35
}
-void BTSR_Errors_Counter_Reset(uint8_t UFeeder_ID)//36
+void BTSR_Errors_Counter_Reset(UFeeder_Index UFeeder_i)//36
{
memset(BTSR_TX_Buff, 0, Max_BTSR_TX_Bytes);
- BTSR_TX_Buff[0] = UFeeder_ID;
+ BTSR_TX_Buff[0] = BTSR[UFeeder_i].ID;
BTSR_TX_Buff[1] = 0x29;
BTSR_TX_Buff[2] = 0x00;//00 - RESETS ALL THE COUNTERS
@@ -869,11 +784,11 @@ void BTSR_Errors_Counter_Reset(uint8_t UFeeder_ID)//36
}
-void BTSR_Meters_Total_Counter_Reset(uint8_t UFeeder_ID , uint8_t Resolution)//37/39/41
+void BTSR_Meters_Total_Counter_Reset(UFeeder_Index UFeeder_i , uint8_t Resolution)//37/39/41
{
memset(BTSR_TX_Buff, 0, Max_BTSR_TX_Bytes);
- BTSR_TX_Buff[0] = UFeeder_ID;
+ BTSR_TX_Buff[0] = BTSR[UFeeder_i].ID;
if(Resolution == LOW)
BTSR_TX_Buff[1] = 0x06;
@@ -889,11 +804,11 @@ void BTSR_Meters_Total_Counter_Reset(uint8_t UFeeder_ID , uint8_t Resolution)//3
BTSR_Send_Buf(BTSR_TX_Buff, 4);
}
-void BTSR_Info_Read(uint8_t UFeeder_ID)
+void BTSR_Info_Read(UFeeder_Index UFeeder_i)
{
memset(BTSR_TX_Buff, 0, Max_BTSR_TX_Bytes);
- BTSR_TX_Buff[0] = UFeeder_ID;
+ BTSR_TX_Buff[0] = BTSR[UFeeder_i].ID;
BTSR_TX_Buff[1] = 0x3E;
BTSR_Calculate_CheckSum(BTSR_TX_Buff,2);
@@ -902,11 +817,11 @@ void BTSR_Info_Read(uint8_t UFeeder_ID)
}
-void BTSR_Meters_Total_Counter_Read(uint8_t UFeeder_ID , uint8_t Resolution)//37/39/41
+void BTSR_Meters_Total_Counter_Read(UFeeder_Index UFeeder_i , uint8_t Resolution)//37/39/41
{
memset(BTSR_TX_Buff, 0, Max_BTSR_TX_Bytes);
- BTSR_TX_Buff[0] = UFeeder_ID;
+ BTSR_TX_Buff[0] = BTSR[UFeeder_i].ID;
if(Resolution == LOW)
BTSR_TX_Buff[1] = 0x16;
@@ -922,11 +837,11 @@ void BTSR_Meters_Total_Counter_Read(uint8_t UFeeder_ID , uint8_t Resolution)//37
BTSR_Send_Buf(BTSR_TX_Buff, 4);
}
-void BTSR_Alarm_and_Enabling_Status_Read(uint8_t UFeeder_ID)//30
+void BTSR_Alarm_and_Enabling_Status_Read(UFeeder_Index UFeeder_i)//30
{
memset(BTSR_TX_Buff, 0, Max_BTSR_TX_Bytes);
- BTSR_TX_Buff[0] = UFeeder_ID;
+ BTSR_TX_Buff[0] = BTSR[UFeeder_i].ID;
BTSR_TX_Buff[1] = 0x1C;
BTSR_Calculate_CheckSum(BTSR_TX_Buff,2);
@@ -934,40 +849,7 @@ void BTSR_Alarm_and_Enabling_Status_Read(uint8_t UFeeder_ID)//30
BTSR_Send_Buf(BTSR_TX_Buff, 4);
}
-typedef enum
-{
- //BTSR_READ
- DEVICE_INFORMATION_READ_10 ,
- ADVANCED_PROGRAMMING_READ_18 ,
- ADVANCED_TENSION_READ_23 ,
- APPLICATION_AND_YARN_TYPOLOGY_READ_28 ,
- ALARM_AND_ENABLING_STATUS_READ_30 ,
- PC_LINK_READ_32 ,
- METERS_TOTAL_COUNTER_READ_LOW_37 ,
- METERS_TOTAL_COUNTER_READ_HIGH_39 ,
- METER_TOTAL_COUNTER_READ_HIGHEST_41 ,
- MAX_BTSR_READ ,
- //BTSR_SET
- //return 0xFA/0xFB/0xF9
- DEVICE_CALIBRATION_11 ,
- BAUDRATE_SET_13 ,
- DISPLAY_LANGUAGE_SET_14 ,
- CONFIGURATION_SET_15 ,
- ADVANCED_CONFIGURATION_SET_17 ,
- INPUT_CURRENT_CONTROL_SET_20 ,
- ADVANCED_TENSION_PROGRAMMING_21 ,
- ADVANCED_STYLE_LOAD_25 ,
- APPLICATION_AND_YARN_TYPOLOGY_SET_27 ,
- WORK_TENSION_AND_OPERATION_STATUS_SET_29 ,
- ALARM_STATUS_RESET_35 ,
- RESETS_ALL_THE_COUNTERS_36 ,
- //return device + Function code
- METERS_TOTAL_COUNTER_RESET_LOW_38 ,
- METERS_TOTAL_COUNTER_RESET_HIGH_40 ,
- METERS_TOTAL_COUNTER_RESET_HIGHEST_42 ,
- MAX_BTSR_SET
-}BTSR_CMD;
typedef union
{
@@ -988,23 +870,22 @@ BTSR_METERS BTSR_Meters;
#define Get_Read_resp 7
#define Read_Command 8
-uint8_t BTSR_command_Stage[MAX_BTSR_SET];
-
-uint8_t BTSR_State_Machine(uint8_t UFeeder_ID)
+uint8_t BTSR_State_Machine(UFeeder_Index UFeeder_i)
{
uint8_t status = OK;
uint8_t i,j;
+ float temp = 0.0;
//BTSR_Init();
for(i = DEVICE_CALIBRATION_11; i < MAX_BTSR_SET; i++)
{
- if(BTSR_command_Stage[i] == Get_Set_resp)
+ if(BTSR[UFeeder_i].Command[i] == Get_Set_resp)
{
if((i >= DEVICE_CALIBRATION_11) && (i <= RESETS_ALL_THE_COUNTERS_36) && (BTSR_RX_Buff[0] != BTSR_RISP_OK))
{
status = ERROR;
- BTSR_command_Stage[i] = BTSR_RX_Buff[0];
+ BTSR[UFeeder_i].Command[i] = BTSR_RX_Buff[0];
//print response + command ID
}
else if(((i == METERS_TOTAL_COUNTER_RESET_LOW_38) && (BTSR_RX_Buff[1] != 0x06)) ||
@@ -1012,43 +893,43 @@ uint8_t BTSR_State_Machine(uint8_t UFeeder_ID)
((i == METERS_TOTAL_COUNTER_RESET_HIGHEST_42) && (BTSR_RX_Buff[1] != 0x48)) )
{
status = ERROR;
- BTSR_command_Stage[i] = BTSR_RX_Buff[1];
+ BTSR[UFeeder_i].Command[i] = BTSR_RX_Buff[1];
//print response + command ID
}
else//print response + command ID
- BTSR_command_Stage[i] = BTSR_RX_Buff[0];//OK;
+ BTSR[UFeeder_i].Command[i] = BTSR_RX_Buff[0];//OK;
}
- if(BTSR_command_Stage[i] == Set_Command)
+ if(BTSR[UFeeder_i].Command[i] == Set_Command)
{
switch(i)
{
case CONFIGURATION_SET_15:
- BTSR_Configuration_Set(UFeeder_ID);
+ BTSR_Configuration_Set(UFeeder_i);
break;
case ADVANCED_TENSION_PROGRAMMING_21:
- BTSR_Advanced_Tension_Prog(0x01, 0x0101, 0x0101, 0x0101 );
+ BTSR_Advanced_Tension_Prog(UFeeder_i);
break;
case APPLICATION_AND_YARN_TYPOLOGY_SET_27:
- BTSR_Application_Yarn_Type_Set(0x01, SHOES, ELASTIC2 );
+ BTSR_Application_Yarn_Type_Set(UFeeder_i);
break;
case ALARM_STATUS_RESET_35:
- BTSR_Status_Reset(0x01);
+ BTSR_Status_Reset(UFeeder_i);
break;
case RESETS_ALL_THE_COUNTERS_36:
- BTSR_Errors_Counter_Reset(0x01);
+ BTSR_Errors_Counter_Reset(UFeeder_i);
break;
case METERS_TOTAL_COUNTER_RESET_LOW_38:
- BTSR_Meters_Total_Counter_Reset(UFeeder_ID, LOW);
+ BTSR_Meters_Total_Counter_Reset(UFeeder_i, LOW);
break;
case METERS_TOTAL_COUNTER_RESET_HIGH_40:
- BTSR_Meters_Total_Counter_Reset(UFeeder_ID, HIGH);
+ BTSR_Meters_Total_Counter_Reset(UFeeder_i, HIGH);
break;
case METERS_TOTAL_COUNTER_RESET_HIGHEST_42:
- BTSR_Meters_Total_Counter_Reset(UFeeder_ID, HIGHEST);
+ BTSR_Meters_Total_Counter_Reset(UFeeder_i, HIGHEST);
break;
}
- BTSR_command_Stage[i] = Get_Set_resp;
+ BTSR[UFeeder_i].Command[i] = Get_Set_resp;
return status;//Only one command in cycle
}
}
@@ -1056,62 +937,66 @@ uint8_t BTSR_State_Machine(uint8_t UFeeder_ID)
for(i = DEVICE_INFORMATION_READ_10; i < MAX_BTSR_READ; i++)
{
- if(BTSR_command_Stage[i] == Get_Read_resp)
+ if(BTSR[UFeeder_i].Command[i] == Get_Read_resp)
{
// Add CRC check
if(i == ALARM_AND_ENABLING_STATUS_READ_30)
{
for(j = 0; j < 6; j++)
- BTSR_Status.Byte[j] = BTSR_RX_Buff[j];
+ BTSR[UFeeder_i].Status.Byte[j] = BTSR_RX_Buff[j];
}
else
if(i == DEVICE_INFORMATION_READ_10)
{
- for(j = 0; j < 20; j++)
- BTSR_Info.Buf[j] = BTSR_RX_Buff[j];
- status |= Check_Received_CheckSum(UFeeder_ID, 0x3E, BTSR_Info.Buf, 20);
- ReportWithPackageFilter(ThreadFilter,"BTSR VERSION",__FILE__,UFeeder_ID,(BTSR_Info.Byte.BOARD_HW_VERSION << 8) | BTSR_Info.Byte.BOOTLOADER_SW_VERSION,RpMessage,(BTSR_Info.Byte.SW_VERSION << 8) | BTSR_Info.Byte.SW_UNDER_VERSION,0);
+ for(j = 0; j < 12; j++)
+ BTSR[UFeeder_i].Info.Buf[j] = BTSR_RX_Buff[j];
+ status |= Check_Received_CheckSum(BTSR[UFeeder_i].ID, 0x3E, BTSR[UFeeder_i].Info.Buf, 12);
+ ReportWithPackageFilter(ThreadFilter,"BTSR VERSION",__FILE__,UFeeder_i,(BTSR[UFeeder_i].Info.Byte.BOARD_HW_VERSION << 8) | BTSR[UFeeder_i].Info.Byte.BOOTLOADER_SW_VERSION,RpMessage,(BTSR[UFeeder_i].Info.Byte.SW_VERSION << 8) | BTSR[UFeeder_i].Info.Byte.SW_UNDER_VERSION,0);
}
+ else
if((i == METERS_TOTAL_COUNTER_READ_LOW_37) || (i == METERS_TOTAL_COUNTER_READ_HIGH_39) || (i == METER_TOTAL_COUNTER_READ_HIGHEST_41))
{
for(j = 0; j < 6; j++)
BTSR_Meters.Buf[j] = BTSR_RX_Buff[j];
- status |= Check_Received_CheckSum(UFeeder_ID, 0x16, BTSR_Meters.Buf, 6);
+ status |= Check_Received_CheckSum(BTSR[UFeeder_i].ID, 0x16, BTSR_Meters.Buf, 6);
- BTSR_Length = (float)(BTSR_Meters.Data.Uint32) * PI * BTSR_RADIUS;
+ temp = (float)(BTSR_Meters.Data.Uint32) * PI * BTSR[UFeeder_i].Radius_Meter;
if(i == METERS_TOTAL_COUNTER_READ_HIGH_39)
- BTSR_Length/=12.0;
+ temp /=12.0;
else
if(i == METER_TOTAL_COUNTER_READ_HIGHEST_41)
- BTSR_Length/=750.0;
+ temp /=750.0;
+
+ BTSR[UFeeder_i].LengthInMeter = temp;
}
memset(BTSR_RX_Buff, 0, Max_BTSR_RX_Bytes);
- BTSR_command_Stage[i] = 0;
+ BTSR[UFeeder_i].Command[i] = BTSR_RISP_OK;
}
+ //else//?
- if(BTSR_command_Stage[i] == Read_Command)
+ if(BTSR[UFeeder_i].Command[i] == Read_Command)
{
switch(i)
{
case ALARM_AND_ENABLING_STATUS_READ_30:
- BTSR_Alarm_and_Enabling_Status_Read(UFeeder_ID);
+ BTSR_Alarm_and_Enabling_Status_Read(UFeeder_i);
break;
case DEVICE_INFORMATION_READ_10:
- BTSR_Info_Read(UFeeder_ID);
+ BTSR_Info_Read(UFeeder_i);
break;
case METERS_TOTAL_COUNTER_READ_LOW_37:
- BTSR_Meters_Total_Counter_Read(UFeeder_ID, LOW);
+ BTSR_Meters_Total_Counter_Read(UFeeder_i, LOW);
break;
case METERS_TOTAL_COUNTER_READ_HIGH_39:
- BTSR_Meters_Total_Counter_Read(UFeeder_ID, HIGH);
+ BTSR_Meters_Total_Counter_Read(UFeeder_i, HIGH);
break;
case METER_TOTAL_COUNTER_READ_HIGHEST_41:
- BTSR_Meters_Total_Counter_Read(UFeeder_ID, HIGHEST);
+ BTSR_Meters_Total_Counter_Read(UFeeder_i, HIGHEST);
break;
}
- BTSR_command_Stage[i] = Get_Read_resp;
+ BTSR[UFeeder_i].Command[i] = Get_Read_resp;
return status;//Only one command in cycle
}
}
@@ -1120,36 +1005,37 @@ uint8_t BTSR_State_Machine(uint8_t UFeeder_ID)
}
-void BTSR_Init()
+void BTSR_Settings(UFeeder_Index UFeeder_i, uint8_t Application, uint8_t Yarn_Type, uint16_t Tension, uint16_t Tension_Err, uint16_t Alarm_Time, uint8_t Length_Resolution )
{
- //if( BTSR_command_Stage[CONFIGURATION_SET_15] == 0)
- BTSR_command_Stage[CONFIGURATION_SET_15] = Set_Command;
- BTSR_command_Stage[DEVICE_INFORMATION_READ_10] = Read_Command;
-
- /////////////////////////////////////// test ////////////////////////
-
- BTSR_command_Stage[ADVANCED_TENSION_PROGRAMMING_21] = Set_Command;//test
+ BTSR[UFeeder_i].Application = SHOES;
+ BTSR[UFeeder_i].Yarn_Type = ALL_YARNS3;
+ BTSR[UFeeder_i].Tension = Tension;
+ BTSR[UFeeder_i].Tension_Err = Tension_Err;
+ BTSR[UFeeder_i].Alarm_Time = Alarm_Time;
+ BTSR[UFeeder_i].Length_Resolution = Length_Resolution;
- BTSR_command_Stage[APPLICATION_AND_YARN_TYPOLOGY_SET_27] = Set_Command;//test
-
- //if( BTSR_command_Stage[ALARM_AND_ENABLING_STATUS_READ_30] == 0)
- BTSR_command_Stage[ALARM_AND_ENABLING_STATUS_READ_30] = Read_Command;
-
- BTSR_command_Stage[ALARM_STATUS_RESET_35] = Set_Command;//test
-
- BTSR_command_Stage[RESETS_ALL_THE_COUNTERS_36] = Set_Command;//test
-
- BTSR_command_Stage[METER_TOTAL_COUNTER_READ_HIGHEST_41] = Set_Command;//test
-
- BTSR_command_Stage[METERS_TOTAL_COUNTER_RESET_HIGHEST_42] = Set_Command;//test
+ BTSR[UFeeder_i].Command[ADVANCED_TENSION_PROGRAMMING_21] = Set_Command;
+ BTSR[UFeeder_i].Command[APPLICATION_AND_YARN_TYPOLOGY_SET_27] = Set_Command;
+ BTSR[UFeeder_i].Command[ALARM_AND_ENABLING_STATUS_READ_30] = Read_Command;
+ BTSR[UFeeder_i].Command[ALARM_STATUS_RESET_35] = Set_Command;
+ BTSR[UFeeder_i].Command[RESETS_ALL_THE_COUNTERS_36] = Set_Command;
+ BTSR[UFeeder_i].Command[METER_TOTAL_COUNTER_READ_HIGHEST_41] = Set_Command;
+ BTSR[UFeeder_i].Command[METERS_TOTAL_COUNTER_RESET_HIGHEST_42] = Set_Command;
}
-//void BTSR_Test()
-//{
-// BTSR_Advanced_Style_Load(0x01, 0xABCD, 0x0102, 0x0304, FLAT_KNIT, ALL_YARNS2 );
-//}
+void BTSR_Init()
+{
+ //RUFeeder1
+ BTSR[RUFeeder1].ID = 0x01;
+ BTSR[RUFeeder1].Flip_Display = true;
+ BTSR[RUFeeder1].DirectionCCW = true;
+ BTSR[RUFeeder1].Radius_Meter = 0.03;//need to update the correct value
+ BTSR[RUFeeder1].Command[CONFIGURATION_SET_15] = Set_Command;
+ BTSR[RUFeeder1].Command[DEVICE_INFORMATION_READ_10] = Read_Command;
+ BTSR_Settings(RUFeeder1, SHOES, ALL_YARNS3, 1000, 10, 5, HIGHEST);//Test!!! --- need to move to RML
+}
diff --git a/Software/Embedded_SW/Embedded/Drivers/Uart_Comm/BTSR/BTSR.h b/Software/Embedded_SW/Embedded/Drivers/Uart_Comm/BTSR/BTSR.h
index 398c3cf25..984313c22 100644
--- a/Software/Embedded_SW/Embedded/Drivers/Uart_Comm/BTSR/BTSR.h
+++ b/Software/Embedded_SW/Embedded/Drivers/Uart_Comm/BTSR/BTSR.h
@@ -48,12 +48,117 @@ typedef enum
BTSR_RISP_OUT_OF_RANFE = 0xF9,
}BTSR_RISP_BYTE;
+typedef enum
+{
+ //BTSR_READ
+ DEVICE_INFORMATION_READ_10 ,//0
+ ADVANCED_PROGRAMMING_READ_18 ,//1
+ ADVANCED_TENSION_READ_23 ,//2
+ APPLICATION_AND_YARN_TYPOLOGY_READ_28 ,//3
+ ALARM_AND_ENABLING_STATUS_READ_30 ,//4
+ PC_LINK_READ_32 ,//5
+ METERS_TOTAL_COUNTER_READ_LOW_37 ,//6
+ METERS_TOTAL_COUNTER_READ_HIGH_39 ,//7
+ METER_TOTAL_COUNTER_READ_HIGHEST_41 ,//8
+ MAX_BTSR_READ ,//9
+
+ //BTSR_SET
+ //return 0xFA/0xFB/0xF9
+ DEVICE_CALIBRATION_11 ,//10
+ BAUDRATE_SET_13 ,//11
+ DISPLAY_LANGUAGE_SET_14 ,//12
+ CONFIGURATION_SET_15 ,//13
+ ADVANCED_CONFIGURATION_SET_17 ,//14
+ INPUT_CURRENT_CONTROL_SET_20 ,//15
+ ADVANCED_TENSION_PROGRAMMING_21 ,//16
+ ADVANCED_STYLE_LOAD_25 ,//17
+ APPLICATION_AND_YARN_TYPOLOGY_SET_27 ,//18
+ WORK_TENSION_AND_OPERATION_STATUS_SET_29 ,//19
+ ALARM_STATUS_RESET_35 ,//20
+ RESETS_ALL_THE_COUNTERS_36 ,//21
+ //return device + Function code
+ METERS_TOTAL_COUNTER_RESET_LOW_38 ,//22
+ METERS_TOTAL_COUNTER_RESET_HIGH_40 ,//23
+ METERS_TOTAL_COUNTER_RESET_HIGHEST_42 ,//24
+ MAX_BTSR_SET //25
+}BTSR_CMD;
+
+typedef enum
+{
+ RUFeeder1 = 0,
+ //RUFeeder2 = 1,
+ //RUFeeder3 = 2,
+ //RUFeeder4 = 3,
+
+ MaxUFeeders,
+}UFeeder_Index;
+
+//BTSR_ALARM_AND_ENABLING_STATUS_READ
+typedef struct
+{
+ bool D0 : 1;//0
+ bool D1 : 1;//1
+ bool D2 : 1;//2
+ bool D3 : 1;//3
+ bool D4 : 1;//4
+ bool D5 : 1;//5
+ bool D6 : 1;//6
+ bool D7 : 1;//7
+}BITS;
+
+
+typedef union
+{
+ BITS Bit[6];
+ uint8_t Byte[6];
+}BTSR_ALARM_AND_ENABLING_STATUS_READ;
+
+typedef union
+{
+ struct
+ {
+ uint8_t SW_VERSION;//0XDE
+ uint8_t SW_UNDER_VERSION;//0X01
+ uint8_t BYTE_U0X55;//0X55
+ uint8_t BYTE_F0X46;//0X46
+ uint8_t PRODUCT_CODE;//0X13
+ uint8_t TENSION_SENSOR_END_SCALE;//0X65
+ uint8_t BOARD_HW_VERSION;//0X02
+ uint8_t BOOTLOADER_SW_VERSION;//0X0A
+ uint8_t BYTE_0X32;//0X32
+ uint8_t SPARE;//0X00
+ uint8_t CHECKSUM_LSB;//0X60
+ uint8_t CHECKSUM_MSB;//0X01
+ }Byte;
+uint8_t Buf[12];
+}BTSR_DEVICE_INFORMATION_READ;
+
+typedef struct
+{
+ uint8_t ID;
+ bool DirectionCCW;
+ bool Flip_Display;
+ float Radius_Meter;
+ uint8_t Command[MAX_BTSR_SET];
+ uint8_t Application;
+ uint8_t Yarn_Type;
+ uint16_t Tension;
+ uint16_t Tension_Err;
+ uint16_t Alarm_Time;
+ uint8_t Length_Resolution;
+
+ float LengthInMeter;
+ BTSR_ALARM_AND_ENABLING_STATUS_READ Status;
+ BTSR_DEVICE_INFORMATION_READ Info;
+
+}BTSR_t;
+
extern uint8_t BTSR_RX_Buff[Max_BTSR_RX_Bytes];
unsigned long UARTStatus();
bool BTSR_Change_Comm_Mode(uint8_t Mode);
-uint8_t BTSR_Auto_Identify(uint8_t BTSR_Id);//AUTOMATIC IDENTIFICATION PROCEDURE (IDENTIFY)
-uint8_t BTSR_Set_Parmeters(uint8_t BTSR_Id, uint8_t Application, uint8_t Yarn_Type );
+uint8_t BTSR_Auto_Identify(uint8_t BTSR_ID);//AUTOMATIC IDENTIFICATION PROCEDURE (IDENTIFY)
+uint8_t BTSR_Set_Parmeters(uint8_t BTSR_ID, uint8_t Application, uint8_t Yarn_Type );
uint8_t BTSR_Send_Buf(uint8_t *Buf, uint8_t size);
uint8_t BTSR_RECEIVE_Buf(uint8_t *Buf, uint8_t size);
@@ -62,7 +167,7 @@ uint8_t Check_Received_CheckSum(uint8_t CODE_STRING, uint8_t Function_Code, uint
uint8_t BTSR_Send_Buf_3xADD1(uint8_t *Buf, uint8_t size);//Only for commands with 3 bytes with Address 1 (0x06/0xFD)
void InitConsole_BTSR_UART4(int32_t ui32SysClock);
-uint8_t BTSR_State_Machine(uint8_t UFeeder_ID);
+uint8_t BTSR_State_Machine(UFeeder_Index UFeeder_i);
void BTSR_Init();
#endif /* DRIVERS_UART_COMM_BTSR_BTSR_H_ */
diff --git a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c
index 9d784112e..13cd797a7 100644
--- a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c
+++ b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c
@@ -734,7 +734,7 @@ uint32_t MillisecLowLoop(uint32_t tick)
#ifdef USE_UART4_FOR_BTSR
//call every 100mSec
- BTSR_State_Machine(0x01);
+ BTSR_State_Machine(RUFeeder1);
#endif
}
if (Gradient_Tick)
diff --git a/Software/Embedded_SW/Embedded/Modules/General/Safety.c b/Software/Embedded_SW/Embedded/Modules/General/Safety.c
index a70866fd6..725316453 100644
--- a/Software/Embedded_SW/Embedded/Modules/General/Safety.c
+++ b/Software/Embedded_SW/Embedded/Modules/General/Safety.c
@@ -84,7 +84,7 @@ uint32_t Safety_Main_State(uint32_t IfIndex, uint32_t BusyFlag)
}
else
{
- if (Get_COVER_1_State(DryerDoor))
+ if (Get_COVER_1_State(DryerDoor))//"1" - Door open
{
//report and handle dryer door open
AlarmHandlingSetAlarm(EVENT_TYPE__DRYER_DOOR_OPEN, true);