From 746ba0f4e7fb7aae0c5ccfe68deed2dba285c565 Mon Sep 17 00:00:00 2001 From: Ronen Sberlo Date: Mon, 4 Jan 2021 15:30:04 +0200 Subject: BTSR --- Software/Embedded_SW/Embedded/DataDef.h | 9 +++- .../Embedded/Drivers/flash_ram/MCU_E2Prom.h | 7 +++ .../Embedded/Modules/Thread/Thread_print.c | 35 +++++++++++-- .../Embedded/StateMachines/Printing/JobSTM.c | 61 ++++++++++++++++++++-- 4 files changed, 104 insertions(+), 8 deletions(-) (limited to 'Software/Embedded_SW') diff --git a/Software/Embedded_SW/Embedded/DataDef.h b/Software/Embedded_SW/Embedded/DataDef.h index d8655296d..6806d0989 100644 --- a/Software/Embedded_SW/Embedded/DataDef.h +++ b/Software/Embedded_SW/Embedded/DataDef.h @@ -36,7 +36,14 @@ #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 - no need when working only with stubs +//#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 //#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/flash_ram/MCU_E2Prom.h b/Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.h index aee812973..cffdea68b 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 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/Printing/JobSTM.c b/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c index bbb75328b..ab5e68b46 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]; @@ -133,7 +134,8 @@ static ReturnCode ExitState(void *JobDetails); //static ReturnCode (* state[])(void *JobDetails) = { IdleState, ValidateState, PrepareState, PrintState, CleanState}; void AbortJob(char *Msg); void HandleJobEnd(JobEndReasonEnum JobEndReason); - +uint32_t BtsrSaveParamsToEeprom(BTSRParameters *BtsrPrameters); +uint32_t BtsrReadParamsFromEeprom(BTSRParameters *BtsrPrameters); typedef enum { @@ -483,6 +485,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 +686,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 +931,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 +1037,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 { @@ -1431,6 +1448,44 @@ uint32_t ResumeCurrentJobRequestFunc(MessageContainer* requestContainer) return OK; } +uint32_t BtsrSaveParamsToEeprom(BTSRParameters *BtsrPrameters) +{ + uint32_t status = 0; + + status |= MCU_E2PromProgram(EEPROM_BTSR_FEEDING_TENSION, (uint32_t)(BtsrPrameters->feedingtension*10)); + status |= MCU_E2PromProgram(EEPROM_BTSR_TYPE, (uint32_t)(BtsrPrameters->btsryarntype)); + status |= MCU_E2PromProgram(EEPROM_BTSR_APPLICATION, (uint32_t)(BtsrPrameters->btsrapplicationtype)); + status |= MCU_E2PromProgram(EEPROM_BTSR_LENGTH_OFFSET, (uint32_t)(BtsrPrameters->threadlengthfactor)); + status |= MCU_E2PromProgram(EEPROM_BTSR_TENSION_ERROR, (uint32_t)(BtsrPrameters->tensionerror*10)); + status |= MCU_E2PromProgram(EEPROM_BTSR_SPOOL_TENSION, (uint32_t)(BtsrPrameters->spooltension)); + status |= MCU_E2PromProgram(EEPROM_BTSR_EXIT_TENSION, (uint32_t)(BtsrPrameters->exittension)); + return status; +} + +uint32_t BtsrReadParamsFromEeprom(BTSRParameters *BtsrPrameters) +{ + uint32_t status = 0; + uint32_t feedingtension, type, application, lengthoffset; + uint32_t tensionerror, spooltension, exittension; + + status |= MCU_E2PromRead(EEPROM_BTSR_FEEDING_TENSION, &feedingtension); + BtsrPrameters->feedingtension = ((double)feedingtension)/10; + status |= MCU_E2PromRead(EEPROM_BTSR_TYPE, &type); + BtsrPrameters->btsryarntype = type; + status |= MCU_E2PromRead(EEPROM_BTSR_APPLICATION, &application); + BtsrPrameters->btsrapplicationtype = application; + status |= MCU_E2PromRead(EEPROM_BTSR_LENGTH_OFFSET, &lengthoffset); + BtsrPrameters->threadlengthfactor = lengthoffset; + status |= MCU_E2PromRead(EEPROM_BTSR_TENSION_ERROR, &tensionerror); + BtsrPrameters->tensionerror = ((double)tensionerror)/10; + status |= MCU_E2PromRead(EEPROM_BTSR_SPOOL_TENSION, &spooltension); + BtsrPrameters->spooltension = spooltension; + status |= MCU_E2PromRead(EEPROM_BTSR_EXIT_TENSION, &exittension); + BtsrPrameters->exittension = exittension; + Report("BtsrReadParamsFromEeprom",__FILE__,__LINE__,(int)(feedingtension),RpWarning,(int)(tensionerror),(int)exittension); + Report("BtsrReadParamsFromEeprom",__FILE__,__LINE__,(int)(application),RpWarning,(int)(type),(int)lengthoffset); + return status; +} void StartJob(void *JobDetails) { -- cgit v1.3.1 From 53ba4a55863def0a69291c35acee36a9b51a317e Mon Sep 17 00:00:00 2001 From: Ronen Sberlo Date: Mon, 4 Jan 2021 17:22:36 +0200 Subject: undo changes datadef.h --- Software/Embedded_SW/Embedded/DataDef.h | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) (limited to 'Software/Embedded_SW') diff --git a/Software/Embedded_SW/Embedded/DataDef.h b/Software/Embedded_SW/Embedded/DataDef.h index 6806d0989..d8655296d 100644 --- a/Software/Embedded_SW/Embedded/DataDef.h +++ b/Software/Embedded_SW/Embedded/DataDef.h @@ -36,14 +36,7 @@ #endif //#define BTSR_ROTATED_WINDER_TFU -//#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 +//#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 USE_RFID_STUB //stub only. to use it undef USE_RFID_LOGIC //#define RFID_READ_ONLY // -- cgit v1.3.1 From 23f536059dd646d60097134579b8c523ad2855e2 Mon Sep 17 00:00:00 2001 From: Ronen Sberlo Date: Mon, 4 Jan 2021 17:32:59 +0200 Subject: redo changes to datadef.h --- Software/Embedded_SW/Embedded/DataDef.h | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'Software/Embedded_SW') diff --git a/Software/Embedded_SW/Embedded/DataDef.h b/Software/Embedded_SW/Embedded/DataDef.h index 711a0ab95..3b8a71444 100644 --- a/Software/Embedded_SW/Embedded/DataDef.h +++ b/Software/Embedded_SW/Embedded/DataDef.h @@ -36,6 +36,13 @@ #endif //#define BTSR_ROTATED_WINDER_TFU +//#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 -- cgit v1.3.1 From 4070df75dc74431946374f00d0570ea3776f2d32 Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Mon, 4 Jan 2021 23:40:17 +0200 Subject: improve BTSR keeping --- .../Embedded/Drivers/Motors/MotorActions.c | 2 +- .../Embedded/Drivers/flash_ram/MCU_E2Prom.c | 45 ++++++++++++- .../Embedded/Drivers/flash_ram/MCU_E2Prom.h | 3 + .../Embedded_SW/Embedded/Modules/IDS/IDS_print.c | 5 ++ .../StateMachines/Initialization/PowerIdle.c | 2 +- .../Embedded/StateMachines/Printing/JobSTM.c | 40 ------------ .../Stubs Collection/stubs/EvalBoardLedsTest.cs | 76 ++++++++++++++++++++++ 7 files changed, 130 insertions(+), 43 deletions(-) create mode 100644 Software/Stubs Collection/stubs/EvalBoardLedsTest.cs (limited to 'Software/Embedded_SW') 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 cfa8c2382..91d04872e 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) @@ -362,4 +362,47 @@ void MainCardEEpromWriteRequestFunc(MessageContainer* requestContainer) stub_main_card_eeprom_write_request__free_unpacked(request,NULL); } +uint32_t BtsrSaveParamsToEeprom(void *Data) +{ + BTSRParameters* BtsrPrameters = Data; + uint32_t status = 0; + float data; + 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 cffdea68b..24f229b2c 100644 --- a/Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.h +++ b/Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.h @@ -96,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/Modules/IDS/IDS_print.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c index 71bae1f40..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]; 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 ab5e68b46..9f5151117 100644 --- a/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c +++ b/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c @@ -134,8 +134,6 @@ static ReturnCode ExitState(void *JobDetails); //static ReturnCode (* state[])(void *JobDetails) = { IdleState, ValidateState, PrepareState, PrintState, CleanState}; void AbortJob(char *Msg); void HandleJobEnd(JobEndReasonEnum JobEndReason); -uint32_t BtsrSaveParamsToEeprom(BTSRParameters *BtsrPrameters); -uint32_t BtsrReadParamsFromEeprom(BTSRParameters *BtsrPrameters); typedef enum { @@ -1448,44 +1446,6 @@ uint32_t ResumeCurrentJobRequestFunc(MessageContainer* requestContainer) return OK; } -uint32_t BtsrSaveParamsToEeprom(BTSRParameters *BtsrPrameters) -{ - uint32_t status = 0; - - status |= MCU_E2PromProgram(EEPROM_BTSR_FEEDING_TENSION, (uint32_t)(BtsrPrameters->feedingtension*10)); - status |= MCU_E2PromProgram(EEPROM_BTSR_TYPE, (uint32_t)(BtsrPrameters->btsryarntype)); - status |= MCU_E2PromProgram(EEPROM_BTSR_APPLICATION, (uint32_t)(BtsrPrameters->btsrapplicationtype)); - status |= MCU_E2PromProgram(EEPROM_BTSR_LENGTH_OFFSET, (uint32_t)(BtsrPrameters->threadlengthfactor)); - status |= MCU_E2PromProgram(EEPROM_BTSR_TENSION_ERROR, (uint32_t)(BtsrPrameters->tensionerror*10)); - status |= MCU_E2PromProgram(EEPROM_BTSR_SPOOL_TENSION, (uint32_t)(BtsrPrameters->spooltension)); - status |= MCU_E2PromProgram(EEPROM_BTSR_EXIT_TENSION, (uint32_t)(BtsrPrameters->exittension)); - return status; -} - -uint32_t BtsrReadParamsFromEeprom(BTSRParameters *BtsrPrameters) -{ - uint32_t status = 0; - uint32_t feedingtension, type, application, lengthoffset; - uint32_t tensionerror, spooltension, exittension; - - status |= MCU_E2PromRead(EEPROM_BTSR_FEEDING_TENSION, &feedingtension); - BtsrPrameters->feedingtension = ((double)feedingtension)/10; - status |= MCU_E2PromRead(EEPROM_BTSR_TYPE, &type); - BtsrPrameters->btsryarntype = type; - status |= MCU_E2PromRead(EEPROM_BTSR_APPLICATION, &application); - BtsrPrameters->btsrapplicationtype = application; - status |= MCU_E2PromRead(EEPROM_BTSR_LENGTH_OFFSET, &lengthoffset); - BtsrPrameters->threadlengthfactor = lengthoffset; - status |= MCU_E2PromRead(EEPROM_BTSR_TENSION_ERROR, &tensionerror); - BtsrPrameters->tensionerror = ((double)tensionerror)/10; - status |= MCU_E2PromRead(EEPROM_BTSR_SPOOL_TENSION, &spooltension); - BtsrPrameters->spooltension = spooltension; - status |= MCU_E2PromRead(EEPROM_BTSR_EXIT_TENSION, &exittension); - BtsrPrameters->exittension = exittension; - Report("BtsrReadParamsFromEeprom",__FILE__,__LINE__,(int)(feedingtension),RpWarning,(int)(tensionerror),(int)exittension); - Report("BtsrReadParamsFromEeprom",__FILE__,__LINE__,(int)(application),RpWarning,(int)(type),(int)lengthoffset); - return status; -} void StartJob(void *JobDetails) { diff --git a/Software/Stubs Collection/stubs/EvalBoardLedsTest.cs b/Software/Stubs Collection/stubs/EvalBoardLedsTest.cs new file mode 100644 index 000000000..7cd0b6818 --- /dev/null +++ b/Software/Stubs Collection/stubs/EvalBoardLedsTest.cs @@ -0,0 +1,76 @@ +using System; +using System.Text; +using System.Linq; +using System.Drawing; +using System.Diagnostics; +using System.Windows.Forms; +using System.Threading; +using System.Threading.Tasks; +using System.Collections.Generic; +using Tango.PMR.Stubs; +using Tango.Stubs; + +public void OnExecute(StubManager stubManager) +{ + +StubGPIOWriteBitRequest speed = new StubGPIOWriteBitRequest(); +speed.PortId = "F"; +speed.PinId = 1; +speed.BitToWrite = false; +StubGPIOWriteBitRequest link = new StubGPIOWriteBitRequest(); +link.PortId = "K"; +link.PinId = 4; +link.BitToWrite = false; +StubGPIOWriteBitRequest Activity = new StubGPIOWriteBitRequest(); +Activity.PortId = "K"; +Activity.PinId = 6; +Activity.BitToWrite = false; +StubGPIOWriteBitRequest Q7 = new StubGPIOWriteBitRequest(); +Q7.PortId = "Q"; +Q7.PinId = 7; +Q7.BitToWrite = false; +StubGPIOWriteBitRequest N5 = new StubGPIOWriteBitRequest(); +N5.PortId = "N"; +N5.PinId = 5; +N5.BitToWrite = false; + +var response = stubManager.Run(speed); +response = stubManager.Run(link); +response = stubManager.Run(Activity); +Thread.Sleep(2000); + for (int i = 1; i<100000000; i++) + { + speed.BitToWrite = (i%3>0)?true:false; + link.BitToWrite = (i%4>0)?true:false; + Activity.BitToWrite = (i%5>0)?true:false; + response = stubManager.Run(speed); + Thread.Sleep(10); + response = stubManager.Run(link); + Thread.Sleep(10); + response = stubManager.Run(Activity); + Thread.Sleep(10); + Q7.BitToWrite = (i%7>3)?true:false; + response = stubManager.Run(Q7); + Thread.Sleep(10); + N5.BitToWrite = (i%11>4)?true:false; + response = stubManager.Run(N5); + Thread.Sleep(10); + Thread.Sleep(100); + } + speed.BitToWrite = true; + link.BitToWrite = true; + Activity.BitToWrite = true; + response = stubManager.Run(speed); + Thread.Sleep(10); + response = stubManager.Run(link); + Thread.Sleep(10); + response = stubManager.Run(Activity); + Thread.Sleep(10); + Q7.BitToWrite = false; + response = stubManager.Run(Q7); + Thread.Sleep(10); + N5.BitToWrite = false; + response = stubManager.Run(N5); + Thread.Sleep(10); + +} \ No newline at end of file -- cgit v1.3.1 From 25ab46e3ff07e9f15a5e04cc671280cf69d6f99d Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Tue, 5 Jan 2021 00:13:44 +0200 Subject: BTSR params compare before storing --- .../Embedded/Drivers/flash_ram/MCU_E2Prom.c | 30 +++++++++++++--------- 1 file changed, 18 insertions(+), 12 deletions(-) (limited to 'Software/Embedded_SW') 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 91d04872e..20c6d5a00 100644 --- a/Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.c +++ b/Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.c @@ -365,20 +365,26 @@ void MainCardEEpromWriteRequestFunc(MessageContainer* requestContainer) uint32_t BtsrSaveParamsToEeprom(void *Data) { BTSRParameters* BtsrPrameters = Data; + BTSRParameters ExistingBtsrPrameters ; uint32_t status = 0; float data; - 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); + + 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; } -- cgit v1.3.1