Index: firmware/App/Controllers/Heaters.c =================================================================== diff -u -red39129abdca4ec343369d83494530b23621e052 -r322747d530c1b8205be257557e53dcfe9caad50a --- firmware/App/Controllers/Heaters.c (.../Heaters.c) (revision ed39129abdca4ec343369d83494530b23621e052) +++ firmware/App/Controllers/Heaters.c (.../Heaters.c) (revision 322747d530c1b8205be257557e53dcfe9caad50a) @@ -355,22 +355,16 @@ ALARM_ID_T alarm; BOOL isLevelLow = FALSE; - switch ( heater ) + if ( D5_HEAT == heater ) { - case D5_HEAT: - alarm = ALARM_ID_DD_FLUID_TOO_LOW_WHILE_D5_HEAT_IS_ON; - isLevelLow = ( ( getLevelStatus( D6_LEVL ) != 0 )? FALSE : TRUE ); - break; - - case D45_HEAT: - alarm = ALARM_ID_DD_FLUID_TOO_LOW_WHILE_D45_HEAT_IS_ON; - isLevelLow = ( ( getLevelStatus( D46_LEVL ) != 0 )? FALSE : TRUE ); - break; - - default: - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DD_SOFTWARE_FAULT, SW_FAULT_ID_HEATERS_INVALID_HEATER_ID_SELECTED, heater ) - break; + alarm = ALARM_ID_DD_FLUID_TOO_LOW_WHILE_D5_HEAT_IS_ON; + isLevelLow = ( ( getLevelStatus( D6_LEVL ) != 0 )? FALSE : TRUE ); } + else + { + alarm = ALARM_ID_DD_FLUID_TOO_LOW_WHILE_D45_HEAT_IS_ON; + isLevelLow = ( ( getLevelStatus( D46_LEVL ) != 0 )? FALSE : TRUE ); + } checkPersistentAlarm( alarm, isLevelLow, 0.0F, 0.0F ); } @@ -489,42 +483,36 @@ if( ++heatersStatus[ heater ].controlIntervalCounter > D5_HEAT_CONTROL_INTERVAL_COUNT ) { - switch ( heater ) + if ( D5_HEAT == heater ) { - case D5_HEAT: - measuredTemperature = getTemperatureValue( (U32)D4_TEMP ); - if ( measuredTemperature >= targetTemperature ) - { - // Turn off heater - control[ heater ].data = HEATERS_MIN_DUTY_CYCLE; - } - else - { - // Turn On heater - control[ heater ].data = D5_HEAT_ON; - } + measuredTemperature = getTemperatureValue( (U32)D4_TEMP ); + if ( measuredTemperature >= targetTemperature ) + { + // Turn off heater + control[ heater ].data = HEATERS_MIN_DUTY_CYCLE; + } + else + { + // Turn On heater + control[ heater ].data = D5_HEAT_ON; + } - //control = runPIController( PI_CONTROLLER_ID_D5_HEAT, targetTemperature, measuredTemperature ); - break; + //control = runPIController( PI_CONTROLLER_ID_D5_HEAT, targetTemperature, measuredTemperature ); + } + else + { + measuredTemperature = getTemperatureValue( (U32)D50_TEMP ); + //control = runPIController( PI_CONTROLLER_ID_D45_HEAT, targetTemperature, measuredTemperature ); + if ( targetTemperature > 0.0F ) + { + ctrl = HEATERS_MAX_DUTY_CYCLE - ( measuredTemperature / targetTemperature ); + ctrl = ( ctrl < 0.0F ? HEATERS_MIN_DUTY_CYCLE: ctrl * D45_HEAT_GAIN ); + //Apply dutycycle limit + ctrl = MIN( ctrl, HEATERS_MAX_DUTY_CYCLE ); + ctrl = MAX( ctrl, HEATERS_MIN_DUTY_CYCLE ); + } - case D45_HEAT: - measuredTemperature = getTemperatureValue( (U32)D50_TEMP ); - //control = runPIController( PI_CONTROLLER_ID_D45_HEAT, targetTemperature, measuredTemperature ); - if ( targetTemperature > 0.0F ) - { - ctrl = HEATERS_MAX_DUTY_CYCLE - ( measuredTemperature / targetTemperature ); - ctrl = ( ctrl < 0.0F ? HEATERS_MIN_DUTY_CYCLE: ctrl * D45_HEAT_GAIN ); - //Apply dutycycle limit - ctrl = MIN( ctrl, HEATERS_MAX_DUTY_CYCLE ); - ctrl = MAX( ctrl, HEATERS_MIN_DUTY_CYCLE ); - } - - control[ heater ].data = ( ctrl * HEATERS_DUTY_CYCLE_CONVERSION_FACTOR ) + FLOAT_TO_INT_ROUNDUP_OFFSET; - break; - - default: - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DD_SOFTWARE_FAULT, SW_FAULT_ID_HEATERS_INVALID_HEATER_ID_SELECTED, heater ) - break; + control[ heater ].data = ( ctrl * HEATERS_DUTY_CYCLE_CONVERSION_FACTOR ) + FLOAT_TO_INT_ROUNDUP_OFFSET; } heatersStatus[ heater ].hasTargetTempChanged = FALSE; @@ -579,11 +567,11 @@ if ( D5_HEAT == heater ) { BOOL heaterCntrl = (BOOL)control; - setFPGACPrimaryHeaterOnOffControl( heaterCntrl ); + setFPGAD5HeaterOnOffControl( heaterCntrl ); } else { - setFPGATrimmerHeaterPWMControl( (U08)control ); + setFPGAD45HeaterPWMControl( (U08)control ); } } else