Index: firmware/App/Controllers/Valves.c =================================================================== diff -u -r014dc3dfd1d13bf6a53974f6f8a8c1ad7bea42db -rd9204dd2eba214edab007ce327c439113ab5fe41 --- firmware/App/Controllers/Valves.c (.../Valves.c) (revision 014dc3dfd1d13bf6a53974f6f8a8c1ad7bea42db) +++ firmware/App/Controllers/Valves.c (.../Valves.c) (revision d9204dd2eba214edab007ce327c439113ab5fe41) @@ -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 50 ///< Valve PWM Period in 0.1 us res ( 20kHz ) +#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 = 0; // 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 ); + setFPGAValvePWMPeriod( VALVE_PWM_PERIOD ); + setFPGAValvePWMEnable( valvePWMEnable ); + // initially set all valves to de-energized state via FPGA updateValveStates( ALL_VALVES_DEENERGIZED ); setFPGAValveStates( commandedValvesStates );