only:alphax_4chan
This commit is contained in:
rusefillc 2023-12-12 14:10:57 -05:00
parent e3452b37b1
commit 699d588849
6 changed files with 43 additions and 12 deletions

View File

@ -18,6 +18,9 @@
#define show_Hellen_presets true
#define show_4chan_presets true
#define ts_show_ign_key_analog_input true
! todo: insert actual value here!
#define IGN_KEY_DIVIDER 3
#define TS_TRIGGER_SCOPE_CHANNEL_1_NAME "C2/C3 Crank VR"
#define TS_TRIGGER_SCOPE_CHANNEL_2_NAME "E5/E6 Cam VR"

View File

@ -4,6 +4,11 @@
void MainRelayController::onSlowCallback() {
#if EFI_MAIN_RELAY_CONTROL
#if defined(IGN_KEY_DIVIDER)
if (isAdcChannelValid(engineConfiguration->ignKeyAdcChannel)) {
hasIgnitionVoltage = Sensor::getOrZero(SensorType::IgnKeyVoltage) > 5;
} else
#endif // IGN_KEY_DIVIDER
if (engineConfiguration->ignitionKeyDigitalPin != Gpio::Unassigned) {
// separate digital input pin just for main relay logic since it's preferred to read voltage from main relay
// key-on is usually a bit smaller voltage than main relay but sometimes even 1v off!

View File

@ -1,6 +1,8 @@
/*
* @file mc33816.cpp
*
* TL,DR: GDI
*
* The NXP MC33816 is a programmable gate driver IC for precision solenoid control applications.
*
*

View File

@ -5,23 +5,42 @@
#include "functional_sensor.h"
#include "linear_func.h"
static LinearFunc vbattFunc;
static FunctionalSensor vbattSensor(SensorType::BatteryVoltage, /* timeout = */ MS2NT(100));
static FunctionalSensor ignBattSensor(SensorType::IgnKeyVoltage, /* timeout = */ MS2NT(100));
void initVbatt() {
vbattFunc.configure(0, 0, 1, engineConfiguration->vbattDividerCoeff, 0, 50);
vbattSensor.setFunction(vbattFunc);
if (!isAdcChannelValid(engineConfiguration->vbattAdcChannel)) {
return;
{
static LinearFunc vbattFunc; // static with scoped visibility just to reduce change of code defect
vbattFunc.configure(0, 0, 1, engineConfiguration->vbattDividerCoeff, 0, 50);
vbattSensor.setFunction(vbattFunc);
}
// adcVoltsPerVolt is set to 1.0 because vbatt doesn't go thru the analog input divider
AdcSubscription::SubscribeSensor(vbattSensor, engineConfiguration->vbattAdcChannel, /* filter HZ = */ 20, /* adcVoltsPerVolt = */ 1.0f);
#if defined(IGN_KEY_DIVIDER)
{
static LinearFunc ignBattFunc; // static with scoped visibility just to reduce change of code defect
ignBattFunc.configure(0, 0, 1, IGN_KEY_DIVIDER, 0, 50);
ignBattSensor.setFunction(ignBattFunc);
}
#endif // IGN_KEY_DIVIDER
vbattSensor.Register();
if (isAdcChannelValid(engineConfiguration->vbattAdcChannel)) {
// adcVoltsPerVolt is set to 1.0 because vbatt doesn't go thru the analog input divider
AdcSubscription::SubscribeSensor(vbattSensor, engineConfiguration->vbattAdcChannel, /* filter HZ = */ 20, /* adcVoltsPerVolt = */ 1.0f);
vbattSensor.Register();
}
#if defined(IGN_KEY_DIVIDER)
if (isAdcChannelValid(engineConfiguration->ignKeyAdcChannel)) {
AdcSubscription::SubscribeSensor(ignBattSensor, engineConfiguration->ignKeyAdcChannel, /* filter HZ = */ 20, /* adcVoltsPerVolt = */ 1.0f);
ignBattSensor.Register();
}
#endif // IGN_KEY_DIVIDER
}
void deinitVbatt() {
AdcSubscription::UnsubscribeSensor(vbattSensor, engineConfiguration->vbattAdcChannel);
#if defined(IGN_KEY_DIVIDER)
AdcSubscription::UnsubscribeSensor(ignBattSensor, engineConfiguration->ignKeyAdcChannel);
#endif // IGN_KEY_DIVIDER
}

View File

@ -2213,6 +2213,8 @@ end_struct
#define SIMULATOR_TUNE_BIN_FILE_NAME "generated/simulator_tune_image.bin"
! some board files override this value using prepend file
#define ts_show_ign_key_switch false
#define ts_show_ign_key_analog_input false
#define ts_show_hip9011 false
#define ts_show_tps_sent false
#define ts_show_inj_diag false

View File

@ -3783,9 +3783,9 @@ cmd_set_engine_type_default = "@@TS_IO_TEST_COMMAND_char@@@@ts_command_e_TS_
; Engine->Battery & Alternator
dialog = batteryDialog, "Battery Settings", yAxis
field = "vBatt ADC input", vbattAdcChannel
field = "Ignition Key ADC input", ignKeyAdcChannel
field = "Ignition Key Switch", ignitionKeyDigitalPin
field = "Ignition Key Switch Mode", ignitionKeyDigitalPinMode
field = "Ignition Key ADC input", ignKeyAdcChannel@@if_ts_show_ign_key_analog_input
field = "Ignition Key Switch", ignitionKeyDigitalPin@@if_ts_show_ign_key_switch
field = "Ignition Key Switch Mode", ignitionKeyDigitalPinMode@@if_ts_show_ign_key_switch
field = "Battery Input Divider Coefficient", vbattDividerCoeff
dialog = alternator, "Alternator Settings", yAxis
field = "Enabled", isAlternatorControlEnabled