diff --git a/firmware/config/boards/hellen/hellen81/!compile_hellen81.bat b/firmware/config/boards/hellen/hellen81/!compile_hellen81.bat new file mode 100644 index 0000000000..6adef72f6d --- /dev/null +++ b/firmware/config/boards/hellen/hellen81/!compile_hellen81.bat @@ -0,0 +1,2 @@ +@echo off +bash.exe compile_hellen81.sh diff --git a/firmware/config/boards/hellen/hellen81/board.h b/firmware/config/boards/hellen/hellen81/board.h new file mode 100644 index 0000000000..4659a06f63 --- /dev/null +++ b/firmware/config/boards/hellen/hellen81/board.h @@ -0,0 +1,355 @@ +/* + ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +/* + * This file has been automatically generated using ChibiStudio board + * generator plugin. Do not edit manually. + */ + +#ifndef BOARD_H +#define BOARD_H + + +/* + * Setup for STMicroelectronics STM32F4-Discovery board. + */ + +/* + * Board identifier. + */ +#define BOARD_NAME "Hellen81" + +#define EFI_USB_AF 10U +#define EFI_USB_SERIAL_DM GPIOA_11 +#define EFI_USB_SERIAL_DP GPIOA_12 + +// Ignore USB VBUS pin (we're never a host, only a device) +#define BOARD_OTG_NOVBUSSENS TRUE + +/* + * Default to input mode, with internal PULLDOWN resistor enabled. + * Pulldowns are more safe because most of MCU outputs on Hellen are high-active. + */ +#define EFI_PIN_MODE_DEFAULT PIN_MODE_INPUT +#define EFI_DR_DEFAULT PIN_PUPDR_PULLDOWN + +// See https://github.com/rusefi/rusefi/issues/397 +#define DEFAULT_GPIO_SPEED PIN_OSPEED_HIGH + +/* + * Board oscillators-related settings. + * NOTE: LSE not fitted. + */ +#if !defined(STM32_LSECLK) +#define STM32_LSECLK 32768U +#endif + +#define STM32_LSEDRV (3U << 3U) + +#if !defined(STM32_HSECLK) +#define STM32_HSECLK 8000000U +#endif + +/* + * Board voltages. + * Required for performance limits calculation. + */ +#define STM32_VDD 300U + +/* + * IO pins assignments. + */ +#define GPIOA_SWDIO 13 +#define GPIOA_SWCLK 14 + +#define GPIOB_SWO 3 + +/* + * I/O ports initial setup, this configuration is established soon after reset + * in the initialization code. + * Please refer to the STM32 Reference Manual for details. + */ +#define PIN_MODE_INPUT(n) (0U << ((n) * 2U)) +#define PIN_MODE_OUTPUT(n) (1U << ((n) * 2U)) +#define PIN_MODE_ALTERNATE(n) (2U << ((n) * 2U)) +#define PIN_MODE_ANALOG(n) (3U << ((n) * 2U)) +#define PIN_ODR_LOW(n) (0U << (n)) +#define PIN_ODR_HIGH(n) (1U << (n)) +#define PIN_OTYPE_PUSHPULL(n) (0U << (n)) +#define PIN_OTYPE_OPENDRAIN(n) (1U << (n)) +#define PIN_OSPEED_VERYLOW(n) (0U << ((n) * 2U)) +#define PIN_OSPEED_LOW(n) (1U << ((n) * 2U)) +#define PIN_OSPEED_MEDIUM(n) (2U << ((n) * 2U)) +#define PIN_OSPEED_HIGH(n) (3U << ((n) * 2U)) +#define PIN_PUPDR_FLOATING(n) (0U << ((n) * 2U)) +#define PIN_PUPDR_PULLUP(n) (1U << ((n) * 2U)) +#define PIN_PUPDR_PULLDOWN(n) (2U << ((n) * 2U)) +#define PIN_AFIO_AF(n, v) ((v) << (((n) % 8U) * 4U)) + +#define VAL_GPIO_MODER_ALL_DEFAULT (EFI_PIN_MODE_DEFAULT(0) | \ + EFI_PIN_MODE_DEFAULT(1) | \ + EFI_PIN_MODE_DEFAULT(2) | \ + EFI_PIN_MODE_DEFAULT(3) | \ + EFI_PIN_MODE_DEFAULT(4) | \ + EFI_PIN_MODE_DEFAULT(5) | \ + EFI_PIN_MODE_DEFAULT(6) | \ + EFI_PIN_MODE_DEFAULT(7) | \ + EFI_PIN_MODE_DEFAULT(8) | \ + EFI_PIN_MODE_DEFAULT(9) | \ + EFI_PIN_MODE_DEFAULT(10) | \ + EFI_PIN_MODE_DEFAULT(11) | \ + EFI_PIN_MODE_DEFAULT(12) | \ + EFI_PIN_MODE_DEFAULT(13) | \ + EFI_PIN_MODE_DEFAULT(14) | \ + EFI_PIN_MODE_DEFAULT(15)) + +#define VAL_GPIO_OTYPER_ALL_DEFAULT (PIN_OTYPE_PUSHPULL(0) | \ + PIN_OTYPE_PUSHPULL(1) | \ + PIN_OTYPE_PUSHPULL(2) | \ + PIN_OTYPE_PUSHPULL(3) | \ + PIN_OTYPE_PUSHPULL(4) | \ + PIN_OTYPE_PUSHPULL(5) | \ + PIN_OTYPE_PUSHPULL(6) | \ + PIN_OTYPE_PUSHPULL(7) | \ + PIN_OTYPE_PUSHPULL(8) | \ + PIN_OTYPE_PUSHPULL(9) | \ + PIN_OTYPE_PUSHPULL(10) | \ + PIN_OTYPE_PUSHPULL(11) | \ + PIN_OTYPE_PUSHPULL(12) | \ + PIN_OTYPE_PUSHPULL(13) | \ + PIN_OTYPE_PUSHPULL(14) | \ + PIN_OTYPE_PUSHPULL(15)) + +#define VAL_GPIO_OSPEEDR_ALL_DEFAULT (DEFAULT_GPIO_SPEED(0) | \ + DEFAULT_GPIO_SPEED(1) | \ + DEFAULT_GPIO_SPEED(2) | \ + DEFAULT_GPIO_SPEED(3) | \ + DEFAULT_GPIO_SPEED(4) | \ + DEFAULT_GPIO_SPEED(5) | \ + DEFAULT_GPIO_SPEED(6) | \ + DEFAULT_GPIO_SPEED(7) | \ + DEFAULT_GPIO_SPEED(8) | \ + DEFAULT_GPIO_SPEED(9) | \ + DEFAULT_GPIO_SPEED(10) | \ + DEFAULT_GPIO_SPEED(11) | \ + DEFAULT_GPIO_SPEED(12) | \ + DEFAULT_GPIO_SPEED(13) | \ + DEFAULT_GPIO_SPEED(14) | \ + DEFAULT_GPIO_SPEED(15)) + +#define VAL_GPIO_ODR_ALL_DEFAULT 0 + +#define VAL_GPIO_PUPDR_ALL_DEFAULT (EFI_DR_DEFAULT(0) | \ + EFI_DR_DEFAULT(1) | \ + EFI_DR_DEFAULT(2) | \ + EFI_DR_DEFAULT(3) | \ + EFI_DR_DEFAULT(4) | \ + EFI_DR_DEFAULT(5) | \ + EFI_DR_DEFAULT(6) | \ + EFI_DR_DEFAULT(7) | \ + EFI_DR_DEFAULT(8) | \ + EFI_DR_DEFAULT(9) | \ + EFI_DR_DEFAULT(10) | \ + EFI_DR_DEFAULT(11) | \ + EFI_DR_DEFAULT(12) | \ + EFI_DR_DEFAULT(13) | \ + EFI_DR_DEFAULT(14) | \ + EFI_DR_DEFAULT(15)) + +#define VAL_GPIO_AF_ALL_DEFAULT (PIN_AFIO_AF(0, 0U) | \ + PIN_AFIO_AF(1, 0U) | \ + PIN_AFIO_AF(2, 0U) | \ + PIN_AFIO_AF(3, 0U) | \ + PIN_AFIO_AF(4, 0U) | \ + PIN_AFIO_AF(5, 0U) | \ + PIN_AFIO_AF(6, 0U) | \ + PIN_AFIO_AF(7, 0U)) + + +/* + * GPIOA setup: + * + * PA11 - OTG_FS_DM (alternate 10). + * PA12 - OTG_FS_DP (alternate 10). + * PA13 - SWDIO (alternate 0). + * PA14 - SWCLK (alternate 0). + */ +#define VAL_GPIOA_MODER (EFI_PIN_MODE_DEFAULT(0) | \ + EFI_PIN_MODE_DEFAULT(1) | \ + EFI_PIN_MODE_DEFAULT(2) | \ + EFI_PIN_MODE_DEFAULT(3) | \ + EFI_PIN_MODE_DEFAULT(4) | \ + EFI_PIN_MODE_DEFAULT(5) | \ + EFI_PIN_MODE_DEFAULT(6) | \ + EFI_PIN_MODE_DEFAULT(7) | \ + EFI_PIN_MODE_DEFAULT(8) | \ + EFI_PIN_MODE_DEFAULT(9) | \ + EFI_PIN_MODE_DEFAULT(10) | \ + PIN_MODE_ALTERNATE(11) | \ + PIN_MODE_ALTERNATE(12) | \ + PIN_MODE_ALTERNATE(GPIOA_SWDIO) | \ + PIN_MODE_ALTERNATE(GPIOA_SWCLK) | \ + EFI_PIN_MODE_DEFAULT(15)) +#define VAL_GPIOA_OTYPER VAL_GPIO_OTYPER_ALL_DEFAULT +#define VAL_GPIOA_OSPEEDR VAL_GPIO_OSPEEDR_ALL_DEFAULT +#define VAL_GPIOA_PUPDR VAL_GPIO_PUPDR_ALL_DEFAULT +#define VAL_GPIOA_ODR VAL_GPIO_ODR_ALL_DEFAULT +#define VAL_GPIOA_AFRL (PIN_AFIO_AF(0, 0U) | \ + PIN_AFIO_AF(1, 0U) | \ + PIN_AFIO_AF(2, 0U) | \ + PIN_AFIO_AF(3, 0U) | \ + PIN_AFIO_AF(4, 6U) | \ + PIN_AFIO_AF(5, 5U) | \ + PIN_AFIO_AF(6, 5U) | \ + PIN_AFIO_AF(7, 5U)) +#define VAL_GPIOA_AFRH VAL_GPIO_AF_ALL_DEFAULT + +/* + * GPIOB setup: + * + * Default except SWO configured on PB3 + * + */ +#define VAL_GPIOB_MODER (EFI_PIN_MODE_DEFAULT(0) | \ + EFI_PIN_MODE_DEFAULT(1) | \ + EFI_PIN_MODE_DEFAULT(2) | \ + PIN_MODE_ALTERNATE(GPIOB_SWO) | \ + EFI_PIN_MODE_DEFAULT(4) | \ + EFI_PIN_MODE_DEFAULT(5) | \ + EFI_PIN_MODE_DEFAULT(6) | \ + EFI_PIN_MODE_DEFAULT(7) | \ + EFI_PIN_MODE_DEFAULT(8) | \ + EFI_PIN_MODE_DEFAULT(9) | \ + EFI_PIN_MODE_DEFAULT(10) | \ + EFI_PIN_MODE_DEFAULT(11) | \ + EFI_PIN_MODE_DEFAULT(12) | \ + EFI_PIN_MODE_DEFAULT(13) | \ + EFI_PIN_MODE_DEFAULT(14) | \ + EFI_PIN_MODE_DEFAULT(15)) +#define VAL_GPIOB_OTYPER VAL_GPIO_OTYPER_ALL_DEFAULT +#define VAL_GPIOB_OSPEEDR VAL_GPIO_OSPEEDR_ALL_DEFAULT +#define VAL_GPIOB_PUPDR VAL_GPIO_PUPDR_ALL_DEFAULT +#define VAL_GPIOB_ODR VAL_GPIO_ODR_ALL_DEFAULT +#define VAL_GPIOB_AFRL (PIN_AFIO_AF(0, 0U) | \ + PIN_AFIO_AF(1, 0U) | \ + PIN_AFIO_AF(2, 0U) | \ + PIN_AFIO_AF(GPIOB_SWO, 0U) | \ + PIN_AFIO_AF(4, 0U) | \ + PIN_AFIO_AF(5, 0U) | \ + PIN_AFIO_AF(6, 0U) | \ + PIN_AFIO_AF(7, 0U)) +#define VAL_GPIOB_AFRH VAL_GPIO_AF_ALL_DEFAULT + +/* + * GPIOC setup: + */ +#define VAL_GPIOC_MODER VAL_GPIO_MODER_ALL_DEFAULT +#define VAL_GPIOC_OTYPER VAL_GPIO_OTYPER_ALL_DEFAULT +#define VAL_GPIOC_OSPEEDR VAL_GPIO_OSPEEDR_ALL_DEFAULT +#define VAL_GPIOC_PUPDR VAL_GPIO_PUPDR_ALL_DEFAULT +#define VAL_GPIOC_ODR VAL_GPIO_ODR_ALL_DEFAULT +#define VAL_GPIOC_AFRL VAL_GPIO_AF_ALL_DEFAULT +#define VAL_GPIOC_AFRH VAL_GPIO_AF_ALL_DEFAULT + +/* + * GPIOD setup: + */ +#define VAL_GPIOD_MODER VAL_GPIO_MODER_ALL_DEFAULT +#define VAL_GPIOD_OTYPER VAL_GPIO_OTYPER_ALL_DEFAULT +#define VAL_GPIOD_OSPEEDR VAL_GPIO_OSPEEDR_ALL_DEFAULT +#define VAL_GPIOD_PUPDR VAL_GPIO_PUPDR_ALL_DEFAULT +#define VAL_GPIOD_ODR VAL_GPIO_ODR_ALL_DEFAULT +#define VAL_GPIOD_AFRL VAL_GPIO_AF_ALL_DEFAULT +#define VAL_GPIOD_AFRH VAL_GPIO_AF_ALL_DEFAULT + +/* + * GPIOE setup: + */ +#define VAL_GPIOE_MODER VAL_GPIO_MODER_ALL_DEFAULT +#define VAL_GPIOE_OTYPER VAL_GPIO_OTYPER_ALL_DEFAULT +#define VAL_GPIOE_OSPEEDR VAL_GPIO_OSPEEDR_ALL_DEFAULT +#define VAL_GPIOE_PUPDR VAL_GPIO_PUPDR_ALL_DEFAULT +#define VAL_GPIOE_ODR VAL_GPIO_ODR_ALL_DEFAULT +#define VAL_GPIOE_AFRL VAL_GPIO_AF_ALL_DEFAULT +#define VAL_GPIOE_AFRH VAL_GPIO_AF_ALL_DEFAULT + +/* + * GPIOF setup: + */ +#define VAL_GPIOF_MODER VAL_GPIO_MODER_ALL_DEFAULT +#define VAL_GPIOF_OTYPER VAL_GPIO_OTYPER_ALL_DEFAULT +#define VAL_GPIOF_OSPEEDR VAL_GPIO_OSPEEDR_ALL_DEFAULT +#define VAL_GPIOF_PUPDR VAL_GPIO_PUPDR_ALL_DEFAULT +#define VAL_GPIOF_ODR VAL_GPIO_ODR_ALL_DEFAULT +#define VAL_GPIOF_AFRL VAL_GPIO_AF_ALL_DEFAULT +#define VAL_GPIOF_AFRH VAL_GPIO_AF_ALL_DEFAULT + +/* + * GPIOG setup: + */ +#define VAL_GPIOG_MODER VAL_GPIO_MODER_ALL_DEFAULT +#define VAL_GPIOG_OTYPER VAL_GPIO_OTYPER_ALL_DEFAULT +#define VAL_GPIOG_OSPEEDR VAL_GPIO_OSPEEDR_ALL_DEFAULT +#define VAL_GPIOG_PUPDR VAL_GPIO_PUPDR_ALL_DEFAULT +#define VAL_GPIOG_ODR VAL_GPIO_ODR_ALL_DEFAULT +#define VAL_GPIOG_AFRL VAL_GPIO_AF_ALL_DEFAULT +#define VAL_GPIOG_AFRH VAL_GPIO_AF_ALL_DEFAULT + +/* + * GPIOH setup: + */ +#define VAL_GPIOH_MODER VAL_GPIO_MODER_ALL_DEFAULT +#define VAL_GPIOH_OTYPER VAL_GPIO_OTYPER_ALL_DEFAULT +#define VAL_GPIOH_OSPEEDR VAL_GPIO_OSPEEDR_ALL_DEFAULT +#define VAL_GPIOH_PUPDR VAL_GPIO_PUPDR_ALL_DEFAULT +#define VAL_GPIOH_ODR VAL_GPIO_ODR_ALL_DEFAULT +#define VAL_GPIOH_AFRL VAL_GPIO_AF_ALL_DEFAULT +#define VAL_GPIOH_AFRH VAL_GPIO_AF_ALL_DEFAULT + +/* + * GPIOI setup: + */ +#define VAL_GPIOI_MODER VAL_GPIO_MODER_ALL_DEFAULT +#define VAL_GPIOI_OTYPER VAL_GPIO_OTYPER_ALL_DEFAULT +#define VAL_GPIOI_OSPEEDR VAL_GPIO_OSPEEDR_ALL_DEFAULT +#define VAL_GPIOI_PUPDR VAL_GPIO_PUPDR_ALL_DEFAULT +#define VAL_GPIOI_ODR VAL_GPIO_ODR_ALL_DEFAULT +#define VAL_GPIOI_AFRL VAL_GPIO_AF_ALL_DEFAULT +#define VAL_GPIOI_AFRH VAL_GPIO_AF_ALL_DEFAULT + +/* + * GPIOJ setup: + */ +#define VAL_GPIOJ_MODER VAL_GPIO_MODER_ALL_DEFAULT +#define VAL_GPIOJ_OTYPER VAL_GPIO_OTYPER_ALL_DEFAULT +#define VAL_GPIOJ_OSPEEDR VAL_GPIO_OSPEEDR_ALL_DEFAULT +#define VAL_GPIOJ_PUPDR VAL_GPIO_PUPDR_ALL_DEFAULT +#define VAL_GPIOJ_ODR VAL_GPIO_ODR_ALL_DEFAULT +#define VAL_GPIOJ_AFRL VAL_GPIO_AF_ALL_DEFAULT +#define VAL_GPIOJ_AFRH VAL_GPIO_AF_ALL_DEFAULT + +/* + * GPIOK setup: + */ +#define VAL_GPIOK_MODER VAL_GPIO_MODER_ALL_DEFAULT +#define VAL_GPIOK_OTYPER VAL_GPIO_OTYPER_ALL_DEFAULT +#define VAL_GPIOK_OSPEEDR VAL_GPIO_OSPEEDR_ALL_DEFAULT +#define VAL_GPIOK_PUPDR VAL_GPIO_PUPDR_ALL_DEFAULT +#define VAL_GPIOK_ODR VAL_GPIO_ODR_ALL_DEFAULT +#define VAL_GPIOK_AFRL VAL_GPIO_AF_ALL_DEFAULT +#define VAL_GPIOK_AFRH VAL_GPIO_AF_ALL_DEFAULT + +#endif /* BOARD_H */ diff --git a/firmware/config/boards/hellen/hellen81/board.mk b/firmware/config/boards/hellen/hellen81/board.mk new file mode 100644 index 0000000000..8436c8714a --- /dev/null +++ b/firmware/config/boards/hellen/hellen81/board.mk @@ -0,0 +1,52 @@ +# Combine the related files for a specific platform and MCU. + +# Target ECU board design +BOARDCPPSRC = $(BOARDS_DIR)/hellen/hellen81/board_configuration.cpp +BOARDINC = $(BOARDS_DIR)/hellen/hellen81 + +# Set this if you want a default engine type other than normal Hellen81 +ifeq ($(DEFAULT_ENGINE_TYPE),) + DEFAULT_ENGINE_TYPE = -DDEFAULT_ENGINE_TYPE=MINIMAL_PINS +endif + +ifeq ($(LED_CRITICAL_ERROR_BRAIN_PIN),) + LED_CRITICAL_ERROR_BRAIN_PIN = -DLED_CRITICAL_ERROR_BRAIN_PIN=GPIOH_8 +endif + +ifeq ($(LED_COMMUNICATION_BRAIN_PIN),) + LED_COMMUNICATION_BRAIN_PIN = -DEFI_COMMUNICATION_PIN=GPIOH_10 +endif + +DDEFS += -DEFI_MAIN_RELAY_CONTROL=TRUE + +DDEFS += -DLED_ERROR_BRAIN_PIN_MODE=INVERTED_OUTPUT +DDEFS += -DLED_RUNING_BRAIN_PIN_MODE=INVERTED_OUTPUT +DDEFS += -DLED_WARNING_BRAIN_PIN_MODE=INVERTED_OUTPUT +DDEFS += -DLED_COMMUNICATION_BRAIN_PIN_MODE=INVERTED_OUTPUT + +# Disable serial ports on this board as UART3 causes a DMA conflict with the SD card +DDEFS += -DTS_NO_PRIMARY -DTS_NO_SECONDARY + +# Add them all together +DDEFS += -DEFI_USE_OSC=TRUE -DFIRMWARE_ID=\"hellen81\" $(DEFAULT_ENGINE_TYPE) $(LED_CRITICAL_ERROR_BRAIN_PIN) $(LED_COMMUNICATION_BRAIN_PIN) +#DDEFS += -DEFI_SOFTWARE_KNOCK=TRUE -DSTM32_ADC_USE_ADC3=TRUE +#DDEFS += -DEFI_ICU_INPUTS=FALSE -DHAL_TRIGGER_USE_PAL=TRUE -DHAL_VSS_USE_PAL=TRUE +DDEFS += -DEFI_ICU_INPUTS=FALSE -DHAL_TRIGGER_USE_ADC=TRUE -DHAL_VSS_USE_PAL=TRUE +# todo: is it broken? +DDEFS += -DEFI_LOGIC_ANALYZER=FALSE + +TRIGGER_USE_ADC = yes + +# we need fast ADC for software trigger detector +#DDEFS += -DEFI_OVERRIDE_FAST_ADC_FOR_STM32H7=TRUE -DADC_FAST_DEVICE=ADCD1 -DADC_SLOW_DEVICE=ADCD3 -DSTM32_ADC_USE_ADC3=TRUE +#DDEFS += -DADC_SLOW_DEVICE=ADCD3 -DSTM32_ADC_USE_ADC3=TRUE + +DDEFS += -DEFI_OVERRIDE_FAST_ADC_FOR_STM32H7=TRUE -DADC_FAST_DEVICE=ADCD1 -DEFI_USE_ONLY_FAST_ADC=TRUE -DEFI_FASTER_UNIFORM_ADC=TRUE -DADC_MAX_CHANNELS_COUNT=16 -DADC_BUF_DEPTH_FAST=1 -DADC_BUF_NUM_AVG=1 +#DDEFS += -DADC_SLOW_DEVICE=ADCD1 + +# We are running on Hellen-One hardware! +DDEFS += -DHW_HELLEN=1 + +# Shared variables +ALLCPPSRC += $(BOARDCPPSRC) +ALLINC += $(BOARDINC) diff --git a/firmware/config/boards/hellen/hellen81/board_configuration.cpp b/firmware/config/boards/hellen/hellen81/board_configuration.cpp new file mode 100644 index 0000000000..09abe41f2b --- /dev/null +++ b/firmware/config/boards/hellen/hellen81/board_configuration.cpp @@ -0,0 +1,192 @@ +/** + * @file boards/hellen/hellen81/board_configuration.cpp + * + * + * @brief Configuration defaults for the Hellen81 board + * + * See https://rusefi.com/s/hellen81 + * + * @author andreika + * @author Andrey Belomutskiy, (c) 2012-2021 + */ + +#include "global.h" +#include "engine.h" +#include "engine_math.h" +#include "allsensors.h" +#include "fsio_impl.h" +#include "engine_configuration.h" + + +static void setInjectorPins() { + engineConfiguration->injectionPins[0] = GPIOG_7; + engineConfiguration->injectionPins[1] = GPIOG_8; + engineConfiguration->injectionPins[2] = GPIOD_11; + engineConfiguration->injectionPins[3] = GPIOD_10; + + //engineConfiguration->injectionPins[4] = GPIOD_9; + //engineConfiguration->injectionPins[5] = GPIOF_12; + //engineConfiguration->injectionPins[6] = GPIOF_13; + //engineConfiguration->injectionPins[7] = GPIOF_14; + + // Disable remainder + for (int i = 4; i < MAX_CYLINDER_COUNT;i++) { + engineConfiguration->injectionPins[i] = GPIO_UNASSIGNED; + } + + engineConfiguration->injectionPinMode = OM_DEFAULT; +} + +static void setIgnitionPins() { + engineConfiguration->ignitionPins[0] = GPIOI_8; + engineConfiguration->ignitionPins[1] = GPIOE_5; + engineConfiguration->ignitionPins[2] = GPIOE_4; + engineConfiguration->ignitionPins[3] = GPIOE_3; + + // disable remainder + for (int i = 4; i < MAX_CYLINDER_COUNT; i++) { + engineConfiguration->ignitionPins[i] = GPIO_UNASSIGNED; + } + + engineConfiguration->ignitionPinMode = OM_DEFAULT; +} + +static void setLedPins() { +#ifdef EFI_COMMUNICATION_PIN + engineConfiguration->communicationLedPin = EFI_COMMUNICATION_PIN; +#else + engineConfiguration->communicationLedPin = GPIOH_10; +#endif /* EFI_COMMUNICATION_PIN */ + + //!!!!!!!!!!! + engineConfiguration->runningLedPin = GPIO_UNASSIGNED; + //engineConfiguration->runningLedPin = GPIOH_9; // green + + engineConfiguration->warningLedPin = GPIOH_11; // yellow +} + +static void setupVbatt() { + // 4.7k high side/4.7k low side = 2.0 ratio divider + engineConfiguration->analogInputDividerCoefficient = 2.0f; + + // set vbatt_divider 5.835 + // 33k / 6.8k + engineConfiguration->vbattDividerCoeff = (33 + 6.8) / 6.8; // 5.835 + + // pin input +12 from Main Relay + engineConfiguration->vbattAdcChannel = EFI_ADC_5; + + engineConfiguration->adcVcc = 3.29f; +} + +static void setupDefaultSensorInputs() { + // trigger inputs + engineConfiguration->triggerInputPins[0] = GPIOB_1; + engineConfiguration->triggerInputPins[1] = GPIO_UNASSIGNED; + engineConfiguration->triggerInputPins[2] = GPIO_UNASSIGNED; + // Direct hall-only cam input + engineConfiguration->camInputs[0] = GPIOA_6; + + engineConfiguration->tps1_1AdcChannel = EFI_ADC_4; + engineConfiguration->tps2_1AdcChannel = EFI_ADC_NONE; + + engineConfiguration->mafAdcChannel = EFI_ADC_NONE; + engineConfiguration->map.sensor.hwChannel = EFI_ADC_10; + + engineConfiguration->afr.hwChannel = EFI_ADC_0; // ADC1_16 + + engineConfiguration->clt.adcChannel = EFI_ADC_12; // ADC3_0 + + engineConfiguration->iat.adcChannel = EFI_ADC_13; // ADC3_1 + + engineConfiguration->auxTempSensor1.adcChannel = EFI_ADC_NONE; + engineConfiguration->auxTempSensor2.adcChannel = EFI_ADC_NONE; +} + +void setBoardConfigOverrides(void) { + setLedPins(); + setupVbatt(); + setSdCardConfigurationOverrides(); + + engineConfiguration->clt.config.bias_resistor = 4700; + engineConfiguration->iat.config.bias_resistor = 4700; + + engineConfiguration->canTxPin = GPIOD_1; + engineConfiguration->canRxPin = GPIOD_0; +} + +void setPinConfigurationOverrides(void) { +} + +void setSerialConfigurationOverrides(void) { + engineConfiguration->useSerialPort = false; + engineConfiguration->binarySerialTxPin = GPIO_UNASSIGNED; + engineConfiguration->binarySerialRxPin = GPIO_UNASSIGNED; +// engineConfiguration->consoleSerialTxPin = GPIO_UNASSIGNED; +// engineConfiguration->consoleSerialRxPin = GPIO_UNASSIGNED; +} + + +/** + * @brief Board-specific configuration defaults. + * + * See also setDefaultEngineConfiguration + * + * @todo Add your board-specific code, if any. + */ +void setBoardDefaultConfiguration(void) { + setInjectorPins(); + setIgnitionPins(); + + engineConfiguration->isSdCardEnabled = true; + + engineConfiguration->canTxPin = GPIOD_1; + engineConfiguration->canRxPin = GPIOD_0; + + engineConfiguration->fuelPumpPin = GPIOG_2; // OUT_IO9 + engineConfiguration->fanPin = GPIOD_12; // OUT_PWM8 + engineConfiguration->mainRelayPin = GPIOI_2; // OUT_LOW3 + engineConfiguration->tachOutputPin = GPIOD_14; // OUT_PWM6 + + engineConfiguration->useStepperIdle = true; + engineConfiguration->useHbridges = true; + engineConfiguration->stepperDcIo[0].directionPin1 = GPIOC_6; // COIL_A1 = OUT_PWM2 + engineConfiguration->stepperDcIo[0].directionPin2 = GPIOC_7; // COIL_A2 = OUT_PWM3 + engineConfiguration->stepperDcIo[1].directionPin1 = GPIOC_8; // COIL_B1 = OUT_PWM4 + engineConfiguration->stepperDcIo[1].directionPin2 = GPIOC_9; // COIL_B2 = OUT_PWM5 + + // "required" hardware is done - set some reasonable defaults + setupDefaultSensorInputs(); + + // Some sensible defaults for other options + setOperationMode(engineConfiguration, FOUR_STROKE_CRANK_SENSOR); + engineConfiguration->trigger.type = TT_TOOTHED_WHEEL_60_2; + engineConfiguration->useOnlyRisingEdgeForTrigger = true; + setAlgorithm(LM_SPEED_DENSITY PASS_CONFIG_PARAMETER_SUFFIX); + + engineConfiguration->specs.cylindersCount = 4; + engineConfiguration->specs.firingOrder = FO_1_3_4_2; + + engineConfiguration->ignitionMode = IM_INDIVIDUAL_COILS; // IM_WASTED_SPARK + engineConfiguration->crankingInjectionMode = IM_SIMULTANEOUS; + engineConfiguration->injectionMode = IM_SEQUENTIAL; // IM_SIMULTANEOUS; //IM_BATCH; +} + +/** + * @brief Board-specific SD card configuration code overrides. Needed by bootloader code. + * @todo Add your board-specific code, if any. + */ +void setSdCardConfigurationOverrides(void) { + engineConfiguration->sdCardSpiDevice = SPI_DEVICE_3; + + engineConfiguration->spi3mosiPin = GPIOC_12; + engineConfiguration->spi3misoPin = GPIOC_11; + engineConfiguration->spi3sckPin = GPIOC_10; + engineConfiguration->sdCardCsPin = GPIOA_15; + +// engineConfiguration->spi2mosiPin = GPIOB_15; +// engineConfiguration->spi2misoPin = GPIOB_14; +// engineConfiguration->spi2sckPin = GPIOB_13; +// engineConfiguration->sdCardCsPin = GPIOB_12; + CONFIG(is_enabled_spi_3) = true; +} diff --git a/firmware/config/boards/hellen/hellen81/compile_hellen81.sh b/firmware/config/boards/hellen/hellen81/compile_hellen81.sh new file mode 100644 index 0000000000..df2b4fd261 --- /dev/null +++ b/firmware/config/boards/hellen/hellen81/compile_hellen81.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +export PROJECT_BOARD=hellen/hellen81 +export PROJECT_CPU=ARCH_STM32H7 +export EXTRA_PARAMS="-DSHORT_BOARD_NAME=hellen81" + +cd .. +bash ../common_make.sh diff --git a/firmware/config/boards/hellen/hellen81/connectors/main.jpg b/firmware/config/boards/hellen/hellen81/connectors/main.jpg new file mode 100644 index 0000000000..8c317a816a Binary files /dev/null and b/firmware/config/boards/hellen/hellen81/connectors/main.jpg differ diff --git a/firmware/config/boards/hellen/hellen81/connectors/main.yaml b/firmware/config/boards/hellen/hellen81/connectors/main.yaml new file mode 100644 index 0000000000..0fe6af4a2a --- /dev/null +++ b/firmware/config/boards/hellen/hellen81/connectors/main.yaml @@ -0,0 +1,759 @@ +# +# + +pins: + - pin: 1 + function: Ignition 2 Output + id: GPIOE_5 + class: outputs + ts_name: 1 - IGN_2 + type: ign + color: red + + - pin: 2 + function: Ignition 3 (2+3) Output + id: GPIOE_4 + class: outputs + ts_name: 2 - IGN_3 + type: ign + color: red + + - pin: 3 + function: Ignition GND + type: gnd + color: black + + - pin: 4 + function: Ignition 4 Output + id: GPIOE_3 + class: outputs + ts_name: 4 - IGN_4 + type: ign + color: red + + - pin: 5 + function: Ignition 1 (1+4) Output + id: GPIOI_8 + class: outputs + ts_name: 5 - IGN_1 + type: ign + color: red + + - pin: 6 + function: Injector 2 Output + id: GPIOG_8 + class: outputs + ts_name: 6 - INJ_2 + type: inj + color: blue + + - pin: 7 + function: Injector 3 Output + id: GPIOD_11 + class: outputs + ts_name: 7 - INJ_3 + type: inj + color: blue + + - pin: 8 + function: Engine Speed (Tachometer) Signal Output (push-pull) + id: GPIOD_14 + class: outputs + ts_name: 8 - OUT_TACH + color: green + + - pin: 9 + function: Fuel Level / CLT Analog Input + id: GPIOF_5 + class: analog_inputs + ts_name: 9 - IN_SENS3 + color: white + + - pin: 10 + function: Fuel consumption Output (push-pull) / CLT? + id: GPIOD_15 + class: outputs + ts_name: 10 - OUT_FUEL + color: green + + - pin: 11 + function: Reserved High-side Output (high) + id: GPIOH_13 + class: outputs + ts_name: 11 - OUT_HIGH + type: gp_high + color: green + + - pin: 12 + function: Battery Permanent Supply + color: black + type: 12v + + - pin: 13 + function: Ignition Switch KL15 / Battery Voltage Analog Input + id: EFI_ADC_5 + class: analog_inputs + ts_name: 13 - IN_VIGN + color: white + + - pin: 14 + function: Main Relay Output + id: GPIOH_13 + class: outputs + ts_name: 14 - OUT_MAIN + type: ls + color: orange + + - pin: 15 + function: Crankshaft Sensor (+) Input + id: [GPIOB_1, EFI_ADC_9] + class: [event_inputs, analog_inputs] + ts_name: 15 - IN_CRANK (A24) + color: white + + - pin: 16 + function: Throttle Position Sensor (TPS) Analog Input + id: EFI_ADC_4 + class: analog_inputs + ts_name: 16 - IN_TPS + color: white + + - pin: 17 + function: TMOT, TPS sensor analog GND + type: gnd + color: black + + - pin: 18 + function: Lambda O2-Sensor (O2S) Analog Input + id: EFI_ADC_0 + class: analog_inputs + ts_name: 18 - IN_O2S + color: white + + - pin: 19 + function: Knock Sensor (+) Analog Input + color: white + + - pin: 20 + function: Knock Sensor (-) + color: black + + - pin: 21 + function: Ignition 8 Output + id: GPIOE_6 + class: outputs + ts_name: 21 - IGN_8 + type: ign + color: red + + - pin: 22 + function: Ignition 7 Output + id: GPIOB_9 + class: outputs + ts_name: 22 - IGN_7 + type: ign + color: red + + - pin: 23 + function: Ignition 6 Output + id: GPIOB_8 + class: outputs + ts_name: 23 - IGN_6 + type: ign + color: red + + - pin: 24 + function: Ignition 5 Output + id: GPIOE_2 + class: outputs + ts_name: 24 - IGN_5 + type: ign + color: red + + - pin: 25 + function: Injector 6 Output + id: GPIOF_12 + class: outputs + ts_name: 25 - INJ_6 + type: inj + color: blue + + - pin: 26 + function: Solenoid B2 Output (push-pull) / Reserved + color: green + + - pin: 27 + function: Injector 1 Output + id: GPIOG_7 + class: outputs + ts_name: 27 - INJ_1 + type: inj + color: blue + + - pin: 28 + function: Oxygen Sensor 2 Heating Output (low) + id: GPIOA_9 + class: outputs + ts_name: 28 - OUT_O2H2 + type: ls + color: orange + + - pin: 29 + function: Solenoid B1 output / Reserved + color: green + + - pin: 30 + function: Injector 5 Output + id: GPIOD_9 + class: outputs + ts_name: 30 - INJ_5 + type: inj + color: blue + + - pin: 31 + function: CheckEngine Lamp Output (low) + id: GPIOG_4 + class: outputs + ts_name: 31 - OUT_CE + type: ls + color: orange + + - pin: 32 + function: 5V Analog Supply (TPS) + color: black + type: 5v + + - pin: 33 + function: 5V Analog Supply (MAF/MAP Sensor) + color: black + type: 5v + + - pin: 34 + function: Crank Sensor (-) + color: black + + - pin: 35 + function: MAP/MAF Sensor Analog Gnd + color: black + type: gnd + + - pin: 36 + function: Lambda O2-sensor Gnd + color: black + type: gnd + + - pin: 37 + function: Manifold pressure (MAF/MAP1) Analog Input + id: EFI_ADC_10 + class: analog_inputs + ts_name: 37 - IN_MAP1 + color: white + + - pin: 38 + function: MAP2 Analog Input + id: EFI_ADC_11 + class: analog_inputs + ts_name: 38 - IN_MAP2 + color: white + + - pin: 39 + function: Engine Coolant Temp. (CLT) Analog Input + id: EFI_ADC_12 + class: analog_inputs + ts_name: 39 - IN_CLT + color: white + + - pin: 40 + function: Intake Air Temperature (IAT) Analog Input + id: EFI_ADC_13 + class: analog_inputs + ts_name: 40 - IN_IAT + color: white + + - pin: 41 + function: MAP3 Analog Input + id: EFI_ADC_2 + class: analog_inputs + ts_name: 41 - IN_MAP3 + color: white + + - pin: 42 + function: Reserved input (RES3) / Fuel level / IAT / RRS + + - pin: 43 + function: Reserved Analog Input (SENS2) + + - pin: 44 + function: Battery Switched Supply + type: 12v + + - pin: 45 + function: Battery Switched Supply + type: 12v + + - pin: 46 + function: Canister Purge Valve Output (low) + id: GPIOG_3 + class: outputs + ts_name: 46 - OUT_CANIST + type: ls + color: orange + + - pin: 47 + function: Injector 4 Output + id: GPIOD_10 + class: outputs + ts_name: 47 - INJ_4 + type: inj + color: blue + + - pin: 48 + function: O2 LSF Heating Output (low) + id: GPIOH_14 + class: outputs + ts_name: 48 - OUT_O2H + type: ls + color: orange + + - pin: 49 + function: Canister heater Output (low) + id: GPIOI_1 + class: outputs + ts_name: 49 - OUT_HEATER + type: ls + color: orange + + - pin: 50 + function: Starter Relay Output (low) / HOTLamp / Idle2(Mikas) + id: GPIOI_0 + class: outputs + ts_name: 50 - OUT_STARTER + type: ls + color: orange + + - pin: 51 + function: Power Ground + type: gnd + color: black + + - pin: 52 + function: K-Line (Immobiliser) / Solenoid Output A1 + + - pin: 53 + function: Reserved Ground / Fuel Level Ground + type: gnd + color: black + + - pin: 54 + function: Solenoid Output A2 / Reserved + + - pin: 55 + function: Lambda O2-Sensor 2 Analog Input (O2S_2) + id: EFI_ADC_1 + class: analog_inputs + ts_name: 55 - IN_O2S2 + color: white + + - pin: 56 + function: Reserved input 1 (RES1) + + - pin: 57 + function: Reserved input 2 (RES2) + + - pin: 58 + function: Reserved Input (SENS1) / AC (Bosch) + + - pin: 59 + function: Vehicle Speed Sensor (VSS) digital input + id: GPIOF_11 + class: event_inputs + ts_name: 59 - IN_VSS + color: white + + - pin: 60 + function: Reserved Push-Pull Output (push-pull) + id: GPIOD_13 + class: outputs + ts_name: 60 - OUT_IO + color: green + + - pin: 61 + function: Power Ground + type: gnd + color: black + + - pin: 62 + function: CAN-H (ME7.8.8-compatible) + + - pin: 63 + function: Battery Switched Supply + type: 12v + + - pin: 64 + function: Solenoid B2 output (push-pull) / Stepper A (or D) + id: GPIOC_9 + class: outputs + ts_name: 64 - OUT_COIL_B2 + color: green + + - pin: 65 + function: Solenoid B1 output (push-pull) / Stepper D (or C) + id: GPIOC_8 + class: outputs + ts_name: 65 - OUT_COIL_B1 + color: green + + - pin: 66 + function: Solenoid A2 output (push-pull) / Stepper C (or B) + id: GPIOC_7 + class: outputs + ts_name: 66 - OUT_COIL_A2 + color: green + + - pin: 67 + function: Solenoid A1 output (push-pull) / Stepper B (or A) + id: GPIOC_6 + class: outputs + ts_name: 67 - OUT_COIL_A1 + color: green + + - pin: 68 + function: Electric Cooling Fan (ECF) Relay Output (low) + id: GPIOD_12 + class: outputs + ts_name: 68 - OUT_ECF + type: ls + color: orange + + - pin: 69 + function: A/C Relay Output (low) + id: GPIOH_15 + class: outputs + ts_name: 69 - OUT_AC + type: ls + color: orange + + - pin: 70 + function: Fuel Pump Relay Output (low) + id: GPIOG_2 + class: outputs + ts_name: 70 - OUT_PUMP + type: ls + color: orange + + - pin: 71 + function: K-Line + + - pin: 72 + function: Injector 7 Output + id: GPIOF_13 + class: outputs + ts_name: 72 - INJ_7 + type: inj + color: blue + + - pin: 73 + function: Injector 8 Output + id: GPIOF_14 + class: outputs + ts_name: 73 - INJ_8 + type: inj + color: blue + + - pin: 74 + function: Inertia switch (crash detect) Input + id: [GPIOB_0, EFI_ADC_8] + class: [event_inputs, analog_inputs] + ts_name: 74 - IN_AUX1 + color: white + + - pin: 75 + function: A/C Switch Input + id: [GPIOC_4, EFI_ADC_14] + class: [event_inputs, analog_inputs] + ts_name: 75 - IN_AUX2 + color: white + + - pin: 76 + function: Power Steering Input + id: [GPIOC_5, EFI_ADC_15] + class: [event_inputs, analog_inputs] + ts_name: 76 - IN_AUX3 + color: white + + - pin: 77 + function: Clutch switch Input + id: [GPIOA_7, EFI_ADC_7] + class: [event_inputs, analog_inputs] + ts_name: 77 - IN_AUX4 + color: white + + - pin: 78 + function: Pedal Position Sensor (PPS) Analog Input / GND? + id: EFI_ADC_3 + class: analog_inputs + ts_name: 78 - IN_PPS + color: white + + - pin: 79 + function: Cam/Phase Sensor Input + id: [GPIOA_6, EFI_ADC_6] + class: [event_inputs, analog_inputs] + ts_name: 79 - IN_CAM + color: white + + - pin: 80 + function: Power Ground + type: gnd + color: black + + - pin: 81 + function: CAN-L (ME7.8.8-compatible) + +info: + image: + file: main.jpg + pins: + - pin: 1 + x: 809 + y: 808 + - pin: 2 + x: 1028 + y: 808 + - pin: 3 + x: 917 + y: 611 + - pin: 4 + x: 797 + y: 414 + - pin: 5 + x: 1025 + y: 414 + - pin: 6 + x: 3234 + y: 408 + - pin: 7 + x: 3129 + y: 408 + - pin: 8 + x: 3024 + y: 408 + - pin: 9 + x: 2920 + y: 408 + - pin: 10 + x: 2815 + y: 408 + - pin: 11 + x: 2710 + y: 408 + - pin: 12 + x: 2605 + y: 408 + - pin: 13 + x: 2500 + y: 408 + - pin: 14 + x: 2395 + y: 408 + - pin: 15 + x: 2291 + y: 408 + - pin: 16 + x: 2186 + y: 408 + - pin: 17 + x: 2081 + y: 408 + - pin: 18 + x: 1976 + y: 408 + - pin: 19 + x: 1871 + y: 408 + - pin: 20 + x: 1766 + y: 408 + - pin: 21 + x: 1662 + y: 408 + - pin: 22 + x: 1557 + y: 408 + - pin: 23 + x: 1452 + y: 408 + - pin: 24 + x: 1347 + y: 408 + - pin: 25 + x: 3234 + y: 519 + - pin: 26 + x: 3129 + y: 519 + - pin: 27 + x: 3024 + y: 519 + - pin: 28 + x: 2920 + y: 519 + - pin: 29 + x: 2815 + y: 519 + - pin: 30 + x: 2710 + y: 519 + - pin: 31 + x: 2605 + y: 519 + - pin: 32 + x: 2500 + y: 519 + - pin: 33 + x: 2395 + y: 519 + - pin: 34 + x: 2291 + y: 519 + - pin: 35 + x: 2186 + y: 519 + - pin: 36 + x: 2081 + y: 519 + - pin: 37 + x: 1976 + y: 519 + - pin: 38 + x: 1871 + y: 519 + - pin: 39 + x: 1766 + y: 519 + - pin: 40 + x: 1662 + y: 519 + - pin: 41 + x: 1557 + y: 519 + - pin: 42 + x: 1452 + y: 519 + - pin: 43 + x: 1347 + y: 519 + - pin: 44 + x: 3234 + y: 708 + - pin: 45 + x: 3129 + y: 708 + - pin: 46 + x: 3024 + y: 708 + - pin: 47 + x: 2920 + y: 708 + - pin: 48 + x: 2815 + y: 708 + - pin: 49 + x: 2710 + y: 708 + - pin: 50 + x: 2605 + y: 708 + - pin: 51 + x: 2500 + y: 708 + - pin: 52 + x: 2395 + y: 708 + - pin: 53 + x: 2291 + y: 708 + - pin: 54 + x: 2186 + y: 708 + - pin: 55 + x: 2081 + y: 708 + - pin: 56 + x: 1976 + y: 708 + - pin: 57 + x: 1871 + y: 708 + - pin: 58 + x: 1766 + y: 708 + - pin: 59 + x: 1662 + y: 708 + - pin: 60 + x: 1557 + y: 708 + - pin: 61 + x: 1452 + y: 708 + - pin: 62 + x: 1347 + y: 708 + - pin: 63 + x: 3234 + y: 820 + - pin: 64 + x: 3129 + y: 820 + - pin: 65 + x: 3024 + y: 820 + - pin: 66 + x: 2920 + y: 820 + - pin: 67 + x: 2815 + y: 820 + - pin: 68 + x: 2710 + y: 820 + - pin: 69 + x: 2605 + y: 820 + - pin: 70 + x: 2500 + y: 820 + - pin: 71 + x: 2395 + y: 820 + - pin: 72 + x: 2291 + y: 820 + - pin: 73 + x: 2186 + y: 820 + - pin: 74 + x: 2081 + y: 820 + - pin: 75 + x: 1976 + y: 820 + - pin: 76 + x: 1871 + y: 820 + - pin: 77 + x: 1766 + y: 820 + - pin: 78 + x: 1662 + y: 820 + - pin: 79 + x: 1557 + y: 820 + - pin: 80 + x: 1452 + y: 820 + - pin: 81 + x: 1347 + y: 820 diff --git a/firmware/config/boards/hellen/hellen81/prepend.txt b/firmware/config/boards/hellen/hellen81/prepend.txt new file mode 100644 index 0000000000..81616aa97b --- /dev/null +++ b/firmware/config/boards/hellen/hellen81/prepend.txt @@ -0,0 +1,24 @@ +#define ts_show_hip9011 false +#define ts_show_cj125 false + +//Jokeri says it's better with full pinout just in case +//#define ts_show_full_pinout false + +#define ts_show_lcd false +#define ts_show_joystick false +#define ts_show_egt false +#define ts_show_gps false +#define ts_show_etb_pins false +#define ts_show_analog_divider false +#define ts_show_spi true +#define ts_show_sd_card true +#define ts_show_can_pins false +#define ts_show_tunerstudio_port false +#define ts_show_can2 false +#define ts_show_software_knock false +#define ts_show_hardware_simulator false + +#define show_test_presets false +#define show_Frankenso_presets false +#define show_microRusEFI_presets false +#define show_Proteus_presets false diff --git a/firmware/config/boards/hellen/hellen81/readme.md b/firmware/config/boards/hellen/hellen81/readme.md new file mode 100644 index 0000000000..77616cbb59 --- /dev/null +++ b/firmware/config/boards/hellen/hellen81/readme.md @@ -0,0 +1,7 @@ + +https://github.com/rusefi/rusefi/wiki/Hellen81 + +https://github.com/andreika-git/hellen81/ + +https://rusefi.com/forum/viewtopic.php?f=4&t=1946 +