Index: firmware/App/Controllers/Voltages.c =================================================================== diff -u -rfc923bac57545b5794893c47a97770d8d7cfcee4 -r7e0d7c16341ea0ccd9b806a2db97553498d10365 --- firmware/App/Controllers/Voltages.c (.../Voltages.c) (revision fc923bac57545b5794893c47a97770d8d7cfcee4) +++ firmware/App/Controllers/Voltages.c (.../Voltages.c) (revision 7e0d7c16341ea0ccd9b806a2db97553498d10365) @@ -22,6 +22,7 @@ #include "PersistentAlarm.h" #include "SafetyShutdown.h" #include "SystemCommMessages.h" +#include "SystemComm.h" #include "TaskGeneral.h" #include "Timers.h" #include "Voltages.h" @@ -35,7 +36,7 @@ #define VOLTAGES_DATA_PUB_INTERVAL ( MS_PER_SECOND / TASK_GENERAL_INTERVAL ) ///< Interval (ms/task time) at which the voltages data is published on the CAN bus. #define VOLTAGES_ALARM_PERSISTENCE_MS ( 1 * MS_PER_SECOND ) ///< Alarm persistence period for voltage monitor alarms in milliseconds. -#define POWER_LOSS_VOLTAGE_PERSISTENCE_MS 150 ///< Power supply voltage out of range persistence in milliseconds. +#define POWER_LOSS_VOLTAGE_PERSISTENCE_MS 500 ///< Power supply voltage out of range persistence in milliseconds. #define DATA_PUBLISH_COUNTER_START_COUNT 14 ///< Data publish counter start count. /// Defined states for the voltage monitor state machine. @@ -249,6 +250,9 @@ { SET_ALARM_WITH_2_F32_DATA( ALARM_ID_HD_AC_POWER_LOST, getMonitoredLineLevel( MONITORED_LINE_24V ), getMonitoredLineLevel( MONITORED_LINE_24V_REGEN ) ); } + + // Reset the alarm clearance counter + resetPersistentAlarmTimer( ALARM_ID_HD_AC_POWER_LOST ); } else { Index: firmware/App/Modes/ModeTreatmentParams.c =================================================================== diff -u -r3741b7bb1a2e35a0b3618a9212f277f1937ee75f -r7e0d7c16341ea0ccd9b806a2db97553498d10365 --- firmware/App/Modes/ModeTreatmentParams.c (.../ModeTreatmentParams.c) (revision 3741b7bb1a2e35a0b3618a9212f277f1937ee75f) +++ firmware/App/Modes/ModeTreatmentParams.c (.../ModeTreatmentParams.c) (revision 7e0d7c16341ea0ccd9b806a2db97553498d10365) @@ -683,19 +683,19 @@ case TREATMENT_PARAM_UF_VOLUME: result = ( ( value.sFlt >= hdInstitutionalRecord.minUFVolumeL ) && ( value.sFlt <= hdInstitutionalRecord.maxUFVolumeL ) ? TRUE : FALSE ); - result |= ( value.sFlt <= NEARLY_ZERO ? TRUE : FALSE ); // There might be a minimum UF volume set in the institutional record but a treatment with 0 vol should be allowed + result |= ( fabs( value.sFlt ) <= NEARLY_ZERO ? TRUE : FALSE ); // There might be a minimum UF volume set in the institutional record but a treatment with 0 vol should be allowed break; case TREATMENT_PARAM_HEPARIN_DISPENSE_RATE: result = ( ( value.sFlt >= hdInstitutionalRecord.minHeparinDispRateMLPHR ) && ( value.sFlt <= hdInstitutionalRecord.maxHeparinDispRateMLPHR ) ? TRUE : FALSE ); - result |= ( value.sFlt <= NEARLY_ZERO ? TRUE : FALSE ); // Even if the minimum is not 0, 0 is accepted meaning heparin can be turned off + result |= ( fabs( value.sFlt ) <= NEARLY_ZERO ? TRUE : FALSE ); // Even if the minimum is not 0, 0 is accepted meaning heparin can be turned off break; case TREATMENT_PARAM_HEPARIN_BOLUS_VOLUME: result = ( ( value.sFlt >= hdInstitutionalRecord.minHeparinBolusVolumeML ) && ( value.sFlt <= hdInstitutionalRecord.maxHeparinBolusVolumeML ) ? TRUE : FALSE ); - result |= ( value.sFlt <= NEARLY_ZERO ? TRUE : FALSE ); // Even if the minimum is not 0, 0 is accepted meaning heparin can be turned off + result |= ( fabs( value.sFlt ) <= NEARLY_ZERO ? TRUE : FALSE ); // Even if the minimum is not 0, 0 is accepted meaning heparin can be turned off break; default: Index: firmware/App/Modes/Rinseback.c =================================================================== diff -u -rfc923bac57545b5794893c47a97770d8d7cfcee4 -r7e0d7c16341ea0ccd9b806a2db97553498d10365 --- firmware/App/Modes/Rinseback.c (.../Rinseback.c) (revision fc923bac57545b5794893c47a97770d8d7cfcee4) +++ firmware/App/Modes/Rinseback.c (.../Rinseback.c) (revision 7e0d7c16341ea0ccd9b806a2db97553498d10365) @@ -227,6 +227,21 @@ setBloodPumpTargetFlowRate( rate, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_CLOSED_LOOP ); // Start air trap leveling control startAirTrapControl(); + + // If DG restarted for some reason, lets make sure we set the heating parameters first before commanding to + // turn on the trimmer heater and start the DG as well. + if ( DG_MODE_STAN == getDGOpMode() ) + { + F32 targetTempC = getTreatmentParameterF32( TREATMENT_PARAM_DIALYSATE_TEMPERATURE ); + U32 dialysateFlowMLPM = getTreatmentParameterU32( TREATMENT_PARAM_DIALYSATE_FLOW ); + + // Set the heating parameters + setPreTreatmentHeatingParams( targetTempC, DEFAULT_FILL_RESERVOIR_TO_VOLUME_ML, DEFAULT_TARGET_FILL_FLOW_RATE_LPM, dialysateFlowMLPM ); + + // Start the DG + cmdStartDG(); + } + // Re-circulate dialysate side of dialyzer w/ heating to maintain temperature setDialInPumpTargetFlowRate( DIALYSATE_FLOW_RATE_FOR_RECIRC, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_CLOSED_LOOP ); cmdStartDGTrimmerHeater(); Index: firmware/HD.dil =================================================================== diff -u -rbf8bc9c4f91e9cac1338bd605ed1bbf95ac15e22 -r7e0d7c16341ea0ccd9b806a2db97553498d10365 --- firmware/HD.dil (.../HD.dil) (revision bf8bc9c4f91e9cac1338bd605ed1bbf95ac15e22) +++ firmware/HD.dil (.../HD.dil) (revision 7e0d7c16341ea0ccd9b806a2db97553498d10365) @@ -1,4 +1,4 @@ -# RM46L852PGE 08/22/23 10:45:17 +# RM46L852PGE 04/11/24 17:22:39 # ARCH=RM46L852PGE # @@ -139,7 +139,7 @@ DRIVER.SYSTEM.VAR.ECAP6_ENABLE.VALUE=1 DRIVER.SYSTEM.VAR.SCI_ENABLE.VALUE=1 DRIVER.SYSTEM.VAR.FLASH_DATA_1_WAIT_STATE_FREQ.VALUE=110.0 -DRIVER.SYSTEM.VAR.RAM_STACK_IRQ_BASE.VALUE=0x08003000 +DRIVER.SYSTEM.VAR.RAM_STACK_IRQ_BASE.VALUE=0x08004000 DRIVER.SYSTEM.VAR.VIM_CHANNEL_125_MAPPING.VALUE=125 DRIVER.SYSTEM.VAR.VIM_CHANNEL_117_MAPPING.VALUE=117 DRIVER.SYSTEM.VAR.VIM_CHANNEL_109_MAPPING.VALUE=109 @@ -502,7 +502,7 @@ DRIVER.SYSTEM.VAR.VIM_CHANNEL_10_NAME.VALUE=het1HighLevelInterrupt DRIVER.SYSTEM.VAR.PMM_MEM_PD2_STATEVALUE.VALUE=0x5 DRIVER.SYSTEM.VAR.ERRATA_WORKAROUND_9.VALUE=1 -DRIVER.SYSTEM.VAR.RAM_STACK_USER_LENGTH.VALUE=0x00001000 +DRIVER.SYSTEM.VAR.RAM_STACK_USER_LENGTH.VALUE=0x00002000 DRIVER.SYSTEM.VAR.CORE_MPU_REGION_8_PERMISSION.VALUE=PRIV_RW_USER_RW_NOEXEC DRIVER.SYSTEM.VAR.CORE_MPU_REGION_10_SUB_2_DISABLE.VALUE=0 DRIVER.SYSTEM.VAR.CORE_MPU_REGION_7_SUB_7_DISABLE.VALUE=0 @@ -549,7 +549,7 @@ DRIVER.SYSTEM.VAR.VIM_CHANNEL_85_NAME.VALUE=phantomInterrupt DRIVER.SYSTEM.VAR.VIM_CHANNEL_77_NAME.VALUE=EMACTxIntISR DRIVER.SYSTEM.VAR.VIM_CHANNEL_69_NAME.VALUE=phantomInterrupt -DRIVER.SYSTEM.VAR.RAM_STACK_IRQ_LENGTH.VALUE=0x00002000 +DRIVER.SYSTEM.VAR.RAM_STACK_IRQ_LENGTH.VALUE=0x00001000 DRIVER.SYSTEM.VAR.CORE_MPU_REGION_11_SUB_6_DISABLE.VALUE=0 DRIVER.SYSTEM.VAR.CORE_MPU_REGION_7_SUB_0_DISABLE.VALUE=0 DRIVER.SYSTEM.VAR.VIM_CHANNEL_2_INT_PRAGMA_ENABLE.VALUE=1 @@ -926,7 +926,7 @@ DRIVER.SYSTEM.VAR.HET_ENABLE.VALUE=1 DRIVER.SYSTEM.VAR.PBIST_ALGO_13_14.VALUE=0 DRIVER.SYSTEM.VAR.RAM_STACK_UNDEF_BASE.VALUE=0x08005400 -DRIVER.SYSTEM.VAR.RAM_STACK_SVC_BASE.VALUE=0x08001000 +DRIVER.SYSTEM.VAR.RAM_STACK_SVC_BASE.VALUE=0x08002000 DRIVER.SYSTEM.VAR.CORE_MPU_REGION_9_TYPE.VALUE=DEVICE_NONSHAREABLE DRIVER.SYSTEM.VAR.VIM_CHANNEL_99_INT_PRAGMA_ENABLE.VALUE=0 DRIVER.SYSTEM.VAR.VIM_CHANNEL_3_INT_TYPE.VALUE=IRQ @@ -1134,7 +1134,7 @@ DRIVER.SYSTEM.VAR.RTI_ENABLE.VALUE=1 DRIVER.SYSTEM.VAR.STC_MAX_TIMEOUT.VALUE=0xFFFFFFFF DRIVER.SYSTEM.VAR.CLKT_LPO_LOW_TRIM.VALUE=100.00 -DRIVER.SYSTEM.VAR.RAM_STACK_FIQ_BASE.VALUE=0x08002000 +DRIVER.SYSTEM.VAR.RAM_STACK_FIQ_BASE.VALUE=0x08003000 DRIVER.SYSTEM.VAR.CORE_MPU_REGION_4_PERMISSION_VALUE.VALUE=0x0300 DRIVER.SYSTEM.VAR.VIM_CHANNEL_0_NAME.VALUE=esmHighInterrupt DRIVER.SYSTEM.VAR.FLASH_BANK_LINK_LENGTH_7.VALUE=0x000010000 Index: firmware/include/sys_core.h =================================================================== diff -u -rbf7c3835ce5a7bcbc47c305fb2fe5490d0899db8 -r7e0d7c16341ea0ccd9b806a2db97553498d10365 --- firmware/include/sys_core.h (.../sys_core.h) (revision bf7c3835ce5a7bcbc47c305fb2fe5490d0899db8) +++ firmware/include/sys_core.h (.../sys_core.h) (revision 7e0d7c16341ea0ccd9b806a2db97553498d10365) @@ -63,7 +63,7 @@ * * @note: Use this macro for USER Mode Stack length (in bytes) */ -#define USER_STACK_LENGTH 0x00001000U +#define USER_STACK_LENGTH 0x00002000U /** @def SVC_STACK_LENGTH * @brief SVC Mode Stack length (in bytes) @@ -90,7 +90,7 @@ * * @note: Use this macro for IRQ Mode Stack length (in bytes) */ -#define IRQ_STACK_LENGTH 0x00002000U +#define IRQ_STACK_LENGTH 0x00001000U /** @def ABORT_STACK_LENGTH * @brief ABORT Mode Stack length (in bytes) Index: firmware/source/sys_core.asm =================================================================== diff -u -rbf7c3835ce5a7bcbc47c305fb2fe5490d0899db8 -r7e0d7c16341ea0ccd9b806a2db97553498d10365 --- firmware/source/sys_core.asm (.../sys_core.asm) (revision bf7c3835ce5a7bcbc47c305fb2fe5490d0899db8) +++ firmware/source/sys_core.asm (.../sys_core.asm) (revision 7e0d7c16341ea0ccd9b806a2db97553498d10365) @@ -160,12 +160,12 @@ ldr sp, userSp bx lr -userSp .word 0x08000000+0x00001000 -svcSp .word 0x08000000+0x00001000+0x00001000 -fiqSp .word 0x08000000+0x00001000+0x00001000+0x00001000 -irqSp .word 0x08000000+0x00001000+0x00001000+0x00001000+0x00002000 -abortSp .word 0x08000000+0x00001000+0x00001000+0x00001000+0x00002000+0x00000400 -undefSp .word 0x08000000+0x00001000+0x00001000+0x00001000+0x00002000+0x00000400+0x00000400 +userSp .word 0x08000000+0x00002000 +svcSp .word 0x08000000+0x00002000+0x00001000 +fiqSp .word 0x08000000+0x00002000+0x00001000+0x00001000 +irqSp .word 0x08000000+0x00002000+0x00001000+0x00001000+0x00001000 +abortSp .word 0x08000000+0x00002000+0x00001000+0x00001000+0x00001000+0x00000400 +undefSp .word 0x08000000+0x00002000+0x00001000+0x00001000+0x00001000+0x00000400+0x00000400 .endasmfunc Index: firmware/source/sys_link.cmd =================================================================== diff -u -r8791132fbfcb8fa25fb11a9ab15d695686aaef75 -r7e0d7c16341ea0ccd9b806a2db97553498d10365 --- firmware/source/sys_link.cmd (.../sys_link.cmd) (revision 8791132fbfcb8fa25fb11a9ab15d695686aaef75) +++ firmware/source/sys_link.cmd (.../sys_link.cmd) (revision 7e0d7c16341ea0ccd9b806a2db97553498d10365) @@ -70,8 +70,8 @@ VECTORS (X) : origin=0x00000000 length=0x00000020 CRCMEM (RX) : origin=0x00000020 length=0x000001E0 FLASH0 (RX) : origin=0x00000200 length=0x0013FE00 - STACKS (RW) : origin=0x08000000 length=0x00004c00 - RAM (RW) : origin=0x08004c00 length=0x0002b400 + STACKS (RW) : origin=0x08000000 length=0x00005800 + RAM (RW) : origin=0x08005800 length=0x0002a800 #endif /* USER CODE END */