mirror of
https://github.com/rvtr/ctr_mcu.git
synced 2025-10-31 13:51:10 -04:00
電源ボタンの挙動変更。
160msで押した割り込み、3secで長押し割り込み&強制offカウントダウン開始。デフォルト12sec後に(手を離してても)電源off git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-05-23%20-%20ctr.7z%20+%20svn_v1.068.zip/ctr/svn/ctr_mcu@285 013db118-44a6-b54f-8bf7-843cb86687b1
This commit is contained in:
parent
c0e58f917a
commit
1ce25978fc
@ -602,7 +602,7 @@ void BT_get_left(){
|
||||
vreg_ctr[ VREG_C_STATUS_1 ] |= REG_BIT_GASGAUGE_ERR;
|
||||
bt_chg_ready = false;
|
||||
vreg_ctr[ VREG_C_BT_REMAIN ] = 0;
|
||||
system_status.force_off = 1; // 強制電源断フラグ(カウンタ)
|
||||
system_status.force_off = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -658,7 +658,7 @@ void BT_get_left(){
|
||||
}
|
||||
else
|
||||
{
|
||||
system_status.force_off = 1; // 強制電源断フラグ(カウンタ)
|
||||
system_status.force_off = true;
|
||||
hysteresis = 500;
|
||||
}
|
||||
}
|
||||
|
||||
19
trunk/sw.c
19
trunk/sw.c
@ -31,6 +31,8 @@ u8 SW_home_count, SW_wifi_count, SW_home_count_rel;
|
||||
|
||||
bit SW_HOME_n;
|
||||
|
||||
u16 off_timeout_timer;
|
||||
|
||||
//=========================================================
|
||||
// 押した時間を数える。押しっぱなしでも0に戻らない
|
||||
// maskが非0の時は、一度離すまで無視する
|
||||
@ -80,6 +82,7 @@ void tsk_sw( )
|
||||
if( system_status.pwr_state == ON_TRIG )
|
||||
{
|
||||
SW_pow_count = 0; // カウントクリア
|
||||
off_timeout_timer = 0;
|
||||
}
|
||||
|
||||
if( --task_interval != 0 )
|
||||
@ -91,6 +94,7 @@ void tsk_sw( )
|
||||
task_interval = (u8)( INTERVAL_TSK_SW / SYS_INTERVAL_TICK );
|
||||
}
|
||||
|
||||
// 8ms 毎にきます
|
||||
switch ( system_status.pwr_state )
|
||||
{
|
||||
case ( ON ):
|
||||
@ -98,18 +102,29 @@ void tsk_sw( )
|
||||
case ( OFF ):
|
||||
case ( ON_CHECK ):
|
||||
// 電源スイッチの監視 //
|
||||
if( SW_pow_count == (u8)( 320/ INTERVAL_TSK_SW ) )
|
||||
if( SW_pow_count == ( TIME_PWSW_CLICK ) )
|
||||
{
|
||||
set_irq( VREG_C_IRQ0, REG_BIT_SW_POW_CLICK );
|
||||
}
|
||||
else if( SW_pow_count == ( HOLD_THREASHOLD ) )
|
||||
{
|
||||
set_irq( VREG_C_IRQ0, REG_BIT_SW_POW_HOLD );
|
||||
off_timeout_timer = HOLD_THREASHOLD + vreg_ctr[ VREG_C_OFF_DELAY ] * 16;
|
||||
}
|
||||
else if( SW_pow_count > ( HOLD_THREASHOLD + vreg_ctr[ VREG_C_OFF_DELAY ] *16 )) // ‚¨‚æ‚» 100/SYSTEM_TICK
|
||||
/*
|
||||
else if( SW_pow_count > ( HOLD_THREASHOLD + vreg_ctr[ VREG_C_OFF_DELAY ] )) // およそ 100/SYSTEM_TICK
|
||||
{
|
||||
system_status.force_off = 1;
|
||||
}
|
||||
*/
|
||||
if( off_timeout_timer != 0 )
|
||||
{
|
||||
off_timeout_timer -= 1;
|
||||
if( off_timeout_timer == 1 )
|
||||
{
|
||||
system_status.force_off = true;
|
||||
}
|
||||
}
|
||||
|
||||
count_sw_n( SW_POW_n, SW_pow_count, SW_pow_mask ); // ボタン押し時間のカウント
|
||||
|
||||
|
||||
@ -9,7 +9,8 @@ extern bit SW_pow_mask;
|
||||
#define INTERVAL_TSK_SW 8
|
||||
#define CLICK_THRESHOLD 2
|
||||
|
||||
#define HOLD_THREASHOLD (u8)( 2000 /INTERVAL_TSK_SW )
|
||||
#define FORCEOFF_THREASHOLD 32
|
||||
#define HOLD_THREASHOLD (u16)( 3000 /INTERVAL_TSK_SW )
|
||||
#define TIME_PWSW_CLICK (u8)( 160 /INTERVAL_TSK_SW )
|
||||
#define FORCEOFF_THREASHOLD (u8)( 12000 /INTERVAL_TSK_SW /16 )
|
||||
|
||||
#endif
|
||||
|
||||
@ -52,6 +52,9 @@ bit twl_ver_read;
|
||||
bit going_to_sleep;
|
||||
|
||||
|
||||
void update_LED_tune();
|
||||
void check_twl_vol_irq();
|
||||
|
||||
|
||||
/* ========================================================
|
||||
ステータスレジスタなど
|
||||
@ -92,69 +95,76 @@ void tsk_misc( )
|
||||
set_irq( VREG_C_IRQ2, REG_BIT_TWL_VER_READ );
|
||||
}
|
||||
|
||||
/* ========================================================
|
||||
TWLがVolを書くのと、スライダの操作がバッティングすると
|
||||
不整合が起こる事があり、それを防ぐ
|
||||
TWLでは8通常時、押しボタンは8段階だった。それに合わせて割り込みを入れたい
|
||||
======================================================== */
|
||||
{
|
||||
static u8 mabiki;
|
||||
|
||||
if( mabiki != 0 )
|
||||
{
|
||||
mabiki--;
|
||||
}
|
||||
else
|
||||
{
|
||||
mabiki = 6;
|
||||
|
||||
if( is_TWL )
|
||||
{
|
||||
if( vol_level_twl != vol_level_twl_readed )
|
||||
{
|
||||
set_irq( VREG_C_IRQ2, REG_BIT_SLIDE_VOL_ACROSS_TWL_BOUNDARY );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// TUNE_LED ///////////////////////////////////
|
||||
{
|
||||
if( system_status.pwr_state != ON )
|
||||
{
|
||||
LED_duty_3d = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
if( vreg_ctr[VREG_C_LED_TUNE] == LED_TUNE_ILM_OFF )
|
||||
{
|
||||
if( LED_duty_3d != 0 )
|
||||
{
|
||||
LED_duty_3d -= 1;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if( LED_duty_3d != vreg_ctr[VREG_C_LED_BRIGHT] )
|
||||
{
|
||||
if( LED_duty_3d < vreg_ctr[VREG_C_LED_BRIGHT] )
|
||||
{
|
||||
LED_duty_3d += 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
LED_duty_3d -= 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
check_twl_vol_irq(); // TWL の音量変化割り込みチェック
|
||||
}
|
||||
|
||||
update_LED_tune(); // 3D ランプ更新
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* ========================================================
|
||||
TWLがVolを書くのと、スライダの操作がバッティングすると
|
||||
不整合が起こる事があり、それを防ぐ
|
||||
TWLでは8通常時、押しボタンは8段階だった。それに合わせて割り込みを入れたい
|
||||
======================================================== */
|
||||
void check_twl_vol_irq()
|
||||
{
|
||||
static u8 mabiki;
|
||||
|
||||
if( mabiki != 0 )
|
||||
{
|
||||
mabiki--;
|
||||
}
|
||||
else
|
||||
{
|
||||
mabiki = 6;
|
||||
|
||||
if( is_TWL )
|
||||
{
|
||||
if( vol_level_twl != vol_level_twl_readed )
|
||||
{
|
||||
set_irq( VREG_C_IRQ2, REG_BIT_SLIDE_VOL_ACROSS_TWL_BOUNDARY );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
// TUNE_LED ///////////////////////////////////
|
||||
void update_LED_tune()
|
||||
{
|
||||
if( system_status.pwr_state != ON )
|
||||
{
|
||||
LED_duty_3d = 0;
|
||||
return;
|
||||
// おしまい //
|
||||
}
|
||||
|
||||
if( vreg_ctr[VREG_C_LED_TUNE] == LED_TUNE_ILM_OFF )
|
||||
{
|
||||
if( LED_duty_3d != 0 )
|
||||
{
|
||||
LED_duty_3d -= 1;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if( LED_duty_3d != vreg_ctr[VREG_C_LED_BRIGHT] )
|
||||
{
|
||||
if( LED_duty_3d < vreg_ctr[VREG_C_LED_BRIGHT] )
|
||||
{
|
||||
LED_duty_3d += 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
LED_duty_3d -= 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* ========================================================
|
||||
|
||||
@ -294,7 +294,7 @@ void tsk_sys( )
|
||||
{
|
||||
return;
|
||||
}
|
||||
system_status.force_off = 0;
|
||||
system_status.force_off = false;
|
||||
|
||||
vreg_ctr[ VREG_C_ACC_CONFIG ] = 0x00;
|
||||
tski_acc_hosu_set();
|
||||
@ -533,7 +533,6 @@ void send_getup_to_soc()
|
||||
#ifdef _MODEL_CTR_
|
||||
SLP_ACK = 1;
|
||||
nop8();
|
||||
// nop8();
|
||||
SLP_ACK = 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user