feat-hal-2 #4

Merged
andis merged 35 commits from feat-hal-2 into develop 2024-07-31 16:15:36 +00:00
3 changed files with 44 additions and 69 deletions
Showing only changes of commit 3045b88413 - Show all commits

View File

@@ -16,6 +16,7 @@ static const uint16_t addr_max_hbrake_time = 0x0006;
static const uint16_t addr_lock_current = 0x0008; static const uint16_t addr_lock_current = 0x0008;
static const uint16_t addr_max_out_voltage = 0x000A; static const uint16_t addr_max_out_voltage = 0x000A;
static const uint16_t addr_min_out_voltage = 0x000C; static const uint16_t addr_min_out_voltage = 0x000C;
static const uint16_t addr_cfg_good = 0x000D;
static const uint8_t def_btn_force = 0; static const uint8_t def_btn_force = 0;
static const uint8_t def_pot_mode = 0; static const uint8_t def_pot_mode = 0;
@@ -28,15 +29,13 @@ static const uint16_t def_lock_current = 4500;
static const uint16_t def_max_out_voltage = 7000; static const uint16_t def_max_out_voltage = 7000;
static const uint16_t def_min_out_voltage = 200; static const uint16_t def_min_out_voltage = 200;
static const uint16_t lim_saved_lock_current = 6000;
static const uint16_t lim_saved_max_voltage = 8000;
static const uint16_t lim_saved_min_voltage = 1000;
/**** Private variables ****/ /**** Private variables ****/
/**** Private function declarations ****/ /**** Private function declarations ****/
/**** Public function definitions ****/ /**** Public function definitions ****/
logic::CfgMemory::CfgMemory(void) logic::CfgMemory::CfgMemory(void)
{ {
this->cfg_good = 0;
this->mem_btn_force = 0; this->mem_btn_force = 0;
this->mem_bmode = 0; this->mem_bmode = 0;
this->mem_pot_mode = 0; this->mem_pot_mode = 0;
@@ -58,6 +57,7 @@ logic::CfgMemory::~CfgMemory(void)
void logic::CfgMemory::init(void) void logic::CfgMemory::init(void)
{ {
uint8_t cfg_good_magic = mcu::eeprom_read8b(addr_cfg_good);
this->mem_btn_force = mcu::eeprom_read8b(addr_btn_force); this->mem_btn_force = mcu::eeprom_read8b(addr_btn_force);
this->mem_bmode = mcu::eeprom_read8b(addr_bmode); this->mem_bmode = mcu::eeprom_read8b(addr_bmode);
this->mem_pot_mode = mcu::eeprom_read8b(addr_pot_mode); this->mem_pot_mode = mcu::eeprom_read8b(addr_pot_mode);
@@ -70,68 +70,22 @@ void logic::CfgMemory::init(void)
this->mem_min_out_voltage = mcu::eeprom_read16b(addr_min_out_voltage); this->mem_min_out_voltage = mcu::eeprom_read16b(addr_min_out_voltage);
// Validate EEPROM data // Validate EEPROM data
if(this->mem_btn_force > 100) if(cfg_good_magic == 0x37) this->cfg_good = 1;
else this->cfg_good = 0;
if(this->cfg_good != 1)
{ {
this->mem_btn_force = def_btn_force; this->mem_btn_force = def_btn_force;
mcu::eeprom_write8b(addr_btn_force, this->mem_btn_force);
};
if(this->mem_bmode > 2)
{
this->mem_bmode = def_bmode; this->mem_bmode = def_bmode;
mcu::eeprom_write8b(addr_bmode, this->mem_bmode);
};
if(this->mem_pot_mode > 1)
{
this->mem_pot_mode = def_pot_mode; this->mem_pot_mode = def_pot_mode;
mcu::eeprom_write8b(addr_pot_mode, this->mem_pot_mode);
};
if(this->mem_dsp_brigth > 100)
{
this->mem_dsp_brigth = def_brigth; this->mem_dsp_brigth = def_brigth;
mcu::eeprom_write8b(addr_dsp_brigth, this->mem_dsp_brigth);
};
if(this->mem_dsp_dimm > 100)
{
this->mem_dsp_dimm = def_dimm; this->mem_dsp_dimm = def_dimm;
mcu::eeprom_write8b(addr_dsp_dimm, this->mem_dsp_dimm);
};
if(this->mem_brake_force > 100)
{
this->mem_brake_force = def_brake_force; this->mem_brake_force = def_brake_force;
mcu::eeprom_write8b(addr_brake_force, this->mem_brake_force);
};
/*
No wrong value
if(this->mem_max_hbrake_time > 1000)
{
this->mem_max_hbrake_time = def_max_hbrake_time; this->mem_max_hbrake_time = def_max_hbrake_time;
mcu::eeprom_write16b(addr_lock_current, this->mem_max_hbrake_time);
};
*/
if(this->mem_lock_current > lim_saved_lock_current)
{
this->mem_lock_current = def_lock_current; this->mem_lock_current = def_lock_current;
mcu::eeprom_write16b(addr_lock_current, this->mem_lock_current);
};
if(this->mem_max_out_voltage > lim_saved_max_voltage)
{
this->mem_max_out_voltage = def_max_out_voltage; this->mem_max_out_voltage = def_max_out_voltage;
mcu::eeprom_write16b(addr_max_out_voltage, this->mem_max_out_voltage);
};
if(this->mem_min_out_voltage > lim_saved_min_voltage)
{
this->mem_min_out_voltage = def_min_out_voltage; this->mem_min_out_voltage = def_min_out_voltage;
mcu::eeprom_write16b(addr_min_out_voltage, this->mem_min_out_voltage); }
};
this->restore(); this->restore();
} }
@@ -218,4 +172,22 @@ void logic::CfgMemory::restore(void)
this->min_out_voltage = this->mem_min_out_voltage; this->min_out_voltage = this->mem_min_out_voltage;
} }
uint8_t logic::CfgMemory::checksum(void)
{
uint32_t cs = 0;
cs += (uint32_t)this->mem_btn_force;
cs += (uint32_t)this->mem_bmode;
cs += (uint32_t)this->mem_pot_mode;
cs += (uint32_t)this->mem_dsp_brigth;
cs += (uint32_t)this->mem_dsp_dimm;
cs += (uint32_t)this->mem_brake_force;
cs += (uint32_t)this->mem_max_hbrake_time;
cs += (uint32_t)this->mem_lock_current;
cs += (uint32_t)this->mem_max_out_voltage;
cs += (uint32_t)this->mem_min_out_voltage;
return (uint8_t)cs;
}
/**** Private function definitions ****/ /**** Private function definitions ****/

