diff options
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); |
