ctr_mcu/trunk/task_status.c
n2232 4b6d574262 1.08
・アダプタを挿した際に強制的にしばらく充電LEDを点ける
  パラメータ変更(調整中)
  本体電源OFF中の挙動にバグが有った。修正済
・負論理のビットの命名のせいではまったので修正

・電源LED赤が点灯しないと言うバグ(評価ルームより)
  解消
  Ver1.06で不具合が発症している本体を1.07にアップデートすると修正が反映されない という不具合(に違いない。 そう考えるとつじつまが合う 再現がほぼ不可能)
  初期化コードを修正。
  todo:mcuプロセスによるアップデートがちゃんと動くのを確認する
・充電中はTWLに通知する電池残量を底上げする
  TWLのNANDファームで不都合があるため とりあえず動作確認した
・本体電源off中のポート設定が不適切なのがあった。



git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-05-23%20-%20ctr.7z%20+%20svn_v1.068.zip/ctr/svn/ctr_mcu@238 013db118-44a6-b54f-8bf7-843cb86687b1
2010-09-28 02:24:10 +00:00

94 lines
2.3 KiB
C

#pragma SFR
#pragma NOP
#pragma HALT
#pragma STOP
#include "incs_loader.h"
#include "renge\renge.h"
#include "pm.h"
#include "accero.h"
#include "adc.h"
#include "i2c_mcu.h"
// ========================================================
#define INTERVAL_TSK_STATUS 4
extern bit BT_CHG_STAT_Change;
/* ========================================================
ステータスレジスタなど
======================================================== */
void tsk_status( )
{
static u8 interval_task_status = 0;
static u8 state_old; // ステータス変化検出→割り込み の為
u8 diff;
if( interval_task_status != 0 )
{
interval_task_status -= 1;
return;
}
else
{
interval_task_status = (u8)( INTERVAL_TSK_STATUS / SYS_INTERVAL_TICK );
}
// 蓋開けチェック
set_bit( SHELL_OPEN, vreg_ctr[VREG_C_STATUS], REG_BIT_ST_SHELL_OPEN );
// ステータスレジスタ関係 → 割り込み //
// pm.c で、その場で行います。
// REG_BIT_LCD_ON/OFF
// REG_BIT_BL_ON/OFF
// REG_BIT_BT_DC_CONNECT/DISC
diff = (u8)( vreg_ctr[VREG_C_STATUS] ^ state_old );
if( diff != 0 )
{
state_old = vreg_ctr[VREG_C_STATUS];
if( system_status.pwr_state == ON )
{
if( diff & REG_BIT_BATT_CHARGE )
{
BT_CHG_STAT_Change = true;
// 充電状態に以下略
if( vreg_ctr[VREG_C_STATUS] & REG_BIT_BATT_CHARGE )
{
set_irq( VREG_C_IRQ1, REG_BIT_BT_CHG_START );
}
else
{
set_irq( VREG_C_IRQ1, REG_BIT_BT_CHG_STOP );
}
}
}
if(( system_status.pwr_state == ON ) ||
( system_status.pwr_state == SLEEP )
)
{
if( diff & REG_BIT_ST_SHELL_OPEN )
{
// 蓋の開け閉め
if( vreg_ctr[VREG_C_STATUS] & REG_BIT_ST_SHELL_OPEN )
{
set_irq( VREG_C_IRQ0, REG_BIT_SHELL_OPEN );
}
else
{
set_irq( VREG_C_IRQ0, REG_BIT_SHELL_CLOSE );
}
}
}
}
return;
}