steps towards dual ETB
This commit is contained in:
parent
067aa0aeee
commit
07f71c8dfa
|
@ -257,7 +257,7 @@ static void onlineApplyWorkingCopyBytes(int currentPageId, uint32_t offset, int
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
extern EtbController etbController;
|
extern EtbController etbController[ETB_COUNT];
|
||||||
|
|
||||||
static const void * getStructAddr(int structId) {
|
static const void * getStructAddr(int structId) {
|
||||||
switch (structId) {
|
switch (structId) {
|
||||||
|
@ -275,7 +275,7 @@ static const void * getStructAddr(int structId) {
|
||||||
return static_cast<trigger_state_s*>(&engine->triggerCentral.triggerState);
|
return static_cast<trigger_state_s*>(&engine->triggerCentral.triggerState);
|
||||||
#if EFI_ELECTRONIC_THROTTLE_BODY
|
#if EFI_ELECTRONIC_THROTTLE_BODY
|
||||||
case LDS_ETB_PID_STATE_INDEX:
|
case LDS_ETB_PID_STATE_INDEX:
|
||||||
return static_cast<pid_state_s*>(&etbController.etbPid);
|
return static_cast<pid_state_s*>(&etbController[0].etbPid);
|
||||||
#endif /* EFI_ELECTRONIC_THROTTLE_BODY */
|
#endif /* EFI_ELECTRONIC_THROTTLE_BODY */
|
||||||
|
|
||||||
#ifndef EFI_IDLE_CONTROL
|
#ifndef EFI_IDLE_CONTROL
|
||||||
|
|
|
@ -170,9 +170,6 @@ public:
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
#define ETB_COUNT 2
|
|
||||||
|
|
||||||
static EtbHardware etbHardware[ETB_COUNT];
|
|
||||||
|
|
||||||
extern percent_t mockPedalPosition;
|
extern percent_t mockPedalPosition;
|
||||||
|
|
||||||
|
@ -183,9 +180,8 @@ static percent_t currentEtbDuty;
|
||||||
// this macro clamps both positive and negative percentages from about -100% to 100%
|
// this macro clamps both positive and negative percentages from about -100% to 100%
|
||||||
#define ETB_PERCENT_TO_DUTY(X) (maxF(minF((X * 0.01), ETB_DUTY_LIMIT - 0.01), 0.01 - ETB_DUTY_LIMIT))
|
#define ETB_PERCENT_TO_DUTY(X) (maxF(minF((X * 0.01), ETB_DUTY_LIMIT - 0.01), 0.01 - ETB_DUTY_LIMIT))
|
||||||
|
|
||||||
EtbController::EtbController(DcMotor *motor)
|
void EtbController::init(DcMotor *motor) {
|
||||||
: m_motor(motor)
|
this->m_motor = motor;
|
||||||
{
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -333,7 +329,8 @@ DISPLAY(DISPLAY_IF(hasEtbPedalPositionSensor))
|
||||||
#endif /* EFI_TUNER_STUDIO */
|
#endif /* EFI_TUNER_STUDIO */
|
||||||
}
|
}
|
||||||
|
|
||||||
EtbController etbController(&etbHardware[0].dcMotor);
|
static EtbHardware etbHardware[ETB_COUNT];
|
||||||
|
EtbController etbController[ETB_COUNT];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* At the moment there are TWO ways to use this
|
* At the moment there are TWO ways to use this
|
||||||
|
@ -391,12 +388,14 @@ static void showEthInfo(void) {
|
||||||
scheduleMsg(&logger, "%d: dir=%d DC=%f", i, etb->dcMotor.isOpenDirection(), etb->dcMotor.get());
|
scheduleMsg(&logger, "%d: dir=%d DC=%f", i, etb->dcMotor.isOpenDirection(), etb->dcMotor.get());
|
||||||
}
|
}
|
||||||
|
|
||||||
etbController.etbPid.showPidStatus(&logger, "ETB");
|
etbController[0].etbPid.showPidStatus(&logger, "ETB");
|
||||||
#endif /* EFI_PROD_CODE */
|
#endif /* EFI_PROD_CODE */
|
||||||
}
|
}
|
||||||
|
|
||||||
static void etbPidReset() {
|
static void etbPidReset() {
|
||||||
etbController.etbPid.reset();
|
for (int i = 0 ; i < ETB_COUNT; i++) {
|
||||||
|
etbController[i].etbPid.reset();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#if EFI_PROD_CODE
|
#if EFI_PROD_CODE
|
||||||
|
@ -542,8 +541,10 @@ void stopETBPins(void) {
|
||||||
#endif /* EFI_PROD_CODE */
|
#endif /* EFI_PROD_CODE */
|
||||||
|
|
||||||
void onConfigurationChangeElectronicThrottleCallback(engine_configuration_s *previousConfiguration) {
|
void onConfigurationChangeElectronicThrottleCallback(engine_configuration_s *previousConfiguration) {
|
||||||
bool shouldResetPid = !etbController.etbPid.isSame(&previousConfiguration->etb);
|
bool shouldResetPid = !etbController[0].etbPid.isSame(&previousConfiguration->etb);
|
||||||
etbController.shouldResetPid = shouldResetPid;
|
for (int i = 0 ; i < ETB_COUNT; i++) {
|
||||||
|
etbController[i].shouldResetPid = shouldResetPid;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void startETBPins(DECLARE_ENGINE_PARAMETER_SIGNATURE) {
|
void startETBPins(DECLARE_ENGINE_PARAMETER_SIGNATURE) {
|
||||||
|
@ -625,9 +626,12 @@ void initElectronicThrottle(DECLARE_ENGINE_PARAMETER_SIGNATURE) {
|
||||||
addConsoleActionI("etb_freq", setEtbFrequency);
|
addConsoleActionI("etb_freq", setEtbFrequency);
|
||||||
#endif /* EFI_PROD_CODE */
|
#endif /* EFI_PROD_CODE */
|
||||||
|
|
||||||
etbController.etbPid.initPidClass(&engineConfiguration->etb);
|
for (int i = 0 ; i < ETB_COUNT; i++) {
|
||||||
|
etbController[i].init(&etbHardware[i].dcMotor);
|
||||||
|
etbController[i].etbPid.initPidClass(&engineConfiguration->etb);
|
||||||
|
INJECT_ENGINE_REFERENCE(etbController[i]);
|
||||||
|
}
|
||||||
|
|
||||||
INJECT_ENGINE_REFERENCE(etbController);
|
|
||||||
|
|
||||||
pedal2tpsMap.init(config->pedalToTpsTable, config->pedalToTpsPedalBins, config->pedalToTpsRpmBins);
|
pedal2tpsMap.init(config->pedalToTpsTable, config->pedalToTpsPedalBins, config->pedalToTpsRpmBins);
|
||||||
|
|
||||||
|
@ -698,7 +702,9 @@ void initElectronicThrottle(DECLARE_ENGINE_PARAMETER_SIGNATURE) {
|
||||||
|
|
||||||
etbPidReset();
|
etbPidReset();
|
||||||
|
|
||||||
etbController.Start();
|
for (int i = 0 ; i < ETB_COUNT; i++) {
|
||||||
|
etbController[i].Start();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* EFI_ELECTRONIC_THROTTLE_BODY */
|
#endif /* EFI_ELECTRONIC_THROTTLE_BODY */
|
||||||
|
|
|
@ -14,12 +14,16 @@
|
||||||
#include "engine.h"
|
#include "engine.h"
|
||||||
#include "periodic_task.h"
|
#include "periodic_task.h"
|
||||||
|
|
||||||
|
#ifndef ETB_COUNT
|
||||||
|
#define ETB_COUNT 2
|
||||||
|
#endif /* ETB_COUNT */
|
||||||
|
|
||||||
class DcMotor;
|
class DcMotor;
|
||||||
|
|
||||||
class EtbController final : public PeriodicTimerController {
|
class EtbController final : public PeriodicTimerController {
|
||||||
public:
|
public:
|
||||||
DECLARE_ENGINE_PTR;
|
DECLARE_ENGINE_PTR;
|
||||||
EtbController(DcMotor *etb);
|
void init(DcMotor *motor);
|
||||||
|
|
||||||
int getPeriodMs() override;
|
int getPeriodMs() override;
|
||||||
void PeriodicTask() override;
|
void PeriodicTask() override;
|
||||||
|
|
|
@ -819,6 +819,6 @@ int getRusEfiVersion(void) {
|
||||||
if (initBootloader() != 0)
|
if (initBootloader() != 0)
|
||||||
return 123;
|
return 123;
|
||||||
#endif /* EFI_BOOTLOADER_INCLUDE_CODE */
|
#endif /* EFI_BOOTLOADER_INCLUDE_CODE */
|
||||||
return 20191127;
|
return 20191128;
|
||||||
}
|
}
|
||||||
#endif /* EFI_UNIT_TEST */
|
#endif /* EFI_UNIT_TEST */
|
||||||
|
|
Loading…
Reference in New Issue