Lots of refactoring

This commit is contained in:
2025-06-11 10:55:00 -05:00
parent a437bcf8b5
commit aaa7f0dc29
35 changed files with 1165 additions and 809 deletions

View File

@@ -10,23 +10,23 @@
#include "adc.h"
#include "main.h"
#include "timer.h"
#include "lcd.h"
#include "display.h"
#include "safety_key.h"
#include "amps.h"
#include "ports.h"
#include "lcd.h"
#include "display.h"
#include "safety_key.h"
#include "amps.h"
#include "ports.h"
#include "hwFixes.h"
#include "System/system.h"
uint8_t Bat_Type;
extern uint8_t Task, Error;
extern ADC_t adc;
extern float32_t Max_Power_Limit;
extern uint16_t Low_Bat_timer;
extern uint16_t battery;
//uint16_t Bat_Level[] = {100,200,300,400,500,125,225,325,425,525}; // Battery life levels 5 Alkaline and 5 Lithium.
extern HARDWARE_FIX_t hwf;
extern SYSTEM_DATA_t sys;
bool Compare_With_Limit(float32_t V1 ,float32_t V2,float32_t limit)
{
@@ -55,35 +55,40 @@ bool result;
void battery_checkId(void)
{
}
void Check_Bat_Id(void)
{
float32_t Battery;
float32_t Bat_Mid_Point;
if(adc.V_BID > LITHIUM_MID_POINT) // BAT_ID = 0V for lithium, mid point for Alkaline
if(sys.adc.V_BID > LITHIUM_MID_POINT) // BAT_ID = 0V for lithium, mid point for Alkaline
{
if(Compare_With_Limit(adc.V_BID,adc.V_BAT,5.0))
if(Compare_With_Limit(sys.adc.V_BID,sys.adc.V_BAT,5.0))
{
Bat_Type = EXT_DC;
Max_Power_Limit = 10.0; // Limit max power to 5W.
sys.maxPowerLimit = POWER_LIMIT_EXT_DC; // Limit max power to 5W.
}
else
{
Bat_Type = ALKALINE;
Max_Power_Limit = 5.0; // Limit max power to 5W.
sys.maxPowerLimit = POWER_LIMIT_ALKALINE; // Limit max power to 5W.
Battery = adc.V_BAT; // Calculate mid-point for alkaline
Battery = sys.adc.V_BAT; // Calculate mid-point for alkaline
Bat_Mid_Point = Battery / 2;
if ((adc.V_BID > (Bat_Mid_Point * 1.1)) || (adc.V_BID < (Bat_Mid_Point * 0.9)) ) // Check if not at mid-point
if ((sys.adc.V_BID > (Bat_Mid_Point * 1.1)) || (sys.adc.V_BID < (Bat_Mid_Point * 0.9)) ) // Check if not at mid-point
Bat_Type = BAT_ERROR; // indicate battery insertion error
}
}
else
{
Bat_Type = LITHIUM;
Max_Power_Limit = 10.0; // Limit max power to 5W. 1.7 = 10.0 1.7X = 25.0
sys.maxPowerLimit = POWER_LIMIT_LITHIUM; // Limit max power to 5W. 1.7 = 10.0 1.7X = 25.0
}
if(Bat_Type == BAT_ERROR)
@@ -122,17 +127,17 @@ void Chk_Bat_Level(void)
void Test_Bat_Level(float32_t Bat_Cut_Off)
{
if(adc.V_BAT < Bat_Cut_Off && Task != LOW_BATTERY_TASK)
if(sys.adc.V_BAT < Bat_Cut_Off && Task != LOW_BATTERY_TASK)
{
if(Task != PWR_OFF_TASK)
{
All_Amps_Off();
Disable_BC(); //Disable BC
Select_Estop(ON);
Select_Estop(ISOLATED);
Delay_Ticks(25); //wait for battery voltage to rise
// if(adc.V_BAT <= Bat_Cut_Off)
// if(sys.adc.V_BAT <= Bat_Cut_Off)
// {
Task = LOW_BATTERY_TASK;
Low_Bat_timer = DELAY_2S;
@@ -151,20 +156,20 @@ float32_t Adjust_Battery_For_Load() // adjust to true battery voltage due to bat
//drop and current demand
{ // assumed frequency and efficiency may need table for frequency adjust
float32_t battery; //assumes taps are correct
battery = adc.V_BAT;
battery = sys.adc.V_BAT;
if(Bat_Type == LITHIUM)
{
if(adc.I_OUT_SlowFilt < DEMAND1)
if(sys.adc.I_OUT_SlowFilt < DEMAND1)
battery = battery + 1.1;
else if(adc.I_OUT_SlowFilt < DEMAND2)
else if(sys.adc.I_OUT_SlowFilt < DEMAND2)
battery = battery + 1.2;
else if(adc.I_OUT_SlowFilt < DEMAND3)
else if(sys.adc.I_OUT_SlowFilt < DEMAND3)
battery = battery + 1.3;
else if(adc.I_OUT_SlowFilt < DEMAND4)
else if(sys.adc.I_OUT_SlowFilt < DEMAND4)
battery = battery + 1.4;
else if(adc.I_OUT_SlowFilt < DEMAND5)
else if(sys.adc.I_OUT_SlowFilt < DEMAND5)
battery = battery + 1.5;
else if(adc.I_OUT_SlowFilt < DEMAND6)
else if(sys.adc.I_OUT_SlowFilt < DEMAND6)
battery = battery + 1.6;
else
battery = battery + 2;