|
|
|
|
@@ -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_max_out_voltage = 0x000A;
|
|
|
|
|
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_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_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 function declarations ****/
|
|
|
|
|
/**** Public function definitions ****/
|
|
|
|
|
logic::CfgMemory::CfgMemory(void)
|
|
|
|
|
{
|
|
|
|
|
this->cfg_good = 0;
|
|
|
|
|
|
|
|
|
|
this->mem_btn_force = 0;
|
|
|
|
|
this->mem_bmode = 0;
|
|
|
|
|
this->mem_pot_mode = 0;
|
|
|
|
|
@@ -58,6 +57,7 @@ logic::CfgMemory::~CfgMemory(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_bmode = mcu::eeprom_read8b(addr_bmode);
|
|
|
|
|
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);
|
|
|
|
|
|
|
|
|
|
// 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;
|
|
|
|
|
mcu::eeprom_write8b(addr_btn_force, this->mem_btn_force);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
if(this->mem_bmode > 2)
|
|
|
|
|
{
|
|
|
|
|
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;
|
|
|
|
|
mcu::eeprom_write8b(addr_pot_mode, this->mem_pot_mode);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
if(this->mem_dsp_brigth > 100)
|
|
|
|
|
{
|
|
|
|
|
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;
|
|
|
|
|
mcu::eeprom_write8b(addr_dsp_dimm, this->mem_dsp_dimm);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
if(this->mem_brake_force > 100)
|
|
|
|
|
{
|
|
|
|
|
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;
|
|
|
|
|
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;
|
|
|
|
|
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;
|
|
|
|
|
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;
|
|
|
|
|
mcu::eeprom_write16b(addr_min_out_voltage, this->mem_min_out_voltage);
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
this->restore();
|
|
|
|
|
}
|
|
|
|
|
@@ -218,4 +172,22 @@ void logic::CfgMemory::restore(void)
|
|
|
|
|
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 ****/
|
|
|
|
|
|