TSで起動不能になってしまうのを修正

git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-05-23%20-%20ctr.7z%20+%20svn_v1.068.zip/ctr/svn/ctr_mcu@184 013db118-44a6-b54f-8bf7-843cb86687b1
This commit is contained in:
N2232 2010-05-31 04:23:58 +00:00
parent df8bf313d6
commit 22e433f0dc

View File

@ -947,45 +947,52 @@ void BT_get_left(){
static u8 bt_voltage_low_count; // 電圧でシャットダウンさせる static u8 bt_voltage_low_count; // 電圧でシャットダウンさせる
u8 temp[2]; u8 temp[2];
// 電池電圧で強制断が優先される if( system_status.model == MODEL_TS_BOARD )
temp[0] = iic_mcu_read_a_byte( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_VCELL );
if( iic_mcu_bus_status == ERR_SUCCESS )
{ {
vreg_ctr[ VREG_C_BT_VOLTAGE ] = temp[0]; vreg_ctr[ VREG_C_BT_REMAIN ] = 99;
if( vreg_ctr[ VREG_C_BT_VOLTAGE ] > ( 3100 / 16 / 1.25 ) )
{
bt_voltage_low_count = 0;
iic_mcu_read( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_SOC, 2, temp );
vreg_ctr[ VREG_C_BT_REMAIN ] = temp[0];
vreg_ctr[ VREG_C_BT_REMAIN_FINE ] = temp[1];
}
else
{
bt_voltage_low_count += 1;
if( bt_voltage_low_count >= 4* 10 )
{
vreg_ctr[ VREG_C_BT_REMAIN ] = 0;
}
if( bt_voltage_low_count == 4* 10 ) // およそ10sec(そんなに頻繁には更新されないみたい)
{
set_irq( VREG_C_IRQ1, REG_BIT_BT_REMAIN );
}
else if( bt_voltage_low_count == 12 + 4* ( 10 + 6 ))
{ // …時間切れ。強制的に切る
system_status.pwr_state = OFF_TRIG;
renge_task_interval_run_force = 1;
}
}
} }
else else
{ {
// バッテリ残量が取れなくなった! // 電池電圧で強制断が優先される
vreg_ctr[ VREG_C_STATUS_1 ] |= REG_BIT_GASGAUGE_ERR; temp[0] = iic_mcu_read_a_byte( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_VCELL );
if( vreg_ctr[ VREG_C_BT_REMAIN ] != 0 ) if( iic_mcu_bus_status == ERR_SUCCESS )
{ {
vreg_ctr[ VREG_C_BT_REMAIN ] = 0; vreg_ctr[ VREG_C_BT_VOLTAGE ] = temp[0];
set_irq( VREG_C_IRQ1, REG_BIT_BT_REMAIN ); if( vreg_ctr[ VREG_C_BT_VOLTAGE ] > ( 3100 / 16 / 1.25 ) )
{
bt_voltage_low_count = 0;
iic_mcu_read( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_SOC, 2, temp );
vreg_ctr[ VREG_C_BT_REMAIN ] = temp[0];
vreg_ctr[ VREG_C_BT_REMAIN_FINE ] = temp[1];
}
else
{
bt_voltage_low_count += 1;
if( bt_voltage_low_count >= 4* 10 )
{
vreg_ctr[ VREG_C_BT_REMAIN ] = 0;
}
if( bt_voltage_low_count == 4* 10 ) // およそ10sec(そんなに頻繁には更新されないみたい)
{
set_irq( VREG_C_IRQ1, REG_BIT_BT_REMAIN );
}
else if( bt_voltage_low_count == 12 + 4* ( 10 + 6 ))
{ // …時間切れ。強制的に切る
system_status.pwr_state = OFF_TRIG;
renge_task_interval_run_force = 1;
}
}
}
else
{
// バッテリ残量が取れなくなった!
vreg_ctr[ VREG_C_STATUS_1 ] |= REG_BIT_GASGAUGE_ERR;
if( vreg_ctr[ VREG_C_BT_REMAIN ] != 0 )
{
vreg_ctr[ VREG_C_BT_REMAIN ] = 0;
set_irq( VREG_C_IRQ1, REG_BIT_BT_REMAIN );
}
} }
} }