From 8071d27c87b37592a8b3ff1cc870bdab81320d3f Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Thu, 28 Feb 2019 13:31:34 +0200 Subject: Enable watchdog recovery, fix bug in priming --- Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c | 1 + Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c | 6 +++++- Software/Embedded_SW/Embedded/Modules/IDS/IDS_maint.c | 1 + 3 files changed, 7 insertions(+), 1 deletion(-) (limited to 'Software/Embedded_SW/Embedded/Modules') diff --git a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c index d107154d0..890e1725b 100644 --- a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c +++ b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c @@ -395,6 +395,7 @@ uint32_t AlarmHandlingConsequentActions(uint32_t AlarmId, DebugLogCategory Sever case DEBUG_LOG_CATEGORY__Safety: watchdogCriticalAlarm = true; + LOG_ERROR(AlarmId,"Critical Alarm - Watchdog activated to reset hardware"); /* //stop all dispensers for (Disp_i = 0;Disp_i < MAX_SYSTEM_DISPENSERS;Disp_i++) diff --git a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c index 8c308d2f4..580648842 100644 --- a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c +++ b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c @@ -221,7 +221,11 @@ uint32_t HWConfiguration(UploadHardwareConfigurationRequest* UploadRequest) { return ERROR; } - + if (watchdogCriticalAlarm == true) + { + LOG_ERROR(1,"Critical Alarm cleared - Watchdog de-activated"); + watchdogCriticalAlarm = false; + } EmbeddedParametersInit(); PrintingHWConfiguration(request); diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_maint.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_maint.c index 7d851936c..db5d2738e 100644 --- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_maint.c +++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_maint.c @@ -191,6 +191,7 @@ uint32_t IDS_StopHomeDispenser (uint32_t deviceID) //close dry air valve in the dispenser Disable_MidTank_Pressure_Reading(deviceID); Valve_Set(IDS_Id_to_AirValve[deviceID], Atm_MidTank_OFF); + Control3WayValvesWithCallback ((Valves_t)deviceID, MidTank_Dispenser, NULL); //direction: MidTank_Dispenser or Dispenser_Mixer MotorSetMicroStep(deviceID, MotorsCfg[deviceID].microstep); return OK; } -- cgit v1.3.1 From f3dd7087a42cb16bf19da0de998cf7052171d596 Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Thu, 28 Feb 2019 22:46:37 +0200 Subject: remove flash use due to errors --- .../Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c | 10 +++++----- Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c | 9 ++++----- 2 files changed, 9 insertions(+), 10 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules') diff --git a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c index 890e1725b..25a9c1231 100644 --- a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c +++ b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c @@ -124,8 +124,8 @@ AlarmStatusItem AlarmState[MAX_SYSTEM_ALARMS]; * or static variable whose declaration follows the pragma directive (only if using it without #define for example: #pragma location = MOTOR_MAP_IN_FLASH) * The variables must be declared either __no_init or const! */ -AlarmHandlingItemStruc *AlarmItem; -const AlarmHandlingItemStruc HardCodedAlarmItem[MAX_SYSTEM_ALARMS]={ +//AlarmHandlingItemStruc *AlarmItem; +const AlarmHandlingItemStruc AlarmItem[MAX_SYSTEM_ALARMS]={ {eHundredMillisecond,LimitSwitchAlarm,LimitSwitchAlarmEmpty_1,0,false,true,DEBUG_LOG_CATEGORY__Error,0xFF,0,EVENT_TYPE__DISPENSER_1_EMPTY,"Dispenser 1 Empty"}, {eHundredMillisecond,LimitSwitchAlarm,LimitSwitchAlarmEmpty_2,1,false,true,DEBUG_LOG_CATEGORY__Error,0xFF,0,EVENT_TYPE__DISPENSER_2_EMPTY,"Dispenser 2 Empty"}, {eHundredMillisecond,LimitSwitchAlarm,LimitSwitchAlarmEmpty_3,2,false,true,DEBUG_LOG_CATEGORY__Error,0xFF,0,EVENT_TYPE__DISPENSER_3_EMPTY,"Dispenser 3 Empty"}, @@ -330,9 +330,9 @@ void AlarmHandlingInit(void) AlarmState[Alarm_i].EventPtr = NULL; } - AlarmItem = (AlarmHandlingItemStruc *)MOTOR_MAP_IN_FLASH; - ReadAppAndProgram(AlarmItem, sizeof(AlarmHandlingItemStruc)*MAX_SYSTEM_ALARMS, HardCodedAlarmItem); - LOG_ERROR(AlarmItem[2].EventName,"Flash Test"); + //AlarmItem = (AlarmHandlingItemStruc *)MOTOR_MAP_IN_FLASH; + //ReadAppAndProgram(AlarmItem, sizeof(AlarmHandlingItemStruc)*MAX_SYSTEM_ALARMS, HardCodedAlarmItem); + //LOG_ERROR(AlarmItem[2].EventName,"Flash Test"); return; } diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c index ed91f194a..d77d6f082 100644 --- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c +++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c @@ -30,7 +30,7 @@ typedef struct bool m_isReady; PID_Config_Params m_params; }DispenserControlConfig_t; -HardwarePidControl *DispensersControl = (HardwarePidControl *)GENHWCFG_MAP_IN_FLASH + 0x4000;; +HardwarePidControl DispensersControl[MAX_SYSTEM_DISPENSERS] = {0}; int32_t DispenserSamples[MAX_SYSTEM_DISPENSERS][MAX_CONTROL_SAMPLES] = {0}; int DispenserSamplePointer[MAX_SYSTEM_DISPENSERS] = {0}; @@ -67,10 +67,9 @@ uint32_t IDS_DispenserPidRequestMessage(HardwarePidControl* request) break; } } - if (request->pvinputfilterfactormode > MAX_CONTROL_SAMPLES) - request->pvinputfilterfactormode = MAX_CONTROL_SAMPLES; - ReadAppAndProgram(&DispensersControl[Dispenser_i], sizeof(HardwarePidControl), request); - + memcpy (&DispensersControl[Dispenser_i],request,sizeof(HardwarePidControl)); + if (DispensersControl[Dispenser_i].pvinputfilterfactormode > MAX_CONTROL_SAMPLES) + DispensersControl[Dispenser_i].pvinputfilterfactormode = MAX_CONTROL_SAMPLES; for (i = 0;i < DispensersControl[Dispenser_i].pvinputfilterfactormode; i++) DispenserSamples[Dispenser_i][i] = 0; //reset the samples value for control beginning /*DispenserNormalizedErrorCoEfficient[Dispenser_i] = (2*PI*DancersCfg[ThreadDispenserIdToDancerId[Dispenser_i]].armlength); -- cgit v1.3.1