From aa5f88979b1333dd4a807e904afe1eeca9bdf266 Mon Sep 17 00:00:00 2001 From: LucianoDev Date: Thu, 23 Apr 2026 15:38:02 +0200 Subject: [PATCH] ford byte status fix for no dtcs, fbkw fixes and 004002 phi1 --- Core/Advance_Control/FBKW.c | 19 +++++++++++++++---- Core/CAN_Libs/can_db.c | 2 +- Core/Immobilisers/ford_immo.c | 2 +- Core/Inc/id.h | 4 ++-- Core/Inc/id_004002.h | 2 +- Core/Src/main.c | 6 +++--- hpsg5-controller_v2-stm32g4.ioc | 6 +++--- 7 files changed, 26 insertions(+), 15 deletions(-) diff --git a/Core/Advance_Control/FBKW.c b/Core/Advance_Control/FBKW.c index 4a06724..d7c03fc 100644 --- a/Core/Advance_Control/FBKW.c +++ b/Core/Advance_Control/FBKW.c @@ -37,7 +37,16 @@ void UpdateFBKW_MODULATION(TIM_HandleTypeDef* pwmHandle, uint32_t pwmChannel, fl /*Assign the new dutyCycle count to the capture compare register.*/ __HAL_TIM_SET_COMPARE(pwmHandle, pwmChannel, (uint32_t)(roundf(newRegVal))); } +void UpdatePWM(TIM_HandleTypeDef* pwmHandle, uint32_t pwmChannel, uint16_t period_on, uint16_t period){ + if(period_on > period) + { + period_on = period; + } + pwmHandle->Instance->ARR = period; + pwmHandle->Instance->CCR2 = period_on; + +} /* ======================================================================= * VP44 reverse-engineered pipeline bridge * ----------------------------------------------------------------------- @@ -151,7 +160,7 @@ void FBKW_service(void) { /* pwm_duty is a 12-bit (0..4095) command. Convert to percentage for * the existing UpdateFBKW_MODULATION helper, which expects 0..100. */ - float duty_pct = ((float)fbkw_rt.pwm_duty) * (100.0f / 4095.0f); + /*float duty_pct = ((float)fbkw_rt.pwm_duty) * (100.0f / 4095.0f); duty_pct = duty_pct < FBKW_PWM_MIN ? FBKW_PWM_MIN : duty_pct; duty_pct = duty_pct > FBKW_PWM_MAX ? FBKW_PWM_MAX : duty_pct; @@ -159,9 +168,11 @@ void FBKW_service(void) { FBKW_DC = (float)forceDC; } else { FBKW_DC = duty_pct; - } - - UpdateFBKW_MODULATION(&htim4, TIM_CHANNEL_2, FBKW_DC); + }*/ + UpdatePWM(&htim4, TIM_CHANNEL_2, fbkw_rt.pwm_on_time, fbkw_rt.pwm_period); + FBKW_DC = ((float)fbkw_rt.pwm_duty) * (100.0f / 4095.0f); + FBKW_DEMAND = fbkw_rt.target * (3.0f / 256.0f); + //UpdateFBKW_MODULATION(&htim4, TIM_CHANNEL_2, FBKW_DC); } const pwm_runtime_t *FBKW_pipeline_runtime(void) { diff --git a/Core/CAN_Libs/can_db.c b/Core/CAN_Libs/can_db.c index 6097653..1d40625 100644 --- a/Core/CAN_Libs/can_db.c +++ b/Core/CAN_Libs/can_db.c @@ -105,7 +105,7 @@ uint8_t QTY_valve_status = 1; //---* tein, --*- feedback, -*-- rpm, static CanSymbolDef SYM_ID_EMPF1[] = { #if defined(T06301) { "TEIN_STATUS", 8, 1, CAN_ENDIAN_INTEL, CAN_SYM_UX, 0,0, &T_ein_status, NULL, CAN_STORE_U8, INVERTED}, - { "QTY_VALVE_STATUS", 9, 1, CAN_ENDIAN_INTEL, CAN_SYM_UX, 0,0, &QTY_valve_status, NULL, CAN_STORE_U8}, + { "QTY_VALVE_STATUS", 9, 1, CAN_ENDIAN_INTEL, CAN_SYM_UX, 0,0, &QTY_valve_status, NULL, CAN_STORE_U8, INVERTED}, { "ANGLESENSOR_STATUS", 10, 1, CAN_ENDIAN_INTEL, CAN_SYM_UX, 0,0, &hasCapturedTeeth, NULL, CAN_STORE_U8, INVERTED}, { "CIL_COUNT", 0, 3, CAN_ENDIAN_INTEL, CAN_SYM_UX, 0,0, &cilCount, NULL, CAN_STORE_U8}, diff --git a/Core/Immobilisers/ford_immo.c b/Core/Immobilisers/ford_immo.c index 6ec00ad..6758777 100644 --- a/Core/Immobilisers/ford_immo.c +++ b/Core/Immobilisers/ford_immo.c @@ -126,7 +126,7 @@ void Fieona_SEND3_Handler(const uint8_t in_data[8]){ FIEONA_TRANS2 = 0x0001; FIEONA_TRANS2 = 0; eps_fieona_override = 1; - }else{ + }else if(!isCar){ //si no es el coche no enviar Timeout_StopByIndex(18); } Timeout_ResetByIndex(1, TIM16->CNT); diff --git a/Core/Inc/id.h b/Core/Inc/id.h index db3dd2f..72c29b2 100644 --- a/Core/Inc/id.h +++ b/Core/Inc/id.h @@ -32,7 +32,7 @@ #define CYLINDERS 4 /* TIMING COMPENSATIONS */ -#define PHI1 24.914 +#define PHI1 25.4 #define TEIN_NOMINAL 0 #define TEIN_FAULT 950.5 @@ -51,7 +51,7 @@ #define FBKW_DEM_MIN 0 -#define FBKW_FEEDBACK_ZERO 8.135//cambia de modulo a modulo +#define FBKW_FEEDBACK_ZERO 7.617 #define FBKW_FEEDBACK_MIN -3.188 #define FBKW_FEEDBACK_MAX 17.813 #define FBKW_FEEDBACK_IC_DT 27 diff --git a/Core/Inc/id_004002.h b/Core/Inc/id_004002.h index 39c1a29..72c29b2 100644 --- a/Core/Inc/id_004002.h +++ b/Core/Inc/id_004002.h @@ -32,7 +32,7 @@ #define CYLINDERS 4 /* TIMING COMPENSATIONS */ -#define PHI1 24.914 +#define PHI1 25.4 #define TEIN_NOMINAL 0 #define TEIN_FAULT 950.5 diff --git a/Core/Src/main.c b/Core/Src/main.c index fa28296..fa5f910 100644 --- a/Core/Src/main.c +++ b/Core/Src/main.c @@ -1074,9 +1074,9 @@ static void MX_TIM4_Init(void) /* USER CODE END TIM4_Init 1 */ htim4.Instance = TIM4; - htim4.Init.Prescaler = 160-1; + htim4.Init.Prescaler = 80-1; htim4.Init.CounterMode = TIM_COUNTERMODE_UP; - htim4.Init.Period = 20000; + htim4.Init.Period = 29851; htim4.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; htim4.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; if (HAL_TIM_Base_Init(&htim4) != HAL_OK) @@ -1133,7 +1133,7 @@ static void MX_TIM6_Init(void) htim6.Instance = TIM6; htim6.Init.Prescaler = 160-1; htim6.Init.CounterMode = TIM_COUNTERMODE_UP; - htim6.Init.Period = 9999; + htim6.Init.Period = 999; htim6.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; if (HAL_TIM_Base_Init(&htim6) != HAL_OK) { diff --git a/hpsg5-controller_v2-stm32g4.ioc b/hpsg5-controller_v2-stm32g4.ioc index a987440..ade6a39 100644 --- a/hpsg5-controller_v2-stm32g4.ioc +++ b/hpsg5-controller_v2-stm32g4.ioc @@ -369,11 +369,11 @@ TIM3.Prescaler=160-1 TIM3.TIM_MasterOutputTrigger=TIM_TRGO_UPDATE TIM4.Channel-PWM\ Generation2\ CH2=TIM_CHANNEL_2 TIM4.IPParameters=Channel-PWM Generation2 CH2,Prescaler,PeriodNoDither,PulseNoDither_2 -TIM4.PeriodNoDither=20000 -TIM4.Prescaler=160-1 +TIM4.PeriodNoDither=29851 +TIM4.Prescaler=80-1 TIM4.PulseNoDither_2=5000 TIM6.IPParameters=Prescaler,PeriodNoDither -TIM6.PeriodNoDither=10000-1 +TIM6.PeriodNoDither=1000-1 TIM6.Prescaler=160-1 TIM7.IPParameters=Prescaler,PeriodNoDither,TIM_MasterOutputTrigger TIM7.PeriodNoDither=9