Hellen72 config (#2200)

* Hellen72 config

* Hellen72 files

Co-authored-by: Andrei <andreikagit@users.noreply.github.com>
This commit is contained in:
andreika-git 2021-01-08 19:50:13 +02:00 committed by GitHub
parent b8cab765b8
commit 3dac7599c4
13 changed files with 745 additions and 25 deletions

View File

@ -12,9 +12,14 @@ jobs:
matrix:
# What boards should we build for? In the 'include' section below,
# set up what each of these boards needs to build.
build-target: [cypress, frankenso_na6, kinetis, mre_f4, mre_f4_hardware_QC_special_build, mre_f7, prometheus_405, prometheus_469, proteus_f4, proteus_f4_hardware_QC_special_build, proteus_f7, stm32f746_nucleo, stm32f767_nucleo]
build-target: [hellen72, cypress, frankenso_na6, kinetis, mre_f4, mre_f4_hardware_QC_special_build, mre_f7, prometheus_405, prometheus_469, proteus_f4, proteus_f4_hardware_QC_special_build, proteus_f7, stm32f746_nucleo, stm32f767_nucleo]
include:
# Board configurations
- build-target: hellen72
folder: hellen/hellen72
ini-file: rusefi_hellen72.ini
# Board configurations
- build-target: cypress
folder: hellen

View File

@ -0,0 +1,2 @@
@echo off
bash.exe compile_hellen72.sh

View File

@ -0,0 +1,330 @@
/*
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 "Hellen72"
#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.
*/
#define EFI_PIN_MODE_DEFAULT PIN_MODE_INPUT
#define EFI_DR_DEFAULT PIN_PUPDR_PULLUP
// 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
#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
#endif /* BOARD_H */

View File

@ -0,0 +1,42 @@
# Combine the related files for a specific platform and MCU.
# Target ECU board design
BOARDSRC_CPP = $(BOARDS_DIR)/hellen/hellen72/board_configuration.cpp
BOARDINC = $(BOARDS_DIR)/hellen/hellen72
# Target processor details
ifeq ($(PROJECT_CPU),ARCH_STM32F4)
MCU_DEFS = -DSTM32F427xx
BOARDSRC = $(CHIBIOS)/os/hal/boards/ST_STM32F4_DISCOVERY/board.c
BOARDINC += $(PROJECT_DIR)/config/stm32f4ems # For board.h
BOARDINC += $(BOARDS_DIR)/st_stm32f4
LDSCRIPT = $(BOARDS_DIR)/prometheus/STM32F405xG.ld
else
# todo: add support for STM32H7
MCU_DEFS = -DSTM32H743xx
BOARDSRC = $(CHIBIOS)/os/hal/boards/ST_NUCLEO144_H743ZI/board.c
CONFDIR = config/stm32h7ems
BOARDINC += $(CHIBIOS)/os/hal/boards/ST_NUCLEO144_H743ZI # For board.h
BOARDINC += $(PROJECT_DIR)/config/stm32h7ems # efifeatures/halconf/chconf.h
LDSCRIPT= $(CHIBIOS)/os/common/startup/ARMCMx/compilers/GCC/ld/STM32H743xI.ld
endif
# Set this if you want a default engine type other than normal Hellen72
ifeq ($(DEFAULT_ENGINE_TYPE),)
DEFAULT_ENGINE_TYPE = -DDEFAULT_ENGINE_TYPE=HELLEN_NB2
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
# Add them all together
DDEFS += $(MCU_DEFS) -DEFI_USE_OSC=TRUE -DFIRMWARE_ID=\"hellen72\" $(DEFAULT_ENGINE_TYPE) $(LED_CRITICAL_ERROR_BRAIN_PIN) $(LED_COMMUNICATION_BRAIN_PIN)
# -DEFI_SOFTWARE_KNOCK=TRUE -DSTM32_ADC_USE_ADC3=TRUE
# We are running on Hellen-One hardware!
DDEFS += -DHW_HELLEN=1

View File

@ -0,0 +1,183 @@
/**
* @file boards/hellen/hellen72/board_configuration.cpp
*
*
* @brief Configuration defaults for the Hellen72 board
*
* See https://rusefi.com/s/hellen72
*
* @author andreika <prometheus.pcb@gmail.com>
* @author Andrey Belomutskiy, (c) 2012-2020
*/
#include "global.h"
#include "engine.h"
#include "engine_math.h"
#include "allsensors.h"
#include "fsio_impl.h"
#include "engine_configuration.h"
EXTERN_ENGINE;
static const ConfigOverrides configOverrides = {
.canTxPin = GPIOD_1,
.canRxPin = GPIOD_0,
};
const ConfigOverrides& getConfigOverrides() {
return configOverrides;
}
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 < INJECTION_PIN_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;
//engineConfiguration->ignitionPins[4] = GPIOE_2;
//engineConfiguration->ignitionPins[5] = GPIOI_5;
//engineConfiguration->ignitionPins[6] = GPIOI_6;
//engineConfiguration->ignitionPins[7] = GPIOI_7;
// disable remainder
for (int i = 4; i < IGNITION_PIN_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 = 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 4.0
// 10k high side/3.333k low side
engineConfiguration->vbattDividerCoeff = (10.0f + 10.0f / 3.0f) / (10.0f / 3.0f); // = 4
// pin input +12 from Main Relay
engineConfiguration->vbattAdcChannel = EFI_ADC_NONE; // EFI_ADC_5 on ADC3
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_10;
engineConfiguration->map.sensor.hwChannel = EFI_ADC_11;
engineConfiguration->afr.hwChannel = EFI_ADC_12;
engineConfiguration->clt.adcChannel = EFI_ADC_0;
engineConfiguration->clt.config.bias_resistor = 4700;
engineConfiguration->iat.adcChannel = EFI_ADC_1;
engineConfiguration->iat.config.bias_resistor = 4700;
engineConfiguration->auxTempSensor1.adcChannel = EFI_ADC_NONE;
engineConfiguration->auxTempSensor2.adcChannel = EFI_ADC_NONE;
}
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 code overrides.
*
* See also setDefaultEngineConfiguration
*
* @todo Add your board-specific code, if any.
*/
void setBoardConfigurationOverrides(void) {
setInjectorPins();
setIgnitionPins();
setLedPins();
setupVbatt();
setSdCardConfigurationOverrides();
engineConfiguration->canTxPin = GPIOD_1;
engineConfiguration->canRxPin = GPIOD_0;
engineConfiguration->fuelPumpPin = GPIOG_2; // OUT_IO9
engineConfiguration->idle.solenoidPin = GPIOD_14; // OUT_PWM5
engineConfiguration->fanPin = GPIOD_12; // OUT_PWM8
// "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_SIMULTANEOUS;//IM_BATCH;// IM_SEQUENTIAL;
}
void setAdcChannelOverrides(void) {
}
/**
* @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_2;
engineConfiguration->spi2mosiPin = GPIOB_15;
engineConfiguration->spi2misoPin = GPIOB_14;
engineConfiguration->spi2sckPin = GPIOB_13;
engineConfiguration->sdCardCsPin = GPIOB_12;
CONFIG(is_enabled_spi_2) = true;
// engineConfiguration->isSdCardEnabled = true;
}

View File

@ -0,0 +1,8 @@
#!/bin/bash
export PROJECT_BOARD=hellen/hellen72
export PROJECT_CPU=ARCH_STM32F4
export EXTRA_PARAMS="-DSHORT_BOARD_NAME=hellen72"
cd ..
bash ../common_make.sh

View File

@ -0,0 +1,72 @@
#
# Hellen72 board
# https://rusefi.com/s/hellen72
#
outputs:
# injector channels
GPIOG_7: "2A - INJ_1"
GPIOG_8: "2D - INJ_2"
GPIOD_11: "2G - INJ_3"
GPIOD_10: "2J - INJ_4"
GPIOD_9: "2C - AC Fan / INJ_5"
GPIOF_12: "2N - VTSC / INJ_6"
GPIOF_13: "3C - Purge Solenoid / INJ_7"
GPIOF_14: "3D - EGR Solenoid / INJ_8"
# ignition outputs (5v)
GPIOI_8: "3F - IGN_1 (1&4)"
GPIOE_5: "3I - IGN_2 (2&3)"
GPIOE_4: "2O - IGN_3"
GPIOE_3: "3N - IGN_4"
GPIOE_2: "3Z - IGN_5 / GNDA"
GPIOI_5: "4K - IGN_6 / +5V_MAP"
GPIOI_6: "3L - IGN_7 / AFR"
GPIOI_7: "4U - IGN_8 / MAP2"
# low-side outputs
GPIOI_2: "3H - MAIN (O1)"
GPIOH_13: "3U - AWARN (O2)"
GPIOH_14: "3J - O2H (O3)"
GPIOH_15: "2K - AC (O4)"
GPIOI_0: "4R - VVT (O5)"
GPIOA_9: "3P - O2H2 (O7)"
GPIOG_2: "2M - FPUMP (O9)"
GPIOG_3: "3E - CANIST (O10)"
GPIOG_4: "2R - CE (O11)"
GPIOC_6: "2F - COIL_A1 (PWM1)"
GPIOC_7: "2E - COIL_A2 (PWM2)"
GPIOC_8: "2I - COIL_B1 (PWM3)"
GPIOC_9: "2H - COIL_B2 (PWM4)"
GPIOD_14: "2Q - IDLE (PWM5)"
GPIOD_15: "3M - ALTERN (PWM6)"
GPIOD_13: "3O - TACH (PWM7)"
GPIOD_12: "2B - ECF (PWM8)"
event_inputs:
GPIOA_6: "3V - CAM (A19)"
GPIOB_1: "3Y - CRANK (A24)"
GPIOF_11: "3T - VSS (D5)"
switch_inputs:
GPIOA_2: "4H - Neutral/AUX2 (A21)"
GPIOA_0: "4I - Clutch/AUX3 (A22)"
GPIOA_1: "4B - Brake/RES1 (A15)"
GPIOA_3: "4C - Steering/RES2 (A16)"
analog_inputs:
EFI_ADC_0: "4P - CLT (A13)"
EFI_ADC_1: "4N - IAT (A14)"
EFI_ADC_2: "4B - RES1/Brake (A15)"
EFI_ADC_3: "4C - RES2/Steering (A16)"
EFI_ADC_4: "4V - TPS (A17)"
EFI_ADC_5: "4AB - FTP/PPS (A18)"
EFI_ADC_6: "3V - CAM (A19)"
EFI_ADC_7: "4J - VTCS/AUX4 (A20)"
EFI_ADC_8: "4F - AC_PRES/AUX1 (A23)"
EFI_ADC_9: "3Y - CRANK (A24)"
EFI_ADC_10: "4X - MAF (A9)"
EFI_ADC_11: "4U - MAP2/Ign8 (A10)"
EFI_ADC_12: "4W - O2S (A11)"
EFI_ADC_13: "4AA - O2S2 (A12)"
EFI_ADC_14: "4H - AUX2/Neutral (A21)"
EFI_ADC_15: "4I - AUX3/Clutch (A22)"

View File

@ -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_main_relay false
#define ts_show_main_relay_microRusEFI_message true
#define ts_show_can2 false
#define ts_show_software_knock true
#define show_test_presets false
#define show_Frankenso_presets false
#define show_Proteus_presets false

View File

@ -0,0 +1,4 @@
https://rusefi.com/forum/viewtopic.php?f=4&t=1538
https://github.com/rusefi/hw_microRusEfi

View File

@ -1,7 +1,7 @@
#include "global.h"
#include "rusefi_enums.h"
#include "rusefi_hw_enums.h"
// was generated automatically by rusEfi tool from rusefi_hw_enums.h // was generated automatically by rusEfi tool from rusefi_enums.h // by enum2string.jar tool on Sun Jan 03 13:42:19 EST 2021
// was generated automatically by rusEfi tool from rusefi_hw_enums.h // was generated automatically by rusEfi tool from rusefi_enums.h // by enum2string.jar tool on Fri Jan 08 19:13:05 EET 2021
// see also gen_config_and_enums.bat
@ -439,6 +439,38 @@ case GPIOH_8:
return "GPIOH_8";
case GPIOH_9:
return "GPIOH_9";
case GPIOI_0:
return "GPIOI_0";
case GPIOI_1:
return "GPIOI_1";
case GPIOI_10:
return "GPIOI_10";
case GPIOI_11:
return "GPIOI_11";
case GPIOI_12:
return "GPIOI_12";
case GPIOI_13:
return "GPIOI_13";
case GPIOI_14:
return "GPIOI_14";
case GPIOI_15:
return "GPIOI_15";
case GPIOI_2:
return "GPIOI_2";
case GPIOI_3:
return "GPIOI_3";
case GPIOI_4:
return "GPIOI_4";
case GPIOI_5:
return "GPIOI_5";
case GPIOI_6:
return "GPIOI_6";
case GPIOI_7:
return "GPIOI_7";
case GPIOI_8:
return "GPIOI_8";
case GPIOI_9:
return "GPIOI_9";
case GPIO_INVALID:
return "GPIO_INVALID";
case GPIO_UNASSIGNED:

View File

@ -160,25 +160,25 @@ typedef enum __attribute__ ((__packed__)) {
GPIOH_14 = 128,
GPIOH_15 = 129,
/* TLE6240 pins go right after on chips */
TLE6240_PIN_1 = 130,
TLE6240_PIN_2 = 131,
TLE6240_PIN_3 = 132,
TLE6240_PIN_4 = 133,
TLE6240_PIN_5 = 134,
TLE6240_PIN_6 = 135,
TLE6240_PIN_7 = 136,
TLE6240_PIN_8 = 137,
TLE6240_PIN_9 = 138,
TLE6240_PIN_10 = 139,
TLE6240_PIN_11 = 140,
TLE6240_PIN_12 = 141,
TLE6240_PIN_13 = 142,
TLE6240_PIN_14 = 143,
TLE6240_PIN_15 = 144,
TLE6240_PIN_16 = 145,
/* Used by 176-pin STM32 MCUs */
GPIOI_0 = 130,
GPIOI_1 = 131,
GPIOI_2 = 132,
GPIOI_3 = 133,
GPIOI_4 = 134,
GPIOI_5 = 135,
GPIOI_6 = 136,
GPIOI_7 = 137,
GPIOI_8 = 138,
GPIOI_9 = 139,
GPIOI_10 = 140,
GPIOI_11 = 141,
GPIOI_12 = 142,
GPIOI_13 = 143,
GPIOI_14 = 144,
GPIOI_15 = 145,
/* MC33972 pins go right after TLE6240 */
/* MC33972 pins go right after on_chip pins */
MC33972_PIN_1 = 146,
MC33972_PIN_21 = 166,
MC33972_PIN_22 = 167,
@ -214,10 +214,28 @@ typedef enum __attribute__ ((__packed__)) {
TLE8888_PIN_MR = 196,
TLE8888_PIN_KEY = 197,
TLE8888_PIN_WAKE = 198,
/* TLE6240 pins */
TLE6240_PIN_1 = 199,
TLE6240_PIN_2 = 200,
TLE6240_PIN_3 = 201,
TLE6240_PIN_4 = 202,
TLE6240_PIN_5 = 203,
TLE6240_PIN_6 = 204,
TLE6240_PIN_7 = 205,
TLE6240_PIN_8 = 206,
TLE6240_PIN_9 = 207,
TLE6240_PIN_10 = 208,
TLE6240_PIN_11 = 209,
TLE6240_PIN_12 = 210,
TLE6240_PIN_13 = 211,
TLE6240_PIN_14 = 212,
TLE6240_PIN_15 = 213,
TLE6240_PIN_16 = 214,
} brain_pin_e;
/* Plase keep updating these defines */
#define BRAIN_PIN_ONCHIP_LAST GPIOH_15
#define BRAIN_PIN_ONCHIP_LAST GPIOI_15
#define BRAIN_PIN_ONCHIP_PINS (BRAIN_PIN_ONCHIP_LAST - GPIOA_0 + 1)
#define BRAIN_PIN_LAST TLE8888_PIN_WAKE
#define BRAIN_PIN_TOTAL_PINS (BRAIN_PIN_LAST - GPIOA_0 + 1)

View File

@ -9,7 +9,7 @@ rm -f gen_config_board.log
bash gen_config_default.sh
[ $? -eq 0 ] || { echo "ERROR generating default"; exit 1; }
for BOARD in "microrusefi mre_f7" "microrusefi mre_f4" "frankenso frankenso_na6" "prometheus prometheus_469" "prometheus prometheus_405" "proteus proteus_f7" "proteus proteus_f4"; do
for BOARD in "hellen/hellen72 hellen72" "microrusefi mre_f7" "microrusefi mre_f4" "frankenso frankenso_na6" "prometheus prometheus_469" "prometheus prometheus_405" "proteus proteus_f7" "proteus proteus_f4"; do
BOARD_NAME="${BOARD% *}"
BOARD_SHORT_NAME="${BOARD#* }"
bash gen_config_board.sh $BOARD_NAME $BOARD_SHORT_NAME

View File

@ -295,13 +295,13 @@ custom brain_input_pin_e 1 bits, U08, @OFFSET@, [0:7], @@brain_input_pin_e_
! 'switch_input_pin_e' is YYY
!
#define brain_pin_e_enum "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6","PE7","PE8","PE9","PE10","PE11","PE12","PE13","PE14","PE15", "PF0","PF1","PF2","PF3","PF4","PF5","PF6","PF7","PF8","PF9","PF10","PF11","PF12","PF13","PF14","PF15", "PG0","PG1","PG2","PG3","PG4","PG5","PG6","PG7","PG8","PG9","PG10","PG11","PG12","PG13","PG14","PG15", "PH0","PH1","PH2","PH3","PH4","PH5","PH6","PH7","PH8","PH9","PH10","PH11","PH12","PH13","PH14","PH15","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"
#define switch_input_pin_e_enum "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6","PE7","PE8","PE9","PE10","PE11","PE12","PE13","PE14","PE15", "PF0","PF1","PF2","PF3","PF4","PF5","PF6","PF7","PF8","PF9","PF10","PF11","PF12","PF13","PF14","PF15", "PG0","PG1","PG2","PG3","PG4","PG5","PG6","PG7","PG8","PG9","PG10","PG11","PG12","PG13","PG14","PG15", "PH0","PH1","PH2","PH3","PH4","PH5","PH6","PH7","PH8","PH9","PH10","PH11","PH12","PH13","PH14","PH15","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"
#define brain_pin_e_enum "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6","PE7","PE8","PE9","PE10","PE11","PE12","PE13","PE14","PE15", "PF0","PF1","PF2","PF3","PF4","PF5","PF6","PF7","PF8","PF9","PF10","PF11","PF12","PF13","PF14","PF15", "PG0","PG1","PG2","PG3","PG4","PG5","PG6","PG7","PG8","PG9","PG10","PG11","PG12","PG13","PG14","PG15", "PH0","PH1","PH2","PH3","PH4","PH5","PH6","PH7","PH8","PH9","PH10","PH11","PH12","PH13","PH14","PH15", "PI0","PI1","PI2","PI3","PI4","PI5","PI6","PI7","PI8","PI9","PI10","PI11","PI12","PI13","PI14","PI15", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID"
#define switch_input_pin_e_enum "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6","PE7","PE8","PE9","PE10","PE11","PE12","PE13","PE14","PE15", "PF0","PF1","PF2","PF3","PF4","PF5","PF6","PF7","PF8","PF9","PF10","PF11","PF12","PF13","PF14","PF15", "PG0","PG1","PG2","PG3","PG4","PG5","PG6","PG7","PG8","PG9","PG10","PG11","PG12","PG13","PG14","PG15", "PH0","PH1","PH2","PH3","PH4","PH5","PH6","PH7","PH8","PH9","PH10","PH11","PH12","PH13","PH14","PH15", "PI0","PI1","PI2","PI3","PI4","PI5","PI6","PI7","PI8","PI9","PI10","PI11","PI12","PI13","PI14","PI15", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID"
custom brain_pin_e 1 bits, U08, @OFFSET@, [0:7], @@brain_pin_e_enum@@
custom switch_input_pin_e 1 bits, U08, @OFFSET@, [0:7], @@switch_input_pin_e_enum@@
#define output_pin_e_enum "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6","PE7","PE8","PE9","PE10","PE11","PE12","PE13","PE14","PE15", "PF0","PF1","PF2","PF3","PF4","PF5","PF6","PF7","PF8","PF9","PF10","PF11","PF12","PF13","PF14","PF15", "PG0","PG1","PG2","PG3","PG4","PG5","PG6","PG7","PG8","PG9","PG10","PG11","PG12","PG13","PG14","PG15", "PH0","PH1","PH2","PH3","PH4","PH5","PH6","PH7","PH8","PH9","PH10","PH11","PH12","PH13","PH14","PH15","TLE6240_1", "TLE6240_2", "TLE6240_3", "TLE6240_4", "TLE6240_5", "TLE6240_6", "TLE6240_7", "TLE6240_8", "TLE6240_9", "TLE6240_10", "TLE6240_11", "TLE6240_12", "TLE6240_13", "TLE6240_14", "TLE6240_15", "TLE6240_16", "MC33972_1", "MC33972_2", "MC33972_3", "MC33972_4", "MC33972_5", "MC33972_6", "MC33972_7", "MC33972_8", "MC33972_9", "MC33972_10", "MC33972_11", "MC33972_12", "MC33972_13", "MC33972_14", "MC33972_15", "MC33972_16", "MC33972_17", "MC33972_18", "MC33972_19", "MC33972_20", "MC33972_21", "MC33972_22", "TLE8888_1", "TLE8888_2", "TLE8888_3", "TLE8888_4", "TLE8888_5", "TLE8888_6", "TLE8888_7", "TLE8888_8", "TLE8888_9", "TLE8888_10", "TLE8888_11", "TLE8888_12", "TLE8888_13", "TLE8888_14", "TLE8888_15", "TLE8888_16", "TLE8888_17", "TLE8888_18", "TLE8888_19", "TLE8888_20", "TLE8888_21", "TLE8888_22", "TLE8888_23", "TLE8888_24", "TLE8888_25", "TLE8888_26", "TLE8888_27", "TLE8888_28", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID"
#define output_pin_e_enum "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6","PE7","PE8","PE9","PE10","PE11","PE12","PE13","PE14","PE15", "PF0","PF1","PF2","PF3","PF4","PF5","PF6","PF7","PF8","PF9","PF10","PF11","PF12","PF13","PF14","PF15", "PG0","PG1","PG2","PG3","PG4","PG5","PG6","PG7","PG8","PG9","PG10","PG11","PG12","PG13","PG14","PG15", "PH0","PH1","PH2","PH3","PH4","PH5","PH6","PH7","PH8","PH9","PH10","PH11","PH12","PH13","PH14","PH15", "PI0","PI1","PI2","PI3","PI4","PI5","PI6","PI7","PI8","PI9","PI10","PI11","PI12","PI13","PI14","PI15", "MC33972_1", "MC33972_2", "MC33972_3", "MC33972_4", "MC33972_5", "MC33972_6", "MC33972_7", "MC33972_8", "MC33972_9", "MC33972_10", "MC33972_11", "MC33972_12", "MC33972_13", "MC33972_14", "MC33972_15", "MC33972_16", "MC33972_17", "MC33972_18", "MC33972_19", "MC33972_20", "MC33972_21", "MC33972_22", "TLE8888_1", "TLE8888_2", "TLE8888_3", "TLE8888_4", "TLE8888_5", "TLE8888_6", "TLE8888_7", "TLE8888_8", "TLE8888_9", "TLE8888_10", "TLE8888_11", "TLE8888_12", "TLE8888_13", "TLE8888_14", "TLE8888_15", "TLE8888_16", "TLE8888_17", "TLE8888_18", "TLE8888_19", "TLE8888_20", "TLE8888_21", "TLE8888_22", "TLE8888_23", "TLE8888_24", "TLE8888_25", "TLE8888_26", "TLE8888_27", "TLE8888_28", "INVALID", "INVALID", "INVALID", "TLE6240_1", "TLE6240_2", "TLE6240_3", "TLE6240_4", "TLE6240_5", "TLE6240_6", "TLE6240_7", "TLE6240_8", "TLE6240_9", "TLE6240_10", "TLE6240_11", "TLE6240_12", "TLE6240_13", "TLE6240_14", "TLE6240_15", "TLE6240_16", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID"
custom output_pin_e 1 bits, U08, @OFFSET@, [0:7], @@output_pin_e_enum@@
#define pin_output_mode_e_enum "default", "default inverted", "open collector", "open collector inverted"