From ff53f35d99fbf42f9a810818c4f3f77c20361d55 Mon Sep 17 00:00:00 2001 From: rusEfi Date: Fri, 10 Jul 2015 18:02:29 -0400 Subject: [PATCH] auto-sync --- firmware/hw_layer/HIP9011.cpp | 20 ++++++++++++++++--- .../ui/src/com/rusefi/ui/SettingsTab.java | 5 ++++- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/firmware/hw_layer/HIP9011.cpp b/firmware/hw_layer/HIP9011.cpp index b7c3cfcd29..fb6bbf4101 100644 --- a/firmware/hw_layer/HIP9011.cpp +++ b/firmware/hw_layer/HIP9011.cpp @@ -64,6 +64,7 @@ static int spiCount = 0; static unsigned char tx_buff[1]; static unsigned char rx_buff[1]; static int correctResponse = 0; +static int invalidResponse = 0; static char pinNameBuffer[16]; static float currentAngleWindowWidth; @@ -95,12 +96,21 @@ SPI_CR1_MSTR | //SPI_CR1_BR_1 // 5MHz SPI_CR1_CPHA | SPI_CR1_BR_0 | SPI_CR1_BR_1 | SPI_CR1_BR_2 }; +static void checkResponse(void) { + if (tx_buff[0] == rx_buff[0]) { + correctResponse++; + } else { + invalidResponse++; + } +} + +// this macro is only used on startup #define SPI_SYNCHRONOUS(value) \ spiSelect(driver); \ tx_buff[0] = value; \ spiExchange(driver, 1, tx_buff, rx_buff); \ spiUnselect(driver); \ - if (rx_buff[0] == value) correctResponse++; + checkResponse(); // todo: make this configurable static SPIDriver *driver = &SPID2; @@ -131,8 +141,8 @@ static void showHipInfo(void) { currentIntergratorIndex, engineConfiguration->knockVThreshold, engine->knockCount, engineConfiguration->maxKnockSubDeg); - scheduleMsg(logger, "spi= IntHold@%s response count=%d", hwPortname(boardConfiguration->hip9011IntHoldPin), - correctResponse); + scheduleMsg(logger, "spi= IntHold@%s response count=%d incorrect response=%d", hwPortname(boardConfiguration->hip9011IntHoldPin), + correctResponse, invalidResponse); scheduleMsg(logger, "CS@%s updateCount=%d", hwPortname(boardConfiguration->hip9011CsPin), settingUpdateCount); scheduleMsg(logger, "hip %fv/last=%f@%s/max=%f spiCount=%d adv=%d", @@ -239,9 +249,13 @@ static void setGain(float value) { showHipInfo(); } +/** + * this is the end of the non-synchronous exchange + */ static void endOfSpiExchange(SPIDriver *spip) { spiUnselectI(driver); state = READY_TO_INTEGRATE; + checkResponse(); } static int getBandIndex(void) { diff --git a/java_console/ui/src/com/rusefi/ui/SettingsTab.java b/java_console/ui/src/com/rusefi/ui/SettingsTab.java index b79edc36bb..20b964cb4d 100644 --- a/java_console/ui/src/com/rusefi/ui/SettingsTab.java +++ b/java_console/ui/src/com/rusefi/ui/SettingsTab.java @@ -11,7 +11,7 @@ import java.awt.*; import java.util.concurrent.atomic.AtomicBoolean; public class SettingsTab { - private final JPanel panel = new JPanel(new GridLayout(6, 3)); + private final JPanel panel = new JPanel(new GridLayout(8, 3)); private final JPanel content = new JPanel(new BorderLayout()); public SettingsTab() { @@ -28,6 +28,7 @@ public class SettingsTab { panel.add(UiUtils.wrap(new EnumConfigField(Fields.ALGORITHM, "algorithm").getContent())); panel.add(UiUtils.wrap(new EnumConfigField(Fields.TRIGGER_TYPE, "trigger type").getContent())); panel.add(new BitConfigField(Fields.USEONLYFRONTFORTRIGGER, "Only Front").getContent()); + panel.add(new BitConfigField(Fields.ISPRINTTRIGGERSYNCHDETAILS, "gap info").getContent()); panel.add(UiUtils.wrap(new EnumConfigField(Fields.TRIGGERINPUTPINS1, "trigger #1 input").getContent())); panel.add(UiUtils.wrap(new EnumConfigField(Fields.TRIGGERINPUTPINS2, "trigger #2 input").getContent())); // panel.add(UiUtils.wrap(new EnumConfigField(Fields.TRIGGERINPUTPINS3, "trigger #3 input").getContent())); @@ -38,6 +39,8 @@ public class SettingsTab { panel.add(UiUtils.wrap(new EnumConfigField(Fields.HIP9011INTHOLDPIN, "int/hold pin").getContent())); panel.add(UiUtils.wrap(new EnumConfigField(Fields.HIP9011INTHOLDPINMODE, "int/hold pin mode").getContent())); + panel.add(UiUtils.wrap(new EnumConfigField(Fields.IGNITIONPINS1, "ign #1").getContent())); + panel.add(UiUtils.wrap(new EnumConfigField(Fields.IGNITIONPINS3, "ign #3").getContent())); panel.add(UiUtils.wrap(new EnumConfigField(Fields.AFR_HWCHANNEL, "AFR channel").getContent())); panel.add(UiUtils.wrap(new EnumConfigField(Fields.MAFADCCHANNEL, "MAF channel").getContent()));