cypress_usb_print_test
cypress trying to start TS TS connect success! blind code ready for GPT,ADC,SPI SPI basic test works on 9201 and 8860 Timer is working ADC fix? Flash kinda works... in debug mode DRV8860 driver works! ADC partially works! Flash works! adc 1 channel works fix for ADC channels>16 & fastADC problem ADC works! EXTINT first attempt... no IRQ? Led3 blinks EXTINT works! trigger_adc EXTINT part works! trigger_ADC analog preparations... not working yet ADC now 100% works! But fast is NOT 10kHz! Fast ADC works... Almost - strange adcToVoltage values... fastADC working only first 22secs + fatal error after 33secs + USB not connecting fastADC is working again, problems solved! triggerADC - It works! (Still no timeshift compensation) Forgot drv8860 ADC->EXTI trigger switching works! (but not seamlessly) ADC->EXTI trigger switching now seamless? Needs more testing ADC->EXTI trigger switching works! trigger+RPM works but still trgerrors... trying to impl. adaptive threshold... No luck so far :( trigger detector almost works - trgerr=0 but no rpm<200? triggerADC finally works!!! For now... backup_ram for cypress main_relay, stepper better main_relay+stepper USB VBus detection CAN driver draft CAN update CAN interrupts fix update update update update update main.cpp clean-up rusefi.ini clean-up compilation fix compilation fix compilation fix
This commit is contained in:
parent
4463253a6d
commit
48ab85d636
|
@ -6,6 +6,8 @@ echo Entering %script_name%
|
|||
rem Needed for board overrides
|
||||
IF "%BOOTLOADER_CODE_DESTINATION_PATH%"=="" (SET BOOTLOADER_CODE_DESTINATION_PATH="..")
|
||||
|
||||
set EXTRA_PARAMS=-DCH_DBG_ENABLE_STACK_CHECK=FALSE
|
||||
|
||||
set BOOTLOADER_CODE_DESTINATION_FILE=%BOOTLOADER_CODE_DESTINATION_PATH%/bootloader_generated.hxx
|
||||
rm -f %BOOTLOADER_CODE_DESTINATION_FILE%
|
||||
|
||||
|
|
|
@ -2,14 +2,14 @@
|
|||
|
||||
echo Starting compilation for Prometheus-405
|
||||
|
||||
set PROJECT_BOARD=Prometheus
|
||||
set PROJECT_BOARD=Prometheus/f405
|
||||
set PROMETHEUS_BOARD=405
|
||||
set EXTRA_PARAMS=-DDUMMY -DEFI_BOOTLOADER -DSTM32F405xx -DEFI_ENABLE_ASSERTS=FALSE -DCH_DBG_ENABLE_CHECKS=FALSE -DCH_DBG_ENABLE_ASSERTS=FALSE -DCH_DBG_ENABLE_STACK_CHECK=FALSE -DCH_DBG_FILL_THREADS=FALSE ^
|
||||
-DBOARD_TLE8888_COUNT=0 ^
|
||||
-DBOARD_TLE6240_COUNT=0 ^
|
||||
-DBOARD_MC33972_COUNT=0 ^
|
||||
-DCH_DBG_THREADS_PROFILING=FALSE
|
||||
set BOOTLOADER_CODE_DESTINATION_PATH="../Prometheus/405"
|
||||
set BOOTLOADER_CODE_DESTINATION_PATH="../prometheus/405"
|
||||
set DEBUG_LEVEL_OPT="-O2"
|
||||
|
||||
call !compile_bootloader.bat -r
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
// this https://en.wikipedia.org/wiki/Reverse_Polish_notation is generated automatically
|
||||
// from controllers/system_fsio.txt
|
||||
// on 2019-09-08_16_41_20_788
|
||||
// on 2020-07-07_19_02_00_108
|
||||
//
|
||||
//
|
||||
// in this file we define system FSIO expressions
|
||||
|
@ -16,8 +16,8 @@
|
|||
// Human-readable: (fan and (coolant > cfg_fanOffTemperature)) | (coolant > cfg_fanOnTemperature) | is_clt_broken
|
||||
#define FAN_CONTROL_LOGIC "fan coolant cfg_fanOffTemperature > and coolant cfg_fanOnTemperature > | is_clt_broken |"
|
||||
|
||||
// Human-readable: (time_since_boot < startup_fuel_pump_duration) | (rpm > 0)
|
||||
#define FUEL_PUMP_LOGIC "time_since_boot startup_fuel_pump_duration < rpm 0 > |"
|
||||
// Human-readable: (time_since_boot >= 0 & time_since_boot < startup_fuel_pump_duration) | (rpm > 0)
|
||||
#define FUEL_PUMP_LOGIC "time_since_boot 0 time_since_boot & >= startup_fuel_pump_duration < rpm 0 > |"
|
||||
|
||||
// Human-readable: vbatt < 14.5
|
||||
#define ALTERNATOR_LOGIC "vbatt 14.5 <"
|
||||
|
@ -25,8 +25,7 @@
|
|||
// Human-readable: coolant > 120
|
||||
#define TOO_HOT_LOGIC "coolant 120 >"
|
||||
|
||||
// Human-readable: ac_on_switch & rpm > 850 & time_since_ac_on_switch > 0.3
|
||||
// ac_on_switch rpm & 850 time_since_ac_on_switch & > 0.3 >
|
||||
// Human-readable: ac_on_switch & rpm > 850
|
||||
#define AC_RELAY_LOGIC "ac_on_switch rpm & 850 >"
|
||||
// Combined RPM, CLT and VBATT warning light
|
||||
|
||||
|
@ -34,8 +33,9 @@
|
|||
#define COMBINED_WARNING_LIGHT "rpm 2 fsio_setting > coolant 3 fsio_setting > vbatt 4 fsio_setting < | |"
|
||||
//needed by EFI_MAIN_RELAY_CONTROL
|
||||
|
||||
// Human-readable: (time_since_boot < 2) | (vbatt > 5) | in_shutdown
|
||||
#define MAIN_RELAY_LOGIC "time_since_boot 2 < vbatt 5 > | in_shutdown |"
|
||||
//MAIN_RELAY_LOGIC=(time_since_boot >= 0 & time_since_boot < 2) | (vbatt > 5) | in_shutdown
|
||||
// Human-readable: (vbatt > 5) | in_shutdown
|
||||
#define MAIN_RELAY_LOGIC "vbatt 5 > in_shutdown |"
|
||||
// could be used for simple variable intake geometry setups or warning light or starter block
|
||||
|
||||
// Human-readable: rpm > fsio_setting(1)
|
||||
|
@ -73,5 +73,5 @@
|
|||
// Human-readable: fsio_table (3, rpm, map) / 100
|
||||
#define BOOST_CONTROLLER "3 rpm map fsio_table 100 /"
|
||||
|
||||
// Human-readable: if (fsio_setting (0) > 20, 0, 10)
|
||||
#define ANALOG_CONDITION "0 fsio_setting 20 > 0 10 if"
|
||||
// Human-readable: if(fsio_input (0) > 20, 0, 10)
|
||||
#define ANALOG_CONDITION "0 fsio_input 20 > 0 10 if"
|
||||
|
|
|
@ -38,10 +38,6 @@
|
|||
#include "maf.h"
|
||||
#include "perf_trace.h"
|
||||
|
||||
/* Depth of the conversion buffer, channels are sampled X times each.*/
|
||||
#define ADC_BUF_DEPTH_SLOW 8
|
||||
#define ADC_BUF_DEPTH_FAST 4
|
||||
|
||||
//static Biquad biq[ADC_MAX_CHANNELS_COUNT];
|
||||
|
||||
static adc_channel_mode_e adcHwChannelEnabled[HW_MAX_ADC_INDEX];
|
||||
|
@ -68,20 +64,24 @@ AdcDevice::AdcDevice(ADCConversionGroup* hwConfig) {
|
|||
hwConfig->sqr1 = 0;
|
||||
hwConfig->sqr2 = 0;
|
||||
hwConfig->sqr3 = 0;
|
||||
#if ADC_MAX_CHANNELS_COUNT > 16
|
||||
hwConfig->sqr4 = 0;
|
||||
hwConfig->sqr5 = 0;
|
||||
#endif /* ADC_MAX_CHANNELS_COUNT */
|
||||
memset(hardwareIndexByIndernalAdcIndex, 0, sizeof(hardwareIndexByIndernalAdcIndex));
|
||||
memset(internalAdcIndexByHardwareIndex, 0xFFFFFFFF, sizeof(internalAdcIndexByHardwareIndex));
|
||||
}
|
||||
|
||||
#if !defined(PWM_FREQ_FAST) || !defined(PWM_PERIOD_FAST)
|
||||
#if !defined(GPT_FREQ_FAST) || !defined(GPT_PERIOD_FAST)
|
||||
/**
|
||||
* 8000 RPM is 133Hz
|
||||
* If we want to sample MAP once per 5 degrees we need 133Hz * (360 / 5) = 9576Hz of fast ADC
|
||||
*/
|
||||
// todo: migrate to continues ADC mode? probably not - we cannot afford the callback in
|
||||
// todo: continues mode. todo: look into our options
|
||||
#define PWM_FREQ_FAST 100000 /* PWM clock frequency. I wonder what does this setting mean? */
|
||||
#define PWM_PERIOD_FAST 10 /* PWM period (in PWM ticks). */
|
||||
#endif /* PWM_FREQ_FAST PWM_PERIOD_FAST */
|
||||
#define GPT_FREQ_FAST 100000 /* GPT clock frequency. I wonder what does this setting mean? */
|
||||
#define GPT_PERIOD_FAST 10 /* GPT period (in GPT ticks). */
|
||||
#endif /* GPT_FREQ_FAST GPT_PERIOD_FAST */
|
||||
|
||||
// is there a reason to have this configurable at runtime?
|
||||
#ifndef ADC_SLOW_DEVICE
|
||||
|
@ -153,7 +153,11 @@ ADC_TwoSamplingDelay_20Cycles, // cr1
|
|||
|
||||
0, // Conversion group sequence 13...16 + sequence length
|
||||
0, // Conversion group sequence 7...12
|
||||
0 // Conversion group sequence 1...6
|
||||
0, // Conversion group sequence 1...6
|
||||
#if ADC_MAX_CHANNELS_COUNT > 16
|
||||
0, // Conversion group sequence 19...24
|
||||
0 // Conversion group sequence 25...30
|
||||
#endif /* ADC_MAX_CHANNELS_COUNT */
|
||||
};
|
||||
|
||||
AdcDevice slowAdc(&adcgrpcfgSlow);
|
||||
|
@ -194,20 +198,20 @@ ADC_TwoSamplingDelay_5Cycles, // cr1
|
|||
0, // Conversion group sequence 13...16 + sequence length
|
||||
|
||||
0, // Conversion group sequence 7...12
|
||||
0
|
||||
|
||||
// Conversion group sequence 1...6
|
||||
0, // Conversion group sequence 1...6
|
||||
#if ADC_MAX_CHANNELS_COUNT > 16
|
||||
0, // Conversion group sequence 19...24
|
||||
0 // Conversion group sequence 25...30
|
||||
#endif /* ADC_MAX_CHANNELS_COUNT */
|
||||
};
|
||||
|
||||
AdcDevice fastAdc(&adcgrpcfg_fast);
|
||||
|
||||
#if HAL_USE_PWM
|
||||
#if HAL_USE_GPT
|
||||
static void fast_adc_callback(GPTDriver *) {
|
||||
|
||||
|
||||
static void pwmpcb_fast(PWMDriver *pwmp) {
|
||||
efiAssertVoid(CUSTOM_ERR_6659, getCurrentRemainingStack()> 32, "lwStAdcFast");
|
||||
#if EFI_INTERNAL_ADC
|
||||
(void) pwmp;
|
||||
|
||||
/*
|
||||
* Starts an asynchronous ADC conversion operation, the conversion
|
||||
* will be executed in parallel to the current PWM cycle and will
|
||||
|
@ -218,10 +222,16 @@ static void pwmpcb_fast(PWMDriver *pwmp) {
|
|||
if (ADC_FAST_DEVICE.state != ADC_READY &&
|
||||
ADC_FAST_DEVICE.state != ADC_COMPLETE &&
|
||||
ADC_FAST_DEVICE.state != ADC_ERROR) {
|
||||
|
||||
fastAdc.errorsCount++;
|
||||
// todo: when? why? firmwareError(OBD_PCM_Processor_Fault, "ADC fast not ready?");
|
||||
#if 0
|
||||
// otherwise the ADC driver may be stuck in 'ADC_ACTIVE' state
|
||||
adcStopConversionI(&ADC_FAST_DEVICE);
|
||||
#endif
|
||||
chSysUnlockFromISR()
|
||||
;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -229,9 +239,10 @@ static void pwmpcb_fast(PWMDriver *pwmp) {
|
|||
chSysUnlockFromISR()
|
||||
;
|
||||
fastAdc.conversionCount++;
|
||||
|
||||
#endif /* EFI_INTERNAL_ADC */
|
||||
}
|
||||
#endif /* HAL_USE_PWM */
|
||||
#endif /* HAL_USE_GPT */
|
||||
|
||||
float getMCUInternalTemperature(void) {
|
||||
#if defined(ADC_CHANNEL_SENSOR)
|
||||
|
@ -272,12 +283,12 @@ int getInternalAdcValue(const char *msg, adc_channel_e hwChannel) {
|
|||
return slowAdc.getAdcValueByHwChannel(hwChannel);
|
||||
}
|
||||
|
||||
#if HAL_USE_PWM
|
||||
static PWMConfig pwmcfg_fast = { PWM_FREQ_FAST, PWM_PERIOD_FAST, pwmpcb_fast, { {
|
||||
PWM_OUTPUT_DISABLED, NULL }, { PWM_OUTPUT_DISABLED, NULL }, {
|
||||
PWM_OUTPUT_DISABLED, NULL }, { PWM_OUTPUT_DISABLED, NULL } },
|
||||
/* HW dependent part.*/
|
||||
0, 0 };
|
||||
#if HAL_USE_GPT
|
||||
static GPTConfig fast_adc_config = {
|
||||
GPT_FREQ_FAST,
|
||||
fast_adc_callback,
|
||||
0, 0
|
||||
};
|
||||
#endif /* HAL_USE_PWM */
|
||||
|
||||
static void initAdcPin(brain_pin_e pin, const char *msg) {
|
||||
|
@ -350,10 +361,17 @@ void AdcDevice::enableChannel(adc_channel_e hwChannel) {
|
|||
hwConfig->sqr3 += (hwChannel) << (5 * logicChannel);
|
||||
} else if (logicChannel < 12) {
|
||||
hwConfig->sqr2 += (hwChannel) << (5 * (logicChannel - 6));
|
||||
} else {
|
||||
} else if (logicChannel < 18) {
|
||||
hwConfig->sqr1 += (hwChannel) << (5 * (logicChannel - 12));
|
||||
}
|
||||
// todo: support for more then 12 channels? not sure how needed it would be
|
||||
#if ADC_MAX_CHANNELS_COUNT > 16
|
||||
else if (logicChannel < 24) {
|
||||
hwConfig->sqr4 += (hwChannel) << (5 * (logicChannel - 18));
|
||||
}
|
||||
else if (logicChannel < 30) {
|
||||
hwConfig->sqr5 += (hwChannel) << (5 * (logicChannel - 24));
|
||||
}
|
||||
#endif /* ADC_MAX_CHANNELS_COUNT */
|
||||
}
|
||||
|
||||
void AdcDevice::enableChannelAndPin(adc_channel_e hwChannel) {
|
||||
|
@ -402,6 +420,10 @@ static void setAdcDebugReporting(int value) {
|
|||
}
|
||||
|
||||
void waitForSlowAdc(int lastAdcCounter) {
|
||||
// don't halt the firmware if there are no slow channels assigned
|
||||
if (slowAdc.size() < 1)
|
||||
return;
|
||||
|
||||
// we use slowAdcCounter instead of slowAdc.conversionCount because we need ADC_COMPLETE state
|
||||
// todo: use sync.objects?
|
||||
while (slowAdcCounter <= lastAdcCounter) {
|
||||
|
@ -546,7 +568,7 @@ static void configureInputs(void) {
|
|||
static SlowAdcController slowAdcController;
|
||||
|
||||
void initAdcInputs() {
|
||||
printMsg(&logger, "initAdcInputs()");
|
||||
scheduleMsg(&logger, "initAdcInputs()");
|
||||
if (ADC_BUF_DEPTH_FAST > MAX_ADC_GRP_BUF_DEPTH)
|
||||
firmwareError(CUSTOM_ERR_ADC_DEPTH_FAST, "ADC_BUF_DEPTH_FAST too high");
|
||||
if (ADC_BUF_DEPTH_SLOW > MAX_ADC_GRP_BUF_DEPTH)
|
||||
|
@ -593,15 +615,17 @@ void initAdcInputs() {
|
|||
/*
|
||||
* Initializes the PWM driver.
|
||||
*/
|
||||
#if HAL_USE_PWM
|
||||
pwmStart(EFI_INTERNAL_FAST_ADC_PWM, &pwmcfg_fast);
|
||||
pwmEnablePeriodicNotification(EFI_INTERNAL_FAST_ADC_PWM);
|
||||
#endif /* HAL_USE_PWM */
|
||||
#if HAL_USE_GPT
|
||||
gptStart(EFI_INTERNAL_FAST_ADC_GPT, &fast_adc_config);
|
||||
gptStartContinuous(EFI_INTERNAL_FAST_ADC_GPT, GPT_PERIOD_FAST);
|
||||
#endif /* HAL_USE_GPT */
|
||||
}
|
||||
|
||||
scheduleMsg(&logger, "ADC enabled: (%d slow) (%d fast)", slowAdc.size(), fastAdc.size());
|
||||
|
||||
addConsoleActionI("adc", (VoidInt) printAdcValue);
|
||||
#else
|
||||
printMsg(&logger, "ADC disabled");
|
||||
scheduleMsg(&logger, "ADC disabled");
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
|
@ -43,6 +43,15 @@ void removeChannel(const char *name, adc_channel_e setting);
|
|||
// max(ADC_BUF_DEPTH_SLOW, ADC_BUF_DEPTH_FAST)
|
||||
#define MAX_ADC_GRP_BUF_DEPTH 8
|
||||
|
||||
/* Depth of the conversion buffer, channels are sampled X times each.*/
|
||||
#ifndef ADC_BUF_DEPTH_SLOW
|
||||
#define ADC_BUF_DEPTH_SLOW 8
|
||||
#endif /* ADC_BUF_DEPTH_SLOW */
|
||||
|
||||
#ifndef ADC_BUF_DEPTH_FAST
|
||||
#define ADC_BUF_DEPTH_FAST 4
|
||||
#endif /* ADC_BUF_DEPTH_FAST */
|
||||
|
||||
#define getAdcValue(msg, hwChannel) getInternalAdcValue(msg, hwChannel)
|
||||
|
||||
// todo: migrate to adcToVoltageInputDividerCoefficient
|
||||
|
|
|
@ -62,6 +62,7 @@
|
|||
#include "flash_main.h"
|
||||
#endif /* EFI_INTERNAL_FLASH */
|
||||
|
||||
|
||||
EXTERN_ENGINE
|
||||
;
|
||||
extern bool hasFirmwareErrorFlag;
|
||||
|
@ -190,10 +191,56 @@ static Logging *sharedLogger;
|
|||
static int fastMapSampleIndex;
|
||||
static int hipSampleIndex;
|
||||
static int tpsSampleIndex;
|
||||
static int triggerSampleIndex;
|
||||
|
||||
#if HAL_USE_ADC
|
||||
extern AdcDevice fastAdc;
|
||||
|
||||
#if EFI_FASTER_UNIFORM_ADC
|
||||
static int adcCallbackCounter = 0;
|
||||
static volatile int averagedSamples[ADC_MAX_CHANNELS_COUNT];
|
||||
static adcsample_t avgBuf[ADC_MAX_CHANNELS_COUNT];
|
||||
|
||||
void adc_callback_fast_internal(ADCDriver *adcp, adcsample_t *buffer, size_t n);
|
||||
|
||||
void adc_callback_fast(ADCDriver *adcp, adcsample_t *buffer, size_t n) {
|
||||
if (adcp->state == ADC_COMPLETE) {
|
||||
fastAdc.invalidateSamplesCache();
|
||||
|
||||
#if HAL_TRIGGER_USE_ADC
|
||||
// we need to call this ASAP, because trigger processing is time-critical
|
||||
if (triggerSampleIndex >= 0)
|
||||
triggerAdcCallback(buffer[triggerSampleIndex]);
|
||||
#endif /* HAL_TRIGGER_USE_ADC */
|
||||
|
||||
// store the values for averaging
|
||||
for (int i = fastAdc.size() - 1; i >= 0; i--) {
|
||||
averagedSamples[i] += fastAdc.samples[i];
|
||||
}
|
||||
|
||||
// if it's time to process the data
|
||||
if (++adcCallbackCounter >= ADC_BUF_NUM_AVG) {
|
||||
// get an average
|
||||
for (int i = fastAdc.size() - 1; i >= 0; i--) {
|
||||
avgBuf[i] = (adcsample_t)(averagedSamples[i] / ADC_BUF_NUM_AVG); // todo: rounding?
|
||||
}
|
||||
|
||||
// call the real callback (see below)
|
||||
adc_callback_fast_internal(adcp, avgBuf, fastAdc.size());
|
||||
|
||||
// reset the avg buffer & counter
|
||||
for (int i = fastAdc.size() - 1; i >= 0; i--) {
|
||||
averagedSamples[i] = 0;
|
||||
}
|
||||
adcCallbackCounter = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#define adc_callback_fast adc_callback_fast_internal
|
||||
|
||||
#endif /* EFI_FASTER_UNIFORM_ADC */
|
||||
|
||||
/**
|
||||
* This method is not in the adc* lower-level file because it is more business logic then hardware.
|
||||
*/
|
||||
|
@ -225,15 +272,15 @@ void adc_callback_fast(ADCDriver *adcp, adcsample_t *buffer, size_t n) {
|
|||
#endif /* EFI_SENSOR_CHART */
|
||||
|
||||
#if EFI_MAP_AVERAGING
|
||||
mapAveragingAdcCallback(fastAdc.samples[fastMapSampleIndex]);
|
||||
mapAveragingAdcCallback(buffer[fastMapSampleIndex]);
|
||||
#endif /* EFI_MAP_AVERAGING */
|
||||
#if EFI_HIP_9011
|
||||
if (CONFIG(isHip9011Enabled)) {
|
||||
hipAdcCallback(fastAdc.samples[hipSampleIndex]);
|
||||
hipAdcCallback(buffer[hipSampleIndex]);
|
||||
}
|
||||
#endif /* EFI_HIP_9011 */
|
||||
// if (tpsSampleIndex != TPS_IS_SLOW) {
|
||||
// tpsFastAdc = fastAdc.samples[tpsSampleIndex];
|
||||
// tpsFastAdc = buffer[tpsSampleIndex];
|
||||
// }
|
||||
}
|
||||
}
|
||||
|
@ -250,6 +297,11 @@ static void calcFastAdcIndexes(void) {
|
|||
} else {
|
||||
tpsSampleIndex = TPS_IS_SLOW;
|
||||
}
|
||||
#if HAL_TRIGGER_USE_ADC
|
||||
adc_channel_e triggerChannel = getAdcChannelForTrigger();
|
||||
triggerSampleIndex = (triggerChannel == EFI_ADC_NONE) ?
|
||||
-1 : fastAdc.internalAdcIndexByHardwareIndex[triggerChannel];
|
||||
#endif /* HAL_TRIGGER_USE_ADC */
|
||||
|
||||
#endif/* HAL_USE_ADC */
|
||||
}
|
||||
|
@ -261,6 +313,13 @@ static void adcConfigListener(Engine *engine) {
|
|||
}
|
||||
|
||||
void turnOnHardware(Logging *sharedLogger) {
|
||||
#if EFI_FASTER_UNIFORM_ADC
|
||||
for (int i = 0; i < ADC_MAX_CHANNELS_COUNT; i++) {
|
||||
averagedSamples[i] = 0;
|
||||
}
|
||||
adcCallbackCounter = 0;
|
||||
#endif /* EFI_FASTER_UNIFORM_ADC */
|
||||
|
||||
#if EFI_SHAFT_POSITION_INPUT
|
||||
turnOnTriggerInputPins(sharedLogger);
|
||||
#endif /* EFI_SHAFT_POSITION_INPUT */
|
||||
|
@ -317,7 +376,7 @@ void applyNewHardwareSettings(void) {
|
|||
}
|
||||
#endif /* EFI_ELECTRONIC_THROTTLE_BODY */
|
||||
|
||||
#if (BOARD_TLE6240_COUNT > 0)
|
||||
#if (BOARD_TLE6240_COUNT > 0) || (BOARD_DRV8860_COUNT > 0)
|
||||
stopSmartCsPins();
|
||||
#endif /* (BOARD_MC33972_COUNT > 0) */
|
||||
|
||||
|
@ -485,6 +544,7 @@ void initHardware(Logging *l) {
|
|||
|
||||
#if HAL_USE_ADC
|
||||
initAdcInputs();
|
||||
|
||||
// wait for first set of ADC values so that we do not produce invalid sensor data
|
||||
waitForSlowAdc(1);
|
||||
#endif /* HAL_USE_ADC */
|
||||
|
|
|
@ -468,7 +468,7 @@ end_struct
|
|||
|
||||
trigger_config_s trigger;
|
||||
|
||||
custom spi_device_e 1 bits,U32, @OFFSET@, [0:7], "Off", "SPI1", "SPI2", "SPI3", "SPI4"
|
||||
custom spi_device_e 1 bits,U32, @OFFSET@, [0:7], "Off", "SPI1", "SPI2", "SPI3", "SPI4", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID"
|
||||
spi_device_e hip9011SpiDevice;
|
||||
adc_channel_e high_fuel_pressure_sensor_1;
|
||||
adc_channel_e high_fuel_pressure_sensor_2;
|
||||
|
@ -1097,12 +1097,13 @@ tChargeMode_e tChargeMode;
|
|||
int16_t idlerpmpid_iTermMin;iTerm min value;"", 1, 0, -30000, 30000.0, 0
|
||||
|
||||
spi_device_e tle6240spiDevice;
|
||||
uint8_t[1] unusedSpiPadding7;
|
||||
spi_device_e drv8860spiDevice;
|
||||
int16_t idlerpmpid_iTermMax;iTerm max value;"", 1, 0, -30000, 30000.0, 0
|
||||
|
||||
spi_device_e mc33972spiDevice;
|
||||
uint8_t[3] unusedSpiPadding8;
|
||||
|
||||
brain_pin_e drv8860_cs;
|
||||
pin_output_mode_e drv8860_csPinMode;
|
||||
brain_pin_e drv8860_miso;
|
||||
|
||||
float etbIdleThrottleRange; ETB idle authority; "%", 1, 0, 0, 15, 0
|
||||
|
||||
|
|
|
@ -27,4 +27,3 @@ int main(void) {
|
|||
runRusEfi();
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
update=3/19/2017 9:02:32 PM
|
||||
update=09.02.2020 17:39:33
|
||||
version=1
|
||||
last_client=kicad
|
||||
[cvpcb]
|
||||
|
@ -27,42 +27,6 @@ SolderMaskMinWidth=0
|
|||
DrawSegmentWidth=0.381
|
||||
BoardOutlineThickness=0.381
|
||||
ModuleOutlineThickness=0.381
|
||||
[eeschema]
|
||||
version=1
|
||||
LibDir=
|
||||
[eeschema/libraries]
|
||||
LibName1=power
|
||||
LibName2=device
|
||||
LibName3=transistors
|
||||
LibName4=conn
|
||||
LibName5=linear
|
||||
LibName6=regul
|
||||
LibName7=74xx
|
||||
LibName8=cmos4000
|
||||
LibName9=adc-dac
|
||||
LibName10=memory
|
||||
LibName11=xilinx
|
||||
LibName12=microcontrollers
|
||||
LibName13=dsp
|
||||
LibName14=microchip
|
||||
LibName15=analog_switches
|
||||
LibName16=motorola
|
||||
LibName17=texas
|
||||
LibName18=intel
|
||||
LibName19=audio
|
||||
LibName20=interface
|
||||
LibName21=digital-audio
|
||||
LibName22=philips
|
||||
LibName23=display
|
||||
LibName24=cypress
|
||||
LibName25=siliconi
|
||||
LibName26=opto
|
||||
LibName27=atmel
|
||||
LibName28=contrib
|
||||
LibName29=valves
|
||||
LibName30=../rusefi_lib/1123038-2
|
||||
LibName31=../rusefi_lib/logo
|
||||
LibName32=../rusefi_lib/logo_flipped
|
||||
[schematic_editor]
|
||||
version=1
|
||||
PageLayoutDescrFile=../rusefi_lib/Border.kicad_wks
|
||||
|
@ -73,3 +37,6 @@ NetFmtName=Pcbnew
|
|||
SpiceForceRefPrefix=0
|
||||
SpiceUseNetNumbers=0
|
||||
LabSize=60
|
||||
[eeschema]
|
||||
version=1
|
||||
LibDir=
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
<component name="ProjectRunConfigurationManager">
|
||||
<configuration default="false" name="Launcher COM10" type="Application" factoryName="Application" folderName="1x">
|
||||
<configuration default="false" name="Launcher COM45" type="Application" factoryName="Application" folderName="1x">
|
||||
<option name="MAIN_CLASS_NAME" value="com.rusefi.Launcher" />
|
||||
<module name="ui" />
|
||||
<option name="PROGRAM_PARAMETERS" value="COM10" />
|
||||
<option name="PROGRAM_PARAMETERS" value="COM45" />
|
||||
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/../../../../../bin/rusefi_console" />
|
||||
<RunnerSettings RunnerId="Debug">
|
||||
<option name="DEBUG_PORT" value="" />
|
||||
<option name="TRANSPORT" value="0" />
|
|
@ -6,7 +6,7 @@ package com.rusefi;
|
|||
public interface Timeouts {
|
||||
int SECOND = 1000;
|
||||
int COMMAND_TIMEOUT_SEC = 10; // seconds
|
||||
int BINARY_IO_TIMEOUT = 5 * SECOND;
|
||||
int BINARY_IO_TIMEOUT = 10/*5*/ * SECOND;
|
||||
int CMD_TIMEOUT = 20;
|
||||
int READ_IMAGE_TIMEOUT = 60 * SECOND;
|
||||
|
||||
|
|
Loading…
Reference in New Issue