Subaru svx (#2777)

* Revert "hiding 3rd channel for now"

This reverts commit 00c5c786c7.

* trigger subaru SVX: disable cranck #2 channel

* Board subaru-eg33: fix D10 pin defined twice

* Board subaru-eg33: renumber ignition ouput according cylinder order

* board subaru eg33: use common_make.sh to get dfu files

* board subaru-eg33: update default configuration
This commit is contained in:
Andrey G 2021-05-31 11:25:57 +03:00 committed by GitHub
parent 359e59a7d8
commit 078b65edd9
4 changed files with 90 additions and 61 deletions

View File

@ -89,16 +89,18 @@ void setBoardDefaultConfiguration(void) {
engineConfiguration->injectionPins[4 - 1] = MC33810_1_OUT_1;
engineConfiguration->injectionPins[5 - 1] = MC33810_0_OUT_2;
engineConfiguration->injectionPins[6 - 1] = MC33810_1_OUT_2;
/* Additional, not used for EG33 */
engineConfiguration->injectionPins[7 - 1] = MC33810_0_OUT_3;
engineConfiguration->injectionPins[8 - 1] = MC33810_1_OUT_3;
/* Ignition */
engineConfiguration->ignitionPins[1 - 1] = MC33810_0_GD_0;
engineConfiguration->ignitionPins[1 - 1] = MC33810_1_GD_3;
engineConfiguration->ignitionPins[2 - 1] = MC33810_1_GD_2;
engineConfiguration->ignitionPins[3 - 1] = MC33810_0_GD_1;
engineConfiguration->ignitionPins[4 - 1] = MC33810_1_GD_3;
engineConfiguration->ignitionPins[4 - 1] = MC33810_0_GD_0;
engineConfiguration->ignitionPins[5 - 1] = MC33810_0_GD_3;
engineConfiguration->ignitionPins[6 - 1] = MC33810_1_GD_1;
/* Additional, not used for EG33 */
engineConfiguration->ignitionPins[7 - 1] = MC33810_0_GD_2;
engineConfiguration->ignitionPins[8 - 1] = MC33810_1_GD_0;
//engineConfiguration->ignitionPinMode = OM_INVERTED;
@ -139,9 +141,15 @@ void setBoardDefaultConfiguration(void) {
engineConfiguration->fuelPumpPin = TLE6240_PIN_5;
engineConfiguration->fuelPumpPinMode = OM_DEFAULT;
/* self shutdown? */
engineConfiguration->mainRelayPin = GPIOH_7;
engineConfiguration->mainRelayPinMode = OM_DEFAULT;
/* Self shutdown ouput:
* High level on this pin will keep Main Relay enabled in any position of ignition key
* This cause inability to stop engine by key.
* From other side main relay is powered from key position "IGN" OR this output (through diodes)
* So ECU does not need to drive this signal.
* The only puprose of this output is to keep ECU powered to finish some stuff before power off itself
* To support this we need to sense ING input from key switch */
//engineConfiguration->mainRelayPin = GPIOH_7;
//engineConfiguration->mainRelayPinMode = OM_DEFAULT;
/* spi driven - TLE6240 - OUT1, OUT2 */
engineConfiguration->fanPin = TLE6240_PIN_1;

View File

@ -47,29 +47,29 @@ pins:
- pin: 7
id: MC33810_0_GD_0
class: outputs
function: Ignition 1
ts_name: D07 - Ignition 1
function: Ignition 4
ts_name: D07 - Ignition Cyl 4
type: ign
- pin: 8
id: MC33810_1_GD_2
class: outputs
function: Ignition 2
ts_name: D08 - Ignition 2
ts_name: D08 - Ignition Cyl 2
type: ign
- pin: 9
id: MC33810_0_GD_1
class: outputs
function: Ignition 3
ts_name: D09 - Ignition 3
ts_name: D09 - Ignition Cyl 3
type: ign
- pin: 10
id: MC33810_1_GD_3
class: outputs
function: Ignition 4
ts_name: D10 - Ignition 4
function: Ignition 1
ts_name: D10 - Ignition Cyl 1
type: ign
- pin: 11
@ -105,7 +105,7 @@ pins:
id: MC33810_1_GD_1
class: outputs
function: Ignition 6
ts_name: D10 - Ignition 6
ts_name: D16 - Ignition Cyl 6
type: ign
- pin: 17
@ -140,7 +140,7 @@ pins:
id: MC33810_0_GD_3
class: outputs
function: Ignition 5
ts_name: D21 - Ignition 5
ts_name: D21 - Ignition Cyl 5
type: ign
- pin: 22

View File

@ -8,7 +8,4 @@ export DEFAULT_ENGINE_TYPE="-DDEFAULT_ENGINE_TYPE=SUBARUEG33_DEFAULTS"
#export DEBUG_LEVEL_OPT="-O0"
#export USE_BOOTLOADER=yes
#bash config/boards/common_make.sh
#CROSS_COMPILE=../../toolchain/gcc-arm-none-eabi-8-2018-q4-major/bin/arm-none-eabi- make $*
CROSS_COMPILE=../../toolchain/gcc-arm-none-eabi-9-2019-q4-major/bin/arm-none-eabi- make $*
bash ../common_make.sh

View File

@ -132,8 +132,6 @@ void initializeSubaru7_6(TriggerWaveform *s) {
void initializeSubaru_SVX(TriggerWaveform *s) {
int n;
/* crank 2 falling happens between crank #1 fallings */
float crank_2_offset = 15.0;
float cam_offset = 15.0;
/* we should use only falling edges */
float width = 5.0;
@ -151,6 +149,11 @@ void initializeSubaru_SVX(TriggerWaveform *s) {
//#define SVX_CRANK_2 T_CHANNEL_3
#define SVX_CAM T_PRIMARY
#ifdef SVX_CRANK_2
/* crank 2 falling happens between crank #1 fallings */
float crank_2_offset = 15.0;
#endif
s->initialize(FOUR_STROKE_CAM_SENSOR);
/****** 0 *****/
@ -160,9 +163,11 @@ void initializeSubaru_SVX(TriggerWaveform *s) {
n = 1;
s->addEvent720(CRANK_1_RISE(n), SVX_CRANK_1, TV_RISE);
s->addEvent720(CRANK_1_FALL(n), SVX_CRANK_1, TV_FALL);
/* crank #2 - one 1/1 */
// s->addEvent720(CRANK_1_RISE(n) + crank_2_offset, SVX_CRANK_2, TV_RISE);
// s->addEvent720(CRANK_1_FALL(n) + crank_2_offset, SVX_CRANK_2, TV_FALL);
#ifdef SVX_CRANK_2
/* crank #2 - one 1/1 */
s->addEvent720(CRANK_1_RISE(n) + crank_2_offset, SVX_CRANK_2, TV_RISE);
s->addEvent720(CRANK_1_FALL(n) + crank_2_offset, SVX_CRANK_2, TV_FALL);
#endif
n = 2;
s->addEvent720(CRANK_1_RISE(n), SVX_CRANK_1, TV_RISE);
s->addEvent720(CRANK_1_FALL(n), SVX_CRANK_1, TV_FALL);
@ -173,43 +178,53 @@ void initializeSubaru_SVX(TriggerWaveform *s) {
n = 4;
s->addEvent720(CRANK_1_RISE(n), SVX_CRANK_1, TV_RISE);
s->addEvent720(CRANK_1_FALL(n), SVX_CRANK_1, TV_FALL);
/* cam - one */
s->addEvent720(CRANK_1_RISE(n) + cam_offset, SVX_CAM, TV_RISE);
s->addEvent720(CRANK_1_FALL(n) + cam_offset, SVX_CAM, TV_FALL);
/* cam - one */
s->addEvent720(CRANK_1_RISE(n) + cam_offset, SVX_CAM, TV_RISE);
s->addEvent720(CRANK_1_FALL(n) + cam_offset, SVX_CAM, TV_FALL);
n = 5;
s->addEvent720(CRANK_1_RISE(n), SVX_CRANK_1, TV_RISE);
s->addEvent720(CRANK_1_FALL(n), SVX_CRANK_1, TV_FALL);
/* crank #2 - three - 1/3 */
// s->addEvent720(CRANK_1_RISE(n) + crank_2_offset, SVX_CRANK_2, TV_RISE);
// s->addEvent720(CRANK_1_FALL(n) + crank_2_offset, SVX_CRANK_2, TV_FALL);
#ifdef SVX_CRANK_2
/* crank #2 - three - 1/3 */
s->addEvent720(CRANK_1_RISE(n) + crank_2_offset, SVX_CRANK_2, TV_RISE);
s->addEvent720(CRANK_1_FALL(n) + crank_2_offset, SVX_CRANK_2, TV_FALL);
#endif
n = 6;
s->addEvent720(CRANK_1_RISE(n), SVX_CRANK_1, TV_RISE);
s->addEvent720(CRANK_1_FALL(n), SVX_CRANK_1, TV_FALL);
/* crank #2 - three - 2/3 */
// s->addEvent720(CRANK_1_RISE(n) + crank_2_offset, SVX_CRANK_2, TV_RISE);
// s->addEvent720(CRANK_1_FALL(n) + crank_2_offset, SVX_CRANK_2, TV_FALL);
#ifdef SVX_CRANK_2
/* crank #2 - three - 2/3 */
s->addEvent720(CRANK_1_RISE(n) + crank_2_offset, SVX_CRANK_2, TV_RISE);
s->addEvent720(CRANK_1_FALL(n) + crank_2_offset, SVX_CRANK_2, TV_FALL);
#endif
n = 7;
s->addEvent720(CRANK_1_RISE(n), SVX_CRANK_1, TV_RISE);
s->addEvent720(CRANK_1_FALL(n), SVX_CRANK_1, TV_FALL);
/* +10 - TDC #6 */
/* crank #2 - three - 3/3 */
// s->addEvent720(CRANK_1_RISE(n) + crank_2_offset, SVX_CRANK_2, TV_RISE);
// s->addEvent720(CRANK_1_FALL(n) + crank_2_offset, SVX_CRANK_2, TV_FALL);
#ifdef SVX_CRANK_2
/* crank #2 - three - 3/3 */
s->addEvent720(CRANK_1_RISE(n) + crank_2_offset, SVX_CRANK_2, TV_RISE);
s->addEvent720(CRANK_1_FALL(n) + crank_2_offset, SVX_CRANK_2, TV_FALL);
#endif
n = 8;
s->addEvent720(CRANK_1_RISE(n), SVX_CRANK_1, TV_RISE);
s->addEvent720(CRANK_1_FALL(n), SVX_CRANK_1, TV_FALL);
n = 9;
s->addEvent720(CRANK_1_RISE(n), SVX_CRANK_1, TV_RISE);
s->addEvent720(CRANK_1_FALL(n), SVX_CRANK_1, TV_FALL);
/* crank #2 - two - 1/2 */
// s->addEvent720(CRANK_1_RISE(n) + crank_2_offset, SVX_CRANK_2, TV_RISE);
// s->addEvent720(CRANK_1_FALL(n) + crank_2_offset, SVX_CRANK_2, TV_FALL);
#ifdef SVX_CRANK_2
/* crank #2 - two - 1/2 */
s->addEvent720(CRANK_1_RISE(n) + crank_2_offset, SVX_CRANK_2, TV_RISE);
s->addEvent720(CRANK_1_FALL(n) + crank_2_offset, SVX_CRANK_2, TV_FALL);
#endif
n = 10;
s->addEvent720(CRANK_1_RISE(n), SVX_CRANK_1, TV_RISE);
s->addEvent720(CRANK_1_FALL(n), SVX_CRANK_1, TV_FALL);
/* crank #2 - two - 2/2 */
// s->addEvent720(CRANK_1_RISE(n) + crank_2_offset, SVX_CRANK_2, TV_RISE);
// s->addEvent720(CRANK_1_FALL(n) + crank_2_offset, SVX_CRANK_2, TV_FALL);
#ifdef SVX_CRANK_2
/* crank #2 - two - 2/2 */
s->addEvent720(CRANK_1_RISE(n) + crank_2_offset, SVX_CRANK_2, TV_RISE);
s->addEvent720(CRANK_1_FALL(n) + crank_2_offset, SVX_CRANK_2, TV_FALL);
#endif
n = 11;
s->addEvent720(CRANK_1_RISE(n), SVX_CRANK_1, TV_RISE);
s->addEvent720(CRANK_1_FALL(n), SVX_CRANK_1, TV_FALL);
@ -222,9 +237,11 @@ void initializeSubaru_SVX(TriggerWaveform *s) {
n = 13;
s->addEvent720(CRANK_1_RISE(n), SVX_CRANK_1, TV_RISE);
s->addEvent720(CRANK_1_FALL(n), SVX_CRANK_1, TV_FALL);
/* crank #2 - one - 1/1 */
// s->addEvent720(CRANK_1_RISE(n) + crank_2_offset, SVX_CRANK_2, TV_RISE);
// s->addEvent720(CRANK_1_FALL(n) + crank_2_offset, SVX_CRANK_2, TV_FALL);
#ifdef SVX_CRANK_2
/* crank #2 - one - 1/1 */
s->addEvent720(CRANK_1_RISE(n) + crank_2_offset, SVX_CRANK_2, TV_RISE);
s->addEvent720(CRANK_1_FALL(n) + crank_2_offset, SVX_CRANK_2, TV_FALL);
#endif
n = 14;
s->addEvent720(CRANK_1_RISE(n), SVX_CRANK_1, TV_RISE);
s->addEvent720(CRANK_1_FALL(n), SVX_CRANK_1, TV_FALL);
@ -238,46 +255,53 @@ void initializeSubaru_SVX(TriggerWaveform *s) {
n = 17;
s->addEvent720(CRANK_1_RISE(n), SVX_CRANK_1, TV_RISE);
s->addEvent720(CRANK_1_FALL(n), SVX_CRANK_1, TV_FALL);
/* crank #2 - three - 1/3 */
// s->addEvent720(CRANK_1_RISE(n) + crank_2_offset, SVX_CRANK_2, TV_RISE);
// s->addEvent720(CRANK_1_FALL(n) + crank_2_offset, SVX_CRANK_2, TV_FALL);
#ifdef SVX_CRANK_2
/* crank #2 - three - 1/3 */
s->addEvent720(CRANK_1_RISE(n) + crank_2_offset, SVX_CRANK_2, TV_RISE);
s->addEvent720(CRANK_1_FALL(n) + crank_2_offset, SVX_CRANK_2, TV_FALL);
#endif
n = 18;
s->addEvent720(CRANK_1_RISE(n), SVX_CRANK_1, TV_RISE);
s->addEvent720(CRANK_1_FALL(n), SVX_CRANK_1, TV_FALL);
/* crank #2 - three - 2/3 */
// s->addEvent720(CRANK_1_RISE(n) + crank_2_offset, SVX_CRANK_2, TV_RISE);
// s->addEvent720(CRANK_1_FALL(n) + crank_2_offset, SVX_CRANK_2, TV_FALL);
#ifdef SVX_CRANK_2
/* crank #2 - three - 2/3 */
s->addEvent720(CRANK_1_RISE(n) + crank_2_offset, SVX_CRANK_2, TV_RISE);
s->addEvent720(CRANK_1_FALL(n) + crank_2_offset, SVX_CRANK_2, TV_FALL);
#endif
n = 19;
s->addEvent720(CRANK_1_RISE(n), SVX_CRANK_1, TV_RISE);
s->addEvent720(CRANK_1_FALL(n), SVX_CRANK_1, TV_FALL);
/* +10 - TDC #5 */
/* crank #2 - three - 3/3 */
// s->addEvent720(CRANK_1_RISE(n) + crank_2_offset, SVX_CRANK_2, TV_RISE);
// s->addEvent720(CRANK_1_FALL(n) + crank_2_offset, SVX_CRANK_2, TV_FALL);
#ifdef SVX_CRANK_2
/* crank #2 - three - 3/3 */
s->addEvent720(CRANK_1_RISE(n) + crank_2_offset, SVX_CRANK_2, TV_RISE);
s->addEvent720(CRANK_1_FALL(n) + crank_2_offset, SVX_CRANK_2, TV_FALL);
#endif
n = 20;
s->addEvent720(CRANK_1_RISE(n), SVX_CRANK_1, TV_RISE);
s->addEvent720(CRANK_1_FALL(n), SVX_CRANK_1, TV_FALL);
n = 21;
s->addEvent720(CRANK_1_RISE(n), SVX_CRANK_1, TV_RISE);
s->addEvent720(CRANK_1_FALL(n), SVX_CRANK_1, TV_FALL);
/* crank #2 - two - 1/2 */
// s->addEvent720(CRANK_1_RISE(n) + crank_2_offset, SVX_CRANK_2, TV_RISE);
// s->addEvent720(CRANK_1_FALL(n) + crank_2_offset, SVX_CRANK_2, TV_FALL);
#ifdef SVX_CRANK_2
/* crank #2 - two - 1/2 */
s->addEvent720(CRANK_1_RISE(n) + crank_2_offset, SVX_CRANK_2, TV_RISE);
s->addEvent720(CRANK_1_FALL(n) + crank_2_offset, SVX_CRANK_2, TV_FALL);
#endif
n = 22;
s->addEvent720(CRANK_1_RISE(n), SVX_CRANK_1, TV_RISE);
s->addEvent720(CRANK_1_FALL(n), SVX_CRANK_1, TV_FALL);
/* crank #2 - two - 2/2 */
// s->addEvent720(CRANK_1_RISE(n) + crank_2_offset, SVX_CRANK_2, TV_RISE);
// s->addEvent720(CRANK_1_FALL(n) + crank_2_offset, SVX_CRANK_2, TV_FALL);
#ifdef SVX_CRANK_2
/* crank #2 - two - 2/2 */
s->addEvent720(CRANK_1_RISE(n) + crank_2_offset, SVX_CRANK_2, TV_RISE);
s->addEvent720(CRANK_1_FALL(n) + crank_2_offset, SVX_CRANK_2, TV_FALL);
#endif
n = 23;
s->addEvent720(CRANK_1_RISE(n), SVX_CRANK_1, TV_RISE);
s->addEvent720(CRANK_1_FALL(n), SVX_CRANK_1, TV_FALL);
/* +10 - TDC #4 */
/****** 720 *****/
// s->setTriggerSynchronizationGap2(4.9, 9);
// s->setTriggerSynchronizationGap3(1, 0.6, 1.25);
s->isSynchronizationNeeded = false;
s->useOnlyPrimaryForSync = true;