Merge remote-tracking branch 'origin/master' into master
This commit is contained in:
commit
b54c1f13de
|
@ -1 +1 @@
|
||||||
Subproject commit fbd6f482af0c3764f55749e29722372b2b2e3b36
|
Subproject commit e7cdad3d1a041caea83729fd2c709fd963fb40b0
|
|
@ -1,4 +1,4 @@
|
||||||
// this section was generated automatically by rusEfi tool ConfigDefinition.jar based on hellen_cypress_gen_config.bat integration/rusefi_config.txt Thu Feb 25 02:57:29 UTC 2021
|
// this section was generated automatically by rusEfi tool ConfigDefinition.jar based on hellen_cypress_gen_config.bat integration/rusefi_config.txt Sun Feb 28 23:58:13 UTC 2021
|
||||||
// by class com.rusefi.output.CHeaderConsumer
|
// by class com.rusefi.output.CHeaderConsumer
|
||||||
// begin
|
// begin
|
||||||
#pragma once
|
#pragma once
|
||||||
|
@ -3864,4 +3864,4 @@ struct persistent_config_s {
|
||||||
typedef struct persistent_config_s persistent_config_s;
|
typedef struct persistent_config_s persistent_config_s;
|
||||||
|
|
||||||
// end
|
// end
|
||||||
// this section was generated automatically by rusEfi tool ConfigDefinition.jar based on hellen_cypress_gen_config.bat integration/rusefi_config.txt Thu Feb 25 02:57:29 UTC 2021
|
// this section was generated automatically by rusEfi tool ConfigDefinition.jar based on hellen_cypress_gen_config.bat integration/rusefi_config.txt Sun Feb 28 23:58:13 UTC 2021
|
||||||
|
|
|
@ -1242,7 +1242,7 @@
|
||||||
#define showHumanReadableWarning_offset 976
|
#define showHumanReadableWarning_offset 976
|
||||||
#define showSdCardWarning_offset 76
|
#define showSdCardWarning_offset 76
|
||||||
#define SIGNATURE_BOARD hellen_cypress
|
#define SIGNATURE_BOARD hellen_cypress
|
||||||
#define SIGNATURE_DATE 2021.02.25
|
#define SIGNATURE_DATE 2021.02.28
|
||||||
#define SIGNATURE_HASH 1039053165
|
#define SIGNATURE_HASH 1039053165
|
||||||
#define silentTriggerError_offset 1464
|
#define silentTriggerError_offset 1464
|
||||||
#define slowAdcAlpha_offset 2088
|
#define slowAdcAlpha_offset 2088
|
||||||
|
@ -1577,7 +1577,7 @@
|
||||||
#define ts_show_spi true
|
#define ts_show_spi true
|
||||||
#define ts_show_trigger_comparator false
|
#define ts_show_trigger_comparator false
|
||||||
#define ts_show_tunerstudio_port true
|
#define ts_show_tunerstudio_port true
|
||||||
#define TS_SIGNATURE "rusEFI 2021.02.25.hellen_cypress.1039053165"
|
#define TS_SIGNATURE "rusEFI 2021.02.28.hellen_cypress.1039053165"
|
||||||
#define TS_SINGLE_WRITE_COMMAND 'W'
|
#define TS_SINGLE_WRITE_COMMAND 'W'
|
||||||
#define TS_SINGLE_WRITE_COMMAND_char W
|
#define TS_SINGLE_WRITE_COMMAND_char W
|
||||||
#define TS_TEST_COMMAND 't' // 0x74
|
#define TS_TEST_COMMAND 't' // 0x74
|
||||||
|
|
|
@ -163,6 +163,7 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define EFI_INTERNAL_ADC TRUE
|
#define EFI_INTERNAL_ADC TRUE
|
||||||
|
#define EFI_USE_FAST_ADC TRUE
|
||||||
|
|
||||||
#define EFI_NARROW_EGO_AVERAGING FALSE
|
#define EFI_NARROW_EGO_AVERAGING FALSE
|
||||||
|
|
||||||
|
|
|
@ -169,9 +169,6 @@ void setBoardConfigurationOverrides(void) {
|
||||||
engineConfiguration->injectionMode = IM_SIMULTANEOUS;//IM_BATCH;// IM_SEQUENTIAL;
|
engineConfiguration->injectionMode = IM_SIMULTANEOUS;//IM_BATCH;// IM_SEQUENTIAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
void setAdcChannelOverrides(void) {
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Board-specific SD card configuration code overrides. Needed by bootloader code.
|
* @brief Board-specific SD card configuration code overrides. Needed by bootloader code.
|
||||||
* @todo Add your board-specific code, if any.
|
* @todo Add your board-specific code, if any.
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// this section was generated automatically by rusEfi tool ConfigDefinition.jar based on kinetis_gen_config.bat integration/rusefi_config.txt Thu Feb 25 02:57:25 UTC 2021
|
// this section was generated automatically by rusEfi tool ConfigDefinition.jar based on kinetis_gen_config.bat integration/rusefi_config.txt Sun Feb 28 23:58:11 UTC 2021
|
||||||
// by class com.rusefi.output.CHeaderConsumer
|
// by class com.rusefi.output.CHeaderConsumer
|
||||||
// begin
|
// begin
|
||||||
#pragma once
|
#pragma once
|
||||||
|
@ -3859,4 +3859,4 @@ struct persistent_config_s {
|
||||||
typedef struct persistent_config_s persistent_config_s;
|
typedef struct persistent_config_s persistent_config_s;
|
||||||
|
|
||||||
// end
|
// end
|
||||||
// this section was generated automatically by rusEfi tool ConfigDefinition.jar based on kinetis_gen_config.bat integration/rusefi_config.txt Thu Feb 25 02:57:25 UTC 2021
|
// this section was generated automatically by rusEfi tool ConfigDefinition.jar based on kinetis_gen_config.bat integration/rusefi_config.txt Sun Feb 28 23:58:11 UTC 2021
|
||||||
|
|
|
@ -1226,7 +1226,7 @@
|
||||||
#define showHumanReadableWarning_offset 976
|
#define showHumanReadableWarning_offset 976
|
||||||
#define showSdCardWarning_offset 76
|
#define showSdCardWarning_offset 76
|
||||||
#define SIGNATURE_BOARD kin
|
#define SIGNATURE_BOARD kin
|
||||||
#define SIGNATURE_DATE 2021.02.25
|
#define SIGNATURE_DATE 2021.02.28
|
||||||
#define SIGNATURE_HASH 3259727249
|
#define SIGNATURE_HASH 3259727249
|
||||||
#define silentTriggerError_offset 1464
|
#define silentTriggerError_offset 1464
|
||||||
#define slowAdcAlpha_offset 2088
|
#define slowAdcAlpha_offset 2088
|
||||||
|
@ -1561,7 +1561,7 @@
|
||||||
#define ts_show_spi true
|
#define ts_show_spi true
|
||||||
#define ts_show_trigger_comparator true
|
#define ts_show_trigger_comparator true
|
||||||
#define ts_show_tunerstudio_port true
|
#define ts_show_tunerstudio_port true
|
||||||
#define TS_SIGNATURE "rusEFI 2021.02.25.kin.3259727249"
|
#define TS_SIGNATURE "rusEFI 2021.02.28.kin.3259727249"
|
||||||
#define TS_SINGLE_WRITE_COMMAND 'W'
|
#define TS_SINGLE_WRITE_COMMAND 'W'
|
||||||
#define TS_SINGLE_WRITE_COMMAND_char W
|
#define TS_SINGLE_WRITE_COMMAND_char W
|
||||||
#define TS_TEST_COMMAND 't' // 0x74
|
#define TS_TEST_COMMAND 't' // 0x74
|
||||||
|
|
|
@ -144,6 +144,8 @@
|
||||||
#define EFI_INTERNAL_ADC TRUE
|
#define EFI_INTERNAL_ADC TRUE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define EFI_USE_FAST_ADC TRUE
|
||||||
|
|
||||||
#define EFI_NARROW_EGO_AVERAGING FALSE
|
#define EFI_NARROW_EGO_AVERAGING FALSE
|
||||||
|
|
||||||
#ifndef EFI_CAN_SUPPORT
|
#ifndef EFI_CAN_SUPPORT
|
||||||
|
|
|
@ -77,7 +77,3 @@ void setBoardConfigurationOverrides(void) {
|
||||||
|
|
||||||
void setSdCardConfigurationOverrides(void) {
|
void setSdCardConfigurationOverrides(void) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void setAdcChannelOverrides(void) {
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
|
@ -248,9 +248,6 @@ void setBoardConfigurationOverrides(void) {
|
||||||
engineConfiguration->injectionMode = IM_SIMULTANEOUS;//IM_BATCH;// IM_SEQUENTIAL;
|
engineConfiguration->injectionMode = IM_SIMULTANEOUS;//IM_BATCH;// IM_SEQUENTIAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
void setAdcChannelOverrides(void) {
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Board-specific SD card configuration code overrides. Needed by bootloader code.
|
* @brief Board-specific SD card configuration code overrides. Needed by bootloader code.
|
||||||
* @todo Add your board-specific code, if any.
|
* @todo Add your board-specific code, if any.
|
||||||
|
|
|
@ -78,6 +78,3 @@ void setBoardConfigurationOverrides(void) {
|
||||||
engineConfiguration->is_enabled_spi_2 = false;
|
engineConfiguration->is_enabled_spi_2 = false;
|
||||||
engineConfiguration->is_enabled_spi_3 = false;
|
engineConfiguration->is_enabled_spi_3 = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void setAdcChannelOverrides(void) {
|
|
||||||
}
|
|
||||||
|
|
|
@ -27,19 +27,3 @@ void setSerialConfigurationOverrides(void) {
|
||||||
*/
|
*/
|
||||||
void setSdCardConfigurationOverrides(void) {
|
void setSdCardConfigurationOverrides(void) {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Board-specific ADC channel configuration code overrides.
|
|
||||||
* @todo Add your board-specific code, if any.
|
|
||||||
*/
|
|
||||||
void setAdcChannelOverrides(void) {
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO: fix analog inputs so we don't need these stubs
|
|
||||||
float getVoltage(const char*, adc_channel_e) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
float getVoltageDivided(const char*, adc_channel_e) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,14 +1,6 @@
|
||||||
#include "hal.h"
|
#include "hal.h"
|
||||||
#include "stm32_gpio.h"
|
#include "stm32_gpio.h"
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Board-specific ADC channel configuration code overrides.
|
|
||||||
* @todo Add your board-specific code, if any.
|
|
||||||
*/
|
|
||||||
void setAdcChannelOverrides(void) {
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#define PROMETHEUS_LED 13
|
#define PROMETHEUS_LED 13
|
||||||
|
|
||||||
// BLIIINK!!!!!!!!!!
|
// BLIIINK!!!!!!!!!!
|
||||||
|
|
|
@ -32,9 +32,6 @@
|
||||||
#undef EFI_USB_SERIAL
|
#undef EFI_USB_SERIAL
|
||||||
#define EFI_USB_SERIAL FALSE
|
#define EFI_USB_SERIAL FALSE
|
||||||
|
|
||||||
#undef MMC_CARD_SPI
|
|
||||||
#define MMC_CARD_SPI SPID1
|
|
||||||
|
|
||||||
#define ADC_CHANNEL_VREF ADC_CHANNEL_IN14
|
#define ADC_CHANNEL_VREF ADC_CHANNEL_IN14
|
||||||
|
|
||||||
#undef PRIMARY_UART_DMA_MODE
|
#undef PRIMARY_UART_DMA_MODE
|
||||||
|
|
|
@ -14,6 +14,8 @@
|
||||||
|
|
||||||
#include "efilib.h"
|
#include "efilib.h"
|
||||||
|
|
||||||
|
#if USE_ADC3_VBATT_HACK
|
||||||
|
|
||||||
static ADCConversionGroup adcConvGroup = { FALSE, 1, nullptr, nullptr,
|
static ADCConversionGroup adcConvGroup = { FALSE, 1, nullptr, nullptr,
|
||||||
0,
|
0,
|
||||||
ADC_CR2_SWSTART,
|
ADC_CR2_SWSTART,
|
||||||
|
@ -51,3 +53,5 @@ void proteusAdcHack()
|
||||||
|
|
||||||
vbattSampleProteus = sum / efi::size(samples);
|
vbattSampleProteus = sum / efi::size(samples);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif /* USE_ADC3_VBATT_HACK */
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
# List of all the board related files.
|
# List of all the board related files.
|
||||||
BOARDCPPSRC = $(PROJECT_DIR)/config/boards/proteus/board_configuration.cpp \
|
BOARDCPPSRC = $(PROJECT_DIR)/config/boards/proteus/board_configuration.cpp \
|
||||||
$(PROJECT_DIR)/config/boards/proteus/adc_hack.cpp
|
$(PROJECT_DIR)/config/boards/proteus/adc_hack.cpp
|
||||||
|
|
||||||
BOARDINC = $(PROJECT_DIR)/config/boards/proteus
|
BOARDINC = $(PROJECT_DIR)/config/boards/proteus
|
||||||
|
|
||||||
# Target processor details
|
# Target processor details
|
||||||
ifeq ($(PROJECT_CPU),ARCH_STM32F4)
|
ifeq ($(PROJECT_CPU),ARCH_STM32F7)
|
||||||
else
|
|
||||||
PROTEUS_LEGACY = TRUE
|
PROTEUS_LEGACY = TRUE
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
@ -17,8 +17,13 @@ DDEFS += -DEFI_ICU_INPUTS=FALSE -DHAL_TRIGGER_USE_PAL=TRUE
|
||||||
DDEFS += -DEFI_LOGIC_ANALYZER=FALSE
|
DDEFS += -DEFI_LOGIC_ANALYZER=FALSE
|
||||||
# todo: refactor HAL_VSS_USE_PAL
|
# todo: refactor HAL_VSS_USE_PAL
|
||||||
DDEFS += -DHAL_VSS_USE_PAL=TRUE
|
DDEFS += -DHAL_VSS_USE_PAL=TRUE
|
||||||
DDEFS += -DSTM32_ADC_USE_ADC3=TRUE
|
|
||||||
DDEFS += -DEFI_SOFTWARE_KNOCK=TRUE
|
# This stuff doesn't work on H7 yet
|
||||||
|
ifneq ($(PROJECT_CPU),ARCH_STM32H7)
|
||||||
|
DDEFS += -DSTM32_ADC_USE_ADC3=TRUE
|
||||||
|
DDEFS += -DEFI_SOFTWARE_KNOCK=TRUE
|
||||||
|
endif
|
||||||
|
|
||||||
DDEFS += -DEFI_CONSOLE_TX_BRAIN_PIN=GPIO_UNASSIGNED -DEFI_CONSOLE_RX_BRAIN_PIN=GPIO_UNASSIGNED
|
DDEFS += -DEFI_CONSOLE_TX_BRAIN_PIN=GPIO_UNASSIGNED -DEFI_CONSOLE_RX_BRAIN_PIN=GPIO_UNASSIGNED
|
||||||
|
|
||||||
# We are running on Proteus hardware!
|
# We are running on Proteus hardware!
|
||||||
|
|
|
@ -226,9 +226,6 @@ void setBoardConfigurationOverrides(void) {
|
||||||
engineConfiguration->injectionMode = IM_SIMULTANEOUS;
|
engineConfiguration->injectionMode = IM_SIMULTANEOUS;
|
||||||
}
|
}
|
||||||
|
|
||||||
void setAdcChannelOverrides(void) {
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Local variables:
|
* Local variables:
|
||||||
* c-basic-indent: 4
|
* c-basic-indent: 4
|
||||||
|
|
|
@ -31,10 +31,3 @@ void setSerialConfigurationOverrides(void) {
|
||||||
*/
|
*/
|
||||||
void setSdCardConfigurationOverrides(void) {
|
void setSdCardConfigurationOverrides(void) {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Board-specific ADC channel configuration code overrides.
|
|
||||||
* @todo Add your board-specific code, if any.
|
|
||||||
*/
|
|
||||||
void setAdcChannelOverrides(void) {
|
|
||||||
}
|
|
||||||
|
|
|
@ -180,13 +180,6 @@ bool mmc_lld_is_write_protected(MMCDriver *mmcp)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Board-specific ADC channel configuration code overrides.
|
|
||||||
* @todo Add your board-specific code, if any.
|
|
||||||
*/
|
|
||||||
void setAdcChannelOverrides(void) {
|
|
||||||
}
|
|
||||||
|
|
||||||
#define STATUS_LED_PIN 8
|
#define STATUS_LED_PIN 8
|
||||||
#define STATUS_LED_PORT GPIOG
|
#define STATUS_LED_PORT GPIOG
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// this section was generated automatically by rusEfi tool ConfigDefinition.jar based on config/boards/subaru_eg33/config/gen_config.sh integration/rusefi_config.txt Thu Feb 25 02:57:30 UTC 2021
|
// this section was generated automatically by rusEfi tool ConfigDefinition.jar based on config/boards/subaru_eg33/config/gen_config.sh integration/rusefi_config.txt Sun Feb 28 23:58:15 UTC 2021
|
||||||
// by class com.rusefi.output.CHeaderConsumer
|
// by class com.rusefi.output.CHeaderConsumer
|
||||||
// begin
|
// begin
|
||||||
#pragma once
|
#pragma once
|
||||||
|
@ -3864,4 +3864,4 @@ struct persistent_config_s {
|
||||||
typedef struct persistent_config_s persistent_config_s;
|
typedef struct persistent_config_s persistent_config_s;
|
||||||
|
|
||||||
// end
|
// end
|
||||||
// this section was generated automatically by rusEfi tool ConfigDefinition.jar based on config/boards/subaru_eg33/config/gen_config.sh integration/rusefi_config.txt Thu Feb 25 02:57:30 UTC 2021
|
// this section was generated automatically by rusEfi tool ConfigDefinition.jar based on config/boards/subaru_eg33/config/gen_config.sh integration/rusefi_config.txt Sun Feb 28 23:58:15 UTC 2021
|
||||||
|
|
|
@ -1242,7 +1242,7 @@
|
||||||
#define showHumanReadableWarning_offset 976
|
#define showHumanReadableWarning_offset 976
|
||||||
#define showSdCardWarning_offset 76
|
#define showSdCardWarning_offset 76
|
||||||
#define SIGNATURE_BOARD subaru_eg33_f7
|
#define SIGNATURE_BOARD subaru_eg33_f7
|
||||||
#define SIGNATURE_DATE 2021.02.25
|
#define SIGNATURE_DATE 2021.02.28
|
||||||
#define SIGNATURE_HASH 3175160971
|
#define SIGNATURE_HASH 3175160971
|
||||||
#define silentTriggerError_offset 1464
|
#define silentTriggerError_offset 1464
|
||||||
#define slowAdcAlpha_offset 2088
|
#define slowAdcAlpha_offset 2088
|
||||||
|
@ -1577,7 +1577,7 @@
|
||||||
#define ts_show_spi true
|
#define ts_show_spi true
|
||||||
#define ts_show_trigger_comparator false
|
#define ts_show_trigger_comparator false
|
||||||
#define ts_show_tunerstudio_port false
|
#define ts_show_tunerstudio_port false
|
||||||
#define TS_SIGNATURE "rusEFI 2021.02.25.subaru_eg33_f7.3175160971"
|
#define TS_SIGNATURE "rusEFI 2021.02.28.subaru_eg33_f7.3175160971"
|
||||||
#define TS_SINGLE_WRITE_COMMAND 'W'
|
#define TS_SINGLE_WRITE_COMMAND 'W'
|
||||||
#define TS_SINGLE_WRITE_COMMAND_char W
|
#define TS_SINGLE_WRITE_COMMAND_char W
|
||||||
#define TS_TEST_COMMAND 't' // 0x74
|
#define TS_TEST_COMMAND 't' // 0x74
|
||||||
|
|
|
@ -33,6 +33,10 @@
|
||||||
/* do not use serial device for console */
|
/* do not use serial device for console */
|
||||||
#undef TS_SERIAL_DEVICE
|
#undef TS_SERIAL_DEVICE
|
||||||
|
|
||||||
|
/* Knock detection */
|
||||||
|
#undef EFI_HIP_9011
|
||||||
|
#define EFI_HIP_9011 TRUE
|
||||||
|
|
||||||
#undef BOARD_TLE6240_COUNT
|
#undef BOARD_TLE6240_COUNT
|
||||||
#define BOARD_TLE6240_COUNT 1
|
#define BOARD_TLE6240_COUNT 1
|
||||||
|
|
||||||
|
@ -84,8 +88,7 @@
|
||||||
#undef EFI_FUEL_PUMP
|
#undef EFI_FUEL_PUMP
|
||||||
#define EFI_FUEL_PUMP TRUE
|
#define EFI_FUEL_PUMP TRUE
|
||||||
|
|
||||||
#undef MMC_CARD_SPI
|
#define EFI_SDC_DEVICE SDCD2
|
||||||
#define MMC_CARD_SPI SPID1
|
|
||||||
|
|
||||||
#define ADC_CHANNEL_VREF ADC_CHANNEL_IN14
|
#define ADC_CHANNEL_VREF ADC_CHANNEL_IN14
|
||||||
|
|
||||||
|
|
|
@ -193,6 +193,8 @@
|
||||||
#define EFI_INTERNAL_ADC TRUE
|
#define EFI_INTERNAL_ADC TRUE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define EFI_USE_FAST_ADC TRUE
|
||||||
|
|
||||||
#define EFI_NARROW_EGO_AVERAGING TRUE
|
#define EFI_NARROW_EGO_AVERAGING TRUE
|
||||||
|
|
||||||
#ifndef EFI_CAN_SUPPORT
|
#ifndef EFI_CAN_SUPPORT
|
||||||
|
|
|
@ -2,8 +2,8 @@
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#undef EFI_INTERNAL_FLASH
|
#undef EFI_USE_FAST_ADC
|
||||||
#define EFI_INTERNAL_FLASH FALSE
|
#define EFI_USE_FAST_ADC FALSE
|
||||||
|
|
||||||
#undef EFI_MC33816
|
#undef EFI_MC33816
|
||||||
#define EFI_MC33816 FALSE
|
#define EFI_MC33816 FALSE
|
||||||
|
|
|
@ -18,6 +18,7 @@
|
||||||
#include "tunerstudio_io.h"
|
#include "tunerstudio_io.h"
|
||||||
#include "bluetooth.h"
|
#include "bluetooth.h"
|
||||||
#include "engine_configuration.h"
|
#include "engine_configuration.h"
|
||||||
|
#include "thread_priority.h"
|
||||||
|
|
||||||
#if EFI_BLUETOOTH_SETUP
|
#if EFI_BLUETOOTH_SETUP
|
||||||
|
|
||||||
|
@ -289,7 +290,7 @@ void bluetoothStart(ts_channel_s *btChan, bluetooth_module_e moduleType, const c
|
||||||
commands[numCommands++] = cmdPin;
|
commands[numCommands++] = cmdPin;
|
||||||
|
|
||||||
// create a thread to execute these commands later
|
// create a thread to execute these commands later
|
||||||
btThread = chThdCreateStatic(btThreadStack, sizeof(btThreadStack), NORMALPRIO, (tfunc_t)btThreadEntryPoint, NULL);
|
btThread = chThdCreateStatic(btThreadStack, sizeof(btThreadStack), PRIO_CONSOLE, (tfunc_t)btThreadEntryPoint, NULL);
|
||||||
|
|
||||||
btProcessIsStarted = true;
|
btProcessIsStarted = true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -87,6 +87,7 @@
|
||||||
#include "status_loop.h"
|
#include "status_loop.h"
|
||||||
#include "mmc_card.h"
|
#include "mmc_card.h"
|
||||||
#include "perf_trace.h"
|
#include "perf_trace.h"
|
||||||
|
#include "thread_priority.h"
|
||||||
|
|
||||||
#include "signature.h"
|
#include "signature.h"
|
||||||
|
|
||||||
|
@ -907,7 +908,7 @@ void startTunerStudioConnectivity(void) {
|
||||||
addConsoleAction("bluetooth_cancel", bluetoothCancel);
|
addConsoleAction("bluetooth_cancel", bluetoothCancel);
|
||||||
#endif /* EFI_BLUETOOTH_SETUP */
|
#endif /* EFI_BLUETOOTH_SETUP */
|
||||||
|
|
||||||
chThdCreateStatic(tunerstudioThreadStack, sizeof(tunerstudioThreadStack), NORMALPRIO, (tfunc_t)tsThreadEntryPoint, NULL);
|
chThdCreateStatic(tunerstudioThreadStack, sizeof(tunerstudioThreadStack), PRIO_CONSOLE, (tfunc_t)tsThreadEntryPoint, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -39,6 +39,7 @@
|
||||||
#include "os_util.h"
|
#include "os_util.h"
|
||||||
#include "tunerstudio.h"
|
#include "tunerstudio.h"
|
||||||
#include "connector_uart_dma.h"
|
#include "connector_uart_dma.h"
|
||||||
|
#include "thread_priority.h"
|
||||||
|
|
||||||
#if EFI_SIMULATOR
|
#if EFI_SIMULATOR
|
||||||
#include "rusEfiFunctionalTest.h"
|
#include "rusEfiFunctionalTest.h"
|
||||||
|
@ -265,6 +266,6 @@ void startConsole(Logging *sharedLogger, CommandHandler console_line_callback_p)
|
||||||
#endif /* EFI_CONSOLE_SERIAL_DEVICE || EFI_CONSOLE_UART_DEVICE */
|
#endif /* EFI_CONSOLE_SERIAL_DEVICE || EFI_CONSOLE_UART_DEVICE */
|
||||||
|
|
||||||
#if !defined(EFI_CONSOLE_NO_THREAD)
|
#if !defined(EFI_CONSOLE_NO_THREAD)
|
||||||
chThdCreateStatic(consoleThreadStack, sizeof(consoleThreadStack), NORMALPRIO, (tfunc_t)consoleThreadEntryPoint, NULL);
|
chThdCreateStatic(consoleThreadStack, sizeof(consoleThreadStack), PRIO_CONSOLE, (tfunc_t)consoleThreadEntryPoint, NULL);
|
||||||
#endif /* EFI_CONSOLE_NO_THREAD */
|
#endif /* EFI_CONSOLE_NO_THREAD */
|
||||||
}
|
}
|
||||||
|
|
|
@ -83,6 +83,7 @@
|
||||||
#include "dc_motor.h"
|
#include "dc_motor.h"
|
||||||
#include "dc_motors.h"
|
#include "dc_motors.h"
|
||||||
#include "pid_auto_tune.h"
|
#include "pid_auto_tune.h"
|
||||||
|
#include "thread_priority.h"
|
||||||
|
|
||||||
#if defined(HAS_OS_ACCESS)
|
#if defined(HAS_OS_ACCESS)
|
||||||
#error "Unexpected OS ACCESS HERE"
|
#error "Unexpected OS ACCESS HERE"
|
||||||
|
@ -651,7 +652,7 @@ struct EtbImpl final : public EtbController {
|
||||||
static EtbImpl etbControllers[ETB_COUNT];
|
static EtbImpl etbControllers[ETB_COUNT];
|
||||||
|
|
||||||
struct EtbThread final : public PeriodicController<512> {
|
struct EtbThread final : public PeriodicController<512> {
|
||||||
EtbThread() : PeriodicController("ETB", NORMALPRIO + 3, ETB_LOOP_FREQUENCY) {}
|
EtbThread() : PeriodicController("ETB", PRIO_ETB, ETB_LOOP_FREQUENCY) {}
|
||||||
|
|
||||||
void PeriodicTask(efitick_t) override {
|
void PeriodicTask(efitick_t) override {
|
||||||
// Simply update all controllers
|
// Simply update all controllers
|
||||||
|
|
|
@ -16,13 +16,14 @@
|
||||||
#include "can_dash.h"
|
#include "can_dash.h"
|
||||||
#include "obd2.h"
|
#include "obd2.h"
|
||||||
#include "can_sensor.h"
|
#include "can_sensor.h"
|
||||||
|
#include "thread_priority.h"
|
||||||
|
|
||||||
EXTERN_ENGINE;
|
EXTERN_ENGINE;
|
||||||
|
|
||||||
extern CanSensorBase* cansensors_head;
|
extern CanSensorBase* cansensors_head;
|
||||||
|
|
||||||
CanWrite::CanWrite()
|
CanWrite::CanWrite()
|
||||||
: PeriodicController("CAN TX", NORMALPRIO, 50)
|
: PeriodicController("CAN TX", PRIO_CAN_TX, 50)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
Subproject commit cf106b65555d3dce3ca16424fdc18606f01355d9
|
Subproject commit ab8c24564f40162b08599831b03eec3568a9c953
|
|
@ -1,2 +1,2 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
#define VCS_DATE 20210225
|
#define VCS_DATE 20210228
|
||||||
|
|
|
@ -94,9 +94,6 @@ RpmCalculator::RpmCalculator() :
|
||||||
#endif /* EFI_PROD_CODE */
|
#endif /* EFI_PROD_CODE */
|
||||||
// todo: reuse assignRpmValue() method which needs PASS_ENGINE_PARAMETER_SUFFIX
|
// todo: reuse assignRpmValue() method which needs PASS_ENGINE_PARAMETER_SUFFIX
|
||||||
// which we cannot provide inside this parameter-less constructor. need a solution for this minor mess
|
// which we cannot provide inside this parameter-less constructor. need a solution for this minor mess
|
||||||
|
|
||||||
// we need this initial to have not_running at first invocation
|
|
||||||
lastRpmEventTimeNt = (efitick_t) DEEP_IN_THE_PAST_SECONDS * NT_PER_SECOND;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -118,11 +115,15 @@ bool RpmCalculator::checkIfSpinning(efitick_t nowNt) const {
|
||||||
* note that the result of this subtraction could be negative, that would happen if
|
* note that the result of this subtraction could be negative, that would happen if
|
||||||
* we have a trigger event between the time we've invoked 'getTimeNow' and here
|
* we have a trigger event between the time we've invoked 'getTimeNow' and here
|
||||||
*/
|
*/
|
||||||
bool noRpmEventsForTooLong = nowNt - lastRpmEventTimeNt >= NT_PER_SECOND * NO_RPM_EVENTS_TIMEOUT_SECS; // Anything below 60 rpm is not running
|
|
||||||
|
// Anything below 60 rpm is not running
|
||||||
|
bool noRpmEventsForTooLong = lastTdcTimer.getElapsedSeconds(nowNt) > NO_RPM_EVENTS_TIMEOUT_SECS;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Also check if there were no trigger events
|
* Also check if there were no trigger events
|
||||||
*/
|
*/
|
||||||
bool noTriggerEventsForTooLong = nowNt - engine->triggerCentral.triggerState.previousShaftEventTimeNt >= NT_PER_SECOND;
|
bool noTriggerEventsForTooLong = engine->triggerCentral.getTimeSinceTriggerEvent(nowNt) >= 1;
|
||||||
|
|
||||||
if (noRpmEventsForTooLong || noTriggerEventsForTooLong) {
|
if (noRpmEventsForTooLong || noTriggerEventsForTooLong) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -252,8 +253,9 @@ void rpmShaftPositionCallback(trigger_event_e ckpSignalType,
|
||||||
if (index == 0) {
|
if (index == 0) {
|
||||||
bool hadRpmRecently = rpmState->checkIfSpinning(nowNt);
|
bool hadRpmRecently = rpmState->checkIfSpinning(nowNt);
|
||||||
|
|
||||||
|
float periodSeconds = engine->rpmCalculator.lastTdcTimer.getElapsedSecondsAndReset(nowNt);
|
||||||
|
|
||||||
if (hadRpmRecently) {
|
if (hadRpmRecently) {
|
||||||
int32_t diffNt = (int32_t)(nowNt - rpmState->lastRpmEventTimeNt);
|
|
||||||
/**
|
/**
|
||||||
* Four stroke cycle is two crankshaft revolutions
|
* Four stroke cycle is two crankshaft revolutions
|
||||||
*
|
*
|
||||||
|
@ -261,22 +263,21 @@ void rpmShaftPositionCallback(trigger_event_e ckpSignalType,
|
||||||
* and each revolution of crankshaft consists of two engine cycles revolutions
|
* and each revolution of crankshaft consists of two engine cycles revolutions
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
if (diffNt == 0) {
|
if (periodSeconds == 0) {
|
||||||
rpmState->setRpmValue(NOISY_RPM);
|
rpmState->setRpmValue(NOISY_RPM);
|
||||||
rpmState->rpmRate = 0;
|
rpmState->rpmRate = 0;
|
||||||
} else {
|
} else {
|
||||||
int mult = (int)getEngineCycle(engine->getOperationMode(PASS_ENGINE_PARAMETER_SIGNATURE)) / 360;
|
int mult = (int)getEngineCycle(engine->getOperationMode(PASS_ENGINE_PARAMETER_SIGNATURE)) / 360;
|
||||||
float rpm = 60.0 * NT_PER_SECOND * mult / diffNt;
|
float rpm = 60 * mult / periodSeconds;
|
||||||
|
|
||||||
auto rpmDelta = rpm - rpmState->previousRpmValue;
|
auto rpmDelta = rpm - rpmState->previousRpmValue;
|
||||||
rpmState->rpmRate = rpmDelta / (mult * 1e-6 * NT2US(diffNt));
|
rpmState->rpmRate = rpmDelta / (mult * periodSeconds);
|
||||||
|
|
||||||
rpmState->setRpmValue(rpm > UNREALISTIC_RPM ? NOISY_RPM : rpm);
|
rpmState->setRpmValue(rpm > UNREALISTIC_RPM ? NOISY_RPM : rpm);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
rpmState->onNewEngineCycle();
|
rpmState->onNewEngineCycle();
|
||||||
rpmState->lastRpmEventTimeNt = nowNt;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -363,16 +364,13 @@ void tdcMarkCallback(
|
||||||
* @return Current crankshaft angle, 0 to 720 for four-stroke
|
* @return Current crankshaft angle, 0 to 720 for four-stroke
|
||||||
*/
|
*/
|
||||||
float getCrankshaftAngleNt(efitick_t timeNt DECLARE_ENGINE_PARAMETER_SUFFIX) {
|
float getCrankshaftAngleNt(efitick_t timeNt DECLARE_ENGINE_PARAMETER_SUFFIX) {
|
||||||
efitick_t timeSinceZeroAngleNt = timeNt
|
float timeSinceZeroAngle = engine->rpmCalculator.lastTdcTimer.getElapsedSeconds(timeNt);
|
||||||
- engine->rpmCalculator.lastRpmEventTimeNt;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* even if we use 'getOneDegreeTimeUs' macros here, it looks like the
|
|
||||||
* compiler is not smart enough to figure out that "A / ( B / C)" could be optimized into
|
|
||||||
* "A * C / B" in order to replace a slower division with a faster multiplication.
|
|
||||||
*/
|
|
||||||
int rpm = GET_RPM();
|
int rpm = GET_RPM();
|
||||||
return rpm == 0 ? NAN : timeSinceZeroAngleNt / getOneDegreeTimeNt(rpm);
|
|
||||||
|
float oneDegreeSeconds = (60.0f / 360) / rpm;
|
||||||
|
|
||||||
|
return rpm == 0 ? NAN : timeSinceZeroAngle / oneDegreeSeconds;
|
||||||
}
|
}
|
||||||
|
|
||||||
void initRpmCalculator(Logging *sharedLogger DECLARE_ENGINE_PARAMETER_SUFFIX) {
|
void initRpmCalculator(Logging *sharedLogger DECLARE_ENGINE_PARAMETER_SUFFIX) {
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
#include "globalaccess.h"
|
#include "globalaccess.h"
|
||||||
#include "scheduler.h"
|
#include "scheduler.h"
|
||||||
#include "stored_value_sensor.h"
|
#include "stored_value_sensor.h"
|
||||||
|
#include "timer.h"
|
||||||
|
|
||||||
// we use this value in case of noise on trigger input lines
|
// we use this value in case of noise on trigger input lines
|
||||||
#define NOISY_RPM -1
|
#define NOISY_RPM -1
|
||||||
|
@ -113,7 +114,8 @@ public:
|
||||||
* NaN while engine is not spinning
|
* NaN while engine is not spinning
|
||||||
*/
|
*/
|
||||||
volatile floatus_t oneDegreeUs = NAN;
|
volatile floatus_t oneDegreeUs = NAN;
|
||||||
volatile efitick_t lastRpmEventTimeNt = 0;
|
|
||||||
|
Timer lastTdcTimer;
|
||||||
|
|
||||||
// RPM rate of change, in RPM per second
|
// RPM rate of change, in RPM per second
|
||||||
float rpmRate = 0;
|
float rpmRate = 0;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Thu Feb 25 02:57:02 UTC 2021
|
// this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Sun Feb 28 23:57:45 UTC 2021
|
||||||
// by class com.rusefi.output.CHeaderConsumer
|
// by class com.rusefi.output.CHeaderConsumer
|
||||||
// begin
|
// begin
|
||||||
#pragma once
|
#pragma once
|
||||||
|
@ -3864,4 +3864,4 @@ struct persistent_config_s {
|
||||||
typedef struct persistent_config_s persistent_config_s;
|
typedef struct persistent_config_s persistent_config_s;
|
||||||
|
|
||||||
// end
|
// end
|
||||||
// this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Thu Feb 25 02:57:02 UTC 2021
|
// this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Sun Feb 28 23:57:45 UTC 2021
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// this file was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Thu Feb 25 02:57:02 UTC 2021
|
// this file was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Sun Feb 28 23:57:45 UTC 2021
|
||||||
|
|
||||||
// by class com.rusefi.output.FileFsioSettingsConsumer
|
// by class com.rusefi.output.FileFsioSettingsConsumer
|
||||||
FSIO_SETTING_FANONTEMPERATURE = 1000,
|
FSIO_SETTING_FANONTEMPERATURE = 1000,
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// this file was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Thu Feb 25 02:57:02 UTC 2021
|
// this file was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Sun Feb 28 23:57:45 UTC 2021
|
||||||
|
|
||||||
// by class com.rusefi.output.FileFsioSettingsConsumer
|
// by class com.rusefi.output.FileFsioSettingsConsumer
|
||||||
case FSIO_SETTING_FANONTEMPERATURE:
|
case FSIO_SETTING_FANONTEMPERATURE:
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// this file was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Thu Feb 25 02:57:02 UTC 2021
|
// this file was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Sun Feb 28 23:57:45 UTC 2021
|
||||||
|
|
||||||
// by class com.rusefi.output.FileFsioSettingsConsumer
|
// by class com.rusefi.output.FileFsioSettingsConsumer
|
||||||
static LENameOrdinalPair lefanOnTemperature(FSIO_SETTING_FANONTEMPERATURE, "cfg_fanOnTemperature");
|
static LENameOrdinalPair lefanOnTemperature(FSIO_SETTING_FANONTEMPERATURE, "cfg_fanOnTemperature");
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// this file was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Thu Feb 25 02:57:02 UTC 2021
|
// this file was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Sun Feb 28 23:57:45 UTC 2021
|
||||||
|
|
||||||
// by class com.rusefi.output.FileFsioSettingsConsumer
|
// by class com.rusefi.output.FileFsioSettingsConsumer
|
||||||
case FSIO_SETTING_FANONTEMPERATURE:
|
case FSIO_SETTING_FANONTEMPERATURE:
|
||||||
|
|
|
@ -1239,7 +1239,7 @@
|
||||||
#define showHumanReadableWarning_offset 976
|
#define showHumanReadableWarning_offset 976
|
||||||
#define showSdCardWarning_offset 76
|
#define showSdCardWarning_offset 76
|
||||||
#define SIGNATURE_BOARD all
|
#define SIGNATURE_BOARD all
|
||||||
#define SIGNATURE_DATE 2021.02.25
|
#define SIGNATURE_DATE 2021.02.28
|
||||||
#define SIGNATURE_HASH 2140302013
|
#define SIGNATURE_HASH 2140302013
|
||||||
#define silentTriggerError_offset 1464
|
#define silentTriggerError_offset 1464
|
||||||
#define slowAdcAlpha_offset 2088
|
#define slowAdcAlpha_offset 2088
|
||||||
|
@ -1574,7 +1574,7 @@
|
||||||
#define ts_show_spi true
|
#define ts_show_spi true
|
||||||
#define ts_show_trigger_comparator false
|
#define ts_show_trigger_comparator false
|
||||||
#define ts_show_tunerstudio_port true
|
#define ts_show_tunerstudio_port true
|
||||||
#define TS_SIGNATURE "rusEFI 2021.02.25.all.2140302013"
|
#define TS_SIGNATURE "rusEFI 2021.02.28.all.2140302013"
|
||||||
#define TS_SINGLE_WRITE_COMMAND 'W'
|
#define TS_SINGLE_WRITE_COMMAND 'W'
|
||||||
#define TS_SINGLE_WRITE_COMMAND_char W
|
#define TS_SINGLE_WRITE_COMMAND_char W
|
||||||
#define TS_TEST_COMMAND 't' // 0x74
|
#define TS_TEST_COMMAND 't' // 0x74
|
||||||
|
|
|
@ -3,6 +3,6 @@
|
||||||
//
|
//
|
||||||
|
|
||||||
#define SIGNATURE_BOARD all
|
#define SIGNATURE_BOARD all
|
||||||
#define SIGNATURE_DATE 2021.02.25
|
#define SIGNATURE_DATE 2021.02.28
|
||||||
#define SIGNATURE_HASH 2140302013
|
#define SIGNATURE_HASH 2140302013
|
||||||
#define TS_SIGNATURE "rusEFI 2021.02.25.all.2140302013"
|
#define TS_SIGNATURE "rusEFI 2021.02.28.all.2140302013"
|
||||||
|
|
|
@ -3,6 +3,6 @@
|
||||||
//
|
//
|
||||||
|
|
||||||
#define SIGNATURE_BOARD frankenso_na6
|
#define SIGNATURE_BOARD frankenso_na6
|
||||||
#define SIGNATURE_DATE 2021.02.25
|
#define SIGNATURE_DATE 2021.02.28
|
||||||
#define SIGNATURE_HASH 4226303790
|
#define SIGNATURE_HASH 4226303790
|
||||||
#define TS_SIGNATURE "rusEFI 2021.02.25.frankenso_na6.4226303790"
|
#define TS_SIGNATURE "rusEFI 2021.02.28.frankenso_na6.4226303790"
|
||||||
|
|
|
@ -3,6 +3,6 @@
|
||||||
//
|
//
|
||||||
|
|
||||||
#define SIGNATURE_BOARD hellen72
|
#define SIGNATURE_BOARD hellen72
|
||||||
#define SIGNATURE_DATE 2021.02.25
|
#define SIGNATURE_DATE 2021.02.28
|
||||||
#define SIGNATURE_HASH 96926268
|
#define SIGNATURE_HASH 96926268
|
||||||
#define TS_SIGNATURE "rusEFI 2021.02.25.hellen72.96926268"
|
#define TS_SIGNATURE "rusEFI 2021.02.28.hellen72.96926268"
|
||||||
|
|
|
@ -3,6 +3,6 @@
|
||||||
//
|
//
|
||||||
|
|
||||||
#define SIGNATURE_BOARD hellen_cypress
|
#define SIGNATURE_BOARD hellen_cypress
|
||||||
#define SIGNATURE_DATE 2021.02.25
|
#define SIGNATURE_DATE 2021.02.28
|
||||||
#define SIGNATURE_HASH 1039053165
|
#define SIGNATURE_HASH 1039053165
|
||||||
#define TS_SIGNATURE "rusEFI 2021.02.25.hellen_cypress.1039053165"
|
#define TS_SIGNATURE "rusEFI 2021.02.28.hellen_cypress.1039053165"
|
||||||
|
|
|
@ -3,6 +3,6 @@
|
||||||
//
|
//
|
||||||
|
|
||||||
#define SIGNATURE_BOARD kin
|
#define SIGNATURE_BOARD kin
|
||||||
#define SIGNATURE_DATE 2021.02.25
|
#define SIGNATURE_DATE 2021.02.28
|
||||||
#define SIGNATURE_HASH 3259727249
|
#define SIGNATURE_HASH 3259727249
|
||||||
#define TS_SIGNATURE "rusEFI 2021.02.25.kin.3259727249"
|
#define TS_SIGNATURE "rusEFI 2021.02.28.kin.3259727249"
|
||||||
|
|
|
@ -3,6 +3,6 @@
|
||||||
//
|
//
|
||||||
|
|
||||||
#define SIGNATURE_BOARD mre_f4
|
#define SIGNATURE_BOARD mre_f4
|
||||||
#define SIGNATURE_DATE 2021.02.25
|
#define SIGNATURE_DATE 2021.02.28
|
||||||
#define SIGNATURE_HASH 1364465751
|
#define SIGNATURE_HASH 1364465751
|
||||||
#define TS_SIGNATURE "rusEFI 2021.02.25.mre_f4.1364465751"
|
#define TS_SIGNATURE "rusEFI 2021.02.28.mre_f4.1364465751"
|
||||||
|
|
|
@ -3,6 +3,6 @@
|
||||||
//
|
//
|
||||||
|
|
||||||
#define SIGNATURE_BOARD mre_f7
|
#define SIGNATURE_BOARD mre_f7
|
||||||
#define SIGNATURE_DATE 2021.02.25
|
#define SIGNATURE_DATE 2021.02.28
|
||||||
#define SIGNATURE_HASH 1364465751
|
#define SIGNATURE_HASH 1364465751
|
||||||
#define TS_SIGNATURE "rusEFI 2021.02.25.mre_f7.1364465751"
|
#define TS_SIGNATURE "rusEFI 2021.02.28.mre_f7.1364465751"
|
||||||
|
|
|
@ -3,6 +3,6 @@
|
||||||
//
|
//
|
||||||
|
|
||||||
#define SIGNATURE_BOARD prometheus_405
|
#define SIGNATURE_BOARD prometheus_405
|
||||||
#define SIGNATURE_DATE 2021.02.25
|
#define SIGNATURE_DATE 2021.02.28
|
||||||
#define SIGNATURE_HASH 1829005451
|
#define SIGNATURE_HASH 1829005451
|
||||||
#define TS_SIGNATURE "rusEFI 2021.02.25.prometheus_405.1829005451"
|
#define TS_SIGNATURE "rusEFI 2021.02.28.prometheus_405.1829005451"
|
||||||
|
|
|
@ -3,6 +3,6 @@
|
||||||
//
|
//
|
||||||
|
|
||||||
#define SIGNATURE_BOARD prometheus_469
|
#define SIGNATURE_BOARD prometheus_469
|
||||||
#define SIGNATURE_DATE 2021.02.25
|
#define SIGNATURE_DATE 2021.02.28
|
||||||
#define SIGNATURE_HASH 1829005451
|
#define SIGNATURE_HASH 1829005451
|
||||||
#define TS_SIGNATURE "rusEFI 2021.02.25.prometheus_469.1829005451"
|
#define TS_SIGNATURE "rusEFI 2021.02.28.prometheus_469.1829005451"
|
||||||
|
|
|
@ -3,6 +3,6 @@
|
||||||
//
|
//
|
||||||
|
|
||||||
#define SIGNATURE_BOARD proteus_f4
|
#define SIGNATURE_BOARD proteus_f4
|
||||||
#define SIGNATURE_DATE 2021.02.25
|
#define SIGNATURE_DATE 2021.02.28
|
||||||
#define SIGNATURE_HASH 413377170
|
#define SIGNATURE_HASH 413377170
|
||||||
#define TS_SIGNATURE "rusEFI 2021.02.25.proteus_f4.413377170"
|
#define TS_SIGNATURE "rusEFI 2021.02.28.proteus_f4.413377170"
|
||||||
|
|
|
@ -3,6 +3,6 @@
|
||||||
//
|
//
|
||||||
|
|
||||||
#define SIGNATURE_BOARD proteus_f7
|
#define SIGNATURE_BOARD proteus_f7
|
||||||
#define SIGNATURE_DATE 2021.02.25
|
#define SIGNATURE_DATE 2021.02.28
|
||||||
#define SIGNATURE_HASH 413377170
|
#define SIGNATURE_HASH 413377170
|
||||||
#define TS_SIGNATURE "rusEFI 2021.02.25.proteus_f7.413377170"
|
#define TS_SIGNATURE "rusEFI 2021.02.28.proteus_f7.413377170"
|
||||||
|
|
|
@ -3,6 +3,6 @@
|
||||||
//
|
//
|
||||||
|
|
||||||
#define SIGNATURE_BOARD subaru_eg33_f7
|
#define SIGNATURE_BOARD subaru_eg33_f7
|
||||||
#define SIGNATURE_DATE 2021.02.25
|
#define SIGNATURE_DATE 2021.02.28
|
||||||
#define SIGNATURE_HASH 3175160971
|
#define SIGNATURE_HASH 3175160971
|
||||||
#define TS_SIGNATURE "rusEFI 2021.02.25.subaru_eg33_f7.3175160971"
|
#define TS_SIGNATURE "rusEFI 2021.02.28.subaru_eg33_f7.3175160971"
|
||||||
|
|
|
@ -34,11 +34,6 @@ void setFlatInjectorLag(float value DECLARE_CONFIG_PARAMETER_SUFFIX);
|
||||||
*/
|
*/
|
||||||
#define getOneDegreeTimeUs(rpm) (1000000.0f * 60 / 360 / (rpm))
|
#define getOneDegreeTimeUs(rpm) (1000000.0f * 60 / 360 / (rpm))
|
||||||
|
|
||||||
/**
|
|
||||||
* @return float, time needed to rotate crankshaft by one degree, in native clicks.
|
|
||||||
*/
|
|
||||||
#define getOneDegreeTimeNt(rpm) (US2NT(1000000) * 60.0f / 360 / (rpm))
|
|
||||||
|
|
||||||
floatms_t getCrankshaftRevolutionTimeMs(int rpm);
|
floatms_t getCrankshaftRevolutionTimeMs(int rpm);
|
||||||
floatms_t getEngineCycleDuration(int rpm DECLARE_ENGINE_PARAMETER_SUFFIX);
|
floatms_t getEngineCycleDuration(int rpm DECLARE_ENGINE_PARAMETER_SUFFIX);
|
||||||
|
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
#include "perf_trace.h"
|
#include "perf_trace.h"
|
||||||
#include "thread_controller.h"
|
#include "thread_controller.h"
|
||||||
#include "software_knock.h"
|
#include "software_knock.h"
|
||||||
|
#include "thread_priority.h"
|
||||||
|
|
||||||
#if EFI_SOFTWARE_KNOCK
|
#if EFI_SOFTWARE_KNOCK
|
||||||
|
|
||||||
|
@ -162,7 +163,7 @@ void startKnockSampling(uint8_t cylinderIndex) {
|
||||||
|
|
||||||
class KnockThread : public ThreadController<256> {
|
class KnockThread : public ThreadController<256> {
|
||||||
public:
|
public:
|
||||||
KnockThread() : ThreadController("knock", NORMALPRIO - 10) {}
|
KnockThread() : ThreadController("knock", PRIO_KNOCK_PROCESS) {}
|
||||||
void ThreadTask() override;
|
void ThreadTask() override;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -17,6 +17,7 @@
|
||||||
|
|
||||||
#include "allsensors.h"
|
#include "allsensors.h"
|
||||||
#include "vehicle_speed.h"
|
#include "vehicle_speed.h"
|
||||||
|
#include "thread_priority.h"
|
||||||
|
|
||||||
EXTERN_ENGINE;
|
EXTERN_ENGINE;
|
||||||
|
|
||||||
|
@ -29,7 +30,7 @@ uint8_t sb = 0;
|
||||||
bool clear_ser_buffer = false;
|
bool clear_ser_buffer = false;
|
||||||
|
|
||||||
SerialRead::SerialRead()
|
SerialRead::SerialRead()
|
||||||
: ThreadController("AUX Serial RX", NORMALPRIO) {
|
: ThreadController("AUX Serial RX", PRIO_AUX_SERIAL) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void SerialRead::ThreadTask() {
|
void SerialRead::ThreadTask() {
|
||||||
|
|
|
@ -0,0 +1,36 @@
|
||||||
|
/**
|
||||||
|
* @file thread_priority.h
|
||||||
|
* @brief This file sets the thread priority for the threads running on rusEFI
|
||||||
|
*
|
||||||
|
* @date February 27, 2021
|
||||||
|
* @author Matthew Kennedy, (c) 2021
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
// ADC and ETB get highest priority - not much else actually runs the engine
|
||||||
|
#define PRIO_ADC (NORMALPRIO + 10)
|
||||||
|
#define PRIO_ETB (NORMALPRIO + 9)
|
||||||
|
|
||||||
|
// GPIO chips should be fast and go right back to sleep, plus can be timing sensitive
|
||||||
|
#define PRIO_GPIOCHIP (NORMALPRIO + 8)
|
||||||
|
|
||||||
|
// TX higher priority than RX because the ECU is generally the one transmitting the highest priority messages
|
||||||
|
#define PRIO_CAN_TX (NORMALPRIO + 7)
|
||||||
|
#define PRIO_CAN_RX (NORMALPRIO + 6)
|
||||||
|
|
||||||
|
// Less critical harware
|
||||||
|
#define PRIO_SERVO (NORMALPRIO + 5)
|
||||||
|
#define PRIO_STEPPER (NORMALPRIO + 5)
|
||||||
|
#define PRIO_CJ125 (NORMALPRIO + 5)
|
||||||
|
|
||||||
|
// Console thread
|
||||||
|
#define PRIO_CONSOLE (NORMALPRIO + 1)
|
||||||
|
|
||||||
|
// Less important things
|
||||||
|
#define PRIO_MMC (NORMALPRIO - 1)
|
||||||
|
|
||||||
|
// These can get starved without too much adverse effect
|
||||||
|
#define PRIO_AUX_SERIAL NORMALPRIO
|
||||||
|
#define PRIO_KNOCK_PROCESS (NORMALPRIO - 10)
|
||||||
|
#define PRIO_HIP9011 (NORMALPRIO - 10)
|
|
@ -36,6 +36,7 @@
|
||||||
#include "engine_controller.h"
|
#include "engine_controller.h"
|
||||||
#include "maf.h"
|
#include "maf.h"
|
||||||
#include "perf_trace.h"
|
#include "perf_trace.h"
|
||||||
|
#include "thread_priority.h"
|
||||||
|
|
||||||
static NO_CACHE adcsample_t slowAdcSampleBuf[ADC_BUF_DEPTH_SLOW * ADC_MAX_CHANNELS_COUNT];
|
static NO_CACHE adcsample_t slowAdcSampleBuf[ADC_BUF_DEPTH_SLOW * ADC_MAX_CHANNELS_COUNT];
|
||||||
static NO_CACHE adcsample_t fastAdcSampleBuf[ADC_BUF_DEPTH_FAST * ADC_MAX_CHANNELS_COUNT];
|
static NO_CACHE adcsample_t fastAdcSampleBuf[ADC_BUF_DEPTH_FAST * ADC_MAX_CHANNELS_COUNT];
|
||||||
|
@ -166,6 +167,7 @@ static ADCConversionGroup adcgrpcfgSlow = {
|
||||||
|
|
||||||
AdcDevice slowAdc(&adcgrpcfgSlow, slowAdcSampleBuf, ARRAY_SIZE(slowAdcSampleBuf));
|
AdcDevice slowAdc(&adcgrpcfgSlow, slowAdcSampleBuf, ARRAY_SIZE(slowAdcSampleBuf));
|
||||||
|
|
||||||
|
#if EFI_USE_FAST_ADC
|
||||||
void adc_callback_fast(ADCDriver *adcp);
|
void adc_callback_fast(ADCDriver *adcp);
|
||||||
|
|
||||||
static ADCConversionGroup adcgrpcfgFast = {
|
static ADCConversionGroup adcgrpcfgFast = {
|
||||||
|
@ -214,7 +216,6 @@ static ADCConversionGroup adcgrpcfgFast = {
|
||||||
|
|
||||||
AdcDevice fastAdc(&adcgrpcfgFast, fastAdcSampleBuf, ARRAY_SIZE(fastAdcSampleBuf));
|
AdcDevice fastAdc(&adcgrpcfgFast, fastAdcSampleBuf, ARRAY_SIZE(fastAdcSampleBuf));
|
||||||
|
|
||||||
#if HAL_USE_GPT
|
|
||||||
static void fast_adc_callback(GPTDriver*) {
|
static void fast_adc_callback(GPTDriver*) {
|
||||||
#if EFI_INTERNAL_ADC
|
#if EFI_INTERNAL_ADC
|
||||||
/*
|
/*
|
||||||
|
@ -240,7 +241,7 @@ static void fast_adc_callback(GPTDriver*) {
|
||||||
fastAdc.conversionCount++;
|
fastAdc.conversionCount++;
|
||||||
#endif /* EFI_INTERNAL_ADC */
|
#endif /* EFI_INTERNAL_ADC */
|
||||||
}
|
}
|
||||||
#endif /* HAL_USE_GPT */
|
#endif // EFI_USE_FAST_ADC
|
||||||
|
|
||||||
static float mcuTemperature;
|
static float mcuTemperature;
|
||||||
|
|
||||||
|
@ -259,7 +260,7 @@ int getInternalAdcValue(const char *msg, adc_channel_e hwChannel) {
|
||||||
|
|
||||||
#endif /* EFI_ENABLE_MOCK_ADC */
|
#endif /* EFI_ENABLE_MOCK_ADC */
|
||||||
|
|
||||||
|
#if EFI_USE_FAST_ADC
|
||||||
if (adcHwChannelEnabled[hwChannel] == ADC_FAST) {
|
if (adcHwChannelEnabled[hwChannel] == ADC_FAST) {
|
||||||
int internalIndex = fastAdc.internalAdcIndexByHardwareIndex[hwChannel];
|
int internalIndex = fastAdc.internalAdcIndexByHardwareIndex[hwChannel];
|
||||||
// todo if ADC_BUF_DEPTH_FAST EQ 1
|
// todo if ADC_BUF_DEPTH_FAST EQ 1
|
||||||
|
@ -267,6 +268,8 @@ int getInternalAdcValue(const char *msg, adc_channel_e hwChannel) {
|
||||||
int value = getAvgAdcValue(internalIndex, fastAdc.samples, ADC_BUF_DEPTH_FAST, fastAdc.size());
|
int value = getAvgAdcValue(internalIndex, fastAdc.samples, ADC_BUF_DEPTH_FAST, fastAdc.size());
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
#endif // EFI_USE_FAST_ADC
|
||||||
|
|
||||||
if (adcHwChannelEnabled[hwChannel] != ADC_SLOW) {
|
if (adcHwChannelEnabled[hwChannel] != ADC_SLOW) {
|
||||||
// todo: make this not happen during hardware continuous integration
|
// todo: make this not happen during hardware continuous integration
|
||||||
warning(CUSTOM_OBD_WRONG_ADC_MODE, "ADC is off [%s] index=%d", msg, hwChannel);
|
warning(CUSTOM_OBD_WRONG_ADC_MODE, "ADC is off [%s] index=%d", msg, hwChannel);
|
||||||
|
@ -275,21 +278,25 @@ int getInternalAdcValue(const char *msg, adc_channel_e hwChannel) {
|
||||||
return slowAdc.getAdcValueByHwChannel(hwChannel);
|
return slowAdc.getAdcValueByHwChannel(hwChannel);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if HAL_USE_GPT
|
#if EFI_USE_FAST_ADC
|
||||||
static GPTConfig fast_adc_config = {
|
static GPTConfig fast_adc_config = {
|
||||||
GPT_FREQ_FAST,
|
GPT_FREQ_FAST,
|
||||||
fast_adc_callback,
|
fast_adc_callback,
|
||||||
0, 0
|
0, 0
|
||||||
};
|
};
|
||||||
#endif /* HAL_USE_GPT */
|
#endif /* EFI_USE_FAST_ADC */
|
||||||
|
|
||||||
adc_channel_mode_e getAdcMode(adc_channel_e hwChannel) {
|
adc_channel_mode_e getAdcMode(adc_channel_e hwChannel) {
|
||||||
if (slowAdc.isHwUsed(hwChannel)) {
|
if (slowAdc.isHwUsed(hwChannel)) {
|
||||||
return ADC_SLOW;
|
return ADC_SLOW;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if EFI_USE_FAST_ADC
|
||||||
if (fastAdc.isHwUsed(hwChannel)) {
|
if (fastAdc.isHwUsed(hwChannel)) {
|
||||||
return ADC_FAST;
|
return ADC_FAST;
|
||||||
}
|
}
|
||||||
|
#endif // EFI_USE_FAST_ADC
|
||||||
|
|
||||||
return ADC_OFF;
|
return ADC_OFF;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -368,6 +375,7 @@ adc_channel_e AdcDevice::getAdcHardwareIndexByInternalIndex(int index) const {
|
||||||
}
|
}
|
||||||
|
|
||||||
static void printFullAdcReport(Logging *logger) {
|
static void printFullAdcReport(Logging *logger) {
|
||||||
|
#if EFI_USE_FAST_ADC
|
||||||
scheduleMsg(logger, "fast %d slow %d", fastAdc.conversionCount, slowAdc.conversionCount);
|
scheduleMsg(logger, "fast %d slow %d", fastAdc.conversionCount, slowAdc.conversionCount);
|
||||||
|
|
||||||
for (int index = 0; index < fastAdc.size(); index++) {
|
for (int index = 0; index < fastAdc.size(); index++) {
|
||||||
|
@ -389,6 +397,7 @@ static void printFullAdcReport(Logging *logger) {
|
||||||
scheduleLogging(logger);
|
scheduleLogging(logger);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif // EFI_USE_FAST_ADC
|
||||||
|
|
||||||
for (int index = 0; index < slowAdc.size(); index++) {
|
for (int index = 0; index < slowAdc.size(); index++) {
|
||||||
appendMsgPrefix(logger);
|
appendMsgPrefix(logger);
|
||||||
|
@ -436,7 +445,7 @@ int getSlowAdcCounter() {
|
||||||
class SlowAdcController : public PeriodicController<256> {
|
class SlowAdcController : public PeriodicController<256> {
|
||||||
public:
|
public:
|
||||||
SlowAdcController()
|
SlowAdcController()
|
||||||
: PeriodicController("ADC", NORMALPRIO + 5, SLOW_ADC_RATE)
|
: PeriodicController("ADC", PRIO_ADC, SLOW_ADC_RATE)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -492,8 +501,15 @@ void addChannel(const char *name, adc_channel_e setting, adc_channel_mode_e mode
|
||||||
|
|
||||||
adcHwChannelEnabled[setting] = mode;
|
adcHwChannelEnabled[setting] = mode;
|
||||||
|
|
||||||
AdcDevice& dev = (mode == ADC_SLOW) ? slowAdc : fastAdc;
|
AdcDevice* dev = &slowAdc;
|
||||||
dev.enableChannelAndPin(name, setting);
|
|
||||||
|
#if EFI_USE_FAST_ADC
|
||||||
|
if (mode == ADC_FAST) {
|
||||||
|
dev = &fastAdc;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
dev->enableChannelAndPin(name, setting);
|
||||||
}
|
}
|
||||||
|
|
||||||
void removeChannel(const char *name, adc_channel_e setting) {
|
void removeChannel(const char *name, adc_channel_e setting) {
|
||||||
|
@ -504,6 +520,9 @@ void removeChannel(const char *name, adc_channel_e setting) {
|
||||||
adcHwChannelEnabled[setting] = ADC_OFF;
|
adcHwChannelEnabled[setting] = ADC_OFF;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Weak link a stub so that every board doesn't have to implement this function
|
||||||
|
__attribute__((weak)) void setAdcChannelOverrides() { }
|
||||||
|
|
||||||
static void configureInputs(void) {
|
static void configureInputs(void) {
|
||||||
memset(adcHwChannelEnabled, 0, sizeof(adcHwChannelEnabled));
|
memset(adcHwChannelEnabled, 0, sizeof(adcHwChannelEnabled));
|
||||||
|
|
||||||
|
@ -581,14 +600,12 @@ void initAdcInputs() {
|
||||||
// Start the slow ADC thread
|
// Start the slow ADC thread
|
||||||
slowAdcController.Start();
|
slowAdcController.Start();
|
||||||
|
|
||||||
|
#if EFI_USE_FAST_ADC
|
||||||
fastAdc.init();
|
fastAdc.init();
|
||||||
/*
|
|
||||||
* Initializes the PWM driver.
|
|
||||||
*/
|
|
||||||
#if HAL_USE_GPT
|
|
||||||
gptStart(EFI_INTERNAL_FAST_ADC_GPT, &fast_adc_config);
|
gptStart(EFI_INTERNAL_FAST_ADC_GPT, &fast_adc_config);
|
||||||
gptStartContinuous(EFI_INTERNAL_FAST_ADC_GPT, GPT_PERIOD_FAST);
|
gptStartContinuous(EFI_INTERNAL_FAST_ADC_GPT, GPT_PERIOD_FAST);
|
||||||
#endif /* HAL_USE_GPT */
|
#endif // EFI_USE_FAST_ADC
|
||||||
|
|
||||||
addConsoleActionI("adc", (VoidInt) printAdcValue);
|
addConsoleActionI("adc", (VoidInt) printAdcValue);
|
||||||
#else
|
#else
|
||||||
|
@ -602,4 +619,15 @@ void printFullAdcReportIfNeeded(Logging *logger) {
|
||||||
printFullAdcReport(logger);
|
printFullAdcReport(logger);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* HAL_USE_ADC */
|
#else /* not HAL_USE_ADC */
|
||||||
|
|
||||||
|
__attribute__((weak)) float getVoltageDivided(const char*, adc_channel_e DECLARE_ENGINE_PARAMETER_SUFFIX) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// voltage in MCU universe, from zero to VDD
|
||||||
|
__attribute__((weak)) float getVoltage(const char*, adc_channel_e DECLARE_ENGINE_PARAMETER_SUFFIX) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
|
@ -24,6 +24,7 @@
|
||||||
#include "string.h"
|
#include "string.h"
|
||||||
#include "mpu_util.h"
|
#include "mpu_util.h"
|
||||||
#include "engine.h"
|
#include "engine.h"
|
||||||
|
#include "thread_priority.h"
|
||||||
|
|
||||||
EXTERN_ENGINE;
|
EXTERN_ENGINE;
|
||||||
|
|
||||||
|
@ -83,7 +84,7 @@ static const CANConfig *canConfig = &canConfig500;
|
||||||
class CanRead final : public ThreadController<UTILITY_THREAD_STACK_SIZE> {
|
class CanRead final : public ThreadController<UTILITY_THREAD_STACK_SIZE> {
|
||||||
public:
|
public:
|
||||||
CanRead()
|
CanRead()
|
||||||
: ThreadController("CAN RX", NORMALPRIO)
|
: ThreadController("CAN RX", PRIO_CAN_RX)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -17,6 +17,7 @@
|
||||||
#include "gpio/drv8860.h"
|
#include "gpio/drv8860.h"
|
||||||
#include "pin_repository.h"
|
#include "pin_repository.h"
|
||||||
#include "os_util.h"
|
#include "os_util.h"
|
||||||
|
#include "thread_priority.h"
|
||||||
|
|
||||||
#if (BOARD_DRV8860_COUNT > 0)
|
#if (BOARD_DRV8860_COUNT > 0)
|
||||||
|
|
||||||
|
@ -225,7 +226,7 @@ int drv8860_init(void * data) {
|
||||||
|
|
||||||
if (!drv_task_ready) {
|
if (!drv_task_ready) {
|
||||||
chThdCreateStatic(drv8860_thread_1_wa, sizeof(drv8860_thread_1_wa),
|
chThdCreateStatic(drv8860_thread_1_wa, sizeof(drv8860_thread_1_wa),
|
||||||
NORMALPRIO + 1, drv8860_driver_thread, NULL);
|
PRIO_GPIOCHIP, drv8860_driver_thread, NULL);
|
||||||
drv_task_ready = true;
|
drv_task_ready = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -15,6 +15,7 @@
|
||||||
#include "gpio/mc33810.h"
|
#include "gpio/mc33810.h"
|
||||||
#include "pin_repository.h"
|
#include "pin_repository.h"
|
||||||
#include "os_util.h"
|
#include "os_util.h"
|
||||||
|
#include "thread_priority.h"
|
||||||
|
|
||||||
#if (BOARD_MC33810_COUNT > 0)
|
#if (BOARD_MC33810_COUNT > 0)
|
||||||
|
|
||||||
|
@ -498,7 +499,7 @@ int mc33810_init(void * data)
|
||||||
|
|
||||||
if (!drv_task_ready) {
|
if (!drv_task_ready) {
|
||||||
chThdCreateStatic(mc33810_thread_1_wa, sizeof(mc33810_thread_1_wa),
|
chThdCreateStatic(mc33810_thread_1_wa, sizeof(mc33810_thread_1_wa),
|
||||||
NORMALPRIO + 1, mc33810_driver_thread, NULL);
|
PRIO_GPIOCHIP, mc33810_driver_thread, NULL);
|
||||||
drv_task_ready = true;
|
drv_task_ready = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -18,6 +18,7 @@
|
||||||
#include "gpio/gpio_ext.h"
|
#include "gpio/gpio_ext.h"
|
||||||
#include "gpio/mc33972.h"
|
#include "gpio/mc33972.h"
|
||||||
#include "pin_repository.h"
|
#include "pin_repository.h"
|
||||||
|
#include "thread_priority.h"
|
||||||
|
|
||||||
#if (BOARD_MC33972_COUNT > 0)
|
#if (BOARD_MC33972_COUNT > 0)
|
||||||
|
|
||||||
|
@ -304,7 +305,7 @@ static int mc33972_init(void * data)
|
||||||
|
|
||||||
if (!drv_task_ready) {
|
if (!drv_task_ready) {
|
||||||
chThdCreateStatic(mc33972_thread_1_wa, sizeof(mc33972_thread_1_wa),
|
chThdCreateStatic(mc33972_thread_1_wa, sizeof(mc33972_thread_1_wa),
|
||||||
NORMALPRIO + 1, mc33972_driver_thread, NULL);
|
PRIO_GPIOCHIP, mc33972_driver_thread, NULL);
|
||||||
drv_task_ready = true;
|
drv_task_ready = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -25,6 +25,7 @@
|
||||||
#include "gpio/tle6240.h"
|
#include "gpio/tle6240.h"
|
||||||
#include "pin_repository.h"
|
#include "pin_repository.h"
|
||||||
#include "os_util.h"
|
#include "os_util.h"
|
||||||
|
#include "thread_priority.h"
|
||||||
|
|
||||||
#if (BOARD_TLE6240_COUNT > 0)
|
#if (BOARD_TLE6240_COUNT > 0)
|
||||||
|
|
||||||
|
@ -450,7 +451,7 @@ static int tle6240_init(void * data)
|
||||||
|
|
||||||
if (!drv_task_ready) {
|
if (!drv_task_ready) {
|
||||||
chThdCreateStatic(tle6240_thread_1_wa, sizeof(tle6240_thread_1_wa),
|
chThdCreateStatic(tle6240_thread_1_wa, sizeof(tle6240_thread_1_wa),
|
||||||
NORMALPRIO + 1, tle6240_driver_thread, NULL);
|
PRIO_GPIOCHIP, tle6240_driver_thread, NULL);
|
||||||
drv_task_ready = true;
|
drv_task_ready = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -41,6 +41,7 @@
|
||||||
#include "pin_repository.h"
|
#include "pin_repository.h"
|
||||||
#include "os_util.h"
|
#include "os_util.h"
|
||||||
#include "voltage.h"
|
#include "voltage.h"
|
||||||
|
#include "thread_priority.h"
|
||||||
|
|
||||||
EXTERN_ENGINE_CONFIGURATION;
|
EXTERN_ENGINE_CONFIGURATION;
|
||||||
|
|
||||||
|
@ -1199,7 +1200,7 @@ static int tle8888_init(void * data)
|
||||||
|
|
||||||
/* start thread */
|
/* start thread */
|
||||||
chip->thread = chThdCreateStatic(chip->thread_wa, sizeof(chip->thread_wa),
|
chip->thread = chThdCreateStatic(chip->thread_wa, sizeof(chip->thread_wa),
|
||||||
NORMALPRIO + 1, tle8888_driver_thread, chip);
|
PRIO_GPIOCHIP, tle8888_driver_thread, chip);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -35,7 +35,7 @@ extern "C" {
|
||||||
* 11 to program 64 bits per step
|
* 11 to program 64 bits per step
|
||||||
*/
|
*/
|
||||||
// Warning, flashdata_t must be unsigned!!!
|
// Warning, flashdata_t must be unsigned!!!
|
||||||
#if defined(STM32F4XX) || defined(STM32F7XX)
|
#if defined(STM32F4XX) || defined(STM32F7XX) || defined(STM32H7XX)
|
||||||
#define FLASH_CR_PSIZE_MASK FLASH_CR_PSIZE_0 | FLASH_CR_PSIZE_1
|
#define FLASH_CR_PSIZE_MASK FLASH_CR_PSIZE_0 | FLASH_CR_PSIZE_1
|
||||||
#if ((STM32_VDD >= 270) && (STM32_VDD <= 360))
|
#if ((STM32_VDD >= 270) && (STM32_VDD <= 360))
|
||||||
#define FLASH_CR_PSIZE_VALUE FLASH_CR_PSIZE_1
|
#define FLASH_CR_PSIZE_VALUE FLASH_CR_PSIZE_1
|
||||||
|
|
|
@ -26,6 +26,7 @@
|
||||||
#include "status_loop.h"
|
#include "status_loop.h"
|
||||||
#include "buffered_writer.h"
|
#include "buffered_writer.h"
|
||||||
#include "null_device.h"
|
#include "null_device.h"
|
||||||
|
#include "thread_priority.h"
|
||||||
|
|
||||||
#include "rtc_helper.h"
|
#include "rtc_helper.h"
|
||||||
|
|
||||||
|
@ -55,7 +56,6 @@ static int totalSyncCounter = 0;
|
||||||
* on't re-read SD card spi device after boot - it could change mid transaction (TS thread could preempt),
|
* on't re-read SD card spi device after boot - it could change mid transaction (TS thread could preempt),
|
||||||
* which will cause disaster (usually multiple-unlock of the same mutex in UNLOCK_SD_SPI)
|
* which will cause disaster (usually multiple-unlock of the same mutex in UNLOCK_SD_SPI)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
spi_device_e mmcSpiDevice = SPI_NONE;
|
spi_device_e mmcSpiDevice = SPI_NONE;
|
||||||
|
|
||||||
#define LOG_INDEX_FILENAME "index.txt"
|
#define LOG_INDEX_FILENAME "index.txt"
|
||||||
|
@ -78,6 +78,7 @@ spi_device_e mmcSpiDevice = SPI_NONE;
|
||||||
|
|
||||||
static THD_WORKING_AREA(mmcThreadStack, 3 * UTILITY_THREAD_STACK_SIZE); // MMC monitor thread
|
static THD_WORKING_AREA(mmcThreadStack, 3 * UTILITY_THREAD_STACK_SIZE); // MMC monitor thread
|
||||||
|
|
||||||
|
#if HAL_USE_MMC_SPI
|
||||||
/**
|
/**
|
||||||
* MMC driver instance.
|
* MMC driver instance.
|
||||||
*/
|
*/
|
||||||
|
@ -86,10 +87,15 @@ MMCDriver MMCD1;
|
||||||
/* MMC/SD over SPI driver configuration.*/
|
/* MMC/SD over SPI driver configuration.*/
|
||||||
static MMCConfig mmccfg = { NULL, &mmc_ls_spicfg, &mmc_hs_spicfg };
|
static MMCConfig mmccfg = { NULL, &mmc_ls_spicfg, &mmc_hs_spicfg };
|
||||||
|
|
||||||
|
#define LOCK_SD_SPI lockSpi(mmcSpiDevice)
|
||||||
|
#define UNLOCK_SD_SPI unlockSpi(mmcSpiDevice)
|
||||||
|
|
||||||
|
#endif /* HAL_USE_MMC_SPI */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* fatfs MMC/SPI
|
* fatfs MMC/SPI
|
||||||
*/
|
*/
|
||||||
static FATFS MMC_FS;
|
static NO_CACHE FATFS MMC_FS;
|
||||||
|
|
||||||
static LoggingWithStorage logger("mmcCard");
|
static LoggingWithStorage logger("mmcCard");
|
||||||
|
|
||||||
|
@ -138,7 +144,6 @@ static void sdStatistics(void) {
|
||||||
}
|
}
|
||||||
|
|
||||||
static void incLogFileName(void) {
|
static void incLogFileName(void) {
|
||||||
LOCK_SD_SPI;
|
|
||||||
memset(&FDCurrFile, 0, sizeof(FIL)); // clear the memory
|
memset(&FDCurrFile, 0, sizeof(FIL)); // clear the memory
|
||||||
FRESULT err = f_open(&FDCurrFile, LOG_INDEX_FILENAME, FA_READ); // This file has the index for next log file name
|
FRESULT err = f_open(&FDCurrFile, LOG_INDEX_FILENAME, FA_READ); // This file has the index for next log file name
|
||||||
|
|
||||||
|
@ -170,7 +175,6 @@ static void incLogFileName(void) {
|
||||||
f_write(&FDCurrFile, (void*)data, strlen(data), &result);
|
f_write(&FDCurrFile, (void*)data, strlen(data), &result);
|
||||||
f_close(&FDCurrFile);
|
f_close(&FDCurrFile);
|
||||||
scheduleMsg(&logger, "Done %d", logFileIndex);
|
scheduleMsg(&logger, "Done %d", logFileIndex);
|
||||||
UNLOCK_SD_SPI;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void prepareLogFileName(void) {
|
static void prepareLogFileName(void) {
|
||||||
|
@ -200,13 +204,11 @@ static void prepareLogFileName(void) {
|
||||||
* so that we can later append to that file
|
* so that we can later append to that file
|
||||||
*/
|
*/
|
||||||
static void createLogFile(void) {
|
static void createLogFile(void) {
|
||||||
LOCK_SD_SPI;
|
|
||||||
memset(&FDLogFile, 0, sizeof(FIL)); // clear the memory
|
memset(&FDLogFile, 0, sizeof(FIL)); // clear the memory
|
||||||
prepareLogFileName();
|
prepareLogFileName();
|
||||||
|
|
||||||
FRESULT err = f_open(&FDLogFile, logName, FA_OPEN_ALWAYS | FA_WRITE); // Create new file
|
FRESULT err = f_open(&FDLogFile, logName, FA_OPEN_ALWAYS | FA_WRITE); // Create new file
|
||||||
if (err != FR_OK && err != FR_EXIST) {
|
if (err != FR_OK && err != FR_EXIST) {
|
||||||
UNLOCK_SD_SPI;
|
|
||||||
sdStatus = SD_STATE_OPEN_FAILED;
|
sdStatus = SD_STATE_OPEN_FAILED;
|
||||||
warning(CUSTOM_ERR_SD_MOUNT_FAILED, "SD: mount failed");
|
warning(CUSTOM_ERR_SD_MOUNT_FAILED, "SD: mount failed");
|
||||||
printError("FS mount failed", err); // else - show error
|
printError("FS mount failed", err); // else - show error
|
||||||
|
@ -215,7 +217,6 @@ static void createLogFile(void) {
|
||||||
|
|
||||||
err = f_lseek(&FDLogFile, f_size(&FDLogFile)); // Move to end of the file to append data
|
err = f_lseek(&FDLogFile, f_size(&FDLogFile)); // Move to end of the file to append data
|
||||||
if (err) {
|
if (err) {
|
||||||
UNLOCK_SD_SPI;
|
|
||||||
sdStatus = SD_STATE_SEEK_FAILED;
|
sdStatus = SD_STATE_SEEK_FAILED;
|
||||||
warning(CUSTOM_ERR_SD_SEEK_FAILED, "SD: seek failed");
|
warning(CUSTOM_ERR_SD_SEEK_FAILED, "SD: seek failed");
|
||||||
printError("Seek error", err);
|
printError("Seek error", err);
|
||||||
|
@ -223,7 +224,6 @@ static void createLogFile(void) {
|
||||||
}
|
}
|
||||||
f_sync(&FDLogFile);
|
f_sync(&FDLogFile);
|
||||||
setSdCardReady(true); // everything Ok
|
setSdCardReady(true); // everything Ok
|
||||||
UNLOCK_SD_SPI;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void removeFile(const char *pathx) {
|
static void removeFile(const char *pathx) {
|
||||||
|
@ -231,10 +231,8 @@ static void removeFile(const char *pathx) {
|
||||||
scheduleMsg(&logger, "Error: No File system is mounted");
|
scheduleMsg(&logger, "Error: No File system is mounted");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
LOCK_SD_SPI;
|
|
||||||
f_unlink(pathx);
|
|
||||||
|
|
||||||
UNLOCK_SD_SPI;
|
f_unlink(pathx);
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
|
@ -262,14 +260,12 @@ static void listDirectory(const char *path) {
|
||||||
scheduleMsg(&logger, "Error: No File system is mounted");
|
scheduleMsg(&logger, "Error: No File system is mounted");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
LOCK_SD_SPI;
|
|
||||||
|
|
||||||
DIR dir;
|
DIR dir;
|
||||||
FRESULT res = f_opendir(&dir, path);
|
FRESULT res = f_opendir(&dir, path);
|
||||||
|
|
||||||
if (res != FR_OK) {
|
if (res != FR_OK) {
|
||||||
scheduleMsg(&logger, "Error opening directory %s", path);
|
scheduleMsg(&logger, "Error opening directory %s", path);
|
||||||
UNLOCK_SD_SPI;
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -297,7 +293,6 @@ static void listDirectory(const char *path) {
|
||||||
// (fno.fdate >> 5) & 15, fno.fdate & 31, (fno.ftime >> 11), (fno.ftime >> 5) & 63, fno.fsize,
|
// (fno.fdate >> 5) & 15, fno.fdate & 31, (fno.ftime >> 11), (fno.ftime >> 5) & 63, fno.fsize,
|
||||||
// fno.fname);
|
// fno.fname);
|
||||||
}
|
}
|
||||||
UNLOCK_SD_SPI;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -310,8 +305,16 @@ static void mmcUnMount(void) {
|
||||||
}
|
}
|
||||||
f_close(&FDLogFile); // close file
|
f_close(&FDLogFile); // close file
|
||||||
f_sync(&FDLogFile); // sync ALL
|
f_sync(&FDLogFile); // sync ALL
|
||||||
|
|
||||||
|
#if HAL_USE_MMC_SPI
|
||||||
mmcDisconnect(&MMCD1); // Brings the driver in a state safe for card removal.
|
mmcDisconnect(&MMCD1); // Brings the driver in a state safe for card removal.
|
||||||
mmcStop(&MMCD1); // Disables the MMC peripheral.
|
mmcStop(&MMCD1); // Disables the MMC peripheral.
|
||||||
|
UNLOCK_SD_SPI;
|
||||||
|
#endif
|
||||||
|
#ifdef EFI_SDC_DEVICE
|
||||||
|
sdcDisconnect(&EFI_SDC_DEVICE);
|
||||||
|
sdcStop(&EFI_SDC_DEVICE);
|
||||||
|
#endif
|
||||||
f_mount(NULL, 0, 0); // FATFS: Unregister work area prior to discard it
|
f_mount(NULL, 0, 0); // FATFS: Unregister work area prior to discard it
|
||||||
memset(&FDLogFile, 0, sizeof(FIL)); // clear FDLogFile
|
memset(&FDLogFile, 0, sizeof(FIL)); // clear FDLogFile
|
||||||
setSdCardReady(false); // status = false
|
setSdCardReady(false); // status = false
|
||||||
|
@ -343,6 +346,7 @@ void onUsbConnectedNotifyMmcI() {
|
||||||
|
|
||||||
#endif /* HAL_USE_USB_MSD */
|
#endif /* HAL_USE_USB_MSD */
|
||||||
|
|
||||||
|
#if HAL_USE_MMC_SPI
|
||||||
/*
|
/*
|
||||||
* Attempts to initialize the MMC card.
|
* Attempts to initialize the MMC card.
|
||||||
* Returns a BaseBlockDevice* corresponding to the SD card if successful, otherwise nullptr.
|
* Returns a BaseBlockDevice* corresponding to the SD card if successful, otherwise nullptr.
|
||||||
|
@ -376,9 +380,32 @@ static BaseBlockDevice* initializeMmcBlockDevice() {
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
UNLOCK_SD_SPI;
|
return reinterpret_cast<BaseBlockDevice*>(&MMCD1);
|
||||||
return (BaseBlockDevice*)&MMCD1;
|
|
||||||
}
|
}
|
||||||
|
#endif /* HAL_USE_MMC_SPI */
|
||||||
|
|
||||||
|
// Some ECUs are wired for SDIO/SDMMC instead of SPI
|
||||||
|
#ifdef EFI_SDC_DEVICE
|
||||||
|
static const SDCConfig sdcConfig = {
|
||||||
|
SDC_MODE_4BIT
|
||||||
|
};
|
||||||
|
|
||||||
|
static BaseBlockDevice* initializeMmcBlockDevice() {
|
||||||
|
if (!CONFIG(isSdCardEnabled)) {
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
sdcStart(&EFI_SDC_DEVICE, &sdcConfig);
|
||||||
|
sdStatus = SD_STATE_CONNECTING;
|
||||||
|
if (sdcConnect(&EFI_SDC_DEVICE) != HAL_SUCCESS) {
|
||||||
|
sdStatus = SD_STATE_NOT_CONNECTED;
|
||||||
|
warning(CUSTOM_OBD_MMC_ERROR, "Can't connect or mount MMC/SD");
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
return reinterpret_cast<BaseBlockDevice*>(&EFI_SDC_DEVICE);
|
||||||
|
}
|
||||||
|
#endif /* EFI_SDC_DEVICE */
|
||||||
|
|
||||||
// Initialize and mount the SD card.
|
// Initialize and mount the SD card.
|
||||||
// Returns true if the filesystem was successfully mounted for writing.
|
// Returns true if the filesystem was successfully mounted for writing.
|
||||||
|
@ -435,7 +462,6 @@ struct SdLogBufferWriter final : public BufferedWriter<512> {
|
||||||
|
|
||||||
totalLoggedBytes += count;
|
totalLoggedBytes += count;
|
||||||
|
|
||||||
LOCK_SD_SPI;
|
|
||||||
FRESULT err = f_write(&FDLogFile, buffer, count, &bytesWritten);
|
FRESULT err = f_write(&FDLogFile, buffer, count, &bytesWritten);
|
||||||
|
|
||||||
if (bytesWritten != count) {
|
if (bytesWritten != count) {
|
||||||
|
@ -443,7 +469,6 @@ struct SdLogBufferWriter final : public BufferedWriter<512> {
|
||||||
|
|
||||||
// Close file and unmount volume
|
// Close file and unmount volume
|
||||||
mmcUnMount();
|
mmcUnMount();
|
||||||
UNLOCK_SD_SPI;
|
|
||||||
failed = true;
|
failed = true;
|
||||||
return 0;
|
return 0;
|
||||||
} else {
|
} else {
|
||||||
|
@ -460,7 +485,6 @@ struct SdLogBufferWriter final : public BufferedWriter<512> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
UNLOCK_SD_SPI;
|
|
||||||
return bytesWritten;
|
return bytesWritten;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -514,7 +538,7 @@ void initMmcCard(void) {
|
||||||
chBSemObjectInit(&usbConnectedSemaphore, true);
|
chBSemObjectInit(&usbConnectedSemaphore, true);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
chThdCreateStatic(mmcThreadStack, sizeof(mmcThreadStack), LOWPRIO, (tfunc_t)(void*) MMCmonThread, NULL);
|
chThdCreateStatic(mmcThreadStack, sizeof(mmcThreadStack), PRIO_MMC, (tfunc_t)(void*) MMCmonThread, NULL);
|
||||||
|
|
||||||
addConsoleAction("sdinfo", sdStatistics);
|
addConsoleAction("sdinfo", sdStatistics);
|
||||||
addConsoleActionS("ls", listDirectory);
|
addConsoleActionS("ls", listDirectory);
|
||||||
|
|
|
@ -23,10 +23,6 @@ void readLogFileContent(char *buffer, short fileId, short offset, short length);
|
||||||
void handleTsR(TsChannelBase* tsChannel, char *input);
|
void handleTsR(TsChannelBase* tsChannel, char *input);
|
||||||
void handleTsW(TsChannelBase* tsChannel, char *input);
|
void handleTsW(TsChannelBase* tsChannel, char *input);
|
||||||
|
|
||||||
extern spi_device_e mmcSpiDevice;
|
|
||||||
#define LOCK_SD_SPI lockSpi(mmcSpiDevice)
|
|
||||||
#define UNLOCK_SD_SPI unlockSpi(mmcSpiDevice)
|
|
||||||
|
|
||||||
extern "C"
|
extern "C"
|
||||||
#endif
|
#endif
|
||||||
void onUsbConnectedNotifyMmcI(void);
|
void onUsbConnectedNotifyMmcI(void);
|
||||||
|
|
|
@ -164,12 +164,10 @@ void handleTsR(TsChannelBase* tsChannel, char *input) {
|
||||||
#endif // EFI_SIMULATOR
|
#endif // EFI_SIMULATOR
|
||||||
|
|
||||||
#if EFI_FILE_LOGGING
|
#if EFI_FILE_LOGGING
|
||||||
LOCK_SD_SPI;
|
|
||||||
DIR dir;
|
DIR dir;
|
||||||
FRESULT res = f_opendir(&dir, ROOT_DIR);
|
FRESULT res = f_opendir(&dir, ROOT_DIR);
|
||||||
if (res != FR_OK) {
|
if (res != FR_OK) {
|
||||||
scheduleMsg(&sharedLogger, "Error opening directory");
|
scheduleMsg(&sharedLogger, "Error opening directory");
|
||||||
UNLOCK_SD_SPI;
|
|
||||||
} else {
|
} else {
|
||||||
int index = 0;
|
int index = 0;
|
||||||
while (true) {
|
while (true) {
|
||||||
|
@ -203,7 +201,6 @@ void handleTsR(TsChannelBase* tsChannel, char *input) {
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
UNLOCK_SD_SPI;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // EFI_FILE_LOGGING
|
#endif // EFI_FILE_LOGGING
|
||||||
|
@ -227,10 +224,8 @@ void handleTsR(TsChannelBase* tsChannel, char *input) {
|
||||||
#endif // EFI_SIMULATOR
|
#endif // EFI_SIMULATOR
|
||||||
|
|
||||||
#if EFI_FILE_LOGGING
|
#if EFI_FILE_LOGGING
|
||||||
LOCK_SD_SPI;
|
|
||||||
got = 0;
|
got = 0;
|
||||||
f_read(&uploading, (void*) &buffer[2], TRANSFER_SIZE, (UINT*) &got);
|
f_read(&uploading, (void*) &buffer[2], TRANSFER_SIZE, (UINT*) &got);
|
||||||
UNLOCK_SD_SPI;
|
|
||||||
#endif // EFI_FILE_LOGGING
|
#endif // EFI_FILE_LOGGING
|
||||||
|
|
||||||
tsChannel->sendResponse(TS_CRC, buffer, 2 + got);
|
tsChannel->sendResponse(TS_CRC, buffer, 2 + got);
|
||||||
|
@ -281,7 +276,6 @@ void handleTsW(TsChannelBase* tsChannel, char *input) {
|
||||||
#endif // EFI_SIMULATOR
|
#endif // EFI_SIMULATOR
|
||||||
|
|
||||||
#if EFI_FILE_LOGGING
|
#if EFI_FILE_LOGGING
|
||||||
LOCK_SD_SPI;
|
|
||||||
DIR dir;
|
DIR dir;
|
||||||
FRESULT res = f_opendir(&dir, ROOT_DIR);
|
FRESULT res = f_opendir(&dir, ROOT_DIR);
|
||||||
if (res != FR_OK) {
|
if (res != FR_OK) {
|
||||||
|
@ -304,7 +298,6 @@ void handleTsW(TsChannelBase* tsChannel, char *input) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
UNLOCK_SD_SPI;
|
|
||||||
#endif // EFI_FILE_LOGGING
|
#endif // EFI_FILE_LOGGING
|
||||||
|
|
||||||
sendOkResponse(tsChannel, TS_CRC);
|
sendOkResponse(tsChannel, TS_CRC);
|
||||||
|
@ -340,14 +333,11 @@ void handleTsW(TsChannelBase* tsChannel, char *input) {
|
||||||
#endif // EFI_SIMULATOR
|
#endif // EFI_SIMULATOR
|
||||||
|
|
||||||
#if EFI_FILE_LOGGING
|
#if EFI_FILE_LOGGING
|
||||||
LOCK_SD_SPI;
|
|
||||||
|
|
||||||
DIR dir;
|
DIR dir;
|
||||||
FRESULT res = f_opendir(&dir, ROOT_DIR);
|
FRESULT res = f_opendir(&dir, ROOT_DIR);
|
||||||
|
|
||||||
if (res != FR_OK) {
|
if (res != FR_OK) {
|
||||||
scheduleMsg(&sharedLogger, "Error opening directory");
|
scheduleMsg(&sharedLogger, "Error opening directory");
|
||||||
UNLOCK_SD_SPI;
|
|
||||||
} else {
|
} else {
|
||||||
memset(&uploading, 0, sizeof(FIL)); // clear the memory
|
memset(&uploading, 0, sizeof(FIL)); // clear the memory
|
||||||
while (true) {
|
while (true) {
|
||||||
|
@ -366,7 +356,6 @@ void handleTsW(TsChannelBase* tsChannel, char *input) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
UNLOCK_SD_SPI;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // EFI_FILE_LOGGING
|
#endif // EFI_FILE_LOGGING
|
||||||
|
|
|
@ -13,8 +13,20 @@
|
||||||
#define HAL_USE_USB EFI_USB_SERIAL
|
#define HAL_USE_USB EFI_USB_SERIAL
|
||||||
#define HAL_USE_SERIAL_USB EFI_USB_SERIAL
|
#define HAL_USE_SERIAL_USB EFI_USB_SERIAL
|
||||||
|
|
||||||
// If EFI_FILE_LOGGING, enable MMC SPI driver
|
// If EFI_FILE_LOGGING and SDC, enable SDIO/SDMMC driver
|
||||||
#define HAL_USE_MMC_SPI EFI_FILE_LOGGING
|
#if defined(EFI_SDC_DEVICE) && EFI_FILE_LOGGING
|
||||||
|
#define HAL_USE_SDC TRUE
|
||||||
|
#define FATFS_HAL_DEVICE EFI_SDC_DEVICE
|
||||||
|
#else
|
||||||
|
#define HAL_USE_SDC FALSE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// If EFI_FILE_LOGGING but not SDC, use SPI instead
|
||||||
|
#if !defined(EFI_SDC_DEVICE) && EFI_FILE_LOGGING
|
||||||
|
#define HAL_USE_MMC_SPI TRUE
|
||||||
|
#else
|
||||||
|
#define HAL_USE_MMC_SPI FALSE
|
||||||
|
#endif
|
||||||
|
|
||||||
// If USB and File logging, enable USB Mass Storage & community
|
// If USB and File logging, enable USB Mass Storage & community
|
||||||
#define HAL_USE_USB_MSD (EFI_FILE_LOGGING && EFI_USB_SERIAL)
|
#define HAL_USE_USB_MSD (EFI_FILE_LOGGING && EFI_USB_SERIAL)
|
||||||
|
|
|
@ -15,6 +15,30 @@
|
||||||
#include "flash_int.h"
|
#include "flash_int.h"
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
#ifdef STM32H7XX
|
||||||
|
// Use bank 2 on H7
|
||||||
|
#define FLASH_CR FLASH->CR2
|
||||||
|
#define FLASH_SR FLASH->SR2
|
||||||
|
#define FLASH_KEYR FLASH->KEYR2
|
||||||
|
|
||||||
|
// I have no idea why ST changed the register name from STRT -> START
|
||||||
|
#define FLASH_CR_STRT FLASH_CR_START
|
||||||
|
|
||||||
|
#undef FLASH_BASE
|
||||||
|
// This is the start of the second bank, since H7 sector numbers are bank relative
|
||||||
|
#define FLASH_BASE 0x08100000
|
||||||
|
|
||||||
|
// QW bit supercedes the older BSY bit
|
||||||
|
#define intFlashWaitWhileBusy() { while (FLASH_SR & FLASH_SR_QW) {} }
|
||||||
|
#else
|
||||||
|
#define FLASH_CR FLASH->CR
|
||||||
|
#define FLASH_SR FLASH->SR
|
||||||
|
#define FLASH_KEYR FLASH->KEYR
|
||||||
|
|
||||||
|
// Wait for the flash operation to finish
|
||||||
|
#define intFlashWaitWhileBusy() { while (FLASH->SR & FLASH_SR_BSY) {} }
|
||||||
|
#endif
|
||||||
|
|
||||||
flashaddr_t intFlashSectorBegin(flashsector_t sector) {
|
flashaddr_t intFlashSectorBegin(flashsector_t sector) {
|
||||||
flashaddr_t address = FLASH_BASE;
|
flashaddr_t address = FLASH_BASE;
|
||||||
while (sector > 0) {
|
while (sector > 0) {
|
||||||
|
@ -35,11 +59,6 @@ flashsector_t intFlashSectorAt(flashaddr_t address) {
|
||||||
return sector;
|
return sector;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Wait for the flash operation to finish.
|
|
||||||
*/
|
|
||||||
#define intFlashWaitWhileBusy() { while (FLASH->SR & FLASH_SR_BSY) {} }
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Unlock the flash memory for write access.
|
* @brief Unlock the flash memory for write access.
|
||||||
* @return HAL_SUCCESS Unlock was successful.
|
* @return HAL_SUCCESS Unlock was successful.
|
||||||
|
@ -47,15 +66,15 @@ flashsector_t intFlashSectorAt(flashaddr_t address) {
|
||||||
*/
|
*/
|
||||||
static bool intFlashUnlock(void) {
|
static bool intFlashUnlock(void) {
|
||||||
/* Check if unlock is really needed */
|
/* Check if unlock is really needed */
|
||||||
if (!(FLASH->CR & FLASH_CR_LOCK))
|
if (!(FLASH_CR & FLASH_CR_LOCK))
|
||||||
return HAL_SUCCESS;
|
return HAL_SUCCESS;
|
||||||
|
|
||||||
/* Write magic unlock sequence */
|
/* Write magic unlock sequence */
|
||||||
FLASH->KEYR = 0x45670123;
|
FLASH_KEYR = 0x45670123;
|
||||||
FLASH->KEYR = 0xCDEF89AB;
|
FLASH_KEYR = 0xCDEF89AB;
|
||||||
|
|
||||||
/* Check if unlock was successful */
|
/* Check if unlock was successful */
|
||||||
if (FLASH->CR & FLASH_CR_LOCK)
|
if (FLASH_CR & FLASH_CR_LOCK)
|
||||||
return HAL_FAILED;
|
return HAL_FAILED;
|
||||||
return HAL_SUCCESS;
|
return HAL_SUCCESS;
|
||||||
}
|
}
|
||||||
|
@ -63,7 +82,7 @@ static bool intFlashUnlock(void) {
|
||||||
/**
|
/**
|
||||||
* @brief Lock the flash memory for write access.
|
* @brief Lock the flash memory for write access.
|
||||||
*/
|
*/
|
||||||
#define intFlashLock() { FLASH->CR |= FLASH_CR_LOCK; }
|
#define intFlashLock() { FLASH_CR |= FLASH_CR_LOCK; }
|
||||||
|
|
||||||
int intFlashSectorErase(flashsector_t sector) {
|
int intFlashSectorErase(flashsector_t sector) {
|
||||||
/* Unlock flash for write access */
|
/* Unlock flash for write access */
|
||||||
|
@ -74,8 +93,8 @@ int intFlashSectorErase(flashsector_t sector) {
|
||||||
intFlashWaitWhileBusy();
|
intFlashWaitWhileBusy();
|
||||||
|
|
||||||
/* Setup parallelism before any program/erase */
|
/* Setup parallelism before any program/erase */
|
||||||
FLASH->CR &= ~FLASH_CR_PSIZE_MASK;
|
FLASH_CR &= ~FLASH_CR_PSIZE_MASK;
|
||||||
FLASH->CR |= FLASH_CR_PSIZE_VALUE;
|
FLASH_CR |= FLASH_CR_PSIZE_VALUE;
|
||||||
|
|
||||||
/* Start deletion of sector.
|
/* Start deletion of sector.
|
||||||
* SNB(4:1) is defined as:
|
* SNB(4:1) is defined as:
|
||||||
|
@ -87,31 +106,35 @@ int intFlashSectorErase(flashsector_t sector) {
|
||||||
* ...
|
* ...
|
||||||
* 10111 sector 23 (the end of 2nd bank, 2Mb border)
|
* 10111 sector 23 (the end of 2nd bank, 2Mb border)
|
||||||
* others not allowed */
|
* others not allowed */
|
||||||
#ifndef FLASH_CR_SNB_4
|
#ifndef FLASH_CR_SNB_3
|
||||||
FLASH->CR &= ~(FLASH_CR_SNB_0 | FLASH_CR_SNB_1 | FLASH_CR_SNB_2 | FLASH_CR_SNB_3);
|
FLASH_CR &= ~(FLASH_CR_SNB_0 | FLASH_CR_SNB_1 | FLASH_CR_SNB_2);
|
||||||
|
#elif !defined(FLASH_CR_SNB_4)
|
||||||
|
FLASH_CR &= ~(FLASH_CR_SNB_0 | FLASH_CR_SNB_1 | FLASH_CR_SNB_2 | FLASH_CR_SNB_3);
|
||||||
#else
|
#else
|
||||||
FLASH->CR &= ~(FLASH_CR_SNB_0 | FLASH_CR_SNB_1 | FLASH_CR_SNB_2 | FLASH_CR_SNB_3 | FLASH_CR_SNB_4);
|
FLASH_CR &= ~(FLASH_CR_SNB_0 | FLASH_CR_SNB_1 | FLASH_CR_SNB_2 | FLASH_CR_SNB_3 | FLASH_CR_SNB_4);
|
||||||
#endif
|
#endif
|
||||||
if (sector & 0x1)
|
if (sector & 0x1)
|
||||||
FLASH->CR |= FLASH_CR_SNB_0;
|
FLASH_CR |= FLASH_CR_SNB_0;
|
||||||
if (sector & 0x2)
|
if (sector & 0x2)
|
||||||
FLASH->CR |= FLASH_CR_SNB_1;
|
FLASH_CR |= FLASH_CR_SNB_1;
|
||||||
if (sector & 0x4)
|
if (sector & 0x4)
|
||||||
FLASH->CR |= FLASH_CR_SNB_2;
|
FLASH_CR |= FLASH_CR_SNB_2;
|
||||||
|
#ifdef FLASH_CR_SNB_4
|
||||||
if (sector & 0x8)
|
if (sector & 0x8)
|
||||||
FLASH->CR |= FLASH_CR_SNB_3;
|
FLASH_CR |= FLASH_CR_SNB_3;
|
||||||
|
#endif
|
||||||
#ifdef FLASH_CR_SNB_4
|
#ifdef FLASH_CR_SNB_4
|
||||||
if (sector & 0x10)
|
if (sector & 0x10)
|
||||||
FLASH->CR |= FLASH_CR_SNB_4;
|
FLASH_CR |= FLASH_CR_SNB_4;
|
||||||
#endif
|
#endif
|
||||||
FLASH->CR |= FLASH_CR_SER;
|
FLASH_CR |= FLASH_CR_SER;
|
||||||
FLASH->CR |= FLASH_CR_STRT;
|
FLASH_CR |= FLASH_CR_STRT;
|
||||||
|
|
||||||
/* Wait until it's finished. */
|
/* Wait until it's finished. */
|
||||||
intFlashWaitWhileBusy();
|
intFlashWaitWhileBusy();
|
||||||
|
|
||||||
/* Sector erase flag does not clear automatically. */
|
/* Sector erase flag does not clear automatically. */
|
||||||
FLASH->CR &= ~FLASH_CR_SER;
|
FLASH_CR &= ~FLASH_CR_SER;
|
||||||
|
|
||||||
/* Lock flash again */
|
/* Lock flash again */
|
||||||
intFlashLock()
|
intFlashLock()
|
||||||
|
@ -187,6 +210,61 @@ int intFlashRead(flashaddr_t address, char* buffer, size_t size) {
|
||||||
return FLASH_RETURN_SUCCESS;
|
return FLASH_RETURN_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef STM32H7XX
|
||||||
|
int intFlashWrite(flashaddr_t address, const char* buffer, size_t size) {
|
||||||
|
/* Unlock flash for write access */
|
||||||
|
if (intFlashUnlock() == HAL_FAILED)
|
||||||
|
return FLASH_RETURN_NO_PERMISSION;
|
||||||
|
|
||||||
|
/* Wait for any busy flags */
|
||||||
|
intFlashWaitWhileBusy();
|
||||||
|
|
||||||
|
/* Setup parallelism before program */
|
||||||
|
FLASH_CR &= ~FLASH_CR_PSIZE_MASK;
|
||||||
|
FLASH_CR |= FLASH_CR_PSIZE_VALUE;
|
||||||
|
|
||||||
|
// Round up to the next number of full 32 byte words
|
||||||
|
size_t flashWordCount = (size - 1) / 32 + 1;
|
||||||
|
|
||||||
|
// Read units of flashdata_t from the buffer, writing to flash
|
||||||
|
const flashdata_t* pRead = (const flashdata_t*)buffer;
|
||||||
|
flashdata_t* pWrite = (flashdata_t*)address;
|
||||||
|
|
||||||
|
for (size_t word = 0; word < flashWordCount; word++) {
|
||||||
|
/* Enter flash programming mode */
|
||||||
|
FLASH_CR |= FLASH_CR_PG;
|
||||||
|
|
||||||
|
// Flush pipelines
|
||||||
|
__ISB();
|
||||||
|
__DSB();
|
||||||
|
|
||||||
|
// Write 32 bytes
|
||||||
|
for (size_t i = 0; i < 8; i++) {
|
||||||
|
*pWrite++ = *pRead++;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Flush pipelines
|
||||||
|
__ISB();
|
||||||
|
__DSB();
|
||||||
|
|
||||||
|
/* Wait for completion */
|
||||||
|
intFlashWaitWhileBusy();
|
||||||
|
|
||||||
|
/* Exit flash programming mode */
|
||||||
|
FLASH_CR &= ~FLASH_CR_PG;
|
||||||
|
|
||||||
|
// Flush pipelines
|
||||||
|
__ISB();
|
||||||
|
__DSB();
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Lock flash again */
|
||||||
|
intFlashLock();
|
||||||
|
|
||||||
|
return FLASH_RETURN_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
#else // not STM32H7XX
|
||||||
static void intFlashWriteData(flashaddr_t address, const flashdata_t data) {
|
static void intFlashWriteData(flashaddr_t address, const flashdata_t data) {
|
||||||
/* Enter flash programming mode */
|
/* Enter flash programming mode */
|
||||||
FLASH->CR |= FLASH_CR_PG;
|
FLASH->CR |= FLASH_CR_PG;
|
||||||
|
@ -276,5 +354,6 @@ int intFlashWrite(flashaddr_t address, const char* buffer, size_t size) {
|
||||||
|
|
||||||
return FLASH_RETURN_SUCCESS;
|
return FLASH_RETURN_SUCCESS;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif /* EFI_INTERNAL_FLASH */
|
#endif /* EFI_INTERNAL_FLASH */
|
||||||
|
|
|
@ -314,7 +314,6 @@
|
||||||
#define STM32_USB_OTG2_IRQ_PRIORITY 14
|
#define STM32_USB_OTG2_IRQ_PRIORITY 14
|
||||||
#define STM32_USB_OTG1_RX_FIFO_SIZE 512
|
#define STM32_USB_OTG1_RX_FIFO_SIZE 512
|
||||||
#define STM32_USB_OTG2_RX_FIFO_SIZE 1024
|
#define STM32_USB_OTG2_RX_FIFO_SIZE 1024
|
||||||
#define STM32_USB_OTG_THREAD_PRIO LOWPRIO
|
|
||||||
#define STM32_USB_OTG_THREAD_STACK_SIZE 1024
|
#define STM32_USB_OTG_THREAD_STACK_SIZE 1024
|
||||||
#define STM32_USB_OTGFIFO_FILL_BASEPRI 0
|
#define STM32_USB_OTGFIFO_FILL_BASEPRI 0
|
||||||
|
|
||||||
|
|
|
@ -17,8 +17,10 @@ void portInitAdc() {
|
||||||
// Init slow ADC
|
// Init slow ADC
|
||||||
adcStart(&ADCD1, NULL);
|
adcStart(&ADCD1, NULL);
|
||||||
|
|
||||||
|
#if EFI_USE_FAST_ADC
|
||||||
// Init fast ADC (MAP sensor)
|
// Init fast ADC (MAP sensor)
|
||||||
adcStart(&ADCD2, NULL);
|
adcStart(&ADCD2, NULL);
|
||||||
|
#endif
|
||||||
|
|
||||||
// Enable internal temperature reference
|
// Enable internal temperature reference
|
||||||
adcSTM32EnableTSVREFE(); // Internal temperature sensor
|
adcSTM32EnableTSVREFE(); // Internal temperature sensor
|
||||||
|
|
|
@ -750,8 +750,6 @@
|
||||||
/* Port-specific settings (override port settings defaulted in chcore.h). */
|
/* Port-specific settings (override port settings defaulted in chcore.h). */
|
||||||
/*===========================================================================*/
|
/*===========================================================================*/
|
||||||
|
|
||||||
#define CORTEX_VTOR_INIT 0x00200000U
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Sleep at idle.
|
* @brief Sleep at idle.
|
||||||
* @details This option enables call to __WFI() from idle thread to save power.
|
* @details This option enables call to __WFI() from idle thread to save power.
|
||||||
|
|
|
@ -145,13 +145,17 @@
|
||||||
* SDC driver system settings.
|
* SDC driver system settings.
|
||||||
*/
|
*/
|
||||||
#define STM32_SDC_USE_SDMMC1 FALSE
|
#define STM32_SDC_USE_SDMMC1 FALSE
|
||||||
|
#define STM32_SDC_USE_SDMMC2 TRUE
|
||||||
#define STM32_SDC_SDMMC_UNALIGNED_SUPPORT TRUE
|
#define STM32_SDC_SDMMC_UNALIGNED_SUPPORT TRUE
|
||||||
#define STM32_SDC_SDMMC_WRITE_TIMEOUT 1000
|
#define STM32_SDC_SDMMC_WRITE_TIMEOUT 1000
|
||||||
#define STM32_SDC_SDMMC_READ_TIMEOUT 1000
|
#define STM32_SDC_SDMMC_READ_TIMEOUT 1000
|
||||||
#define STM32_SDC_SDMMC_CLOCK_DELAY 10
|
#define STM32_SDC_SDMMC_CLOCK_DELAY 10
|
||||||
#define STM32_SDC_SDMMC1_DMA_STREAM STM32_DMA_STREAM_ID(2, 3)
|
#define STM32_SDC_SDMMC1_DMA_STREAM STM32_DMA_STREAM_ID(2, 3)
|
||||||
|
#define STM32_SDC_SDMMC2_DMA_STREAM STM32_DMA_STREAM_ID(2, 0)
|
||||||
#define STM32_SDC_SDMMC1_DMA_PRIORITY 3
|
#define STM32_SDC_SDMMC1_DMA_PRIORITY 3
|
||||||
|
#define STM32_SDC_SDMMC2_DMA_PRIORITY 3
|
||||||
#define STM32_SDC_SDMMC1_IRQ_PRIORITY 9
|
#define STM32_SDC_SDMMC1_IRQ_PRIORITY 9
|
||||||
|
#define STM32_SDC_SDMMC2_IRQ_PRIORITY 9
|
||||||
|
|
||||||
#include "mcuconf_common_f4_f7.h"
|
#include "mcuconf_common_f4_f7.h"
|
||||||
|
|
||||||
|
|
|
@ -76,6 +76,12 @@
|
||||||
#define STM32_HSE_BYPASS
|
#define STM32_HSE_BYPASS
|
||||||
#endif /* EFI_USE_OSC */
|
#endif /* EFI_USE_OSC */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Board voltages.
|
||||||
|
* Required for performance limits calculation.
|
||||||
|
*/
|
||||||
|
#define STM32_VDD 330U
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* MCU type as defined in the ST header.
|
* MCU type as defined in the ST header.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -31,6 +31,8 @@
|
||||||
#define _CHIBIOS_RT_CONF_
|
#define _CHIBIOS_RT_CONF_
|
||||||
#define _CHIBIOS_RT_CONF_VER_6_1_
|
#define _CHIBIOS_RT_CONF_VER_6_1_
|
||||||
|
|
||||||
|
#include "chconf_common.h"
|
||||||
|
|
||||||
/*===========================================================================*/
|
/*===========================================================================*/
|
||||||
/**
|
/**
|
||||||
* @name System timers settings
|
* @name System timers settings
|
||||||
|
@ -38,8 +40,6 @@
|
||||||
*/
|
*/
|
||||||
/*===========================================================================*/
|
/*===========================================================================*/
|
||||||
|
|
||||||
#include "chconf_common.h"
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief System time counter resolution.
|
* @brief System time counter resolution.
|
||||||
* @note Allowed values are 16, 32 or 64 bits.
|
* @note Allowed values are 16, 32 or 64 bits.
|
||||||
|
@ -54,7 +54,7 @@
|
||||||
* setting also defines the system tick time unit.
|
* setting also defines the system tick time unit.
|
||||||
*/
|
*/
|
||||||
#if !defined(CH_CFG_ST_FREQUENCY)
|
#if !defined(CH_CFG_ST_FREQUENCY)
|
||||||
#define CH_CFG_ST_FREQUENCY 10000
|
#define CH_CFG_ST_FREQUENCY 1000
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -308,7 +308,7 @@
|
||||||
* @note Requires @p CH_CFG_USE_HEAP and/or @p CH_CFG_USE_MEMPOOLS.
|
* @note Requires @p CH_CFG_USE_HEAP and/or @p CH_CFG_USE_MEMPOOLS.
|
||||||
*/
|
*/
|
||||||
#if !defined(CH_CFG_USE_DYNAMIC)
|
#if !defined(CH_CFG_USE_DYNAMIC)
|
||||||
#define CH_CFG_USE_DYNAMIC TRUE
|
#define CH_CFG_USE_DYNAMIC FALSE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/** @} */
|
/** @} */
|
||||||
|
@ -329,7 +329,7 @@
|
||||||
* @note Requires @p CH_CFG_USE_SEMAPHORES.
|
* @note Requires @p CH_CFG_USE_SEMAPHORES.
|
||||||
*/
|
*/
|
||||||
#if !defined(CH_CFG_USE_MAILBOXES)
|
#if !defined(CH_CFG_USE_MAILBOXES)
|
||||||
#define CH_CFG_USE_MAILBOXES TRUE
|
#define CH_CFG_USE_MAILBOXES FALSE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -340,7 +340,7 @@
|
||||||
* @note The default is @p TRUE.
|
* @note The default is @p TRUE.
|
||||||
*/
|
*/
|
||||||
#if !defined(CH_CFG_USE_MEMCORE)
|
#if !defined(CH_CFG_USE_MEMCORE)
|
||||||
#define CH_CFG_USE_MEMCORE TRUE
|
#define CH_CFG_USE_MEMCORE FALSE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -369,7 +369,7 @@
|
||||||
* @note Mutexes are recommended.
|
* @note Mutexes are recommended.
|
||||||
*/
|
*/
|
||||||
#if !defined(CH_CFG_USE_HEAP)
|
#if !defined(CH_CFG_USE_HEAP)
|
||||||
#define CH_CFG_USE_HEAP TRUE
|
#define CH_CFG_USE_HEAP FALSE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -380,7 +380,7 @@
|
||||||
* @note The default is @p TRUE.
|
* @note The default is @p TRUE.
|
||||||
*/
|
*/
|
||||||
#if !defined(CH_CFG_USE_MEMPOOLS)
|
#if !defined(CH_CFG_USE_MEMPOOLS)
|
||||||
#define CH_CFG_USE_MEMPOOLS TRUE
|
#define CH_CFG_USE_MEMPOOLS FALSE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -391,7 +391,7 @@
|
||||||
* @note The default is @p TRUE.
|
* @note The default is @p TRUE.
|
||||||
*/
|
*/
|
||||||
#if !defined(CH_CFG_USE_OBJ_FIFOS)
|
#if !defined(CH_CFG_USE_OBJ_FIFOS)
|
||||||
#define CH_CFG_USE_OBJ_FIFOS TRUE
|
#define CH_CFG_USE_OBJ_FIFOS FALSE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -402,7 +402,7 @@
|
||||||
* @note The default is @p TRUE.
|
* @note The default is @p TRUE.
|
||||||
*/
|
*/
|
||||||
#if !defined(CH_CFG_USE_PIPES)
|
#if !defined(CH_CFG_USE_PIPES)
|
||||||
#define CH_CFG_USE_PIPES TRUE
|
#define CH_CFG_USE_PIPES FALSE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -413,7 +413,7 @@
|
||||||
* @note The default is @p TRUE.
|
* @note The default is @p TRUE.
|
||||||
*/
|
*/
|
||||||
#if !defined(CH_CFG_USE_OBJ_CACHES)
|
#if !defined(CH_CFG_USE_OBJ_CACHES)
|
||||||
#define CH_CFG_USE_OBJ_CACHES TRUE
|
#define CH_CFG_USE_OBJ_CACHES FALSE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -424,7 +424,7 @@
|
||||||
* @note The default is @p TRUE.
|
* @note The default is @p TRUE.
|
||||||
*/
|
*/
|
||||||
#if !defined(CH_CFG_USE_DELEGATES)
|
#if !defined(CH_CFG_USE_DELEGATES)
|
||||||
#define CH_CFG_USE_DELEGATES TRUE
|
#define CH_CFG_USE_DELEGATES FALSE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -435,7 +435,7 @@
|
||||||
* @note The default is @p TRUE.
|
* @note The default is @p TRUE.
|
||||||
*/
|
*/
|
||||||
#if !defined(CH_CFG_USE_JOBS)
|
#if !defined(CH_CFG_USE_JOBS)
|
||||||
#define CH_CFG_USE_JOBS TRUE
|
#define CH_CFG_USE_JOBS FALSE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/** @} */
|
/** @} */
|
||||||
|
@ -455,7 +455,7 @@
|
||||||
* @note The default is @p FALSE.
|
* @note The default is @p FALSE.
|
||||||
*/
|
*/
|
||||||
#if !defined(CH_CFG_USE_FACTORY)
|
#if !defined(CH_CFG_USE_FACTORY)
|
||||||
#define CH_CFG_USE_FACTORY TRUE
|
#define CH_CFG_USE_FACTORY FALSE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -471,42 +471,42 @@
|
||||||
* @brief Enables the registry of generic objects.
|
* @brief Enables the registry of generic objects.
|
||||||
*/
|
*/
|
||||||
#if !defined(CH_CFG_FACTORY_OBJECTS_REGISTRY)
|
#if !defined(CH_CFG_FACTORY_OBJECTS_REGISTRY)
|
||||||
#define CH_CFG_FACTORY_OBJECTS_REGISTRY TRUE
|
#define CH_CFG_FACTORY_OBJECTS_REGISTRY FALSE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Enables factory for generic buffers.
|
* @brief Enables factory for generic buffers.
|
||||||
*/
|
*/
|
||||||
#if !defined(CH_CFG_FACTORY_GENERIC_BUFFERS)
|
#if !defined(CH_CFG_FACTORY_GENERIC_BUFFERS)
|
||||||
#define CH_CFG_FACTORY_GENERIC_BUFFERS TRUE
|
#define CH_CFG_FACTORY_GENERIC_BUFFERS FALSE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Enables factory for semaphores.
|
* @brief Enables factory for semaphores.
|
||||||
*/
|
*/
|
||||||
#if !defined(CH_CFG_FACTORY_SEMAPHORES)
|
#if !defined(CH_CFG_FACTORY_SEMAPHORES)
|
||||||
#define CH_CFG_FACTORY_SEMAPHORES TRUE
|
#define CH_CFG_FACTORY_SEMAPHORES FALSE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Enables factory for mailboxes.
|
* @brief Enables factory for mailboxes.
|
||||||
*/
|
*/
|
||||||
#if !defined(CH_CFG_FACTORY_MAILBOXES)
|
#if !defined(CH_CFG_FACTORY_MAILBOXES)
|
||||||
#define CH_CFG_FACTORY_MAILBOXES TRUE
|
#define CH_CFG_FACTORY_MAILBOXES FALSE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Enables factory for objects FIFOs.
|
* @brief Enables factory for objects FIFOs.
|
||||||
*/
|
*/
|
||||||
#if !defined(CH_CFG_FACTORY_OBJ_FIFOS)
|
#if !defined(CH_CFG_FACTORY_OBJ_FIFOS)
|
||||||
#define CH_CFG_FACTORY_OBJ_FIFOS TRUE
|
#define CH_CFG_FACTORY_OBJ_FIFOS FALSE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Enables factory for Pipes.
|
* @brief Enables factory for Pipes.
|
||||||
*/
|
*/
|
||||||
#if !defined(CH_CFG_FACTORY_PIPES) || defined(__DOXYGEN__)
|
#if !defined(CH_CFG_FACTORY_PIPES) || defined(__DOXYGEN__)
|
||||||
#define CH_CFG_FACTORY_PIPES TRUE
|
#define CH_CFG_FACTORY_PIPES FALSE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/** @} */
|
/** @} */
|
||||||
|
@ -568,7 +568,7 @@
|
||||||
* @note The default is @p CH_DBG_TRACE_MASK_DISABLED.
|
* @note The default is @p CH_DBG_TRACE_MASK_DISABLED.
|
||||||
*/
|
*/
|
||||||
#if !defined(CH_DBG_TRACE_MASK)
|
#if !defined(CH_DBG_TRACE_MASK)
|
||||||
#define CH_DBG_TRACE_MASK CH_DBG_TRACE_MASK_NONE
|
#define CH_DBG_TRACE_MASK CH_DBG_TRACE_MASK_DISABLED
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -591,7 +591,7 @@
|
||||||
* @p panic_msg variable set to @p NULL.
|
* @p panic_msg variable set to @p NULL.
|
||||||
*/
|
*/
|
||||||
#if !defined(CH_DBG_ENABLE_STACK_CHECK)
|
#if !defined(CH_DBG_ENABLE_STACK_CHECK)
|
||||||
#define CH_DBG_ENABLE_STACK_CHECK FALSE
|
#define CH_DBG_ENABLE_STACK_CHECK TRUE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -602,8 +602,9 @@
|
||||||
*
|
*
|
||||||
* @note The default is @p FALSE.
|
* @note The default is @p FALSE.
|
||||||
*/
|
*/
|
||||||
|
// see also CH_DBG_STACK_FILL_VALUE
|
||||||
#if !defined(CH_DBG_FILL_THREADS)
|
#if !defined(CH_DBG_FILL_THREADS)
|
||||||
#define CH_DBG_FILL_THREADS FALSE
|
#define CH_DBG_FILL_THREADS TRUE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -616,7 +617,7 @@
|
||||||
* tickless mode.
|
* tickless mode.
|
||||||
*/
|
*/
|
||||||
#if !defined(CH_DBG_THREADS_PROFILING)
|
#if !defined(CH_DBG_THREADS_PROFILING)
|
||||||
#define CH_DBG_THREADS_PROFILING FALSE
|
#define CH_DBG_THREADS_PROFILING TRUE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/** @} */
|
/** @} */
|
||||||
|
@ -696,6 +697,7 @@
|
||||||
*/
|
*/
|
||||||
#define CH_CFG_SYSTEM_HALT_HOOK(reason) { \
|
#define CH_CFG_SYSTEM_HALT_HOOK(reason) { \
|
||||||
/* System halt code here.*/ \
|
/* System halt code here.*/ \
|
||||||
|
chDbgPanic3(reason, __FILE__, __LINE__); \
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -1 +1,22 @@
|
||||||
|
/**
|
||||||
|
* @file mpu_util.cpp
|
||||||
|
*
|
||||||
|
* @date Feb 26, 2021
|
||||||
|
* @author Matthew Kennedy, (c) 2021
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "flash_int.h"
|
||||||
|
|
||||||
|
size_t flashSectorSize(flashsector_t sector) {
|
||||||
|
// All sectors on H7 are 128k
|
||||||
|
return 128 * 1024;
|
||||||
|
}
|
||||||
|
|
||||||
|
uintptr_t getFlashAddrFirstCopy() {
|
||||||
|
return 0x08100000;
|
||||||
|
}
|
||||||
|
|
||||||
|
uintptr_t getFlashAddrSecondCopy() {
|
||||||
|
// Second copy is one sector past the first
|
||||||
|
return getFlashAddrFirstCopy() + 128 * 1024;
|
||||||
|
}
|
||||||
|
|
|
@ -18,6 +18,7 @@
|
||||||
#include "cj125.h"
|
#include "cj125.h"
|
||||||
#include "pwm_generator_logic.h"
|
#include "pwm_generator_logic.h"
|
||||||
#include "rpm_calculator.h"
|
#include "rpm_calculator.h"
|
||||||
|
#include "thread_priority.h"
|
||||||
|
|
||||||
EXTERN_ENGINE;
|
EXTERN_ENGINE;
|
||||||
|
|
||||||
|
@ -647,7 +648,7 @@ void initCJ125(Logging *sharedLogger DECLARE_ENGINE_PARAMETER_SUFFIX) {
|
||||||
addConsoleAction("cj125_restart", cjRestart);
|
addConsoleAction("cj125_restart", cjRestart);
|
||||||
addConsoleAction("cj125_calibrate", cjStartCalibration);
|
addConsoleAction("cj125_calibrate", cjStartCalibration);
|
||||||
|
|
||||||
chThdCreateStatic(cj125ThreadStack, sizeof(cj125ThreadStack), LOWPRIO, (tfunc_t)(void*) cjThread, NULL);
|
chThdCreateStatic(cj125ThreadStack, sizeof(cj125ThreadStack), PRIO_CJ125, (tfunc_t)(void*) cjThread, NULL);
|
||||||
#endif /* ! EFI_UNIT_TEST */
|
#endif /* ! EFI_UNIT_TEST */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -43,6 +43,7 @@
|
||||||
#include "hip9011.h"
|
#include "hip9011.h"
|
||||||
#include "adc_inputs.h"
|
#include "adc_inputs.h"
|
||||||
#include "perf_trace.h"
|
#include "perf_trace.h"
|
||||||
|
#include "thread_priority.h"
|
||||||
|
|
||||||
#include "engine_controller.h"
|
#include "engine_controller.h"
|
||||||
|
|
||||||
|
@ -55,11 +56,6 @@
|
||||||
|
|
||||||
static NamedOutputPin intHold(PROTOCOL_HIP_NAME);
|
static NamedOutputPin intHold(PROTOCOL_HIP_NAME);
|
||||||
|
|
||||||
extern uint32_t lastExecutionCount;
|
|
||||||
|
|
||||||
uint32_t hipLastExecutionCount;
|
|
||||||
|
|
||||||
|
|
||||||
class Hip9011Hardware : public Hip9011HardwareInterface {
|
class Hip9011Hardware : public Hip9011HardwareInterface {
|
||||||
void sendSyncCommand(unsigned char command) override;
|
void sendSyncCommand(unsigned char command) override;
|
||||||
void sendCommand(unsigned char command) override;
|
void sendCommand(unsigned char command) override;
|
||||||
|
@ -190,7 +186,7 @@ void setHip9011FrankensoPinout(void) {
|
||||||
// CONFIG(hip9011CsPin) = GPIOD_0; // rev 0.1
|
// CONFIG(hip9011CsPin) = GPIOD_0; // rev 0.1
|
||||||
|
|
||||||
CONFIG(isHip9011Enabled) = true;
|
CONFIG(isHip9011Enabled) = true;
|
||||||
engineConfiguration->hip9011PrescalerAndSDO = _8MHZ_PRESCALER; // 8MHz chip
|
engineConfiguration->hip9011PrescalerAndSDO = HIP_8MHZ_PRESCALER; // 8MHz chip
|
||||||
CONFIG(is_enabled_spi_2) = true;
|
CONFIG(is_enabled_spi_2) = true;
|
||||||
// todo: convert this to rusEfi, hardware-independent enum
|
// todo: convert this to rusEfi, hardware-independent enum
|
||||||
#if EFI_PROD_CODE
|
#if EFI_PROD_CODE
|
||||||
|
@ -260,9 +256,6 @@ void intHoldCallback(trigger_event_e ckpEventType, uint32_t index, efitick_t edg
|
||||||
// todo: schedule this based on closest trigger event, same as ignition works
|
// todo: schedule this based on closest trigger event, same as ignition works
|
||||||
scheduleByAngle(&startTimer[structIndex], edgeTimestamp, engineConfiguration->knockDetectionWindowStart,
|
scheduleByAngle(&startTimer[structIndex], edgeTimestamp, engineConfiguration->knockDetectionWindowStart,
|
||||||
&startIntegration);
|
&startIntegration);
|
||||||
#if EFI_PROD_CODE
|
|
||||||
hipLastExecutionCount = lastExecutionCount;
|
|
||||||
#endif /* EFI_PROD_CODE */
|
|
||||||
scheduleByAngle(&endTimer[structIndex], edgeTimestamp, engineConfiguration->knockDetectionWindowEnd,
|
scheduleByAngle(&endTimer[structIndex], edgeTimestamp, engineConfiguration->knockDetectionWindowEnd,
|
||||||
&endIntegration);
|
&endIntegration);
|
||||||
}
|
}
|
||||||
|
@ -315,29 +308,14 @@ void hipAdcCallback(adcsample_t adcValue) {
|
||||||
}
|
}
|
||||||
|
|
||||||
static void hipStartupCode(void) {
|
static void hipStartupCode(void) {
|
||||||
// D[4:1] = 0000 : 4 MHz
|
|
||||||
// D[4:1] = 0001 : 5 MHz
|
|
||||||
// D[4:1] = 0010 : 6 MHz
|
|
||||||
// D[4:1] = 0011 ; 8 MHz
|
|
||||||
// D[4:1] = 0100 ; 10 MHz
|
|
||||||
// D[4:1] = 0101 ; 12 MHz
|
|
||||||
// D[4:1] = 0110 : 16 MHz
|
|
||||||
// D[4:1] = 0111 : 20 MHz
|
|
||||||
// D[4:1] = 1000 : 24 MHz
|
|
||||||
|
|
||||||
|
|
||||||
// 0 for 4MHz
|
|
||||||
// 6 for 8 MHz
|
|
||||||
instance.currentPrescaler = engineConfiguration->hip9011PrescalerAndSDO;
|
instance.currentPrescaler = engineConfiguration->hip9011PrescalerAndSDO;
|
||||||
instance.hardware->sendSyncCommand(SET_PRESCALER_CMD + instance.currentPrescaler);
|
instance.hardware->sendSyncCommand(SET_PRESCALER_CMD(instance.currentPrescaler));
|
||||||
|
|
||||||
|
|
||||||
// '0' for channel #1
|
// '0' for channel #1
|
||||||
instance.hardware->sendSyncCommand(SET_CHANNEL_CMD + 0);
|
instance.hardware->sendSyncCommand(SET_CHANNEL_CMD(0));
|
||||||
|
|
||||||
// band index depends on cylinder bore
|
// band index depends on cylinder bore
|
||||||
instance.hardware->sendSyncCommand(SET_BAND_PASS_CMD + instance.currentBandIndex);
|
instance.hardware->sendSyncCommand(SET_BAND_PASS_CMD(instance.currentBandIndex));
|
||||||
|
|
||||||
|
|
||||||
if (instance.correctResponsesCount == 0) {
|
if (instance.correctResponsesCount == 0) {
|
||||||
warning(CUSTOM_OBD_KNOCK_PROCESSOR, "TPIC/HIP does not respond");
|
warning(CUSTOM_OBD_KNOCK_PROCESSOR, "TPIC/HIP does not respond");
|
||||||
|
@ -345,7 +323,7 @@ static void hipStartupCode(void) {
|
||||||
|
|
||||||
if (CONFIG(useTpicAdvancedMode)) {
|
if (CONFIG(useTpicAdvancedMode)) {
|
||||||
// enable advanced mode for digital integrator output
|
// enable advanced mode for digital integrator output
|
||||||
instance.hardware->sendSyncCommand(SET_ADVANCED_MODE);
|
instance.hardware->sendSyncCommand(SET_ADVANCED_MODE_CMD);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -431,7 +409,7 @@ void initHip9011(Logging *sharedLogger) {
|
||||||
addConsoleActionI("set_hip_prescalerandsdo", setPrescalerAndSDO);
|
addConsoleActionI("set_hip_prescalerandsdo", setPrescalerAndSDO);
|
||||||
addConsoleActionF("set_knock_threshold", setKnockThresh);
|
addConsoleActionF("set_knock_threshold", setKnockThresh);
|
||||||
addConsoleActionI("set_max_knock_sub_deg", setMaxKnockSubDeg);
|
addConsoleActionI("set_max_knock_sub_deg", setMaxKnockSubDeg);
|
||||||
chThdCreateStatic(hipThreadStack, sizeof(hipThreadStack), NORMALPRIO, (tfunc_t)(void*) hipThread, NULL);
|
chThdCreateStatic(hipThreadStack, sizeof(hipThreadStack), PRIO_HIP9011, (tfunc_t)(void*) hipThread, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* EFI_HIP_9011 */
|
#endif /* EFI_HIP_9011 */
|
||||||
|
|
|
@ -8,9 +8,6 @@
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
// 0b01110001
|
|
||||||
#define SET_ADVANCED_MODE 0x71
|
|
||||||
|
|
||||||
#define HIP_THREAD_PERIOD 100
|
#define HIP_THREAD_PERIOD 100
|
||||||
|
|
||||||
void initHip9011(Logging *sharedLogger);
|
void initHip9011(Logging *sharedLogger);
|
||||||
|
|
|
@ -85,20 +85,19 @@ void HIP9011::handleValue(int rpm DEFINE_PARAM_SUFFIX(DEFINE_HIP_PARAMS)) {
|
||||||
int gainIndex = getHip9011GainIndex(FORWARD_HIP_PARAMS);
|
int gainIndex = getHip9011GainIndex(FORWARD_HIP_PARAMS);
|
||||||
int bandIndex = getBandIndex(FORWARD_HIP_PARAMS);
|
int bandIndex = getBandIndex(FORWARD_HIP_PARAMS);
|
||||||
|
|
||||||
|
|
||||||
if (currentGainIndex != gainIndex) {
|
if (currentGainIndex != gainIndex) {
|
||||||
currentGainIndex = gainIndex;
|
currentGainIndex = gainIndex;
|
||||||
setStateAndCommand(SET_GAIN_CMD + gainIndex);
|
setStateAndCommand(SET_GAIN_CMD(gainIndex));
|
||||||
|
|
||||||
} else if (currentIntergratorIndex != integratorIndex) {
|
} else if (currentIntergratorIndex != integratorIndex) {
|
||||||
currentIntergratorIndex = integratorIndex;
|
currentIntergratorIndex = integratorIndex;
|
||||||
setStateAndCommand(SET_INTEGRATOR_CMD + integratorIndex);
|
setStateAndCommand(SET_INTEGRATOR_CMD(integratorIndex));
|
||||||
} else if (currentBandIndex != bandIndex) {
|
} else if (currentBandIndex != bandIndex) {
|
||||||
currentBandIndex = bandIndex;
|
currentBandIndex = bandIndex;
|
||||||
setStateAndCommand(SET_BAND_PASS_CMD + bandIndex);
|
setStateAndCommand(SET_BAND_PASS_CMD(bandIndex));
|
||||||
} else if (currentPrescaler != prescalerIndex) {
|
} else if (currentPrescaler != prescalerIndex) {
|
||||||
currentPrescaler = prescalerIndex;
|
currentPrescaler = prescalerIndex;
|
||||||
setStateAndCommand(SET_PRESCALER_CMD + prescalerIndex);
|
setStateAndCommand(SET_PRESCALER_CMD(prescalerIndex));
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
state = READY_TO_INTEGRATE;
|
state = READY_TO_INTEGRATE;
|
||||||
|
|
|
@ -99,20 +99,35 @@ float getHIP9011Band(DEFINE_HIP_PARAMS);
|
||||||
int getBandIndex(DEFINE_HIP_PARAMS);
|
int getBandIndex(DEFINE_HIP_PARAMS);
|
||||||
int getHip9011GainIndex(DEFINE_HIP_PARAMS);
|
int getHip9011GainIndex(DEFINE_HIP_PARAMS);
|
||||||
|
|
||||||
// 0b01000000
|
// 0b010x.xxxx
|
||||||
#define SET_PRESCALER_CMD 0x40
|
#define SET_PRESCALER_CMD(v) (0x40 | ((v) & 0x1f))
|
||||||
|
// 0b1110.000x
|
||||||
|
#define SET_CHANNEL_CMD(v) (0xE0 | ((v) & 0x01))
|
||||||
|
// 0b00xx.xxxx
|
||||||
|
#define SET_BAND_PASS_CMD(v) (0x00 | ((v) & 0x3f))
|
||||||
|
// 0b10xx.xxxx
|
||||||
|
#define SET_GAIN_CMD(v) (0x80 | ((v) & 0x3f))
|
||||||
|
// 0b110x.xxxx
|
||||||
|
#define SET_INTEGRATOR_CMD(v) (0xC0 | ((v) & 0x1f))
|
||||||
|
// 0b0111.0001
|
||||||
|
#define SET_ADVANCED_MODE_CMD (0x71)
|
||||||
|
|
||||||
// 0b11100000
|
// D[4:1] = 0000 : 4 MHz
|
||||||
#define SET_CHANNEL_CMD 0xE0
|
#define HIP_4MHZ_PRESCALER (0x0 << 1)
|
||||||
|
// D[4:1] = 0001 : 5 MHz
|
||||||
// 0b11000000
|
#define HIP_5MHZ_PRESCALER (0x1 << 1)
|
||||||
#define SET_INTEGRATOR_CMD 0xC0
|
// D[4:1] = 0010 : 6 MHz
|
||||||
|
#define HIP_6MHZ_PRESCALER (0x2 << 1)
|
||||||
// 0b00000000
|
// D[4:1] = 0011 ; 8 MHz
|
||||||
#define SET_BAND_PASS_CMD 0x0
|
#define HIP_8MHZ_PRESCALER (0x3 << 1)
|
||||||
|
// D[4:1] = 0100 ; 10 MHz
|
||||||
// 0b10000000
|
#define HIP_10MHZ_PRESCALER (0x4 << 1)
|
||||||
#define SET_GAIN_CMD 0x80
|
// D[4:1] = 0101 ; 12 MHz
|
||||||
|
#define HIP_12MHZ_PRESCALER (0x5 << 1)
|
||||||
#define _8MHZ_PRESCALER 6
|
// D[4:1] = 0110 : 16 MHz
|
||||||
|
#define HIP_16MHZ_PRESCALER (0x6 << 1)
|
||||||
|
// D[4:1] = 0111 : 20 MHz
|
||||||
|
#define HIP_20MHZ_PRESCALER (0x7 << 1)
|
||||||
|
// D[4:1] = 1000 : 24 MHz
|
||||||
|
#define HIP_24MHZ_PRESCALER (0x8 << 1)
|
||||||
|
|
||||||
|
|
|
@ -17,6 +17,7 @@
|
||||||
#if EFI_SERVO || EFI_SIMULATOR
|
#if EFI_SERVO || EFI_SIMULATOR
|
||||||
#include "servo.h"
|
#include "servo.h"
|
||||||
#include "pin_repository.h"
|
#include "pin_repository.h"
|
||||||
|
#include "thread_priority.h"
|
||||||
|
|
||||||
EXTERN_ENGINE;
|
EXTERN_ENGINE;
|
||||||
|
|
||||||
|
@ -63,7 +64,7 @@ void initServo(void) {
|
||||||
pins[i].initPin("servo", p);
|
pins[i].initPin("servo", p);
|
||||||
}
|
}
|
||||||
|
|
||||||
chThdCreateStatic(servoThreadStack, sizeof(servoThreadStack), NORMALPRIO, (tfunc_t)(void*) seThread, NULL);
|
chThdCreateStatic(servoThreadStack, sizeof(servoThreadStack), PRIO_SERVO, (tfunc_t)(void*) seThread, NULL);
|
||||||
}
|
}
|
||||||
#endif /* EFI_SERVO */
|
#endif /* EFI_SERVO */
|
||||||
|
|
||||||
|
|
|
@ -16,6 +16,7 @@
|
||||||
#include "engine_controller.h"
|
#include "engine_controller.h"
|
||||||
#include "adc_inputs.h"
|
#include "adc_inputs.h"
|
||||||
#include "sensor.h"
|
#include "sensor.h"
|
||||||
|
#include "thread_priority.h"
|
||||||
|
|
||||||
EXTERN_ENGINE;
|
EXTERN_ENGINE;
|
||||||
|
|
||||||
|
@ -149,7 +150,7 @@ void StepperMotor::ThreadTask() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
StepperMotor::StepperMotor() : ThreadController("stepper", NORMALPRIO) {}
|
StepperMotor::StepperMotor() : ThreadController("stepper", PRIO_STEPPER) {}
|
||||||
|
|
||||||
int StepperMotor::getTargetPosition() const {
|
int StepperMotor::getTargetPosition() const {
|
||||||
return m_targetPosition;
|
return m_targetPosition;
|
||||||
|
|
Binary file not shown.
|
@ -33,12 +33,12 @@ enable2ndByteCanID = false
|
||||||
|
|
||||||
[MegaTune]
|
[MegaTune]
|
||||||
; https://rusefi.com/forum/viewtopic.php?p=36201#p36201
|
; https://rusefi.com/forum/viewtopic.php?p=36201#p36201
|
||||||
signature = "rusEFI 2021.02.25.all.2140302013"
|
signature = "rusEFI 2021.02.28.all.2140302013"
|
||||||
|
|
||||||
[TunerStudio]
|
[TunerStudio]
|
||||||
queryCommand = "S"
|
queryCommand = "S"
|
||||||
versionInfo = "V" ; firmwave version for title bar.
|
versionInfo = "V" ; firmwave version for title bar.
|
||||||
signature = "rusEFI 2021.02.25.all.2140302013" ; signature is expected to be 7 or more characters.
|
signature = "rusEFI 2021.02.28.all.2140302013" ; signature is expected to be 7 or more characters.
|
||||||
|
|
||||||
[Constants]
|
[Constants]
|
||||||
; new packet serial format with CRC
|
; new packet serial format with CRC
|
||||||
|
@ -77,7 +77,7 @@ enable2ndByteCanID = false
|
||||||
|
|
||||||
; see PAGE_0_SIZE in C source code
|
; see PAGE_0_SIZE in C source code
|
||||||
; CONFIG_DEFINITION_START
|
; CONFIG_DEFINITION_START
|
||||||
; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Thu Feb 25 02:57:02 UTC 2021
|
; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Sun Feb 28 23:57:45 UTC 2021
|
||||||
|
|
||||||
pageSize = 20000
|
pageSize = 20000
|
||||||
page = 1
|
page = 1
|
||||||
|
|
|
@ -33,12 +33,12 @@ enable2ndByteCanID = false
|
||||||
|
|
||||||
[MegaTune]
|
[MegaTune]
|
||||||
; https://rusefi.com/forum/viewtopic.php?p=36201#p36201
|
; https://rusefi.com/forum/viewtopic.php?p=36201#p36201
|
||||||
signature = "rusEFI 2021.02.25.frankenso_na6.4226303790"
|
signature = "rusEFI 2021.02.28.frankenso_na6.4226303790"
|
||||||
|
|
||||||
[TunerStudio]
|
[TunerStudio]
|
||||||
queryCommand = "S"
|
queryCommand = "S"
|
||||||
versionInfo = "V" ; firmwave version for title bar.
|
versionInfo = "V" ; firmwave version for title bar.
|
||||||
signature = "rusEFI 2021.02.25.frankenso_na6.4226303790" ; signature is expected to be 7 or more characters.
|
signature = "rusEFI 2021.02.28.frankenso_na6.4226303790" ; signature is expected to be 7 or more characters.
|
||||||
|
|
||||||
[Constants]
|
[Constants]
|
||||||
; new packet serial format with CRC
|
; new packet serial format with CRC
|
||||||
|
@ -77,7 +77,7 @@ enable2ndByteCanID = false
|
||||||
|
|
||||||
; see PAGE_0_SIZE in C source code
|
; see PAGE_0_SIZE in C source code
|
||||||
; CONFIG_DEFINITION_START
|
; CONFIG_DEFINITION_START
|
||||||
; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Thu Feb 25 02:57:11 UTC 2021
|
; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Sun Feb 28 23:57:54 UTC 2021
|
||||||
|
|
||||||
pageSize = 20000
|
pageSize = 20000
|
||||||
page = 1
|
page = 1
|
||||||
|
|
|
@ -33,12 +33,12 @@ enable2ndByteCanID = false
|
||||||
|
|
||||||
[MegaTune]
|
[MegaTune]
|
||||||
; https://rusefi.com/forum/viewtopic.php?p=36201#p36201
|
; https://rusefi.com/forum/viewtopic.php?p=36201#p36201
|
||||||
signature = "rusEFI 2021.02.25.hellen72.96926268"
|
signature = "rusEFI 2021.02.28.hellen72.96926268"
|
||||||
|
|
||||||
[TunerStudio]
|
[TunerStudio]
|
||||||
queryCommand = "S"
|
queryCommand = "S"
|
||||||
versionInfo = "V" ; firmwave version for title bar.
|
versionInfo = "V" ; firmwave version for title bar.
|
||||||
signature = "rusEFI 2021.02.25.hellen72.96926268" ; signature is expected to be 7 or more characters.
|
signature = "rusEFI 2021.02.28.hellen72.96926268" ; signature is expected to be 7 or more characters.
|
||||||
|
|
||||||
[Constants]
|
[Constants]
|
||||||
; new packet serial format with CRC
|
; new packet serial format with CRC
|
||||||
|
@ -77,7 +77,7 @@ enable2ndByteCanID = false
|
||||||
|
|
||||||
; see PAGE_0_SIZE in C source code
|
; see PAGE_0_SIZE in C source code
|
||||||
; CONFIG_DEFINITION_START
|
; CONFIG_DEFINITION_START
|
||||||
; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Thu Feb 25 02:57:04 UTC 2021
|
; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Sun Feb 28 23:57:47 UTC 2021
|
||||||
|
|
||||||
pageSize = 20000
|
pageSize = 20000
|
||||||
page = 1
|
page = 1
|
||||||
|
|
|
@ -33,12 +33,12 @@ enable2ndByteCanID = false
|
||||||
|
|
||||||
[MegaTune]
|
[MegaTune]
|
||||||
; https://rusefi.com/forum/viewtopic.php?p=36201#p36201
|
; https://rusefi.com/forum/viewtopic.php?p=36201#p36201
|
||||||
signature = "rusEFI 2021.02.25.hellen_cypress.1039053165"
|
signature = "rusEFI 2021.02.28.hellen_cypress.1039053165"
|
||||||
|
|
||||||
[TunerStudio]
|
[TunerStudio]
|
||||||
queryCommand = "S"
|
queryCommand = "S"
|
||||||
versionInfo = "V" ; firmwave version for title bar.
|
versionInfo = "V" ; firmwave version for title bar.
|
||||||
signature = "rusEFI 2021.02.25.hellen_cypress.1039053165" ; signature is expected to be 7 or more characters.
|
signature = "rusEFI 2021.02.28.hellen_cypress.1039053165" ; signature is expected to be 7 or more characters.
|
||||||
|
|
||||||
[Constants]
|
[Constants]
|
||||||
; new packet serial format with CRC
|
; new packet serial format with CRC
|
||||||
|
@ -77,7 +77,7 @@ enable2ndByteCanID = false
|
||||||
|
|
||||||
; see PAGE_0_SIZE in C source code
|
; see PAGE_0_SIZE in C source code
|
||||||
; CONFIG_DEFINITION_START
|
; CONFIG_DEFINITION_START
|
||||||
; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on hellen_cypress_gen_config.bat integration/rusefi_config.txt Thu Feb 25 02:57:29 UTC 2021
|
; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on hellen_cypress_gen_config.bat integration/rusefi_config.txt Sun Feb 28 23:58:13 UTC 2021
|
||||||
|
|
||||||
pageSize = 20000
|
pageSize = 20000
|
||||||
page = 1
|
page = 1
|
||||||
|
|
|
@ -33,12 +33,12 @@ enable2ndByteCanID = false
|
||||||
|
|
||||||
[MegaTune]
|
[MegaTune]
|
||||||
; https://rusefi.com/forum/viewtopic.php?p=36201#p36201
|
; https://rusefi.com/forum/viewtopic.php?p=36201#p36201
|
||||||
signature = "rusEFI 2021.02.25.kin.3259727249"
|
signature = "rusEFI 2021.02.28.kin.3259727249"
|
||||||
|
|
||||||
[TunerStudio]
|
[TunerStudio]
|
||||||
queryCommand = "S"
|
queryCommand = "S"
|
||||||
versionInfo = "V" ; firmwave version for title bar.
|
versionInfo = "V" ; firmwave version for title bar.
|
||||||
signature = "rusEFI 2021.02.25.kin.3259727249" ; signature is expected to be 7 or more characters.
|
signature = "rusEFI 2021.02.28.kin.3259727249" ; signature is expected to be 7 or more characters.
|
||||||
|
|
||||||
[Constants]
|
[Constants]
|
||||||
; new packet serial format with CRC
|
; new packet serial format with CRC
|
||||||
|
@ -77,7 +77,7 @@ enable2ndByteCanID = false
|
||||||
|
|
||||||
; see PAGE_0_SIZE in C source code
|
; see PAGE_0_SIZE in C source code
|
||||||
; CONFIG_DEFINITION_START
|
; CONFIG_DEFINITION_START
|
||||||
; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on kinetis_gen_config.bat integration/rusefi_config.txt Thu Feb 25 02:57:25 UTC 2021
|
; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on kinetis_gen_config.bat integration/rusefi_config.txt Sun Feb 28 23:58:11 UTC 2021
|
||||||
|
|
||||||
pageSize = 19972
|
pageSize = 19972
|
||||||
page = 1
|
page = 1
|
||||||
|
|
|
@ -33,12 +33,12 @@ enable2ndByteCanID = false
|
||||||
|
|
||||||
[MegaTune]
|
[MegaTune]
|
||||||
; https://rusefi.com/forum/viewtopic.php?p=36201#p36201
|
; https://rusefi.com/forum/viewtopic.php?p=36201#p36201
|
||||||
signature = "rusEFI 2021.02.25.mre_f4.1364465751"
|
signature = "rusEFI 2021.02.28.mre_f4.1364465751"
|
||||||
|
|
||||||
[TunerStudio]
|
[TunerStudio]
|
||||||
queryCommand = "S"
|
queryCommand = "S"
|
||||||
versionInfo = "V" ; firmwave version for title bar.
|
versionInfo = "V" ; firmwave version for title bar.
|
||||||
signature = "rusEFI 2021.02.25.mre_f4.1364465751" ; signature is expected to be 7 or more characters.
|
signature = "rusEFI 2021.02.28.mre_f4.1364465751" ; signature is expected to be 7 or more characters.
|
||||||
|
|
||||||
[Constants]
|
[Constants]
|
||||||
; new packet serial format with CRC
|
; new packet serial format with CRC
|
||||||
|
@ -77,7 +77,7 @@ enable2ndByteCanID = false
|
||||||
|
|
||||||
; see PAGE_0_SIZE in C source code
|
; see PAGE_0_SIZE in C source code
|
||||||
; CONFIG_DEFINITION_START
|
; CONFIG_DEFINITION_START
|
||||||
; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Thu Feb 25 02:57:09 UTC 2021
|
; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Sun Feb 28 23:57:52 UTC 2021
|
||||||
|
|
||||||
pageSize = 20000
|
pageSize = 20000
|
||||||
page = 1
|
page = 1
|
||||||
|
|
|
@ -33,12 +33,12 @@ enable2ndByteCanID = false
|
||||||
|
|
||||||
[MegaTune]
|
[MegaTune]
|
||||||
; https://rusefi.com/forum/viewtopic.php?p=36201#p36201
|
; https://rusefi.com/forum/viewtopic.php?p=36201#p36201
|
||||||
signature = "rusEFI 2021.02.25.mre_f7.1364465751"
|
signature = "rusEFI 2021.02.28.mre_f7.1364465751"
|
||||||
|
|
||||||
[TunerStudio]
|
[TunerStudio]
|
||||||
queryCommand = "S"
|
queryCommand = "S"
|
||||||
versionInfo = "V" ; firmwave version for title bar.
|
versionInfo = "V" ; firmwave version for title bar.
|
||||||
signature = "rusEFI 2021.02.25.mre_f7.1364465751" ; signature is expected to be 7 or more characters.
|
signature = "rusEFI 2021.02.28.mre_f7.1364465751" ; signature is expected to be 7 or more characters.
|
||||||
|
|
||||||
[Constants]
|
[Constants]
|
||||||
; new packet serial format with CRC
|
; new packet serial format with CRC
|
||||||
|
@ -77,7 +77,7 @@ enable2ndByteCanID = false
|
||||||
|
|
||||||
; see PAGE_0_SIZE in C source code
|
; see PAGE_0_SIZE in C source code
|
||||||
; CONFIG_DEFINITION_START
|
; CONFIG_DEFINITION_START
|
||||||
; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Thu Feb 25 02:57:07 UTC 2021
|
; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Sun Feb 28 23:57:49 UTC 2021
|
||||||
|
|
||||||
pageSize = 20000
|
pageSize = 20000
|
||||||
page = 1
|
page = 1
|
||||||
|
|
|
@ -33,12 +33,12 @@ enable2ndByteCanID = false
|
||||||
|
|
||||||
[MegaTune]
|
[MegaTune]
|
||||||
; https://rusefi.com/forum/viewtopic.php?p=36201#p36201
|
; https://rusefi.com/forum/viewtopic.php?p=36201#p36201
|
||||||
signature = "rusEFI 2021.02.25.prometheus_405.1829005451"
|
signature = "rusEFI 2021.02.28.prometheus_405.1829005451"
|
||||||
|
|
||||||
[TunerStudio]
|
[TunerStudio]
|
||||||
queryCommand = "S"
|
queryCommand = "S"
|
||||||
versionInfo = "V" ; firmwave version for title bar.
|
versionInfo = "V" ; firmwave version for title bar.
|
||||||
signature = "rusEFI 2021.02.25.prometheus_405.1829005451" ; signature is expected to be 7 or more characters.
|
signature = "rusEFI 2021.02.28.prometheus_405.1829005451" ; signature is expected to be 7 or more characters.
|
||||||
|
|
||||||
[Constants]
|
[Constants]
|
||||||
; new packet serial format with CRC
|
; new packet serial format with CRC
|
||||||
|
@ -77,7 +77,7 @@ enable2ndByteCanID = false
|
||||||
|
|
||||||
; see PAGE_0_SIZE in C source code
|
; see PAGE_0_SIZE in C source code
|
||||||
; CONFIG_DEFINITION_START
|
; CONFIG_DEFINITION_START
|
||||||
; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Thu Feb 25 02:57:15 UTC 2021
|
; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Sun Feb 28 23:57:59 UTC 2021
|
||||||
|
|
||||||
pageSize = 20000
|
pageSize = 20000
|
||||||
page = 1
|
page = 1
|
||||||
|
|
|
@ -33,12 +33,12 @@ enable2ndByteCanID = false
|
||||||
|
|
||||||
[MegaTune]
|
[MegaTune]
|
||||||
; https://rusefi.com/forum/viewtopic.php?p=36201#p36201
|
; https://rusefi.com/forum/viewtopic.php?p=36201#p36201
|
||||||
signature = "rusEFI 2021.02.25.prometheus_469.1829005451"
|
signature = "rusEFI 2021.02.28.prometheus_469.1829005451"
|
||||||
|
|
||||||
[TunerStudio]
|
[TunerStudio]
|
||||||
queryCommand = "S"
|
queryCommand = "S"
|
||||||
versionInfo = "V" ; firmwave version for title bar.
|
versionInfo = "V" ; firmwave version for title bar.
|
||||||
signature = "rusEFI 2021.02.25.prometheus_469.1829005451" ; signature is expected to be 7 or more characters.
|
signature = "rusEFI 2021.02.28.prometheus_469.1829005451" ; signature is expected to be 7 or more characters.
|
||||||
|
|
||||||
[Constants]
|
[Constants]
|
||||||
; new packet serial format with CRC
|
; new packet serial format with CRC
|
||||||
|
@ -77,7 +77,7 @@ enable2ndByteCanID = false
|
||||||
|
|
||||||
; see PAGE_0_SIZE in C source code
|
; see PAGE_0_SIZE in C source code
|
||||||
; CONFIG_DEFINITION_START
|
; CONFIG_DEFINITION_START
|
||||||
; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Thu Feb 25 02:57:13 UTC 2021
|
; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Sun Feb 28 23:57:56 UTC 2021
|
||||||
|
|
||||||
pageSize = 20000
|
pageSize = 20000
|
||||||
page = 1
|
page = 1
|
||||||
|
|
|
@ -33,12 +33,12 @@ enable2ndByteCanID = false
|
||||||
|
|
||||||
[MegaTune]
|
[MegaTune]
|
||||||
; https://rusefi.com/forum/viewtopic.php?p=36201#p36201
|
; https://rusefi.com/forum/viewtopic.php?p=36201#p36201
|
||||||
signature = "rusEFI 2021.02.25.proteus_f4.413377170"
|
signature = "rusEFI 2021.02.28.proteus_f4.413377170"
|
||||||
|
|
||||||
[TunerStudio]
|
[TunerStudio]
|
||||||
queryCommand = "S"
|
queryCommand = "S"
|
||||||
versionInfo = "V" ; firmwave version for title bar.
|
versionInfo = "V" ; firmwave version for title bar.
|
||||||
signature = "rusEFI 2021.02.25.proteus_f4.413377170" ; signature is expected to be 7 or more characters.
|
signature = "rusEFI 2021.02.28.proteus_f4.413377170" ; signature is expected to be 7 or more characters.
|
||||||
|
|
||||||
[Constants]
|
[Constants]
|
||||||
; new packet serial format with CRC
|
; new packet serial format with CRC
|
||||||
|
@ -77,7 +77,7 @@ enable2ndByteCanID = false
|
||||||
|
|
||||||
; see PAGE_0_SIZE in C source code
|
; see PAGE_0_SIZE in C source code
|
||||||
; CONFIG_DEFINITION_START
|
; CONFIG_DEFINITION_START
|
||||||
; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Thu Feb 25 02:57:19 UTC 2021
|
; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Sun Feb 28 23:58:07 UTC 2021
|
||||||
|
|
||||||
pageSize = 20000
|
pageSize = 20000
|
||||||
page = 1
|
page = 1
|
||||||
|
|
|
@ -33,12 +33,12 @@ enable2ndByteCanID = false
|
||||||
|
|
||||||
[MegaTune]
|
[MegaTune]
|
||||||
; https://rusefi.com/forum/viewtopic.php?p=36201#p36201
|
; https://rusefi.com/forum/viewtopic.php?p=36201#p36201
|
||||||
signature = "rusEFI 2021.02.25.proteus_f7.413377170"
|
signature = "rusEFI 2021.02.28.proteus_f7.413377170"
|
||||||
|
|
||||||
[TunerStudio]
|
[TunerStudio]
|
||||||
queryCommand = "S"
|
queryCommand = "S"
|
||||||
versionInfo = "V" ; firmwave version for title bar.
|
versionInfo = "V" ; firmwave version for title bar.
|
||||||
signature = "rusEFI 2021.02.25.proteus_f7.413377170" ; signature is expected to be 7 or more characters.
|
signature = "rusEFI 2021.02.28.proteus_f7.413377170" ; signature is expected to be 7 or more characters.
|
||||||
|
|
||||||
[Constants]
|
[Constants]
|
||||||
; new packet serial format with CRC
|
; new packet serial format with CRC
|
||||||
|
@ -77,7 +77,7 @@ enable2ndByteCanID = false
|
||||||
|
|
||||||
; see PAGE_0_SIZE in C source code
|
; see PAGE_0_SIZE in C source code
|
||||||
; CONFIG_DEFINITION_START
|
; CONFIG_DEFINITION_START
|
||||||
; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Thu Feb 25 02:57:17 UTC 2021
|
; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Sun Feb 28 23:58:03 UTC 2021
|
||||||
|
|
||||||
pageSize = 20000
|
pageSize = 20000
|
||||||
page = 1
|
page = 1
|
||||||
|
|
|
@ -33,12 +33,12 @@ enable2ndByteCanID = false
|
||||||
|
|
||||||
[MegaTune]
|
[MegaTune]
|
||||||
; https://rusefi.com/forum/viewtopic.php?p=36201#p36201
|
; https://rusefi.com/forum/viewtopic.php?p=36201#p36201
|
||||||
signature = "rusEFI 2021.02.25.subaru_eg33_f7.3175160971"
|
signature = "rusEFI 2021.02.28.subaru_eg33_f7.3175160971"
|
||||||
|
|
||||||
[TunerStudio]
|
[TunerStudio]
|
||||||
queryCommand = "S"
|
queryCommand = "S"
|
||||||
versionInfo = "V" ; firmwave version for title bar.
|
versionInfo = "V" ; firmwave version for title bar.
|
||||||
signature = "rusEFI 2021.02.25.subaru_eg33_f7.3175160971" ; signature is expected to be 7 or more characters.
|
signature = "rusEFI 2021.02.28.subaru_eg33_f7.3175160971" ; signature is expected to be 7 or more characters.
|
||||||
|
|
||||||
[Constants]
|
[Constants]
|
||||||
; new packet serial format with CRC
|
; new packet serial format with CRC
|
||||||
|
@ -77,7 +77,7 @@ enable2ndByteCanID = false
|
||||||
|
|
||||||
; see PAGE_0_SIZE in C source code
|
; see PAGE_0_SIZE in C source code
|
||||||
; CONFIG_DEFINITION_START
|
; CONFIG_DEFINITION_START
|
||||||
; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on config/boards/subaru_eg33/config/gen_config.sh integration/rusefi_config.txt Thu Feb 25 02:57:30 UTC 2021
|
; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on config/boards/subaru_eg33/config/gen_config.sh integration/rusefi_config.txt Sun Feb 28 23:58:15 UTC 2021
|
||||||
|
|
||||||
pageSize = 20000
|
pageSize = 20000
|
||||||
page = 1
|
page = 1
|
||||||
|
|
|
@ -58,4 +58,16 @@ public class ProteusAnalogTest extends RusefiTestBase {
|
||||||
// 100% duty -> failed TPS (voltage too high)
|
// 100% duty -> failed TPS (voltage too high)
|
||||||
setIdlePositionAndAssertTps(98, 0);
|
setIdlePositionAndAssertTps(98, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void assertSensorValue(Sensor sensor, double expected) {
|
||||||
|
double actual = SensorCentral.getInstance().getValue(sensor);
|
||||||
|
assertEquals(expected, actual, 0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testUnconnectedInputs() {
|
||||||
|
// CLT/IAT inputs should float at ~5 volts
|
||||||
|
assertSensorValue(Sensor.rawClt, 5.0);
|
||||||
|
assertSensorValue(Sensor.rawIat, 5.0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
package com.rusefi.config.generated;
|
package com.rusefi.config.generated;
|
||||||
|
|
||||||
// this file was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Thu Feb 25 02:57:02 UTC 2021
|
// this file was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Sun Feb 28 23:57:45 UTC 2021
|
||||||
|
|
||||||
// by class com.rusefi.output.FileJavaFieldsConsumer
|
// by class com.rusefi.output.FileJavaFieldsConsumer
|
||||||
import com.rusefi.config.*;
|
import com.rusefi.config.*;
|
||||||
|
@ -1478,7 +1478,7 @@ public class Fields {
|
||||||
public static final char TS_SD_R_COMMAND = 'r';
|
public static final char TS_SD_R_COMMAND = 'r';
|
||||||
public static final char TS_SD_W_COMMAND = 'w';
|
public static final char TS_SD_W_COMMAND = 'w';
|
||||||
public static final char TS_SET_LOGGER_SWITCH = 'l';
|
public static final char TS_SET_LOGGER_SWITCH = 'l';
|
||||||
public static final String TS_SIGNATURE = "rusEFI 2021.02.25.all.2140302013";
|
public static final String TS_SIGNATURE = "rusEFI 2021.02.28.all.2140302013";
|
||||||
public static final char TS_SINGLE_WRITE_COMMAND = 'W';
|
public static final char TS_SINGLE_WRITE_COMMAND = 'W';
|
||||||
public static final int TT_TT_1_16 = 50;
|
public static final int TT_TT_1_16 = 50;
|
||||||
public static final int TT_TT_2JZ_1_12 = 29;
|
public static final int TT_TT_2JZ_1_12 = 29;
|
||||||
|
|
|
@ -118,6 +118,10 @@ public enum Sensor {
|
||||||
|
|
||||||
tuneCrc16("tune crc16", SensorCategory.STATUS, FieldType.UINT16, 244, 0, 5),
|
tuneCrc16("tune crc16", SensorCategory.STATUS, FieldType.UINT16, 244, 0, 5),
|
||||||
|
|
||||||
|
// Raw sensors
|
||||||
|
rawClt("raw CLT", SensorCategory.SENSOR_INPUTS, FieldType.INT16, 238, 1.0 / PACK_MULT_VOLTAGE, 0, 5, "volts"),
|
||||||
|
rawIat("raw IAT", SensorCategory.SENSOR_INPUTS, FieldType.INT16, 240, 1.0 / PACK_MULT_VOLTAGE, 0, 5, "volts"),
|
||||||
|
|
||||||
// Synthetic (console only) channels
|
// Synthetic (console only) channels
|
||||||
ETB_CONTROL_QUALITY("ETB metric", SensorCategory.SNIFFING, "", 100),
|
ETB_CONTROL_QUALITY("ETB metric", SensorCategory.SNIFFING, "", 100),
|
||||||
;
|
;
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<roms>
|
<roms>
|
||||||
|
|
||||||
<!-- was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh Thu Feb 25 02:57:03 UTC 2021 -->
|
<!-- was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh Sun Feb 28 23:57:46 UTC 2021 -->
|
||||||
|
|
||||||
<rom>
|
<rom>
|
||||||
<romid>
|
<romid>
|
||||||
|
|
|
@ -37,40 +37,32 @@
|
||||||
<table class="info-table">
|
<table class="info-table">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>Pin Number</th>
|
<th class="pin-header">Pin Number</th>
|
||||||
<th>Firmware ID</th>
|
<th class="id-header">Firmware ID</th>
|
||||||
<th>Type</th>
|
<th class="type-header">Type</th>
|
||||||
<th>Typical Function</th>
|
<th class="function-header">Typical Function</th>
|
||||||
<th>Pigtail Color</th>
|
<th class="color-header">Pigtail Color</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
<br/>
|
|
||||||
<br/>
|
|
||||||
<br/>
|
|
||||||
<br/>
|
|
||||||
|
|
||||||
<h2>Full Pinout Table</h2>
|
<h2>Full Pinout Table</h2>
|
||||||
<table class="pinout-table">
|
<div class="table-wrapper">
|
||||||
<thead>
|
<table class="pinout-table">
|
||||||
<tr>
|
<thead>
|
||||||
<th>Pin Number</th>
|
<tr>
|
||||||
<th>Firmware ID</th>
|
<th class="pin-header">Pin Number</th>
|
||||||
<th>Type</th>
|
<th class="id-header">Firmware ID</th>
|
||||||
<th>Typical Function</th>
|
<th class="type-header">Type</th>
|
||||||
<th>Pigtail Color</th>
|
<th class="function-header">Typical Function</th>
|
||||||
</tr>
|
<th class="color-header">Pigtail Color</th>
|
||||||
</thead>
|
</tr>
|
||||||
<tbody>
|
</thead>
|
||||||
</tbody>
|
<tbody>
|
||||||
</table>
|
</tbody>
|
||||||
<br/>
|
</table>
|
||||||
<br/>
|
</div>
|
||||||
<br/>
|
|
||||||
<br/>
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue