From 22e433f0dc7191f86cce496016bf9c95efda0364 Mon Sep 17 00:00:00 2001 From: N2232 Date: Mon, 31 May 2010 04:23:58 +0000 Subject: [PATCH] =?UTF-8?q?TS=E3=81=A7=E8=B5=B7=E5=8B=95=E4=B8=8D=E8=83=BD?= =?UTF-8?q?=E3=81=AB=E3=81=AA=E3=81=A3=E3=81=A6=E3=81=97=E3=81=BE=E3=81=86?= =?UTF-8?q?=E3=81=AE=E3=82=92=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- trunk/pm.c | 75 +++++++++++++++++++++++++++++------------------------- 1 file changed, 41 insertions(+), 34 deletions(-) diff --git a/trunk/pm.c b/trunk/pm.c index 031539c..a8369c2 100644 --- a/trunk/pm.c +++ b/trunk/pm.c @@ -947,45 +947,52 @@ void BT_get_left(){ static u8 bt_voltage_low_count; // 電圧でシャットダウンさせる u8 temp[2]; - // 電池電圧で強制断が優先される - temp[0] = iic_mcu_read_a_byte( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_VCELL ); - if( iic_mcu_bus_status == ERR_SUCCESS ) + if( system_status.model == MODEL_TS_BOARD ) { - vreg_ctr[ VREG_C_BT_VOLTAGE ] = temp[0]; - 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; - } - } + vreg_ctr[ VREG_C_BT_REMAIN ] = 99; } else { - // バッテリ残量が取れなくなった! - vreg_ctr[ VREG_C_STATUS_1 ] |= REG_BIT_GASGAUGE_ERR; - if( vreg_ctr[ VREG_C_BT_REMAIN ] != 0 ) + // 電池電圧で強制断が優先される + 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_REMAIN ] = 0; - set_irq( VREG_C_IRQ1, REG_BIT_BT_REMAIN ); + vreg_ctr[ VREG_C_BT_VOLTAGE ] = temp[0]; + 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 ); + } } }