mirror of
https://github.com/rvtr/ctr_mcu.git
synced 2025-06-20 01:25:32 -04:00
1.0x10
・nbd体験台対応(電池残量が常に100%) ・i2c_mcuの割り込み処理修正。 だから、中で関数呼んじゃだめなんだってば! ・スリープ中、カメラLEDを勝手に消す(TWLにあわせる) ・task_sys スリープに入るかチェックがあまりよくなかった 電源切れてるところから入れるあたり、処理がよくなかった。 きれいにしようと思ったが大改造になりそうだからやめた git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-05-23%20-%20ctr.7z%20+%20svn_v1.068.zip/ctr/svn/ctr_mcu@284 013db118-44a6-b54f-8bf7-843cb86687b1
This commit is contained in:
parent
30756b489d
commit
c0e58f917a
@ -111,8 +111,8 @@ task_status_immed tski_cbk_accero( )
|
|||||||
iic_mcu_read( IIC_SLA_ACCEL, ( ACC_REG_X | 0x80 ), 6, temp );
|
iic_mcu_read( IIC_SLA_ACCEL, ( ACC_REG_X | 0x80 ), 6, temp );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(( system_status.pwr_state != OFF )
|
if(( system_status.pwr_state != ON_CHECK )
|
||||||
&&( system_status.pwr_state != BT_CHARGE )
|
&&( system_status.pwr_state != OFF )
|
||||||
#ifndef _DBG_PEDO_AUTO_ENABLE_
|
#ifndef _DBG_PEDO_AUTO_ENABLE_
|
||||||
&&( ( vreg_ctr[VREG_C_ACC_CONFIG] & VREG_BITMASK_ACC_CONF_HOSU ) != 0 )
|
&&( ( vreg_ctr[VREG_C_ACC_CONFIG] & VREG_BITMASK_ACC_CONF_HOSU ) != 0 )
|
||||||
#endif
|
#endif
|
||||||
|
13
trunk/adc.c
13
trunk/adc.c
@ -217,7 +217,8 @@ task_status_immed tski_vol_update()
|
|||||||
|
|
||||||
// レジスタの更新 //
|
// レジスタの更新 //
|
||||||
vreg_ctr[ VREG_C_SND_VOL ] = sent_index;
|
vreg_ctr[ VREG_C_SND_VOL ] = sent_index;
|
||||||
// スケーリング
|
// スケーリング
|
||||||
|
#if 1
|
||||||
// if( sent_index == 1 )
|
// if( sent_index == 1 )
|
||||||
if( sent_index == 0 )
|
if( sent_index == 0 )
|
||||||
{
|
{
|
||||||
@ -231,6 +232,16 @@ task_status_immed tski_vol_update()
|
|||||||
{
|
{
|
||||||
vreg_twl[ REG_TWL_INT_ADRS_VOL ] = sent_index/2 ;
|
vreg_twl[ REG_TWL_INT_ADRS_VOL ] = sent_index/2 ;
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
if( sent_index == 1 )
|
||||||
|
{
|
||||||
|
vreg_twl[ REG_TWL_INT_ADRS_VOL ] = 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
vreg_twl[ REG_TWL_INT_ADRS_VOL ] = sent_index/2 ;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
// 8段階のレベル化。 割り込みを入れるのに必要
|
// 8段階のレベル化。 割り込みを入れるのに必要
|
||||||
{
|
{
|
||||||
|
@ -5,13 +5,13 @@
|
|||||||
enum pwr_state_
|
enum pwr_state_
|
||||||
{
|
{
|
||||||
OFF_TRIG = 0,
|
OFF_TRIG = 0,
|
||||||
OFF,
|
ON_CHECK,
|
||||||
ON_TRIG,
|
ON_TRIG,
|
||||||
ON,
|
ON,
|
||||||
// SLEEP_TRIG,
|
// SLEEP_TRIG,
|
||||||
SLEEP,
|
SLEEP,
|
||||||
// WAKE,
|
// WAKE,
|
||||||
BT_CHARGE,
|
OFF,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum poweron_reason_
|
enum poweron_reason_
|
||||||
@ -42,6 +42,7 @@ typedef struct _system_status_
|
|||||||
unsigned char force_off:1;
|
unsigned char force_off:1;
|
||||||
unsigned char captureBox:1; // キャプチャ箱 SDKには実機と返す
|
unsigned char captureBox:1; // キャプチャ箱 SDKには実機と返す
|
||||||
unsigned char taikendai:1;
|
unsigned char taikendai:1;
|
||||||
|
unsigned char taikendai_nbd:1;
|
||||||
enum model_ model;
|
enum model_ model;
|
||||||
}system_status_;
|
}system_status_;
|
||||||
|
|
||||||
|
@ -11,9 +11,11 @@
|
|||||||
//#define _PMIC_TEST_
|
//#define _PMIC_TEST_
|
||||||
//#define _ENABLE_WDT_TEST_
|
//#define _ENABLE_WDT_TEST_
|
||||||
//#define _FORCE_TAIKENDAI_
|
//#define _FORCE_TAIKENDAI_
|
||||||
|
//#define _FORCE_TAIKENDAI_NBD_
|
||||||
|
|
||||||
|
|
||||||
#define MCU_VER_MAJOR 0x01
|
#define MCU_VER_MAJOR 0x01
|
||||||
#define MCU_VER_MINOR 0x0F
|
#define MCU_VER_MINOR 0x10
|
||||||
|
|
||||||
|
|
||||||
#define _firm_format_v3_
|
#define _firm_format_v3_
|
||||||
|
@ -94,6 +94,7 @@ static err iic_mcu_wait_free()
|
|||||||
if( !iic_mcu_busy )
|
if( !iic_mcu_busy )
|
||||||
{
|
{
|
||||||
iic_mcu_busy = true;
|
iic_mcu_busy = true;
|
||||||
|
EI();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
EI();
|
EI();
|
||||||
@ -105,7 +106,6 @@ static err iic_mcu_wait_free()
|
|||||||
return( ERR_ERR );
|
return( ERR_ERR );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
EI();
|
|
||||||
return( ERR_SUCCESS );
|
return( ERR_SUCCESS );
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -374,33 +374,34 @@ err iic_mcu_write( u8 slave, u8 adrs, u8 len, void * src )
|
|||||||
======================================================== */
|
======================================================== */
|
||||||
__interrupt void int_dma1( )
|
__interrupt void int_dma1( )
|
||||||
{
|
{
|
||||||
u16 i = 0;
|
|
||||||
|
|
||||||
EI();
|
EI();
|
||||||
|
|
||||||
DMAMK1 = 1;
|
DMAMK1 = 1;
|
||||||
DEN1 = 0;
|
DEN1 = 0;
|
||||||
while( ( SSR02L & TSF0 ) != 0 )
|
while( ( SSR02L & TSF0 ) != 0 )
|
||||||
{
|
{
|
||||||
|
u16 i = 0;
|
||||||
if( ++i == 0 ) // タイムアウト?
|
if( ++i == 0 ) // タイムアウト?
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// iic_mcu_send_sp(); // ISR中で外の関数を呼ぶのは都合が悪いので展開
|
// iic_mcu_send_sp(); // ISR中で外の関数を呼ぶのは都合が悪い(汎用レジスタ待避が発生する)ので展開
|
||||||
{
|
{
|
||||||
ST0 = 0x0004;
|
ST0 = 0x0004;
|
||||||
SOE0 = 0; // 受信の時はもっと前に「も」設定してる。(NACK出力)
|
SOE0 = 0; // 受信の時はもっと前に「も」設定してる。(NACK出力)
|
||||||
SO0 = 0x0000 | TAUS_MASK; // SCL
|
SO0 = 0x0000 | TAUS_MASK; // SCL
|
||||||
nop8();
|
// nop8(); すら呼んじゃだめ
|
||||||
|
NOP(); NOP(); NOP(); NOP();
|
||||||
|
NOP(); NOP(); NOP(); NOP();
|
||||||
|
SO0 = 0x0400 | TAUS_MASK; // SCL
|
||||||
|
NOP(); NOP(); NOP(); NOP();
|
||||||
|
NOP(); NOP(); NOP(); NOP();
|
||||||
|
SO0 = 0x0404 | TAUS_MASK;
|
||||||
|
}
|
||||||
|
|
||||||
SO0 = 0x0400 | TAUS_MASK; // SCL
|
IICMK10 = 1;
|
||||||
nop8();
|
|
||||||
|
|
||||||
SO0 = 0x0404 | TAUS_MASK;
|
|
||||||
}
|
|
||||||
IICMK10 = 1;
|
|
||||||
iic_mcu_busy = false;
|
iic_mcu_busy = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -425,19 +426,20 @@ __interrupt void int_iic10( )
|
|||||||
|
|
||||||
// 最後のバイト送信完了
|
// 最後のバイト送信完了
|
||||||
IICMK10 = 1;
|
IICMK10 = 1;
|
||||||
// iic_mcu_send_sp(); // ISR中で外の関数を呼ぶのは都合が悪いので展開
|
// iic_mcu_send_sp(); // ISR中で外の関数を呼ぶのは都合が悪い(汎用レジスタ待避が発生する)ので展開
|
||||||
{
|
{
|
||||||
ST0 = 0x0004;
|
ST0 = 0x0004;
|
||||||
SOE0 = 0; // 受信の時はもっと前に「も」設定してる。(NACK出力)
|
SOE0 = 0; // 受信の時はもっと前に「も」設定してる。(NACK出力)
|
||||||
SO0 = 0x0000 | TAUS_MASK; // SCL
|
SO0 = 0x0000 | TAUS_MASK; // SCL
|
||||||
nop8();
|
NOP(); NOP(); NOP(); NOP();
|
||||||
|
NOP(); NOP(); NOP(); NOP();
|
||||||
|
SO0 = 0x0400 | TAUS_MASK; // SCL
|
||||||
|
NOP(); NOP(); NOP(); NOP();
|
||||||
|
NOP(); NOP(); NOP(); NOP();
|
||||||
|
SO0 = 0x0404 | TAUS_MASK;
|
||||||
|
}
|
||||||
|
|
||||||
SO0 = 0x0400 | TAUS_MASK; // SCL
|
iic_mcu_wo_dma = false;
|
||||||
nop8();
|
|
||||||
|
|
||||||
SO0 = 0x0404 | TAUS_MASK;
|
|
||||||
}
|
|
||||||
iic_mcu_wo_dma = false;
|
|
||||||
iic_mcu_busy = false;
|
iic_mcu_busy = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -40,28 +40,48 @@ void NOP(){};
|
|||||||
#define __far
|
#define __far
|
||||||
|
|
||||||
|
|
||||||
typedef struct
|
typedef struct hoge
|
||||||
{
|
{
|
||||||
unsigned 7 :1;
|
unsigned _7 :1;
|
||||||
unsigned 6 :1;
|
unsigned _6 :1;
|
||||||
unsigned 5 :1;
|
unsigned _5 :1;
|
||||||
unsigned 4 :1;
|
unsigned _4 :1;
|
||||||
unsigned 3 :1;
|
unsigned _3 :1;
|
||||||
unsigned 2 :1;
|
unsigned _2 :1;
|
||||||
unsigned 1 :1;
|
unsigned _1 :1;
|
||||||
unsigned 0 :1;
|
unsigned _0 :1;
|
||||||
}mcu_reg;
|
}mcu_reg;
|
||||||
|
|
||||||
mcu_reg P20;
|
mcu_reg P0;
|
||||||
mcu_reg P7;
|
mcu_reg PM0;
|
||||||
mcu_reg P4;
|
mcu_reg PM1;
|
||||||
|
mcu_reg P1;
|
||||||
mcu_reg P2;
|
mcu_reg P2;
|
||||||
|
mcu_reg PM2;
|
||||||
|
mcu_reg PM3;
|
||||||
|
mcu_reg P3;
|
||||||
|
mcu_reg P4;
|
||||||
|
mcu_reg P5;
|
||||||
|
mcu_reg PM5;
|
||||||
|
mcu_reg PU5;
|
||||||
|
mcu_reg P7;
|
||||||
|
mcu_reg PM7;
|
||||||
|
mcu_reg P14;
|
||||||
|
mcu_reg PM14;
|
||||||
|
mcu_reg PU20;
|
||||||
|
mcu_reg PM20;
|
||||||
|
mcu_reg P20;
|
||||||
|
|
||||||
unsigned char PMK23;
|
unsigned char PMK23;
|
||||||
unsigned char RTCIMK;
|
unsigned char RTCIMK;
|
||||||
unsigned char WDTE;
|
unsigned char WDTE;
|
||||||
unsigned char PM2;
|
unsigned char PM2;
|
||||||
|
unsigned char PU7;
|
||||||
|
|
||||||
|
unsigned char WDTE;
|
||||||
|
|
||||||
|
void EI(){;}
|
||||||
|
void DI(){;}
|
||||||
|
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
|
162
trunk/led.c
162
trunk/led.c
@ -220,7 +220,7 @@ void LED_stop( )
|
|||||||
|
|
||||||
enum pwr_state_{
|
enum pwr_state_{
|
||||||
OFF_TRIG = 0,
|
OFF_TRIG = 0,
|
||||||
OFF,
|
ON_CHECK,
|
||||||
ON_TRIG,
|
ON_TRIG,
|
||||||
ON,
|
ON,
|
||||||
SLEEP
|
SLEEP
|
||||||
@ -623,6 +623,7 @@ void tsk_led_cam( )
|
|||||||
static u8 task_interval;
|
static u8 task_interval;
|
||||||
u8 LED_CAM_mirror;
|
u8 LED_CAM_mirror;
|
||||||
|
|
||||||
|
DI(); // レジスタへの書き込みで強制起動がかかることがあるため
|
||||||
if( !cam_led_update )
|
if( !cam_led_update )
|
||||||
{
|
{
|
||||||
if( task_interval != 0 )
|
if( task_interval != 0 )
|
||||||
@ -632,91 +633,100 @@ void tsk_led_cam( )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
cam_led_update = false; // TWL のブリンク設定(一発だけ点灯)のため
|
cam_led_update = false; // TWL のブリンク設定(一発だけ点灯)のため
|
||||||
|
EI();
|
||||||
|
|
||||||
// ブリンクのように待たせたいとき以外は毎週起動する
|
if( system_status.pwr_state == SLEEP ) // sleep中、強制消灯
|
||||||
// (レジスタの変更にすぐに反応する)
|
{
|
||||||
switch ( vreg_ctr[VREG_C_LED_CAM] )
|
|
||||||
{
|
|
||||||
case ( CAM_LED_OFF ):
|
|
||||||
default:
|
|
||||||
LED_CAM_mirror = 0;
|
LED_CAM_mirror = 0;
|
||||||
state_led_cam = 0;
|
state_led_cam = 0;
|
||||||
break;
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// ブリンクのように待たせたいとき以外は毎週起動する
|
||||||
|
// (レジスタの変更にすぐに反応する)
|
||||||
|
switch ( vreg_ctr[VREG_C_LED_CAM] )
|
||||||
|
{
|
||||||
|
case ( CAM_LED_OFF ):
|
||||||
|
default:
|
||||||
|
LED_CAM_mirror = 0;
|
||||||
|
state_led_cam = 0;
|
||||||
|
break;
|
||||||
|
|
||||||
case ( CAM_LED_ON ):
|
case ( CAM_LED_ON ):
|
||||||
LED_CAM_mirror = 1;
|
LED_CAM_mirror = 1;
|
||||||
state_led_cam = 0;
|
state_led_cam = 0;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ( CAM_LED_BLINK ):
|
case ( CAM_LED_BLINK ):
|
||||||
if( state_led_cam == 0 )
|
if( state_led_cam == 0 )
|
||||||
{
|
{
|
||||||
LED_CAM_mirror = 1;
|
LED_CAM_mirror = 1;
|
||||||
state_led_cam = 1;
|
state_led_cam = 1;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
LED_CAM_mirror = 0;
|
LED_CAM_mirror = 0;
|
||||||
state_led_cam = 0;
|
state_led_cam = 0;
|
||||||
}
|
}
|
||||||
task_interval = 250;
|
task_interval = 250;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ( CAM_LED_ON_PLUSE ):
|
case ( CAM_LED_ON_PLUSE ):
|
||||||
if( state_led_cam == 0 )
|
if( state_led_cam == 0 )
|
||||||
{
|
{
|
||||||
LED_CAM_mirror = 1;
|
LED_CAM_mirror = 1;
|
||||||
state_led_cam = 1;
|
state_led_cam = 1;
|
||||||
task_interval = 250;
|
task_interval = 250;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
vreg_ctr[VREG_C_LED_CAM] = CAM_LED_OFF;
|
vreg_ctr[VREG_C_LED_CAM] = CAM_LED_OFF;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ( CAM_LED_OFF_PLUSE ):
|
case ( CAM_LED_OFF_PLUSE ):
|
||||||
if( state_led_cam == 0 )
|
if( state_led_cam == 0 )
|
||||||
{
|
{
|
||||||
LED_CAM_mirror = 0;
|
LED_CAM_mirror = 0;
|
||||||
state_led_cam = 1;
|
state_led_cam = 1;
|
||||||
task_interval = 250;
|
task_interval = 250;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
vreg_ctr[VREG_C_LED_CAM] = CAM_LED_ON;
|
vreg_ctr[VREG_C_LED_CAM] = CAM_LED_ON;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case( CAM_LED_BY_TWL ):
|
case( CAM_LED_BY_TWL ):
|
||||||
switch ( vreg_twl[ REG_TWL_INT_ADRS_CAM ] ){ // switchのネストとか…
|
switch ( vreg_twl[ REG_TWL_INT_ADRS_CAM ] ){ // switchのネストとか…
|
||||||
case( TWL_CAMLED_OFF ):
|
case( TWL_CAMLED_OFF ):
|
||||||
LED_CAM_mirror = 0;
|
LED_CAM_mirror = 0;
|
||||||
state_led_cam = 0;
|
state_led_cam = 0;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case( TWL_CAMLED_BLINK ):
|
case( TWL_CAMLED_BLINK ):
|
||||||
if( state_led_cam == 0 )
|
if( state_led_cam == 0 )
|
||||||
{
|
{
|
||||||
LED_CAM_mirror = 1;
|
LED_CAM_mirror = 1;
|
||||||
state_led_cam = 1;
|
state_led_cam = 1;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
LED_CAM_mirror = 0;
|
LED_CAM_mirror = 0;
|
||||||
state_led_cam = 0;
|
state_led_cam = 0;
|
||||||
}
|
}
|
||||||
task_interval = 250;
|
task_interval = 250;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case( TWL_CAMLED_ON ):
|
case( TWL_CAMLED_ON ):
|
||||||
case( TWL_CAMLED_DEF_ON ):
|
case( TWL_CAMLED_DEF_ON ):
|
||||||
default:
|
default:
|
||||||
LED_CAM_mirror = 1;
|
LED_CAM_mirror = 1;
|
||||||
state_led_cam = 1;
|
state_led_cam = 1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} // if( system_status.pwr_state == sleep ) ... else ...
|
||||||
|
|
||||||
// 輝度更新 //
|
// 輝度更新 //
|
||||||
if( system_status.info_fullcolor )
|
if( system_status.info_fullcolor )
|
||||||
|
@ -150,7 +150,20 @@ void main( )
|
|||||||
system_status.taikendai = 0;
|
system_status.taikendai = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 通常運転
|
#ifndef _FORCE_TAIKENDAI_NBD_
|
||||||
|
if( !DIPSW_1 )
|
||||||
|
#else
|
||||||
|
if(1)
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
system_status.taikendai_nbd = 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
system_status.taikendai_nbd = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// ’Ê<E28099>í‰^“]
|
||||||
main_loop( );
|
main_loop( );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -40,7 +40,7 @@ unsigned long my_sqrt();
|
|||||||
========================================================*/
|
========================================================*/
|
||||||
void pedometer()
|
void pedometer()
|
||||||
{
|
{
|
||||||
static s16 th_H = 15000; // 閾値。暫定。動的変更とかしたい…ので変数
|
static s16 th_H = 15000; // 閾値。動的変更します
|
||||||
static s16 th_L = 11000;
|
static s16 th_L = 11000;
|
||||||
static u16 acc_norm[3]; // 加速度の大きさのヒストリ。数字が大きい方が古い
|
static u16 acc_norm[3]; // 加速度の大きさのヒストリ。数字が大きい方が古い
|
||||||
static u16 acc_norm_temp;
|
static u16 acc_norm_temp;
|
||||||
|
21
trunk/pm.c
21
trunk/pm.c
@ -165,8 +165,8 @@ void tsk_batt( )
|
|||||||
// 割り込みはmiscが引き受ける
|
// 割り込みはmiscが引き受ける
|
||||||
|
|
||||||
// 電池残量 //
|
// 電池残量 //
|
||||||
if(( system_status.pwr_state != OFF )&&
|
if(( system_status.pwr_state != ON_CHECK )&&
|
||||||
( system_status.pwr_state != BT_CHARGE ))
|
( system_status.pwr_state != OFF ))
|
||||||
{
|
{
|
||||||
BT_get_left();
|
BT_get_left();
|
||||||
}
|
}
|
||||||
@ -566,6 +566,7 @@ void BT_get_left(){
|
|||||||
else if( system_status.model == MODEL_SHIROBAKO )
|
else if( system_status.model == MODEL_SHIROBAKO )
|
||||||
{
|
{
|
||||||
// 白箱 //
|
// 白箱 //
|
||||||
|
// “d’rŽc—Ê
|
||||||
if( iic_mcu_read( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_SOC, 2, temp_fuel ) != ERR_SUCCESS )
|
if( iic_mcu_read( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_SOC, 2, temp_fuel ) != ERR_SUCCESS )
|
||||||
{
|
{
|
||||||
// エミュレーション機能がおかしい
|
// エミュレーション機能がおかしい
|
||||||
@ -576,7 +577,17 @@ void BT_get_left(){
|
|||||||
vreg_ctr[ VREG_C_BT_REMAIN ] = temp_fuel[0];
|
vreg_ctr[ VREG_C_BT_REMAIN ] = temp_fuel[0];
|
||||||
vreg_ctr[ VREG_C_BT_REMAIN_FINE ] = temp_fuel[1];
|
vreg_ctr[ VREG_C_BT_REMAIN_FINE ] = temp_fuel[1];
|
||||||
}
|
}
|
||||||
vreg_ctr[ VREG_C_BT_VOLTAGE ] = 200;
|
// “d’r“dˆ³
|
||||||
|
/*
|
||||||
|
if( iic_mcu_read( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_VCELL, 2, temp_v ) == ERR_SUCCESS )
|
||||||
|
{
|
||||||
|
vreg_ctr[ VREG_C_BT_VOLTAGE ] = temp_v[0];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
*/
|
||||||
|
{
|
||||||
|
vreg_ctr[ VREG_C_BT_VOLTAGE ] = 200;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -672,6 +683,10 @@ void BT_get_left(){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if( system_status.taikendai_nbd )
|
||||||
|
{
|
||||||
|
vreg_ctr[ VREG_C_BT_REMAIN ] = 100;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -95,8 +95,8 @@ void tsk_sw( )
|
|||||||
{
|
{
|
||||||
case ( ON ):
|
case ( ON ):
|
||||||
case ( SLEEP ):
|
case ( SLEEP ):
|
||||||
case ( BT_CHARGE ):
|
|
||||||
case ( OFF ):
|
case ( OFF ):
|
||||||
|
case ( ON_CHECK ):
|
||||||
// 電源スイッチの監視 //
|
// 電源スイッチの監視 //
|
||||||
if( SW_pow_count == (u8)( 320/ INTERVAL_TSK_SW ) )
|
if( SW_pow_count == (u8)( 320/ INTERVAL_TSK_SW ) )
|
||||||
{
|
{
|
||||||
|
@ -95,7 +95,7 @@ task_interval tsk_hina( )
|
|||||||
{
|
{
|
||||||
switch ( system_status.pwr_state )
|
switch ( system_status.pwr_state )
|
||||||
{
|
{
|
||||||
case OFF:
|
case ON_CHECK:
|
||||||
case ON_TRIG:
|
case ON_TRIG:
|
||||||
case ON:
|
case ON:
|
||||||
case SLEEP:
|
case SLEEP:
|
||||||
|
@ -50,7 +50,7 @@ void tsk_sys( )
|
|||||||
|
|
||||||
switch ( system_status.pwr_state )
|
switch ( system_status.pwr_state )
|
||||||
{
|
{
|
||||||
case OFF: //-------------------------------------------------------
|
case ON_CHECK: //-------------------------------------------------------
|
||||||
// スイッチ操作などで割り込みが発生し、スリープが解除されるとここに来ます。
|
// スイッチ操作などで割り込みが発生し、スリープが解除されるとここに来ます。
|
||||||
|
|
||||||
if( system_status.poweron_reason == NONE )
|
if( system_status.poweron_reason == NONE )
|
||||||
@ -67,7 +67,7 @@ void tsk_sys( )
|
|||||||
|
|
||||||
if( timeout > 100 )
|
if( timeout > 100 )
|
||||||
{
|
{
|
||||||
system_status.pwr_state = OFF_TRIG; // スイッチはノイズだった。寝る。
|
system_status.pwr_state = OFF; // スイッチはノイズだった。寝る。
|
||||||
renge_task_interval_run_force = true;
|
renge_task_interval_run_force = true;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -230,30 +230,23 @@ void tsk_sys( )
|
|||||||
chk_emergencyExit();
|
chk_emergencyExit();
|
||||||
|
|
||||||
// SLP監視
|
// SLP監視
|
||||||
if( PIF0 ){ // slp割り込み
|
if( going_to_sleep ) // 絶対に SLP_REQ の前に予告が来る
|
||||||
PIF0 = 0;
|
{
|
||||||
|
timeout_sleep += 1;
|
||||||
if( !SLP_REQ ){ // 一瞬で起きた
|
if( timeout_sleep == 0 || // オーバーフローを期待。sleepするって言ったけど一瞬で起きて気がつかなかった
|
||||||
|
( PIF0 && !SLP_REQ )) // slp割り込みが入った気がしたが、もう起きてしまった
|
||||||
|
{
|
||||||
|
PIF0 = 0;
|
||||||
send_getup_to_soc();
|
send_getup_to_soc();
|
||||||
}
|
}
|
||||||
else
|
if( PIF0 && SLP_REQ ){
|
||||||
{
|
PIF0 = 0;
|
||||||
PM_VDD_ecoMode();
|
PM_VDD_ecoMode();
|
||||||
system_status.pwr_state = SLEEP;
|
system_status.pwr_state = SLEEP;
|
||||||
renge_task_interval_run_force = true;
|
renge_task_interval_run_force = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 絶対に SLP_REQ の前に予告が来るので、sleepに入るときはピンでのチェック不用
|
|
||||||
if( going_to_sleep )
|
|
||||||
{
|
|
||||||
timeout_sleep += 1;
|
|
||||||
if( timeout_sleep == 0 ) // sleepするって言ったけど一瞬で起きて気がつかなかった
|
|
||||||
{
|
|
||||||
send_getup_to_soc();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 強制offカウント
|
// 強制offカウント
|
||||||
force_off_check();
|
force_off_check();
|
||||||
|
|
||||||
@ -288,10 +281,10 @@ void tsk_sys( )
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case OFF_TRIG: //---------------------------------------
|
default: //---------------------------------------
|
||||||
default:
|
|
||||||
system_status.pwr_state = OFF_TRIG;
|
system_status.pwr_state = OFF_TRIG;
|
||||||
|
// no break //
|
||||||
|
case OFF_TRIG: //---------------------------------------
|
||||||
// LED消灯を待つ
|
// LED消灯を待つ
|
||||||
vreg_ctr[ VREG_C_LED_POW ] = LED_POW_ILM_OFF;
|
vreg_ctr[ VREG_C_LED_POW ] = LED_POW_ILM_OFF;
|
||||||
vreg_ctr[ VREG_C_LED_WIFI ] = WIFI_LED_OFF;
|
vreg_ctr[ VREG_C_LED_WIFI ] = WIFI_LED_OFF;
|
||||||
@ -362,14 +355,14 @@ void tsk_sys( )
|
|||||||
|
|
||||||
timeout = 0;
|
timeout = 0;
|
||||||
|
|
||||||
system_status.pwr_state = BT_CHARGE;
|
system_status.pwr_state = OFF;
|
||||||
SW_pow_mask = true;
|
SW_pow_mask = true;
|
||||||
SW_pow_count = 0;
|
SW_pow_count = 0;
|
||||||
|
|
||||||
|
|
||||||
// no break //
|
// no break //
|
||||||
|
|
||||||
case BT_CHARGE:
|
case OFF:
|
||||||
if( !PM_EXTDC_n )
|
if( !PM_EXTDC_n )
|
||||||
{
|
{
|
||||||
// アダプタが刺さってるときはこのブロックを繰り返す。
|
// アダプタが刺さってるときはこのブロックを繰り返す。
|
||||||
@ -381,7 +374,7 @@ void tsk_sys( )
|
|||||||
{
|
{
|
||||||
// 電源投入
|
// 電源投入
|
||||||
system_status.poweron_reason = PWSW;
|
system_status.poweron_reason = PWSW;
|
||||||
system_status.pwr_state = OFF;
|
system_status.pwr_state = ON_CHECK;
|
||||||
}
|
}
|
||||||
if( system_status.model != MODEL_JIKKI )
|
if( system_status.model != MODEL_JIKKI )
|
||||||
{
|
{
|
||||||
@ -393,20 +386,16 @@ void tsk_sys( )
|
|||||||
// 電源投入
|
// 電源投入
|
||||||
wait_ms(46);
|
wait_ms(46);
|
||||||
system_status.poweron_reason = PWSW;
|
system_status.poweron_reason = PWSW;
|
||||||
system_status.pwr_state = OFF;
|
system_status.pwr_state = ON_CHECK;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// / static bit chg_ena_orig;
|
|
||||||
|
|
||||||
if( chg_led_override != 0 ) // これがゼロになるまで待つ
|
if( chg_led_override != 0 ) // これがゼロになるまで待つ
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
};
|
};
|
||||||
|
|
||||||
// / chg_ena_orig = BT_CHG_Ena_n;
|
|
||||||
|
|
||||||
// 省電力へ移行
|
// 省電力へ移行
|
||||||
system_status.poweron_reason = NONE;
|
system_status.poweron_reason = NONE;
|
||||||
|
|
||||||
@ -424,43 +413,26 @@ void tsk_sys( )
|
|||||||
CKC = 0b00001001;
|
CKC = 0b00001001;
|
||||||
OSMC = 0x00;
|
OSMC = 0x00;
|
||||||
|
|
||||||
// / BT_CHG_ENABLE(); // リークを減らすため
|
|
||||||
STOP( );
|
STOP( );
|
||||||
|
|
||||||
// 起きる //
|
// 起きる //
|
||||||
// 起きる条件は
|
// 起きる条件は
|
||||||
// ・KeyReturn割り込み(電源ボたん)
|
// ・KeyReturn割り込み(電源ボタン)
|
||||||
// ・RTCアラーム
|
|
||||||
// ・アダプタ挿抜
|
// ・アダプタ挿抜
|
||||||
|
|
||||||
// / BT_CHG_Ena_n = chg_ena_orig;
|
|
||||||
|
|
||||||
if( PM_EXTDC_n )
|
|
||||||
{
|
|
||||||
// 一度起こしてしまう。ペリフェラルの初期化など流用のため。
|
|
||||||
// 電源ボタンのタイムアウトで返ってくる
|
|
||||||
SW_pow_mask = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
OSMC = 0x01;
|
OSMC = 0x01;
|
||||||
CKC = 0b00001000;
|
CKC = 0b00001000;
|
||||||
|
|
||||||
RTCIMK = 0;
|
if( PM_EXTDC_n )
|
||||||
system_status.pwr_state = OFF;
|
|
||||||
|
|
||||||
if( system_status.taikendai )
|
|
||||||
{
|
{
|
||||||
system_status.pwr_state = OFF_TRIG;
|
// 電源ボタンで起きたとき
|
||||||
|
SW_pow_mask = false;
|
||||||
|
system_status.poweron_reason = NONE;
|
||||||
|
system_status.pwr_state = ON_CHECK;
|
||||||
}
|
}
|
||||||
|
RTCIMK = 0;
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
|
|
||||||
#if 0
|
|
||||||
default:
|
|
||||||
NOP( ); // あり得ないステート
|
|
||||||
#endif
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -128,7 +128,6 @@ void vreg_ctr_write( u8 adrs, u8 data )
|
|||||||
case ( VREG_C_COMMAND0 ):
|
case ( VREG_C_COMMAND0 ):
|
||||||
if( data != 0 )
|
if( data != 0 )
|
||||||
{
|
{
|
||||||
// SVA1 = 0x5A; // 通信受け付けない todo
|
|
||||||
renge_task_immed_add( tski_do_command0 );
|
renge_task_immed_add( tski_do_command0 );
|
||||||
}
|
}
|
||||||
vreg_ctr[ VREG_C_COMMAND0 ] |= data;
|
vreg_ctr[ VREG_C_COMMAND0 ] |= data;
|
||||||
|
@ -59,10 +59,7 @@ void vreg_twl_write( u8 adrs, u8 data )
|
|||||||
|
|
||||||
case ( REG_TWL_INT_ADRS_CAM ):
|
case ( REG_TWL_INT_ADRS_CAM ):
|
||||||
vreg_twl[ REG_TWL_INT_ADRS_CAM ] = ( data & 0x03 );
|
vreg_twl[ REG_TWL_INT_ADRS_CAM ] = ( data & 0x03 );
|
||||||
if( ( data & 0x03 ) == TWL_CAMLED_BLINK )
|
cam_led_update = true;
|
||||||
{
|
|
||||||
cam_led_update = true;
|
|
||||||
}
|
|
||||||
tsk_led_cam();
|
tsk_led_cam();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user