Index: firmware/App/Controllers/Valves.c =================================================================== diff -u -r014dc3dfd1d13bf6a53974f6f8a8c1ad7bea42db -rcf82e0c4128078cce50bd6c7969ea7192ab5be94 --- firmware/App/Controllers/Valves.c (.../Valves.c) (revision 014dc3dfd1d13bf6a53974f6f8a8c1ad7bea42db) +++ firmware/App/Controllers/Valves.c (.../Valves.c) (revision cf82e0c4128078cce50bd6c7969ea7192ab5be94) @@ -35,6 +35,10 @@ #define ENERGIZED 1 ///< 1 for energized valve. #define ALL_VALVES_DEENERGIZED 0x0000 ///< 0 in U16 bit field for all valves. +#define VALVE_PWM_PERIOD 20000 ///< Valve PWM Period +#define VALVE_PWM_LOW ( VALVE_PWM_PERIOD * 0.2 ) ///< Valve low PWM percentage +#define VALVE_PWM_PULL_IN 100 ///< Valve 'strike' period at 100% PWM in ms + #define MAX_VALVE_STATE_MISMATCH_TIMER_COUNT (100 / TASK_PRIORITY_INTERVAL ) ///< Maximum time commanded valves state can fail to match read back valve states in a row. #define VALVES_STATE_PUB_INTERVAL ( MS_PER_SECOND / TASK_PRIORITY_INTERVAL ) ///< Interval ( ms / task time ) at which valves states are published on CAN bus. @@ -83,6 +87,7 @@ void initValves( void ) { FP_VALVES_T valve; + U16 valvePWMenable; // initialize valve states for ( valve = FP_FIRST_VALVE; valve < FP_NUM_OF_VALVES; valve++ ) @@ -97,6 +102,7 @@ valveSensedStates[ valve ].ovInitData = DEENERGIZED; valveSensedStates[ valve ].ovData = DEENERGIZED; valveSensedStates[ valve ].override = OVERRIDE_RESET; + valvePWMenable |= ValveBits[ valve ]; } // initialize time intervals and timer counters @@ -107,6 +113,12 @@ valvesStatesPublishInterval.ovInitData = 0; valvesStatesPublishInterval.override = OVERRIDE_RESET; + // initially set valve PWM configuration and enable + setFPGAValvePWMPullIn( VALVE_PWM_PULL_IN ); + setFPGAValvePWMLow( VALVE_PWM_LOW ); + setFPGAValvePWMPeroid( VALVE_PWM_PERIOD ); + setFPGAValvePWMEnable( valvePWMenable ); + // initially set all valves to de-energized state via FPGA updateValveStates( ALL_VALVES_DEENERGIZED ); setFPGAValveStates( commandedValvesStates ); Index: firmware/App/Services/FpgaFP.c =================================================================== diff -u -r6d85a90d2325163e936055a620a8b6aa1a6db65a -rcf82e0c4128078cce50bd6c7969ea7192ab5be94 --- firmware/App/Services/FpgaFP.c (.../FpgaFP.c) (revision 6d85a90d2325163e936055a620a8b6aa1a6db65a) +++ firmware/App/Services/FpgaFP.c (.../FpgaFP.c) (revision cf82e0c4128078cce50bd6c7969ea7192ab5be94) @@ -405,6 +405,39 @@ /*********************************************************************//** * @brief + * The setFPGAValvePWMEnable function sets the RO valve PWM states with + * * an 8-bit mask representing the set of states with a 1 meaning "enabled" + * and a 0 meaning "disabled" + * @details \b Inputs: none + * @details \b Outputs: fpgaActuatorSetPoints.valvePWMEnable + * @param valvePWMStates bit mask for requested valve states. + * @return none + *************************************************************************/ +void setFPGAValvePWMEnable( U16 valvePWMStates ) +{ + fpgaActuatorSetPoints.valvePWMEnable = valvePWMStates; +} + +U16 getFPGAValvePWMEnable( void ) +{ + return fpgaSensorReadings.valvePWMEnableReadback; +} +void setFPGAValvePWMPullIn( U16 valvePWMPullIn ) +{ + fpgaActuatorSetPoints.valvePWMPullIn = valvePWMPullIn; +} + +void setFPGAValvePWMLow( U16 valvePWMLow ) +{ + fpgaActuatorSetPoints.valveVwiPWMLow = valvePWMLow; +} + +void setFPGAValvePWMPeroid( U16 valvePWMPeroid ) +{ + fpgaActuatorSetPoints.valveVwiPWMPeriod = valvePWMPeroid; +} +/*********************************************************************//** + * @brief * The setFPGAP12PumpEnable function enables or disables the P12 pump. * @details \b Inputs: none * @details \b Outputs: fpgaActuatorSetPoints.p12PumpControl Index: firmware/App/Services/FpgaFP.h =================================================================== diff -u -r81aa682aa24931c7f44aea82ec72fb3dfabc7890 -rcf82e0c4128078cce50bd6c7969ea7192ab5be94 --- firmware/App/Services/FpgaFP.h (.../FpgaFP.h) (revision 81aa682aa24931c7f44aea82ec72fb3dfabc7890) +++ firmware/App/Services/FpgaFP.h (.../FpgaFP.h) (revision cf82e0c4128078cce50bd6c7969ea7192ab5be94) @@ -44,6 +44,11 @@ void setFPGAValveStates( U16 valveStates ); U16 getFPGAValveStates( void ); +void setFPGAValvePWMEnable( U16 valvePWMStates ); +U16 getFPGAValvePWMEnable( void ); +void setFPGAValvePWMPullIn( U16 valvePWMPullIn ); +void setFPGAValvePWMLow( U16 valvePWMLow ); +void setFPGAValvePWMPeroid( U16 valvePWMPeroid ); void setFPGAP12PumpEnable( BOOL enable ); void setFPGAP12PumpPWM( U16 pwm );