Use new sensors for TPS (#1111)

* tps init

* fix init

* call init

* use correct sensors, scale using constant

* includes

* handle error
This commit is contained in:
Matthew Kennedy 2020-02-03 22:54:05 -08:00 committed by GitHub
parent b47462b4de
commit eb472c49b2
6 changed files with 59 additions and 4 deletions

View File

@ -28,6 +28,10 @@ enum class SensorType : unsigned char {
// This is the second sensor // This is the second sensor
Tps1Secondary, Tps1Secondary,
Tps2,
Tps2Primary,
Tps2Secondary,
// Leave me at the end! // Leave me at the end!
PlaceholderLast PlaceholderLast
}; };

View File

@ -11,9 +11,6 @@
EXTERN_ENGINE; EXTERN_ENGINE;
// Scaled to 1000 counts = 5.0 volts
#define TPS_TS_CONVERSION 200
/** /**
* set mock_pedal_position X * set mock_pedal_position X
* See also directPwmValue * See also directPwmValue

View File

@ -12,6 +12,9 @@
#include "global.h" #include "global.h"
#include "engine_configuration.h" #include "engine_configuration.h"
// Scaled to 1000 counts = 5.0 volts
#define TPS_TS_CONVERSION 200
bool hasPedalPositionSensor(DECLARE_ENGINE_PARAMETER_SIGNATURE); bool hasPedalPositionSensor(DECLARE_ENGINE_PARAMETER_SIGNATURE);
percent_t getPedalPosition(DECLARE_ENGINE_PARAMETER_SIGNATURE); percent_t getPedalPosition(DECLARE_ENGINE_PARAMETER_SIGNATURE);
/** /**

View File

@ -1,3 +1,4 @@
INIT_SRC_CPP = $(PROJECT_DIR)/init/sensor/init_sensors.cpp \ INIT_SRC_CPP = $(PROJECT_DIR)/init/sensor/init_sensors.cpp \
$(PROJECT_DIR)/init/sensor/init_oil_pressure.cpp $(PROJECT_DIR)/init/sensor/init_oil_pressure.cpp \
$(PROJECT_DIR)/init/sensor/init_tps.cpp

View File

@ -6,11 +6,15 @@
#include "init.h" #include "init.h"
#include "sensor.h" #include "sensor.h"
void initTps();
void initOilPressure(); void initOilPressure();
void initSensorCli(); void initSensorCli();
void initSensors() { void initSensors() {
// TPS
initTps();
// aux sensors // aux sensors
initOilPressure(); initOilPressure();

View File

@ -0,0 +1,46 @@
#include "adc_subscription.h"
#include "engine.h"
#include "error_handling.h"
#include "global.h"
#include "functional_sensor.h"
#include "linear_func.h"
#include "tps.h"
EXTERN_ENGINE;
LinearFunc tpsFunc1p;
//LinearFunc tpsFunc1s;
LinearFunc tpsFunc2p;
//LinearFunc tpsFunc2s;
FunctionalSensor tpsSens1p(SensorType::Tps1, MS2NT(10));
//FunctionalSensor tpsSens1s(SensorType::Tps1Secondary, MS2NT(10));
FunctionalSensor tpsSens2p(SensorType::Tps2, MS2NT(10));
//FunctionalSensor tpsSens2s(SensorType::Tps2Secondary, MS2NT(10));
static void initTpsFunc(LinearFunc& func, FunctionalSensor& sensor, adc_channel_e channel, float closed, float open) {
// Only register if we have a sensor
if (channel == EFI_ADC_NONE) {
return;
}
func.configure(
closed / TPS_TS_CONVERSION, 0,
open / TPS_TS_CONVERSION, 100,
CONFIG(tpsErrorDetectionTooLow),
CONFIG(tpsErrorDetectionTooHigh)
);
sensor.setFunction(func);
AdcSubscription::SubscribeSensor(sensor, channel);
if (!sensor.Register()) {
firmwareError(CUSTOM_INVALID_TPS_SETTING, "Duplicate TPS registration for TPS sensor");
}
}
void initTps() {
initTpsFunc(tpsFunc1p, tpsSens1p, CONFIG(tps1_1AdcChannel), CONFIG(tpsMin), CONFIG(tpsMax));
initTpsFunc(tpsFunc2p, tpsSens2p, CONFIG(tps2_1AdcChannel), CONFIG(tps2Min), CONFIG(tps2Max));
}