View File

@@ -11,7 +11,7 @@ namespace logic {
class CfgMemory class CfgMemory
{ {
protected: protected:
uint8_t mem_btn_force; uint8_t mem_btn_force;
uint8_t mem_bmode; uint8_t mem_bmode;
uint8_t mem_pot_mode; uint8_t mem_pot_mode;
@@ -27,6 +27,7 @@ class CfgMemory
CfgMemory(void); CfgMemory(void);
~CfgMemory(void); ~CfgMemory(void);
uint8_t cfg_good;
uint8_t btn_force; uint8_t btn_force;
uint8_t bmode; uint8_t bmode;
uint8_t pot_mode; uint8_t pot_mode;
@@ -42,6 +43,7 @@ class CfgMemory
void save(void); void save(void);
void save_all(void); void save_all(void);
void restore(void); void restore(void);
uint8_t checksum(void);
}; };
/**** Public function declarations ****/ /**** Public function declarations ****/

View File

@@ -29,19 +29,20 @@ int main(void)
// Read saved config // Read saved config
cfg_mem.init(); cfg_mem.init();
#ifdef OVERRIDE_CONFIG if(cfg_mem.cfg_good !=1 )
cfg_mem.btn_force = 0; {
cfg_mem.bmode = 0; cfg_mem.btn_force = 0;
cfg_mem.pot_mode = 0; cfg_mem.bmode = 0;
cfg_mem.dsp_brigth = 100; cfg_mem.pot_mode = 0;
cfg_mem.dsp_dimm = 50; cfg_mem.dsp_brigth = 100;
cfg_mem.brake_force = 100; cfg_mem.dsp_dimm = 50;
cfg_mem.max_hbrake_time = 1000; cfg_mem.brake_force = 100;
cfg_mem.lock_current = 4200; cfg_mem.max_hbrake_time = 1000;
cfg_mem.max_out_voltage = 6500; cfg_mem.lock_current = 4200;
cfg_mem.min_out_voltage = 500; cfg_mem.max_out_voltage = 6500;
cfg_mem.save_all(); cfg_mem.min_out_voltage = 500;
#endif cfg_mem.save_all();
};
uint8_t user_force = 0; uint8_t user_force = 0;