diff options
| author | Roy Ben Shabat <Roy.mail.net@gmail.com> | 2021-01-05 02:30:42 +0200 |
|---|---|---|
| committer | Roy Ben Shabat <Roy.mail.net@gmail.com> | 2021-01-05 02:30:42 +0200 |
| commit | 0567570ce97b80f264c7b9f4a632b99eb80c1a17 (patch) | |
| tree | 0c2af79f6b851d3e4dcc6624ece77a2953a2ee6c /Software/Embedded_SW | |
| parent | de4b469ee790b837f2ecf1e0c549a54da79f5667 (diff) | |
| parent | 25ab46e3ff07e9f15a5e04cc671280cf69d6f99d (diff) | |
| download | Tango-0567570ce97b80f264c7b9f4a632b99eb80c1a17.tar.gz Tango-0567570ce97b80f264c7b9f4a632b99eb80c1a17.zip | |
Merge branch 'master' of https://twinetfs.visualstudio.com/Tango/_git/Tango
Diffstat (limited to 'Software/Embedded_SW')
21 files changed, 233 insertions, 61 deletions
diff --git a/Software/Embedded_SW/Embedded/Common/Sys_PinOut_Config/MCU_MAIN_pinout.c b/Software/Embedded_SW/Embedded/Common/Sys_PinOut_Config/MCU_MAIN_pinout.c index fcede699f..921d5f07f 100644 --- a/Software/Embedded_SW/Embedded/Common/Sys_PinOut_Config/MCU_MAIN_pinout.c +++ b/Software/Embedded_SW/Embedded/Common/Sys_PinOut_Config/MCU_MAIN_pinout.c @@ -865,7 +865,7 @@ PinoutSet(void) #ifdef USE_UART4_FOR_BTSR // Configure the GPIO Pin PR0 for BTSR RS485 UART - Set as output to change to uart4 RS485 Direction: ROM_GPIOPinTypeGPIOOutput(GPIO_PORTR_BASE, GPIO_PIN_0); - ROM_GPIOPinWrite(GPIO_PORTR_BASE, GPIO_PIN_0, 0); + ROM_GPIOPinWrite(GPIO_PORTR_BASE, GPIO_PIN_0, 1);//RX 1 (remove the error CAB ERR on the BTSR screen?) #endif // // Configure the GPIO Pin Mux for PR1 diff --git a/Software/Embedded_SW/Embedded/Common/Sys_PinOut_Config/Pin_config.c b/Software/Embedded_SW/Embedded/Common/Sys_PinOut_Config/Pin_config.c index 10fbdfafa..4e7e5364d 100644 --- a/Software/Embedded_SW/Embedded/Common/Sys_PinOut_Config/Pin_config.c +++ b/Software/Embedded_SW/Embedded/Common/Sys_PinOut_Config/Pin_config.c @@ -1,5 +1,6 @@ #include <stdbool.h> #include <stdint.h> +#include <DataDef.h> #include <driverlib/gpio.h> #include <inc/hw_memmap.h> diff --git a/Software/Embedded_SW/Embedded/Communication/Connection.c b/Software/Embedded_SW/Embedded/Communication/Connection.c index ec15c1596..c33f3710c 100644 --- a/Software/Embedded_SW/Embedded/Communication/Connection.c +++ b/Software/Embedded_SW/Embedded/Communication/Connection.c @@ -193,7 +193,7 @@ void KeepAliveRequestFunc(MessageContainer* requestContainer) //keep_alive_request__free_unpacked(request,NULL); } -int KARequestId = 0x01010101; +int KARequestId = 0x41414141; char KARequestToken[36+1]; void KeepAliveResponseFunc(MessageContainer* requestContainer) { @@ -215,7 +215,7 @@ void KeepAliveRequest1Second(void) KeepAliveResponse request = KEEP_ALIVE_REQUEST__INIT; - strcpy(KARequestToken,"Happy days are coming to us, soon"); + strcpy(KARequestToken,"Happy days are coming to us, soonZYX"); memcpy(&KARequestToken[32],&KARequestId,sizeof(KARequestId)); KARequestId++; //Report("keepalive request sent",__FILE__,__LINE__,KARequestId,RpWarning,msec_millisecondCounter, 0); diff --git a/Software/Embedded_SW/Embedded/DataDef.h b/Software/Embedded_SW/Embedded/DataDef.h index 3115f6828..3b8a71444 100644 --- a/Software/Embedded_SW/Embedded/DataDef.h +++ b/Software/Embedded_SW/Embedded/DataDef.h @@ -36,7 +36,15 @@ #endif //#define BTSR_ROTATED_WINDER_TFU -//#define USE_UART4_FOR_BTSR // need change in FRPGA FPGA_1 yy > 0x20 + jumpers in main board need to read HW Version +//#define UFEEDER_BTSR +#ifdef UFEEDER_BTSR +#define BTSR_NO_FEEDER_TFU +#define BTSR_NO_PULLER_TFU +#define BTSR_ROTATED_WINDER_TFU +#endif + +//#define USE_UART4_FOR_BTSR // need change in FRPGA FPGA_1 yy > 0x20 + jumpers in main board need to read HW Version - no need when working only with stubs +//#define FORCE_BTSR_CARD_0023 // only for testing, include changes for BTSR without ASSY ID. use it with USE_UART4_FOR_BTSR //#define USE_RFID_STUB //stub only. to use it undef USE_RFID_LOGIC //#define RFID_READ_ONLY // diff --git a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA.c b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA.c index 0b308408c..62d283f0b 100644 --- a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA.c +++ b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA.c @@ -358,8 +358,12 @@ uint32_t Get_Dryer_Fan_Tacho() } uint32_t Read_Dryer_Fan_Tacho() { +#ifndef EVALUATION_BOARD Drayer_Fan_Speed_RPM = Calculate_Tacho_Fan_Speed(FPGA_Freq, 12, F1_Prescaler1_reg5, F1_Tacho_reg8); return Drayer_Fan_Speed_RPM; +#else + return 100; +#endif } void Control_Dryer_Fan_PWM(uint8_t PWM_Command_Precent)// 0 - 100% 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 e9c674b25..360eb3351 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 @@ -482,9 +482,10 @@ uint32_t ActivateCleanerPump() uint32_t DeActivateCleanerPump() { - +#ifndef EVALUATION_BOARD F2_CTRL_Reg.ushort &= ~CLEANER_PUMP_SSR3_CTRL; F2_CTRL = F2_CTRL_Reg.ushort; +#endif return OK; } //---------------------------------- @@ -494,16 +495,20 @@ void Power_Off()//Power Down #ifdef WATCHDOG ROM_WatchdogResetDisable(WATCHDOG0_BASE); #endif +#ifndef EVALUATION_BOARD F2_CTRL_Reg.ushort |= PDOWN_RL1_CTRL; F2_CTRL = F2_CTRL_Reg.ushort; +#endif } void Power_Reset()// Resets the MCU { utilsStoreLocalTime(); +#ifndef EVALUATION_BOARD F3_SW_RESET_reg &= ~BIT0; SysCtlDelay(1000); F3_SW_RESET_reg |= BIT0; +#endif SysCtlReset(); } @@ -511,15 +516,19 @@ void Power_Reset()// Resets the MCU uint32_t ActivateChiller() //WHS Cooler / WHS DX Cooler { +#ifndef EVALUATION_BOARD F2_CTRL_Reg.ushort |= CHILLER_SSR9_CTRL; F2_CTRL = F2_CTRL_Reg.ushort; +#endif return OK; } uint32_t DeActivateChiller() //WHS Cooler / WHS DX Cooler { +#ifndef EVALUATION_BOARD F2_CTRL_Reg.ushort &= ~CHILLER_SSR9_CTRL; F2_CTRL = F2_CTRL_Reg.ushort; +#endif return OK; } @@ -1231,13 +1240,13 @@ char Read_HW_Version(unsigned char *Brd_ID, unsigned char *Assy_ID) if (ROM_GPIOPinRead(GPIO_PORTJ_BASE, GPIO_PIN_4) == GPIO_PIN_4) *Brd_ID |= 0x01; - if (ROM_GPIOPinRead(GPIO_PORTP_BASE, GPIO_PIN_3) == GPIO_PIN_3) + if (ROM_GPIOPinRead(GPIO_PORTP_BASE, GPIO_PIN_3) == GPIO_PIN_3)//ASSY_ID3 *Assy_ID |= 0x08; - if (ROM_GPIOPinRead(GPIO_PORTJ_BASE, GPIO_PIN_7) == GPIO_PIN_7) + if (ROM_GPIOPinRead(GPIO_PORTP_BASE, GPIO_PIN_5) == GPIO_PIN_5)//ASSY_ID2 *Assy_ID |= 0x04; - if (ROM_GPIOPinRead(GPIO_PORTS_BASE, GPIO_PIN_1) == GPIO_PIN_1) + if (ROM_GPIOPinRead(GPIO_PORTS_BASE, GPIO_PIN_1) == GPIO_PIN_1)//ASSY_ID1 *Assy_ID |= 0x02; - if (ROM_GPIOPinRead(GPIO_PORTP_BASE, GPIO_PIN_5) == GPIO_PIN_5) + if (ROM_GPIOPinRead(GPIO_PORTJ_BASE, GPIO_PIN_7) == GPIO_PIN_7)//ASSY_ID0 *Assy_ID |= 0x01; return PASSED; diff --git a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_SSI_Comm.c b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_SSI_Comm.c index 765ba1a7a..36a349682 100644 --- a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_SSI_Comm.c +++ b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_SSI_Comm.c @@ -132,6 +132,7 @@ uint8_t FPGA_SSI_Dryer_ENC_Transnit() uint32_t FPGA_SSI_Dryer_ENC_Receive() { +#ifndef EVALUATION_BOARD INT2SHORT Int2Short; unsigned int temp; @@ -147,6 +148,6 @@ uint32_t FPGA_SSI_Dryer_ENC_Receive() Dryer_ENC.Gen_status = temp & 0x3; temp = temp >> 2; Dryer_ENC.Position = (temp & 0x3FFF); - +#endif return OK; } diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/DAC/Blower.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/DAC/Blower.c index 57b57a41d..307d815ee 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/DAC/Blower.c +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/DAC/Blower.c @@ -156,8 +156,10 @@ uint32_t Turn_the_Blower_On() voltage = Default_Voltage; if (WHS_Type == WHS_TYPE_UNKNOWN) { +#ifndef EVALUATION_BOARD status = Write_Control_Register(); status |= Write_DAC_and_Input_Register(DAC_mV2Bits(Default_Voltage)); +#endif } else //new WHS { @@ -177,7 +179,9 @@ uint32_t Control_Voltage_To_Blower(uint32_t mV) } if (WHS_Type == WHS_TYPE_UNKNOWN) { +#ifndef EVALUATION_BOARD status |= Write_DAC_and_Input_Register(DAC_mV2Bits(mV)); +#endif } else //new WHS { @@ -196,7 +200,9 @@ uint32_t Turn_the_Blower_Off() if (WHS_Type == WHS_TYPE_UNKNOWN) { +#ifndef EVALUATION_BOARD status |= Write_DAC_and_Input_Register(0); +#endif } else //new WHS { diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/RFID_NFC/I2C_IFS_Mux.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/RFID_NFC/I2C_IFS_Mux.c index c04cabc4a..0593342b1 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/RFID_NFC/I2C_IFS_Mux.c +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/RFID_NFC/I2C_IFS_Mux.c @@ -137,7 +137,7 @@ uint32_t Reset_and_Check_IFS_Availability(PANEL_BUTTON_OR_CRAT_ID Cart_ID) // IFS_Availability[Cart_ID-1] = IFS_RECOGNIZED; // } #else - IFS_Availability[Cart_ID-1] = WITHOUT_IFS; + IFS_Availability[Cart_ID-1] = IFS_AVAILABILITY_UNKNOWN; #endif return status; diff --git a/Software/Embedded_SW/Embedded/Drivers/Motors/MotorActions.c b/Software/Embedded_SW/Embedded/Drivers/Motors/MotorActions.c index e90f0622e..00fd2b440 100644 --- a/Software/Embedded_SW/Embedded/Drivers/Motors/MotorActions.c +++ b/Software/Embedded_SW/Embedded/Drivers/Motors/MotorActions.c @@ -317,7 +317,7 @@ uint32_t MotorRunCallBackFunction(uint32_t IfIndex, uint32_t ReadValue) //TODO if (failCounter>=8) { Report("arm stopped",__FILE__,failCounter,encoder,RpWarning,temp,0); - MotorStop(HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM,Hard_Hiz); + MotorStop(HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM,Hard_Stop); RunningContinues = false; } } diff --git a/Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.c b/Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.c index 71d26888d..20c6d5a00 100644 --- a/Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.c +++ b/Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.c @@ -22,7 +22,7 @@ #include "PMR/EmbeddedParameters/MainCardStoredDataResponse.pb-c.h" #include "PMR/EmbeddedParameters/MainCardStoredDataRequest.pb-c.h" #include "PMR/EmbeddedParameters/MainCardStoredItem.pb-c.h" - +#include "PMR/Printing/BTSRParameters.pb-c.h" uint32_t E2Prom_Data[MAX_EEPROM_STORAGE] = {0,0,0,0,0,0}; uint32_t MCU_E2PromProgram(int Address,uint32_t Data) @@ -86,13 +86,15 @@ void MCU_E2PromUpdateResetReason(int i) uint32_t Head; uint32_t RESC = SysCtlResetCauseGet(); +#ifndef EVALUATION_BOARD + EEPROMRead(&Head,EEPROM_RESET_REASON_HEAD_ADDRESS, 4); if (Head>=EEPROM_RESET_REASON_MAX_DATA) Head=0; Head++; RESC+=(i*0x1000); EEPROMProgram(&Head, EEPROM_RESET_REASON_HEAD_ADDRESS, 4); EEPROMProgram(&RESC, (EEPROM_RESET_REASON_HEAD_ADDRESS+(Head*4)), 4); - +#endif } /*************************************************/ @@ -360,4 +362,53 @@ void MainCardEEpromWriteRequestFunc(MessageContainer* requestContainer) stub_main_card_eeprom_write_request__free_unpacked(request,NULL); } +uint32_t BtsrSaveParamsToEeprom(void *Data) +{ + BTSRParameters* BtsrPrameters = Data; + BTSRParameters ExistingBtsrPrameters ; + uint32_t status = 0; + float data; + + BtsrReadParamsFromEeprom(&ExistingBtsrPrameters); + if (memcmp(BtsrPrameters,&ExistingBtsrPrameters,sizeof(ExistingBtsrPrameters))) + { + data = BtsrPrameters->feedingtension; + status |= MCU_E2PromProgram(EEPROM_BTSR_FEEDING_TENSION, data); + status |= MCU_E2PromProgram(EEPROM_BTSR_TYPE, BtsrPrameters->btsryarntype); + status |= MCU_E2PromProgram(EEPROM_BTSR_APPLICATION, BtsrPrameters->btsrapplicationtype); + data = BtsrPrameters->threadlengthfactor; + status |= MCU_E2PromProgram(EEPROM_BTSR_LENGTH_OFFSET, data); + data = BtsrPrameters->tensionerror; + status |= MCU_E2PromProgram(EEPROM_BTSR_TENSION_ERROR, data); + data = BtsrPrameters->spooltension; + status |= MCU_E2PromProgram(EEPROM_BTSR_SPOOL_TENSION, data); + data = BtsrPrameters->exittension; + status |= MCU_E2PromProgram(EEPROM_BTSR_EXIT_TENSION, data); + } + return status; +} + +uint32_t BtsrReadParamsFromEeprom(void *Data) +{ + BTSRParameters* BtsrPrameters = Data; + uint32_t status = 0; + float data; + status |= MCU_E2PromRead(EEPROM_BTSR_FEEDING_TENSION, &data); + BtsrPrameters->feedingtension = data; + status |= MCU_E2PromRead(EEPROM_BTSR_TYPE, &data); + BtsrPrameters->btsryarntype = data; + status |= MCU_E2PromRead(EEPROM_BTSR_APPLICATION, &data); + BtsrPrameters->btsrapplicationtype = data; + status |= MCU_E2PromRead(EEPROM_BTSR_LENGTH_OFFSET, &data); + BtsrPrameters->threadlengthfactor = data; + status |= MCU_E2PromRead(EEPROM_BTSR_TENSION_ERROR, &data); + BtsrPrameters->tensionerror = data; + status |= MCU_E2PromRead(EEPROM_BTSR_SPOOL_TENSION, &data); + BtsrPrameters->spooltension = data; + status |= MCU_E2PromRead(EEPROM_BTSR_EXIT_TENSION, &data); + BtsrPrameters->exittension = data; + Report("BtsrReadParamsFromEeprom",__FILE__,__LINE__,(int)(BtsrPrameters->feedingtension*1000),RpWarning,(int)(BtsrPrameters->tensionerror*1000),(int)(BtsrPrameters->exittension*1000)); + Report("BtsrReadParamsFromEeprom",__FILE__,__LINE__,(int)(BtsrPrameters->btsrapplicationtype),RpWarning,(int)(BtsrPrameters->btsryarntype),(int)(BtsrPrameters->threadlengthfactor*1000)); + return status; +} diff --git a/Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.h b/Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.h index aee812973..24f229b2c 100644 --- a/Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.h +++ b/Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.h @@ -47,6 +47,13 @@ typedef enum { EEPROM_PRESSURE_SENSOR_V0_0, EEPROM_PRESSURE_SENSOR_V0_1, EEPROM_DRIER_LOADING_ARM_ANGLE, + EEPROM_BTSR_FEEDING_TENSION, + EEPROM_BTSR_EXIT_TENSION, + EEPROM_BTSR_TYPE, + EEPROM_BTSR_APPLICATION, + EEPROM_BTSR_TENSION_ERROR, + EEPROM_BTSR_LENGTH_OFFSET, + EEPROM_BTSR_SPOOL_TENSION, MAX_EEPROM_STORAGE }EEPROM_STORAGE_USAGE_ENUM; #define MAX_SERIAL_NUM_LEN 5 //5*4 bytes @@ -89,6 +96,9 @@ void MainCardEEpromReadRequestFunc(MessageContainer* requestContainer); uint32_t MCU_E2PromEmbeddedVersionProgram(void); uint32_t MCU_E2PromEmbeddedVersionRead(); +uint32_t BtsrReadParamsFromEeprom(void *); +uint32_t BtsrSaveParamsToEeprom(void *); + extern char Serial[21]; diff --git a/Software/Embedded_SW/Embedded/Main.c b/Software/Embedded_SW/Embedded/Main.c index 9c647e847..5d7def1d6 100644 --- a/Software/Embedded_SW/Embedded/Main.c +++ b/Software/Embedded_SW/Embedded/Main.c @@ -117,6 +117,8 @@ //***************************************************************************** static volatile uint32_t g_ui32SysTickCount = 0; +unsigned char Brd_ID = 0, Assy_ID = 0; + // Flags used to pass commands from interrupt context to the main loop. static volatile uint32_t g_ui32Flags; @@ -238,7 +240,7 @@ int main(void) { FRESULT Fresult = FR_OK; time_t time_store = 0; - unsigned char Brd_ID = 0, Assy_ID = 0; + // Enable interrupts to the processor. // ROM_IntMasterDisable(); @@ -314,6 +316,7 @@ int main(void) HibernateCalendarSet(&LocalTime); } OpenLogFile(); +#ifndef EVALUATION_BOARD Data = MCU_E2PromEmbeddedVersionRead(); memcpy (&Version,&Data,4); i = memcmp(&Version,&_gTangoVersion,4); @@ -325,7 +328,7 @@ int main(void) MCU_E2PromProgram(EEPROM_INIT_FAILURE_COUNTER,0); } MCU_E2PromRead(EEPROM_INIT_FAILURE_COUNTER,&InitFailures); - +#endif Init_All_I2C(); #ifndef EVALUATION_BOARD Block_Main_MUX_TCA9548A_0xE4();//unused, same i2c as head and whs cards @@ -356,21 +359,6 @@ int main(void) I2C_DispRFIDTask_Init();//I2C Task for dispensers & RFID - - Read_HW_Version(&Brd_ID, &Assy_ID); - - -#ifdef USE_UART4_FOR_BTSR - if(Assy_ID > 0) - { - BTSR_Init(); - } - else - { - ReportWithPackageFilter(ThreadFilter,"BTSR - ERROR: Wrong HW Version",__FILE__,__LINE__,(int)Brd_ID,RpError,(int)Assy_ID,0); - } -#endif - #if defined(USE_RFID_LOGIC) || defined(USE_RFID_STUB) //Trigger_RFID_Init(); //Init_IFS();//must be done after FPGA_Init Init_IFS(); @@ -408,9 +396,26 @@ int main(void) Trigger_RS485_Direction_Init();//init i/o } - #ifdef USE_UART4_FOR_BTSR - InitConsole_BTSR_UART4(ui32SysClock); - #endif + Read_HW_Version(&Brd_ID, &Assy_ID); + + if(Assy_ID > 4)//Bit2 = 1 for BTSR + { + InitConsole_BTSR_UART4(ui32SysClock); + + #ifdef USE_UART4_FOR_BTSR + BTSR_Init(); + #endif + } + else + { + #ifdef FORCE_BTSR_CARD_0023 + InitConsole_BTSR_UART4(ui32SysClock); + BTSR_Init(); + #endif + + ReportWithPackageFilter(ThreadFilter,"HW does NOT support BTSR",__FILE__,__LINE__,(int)Brd_ID,RpError,(int)Assy_ID,0); + } + //EMAC_initEMAC(); ControlInit(); diff --git a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c index c5fffff60..f9401c248 100644 --- a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c +++ b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c @@ -618,7 +618,7 @@ uint16_t realtimetest[101]; uint16_t dbgflag[50]; uint32_t dbttime[50]; bool Ten_msTick, Fifty_msTick, Hundred_msTick , m20msecTick,m90msecTick, Onesecond_Tick,Tensecond_Tick,OneMinute_Tick,TenMinutes_Tick,OneHourTick,Gradient_Tick; -bool O700Millisecond_Tick,O200Millisecond_Tick,O400Millisecond_Tick,O500Millisecond_Tick,O600Millisecond_Tick,O800Millisecond_Tick; +bool O700Millisecond_Tick,O200Millisecond_Tick,O400Millisecond_Tick,O500Millisecond_Tick,O600Millisecond_Tick,O800Millisecond_Tick,m50msecTick; uint32_t MillisecLowLoop(uint32_t tick) { @@ -636,7 +636,7 @@ uint32_t MillisecLowLoop(uint32_t tick) Fifty_msTick = (tick%eHundredMillisecond == 40) ?true:false; //eFiftyMillisecond Hundred_msTick = (tick%eHundredMillisecond == 0) ?true:false; m20msecTick = (tick%eHundredMillisecond == 20) ?true:false; - //m70msecTick = (tick%eHundredMillisecond == 70) ?true:false; + m50msecTick = (tick%50== 0) ?true:false; m90msecTick = (tick%eHundredMillisecond == 90) ?true:false; O700Millisecond_Tick = (tick%eOneSecond == 700) ?true:false; O200Millisecond_Tick = (tick%eOneSecond == 200) ?true:false; @@ -672,6 +672,14 @@ uint32_t MillisecLowLoop(uint32_t tick) dbgflag[2]++; dbttime[2] = msec_millisecondCounter; Read_Dryer_ENC_Position(); + dbgflag[3]++; + } + if (m50msecTick) //50 milli + { +#ifdef USE_UART4_FOR_BTSR + //call every 50mSec + BTSR_State_Machine(RUFeeder1); +#endif } if (m20msecTick) { @@ -682,11 +690,6 @@ uint32_t MillisecLowLoop(uint32_t tick) WHS_Read_GPI_Registers(); Trigger_PT100_Read();//call every 50mSec (minimum delay 30mSec) //Set_HeadCard_PT100();//call every 50mSec (minimum delay 30mSec) - - #ifdef USE_UART4_FOR_BTSR - //call every 50mSec - BTSR_State_Machine(RUFeeder1); - #endif } if (m90msecTick) { diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c index 19507775e..eb5f12136 100644 --- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c +++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c @@ -859,6 +859,11 @@ bool AdjustDispenserSpeedToPressure(int DispenserId, double RefMaxPressure,doubl TargetNumberOfStepsPreRun = InitialDispenserTimeout; MaximalPressurePreRun = InitialDispenserPressure; + if(Head_Type == HEAD_TYPE_ARC) + { + MotorMovetoLimitSwitch(HARDWARE_MOTOR_TYPE__MOTO_DH_LID,1-MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_DH_LID].directionthreadwize, 30, Motor_Id_to_LS_IdDown[HARDWARE_MOTOR_TYPE__MOTO_DH_LID], NULL,30000); + } + for (Motor_i = 0;Motor_i < MAX_SYSTEM_DISPENSERS;Motor_i++) { TimerMotors_t HW_Motor_Id = DispenserIdToMotorId[Motor_i]; @@ -1376,8 +1381,8 @@ uint32_t IDSCheckSegmentData(void *SegmentDetails, int SegmentId) //for (Brush_i=JobBrushStopId;Brush_i<PrevSegment->brushstopscount;Brush_i++) #bug 3348 - unhandled jobstops stops too soon for (Brush_i=JobBrushStopId;Brush_i<PrevSegment->brushstopscount;Brush_i++) { - if (status == ERROR) - break; + //if (status == ERROR) + // break; tFileBrushStop = GetNextBrushStopFromJobFile(); if (tFileBrushStop) { diff --git a/Software/Embedded_SW/Embedded/Modules/IFS/ifs.c b/Software/Embedded_SW/Embedded/Modules/IFS/ifs.c index 2c67a623b..5b0cf9cb7 100644 --- a/Software/Embedded_SW/Embedded/Modules/IFS/ifs.c +++ b/Software/Embedded_SW/Embedded/Modules/IFS/ifs.c @@ -49,7 +49,7 @@ double MidTankEmptyLimit = MidTank_Pressure_EMPTY; MidTankStateEnum midTankState = 0; char CartridgeRequestToken[36+1]; -int CartridgeRequestId = 0x01010101; +int CartridgeRequestId = 0x31313131; bool RdInkCartridgeSensor() { @@ -199,7 +199,7 @@ uint32_t ReadInkCartridgeData() CartridgeValidationRequest ValidationReq = CARTRIDGE_VALIDATION_REQUEST__INIT; Cartridge CartridgeData; - strcpy(CartridgeRequestToken,"Happy days are coming to us, soon"); + strcpy(CartridgeRequestToken,"Happy days are coming to us, soonXXX"); memcpy(&CartridgeRequestToken[32],&CartridgeRequestId,sizeof(CartridgeRequestId)); CartridgeRequestId++; diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c b/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c index ffbb504db..2b1e52134 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c @@ -320,8 +320,21 @@ { TimeoutsCounter = 0; load.color = fastBILNK; - usnprintf(LoadErrorMsg, 100, "/Stage %s - %s timeout",LoadStagesStr[LoadStages], MotorStr[MotorId]); - Report(LoadErrorMsg,__FILE__,__LINE__,LoadStages,RpWarning,TimeoutsCounter,0); + if (LoadStages == THREAD_LOAD_INITIAL_TENSION) + { + usnprintf(LoadErrorMsg, 100, "/Stage %s - no cone in winder!!",LoadStagesStr[LoadStages]); + Report(LoadErrorMsg,__FILE__,__LINE__,LoadStages,RpWarning,TimeoutsCounter,0); + } + else if (LoadStages == THREAD_LOAD_JOG_THREAD) + { + usnprintf(LoadErrorMsg, 100, "/Stage %s - Dryer door is open!!",LoadStagesStr[LoadStages]); + Report(LoadErrorMsg,__FILE__,__LINE__,LoadStages,RpWarning,TimeoutsCounter,0); + } + else + { + usnprintf(LoadErrorMsg, 100, "/Stage %s - %s timeout",LoadStagesStr[LoadStages], MotorStr[MotorId]); + Report(LoadErrorMsg,__FILE__,__LINE__,LoadStages,RpWarning,TimeoutsCounter,0); + } LoadStatus = ERROR; ThreadLoadingReport(); @@ -447,13 +460,13 @@ { REPORT_MSG(LoadStages, "Thread Load State Machine step Thread_Load_Initial_Tension"); load.color = BLINK; + CallbackCounter++; if (FPGA_Read_limit_Switches(GPI_SW_SPOOL_EXISTS)==LIMIT) { REPORT_MSG(LIMIT, "No cone in winder"); Thread_Load_HomingCallback(HARDWARE_MOTOR_TYPE__MOTO_WINDER,NO_LIMIT); //return ERROR; } - CallbackCounter++; MotorMovetoBreakSensor (HARDWARE_MOTOR_TYPE__MOTO_WINDER,MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_WINDER].directionthreadwize, 500, Thread_Load_HomingCallback,10000); return OK; @@ -805,6 +818,13 @@ //Jog Thread Shortly To Make Sure Spool Is Running. Report End Of Loading { REPORT_MSG(LoadStages, "Thread Load State Machine step Thread_Load_Jog_Thread"); + if (Get_COVER_1_State(DryerDoor)) + { + CallbackCounter++; + REPORT_MSG(LIMIT, "Dryer door open"); + Thread_Load_HomingCallback(HARDWARE_MOTOR_TYPE__MOTO_WINDER,NO_LIMIT); + return ERROR; + } keepfeedertension = feedertension; ProcessParametersKeep.feedertension = 0.0; ThreadJoggingFunc(20); diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c index 87ad612ba..697f1bd5d 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c @@ -36,7 +36,7 @@ #include "Modules/AlarmHandling/AlarmHandling.h" #include "Control/MillisecTask.h" #include "drivers/Flash_ram/MCU_E2Prom.h" - +#include "Drivers/Uart_Comm/BTSR/BTSR.h" #include "drivers/SSI_Comm/SSI_Comm.h" ////////////////////////////////State machine operation//////////////////////////////////// @@ -79,6 +79,7 @@ double LengthCalculationMultiplier; uint32_t PoolerPreviousPosition = 0, PoolerCurrentPosition = 0; double PoolerTotalProcessedLength = 0.0; double PoolerLengthCalculationMultiplier; +double threadlengthfactor = 1.0; double TempPoolerTotalProcessedLength = 0.0; double TempTotalProcessedLength = 0.0; @@ -109,6 +110,7 @@ void SendSegmentFail(void); double KeepNormalizedError = 0; bool ThreadControlActive = false; +extern BTSR_t BTSR[MaxUFeeders]; ////////////////////////Slow Motor State//////////////////////////////////// //uint32_t ThreadPreSegmentState(void *JobDetails); @@ -337,9 +339,13 @@ uint32_t PoolerThreadLengthCBFunction(uint32_t IfIndex, uint32_t ReadValue) }**/ //} -#ifdef BTSR_NO_PULLER_TFU - if (CurrentControlledSpeed[WINDER_MOTOR]>100) - length = dyeingspeed/10; +#ifdef UFEEDER_BTSR + length = BTSR[RUFeeder1].LengthInMeter * threadlengthfactor; +#else + #ifdef BTSR_NO_PULLER_TFU + if (CurrentControlledSpeed[WINDER_MOTOR]>100) + length = dyeingspeed/10; + #endif #endif PoolerTotalProcessedLength+= (length/100); TempPoolerTotalProcessedLength = PoolerTotalProcessedLength; @@ -1080,6 +1086,16 @@ uint32_t ThreadPrepareState(void *JobDetails) initialpos = 0xFFFF; Poolerinitialpos = 0xFFFF; PrepareState = true; + +#ifdef UFEEDER_BTSR + int application = JobTicket->btsrparameters->btsrapplicationtype; + int type = JobTicket->btsrparameters->btsryarntype; + uint16_t tension = (uint16_t)(JobTicket->btsrparameters->feedingtension*10); + uint16_t tension_err = (uint16_t)(JobTicket->btsrparameters->tensionerror*10); + uint16_t alarm_time = 5; //no parameter + threadlengthfactor = JobTicket->btsrparameters->threadlengthfactor; +#endif + AlarmHandlingSetAlarm(EVENT_TYPE__THREAD_BREAK,false); AlarmHandlingSetAlarm(EVENT_TYPE__THREAD_TENSION_CONTROL_FAILURE_PULLER_DANCER,false); AlarmHandlingSetAlarm(EVENT_TYPE__THREAD_TENSION_CONTROL_FAILURE_FEEDER_DANCER,false); @@ -1097,8 +1113,18 @@ uint32_t ThreadPrepareState(void *JobDetails) IntersegmentLength = JobTicket->intersegmentlength; PrepareWaitCount = 0; + +#ifdef UFEEDER_BTSR + status = ThreadPrepare_Tension (HARDWARE_DANCER_TYPE__LeftDancer, JobTicket->btsrparameters->exittension); + ReportWithPackageFilter(ThreadFilter,"ThreadPrepare_Tension Winder",__FILE__,HARDWARE_DANCER_TYPE__LeftDancer,PrepareWaitCount,RpWarning,(int)JobTicket->btsrparameters->exittension,0); + BTSR_RML_Settings(RUFeeder1, application, type, tension, tension_err, alarm_time); + BTSR_Reset_Length(RUFeeder1, HIGHEST); + BTSR_Read_Length(RUFeeder1, HIGHEST); + ReportWithPackageFilter(ThreadFilter,"ThreadPrepare_Tension BTSR",__FILE__,application,type,RpError,tension,tension_err); +#else status = ThreadPrepare_Tension (HARDWARE_DANCER_TYPE__LeftDancer, windertension); ReportWithPackageFilter(ThreadFilter,"ThreadPrepare_Tension Winder",__FILE__,HARDWARE_DANCER_TYPE__LeftDancer,PrepareWaitCount,RpWarning,(int)windertension,0); +#endif #ifndef BTSR_NO_PULLER_TFU status = ThreadPrepare_Tension (HARDWARE_DANCER_TYPE__MiddleDancer, pullertension); ReportWithPackageFilter(ThreadFilter,"ThreadPrepare_Tension Puller",__FILE__,HARDWARE_DANCER_TYPE__MiddleDancer,PrepareWaitCount,RpWarning,(int)pullertension,0); @@ -1107,6 +1133,7 @@ uint32_t ThreadPrepareState(void *JobDetails) status = ThreadPrepare_Tension (HARDWARE_DANCER_TYPE__RightDancer, feedertension); ReportWithPackageFilter(ThreadFilter,"ThreadPrepare_Tension Feeder",__FILE__,HARDWARE_DANCER_TYPE__RightDancer,PrepareWaitCount,RpWarning,(int)feedertension,0); #endif + FirstCalcInJob = true; if(MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_RDRIVING].speedmaster == false) { diff --git a/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c b/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c index 0da78dc9c..06dac8fdc 100644 --- a/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c +++ b/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c @@ -213,21 +213,26 @@ uint32_t InitSequenceMidTankCallBackFunction(uint32_t IfIndex, uint32_t BusyFlag Disable_MidTank_Pressure_Reading(portId); Valve_Set(IDS_Id_to_AirValve[portId], Atm_MidTank_OFF ); //Atm_MidTank_OFF/ON //Control3WayValvesWithCallback ((Valves_t)portId, MidTank_Dispenser, NULL); //direction: MidTank_Dispenser or Dispenser_Mixer - } else if (MidTankOperationCounter >= MidTankReadPressure) { //read pressure for midtank (MidTankOperationCounter-MidTankCloseAir) portId = MidTankOperationCounter%MAX_SYSTEM_DISPENSERS; - Read_MidTank_Pressure_Sensor(portId); + if((IfIndex==0)||(Get_MidTank_Pressure_Sensor(portId)<0.5)) + { + Read_MidTank_Pressure_Sensor(portId); + } } else if (MidTankOperationCounter >= MidTankOpenAir) { //open air valve for midtank (MidTankOperationCounter-MidTankOpenAir) portId = (MidTankOperationCounter - MidTankOpenAir) ; //0-7 - Enable_MidTank_Pressure_Reading(portId); - Valve_Set(IDS_Id_to_AirValve[portId], Atm_MidTank_ON ); //Atm_MidTank_OFF/ON - Control3WayValvesWithCallback ((Valves_t)portId, Dispenser_Mixer, NULL); //direction: MidTank_Dispenser or Dispenser_Mixer + if((IfIndex==0)||(Get_MidTank_Pressure_Sensor(portId)<0.5)) + { + Enable_MidTank_Pressure_Reading(portId); + Valve_Set(IDS_Id_to_AirValve[portId], Atm_MidTank_ON ); //Atm_MidTank_OFF/ON + Control3WayValvesWithCallback ((Valves_t)portId, Dispenser_Mixer, NULL); //direction: MidTank_Dispenser or Dispenser_Mixer + } } MidTankOperationCounter++; return OK; @@ -544,6 +549,8 @@ uint32_t InitSequenceWaitForCoolerCallBackFunction(uint32_t IfIndex, uint32_t Bu } else Report("InitSequenceWaitForCoolerCallBackFunction called too late",__FILE__,__LINE__,(int)InitStages,RpWarning,(int)MachineStateDetail,0); + MidTankControlId = AddControlCallback("Init Midtank", InitSequenceMidTankCallBackFunction, 300/*eHundredMillisecond*/, TemplateDataReadCBFunction,1,0, 0 ); + return OK; } uint32_t InitSequenceWaitForCooler(void) diff --git a/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerIdle.c b/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerIdle.c index 17166a095..4ab177244 100644 --- a/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerIdle.c +++ b/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerIdle.c @@ -115,7 +115,7 @@ void PowerIdleSetIdle(void) if (HandleProcessParameters(&ProcessParametersClear,false)!= OK) { LOG_ERROR (1, "Turn Heaters idle failed"); - return; + //return; } if (BlowerCfg.enabled == true) { diff --git a/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c b/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c index bbb75328b..9f5151117 100644 --- a/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c +++ b/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c @@ -81,7 +81,7 @@ #include "modules/ids/ids_ex.h" #include "Modules/heaters/heaters_ex.h" #include "Modules/control/control.h" - +#include "drivers/Flash_ram/MCU_E2Prom.h" #define MAX_TICKET_SIZE 10000 @@ -106,6 +106,7 @@ JobBrushStop *TbrushStop; JobDispenser *Tdispenser; JobSpool *Tspool; HeadCleaningParameters *CleaningParameters = NULL; +BTSRParameters *BtsrPrameters = NULL; bool CopyConfigured[MAX_SYSTEM_MODULES]; bool CleaningJobActive = false, JoggingJobActive = false; char ErrorMsg[100]; @@ -134,7 +135,6 @@ static ReturnCode ExitState(void *JobDetails); void AbortJob(char *Msg); void HandleJobEnd(JobEndReasonEnum JobEndReason); - typedef enum { Idle= 0, @@ -483,6 +483,9 @@ uint32_t ThreadJoggingFunc(int speed) Tspool->has_limitswitchstartpointoffset = false; Ticket.spool = Tspool; Ticket.threadparameters = &SavedThreadParameters; +#ifdef UFEEDER_BTSR + BtsrReadParamsFromEeprom(Ticket.btsrparameters); +#endif CurrentJob = &Ticket; InternalWindingConfigMessage(Tspool); JoggingJobActive = true; @@ -681,6 +684,9 @@ uint32_t ThreadCleaningJob(int speed) Tspool->has_limitswitchstartpointoffset = false; Ticket.spool = Tspool; Ticket.threadparameters = &SavedThreadParameters; +#ifdef UFEEDER_BTSR + BtsrReadParamsFromEeprom(Ticket.btsrparameters); +#endif CurrentJob = &Ticket; job_length = CurrentJob->length + dryerbufferMeters; @@ -923,7 +929,7 @@ void Stub_AbortJobRequest(MessageContainer* requestContainer) //******************************************************************************************************************** void JobRequestFunc(MessageContainer* requestContainer) { - uint32_t status = NOT_SUPPORTED; + uint32_t rc, status = NOT_SUPPORTED; MessageContainer responseContainer; uint8_t* container_buffer; ErrorCode error = ERROR_CODE__NONE; @@ -1029,7 +1035,16 @@ void JobRequestFunc(MessageContainer* requestContainer) Report("Save job cleaning parameters", __FILE__, __LINE__, CleaningParameters->cleanerflow, RpWarning, CleaningParameters->archeadcleaningmotorspeed, 0); } + if (Ticket->btsrparameters) + { + ///store last updated BTSR parameters + if (BtsrPrameters == NULL) + BtsrPrameters = my_malloc(sizeof(BTSRParameters)); + memcpy(BtsrPrameters, Ticket->btsrparameters, sizeof(BTSRParameters)); + rc = BtsrSaveParamsToEeprom(BtsrPrameters); + Report("Save job BTSR parameters", __FILE__, __LINE__, BtsrPrameters->feedingtension, RpWarning, rc, 0); + } } else { |
