・レジスタ書き込みでの強制ボリュームセット実装
・パナソニックのバッテリパラメータをダミーから差し替え(まだ機能してない)
・フルカラーお知らせLEDにきちんと対応
 現行の電源ボード、電源赤がPWMできたりするが実機に合わせてコードも整理
  でないと自動判別後が大変な為
・電源断時にLEDを何となくフェードアウト
・CTR側のI2Cレジスタの実装を修正。220バイト程ROMを節約
 エンバグ怖い
・I2C_mcuのモジュール初期化チェックなどの無駄を少し整理
・TWL I2Cの通信がどうにも間に合わないとき、リトライされてタイミングが悪いと0x00などを返していた。
 リトライ時にも正常に動作するように修正。エンバグ怖い
・廃止enumをちょっと整理
・I2Cレジスタの初期値・リセット時の初期化などを修正
・温度で充電停止周りを実装
・プラットフォームの判定を誤っていた。(0x7Fで読める)
・RCOMPの値の計算を間違えていた。算数もできないのか!
・デバッグコードを抜いた。(pm.c)
・rengeOSのデバッグを有効にしたままだった。I2C_TWLのパフォーマンスが全くでず不具合の嵐
・6秒で電源断を追加。(CTRレジスタから可変) デバッグで耐えられないのでまだ#ifdefでデフォルトを1秒にしてある
・電池無しからアダプタ差したり、アダプタ有りの状態から電池をつないだりで充電したりしなかったり電源はいらなかったり…を修正
・電源LEDが赤になるタイミングと、TWLへの電池残量への通知、NTRへの通知などの閾値がばらばらだったのを修正


git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-05-23%20-%20ctr.7z%20+%20svn_v1.068.zip/ctr/svn/ctr_mcu@171 013db118-44a6-b54f-8bf7-843cb86687b1
This commit is contained in:
N2232 2010-05-24 04:10:36 +00:00
parent 70bccac852
commit 2a6ddf4d26
37 changed files with 795 additions and 915 deletions

View File

@ -173,16 +173,19 @@ task_status_immed acc_hosu_set( )
str_send_buf[1] = 0x00; // ctrl2 HPF:normal, filterd, HPF for IRQ : dis/dis, HPF coeff:norm str_send_buf[1] = 0x00; // ctrl2 HPF:normal, filterd, HPF for IRQ : dis/dis, HPF coeff:norm
#ifdef _MODEL_WM0_ #ifdef _MODEL_WM0_
# ifdef _MODEL_WM0_TEG2_CTRC_
str_send_buf[2] = 0x02;
# else
str_send_buf[2] = 0x10; // 3 IRQ pol :Active HI, Drive:Pushpull, str_send_buf[2] = 0x10; // 3 IRQ pol :Active HI, Drive:Pushpull,
/// IRQ2flg latch: auto clear after read, IRQ2 conf: IRQ( fall,shock,...) /// IRQ2flg latch: auto clear after read, IRQ2 conf: IRQ( fall,shock,...)
/// 1 : auto clear after read, conf: data ready /// 1 : auto clear after read, conf: data ready
# endif
#else #else
# ifdef _MODEL_CTR_JIKKI_ # ifdef _MODEL_CTR_JIKKI_
str_send_buf[2] = 0x10; str_send_buf[2] = 0x10;
# else # else
str_send_buf[2] = 0x02; // 3 IRQ pol :Active HI, Drive:Pushpull, str_send_buf[2] = 0x02;
/// IRQ2flg latch: auto clear after read, IRQ2 conf: IRQ( fall,shock,...)
/// 1 : auto clear after read, conf: data ready
# endif # endif
#endif #endif

View File

@ -22,9 +22,9 @@
//#define _MODEL_WM0_TEG2_CTRC_ //#define _MODEL_WM0_TEG2_CTRC_
//#define _MODEL_TS0_ //#define _MODEL_TS0_
// <20>ªTEG2 CPU <20>{ Type-C // <20>ªTEG2 CPU <20>{ Type-C
#define _MODEL_CTR_TS_ //#define _MODEL_CTR_TS_
// <20>ªFINAL SoC <20>{ Type-C // <20>ªFINAL SoC <20>{ Type-C
//#define _MODEL_CTR_JIKKI_ #define _MODEL_CTR_JIKKI_
//#define _SW_HOME_ENABLE_ //#define _SW_HOME_ENABLE_
@ -44,6 +44,9 @@
#define _MODEL_CTR_ #define _MODEL_CTR_
#endif #endif
#ifdef _MODEL_WM0_TEG2_CTRC_
#define _MODEL_WM0_
#endif
// ---------------------------------- // // ---------------------------------- //
#ifdef _MODEL_TEG2_ #ifdef _MODEL_TEG2_

View File

@ -82,8 +82,9 @@ Assembly complete, 0 error(s) and 0 warning(s) found.
adc.c(90) : CC78K0R warning W0745: Expected function prototype adc.c(90) : CC78K0R warning W0745: Expected function prototype
adc.c(148) : CC78K0R warning W0401: Conversion may lose significant digits adc.c(148) : CC78K0R warning W0401: Conversion may lose significant digits
adc.c(149) : CC78K0R warning W0401: Conversion may lose significant digits adc.c(149) : CC78K0R warning W0401: Conversion may lose significant digits
adc.c(287) : CC78K0R warning W0401: Conversion may lose significant digits
adc.c(321) : CC78K0R warning W0401: Conversion may lose significant digits adc.c(321) : CC78K0R warning W0401: Conversion may lose significant digits
Compilation complete, 0 error(s) and 4 warning(s) found. Compilation complete, 0 error(s) and 5 warning(s) found.
"C:\Program Files\NEC Electronics Tools\RA78K0R\W1.31\bin\ra78k0r.exe" -c9F0104 -y"C:\Program Files\NEC Electronics Tools\DEV" -_msgoff inter_asm\adc.asm "C:\Program Files\NEC Electronics Tools\RA78K0R\W1.31\bin\ra78k0r.exe" -c9F0104 -y"C:\Program Files\NEC Electronics Tools\DEV" -_msgoff inter_asm\adc.asm
Assembly complete, 0 error(s) and 0 warning(s) found. Assembly complete, 0 error(s) and 0 warning(s) found.
"C:\Program Files\NEC Electronics Tools\CC78K0R\W2.10\bin\cc78k0r.exe" -c9F0104 -y"C:\Program Files\NEC Electronics Tools\DEV" -_msgoff -irenge -i"C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r" -ms -qvjl3wt -sainter_asm -zp -no renge\renge.c "C:\Program Files\NEC Electronics Tools\CC78K0R\W2.10\bin\cc78k0r.exe" -c9F0104 -y"C:\Program Files\NEC Electronics Tools\DEV" -_msgoff -irenge -i"C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r" -ms -qvjl3wt -sainter_asm -zp -no renge\renge.c
@ -143,4 +144,4 @@ intel-HEX to bsr bin converter
file converted! file converted!
Build Total error(s) : 0 Total warning(s) : 42 Build Total error(s) : 0 Total warning(s) : 43

View File

@ -78,10 +78,10 @@ Symbol Type=OFF
Language=C Language=C
Kanji=SJIS Kanji=SJIS
[Source] [Source]
Geometry=317, -7, 707, 899 Geometry=527, 9, 707, 899
Window=Normal Window=Normal
DispStart=68 DispStart=289
CaretPos=69,0 CaretPos=290,0
Mode=Normal Mode=Normal
DispFile= DispFile=
Address1= Address1=
@ -142,8 +142,8 @@ Accumulative=ON
[Assemble] [Assemble]
Geometry=75, 362, 600, 400 Geometry=75, 362, 600, 400
Window=Normal Window=Normal
DispStart=15269 DispStart=17283
CaretPos=15269,27 CaretPos=17283,27
Address1= Address1=
Address2= Address2=
Address3= Address3=
@ -982,11 +982,7 @@ Line=0
Geometry=857, 296, 391, 360 Geometry=857, 296, 391, 360
Window=Hide Window=Hide
Width=150 30 200 100 Width=150 30 200 100
Name0=Swb00001 Count=0
Address0=accero.c#es_F0038+0x6
Window0=ASM
Status0=ON
Count=1
[Reset] [Reset]
Debugger=ON Debugger=ON
Symbol=OFF Symbol=OFF

View File

@ -6,7 +6,7 @@ Series=78K0R.PM
Device=uPD79F0104 Device=uPD79F0104
DeviceVer=E1.00b DeviceVer=E1.00b
DebugMode=1 DebugMode=1
Target=bsr.lmf Target=C:\78k_data\yav-mcu-basara\branches\0.15(sdk0.9_E3_fix_vol)\bsr.lmf
[BuildMode0] [BuildMode0]
BuildModeName=Debug Build BuildModeName=Debug Build
TargetFile=0 TargetFile=0
@ -1005,11 +1005,6 @@ DefaultMode2=1
DefaultMode3=1 DefaultMode3=1
DefaultMode4=1 DefaultMode4=1
DefaultMode5=1 DefaultMode5=1
[ToolSet]
ToolSetName=(•ĎŤX)78K0R Software Package V1.10
Tool1=CC78K0R|W2.10
Tool2=RA78K0R|W1.31
Tool3=ID78K0R-QB|V3.60
[IncFile] [IncFile]
Include1=incs_loader.h Include1=incs_loader.h
Include2=jhl_defs.h Include2=jhl_defs.h
@ -1042,3 +1037,8 @@ Include28=i2c_twl.h
Include29=sw.h Include29=sw.h
Include30=..\..\..\..\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r\fsl.h Include30=..\..\..\..\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r\fsl.h
Include31=..\..\..\..\Program Files\NEC Electronics Tools\CC78K0R\W2.10\inc78k0r\math.h Include31=..\..\..\..\Program Files\NEC Electronics Tools\CC78K0R\W2.10\inc78k0r\math.h
[ToolSet]
ToolSetName=(•ĎŤX)78K0R Software Package V1.10
Tool1=CC78K0R|W2.10
Tool2=RA78K0R|W1.31
Tool3=ID78K0R-QB|V3.60

View File

@ -8,16 +8,15 @@ OpenFile1=renge\renge.h,0,502,637,1746,1394,29,16,29,0
OpenFile2=jhl_defs.h,0,250,539,1494,1265,0,10,8,0 OpenFile2=jhl_defs.h,0,250,539,1494,1265,0,10,8,0
OpenFile3=renge\\renge_defs.h,0,293,307,1537,1033,18,37,18,0 OpenFile3=renge\\renge_defs.h,0,293,307,1537,1033,18,37,18,0
OpenFile4=task_sys.c,0,330,330,1574,1056,0,172,37,0 OpenFile4=task_sys.c,0,330,330,1574,1056,0,172,37,0
OpenFile5=loader.c,0,296,307,1286,923,20,214,20,0 OpenFile5=pm.h,0,254,446,1244,1062,0,115,0,0
OpenFile6=pm.h,0,254,446,1244,1062,0,115,0,0 OpenFile6=sw.c,0,574,367,1818,1093,43,36,43,0
OpenFile7=sw.c,0,574,367,1818,1093,43,36,43,0 OpenFile7=vreg_ctr.h,0,632,184,1876,910,13,2,13,0
OpenFile8=ProjectWindow OpenFile8=ProjectWindow
PrjPos=0,2,754,3,253 PrjPos=0,2,754,3,253
OpenFile9=vreg_ctr.h,0,632,184,1876,910,13,2,13,0 OpenFile9=loader.c,0,538,345,1528,961,4,239,6,0
OpenFile10=config.h,0,352,352,1596,1078,2,27,0,0 OpenFile10=config.h,0,302,62,1546,788,0,27,0,0
OpenFile11=OutputWindow OpenFile11=OutputWindow
OutputPos=0,572,1038,46,1104 OutputPos=0,572,1038,46,1104
OpenFile12=adc.c,0,88,88,1332,814,5,288,0,0
ActivePRJ=yav_mcu_bsr.prj ActivePRJ=yav_mcu_bsr.prj
[ProjectWindow] [ProjectWindow]
ProjectWindowDispType=0 ProjectWindowDispType=0

View File

@ -34,7 +34,7 @@ T=4bf0d1dd
6=led.h 6=led.h
7=adc.h 7=adc.h
[magic.c] [magic.c]
T=4bf21819 T=4bf32d27
1=config.h 1=config.h
[WDT.c] [WDT.c]
T=4bf0d1dd T=4bf0d1dd
@ -90,7 +90,7 @@ T=4bf0d1db
6=user_define.h 6=user_define.h
7=bsr_system.h 7=bsr_system.h
[accero.c] [accero.c]
T=4bf0d1dd T=4bf32d1e
1=incs.h 1=incs.h
2=..\..\..\..\Program Files\NEC Electronics Tools\CC78K0R\W2.10\inc78k0r\math.h 2=..\..\..\..\Program Files\NEC Electronics Tools\CC78K0R\W2.10\inc78k0r\math.h
[self_flash.c] [self_flash.c]
@ -157,7 +157,7 @@ T=4bf0d1dd
T=4bf0d1dd T=4bf0d1dd
1=config.h 1=config.h
[config.h] [config.h]
T=4bf21845 T=4bf33a2b
[user_define.h] [user_define.h]
T=4bf0d1dd T=4bf0d1dd
[bsr_system.h] [bsr_system.h]

View File

@ -68,11 +68,11 @@ const u8 slider_to_codec[64] =
127, 127, 126, 125, 123, 122, 121, 119, 127, 127, 126, 125, 123, 122, 121, 119,
118, 117, 115, 114, 112, 111, 110, 108, 118, 117, 115, 114, 112, 111, 110, 108,
107, 106, 104, 103, 101, 100, 99, 97, 107, 106, 104, 103, 101, 100, 99, 97,
96, 94, 93, 92, 90, 89, 88, 86, 96, 94, 93, 92, 90, 89, 88, 86,
85, 83, 82, 81, 79, 78, 77, 75, 85, 83, 82, 81, 79, 78, 77, 75,
74, 72, 71, 70, 68, 67, 66, 64, 74, 72, 71, 70, 68, 67, 66, 64,
64, 63, 61, 60, 59, 57, 56, 54, 64, 63, 61, 60, 59, 57, 56, 54,
53, 52, 50, 49, 48, 46, 44, 44 53, 52, 50, 49, 48, 46, 44, 44
}; };
#endif #endif
@ -96,9 +96,11 @@ void tsk_adc( )
if( adc_updated ) if( adc_updated )
{ {
adc_updated = 0;
if( system_status.pwr_state == ON ) if( system_status.pwr_state == ON )
{ {
// Tune /////////////////////////////////////// // 3D /////////////////////////////////////////
{ {
// 似非ヒステリシス V2 // 似非ヒステリシス V2
// ガリオームには適さない // ガリオームには適さない
@ -155,6 +157,12 @@ void tsk_adc( )
static u8 vol_old; static u8 vol_old;
static u8 force_update_vol; static u8 force_update_vol;
if(( vreg_ctr[ VREG_C_VOL_DIGITAL ] & 0x80 ) != 0 )
{
// レジスタから強制セット
adc_raw_vol = ( vreg_ctr[ VREG_C_VOL_DIGITAL ] * 4 );
}
if( ( abs( adc_raw_vol - vol_old ) >= 2 ) // 生値でこれくらいずれたら更新(似非ヒステリシス) if( ( abs( adc_raw_vol - vol_old ) >= 2 ) // 生値でこれくらいずれたら更新(似非ヒステリシス)
|| ( --force_update_vol == 0 ) ) // ポーリング || ( --force_update_vol == 0 ) ) // ポーリング
{ {
@ -172,8 +180,6 @@ void tsk_adc( )
force_update_vol = 10; force_update_vol = 10;
} }
} }
adc_updated = 0;
} }
} }

View File

@ -43,18 +43,18 @@ const u8 BT_PARAM[][64] = {
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
}, },
{ // ID = 5 2.7kohm ƒpƒi { // ID = 5 2.7kohm ƒpƒi
0xAD, 0x30, 0xAE, 0x70, 0xB0, 0x00, 0xB3, 0x00, 0x80, 0x30, 0x83, 0x90, 0x92, 0x00, 0xAE, 0x30,
0xB4, 0x70, 0xB5, 0xA0, 0xB7, 0x80, 0xBA, 0x00, 0xB0, 0x80, 0xB3, 0xA0, 0xB5, 0x00, 0xB5, 0x30,
0xBB, 0x90, 0xBD, 0x00, 0xBE, 0x00, 0xBF, 0xF0, 0xB5, 0xC0, 0xB6, 0xA0, 0xB7, 0x90, 0xB9, 0x70,
0xC3, 0x00, 0xC5, 0xC0, 0xC8, 0x00, 0xCA, 0xC0, 0xBC, 0x10, 0xC6, 0x90, 0xCA, 0x00, 0xD0, 0x90,
0x04, 0x00, 0x12, 0x00, 0x0C, 0x10, 0x24, 0x00, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x0D, 0x40,
0x10, 0xD0, 0x1B, 0xF0, 0x0A, 0xF0, 0x08, 0xE0, 0x15, 0x00, 0x08, 0xF0, 0x80, 0x00, 0x00, 0x20,
0x0C, 0xF0, 0x08, 0xC0, 0x08, 0xB0, 0x07, 0xF0, 0x1F, 0x80, 0x1D, 0x60, 0x0D, 0x50, 0x08, 0xF0,
0x0B, 0x00, 0x05, 0xD0, 0x02, 0x00, 0x09, 0x00 0x08, 0xA0, 0x04, 0xF0, 0x07, 0x70, 0x07, 0x70
}, },
{ // ID = 6 8.2kohm { // ID = 6 8.2kohm
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
@ -66,11 +66,13 @@ const u8 BT_PARAM[][64] = {
/// パラメータ無し /// パラメータ無し
}; };
const unsigned char BT_PANA_RCOMP = 135; // temp_co_xxxxÍ256”{‚µ‚Ä‚¨‚­
// static const float BT_PANA_TEMPCOUP = 0.3; const unsigned char BT_MAXELL_RCOMP = 135;
// static const float BT_PANA_TEMPCODN = 0.5; const signed short BT_MAXELL_TEMPCOUP = -256* 0.15;
// 256”{‚µ‚Ä‚ ‚é const signed short BT_MAXELL_TEMPCODN = -256* 2.15;
const unsigned char BT_PANA_TEMPCOUP = 77;
const unsigned char BT_PANA_TEMPCODN = 128;
const unsigned char BT_PANA_RCOMP = 171;
const signed short BT_PANA_TEMPCOUP = -256* 0.00;
const signed short BT_PANA_TEMPCODN = -256* 2.30;
#endif #endif

View File

@ -29,7 +29,7 @@ enum model_
MODEL_TS_BOARD, MODEL_TS_BOARD,
MODEL_SHIROBAKO, MODEL_SHIROBAKO,
MODEL_JIKKI_NOBATT, MODEL_JIKKI_NOBATT,
MODEL_RESERVED1, MODEL_UNKNOWN,
MODEL_RESERVED2, MODEL_RESERVED2,
MODEL_RESERVED3, MODEL_RESERVED3,
}; };

View File

@ -1,12 +1,13 @@
#ifndef __config__ #ifndef __config__
#define __config__ #define __config__
//#define _debug_
//#define _debug_led_ //#define _debug_led_
#define _FORCE_OFF_1SEC_
//#define _ALLOW_NOBATT_
#define MCU_VER_MAJOR 0x00 #define MCU_VER_MAJOR 0x00
#define MCU_VER_MINOR 0x14 #define MCU_VER_MINOR 0x17
//#define PM_CCIC_TIM //#define PM_CCIC_TIM
@ -20,16 +21,11 @@
//#define _MODEL_TS0_ //#define _MODEL_TS0_
// <20>ªTEG2 CPU <20>{ Type-C // <20>ªTEG2 CPU <20>{ Type-C
//#define _MODEL_CTR_ #define _MODEL_CTR_
// <20>ªTS board, WM1,1 TS-CTRC // <20>ªTS board, WM1,1 TS-CTRC
#define _MODEL_CTR_NOTIFY_FULLCOLOR_
// <20>ªTS board, WM1,1 TS-CTRC
// “ÁŽêŽd—l // // “ÁŽêŽd—l //
//#define _SW_HOME_ENABLE_ //#define _SW_HOME_ENABLE_
#define _FOR_E3_
// ---------------------------------- // // ---------------------------------- //
#ifdef _MODEL_TEG2_ #ifdef _MODEL_TEG2_
@ -56,11 +52,4 @@
#define _SW_HOME_ENABLE_ #define _SW_HOME_ENABLE_
#endif #endif
#ifdef _MODEL_CTR_NOTIFY_FULLCOLOR_
#define _MODEL_CTR_
#define _PMIC_CTR_
#define _MCU_BSR_
#define _SW_HOME_ENABLE_
#endif
#endif #endif

View File

@ -148,7 +148,7 @@ __interrupt void int_iic_ctr( )
reg_adrs = IICA; reg_adrs = IICA;
adrs_access_from = reg_adrs; adrs_access_from = reg_adrs;
tx_buf = vreg_ctr_read( reg_adrs ); // データの準備をしておく tx_buf = vreg_ctr_read( reg_adrs ); // データの準備をしておく
if( reg_adrs != VREG_C_INFO ) if( reg_adrs != VREG_CX_INFO ) // 特殊なバーストリードを行うため、割り込み駆動から外す
{ {
state = IIC_TX_OR_RX; state = IIC_TX_OR_RX;
} }
@ -202,15 +202,15 @@ __interrupt void int_iic_ctr( )
switch( adrs_access_from ) switch( adrs_access_from )
{ {
case( VREG_C_ACC_HOSU_HIST ): case( VREG_C_ACC_HOSU_HIST ):
case( VREG_C_INFO ):
case( VREG_C_LED_NOTIFY_DATA ): case( VREG_C_LED_NOTIFY_DATA ):
case( VREG_C_LED_POW ): case( VREG_C_LED_POW ):
case( VREG_C_FREE_DATA ): case( VREG_CX_INFO ):
case( VREG_CX_FREE_DATA ):
break; break;
case( VREG_C_FREE_ADRS ): case( VREG_CX_FREE_ADRS ):
if( reg_adrs == VREG_C_FREE_ADRS ) if( reg_adrs == VREG_CX_FREE_ADRS )
{ {
reg_adrs = VREG_C_FREE_DATA; reg_adrs = VREG_CX_FREE_DATA;
} }
break; break;
default: default:

View File

@ -83,18 +83,7 @@ void nop8()
static err iic_mcu_is_ready() static err iic_mcu_is_ready()
{ {
if( iic_mcu_initialized == 0 ) iic_mcu_start( );
{
#ifdef _debug_
iic_mcu_start( );
#else
return( ERR_ERR );
while( 1 )
{
NOP();
}
#endif
}
while( iic_mcu_busy ) while( iic_mcu_busy )
{ {
@ -185,15 +174,8 @@ err iic_mcu_read( u8 slave, u8 adrs, u8 len, u8 * dest )
{ {
return( ERR_ERR ); return( ERR_ERR );
} }
;
#else #else
// 使用中なら帰る // 使用中なら帰る
if( iic_mcu_initialized == 0 ){
return(0x80);
}
if( iic_mcu_busy != 0 ){
return( 3 );
}
#endif #endif
// スタートコンディションとスレーブの呼び出し、レジスタアドレスの送信 // スタートコンディションとスレーブの呼び出し、レジスタアドレスの送信
@ -309,12 +291,6 @@ err iic_mcu_write( u8 slave, u8 adrs, u8 len, void * src )
} }
#if 0 #if 0
// 使用中なら帰る // 使用中なら帰る
if( iic_mcu_initialized == 0 ){
return(0x80);
}
if( iic_mcu_busy != 0 ){
return( 3 );
}
#endif #endif
// スタートコンディションとスレーブの呼び出し... // スタートコンディションとスレーブの呼び出し...
@ -557,6 +533,10 @@ static void iic_mcu_send_sp( )
======================================================== */ ======================================================== */
void iic_mcu_start( ) void iic_mcu_start( )
{ {
if( iic_mcu_initialized )
{
return;
}
DST1 = 0; DST1 = 0;
NOP( ); // 2clkもしくは、DSTn==0をポーリング NOP( ); // 2clkもしくは、DSTn==0をポーリング
NOP( ); NOP( );

View File

@ -12,7 +12,7 @@
#include "incs.h" #include "incs.h"
#include "i2c_twl_defs.h" #include "i2c_twl_defs.h"
#include "i2c_twl.h"
extern u8 vreg_twl[]; extern u8 vreg_twl[];
@ -45,6 +45,7 @@ extern u8 vreg_twl[];
#define WREL WREL0 #define WREL WREL0
#define WTIM WTIM0 #define WTIM WTIM0
#define SMC SMC0 #define SMC SMC0
#define TRC TRC0
#endif #endif
@ -60,23 +61,22 @@ void IIC_twl_Init( void )
#else #else
enum IIC_TWL_STATE{
WAIT_ADRS = 0,
WAIT_DATA,
DATA_READED
};
/*============================================================================*/ /*============================================================================*/
u8 vreg_adrs;
u8 pre_dat;
u16 tot;
// 注 ↓はマクロなので、returnはメインループに戻ります。 // 注 ↓はマクロなので、returnはメインループに戻ります。
#define wait_next { \ #define wait_next { \
tot = 0; \ tot = 0; \
while( IICAIF != 1 ){ \ while( IICAIF != 1 ){ \
if( SPD ){ \
LREL = 1; \
NOP(); \
return; \
} \
tot++; \ tot++; \
if( tot == 0 ){ \ if( tot == 0 ){ \
LREL = 1; \ LREL = 1; \
@ -88,74 +88,82 @@ u16 tot;
__interrupt void int_iic_twl( ) __interrupt void int_iic_twl( )
{ {
u8 temp; u8 vreg_adrs;
u8 pre_dat;
u8 rcvd;
u16 tot; u16 tot;
u8 state;
// WDT_Restart(); // ①
// フラグ1回目 スレーブアドレス,R/W
/* COI != 1 なら、割り込みはいらない
if( COI != 1 ){ // 被呼び出し?
LREL = 1; // 呼ばれたのは他のID
return;
}else{
ACKE0 = 1; // 自動でackを返すようにする
WREL = 1; // ウェイト解除して次のバイトを待つ
}
*/
WREL = 1; // ウェイト解除して次のバイトを待つ WREL = 1; // ウェイト解除して次のバイトを待つ
wait_next; // 1バイト受信完了を待つ WDT_Restart();
state = WAIT_ADRS;
// 2回目 R/W レジスタアドレス
IICAIF = 0;
temp = IICA;
WREL = 1;
vreg_adrs = adrs_table_twl_ext2int( temp );
// 3回目
// スタートコンディションか、データ受信完了フラグ待ち
while( 1 ) while( 1 )
{ {
u8 my_iics = IICS; u8 my_iics;
if( my_iics & 0x01 ) // SPD wait_next; // 1バイト受信完了を待つ
{ // 強制終了
LREL = 1; my_iics = IICS;
return; IICAIF = 0;
}
else if( my_iics & 0x02 ) // ( STD && !SPD ) if( my_iics & 0x02 ) // ( STD && !SPD )
{ {
// 送信 // (スタートコンディション検出) // スタートコンディションがきた
pre_dat = vreg_twl_read( vreg_adrs ); // mcu内部アドレスを渡す。一バイト目の準備 IICBに書き込むとウェイト解除 if( !TRC ) // 送信方向フラグ 0:マイコンが受信
{
// 自局をRで呼ばれるのを待つ // ①マイコンが応答できず、TWLがリトライしたときとか
wait_next; // ここに来るのはスレーブ呼び出しの時 //
IICAIF = 0; WREL = 1;
if( COI != 1 ) state = WAIT_ADRS;
{ // 被呼び出し? /// レジスタアドレスが書かれるのを待つ
LREL = 1; // 呼ばれたのは他のIDあれ }
return; else
{
// ③R Rでのスレーブ呼び出し(リスタートコンディション) //
IICA = vreg_twl_read( vreg_adrs ); // データ送信
// ストップ待ち後、LREL = 1 にしないと、送信バッファが破壊されることがある
state = DATA_READED;
} }
IICA = pre_dat; // データを送る。ウェイトも解除される。
wait_next;
// 4回目。(送信データ後の、ACK/NACK後) どうしても発生してしまう。
IICAIF = 0; // おしまい
LREL = 1;
return;
} }
else if( IICAIF && (( my_iics & 0x03 ) == 0 )) // !STD && !SPD ) else if( ( my_iics & 0x03 ) == 0 ) // !STD && !SPD )
{ {
// 受信 // // 何らか受信
IICAIF = 0; rcvd = IICA;
temp = IICA;
WREL = 1; WREL = 1;
// 通常アクセス(ライト) // if( state == WAIT_ADRS )
LREL = 1; // スタートコンディション待ちへ(連続書き込み未対応のため) {
vreg_twl_write( vreg_adrs, temp ); // ②
return; // 受信おしまい // vreg_adrs = adrs_table_twl_ext2int( rcvd );
/// データが書かれるか、リスタートで読み出されるのを待つ
state = WAIT_DATA;
}
else if( state == DATA_READED )
{
// データ1バイト送信後発生する
LREL = 1;
return;
}
else
{
// ③W
// データ書き込まれ
LREL = 1; // スタートコンディション待ちへ(連続書き込み未対応のため)
vreg_twl_write( vreg_adrs, rcvd );
return; // 受信おしまい //
}
}
else if( my_iics & 0x01 ) // SPD
{
// 終了
LREL = 1;
return;
}
else
{
NOP();
} }
} }
} }

View File

@ -25,6 +25,7 @@
#include "vreg_twl.h" #include "vreg_twl.h"
#include "i2c_mcu.h" #include "i2c_mcu.h"
#include "i2c_twl.h"
#include "rtc.h" #include "rtc.h"
@ -32,6 +33,10 @@
#include "pm.h" #include "pm.h"
#include "sw.h"
#include "wdt.h"
//========================================================= //=========================================================
#endif #endif

View File

@ -9,9 +9,6 @@
#include "led.h" #include "led.h"
#ifdef _MODEL_CTR_NOTIFY_FULLCOLOR_
// ======================================================== // ========================================================
// TPS0 // TPS0
#define BIT_PRS012 ( 1 << 2 ) #define BIT_PRS012 ( 1 << 2 )
@ -41,13 +38,16 @@ uni_info_LED info_LED;
// 赤LEDの電池残量LEDの点滅パターン // 赤LEDの電池残量LEDの点滅パターン
uni_led_red_batt_empty led_red_batt_empty; st_led_red_batt_empty led_red_batt_empty;
u8* p_LED_duty_WiFi; u8* p_LED_duty_WiFi;
// フルカラーとの自動判別のため、一時領域としてもっておく
u8 LED_duty_pow_blu_Mirror = 0;
bit LED_pow_red_Mirror;
bit infoLed_off;
// ======================================================== // ========================================================
#define led_fade_to( now, goal ) now = fade_to( now, goal ) #define led_fade_to( now, goal ) now = fade_to( now, goal )
@ -136,7 +136,8 @@ void LED_init( )
#endif #endif
TO0 = 0; // タイマー動作中で、タイマー出力にしてないときのピンのラッチ。タイマー出力を使わないなら0 TO0 = 0; // タイマー動作中で、タイマー出力にしてないときのピンのラッチ。タイマー出力を使わないなら0
TOE0 = 0b0000000011101110; // TOxをタイマーモジュールが制御 TOE0 = 0b0000000001101010; // TOxをタイマーモジュールが制御
TS0 = 0b0000000011101111; // 動作開始 TS0 = 0b0000000011101111; // 動作開始
TDR00 = LED_BRIGHT_MAX - 1; // 周期 10bit TDR00 = LED_BRIGHT_MAX - 1; // 周期 10bit
@ -164,15 +165,17 @@ void LED_init( )
if( system_status.reboot ) if( system_status.reboot )
{ {
vreg_ctr[VREG_C_LED_POW] = LED_POW_ILM_AUTO; vreg_ctr[VREG_C_LED_POW] = LED_POW_ILM_AUTO;
LED_duty_pow_blu_Mirror = LED_BRIGHT_MAX;
if( system_status.info_fullcolor ) if( system_status.info_fullcolor )
{ {
LED_duty_pow_blu = LED_BRIGHT_MAX; LED_duty_pow_blu = LED_duty_pow_blu_Mirror;
} }
else else
{ {
LED_duty_old_pow_blu = LED_BRIGHT_MAX; LED_duty_old_pow_blu = LED_duty_pow_blu_Mirror;
} }
} }
infoLed_off = 0;
} }
@ -212,102 +215,74 @@ enum LED_ILUM_MODE{
======================================================== */ ======================================================== */
void tsk_led_pow( ) void tsk_led_pow( )
{ {
// tsk_led_powを呼び出すrengeどんが、タスク関数の配列をリンク時 // お知らせランプフルカラー版 /////////////////////
// に決めるてROMにもっているので、ここで分岐するしかない orz switch ( vreg_ctr[VREG_C_LED_POW] )
if( system_status.info_fullcolor )
{ {
// お知らせランプフルカラー版 ///////////////////// // 自動切り替え
switch ( vreg_ctr[VREG_C_LED_POW] ) case ( LED_POW_ILM_AUTO ):
switch ( system_status.pwr_state )
{ {
// 自動切り替え case SLEEP:
case ( LED_POW_ILM_AUTO ):
switch ( system_status.pwr_state )
{
case SLEEP:
led_pow_hotaru( );
break;
case ON:
led_pow_normal( );
break;
default:
break;
}
break;
case ( LED_POW_ILM_HOTARU ):
led_pow_hotaru( ); led_pow_hotaru( );
break; break;
case ( LED_POW_ILM_ON ): case ON:
default:
led_pow_normal( ); led_pow_normal( );
break; break;
case ( LED_POW_ILM_OFF ): default:
led_fade_to( LED_duty_pow_blu, 0 );
LED_pow_red = 0;
break;
case ( LED_POW_ILM_ONLY_RED ):
LED_duty_pow_blu = 0;
LED_pow_red = 1;
break;
case ( LED_POW_ILM_ONLY_BLUE ):
LED_duty_pow_blu = LED_BRIGHT_MAX;
LED_pow_red = 0;
break; break;
} }
break;
case ( LED_POW_ILM_HOTARU ):
led_pow_hotaru( );
break;
case ( LED_POW_ILM_ON ):
default:
led_pow_normal( );
break;
case ( LED_POW_ILM_OFF ):
led_fade_to( LED_duty_pow_blu_Mirror, 0 );
LED_pow_red_Mirror = 0;
break;
case ( LED_POW_ILM_ONLY_RED ):
LED_duty_pow_blu_Mirror = 0;
LED_pow_red_Mirror = 1;
break;
case ( LED_POW_ILM_ONLY_BLUE ):
LED_duty_pow_blu_Mirror = LED_BRIGHT_MAX;
LED_pow_red_Mirror = 0;
break;
}
// 実際にLEDの更新
if( system_status.info_fullcolor )
{
LED_duty_pow_blu = LED_duty_pow_blu_Mirror;
LED_pow_red = LED_pow_red_Mirror;
} }
else else
{ {
// 旧仕様 ///////////////////////////////////////// LED_duty_old_pow_blu = LED_duty_pow_blu_Mirror;
switch ( vreg_ctr[VREG_C_LED_POW] ) LED_old_pow_red = LED_pow_red_Mirror;
}
if( vreg_ctr[VREG_C_BT_REMAIN] <= BATT_TH_EMPTY )
{
if( system_status.info_fullcolor )
{ {
// 自動切り替え LED_duty_notify_blu = 0;
case ( LED_POW_ILM_AUTO ): LED_duty_notify_grn = 0;
switch ( system_status.pwr_state ) LED_duty_notify_red = LED_pow_red_Mirror ? 255: 0;
{ }
case SLEEP: else
led_pow_hotaru_old( ); {
break; LED_duty_old_NOTIFY = LED_pow_red_Mirror ? 255: 0;
case ON:
led_pow_normal_old( );
break;
default:
break;
}
break;
case ( LED_POW_ILM_HOTARU ):
led_pow_hotaru_old( );
break;
case ( LED_POW_ILM_ON ):
default:
led_pow_normal_old( );
break;
case ( LED_POW_ILM_OFF ):
led_fade_to( LED_duty_old_pow_blu, 0 );
led_fade_to( LED_duty_old_pow_red, 0 );
break;
case ( LED_POW_ILM_ONLY_RED ):
LED_duty_old_pow_blu = 0;
LED_duty_old_pow_red = LED_BRIGHT_MAX;
break;
case ( LED_POW_ILM_ONLY_BLUE ):
LED_duty_old_pow_blu = LED_BRIGHT_MAX;
LED_duty_old_pow_red = 0;
break;
} }
} }
} }
@ -327,27 +302,24 @@ static void led_pow_normal( )
if( vreg_ctr[VREG_C_BT_REMAIN] <= BATT_TH_EMPTY ) if( vreg_ctr[VREG_C_BT_REMAIN] <= BATT_TH_EMPTY )
{ {
// 赤点滅 // 赤点滅
led_fade_to( LED_duty_pow_blu, 0 ); led_fade_to( LED_duty_pow_blu_Mirror, 0 );
// 赤の点滅パターンも指定できる // 赤の点滅パターンも指定できる
delay += 1; delay += 1;
if( delay < 16 ) // フレームの保持時間稼ぎ if( delay < 64 ) // フレームの保持時間稼ぎ
{ {
return; return;
} }
delay = 0; delay = 0;
if( ( led_red_batt_empty.bits & ( 1 << red_blink_poi )) != 1 ) if( led_red_batt_empty.dats[ red_blink_poi / 8 ] & ( 1 << ( red_blink_poi % 8 )) )
{ {
LED_pow_red = 1; LED_pow_red_Mirror = 1;
LED_duty_notify_red = 255;
} }
else else
{ {
LED_pow_red = 0; LED_pow_red_Mirror = 0;
LED_duty_notify_red = 0;
} }
red_blink_poi += 1; red_blink_poi += 1;
if( red_blink_poi >= 32 ) if( red_blink_poi >= 32 )
{ {
@ -357,78 +329,18 @@ static void led_pow_normal( )
else if( vreg_ctr[VREG_C_BT_REMAIN] <= BATT_TH_LO ) else if( vreg_ctr[VREG_C_BT_REMAIN] <= BATT_TH_LO )
{ {
// 赤点灯 // 赤点灯
led_fade_to( LED_duty_pow_blu, 0 ); led_fade_to( LED_duty_pow_blu_Mirror, 0 );
LED_pow_red = 1; LED_pow_red_Mirror = 1;
return;
} }
else else
{ {
// 青点灯 // 青点灯
led_fade_to( LED_duty_pow_blu, vreg_ctr[VREG_C_LED_BRIGHT] ); led_fade_to( LED_duty_pow_blu_Mirror, vreg_ctr[VREG_C_LED_BRIGHT] );
LED_pow_red = 0; LED_pow_red_Mirror = 0;
} }
return;
} }
/* ========================================================
 
======================================================== */
static void led_pow_normal_old( )
{
static u8 state;
static u8 red_blink_poi;
u8 temp;
if( vreg_ctr[VREG_C_BT_REMAIN] <= BATT_TH_EMPTY )
{
// 赤点滅
led_fade_to( LED_duty_old_pow_blu, 0 );
state += 1;
if( state < 16 )
{
return;
}
state = 0;
if( ( led_red_batt_empty.bits & ( 1 << red_blink_poi )) != 1 )
{
LED_duty_old_pow_red = LED_BRIGHT_MAX;
}
else
{
LED_duty_old_pow_red = LED_BRIGHT_MAX;
}
red_blink_poi += 1;
if( red_blink_poi >= 32 )
{
red_blink_poi = 0;
}
}
else if( vreg_ctr[VREG_C_BT_REMAIN] <= BATT_TH_LO )
{
// 赤点灯
led_fade_to( LED_duty_old_pow_blu, 0 );
LED_duty_old_pow_red = LED_BRIGHT_MAX;
return;
}
else
{
// 青点灯
led_fade_to( LED_duty_old_pow_blu, vreg_ctr[VREG_C_LED_BRIGHT] );
LED_pow_red = 0;
}
return;
}
/* ======================================================== /* ========================================================
======================================================== */ ======================================================== */
@ -455,12 +367,12 @@ static void led_pow_hotaru( )
if( vreg_ctr[VREG_C_BT_REMAIN] <= BATT_TH_LO ) if( vreg_ctr[VREG_C_BT_REMAIN] <= BATT_TH_LO )
{ {
blue_to = 0; blue_to = 0;
LED_pow_red = 1; LED_pow_red_Mirror = 1;
} }
else else
{ {
blue_to = vreg_ctr[VREG_C_LED_BRIGHT]; blue_to = vreg_ctr[VREG_C_LED_BRIGHT];
LED_pow_red = 0; LED_pow_red_Mirror = 0;
} }
break; break;
@ -468,7 +380,7 @@ static void led_pow_hotaru( )
// フェードアウト // フェードアウト
if( vreg_ctr[VREG_C_BT_REMAIN] <= BATT_TH_LO ) if( vreg_ctr[VREG_C_BT_REMAIN] <= BATT_TH_LO )
{ {
LED_pow_red = 0; LED_pow_red_Mirror = 0;
} }
else else
{ {
@ -478,19 +390,19 @@ static void led_pow_hotaru( )
} }
// LED更新 // LED更新
if( LED_duty_pow_blu != blue_to ) if( LED_duty_pow_blu_Mirror != blue_to )
{ {
if( LED_duty_pow_blu > blue_to ) if( LED_duty_pow_blu_Mirror > blue_to )
{ {
LED_duty_pow_blu -= 1; LED_duty_pow_blu_Mirror -= 1;
} }
else else
{ {
LED_duty_pow_blu += 2; LED_duty_pow_blu_Mirror += 2;
} }
} }
if( LED_duty_pow_blu == blue_to ) if( LED_duty_pow_blu_Mirror == blue_to )
{ {
state += 1; state += 1;
} }
@ -500,80 +412,6 @@ static void led_pow_hotaru( )
/* ========================================================
======================================================== */
static void led_pow_hotaru_old( )
{
static u8 delay;
static u8 state;
static u16 blue_to;
if( delay != 0 )
{
delay -= 1;
return;
}
delay = 4;
switch ( state )
{
// フェードイン
case ( 0 ):
case ( 2 ):
case ( 4 ):
if( vreg_ctr[VREG_C_BT_REMAIN] <= BATT_TH_LO )
{
blue_to = 0;
LED_duty_old_pow_red = vreg_ctr[VREG_C_LED_BRIGHT];
}
else
{
blue_to = vreg_ctr[VREG_C_LED_BRIGHT];
LED_duty_old_pow_red = 0;
}
break;
default:
// フェードアウト
if( vreg_ctr[VREG_C_BT_REMAIN] <= BATT_TH_LO )
{
LED_duty_old_pow_red = 0;
}
else
{
blue_to = 2;
}
break;
}
// LED更新
if( LED_duty_old_pow_blu != blue_to )
{
if( LED_duty_old_pow_blu > blue_to )
{
LED_duty_old_pow_blu -= 1;
}
else
{
LED_duty_old_pow_blu += 2;
}
}
if( LED_duty_old_pow_blu == blue_to )
{
state += 1;
}
return;
}
/* ======================================================== /* ========================================================
* 使 * * 使 *
LED_Wifi 3 LED_Wifi 3
@ -680,48 +518,74 @@ void tsk_led_notify( )
return; return;
} }
// 次のフレームに進める? if( system_status.pwr_state == ON_TRIG )
if( time_to_next_frame == 0 )
{ {
time_to_next_frame = info_LED.info_LED.term; LED_duty_notify_blu = 0;
LED_duty_notify_red = 0;
LED_duty_notify_grn = 0;
LED_dim_status_info_R.to = 0;
LED_dim_status_info_G.to = 0;
LED_dim_status_info_B.to = 0;
LED_dim_status_info_R.now = 0;
LED_dim_status_info_G.now = 0;
LED_dim_status_info_B.now = 0;
}
// 最後のフレームリピート( bool ) if( !infoLed_off )
if( frame >= NOTIFY_LED_TERM ) {
// 次のフレームに進める?
if( time_to_next_frame == 0 )
{ {
if( info_LED.info_LED.last_loop == 255 ) time_to_next_frame = info_LED.info_LED.term;
// 最後のフレームリピート( bool )
if( frame >= NOTIFY_LED_TERM -1 )
{ {
vreg_ctr[ VREG_C_LED_NOTIFY_FLAG ] |= REG_BIT_IN_LOOP; if( info_LED.info_LED.last_loop == 255 )
}
else
{
if( loops_to_go != 0 )
{ {
loops_to_go -= 1; vreg_ctr[ VREG_C_LED_NOTIFY_FLAG ] |= REG_BIT_IN_LOOP;
} }
else else
{ {
loops_to_go = info_LED.info_LED.last_loop; if( loops_to_go != 0 )
frame = 0; {
loops_to_go -= 1;
}
else
{
loops_to_go = info_LED.info_LED.last_loop;
frame = 0;
}
} }
} }
else
{
vreg_ctr[ VREG_C_LED_NOTIFY_FLAG ] &= ~REG_BIT_IN_LOOP;
frame = (( frame + 1 ) & 0x1F );
}
LED_dim_status_info_R.to = info_LED.info_LED.red[frame] * 128;
LED_dim_status_info_G.to = info_LED.info_LED.grn[frame] * 128;
LED_dim_status_info_B.to = info_LED.info_LED.blu[frame] * 128;
// グラデーションのデルタを計算
LED_dim_status_info_R.delta = (( LED_dim_status_info_R.to - LED_dim_status_info_R.now ) ) / info_LED.info_LED.fade_time;
LED_dim_status_info_G.delta = (( LED_dim_status_info_G.to - LED_dim_status_info_G.now ) ) / info_LED.info_LED.fade_time;
LED_dim_status_info_B.delta = (( LED_dim_status_info_B.to - LED_dim_status_info_B.now ) ) / info_LED.info_LED.fade_time;
} }
else time_to_next_frame -= 1;
{ }
vreg_ctr[ VREG_C_LED_NOTIFY_FLAG ] &= ~REG_BIT_IN_LOOP; else
frame += 1; {
} // フェードアウトさせる
LED_dim_status_info_R.to = 0;
LED_dim_status_info_R.to = info_LED.info_LED.red[frame] * 128; LED_dim_status_info_G.to = 0;
LED_dim_status_info_G.to = info_LED.info_LED.grn[frame] * 128; LED_dim_status_info_B.to = 0;
LED_dim_status_info_B.to = info_LED.info_LED.blu[frame] * 128; LED_dim_status_info_R.delta = 0 - LED_dim_status_info_R.now / 64;
LED_dim_status_info_G.delta = 0 - LED_dim_status_info_G.now / 64;
// グラデーションのデルタを計算 LED_dim_status_info_B.delta = 0 - LED_dim_status_info_B.now / 64;
LED_dim_status_info_R.delta = (( LED_dim_status_info_R.to - LED_dim_status_info_R.now ) ) / info_LED.info_LED.fade_time;
LED_dim_status_info_G.delta = (( LED_dim_status_info_G.to - LED_dim_status_info_G.now ) ) / info_LED.info_LED.fade_time;
LED_dim_status_info_B.delta = (( LED_dim_status_info_B.to - LED_dim_status_info_B.now ) ) / info_LED.info_LED.fade_time;
} }
time_to_next_frame -= 1;
if( system_status.info_fullcolor ) if( system_status.info_fullcolor )
{ {
@ -749,7 +613,7 @@ void tsk_led_cam( )
static u8 state_led_cam = 0; static u8 state_led_cam = 0;
static u8 task_interval; static u8 task_interval;
static u8 state_led_cam_twl; static u8 state_led_cam_twl;
u8 temp_led_brightness; u8 LED_CAM_mirror;
if( task_interval != 0 ) if( task_interval != 0 )
{ {
@ -764,24 +628,24 @@ void tsk_led_cam( )
{ {
case ( CAM_LED_OFF ): case ( CAM_LED_OFF ):
default: default:
temp_led_brightness = 0; LED_CAM_mirror = 0;
state_led_cam = 0; state_led_cam = 0;
break; break;
case ( CAM_LED_ON ): case ( CAM_LED_ON ):
temp_led_brightness = 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 )
{ {
temp_led_brightness = 1; LED_CAM_mirror = 1;
state_led_cam = 1; state_led_cam = 1;
} }
else else
{ {
temp_led_brightness = 0; LED_CAM_mirror = 0;
state_led_cam = 0; state_led_cam = 0;
} }
task_interval = 250; task_interval = 250;
@ -790,7 +654,7 @@ void tsk_led_cam( )
case ( CAM_LED_ON_PLUSE ): case ( CAM_LED_ON_PLUSE ):
if( state_led_cam == 0 ) if( state_led_cam == 0 )
{ {
temp_led_brightness = 1; LED_CAM_mirror = 1;
state_led_cam = 1; state_led_cam = 1;
task_interval = 250; task_interval = 250;
} }
@ -803,7 +667,7 @@ void tsk_led_cam( )
case ( CAM_LED_OFF_PLUSE ): case ( CAM_LED_OFF_PLUSE ):
if( state_led_cam == 0 ) if( state_led_cam == 0 )
{ {
temp_led_brightness = 0; LED_CAM_mirror = 0;
state_led_cam = 1; state_led_cam = 1;
task_interval = 250; task_interval = 250;
} }
@ -816,19 +680,19 @@ void tsk_led_cam( )
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 ):
temp_led_brightness = 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 )
{ {
temp_led_brightness = 1; LED_CAM_mirror = 1;
state_led_cam = 1; state_led_cam = 1;
} }
else else
{ {
temp_led_brightness = 0; LED_CAM_mirror = 0;
state_led_cam = 0; state_led_cam = 0;
} }
task_interval = 250; task_interval = 250;
@ -837,7 +701,7 @@ void tsk_led_cam( )
case( TWL_CAMLED_ON ): case( TWL_CAMLED_ON ):
case( TWL_CAMLED_DEF_ON ): case( TWL_CAMLED_DEF_ON ):
default: default:
temp_led_brightness = 1; LED_CAM_mirror = 1;
state_led_cam = 1; state_led_cam = 1;
break; break;
} }
@ -846,20 +710,10 @@ void tsk_led_cam( )
// 輝度更新 // // 輝度更新 //
if( system_status.info_fullcolor ) if( system_status.info_fullcolor )
{ {
LED_CAM = temp_led_brightness; LED_CAM = LED_CAM_mirror;
} }
else else
{ {
if( temp_led_brightness == 0 ) LED_old_CAM = LED_CAM_mirror;
{
LED_duty_old_CAM = 0;
}
else
{
LED_duty_old_CAM = 255;
}
} }
return;
} }
#endif

View File

@ -1,8 +1,11 @@
#ifndef __led__ #ifndef __led__
#define __led__ #define __led__
// ==================================== // ====================================
//#define LED_CHARGE P2.4 // PMÅè`
// LED_DUTY // LED_DUTY
#define LED_duty_pow_blu TDR05 #define LED_duty_pow_blu TDR05
@ -21,13 +24,14 @@
// 旧仕様 ///////////////////////////// // 旧仕様 /////////////////////////////
// LED_DUTY // LED_DUTY
#define LED_duty_old_pow_blu TDR06 #define LED_duty_old_pow_blu TDR06
#define LED_duty_old_pow_red TDR07 //#define LED_duty_old_pow_red TDR07
#define LED_duty_old_WiFi TDR03 #define LED_duty_old_WiFi TDR03
#define LED_duty_old_NOTIFY TDR05 #define LED_duty_old_NOTIFY TDR05
#define LED_duty_old_CAM TDR02 //#define LED_duty_old_CAM TDR02
#define LED_duty_old_3d TDR01 #define LED_duty_old_3d TDR01
// wifi2はPWMできません。 // wifi2はPWMできません。
//#define LED_CHARGE P2.4 #define LED_old_pow_red P1.5
#define LED_old_CAM P1.0
@ -60,8 +64,7 @@ enum LED_ILUM_MODE
enum LED_MODE_TUNE enum LED_MODE_TUNE
{ {
LED_TUNE_ILM_OFF = 0, LED_TUNE_ILM_OFF = 0,
LED_TUNE_ILM_ON, LED_TUNE_ILM_ON
LED_TUNE_ILM_SVR
}; };
@ -119,14 +122,9 @@ extern uni_info_LED info_LED;
// 赤LED 点滅向け // // 赤LED 点滅向け //
typedef struct{ typedef struct{
u8 dats[4]; u8 dats[4];
}st_u8s4; }st_led_red_batt_empty;
typedef union{ extern st_led_red_batt_empty led_red_batt_empty;
unsigned long bits;
st_u8s4 dats;
}uni_led_red_batt_empty;
extern uni_led_red_batt_empty led_red_batt_empty;
/* /*

View File

@ -236,7 +236,7 @@ void hdwinit2( )
PM3 = 0b11110000; // P31,32は簡易I2C PM3 = 0b11110000; // P31,32は簡易I2C
PM14 = 0b11111100; // debugger[1] とりあえず出力 PM14 = 0b11111100; // debugger[1] とりあえず出力
P1 = 0b00000000; P1 = 0b10000000;
P2 = 0b00000000; P2 = 0b00000000;
P4 = 0b00000000; P4 = 0b00000000;
P5 = 0b00000000; P5 = 0b00000000;

View File

@ -41,8 +41,10 @@ void main_loop( void )
iic_mcu_start( ); iic_mcu_start( );
EI( ); EI( );
system_status.pwr_state = OFF_TRIG;
if( system_status.reboot ) if( system_status.reboot )
{ {
// リブート時は電源onに上書き
#ifdef _PMIC_TWL_ #ifdef _PMIC_TWL_
if( RESET1_n ) if( RESET1_n )
#else #else
@ -52,14 +54,8 @@ void main_loop( void )
system_status.pwr_state = ON_TRIG; system_status.pwr_state = ON_TRIG;
} }
} }
else
{
// リブート時は実行されない
system_status.pwr_state = OFF_TRIG;
}
vreg_ctr_init( ); vreg_ctr_init( );
vreg_twl_init( );
read_dipsw( ); // 特定スイッチで何かするか? read_dipsw( ); // 特定スイッチで何かするか?

View File

@ -28,8 +28,8 @@ u8 rcomp;
// float temp_co_up; // float temp_co_up;
// float temp_co_dn; // float temp_co_dn;
// 256倍してある // 256倍してある
unsigned char temp_co_up; s16 temp_co_up;
unsigned char temp_co_dn; s16 temp_co_dn;
BT_VENDER battery_manufacturer = BT_VENDER_NOT_CHECKED; BT_VENDER battery_manufacturer = BT_VENDER_NOT_CHECKED;
u8 reg_shadow; // NTR PMIC レジスタミラー u8 reg_shadow; // NTR PMIC レジスタミラー
@ -174,15 +174,8 @@ err PM_BL_set( u8 dat )
intset |= REG_BIT_BL_L_OFF; intset |= REG_BIT_BL_L_OFF;
} }
/* // SoCがPWMを出すようレジスタをセットしてから遅延が有るため、ステータスを先に
SoCがPWMを出すようレジスタをセットしてから遅延が有るため // 更新してしまう。
// Write
iic_mcu_write_a_byte( IIC_SLA_PMIC, PM_REG_ADRS_BL, blset );
if( blset != 0x00 ){
wait_ms( 10 );
}
*/
vreg_ctr[VREG_C_STATUS] = (( vreg_ctr[VREG_C_STATUS] & 0b10011111 ) vreg_ctr[VREG_C_STATUS] = (( vreg_ctr[VREG_C_STATUS] & 0b10011111 )
| ( (( blset << 6 ) | ( blset << 4 )) & 0b01100000 )); | ( (( blset << 6 ) | ( blset << 4 )) & 0b01100000 ));
// PMICのBLのビットと、MCUのSTATUSレジスタのビット位置が逆なため入れ替え // PMICのBLのビットと、MCUのSTATUSレジスタのビット位置が逆なため入れ替え
@ -205,6 +198,7 @@ SoC
/// シャットダウンすることがある /// シャットダウンすることがある
{ {
wait_ms( 16 ); wait_ms( 16 );
// wait_ms( 84 ); ミツミの1stバグ回避
} }
iic_mcu_write_a_byte( IIC_SLA_PMIC, PM_REG_ADRS_BL, blset ); iic_mcu_write_a_byte( IIC_SLA_PMIC, PM_REG_ADRS_BL, blset );
@ -634,16 +628,15 @@ void tsk_batt( )
} }
} }
#if 0
// 充電 /////////////////////////// // 充電 ///////////////////////////
// 温度付きヒステリシス // 温度付きヒステリシス
if(( 86 < vreg_ctr[VREG_C_BT_TEMP] ) if(( 86 < raw_adc_temperature )
&& ( vreg_ctr[VREG_C_BT_TEMP] < 185 )) && ( raw_adc_temperature < 185 ))
{ {
temp_zone_charge_enable = 1; // 充電許可 temp_zone_charge_enable = 1; // 充電許可
} }
else if(( vreg_ctr[VREG_C_BT_TEMP] < 70 ) else if(( raw_adc_temperature < 70 )
|| ( 189 < vreg_ctr[VREG_C_BT_TEMP] )) || ( 189 < raw_adc_temperature ))
{ {
temp_zone_charge_enable = 0; // 充電禁止 temp_zone_charge_enable = 0; // 充電禁止
} }
@ -655,25 +648,16 @@ void tsk_batt( )
if(( temp_zone_charge_enable == 1 ) if(( temp_zone_charge_enable == 1 )
&& ( battery_manufacturer <= BT_VENDER_6 )) && ( battery_manufacturer <= BT_VENDER_6 ))
{ {
# ifndef _MODEL_WM0_ #ifndef _MODEL_WM0_
// CHG_ENABLEピンは /WL_RST に配線されているので // CHG_ENABLEピンは /WL_RST に配線されているので
BT_CHG_ENABLE(); // 温度範囲OKで充電再開 BT_CHG_ENABLE(); // 温度範囲OKで充電再開
} }
else else
{ {
BT_CHG_DISABLE(); // 温度危険! 充電停止 BT_CHG_DISABLE(); // 温度危険! 充電停止
# endif #endif
} }
#else
// 温度無視して充電
# ifndef _MODEL_WM0_
// CHG_ENABLEピンは /WL_RST に配線されているので
BT_CHG_ENABLE(); // 温度範囲OKで充電再開
# endif
#endif
// 充電 // // 充電 //
// →割り込み。miscの中でよろしくやってくれている。 // →割り込み。miscの中でよろしくやってくれている。
@ -720,6 +704,8 @@ void BT_init( )
}dat_16; }dat_16;
// BT_DET_P = 1; // チャージに時間が掛かるので、先に上げておく
// BT_TEMP_P = 1;
// 電池温度測定(TS,白箱判定も兼ねる) // // 電池温度測定(TS,白箱判定も兼ねる) //
while( ADCEN != 0 ) while( ADCEN != 0 )
@ -783,7 +769,7 @@ void BT_init( )
else else
{ {
// 実機、バッテリ無し // 実機、バッテリ無し
system_status.model = MODEL_JIKKI_NOBATT; system_status.model = MODEL_UNKNOWN;
} }
} }
} }
@ -799,9 +785,11 @@ void BT_init( )
else else
{ {
// 実機、残量IC NACK( バッテリ無しまたは残量IC故障 ) // 実機、残量IC NACK( バッテリ無しまたは残量IC故障 )
// 現状では、起動はさせとくが… #ifdef _ALLOW_NOBATT_
// todo?
system_status.model = MODEL_JIKKI; system_status.model = MODEL_JIKKI;
#else
system_status.model = MODEL_JIKKI_NOBATT; // 起動させない
#endif
} }
} }
@ -824,9 +812,14 @@ void BT_init( )
{ {
iic_mcu_set_wo_dma( ); iic_mcu_set_wo_dma( );
iic_mcu_write( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_BT_PARAM, 64, &BT_PARAM[ battery_manufacturer ] ); iic_mcu_write( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_BT_PARAM, 64, &BT_PARAM[ battery_manufacturer ] );
rcomp = BT_PANA_RCOMP; rcomp = BT_PANA_RCOMP;
temp_co_up = BT_PANA_TEMPCOUP; temp_co_up = BT_PANA_TEMPCOUP;
temp_co_dn = BT_PANA_TEMPCODN; temp_co_dn = BT_PANA_TEMPCODN;
/*
todo
*/
} }
// 6. 150ms以上待つ // 6. 150ms以上待つ
@ -859,7 +852,6 @@ void BT_init( )
BT_temp_update( ); // 温度のtemp。 残量ICに行きます BT_temp_update( ); // 温度のtemp。 残量ICに行きます
} }
// どの機体で走ってても不可を同じくらいにするため、ADCタスクを登録 // どの機体で走ってても不可を同じくらいにするため、ADCタスクを登録
// 電池温度監視スタート // 電池温度監視スタート
raw_adc_temperature = get_adc( ADC_SEL_BATT_TEMP ); // 温度のtemp。 raw_adc_temperature = get_adc( ADC_SEL_BATT_TEMP ); // 温度のtemp。
@ -875,7 +867,7 @@ void BT_init( )
extern u16 _dbg_rcomp;
/* ======================================================== /* ========================================================
raw_adc_temperatureに入っている値を raw_adc_temperatureに入っている値を
@ -886,8 +878,8 @@ task_status_immed BT_temp_update( )
static u8 count = 0; // たまにしか書きに行かない static u8 count = 0; // たまにしか書きに行かない
static u8 rawdat_old; static u8 rawdat_old;
static unsigned long temperature; static s16 temperature;
u16 newrcomp; s16 newrcomp;
/* /*
- 10kΩ分圧点の時 - 10kΩ分圧点の時
@ -896,33 +888,28 @@ task_status_immed BT_temp_update( )
TDK T = 81.406 - 111.81 x ratio TDK T = 81.406 - 111.81 x ratio
*/ */
if( rawdat_old != raw_adc_temperature ){ if( rawdat_old != raw_adc_temperature ){
DBG_P_n = 1;
// temperature = 81.45 - 111.9 * raw_adc_temperature/256.0; // temperature = 81.45 - 111.9 * raw_adc_temperature/256.0;
// それぞれ256倍してある // それぞれ256倍してある
temperature = 20851 - 28646 * raw_adc_temperature; temperature = ( 20851 - 112 * raw_adc_temperature + (256/2) ) /256;
vreg_ctr[VREG_C_BT_TEMP] = (u8)temperature / 256; vreg_ctr[VREG_C_BT_TEMP] = temperature;
DBG_P_n = 0;
} }
// 時々書きにゆく // 時々書きにゆく
if( count == 0 ) if( count == 0 )
{ {
DBG_P_n = 1; newrcomp = 0;
if( vreg_ctr[VREG_C_BT_TEMP] > 20 ) if( vreg_ctr[VREG_C_BT_TEMP] > 20 )
{ {
newrcomp = -( ( temperature - 20 ) * temp_co_up )/256; newrcomp = ( ( temperature - 20 ) * temp_co_up )/256;
} }
else else
{ {
newrcomp = -( ( temperature - 20 ) * temp_co_dn )/256; newrcomp = ( ( temperature - 20 ) * temp_co_dn )/256;
} }
newrcomp += rcomp; newrcomp = rcomp + newrcomp;
newrcomp = swap_endian_16( (u16)newrcomp ); newrcomp = swap_endian_16( (u16)newrcomp );
// todo _dbg_rcomp = newrcomp;
newrcomp = 0x9700;
DBG_P_n = 0;
if( iic_mcu_write if( iic_mcu_write
( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_RCOMP, 2, &newrcomp ) == ERR_SUCCESS ) ( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_RCOMP, 2, &newrcomp ) == ERR_SUCCESS )
@ -944,10 +931,15 @@ task_status_immed BT_temp_update( )
 BT_init()  BT_init()
**********************************************************/ **********************************************************/
void BT_get_left(){ void BT_get_left(){
static u8 bt_left_state; // バッテリ残量で割り込みのため
volatile static u8 force_set;
volatile static u8 force_data;
if(( vreg_ctr[ VREG_C_STATUS_1 ] & REG_BIT_GASGAUGE_ERR ) == 0 ) if(( vreg_ctr[ VREG_C_STATUS_1 ] & REG_BIT_GASGAUGE_ERR ) == 0 )
{ {
// 電池残量の取得 // 電池残量の取得
static u8 bt_left_state; // バッテリ残量で割り込みのため
static u8 bt_voltage_low_count; // todo どうにかせんとね static u8 bt_voltage_low_count; // todo どうにかせんとね
u8 temp[2]; u8 temp[2];
@ -956,12 +948,15 @@ void BT_get_left(){
if( vreg_ctr[ VREG_C_BT_VOLTAGE ] > ( 3100 / 16 / 1.25 ) ) if( vreg_ctr[ VREG_C_BT_VOLTAGE ] > ( 3100 / 16 / 1.25 ) )
{ {
bt_voltage_low_count = 0; 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 else
{ {
bt_voltage_low_count += 1; bt_voltage_low_count += 1;
if( bt_voltage_low_count == 12 ) // およそ3sec if( bt_voltage_low_count == 3*4 ) // およそ3sec
{ {
vreg_ctr[ VREG_C_BT_REMAIN ] = 0; vreg_ctr[ VREG_C_BT_REMAIN ] = 0;
set_irq( VREG_C_IRQ1, REG_BIT_BT_REMAIN ); set_irq( VREG_C_IRQ1, REG_BIT_BT_REMAIN );
@ -972,45 +967,51 @@ void BT_get_left(){
renge_task_interval_run_force = 1; renge_task_interval_run_force = 1;
} }
} }
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];
// 残量で割り込み
switch( bt_left_state )
{
case( 0 ): // 前回、バッテリーは十分にあった
if( vreg_ctr[ VREG_C_BT_REMAIN ] <= BATT_TH_LO )
{
bt_left_state = 1; // 突然バッテリ残量が減っても、Lo割り込みを入れる
set_irq( VREG_C_IRQ1, REG_BIT_BT_REMAIN );
}
break;
case( 1 ):
if( vreg_ctr[ VREG_C_BT_REMAIN ] <= BATT_TH_EMPTY )
{
bt_left_state = 2;
set_irq( VREG_C_IRQ1, REG_BIT_BT_REMAIN );
}
break;
default:
if( vreg_ctr[ VREG_C_BT_REMAIN ] > BATT_TH_LO )
{
bt_left_state = 0;
}
break;
}
} }
else else
{ {
vreg_ctr[ VREG_C_BT_REMAIN ] = 99; vreg_ctr[ VREG_C_BT_REMAIN ] = 99;
} }
// todo
if( force_set )
{
vreg_ctr[ VREG_C_BT_REMAIN ] = force_data;
}
// 残量で割り込み
switch( bt_left_state )
{
case( 0 ): // 前回、バッテリーは十分にあった
if( vreg_ctr[ VREG_C_BT_REMAIN ] <= BATT_TH_LO )
{
bt_left_state = 1; // 突然バッテリ残量が減っても、Lo割り込みを入れる
set_irq( VREG_C_IRQ1, REG_BIT_BT_REMAIN );
}
break;
case( 1 ):
if( vreg_ctr[ VREG_C_BT_REMAIN ] <= BATT_TH_EMPTY )
{
bt_left_state = 2;
set_irq( VREG_C_IRQ1, REG_BIT_BT_REMAIN );
}
else if( vreg_ctr[ VREG_C_BT_REMAIN ] > BATT_TH_LO )
{
bt_left_state = 0;
}
break;
default:
if( vreg_ctr[ VREG_C_BT_REMAIN ] > BATT_TH_EMPTY )
{
bt_left_state = 1;
}
break;
}
// PMIC-NTRに電池残量を教えてあげる // PMIC-NTRに電池残量を教えてあげる
iic_mcu_write_a_byte( IIC_SLA_CODEC, CODEC_REG_BT, iic_mcu_write_a_byte( IIC_SLA_CODEC, CODEC_REG_BT,
( vreg_ctr[ VREG_C_BT_REMAIN ] < 5 )? 1 : 0 ); // 1で電池切れ ( vreg_ctr[ VREG_C_BT_REMAIN ] <= BATT_TH_LO )? 1 : 0 ); // 1で電池切れ
} }

View File

@ -16,6 +16,11 @@
//=========================================================
#define LED_CHARGE P2.4
//========================================================= //=========================================================
enum PMIC_REG_ADRS enum PMIC_REG_ADRS
{ {
@ -134,6 +139,9 @@ task_status_immed tski_PM_LCD_off();
task_status_immed tski_PM_BL_set(); task_status_immed tski_PM_BL_set();
#define PM_Chg_Stop() { BT_TEMP_P = 0; BT_CHG_DISABLE(); while( !BT_CHG_n ){;}; LED_CHARGE = 0; }
//  これを呼ぶ前に、現在温度を教えておく必要があります。 //  これを呼ぶ前に、現在温度を教えておく必要があります。
#define PM_reset() ( iic_mcu_write_a_byte( IIC_SLA_PMIC, PM_REG_ADRS_CONT, 0x00 ) ) #define PM_reset() ( iic_mcu_write_a_byte( IIC_SLA_PMIC, PM_REG_ADRS_CONT, 0x00 ) )

View File

@ -4,7 +4,7 @@
#include "pedometer.h" #include "pedometer.h"
#define VREG_C_FREE_SIZE 24 #define VREG_C_FREE_SIZE 176
// 空いてるメモリ // 空いてるメモリ
typedef struct { typedef struct {

View File

@ -17,8 +17,7 @@
#include "..\config.h" #include "..\config.h"
#include "..\user_define.h" #include "..\user_define.h"
//#define _renge_test_
#define _renge_test_
//****************************************************************************** //******************************************************************************
bit renge_flg_interval; bit renge_flg_interval;

View File

@ -10,19 +10,23 @@
#include "led.h" #include "led.h"
#include "pm.h" #include "pm.h"
#include "rtc.h" #include "rtc.h"
#include "sw.h"
//========================================================= //=========================================================
/*
vreg_ctrから読みたいのでヘッダへ
#define INTERVAL_TSK_SW 8 #define INTERVAL_TSK_SW 8
#define CLICK_THRESHOLD 2 #define CLICK_THRESHOLD 2
#ifdef _FOR_E3_ #ifdef _FORCE_OFF_1SEC_
#define HOLD_THREASHOLD (u8)( 800 / INTERVAL_TSK_SW ) #define HOLD_THREASHOLD (u8)( 800 / INTERVAL_TSK_SW )
#define FORCEOFF_THREASHOLD (u8)( 1000 / INTERVAL_TSK_SW )
#else #else
#define HOLD_THREASHOLD (u8)( 2000 / INTERVAL_TSK_SW ) #define HOLD_THREASHOLD (u8)( 2000 / INTERVAL_TSK_SW )
#define FORCEOFF_THREASHOLD (u8)( 4000 / INTERVAL_TSK_SW )
#endif #endif
*/
//========================================================= //=========================================================
u8 SW_pow_count; u8 SW_pow_count;
@ -83,7 +87,8 @@ void tsk_sw( )
{ {
case ( ON_TRIG ): case ( ON_TRIG ):
cnt_force_off = 0; cnt_force_off = 0;
break; SW_pow_count = 0;
break;
} }
if( task_interval-- != 0 ) if( task_interval-- != 0 )
@ -126,15 +131,11 @@ void tsk_sw( )
if( cnt_force_off != 0 ) if( cnt_force_off != 0 )
{ {
#ifdef _FOR_E3_ if( ++cnt_force_off >= vreg_ctr[ VREG_C_OFF_DELAY ] * 6 );
if( ++cnt_force_off == ( 200 / INTERVAL_TSK_SW ) )
#else
if( ++cnt_force_off == ( 4000 / INTERVAL_TSK_SW ) )
#endif
{ {
// タイムアウトによる強制OFF // タイムアウトによる強制OFF
cnt_force_off = 0; cnt_force_off = 0;
vreg_ctr[ VREG_C_LED_POW ] = LED_POW_ILM_ONLY_RED; // vreg_ctr[ VREG_C_LED_POW ] = LED_POW_ILM_ONLY_RED;
system_status.pwr_state = OFF_TRIG; system_status.pwr_state = OFF_TRIG;
renge_task_interval_run_force = 1; renge_task_interval_run_force = 1;
} }

View File

@ -1,7 +1,20 @@
#ifndef _sw_ #ifndef _sw_
#define _sw_ #define _sw_
#include "config.h"
extern u8 SW_pow_count; extern u8 SW_pow_count;
extern bit SW_pow_mask; extern bit SW_pow_mask;
#define INTERVAL_TSK_SW 8
#define CLICK_THRESHOLD 2
#ifdef _FORCE_OFF_1SEC_
#define HOLD_THREASHOLD (u8)( 800 / INTERVAL_TSK_SW )
#define FORCEOFF_THREASHOLD (u8)( 1000 / INTERVAL_TSK_SW / 6 )
#else
#define HOLD_THREASHOLD (u8)( 2000 / INTERVAL_TSK_SW )
#define FORCEOFF_THREASHOLD (u8)( 4000 / INTERVAL_TSK_SW / 6 )
#endif
#endif #endif

View File

@ -211,6 +211,11 @@ task_status_immed do_command0( )
// task_status_immed do_command1( ) // task_status_immed do_command1( )
u16 _dbg_rcomp;
extern u8 raw_adc_temperature;
extern u8 iic_burst_state; extern u8 iic_burst_state;
/* ======================================================== /* ========================================================
   
@ -259,7 +264,15 @@ task_status_immed tski_mcu_info_read()
break; break;
case( 5 ): case( 5 ):
IICA = iic_mcu_read_a_byte( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_VERSION + 1 ); IICA = (u8)(( _dbg_rcomp >> 8 ) & 0xFF );
break;
case( 6 ):
IICA = (u8)( _dbg_rcomp & 0xFF );
break;
case( 7 ):
IICA = raw_adc_temperature;
break; break;
default: default:

View File

@ -22,7 +22,7 @@ static void chk_emergencyExit();
//========================================================= //=========================================================
extern bit infoLed_off;
/* ======================================================== /* ========================================================
@ -34,17 +34,16 @@ static void chk_emergencyExit();
void tsk_sys( ) void tsk_sys( )
{ {
static u8 timeout = 0; static u8 timeout = 0;
static u8 bt_status_old;
switch ( system_status.pwr_state ) switch ( system_status.pwr_state )
{ {
case OFF: //------------------------------------------------------- case OFF: //-------------------------------------------------------
// スイッチ操作などで割り込みが発生し、スリープが解除されるとここに来ます。 // スイッチ操作などで割り込みが発生し、スリープが解除されるとここに来ます。
switch ( system_status.poweron_reason ) if( system_status.poweron_reason == NONE )
{ {
case( NONE ):
// スイッチで電源on // スイッチで電源on
if( SW_pow_count != 0 ) if( SW_pow_count != 0 )
{ {
timeout = 0; timeout = 0;
@ -67,24 +66,24 @@ void tsk_sys( )
} }
// 電源投入 // 電源投入
system_status.poweron_reason = PWSW; system_status.poweron_reason = PWSW;
break;
default:
break;
} }
SW_pow_mask = 1; SW_pow_mask = 1;
timeout = 0; timeout = 0;
BT_DET_P = 1; // チャージに時間が掛かるので先に上げておく
BT_TEMP_P = 1;
// 電源投入 // // 電源投入 //
BT_DET_P = 1; // チャージに時間が掛かるので、先に上げておく
BT_TEMP_P = 1;
iic_mcu_start( ); iic_mcu_start( );
BT_init( ); // 実機やバッテリの判定、電池残量ICの設定 BT_init( ); // 実機やバッテリの判定、電池残量ICの設定
if( system_status.poweron_reason == EXT_POWER )
{
system_status.pwr_state = BT_CHARGE;
return;
}
if( system_status.model == MODEL_JIKKI_NOBATT ) if( system_status.model == MODEL_JIKKI_NOBATT )
{ {
renge_task_interval_run_force = 1; renge_task_interval_run_force = 1;
@ -142,28 +141,10 @@ void tsk_sys( )
#endif #endif
IIC_ctr_Init( ); IIC_ctr_Init( );
if( ( vreg_ctr[ VREG_C_MCU_STATUS ] & REG_BIT_STATUS_WDT_RESET )
/*
if( vreg_ctr[ VREG_C_IRQ0 ]
| vreg_ctr[ VREG_C_IRQ0 ]
| vreg_ctr[ VREG_C_IRQ0 ]
| vreg_ctr[ VREG_C_IRQ0 ]
*/
!= 0 )
{
set_irq( VREG_C_IRQ0, REG_BIT_IRQ_WDT_RESET );
}
{ {
// WDTリセット時、I2Cの初期化まで割り込み保留 // WDTリセット時、I2Cの初期化まで割り込み保留
// ほんとはここにべた書きしたくないが... // ほんとはここにべた書きしたくないが...
if( ( vreg_ctr[ VREG_C_MCU_STATUS ] & REG_BIT_STATUS_WDT_RESET ) if( ( vreg_ctr[ VREG_C_MCU_STATUS ] & REG_BIT_STATUS_WDT_RESET ) != 0 )
/*
if( vreg_ctr[ VREG_C_IRQ0 ]
| vreg_ctr[ VREG_C_IRQ0 ]
| vreg_ctr[ VREG_C_IRQ0 ]
| vreg_ctr[ VREG_C_IRQ0 ]
*/
!= 0 )
{ {
set_irq( VREG_C_IRQ0, REG_BIT_IRQ_WDT_RESET ); set_irq( VREG_C_IRQ0, REG_BIT_IRQ_WDT_RESET );
} }
@ -192,6 +173,17 @@ void tsk_sys( )
MK2L = ~INT_MSK2_WIFI_TX_KE3; MK2L = ~INT_MSK2_WIFI_TX_KE3;
#endif #endif
// リブート時、ステータスを何となく更新
if( system_status.reboot )
{
u8 bl_status_temp;
bl_status_temp = iic_mcu_read_a_byte( IIC_SLA_PMIC, PM_REG_ADRS_BL );
vreg_ctr[ VREG_C_STATUS ] |= (( bl_status_temp & 0x03 ) << 5 );
set_bit( ( iic_mcu_read_a_byte( IIC_SLA_PMIC, PM_REG_ADRS_VDD_LCD ) != 0 ),
vreg_ctr[ VREG_C_STATUS ], REG_BIT_LCD_POW );
}
system_status.reboot = 0; system_status.reboot = 0;
system_status.pwr_state = ON; system_status.pwr_state = ON;
break; break;
@ -228,19 +220,30 @@ void tsk_sys( )
NOP(); NOP();
SLP_ACK = 0; SLP_ACK = 0;
#endif #endif
system_status.pwr_state = ON;
system_status.pwr_state = ON_TRIG;
renge_task_interval_run_force = 1;
} }
break; break;
case OFF_TRIG: //--------------------------------------- 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;
if( LED_duty_pow_blu != 0 ) vreg_ctr[ VREG_C_LED_WIFI ] = WIFI_LED_OFF;
vreg_ctr[ VREG_C_LED_TUNE ] = LED_TUNE_ILM_OFF;
infoLed_off = 1;
if( system_status.info_fullcolor )
{ {
return; if( LED_duty_pow_blu != 0 )
{
return;
}
}
else
{
if( LED_duty_old_pow_blu != 0 )
{
return;
}
} }
LED_stop( ); LED_stop( );
@ -290,17 +293,30 @@ void tsk_sys( )
// no break // // no break //
case BT_CHARGE: case BT_CHARGE:
system_status.pwr_state = OFF;
if( !PM_EXTDC_n ) if( !PM_EXTDC_n )
{ {
if( !bt_status_old ){
iic_mcu_start( );
BT_init( ); // 実機やバッテリの判定、電池残量ICの設定
}
bt_status_old = 1;
// アダプタ有り:充電温度監視 // アダプタ有り:充電温度監視
BT_TEMP_P = 1; if( SW_pow_count >= 10 ) // 電源スイッチが押されるのを待つ
{
// 電源投入
system_status.poweron_reason = PWSW;
system_status.pwr_state = OFF;
}
} }
else else
{ {
bt_status_old = 0;
// 省電力へ移行 // 省電力へ移行
LED_CHARGE = 0; system_status.poweron_reason = NONE;
BT_TEMP_P = 0;
PM_Chg_Stop();
while( RWST ) while( RWST )
{;} {;}
@ -329,6 +345,9 @@ void tsk_sys( )
CKC = 0b00001000; CKC = 0b00001000;
# endif # endif
RTCIMK = 0; RTCIMK = 0;
system_status.pwr_state = OFF;
BT_DET_P = 1; // チャージに時間が掛かるので、先に上げておく
BT_TEMP_P = 1;
} }
return; return;
@ -416,15 +435,22 @@ __interrupt void intp0_slp( )
{ // SLP { // SLP
if( SLP_REQ ){ if( SLP_REQ ){
system_status.pwr_state = SLEEP_TRIG; system_status.pwr_state = SLEEP_TRIG;
renge_task_interval_run_force = 1;
}else{ }else{
system_status.pwr_state = ON_TRIG; system_status.pwr_state = ON;
if( PM_BL_set() != ERR_SUCCESS ){ PM_VDD_normMode();
renge_task_interval_run_force = 1; wait_ms( 5 ); // tdly_sw
iic_mcu_stop();
system_status.pwr_state = OFF_TRIG; #ifdef _MODEL_CTR_
} SLP_ACK = 1;
NOP(); // 適当ウェイト
NOP();
NOP();
NOP();
SLP_ACK = 0;
#endif
system_status.pwr_state = ON;
} }
renge_task_interval_run_force = 1;
} }
*/ */

View File

@ -1,26 +1,12 @@
#ifndef _USER_DEF_ #ifndef _USER_DEF_
#define _USER_DEF_ #define _USER_DEF_
#define IIC_SLV_ADDR_MONITOR 0x6E
#define IIC_T_SLAVEADDRESS 0x4A #define IIC_T_SLAVEADDRESS 0x4A
#define IIC_C_SLAVEADDRESS 0x4A #define IIC_C_SLAVEADDRESS 0x4A
#define IIC_SLA_DCP 0x50 #define IIC_SLA_DCP 0x50
#ifdef _debug_
// 8ドットのLED
# define IIC_SLA_8LEDS 0x42
# define IIC_8LEDS_REG_DO 1
# define IIC_8LEDS_REG_DI 2
# define IIC_8LEDS_REG_DIR 3
// 7セグ 4バイト版
# define IIC_SLA_DBG_MONITOR 0x44
#endif
#ifdef _debug_led_ #ifdef _debug_led_
# define DBG_LED_on { PM2.4 = 0; P2.4 = 1; } # define DBG_LED_on { PM2.4 = 0; P2.4 = 1; }
# define DBG_LED_off { PM2.4 = 1; P2.4 = 0; } # define DBG_LED_off { PM2.4 = 1; P2.4 = 0; }
@ -171,7 +157,7 @@
//#define LED_TUNE P5.2 // SLTO <20>© TO01 //#define LED_TUNE P5.2 // SLTO <20>© TO01
//#define LED_POW2 P1.4 // TO06 ( <20>Â ) //#define LED_POW2 P1.4 // TO06 ( <20>Â )
//#define LED_POW1 P1.5 // TO07 ( <20>Ô ) //#define LED_POW1 P1.5 // TO07 ( <20>Ô )
#define LED_CHARGE P2.4 //#define LED_CHARGE P2.4
#ifdef _MODEL_TEG2_ #ifdef _MODEL_TEG2_
@ -253,8 +239,6 @@
#endif #endif
#define DBG_P_n P2.2
#define KR_SW_POW ( 1 << 3 ) #define KR_SW_POW ( 1 << 3 )
#define KR_SW_WIFI ( 1 << 4 ) #define KR_SW_WIFI ( 1 << 4 )

View File

@ -21,6 +21,8 @@ extern u8 iic_burst_state;
// ******************************************************** // ********************************************************
u8 vreg_ctr[VREG_C_ENDMARK_]; u8 vreg_ctr[VREG_C_ENDMARK_];
u8 vreg_free_adrs; // アドレス飛んでるのでしばらくはこれで
bit irq_readed; // AAA型のため。 bit irq_readed; // AAA型のため。
@ -38,22 +40,24 @@ extern task_status_immed tski_mcu_info_read();
// 非ゼロの初期値の指定が必要なアドレス // 非ゼロの初期値の指定が必要なアドレス
void vreg_ctr_init( ) void vreg_ctr_init( )
{ {
vreg_ctr[VREG_C_LED_BRIGHT] = 0xFF; vreg_ctr[ VREG_C_LED_BRIGHT ] = 0xFF;
vreg_ctr[VREG_C_VCOM_T] = VCOM_DEFAULT_T; vreg_ctr[ VREG_C_VCOM_T ] = VCOM_DEFAULT_T;
vreg_ctr[VREG_C_VCOM_B] = VCOM_DEFAULT_B; vreg_ctr[ VREG_C_VCOM_B ] = VCOM_DEFAULT_B;
vreg_ctr[ VREG_C_OFF_DELAY ] = FORCEOFF_THREASHOLD;
} }
void vreg_ctr_reset( ) void vreg_ctr_reset( )
{ {
#ifdef _PMIC_TWL_ #ifdef _PMIC_TWL_
vreg_ctr[VREG_C_MCU_VER_MAJOR] = MCU_VER_MAJOR; vreg_ctr[ VREG_C_MCU_VER_MAJOR ] = MCU_VER_MAJOR;
#else #else
vreg_ctr[VREG_C_MCU_VER_MAJOR] = MCU_VER_MAJOR | 0x10; vreg_ctr[ VREG_C_MCU_VER_MAJOR ] = MCU_VER_MAJOR | 0x10;
#endif #endif
vreg_ctr[VREG_C_MCU_VER_MINOR] = MCU_VER_MINOR; vreg_ctr[ VREG_C_MCU_VER_MINOR ] = MCU_VER_MINOR;
vreg_ctr[ VREG_C_LED_BRIGHT ] = 0x28, vreg_ctr[ VREG_C_VOL_DIGITAL ] = 0x20;
vreg_ctr[ VREG_C_LED_POW ] = 0; vreg_ctr[ VREG_C_LED_POW ] = 0;
vreg_ctr[ VREG_C_LED_WIFI ] = 0; vreg_ctr[ VREG_C_LED_WIFI ] = 0;
vreg_ctr[ VREG_C_LED_CAM ] = 0; vreg_ctr[ VREG_C_LED_CAM ] = 0;
@ -62,7 +66,7 @@ void vreg_ctr_reset( )
u8 i; u8 i;
for( i = 0; i < sizeof( uni_info_LED ); i++ ) for( i = 0; i < sizeof( uni_info_LED ); i++ )
{ {
info_LED.bindata[ iic_burst_state ] = 0; info_LED.bindata[ i ] = 0;
} }
} }
} }
@ -91,28 +95,15 @@ void vreg_ctr_write( u8 adrs, u8 data )
vreg_ctr[adrs] = data; vreg_ctr[adrs] = data;
break; break;
case ( VREG_C_DBG1 ): case ( VREG_C_DBG03 ):
case ( VREG_C_DBG2 ): if( ( vreg_ctr[VREG_C_DBG01] == 'j' )
vreg_ctr[adrs] = data; && ( vreg_ctr[VREG_C_DBG02] == 'h' )
break;
case ( VREG_C_DBG3 ):
if( ( vreg_ctr[VREG_C_DBG1] == 'j' )
&& ( vreg_ctr[VREG_C_DBG2] == 'h' )
&& ( data == 'l' ) ) && ( data == 'l' ) )
{ {
renge_task_immed_add( tski_firm_update ); renge_task_immed_add( tski_firm_update );
IICAMK = 1; IICAMK = 1;
} }
vreg_ctr[ VREG_C_DBG3 ] = data; vreg_ctr[ VREG_C_DBG03 ] = data;
break;
case ( VREG_C_IRQ_MASK0 ):
case ( VREG_C_IRQ_MASK1 ):
case ( VREG_C_IRQ_MASK2 ):
case ( VREG_C_IRQ_MASK3 ):
case ( VREG_C_IRQ_MASK4 ):
vreg_ctr[adrs] = data;
break; break;
case ( VREG_C_COMMAND0 ): case ( VREG_C_COMMAND0 ):
@ -161,17 +152,6 @@ void vreg_ctr_write( u8 adrs, u8 data )
} }
break; break;
case ( VREG_C_DBG20 ):
case ( VREG_C_DBG21 ):
case ( VREG_C_DBG22 ):
case ( VREG_C_DBG23 ):
vreg_ctr[adrs] = data;
break;
case ( VREG_C_LED_BRIGHT ):
vreg_ctr[ VREG_C_LED_BRIGHT ] = data;
break;
case ( VREG_C_LED_POW ): case ( VREG_C_LED_POW ):
if( iic_burst_state == 0 ) if( iic_burst_state == 0 )
{ {
@ -180,7 +160,7 @@ void vreg_ctr_write( u8 adrs, u8 data )
} }
else if( iic_burst_state < 5 ) else if( iic_burst_state < 5 )
{ {
led_red_batt_empty.dats.dats[ iic_burst_state -1 ] = data; led_red_batt_empty.dats[ iic_burst_state -1 ] = data;
iic_burst_state += 1; iic_burst_state += 1;
} }
break; break;
@ -198,7 +178,6 @@ void vreg_ctr_write( u8 adrs, u8 data )
iic_burst_state += 1; iic_burst_state += 1;
} }
/// 非同期で動いているためここでは書かない。 /// 非同期で動いているためここでは書かない。
// 予約するだけでstopで書く // 予約するだけでstopで書く
case ( VREG_C_RTC_SEC ): case ( VREG_C_RTC_SEC ):
@ -214,10 +193,6 @@ void vreg_ctr_write( u8 adrs, u8 data )
set_rtc( adrs - VREG_C_RTC_SEC, data & 0x07 ); set_rtc( adrs - VREG_C_RTC_SEC, data & 0x07 );
break; break;
case ( VREG_C_RTC_DAY ):
set_rtc( adrs - VREG_C_RTC_SEC, data & 0x3F );
break;
case ( VREG_C_RTC_MONTH ): case ( VREG_C_RTC_MONTH ):
set_rtc( adrs - VREG_C_RTC_SEC, data & 0x1F ); set_rtc( adrs - VREG_C_RTC_SEC, data & 0x1F );
break; break;
@ -250,11 +225,6 @@ void vreg_ctr_write( u8 adrs, u8 data )
vreg_ctr[ VREG_C_RTC_ALARM_MONTH ] = ( data & 0x1F ); vreg_ctr[ VREG_C_RTC_ALARM_MONTH ] = ( data & 0x1F );
break; break;
case ( VREG_C_RTC_ALARM_YEAR ):
vreg_ctr[ VREG_C_RTC_ALARM_YEAR ] = data;
break;
case ( VREG_C_ACC_CONFIG ): case ( VREG_C_ACC_CONFIG ):
renge_task_immed_add( acc_hosu_set ); renge_task_immed_add( acc_hosu_set );
vreg_ctr[ VREG_C_ACC_CONFIG ] = data; vreg_ctr[ VREG_C_ACC_CONFIG ] = data;
@ -265,21 +235,11 @@ void vreg_ctr_write( u8 adrs, u8 data )
vreg_ctr[ VREG_C_ACC_R_ADRS ] = data; vreg_ctr[ VREG_C_ACC_R_ADRS ] = data;
break; break;
case ( VREG_C_ACC_W_ADRS ):
vreg_ctr[ VREG_C_ACC_W_ADRS ] = data;
break;
case ( VREG_C_ACC_W_BUF ): case ( VREG_C_ACC_W_BUF ):
renge_task_immed_add( acc_write ); renge_task_immed_add( acc_write );
vreg_ctr[ VREG_C_ACC_W_BUF ] = data; vreg_ctr[ VREG_C_ACC_W_BUF ] = data;
break; break;
case ( VREG_C_ACC_HOSU_L ):
case ( VREG_C_ACC_HOSU_M ):
case ( VREG_C_ACC_HOSU_H ):
vreg_ctr[adrs] = data;
break;
case ( VREG_C_ACC_HOSU_SETTING ): case ( VREG_C_ACC_HOSU_SETTING ):
if( ( data & 0x01 ) != 0 ) if( ( data & 0x01 ) != 0 )
{ {
@ -287,22 +247,19 @@ void vreg_ctr_write( u8 adrs, u8 data )
} }
break; break;
case ( VREG_C_ACC_HOSU_HOUR_BOUNDARY ): case ( VREG_CX_FREE_DATA ):
vreg_ctr[ VREG_C_ACC_HOSU_HOUR_BOUNDARY ] = data; if( vreg_free_adrs < VREG_C_FREE_SIZE )
break;
case ( VREG_C_FREE_ADRS ):
vreg_ctr[ VREG_C_FREE_ADRS ] = data;
break;
case ( VREG_C_FREE_DATA ):
if( vreg_ctr[ VREG_C_FREE_ADRS ] < VREG_C_FREE_SIZE )
{ {
pool.vreg_c_ext.vreg_c_free[ vreg_ctr[ VREG_C_FREE_ADRS ] ] = data; pool.vreg_c_ext.vreg_c_free[ vreg_free_adrs ] = data;
vreg_ctr[ VREG_C_FREE_ADRS ] += 1; vreg_free_adrs += 1;
} }
break; break;
case ( VREG_CX_FREE_ADRS ):
vreg_free_adrs = data;
break;
case ( VREG_C_COMMAND3 ): case ( VREG_C_COMMAND3 ):
switch ( data ) switch ( data )
{ {
@ -320,7 +277,34 @@ void vreg_ctr_write( u8 adrs, u8 data )
break; break;
default: default:
break; /*
case ( VREG_C_IRQ_MASK0 ):
case ( VREG_C_IRQ_MASK1 ):
case ( VREG_C_IRQ_MASK2 ):
case ( VREG_C_IRQ_MASK3 ):
case ( VREG_C_IRQ_MASK4 ):
case ( VREG_C_DBG01 ):
case ( VREG_C_DBG02 ):
case ( VREG_C_LED_BRIGHT ):
case ( VREG_C_ACC_HOSU_L ):
case ( VREG_C_ACC_HOSU_M ):
case ( VREG_C_ACC_HOSU_H ):
case ( VREG_C_ACC_HOSU_HOUR_BOUNDARY ):
case ( VREG_C_FREE_ADRS ):
case ( VREG_C_RTC_ALARM_YEAR ):
case ( VREG_C_ACC_W_ADRS ):
case ( VREG_C_VOL_DIGITAL ):
case ( VREG_C_OFF_DELAY ):
*/
if( adrs < VREG_C_ENDMARK_ )
{
vreg_ctr[adrs] = data;
break;
}
else
{
break;
}
} }
return; return;
} }
@ -350,10 +334,10 @@ u8 vreg_ctr_read( u8 adrs )
{ {
return( hosu_read() ); return( hosu_read() );
} }
else if( adrs == VREG_C_FREE_DATA ) else if( adrs == VREG_CX_FREE_DATA )
{ {
temp = pool.vreg_c_ext.vreg_c_free[ vreg_ctr[VREG_C_FREE_ADRS] ]; temp = pool.vreg_c_ext.vreg_c_free[ vreg_free_adrs ];
vreg_ctr[VREG_C_FREE_ADRS] += 1; // vreg_free_adrs += 1; // ここで加算してしまうとインデックスがずれる
return( temp ); return( temp );
} }
else if( adrs == VREG_C_RTC_SEC_FINE_L ) else if( adrs == VREG_C_RTC_SEC_FINE_L )
@ -365,7 +349,7 @@ u8 vreg_ctr_read( u8 adrs )
{ {
return( (u8)( ( rsub_temp >> 8 ) & 0xFF ) ); return( (u8)( ( rsub_temp >> 8 ) & 0xFF ) );
} }
else if( adrs == VREG_C_INFO ) else if( adrs == VREG_CX_INFO )
{ {
// I2C_mを使うので、ここからでは割り込みが使えなくて困る // I2C_mを使うので、ここからでは割り込みが使えなくて困る
// なのでタスク登録する。 // なのでタスク登録する。
@ -395,16 +379,20 @@ void vreg_ctr_after_read( u8 adrs )
// 割り込みフラグはリードでクリア // 割り込みフラグはリードでクリア
switch( adrs ) switch( adrs )
{ {
case VREG_C_IRQ0: case VREG_C_IRQ0:
case VREG_C_IRQ1: case VREG_C_IRQ1:
case VREG_C_IRQ2: case VREG_C_IRQ2:
case VREG_C_IRQ3: case VREG_C_IRQ3:
case VREG_C_IRQ4: case VREG_C_IRQ4:
vreg_ctr[ adrs ] = 0; vreg_ctr[ adrs ] = 0;
irq_readed = 1; irq_readed = 1;
break; break;
default: case VREG_CX_FREE_DATA:
vreg_free_adrs += 1;
break;
default:
break; break;
} }
} }
@ -434,14 +422,19 @@ void set_irq( u8 irqreg, u8 irq_flg )
{ {
u8 tot; u8 tot;
// DI(); if(( system_status.pwr_state == ON ) ||
if( ( vreg_ctr[ irqreg + 8 ] & irq_flg ) == 0 ){ ( system_status.pwr_state == SLEEP ) ||
vreg_ctr[ irqreg ] |= irq_flg; ( system_status.pwr_state == SLEEP_TRIG ))
IRQ0_neg; // 一瞬上げて... {
// EI(); // DI();
tot = 0; if( ( vreg_ctr[ irqreg + 8 ] & irq_flg ) == 0 ){
while( !IRQ0 && ( ++tot != 0 ) ){;} // O.D.なのでちゃんとあがるのを待つ IRQ_mcu がLに縛られてると困る(基板不良) vreg_ctr[ irqreg ] |= irq_flg;
IRQ0_ast; // 落とし直す。 IRQ0_neg; // 一瞬上げて...
// EI();
tot = 0;
while( !IRQ0 && ( ++tot != 0 ) ){;} // O.D.なのでちゃんとあがるのを待つ IRQ_mcu がLに縛られてると困る(基板不良)
IRQ0_ast; // 落とし直す。
}
} }
// EI(); // EI();
} }

View File

@ -152,9 +152,9 @@ enum VREG_C
VREG_C_VCOM_T = 0x03, VREG_C_VCOM_T = 0x03,
VREG_C_VCOM_B, VREG_C_VCOM_B,
VREG_C_DBG1 = 0x05, VREG_C_DBG01 = 0x05,
VREG_C_DBG2, VREG_C_DBG02,
VREG_C_DBG3, VREG_C_DBG03,
VREG_C_TUNE = 0x08, VREG_C_TUNE = 0x08,
VREG_C_SND_VOL, VREG_C_SND_VOL,
@ -181,12 +181,11 @@ enum VREG_C
VREG_C_COMMAND0 = 0x20, VREG_C_COMMAND0 = 0x20,
VREG_C_COMMAND1, VREG_C_COMMAND1,
VREG_C_COMMAND2, VREG_C_COMMAND2,
VREG_C_COMMAND3, // 'r' でマイコンリセット VREG_C_COMMAND3, // 'r' でマイコンリセット、 'w' でWDTリセット
VREG_C_DBG20 = 0x24, VREG_C_VOL_DIGITAL = 0x23,
VREG_C_DBG21,
VREG_C_DBG22, VREG_C_OFF_DELAY = 0x24,
VREG_C_DBG23,
VREG_C_LED_BRIGHT = 0x28, VREG_C_LED_BRIGHT = 0x28,
VREG_C_LED_POW, VREG_C_LED_POW,
@ -233,24 +232,17 @@ enum VREG_C
VREG_C_ACC_HOSU_H, VREG_C_ACC_HOSU_H,
VREG_C_ACC_HOSU_SETTING, VREG_C_ACC_HOSU_SETTING,
VREG_C_ACC_HOSU_HIST = 0x4F, VREG_C_ACC_HOSU_HIST = 0x4F,
VREG_C_ACC_HOSU_HOUR_BOUNDARY = 0x50, VREG_C_ACC_HOSU_HOUR_BOUNDARY = 0x50,
// とりあえず15バイトのスキマ
VREG_C_FREE_ADRS = 0x60,
VREG_C_FREE_DATA,
VREG_C_ENDMARK_ VREG_C_ENDMARK_
}; };
#define VREG_C_INFO 0x7F
#define VREG_CX_INFO 0x7F
#define VREG_CX_FREE_ADRS 0x60
#define VREG_CX_FREE_DATA 0x61
// VREG_C_AMBIENT_BRIGHTNESS = 0xXX, // VREG_C_AMBIENT_BRIGHTNESS = 0xXX,
/*
VREG_C_PM_INFO, // 未使用
VREG_C_BT_INFO, // 未使用
*/
/*============================================================================*/ /*============================================================================*/
void vreg_ctr_init( ); void vreg_ctr_init( );
void vreg_ctr_reset( ); void vreg_ctr_reset( );

View File

@ -8,7 +8,6 @@ TWL
#include "led.h" #include "led.h"
#include "vreg_twl.h" #include "vreg_twl.h"
#include "vreg_ctr.h" #include "vreg_ctr.h"
// ======================================================== // ========================================================
@ -28,9 +27,9 @@ extern bit twl_ver_read;
void vreg_twl_init( ) void vreg_twl_init( )
{ {
vreg_twl[ REG_TWL_INT_ADRS_MODE ] = 0x03; vreg_twl[ REG_TWL_INT_ADRS_MODE ] = 0x03;
vreg_twl[ REG_TWL_ADRS_IRQ ] = 0; vreg_twl[ REG_TWL_INT_ADRS_IRQ ] = 0;
vreg_twl[ REG_TWL_ADRS_CAM ] = 0; vreg_twl[ REG_TWL_INT_ADRS_CAM ] = 0;
vreg_twl[ REG_TWL_ADRS_TEMP0 ] = 0; vreg_twl[ REG_TWL_INT_ADRS_TEMP0 ] = 0;
} }
@ -110,9 +109,9 @@ u8 vreg_twl_read( u8 phy_adrs )
vreg_twl[ REG_TWL_INT_ADRS_POWER_INFO ] = 0x0B; vreg_twl[ REG_TWL_INT_ADRS_POWER_INFO ] = 0x0B;
}else if( vreg_ctr[ VREG_C_BT_REMAIN ] > 50 ){ }else if( vreg_ctr[ VREG_C_BT_REMAIN ] > 50 ){
vreg_twl[ REG_TWL_INT_ADRS_POWER_INFO ] = 0x07; vreg_twl[ REG_TWL_INT_ADRS_POWER_INFO ] = 0x07;
}else if( vreg_ctr[ VREG_C_BT_REMAIN ] > 25 ){ }else if( vreg_ctr[ VREG_C_BT_REMAIN ] > BATT_TH_LO ){
vreg_twl[ REG_TWL_INT_ADRS_POWER_INFO ] = 0x03; vreg_twl[ REG_TWL_INT_ADRS_POWER_INFO ] = 0x03;
}else if( vreg_ctr[ VREG_C_BT_REMAIN ] > 5 ){ }else if( vreg_ctr[ VREG_C_BT_REMAIN ] > BATT_TH_EMPTY ){
vreg_twl[ REG_TWL_INT_ADRS_POWER_INFO ] = 0x01; vreg_twl[ REG_TWL_INT_ADRS_POWER_INFO ] = 0x01;
}else{ }else{
vreg_twl[ REG_TWL_INT_ADRS_POWER_INFO ] = 0x00; vreg_twl[ REG_TWL_INT_ADRS_POWER_INFO ] = 0x00;

View File

@ -1,24 +1,28 @@
C:\WINDOWS\system32\cmd.exe /c touch magic.c C:\WINDOWS\system32\cmd.exe /c touch magic.c
"C:\Program Files\NEC Electronics Tools\CC78K0R\W2.10\bin\cc78k0r.exe" -c9F0104 -y"C:\Program Files\NEC Electronics Tools\DEV" -_msgoff -irenge -i"C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r" -ms -qvjwt -sainter_asm -zp -no magic.c "C:\Program Files\NEC Electronics Tools\CC78K0R\W2.10\bin\cc78k0r.exe" -c9F0104 -y"C:\Program Files\NEC Electronics Tools\DEV" -_msgoff -irenge -i"C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r" -ms -qvjl2wt -sainter_asm -zp -no pm.c
pm.c(67) : CC78K0R warning W0401: Conversion may lose significant digits
pm.c(106) : CC78K0R warning W0401: Conversion may lose significant digits
pm.c(180) : CC78K0R warning W0401: Conversion may lose significant digits
pm.c(188) : CC78K0R warning W0401: Conversion may lose significant digits
pm.c(484) : CC78K0R warning W0401: Conversion may lose significant digits
pm.c(487) : CC78K0R warning W0401: Conversion may lose significant digits
pm.c(894) : CC78K0R warning W0401: Conversion may lose significant digits
pm.c(1015) : CC78K0R warning W0401: Conversion may lose significant digits
batt_params.h(71) : CC78K0R warning W0401: Conversion may lose significant digits
batt_params.h(72) : CC78K0R warning W0401: Conversion may lose significant digits
batt_params.h(77) : CC78K0R warning W0401: Conversion may lose significant digits
Compilation complete, 0 error(s) and 11 warning(s) found.
"C:\Program Files\NEC Electronics Tools\RA78K0R\W1.31\bin\ra78k0r.exe" -c9F0104 -y"C:\Program Files\NEC Electronics Tools\DEV" -_msgoff inter_asm\pm.asm
Assembly complete, 0 error(s) and 0 warning(s) found.
"C:\Program Files\NEC Electronics Tools\CC78K0R\W2.10\bin\cc78k0r.exe" -c9F0104 -y"C:\Program Files\NEC Electronics Tools\DEV" -_msgoff -irenge -i"C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r" -ms -qvjl2wt -sainter_asm -zp -no magic.c
Compilation complete, 0 error(s) and 0 warning(s) found. Compilation complete, 0 error(s) and 0 warning(s) found.
"C:\Program Files\NEC Electronics Tools\RA78K0R\W1.31\bin\ra78k0r.exe" -c9F0104 -y"C:\Program Files\NEC Electronics Tools\DEV" -_msgoff inter_asm\magic.asm "C:\Program Files\NEC Electronics Tools\RA78K0R\W1.31\bin\ra78k0r.exe" -c9F0104 -y"C:\Program Files\NEC Electronics Tools\DEV" -_msgoff inter_asm\magic.asm
Assembly complete, 0 error(s) and 0 warning(s) found. Assembly complete, 0 error(s) and 0 warning(s) found.
"C:\Program Files\NEC Electronics Tools\CC78K0R\W2.10\bin\cc78k0r.exe" -c9F0104 -y"C:\Program Files\NEC Electronics Tools\DEV" -_msgoff -irenge -i"C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r" -ms -qvjwt -sainter_asm -zp -no vreg_ctr.c "C:\Program Files\NEC Electronics Tools\CC78K0R\W2.10\bin\cc78k0r.exe" -c9F0104 -y"C:\Program Files\NEC Electronics Tools\DEV" -_msgoff -irenge -i"C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r" -ms -qvjl2wt -sainter_asm -zp -no task_sys.c
vreg_ctr.c(84) : CC78K0R warning W0401: Conversion may lose significant digits task_sys.c(182) : CC78K0R warning W0401: Conversion may lose significant digits
vreg_ctr.c(143) : CC78K0R warning W0401: Conversion may lose significant digits task_sys.c(417) : CC78K0R warning W0401: Conversion may lose significant digits
vreg_ctr.c(152) : CC78K0R warning W0401: Conversion may lose significant digits Compilation complete, 0 error(s) and 2 warning(s) found.
vreg_ctr.c(153) : CC78K0R warning W0401: Conversion may lose significant digits "C:\Program Files\NEC Electronics Tools\RA78K0R\W1.31\bin\ra78k0r.exe" -c9F0104 -y"C:\Program Files\NEC Electronics Tools\DEV" -_msgoff inter_asm\task_sys.asm
vreg_ctr.c(155) : CC78K0R warning W0401: Conversion may lose significant digits
vreg_ctr.c(157) : CC78K0R warning W0401: Conversion may lose significant digits
vreg_ctr.c(158) : CC78K0R warning W0401: Conversion may lose significant digits
vreg_ctr.c(160) : CC78K0R warning W0401: Conversion may lose significant digits
vreg_ctr.c(191) : CC78K0R warning W0401: Conversion may lose significant digits
vreg_ctr.c(236) : CC78K0R warning W0401: Conversion may lose significant digits
vreg_ctr.c(241) : CC78K0R warning W0401: Conversion may lose significant digits
vreg_ctr.c(246) : CC78K0R warning W0401: Conversion may lose significant digits
vreg_ctr.c(250) : CC78K0R warning W0401: Conversion may lose significant digits
Compilation complete, 0 error(s) and 13 warning(s) found.
"C:\Program Files\NEC Electronics Tools\RA78K0R\W1.31\bin\ra78k0r.exe" -c9F0104 -y"C:\Program Files\NEC Electronics Tools\DEV" -_msgoff inter_asm\vreg_ctr.asm
Assembly complete, 0 error(s) and 0 warning(s) found. Assembly complete, 0 error(s) and 0 warning(s) found.
"C:\Program Files\NEC Electronics Tools\RA78K0R\W1.31\bin\lk78k0r.exe" -y"C:\Program Files\NEC Electronics Tools\DEV" -_msgoff -obsr.lmf "..\..\..\Program Files\NEC Electronics Tools\CC78K0R\W2.10\lib78k0r\s0rm.rel" -go85h,0FC00h,1024 -gi0FFFFFFFFFFFFFFFFFFFFh -pbsr_k0r.map -nkd -gb7EFBFFh -b"C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\lib78k0r\fsl.lib" -bcl0rdm.lib -bcl0rm.lib -bcl0rmf.lib -i"C:\Program Files\NEC Electronics Tools\CC78K0R\W2.10\lib78k0r" -dbsr_mcu.dr -s -w0 loader.rel pm.rel i2c_ctr.rel main.rel magic.rel WDT.rel i2c_mcu.rel i2c_twl.rel led.rel rtc.rel vreg_ctr.rel vreg_twl.rel adc.rel renge.rel accero.rel self_flash.rel sw.rel task_debug.rel task_misc.rel task_sys.rel pedo_alg_thre_det2.rel ini_VECT.rel task_status.rel "C:\Program Files\NEC Electronics Tools\RA78K0R\W1.31\bin\lk78k0r.exe" -y"C:\Program Files\NEC Electronics Tools\DEV" -_msgoff -obsr.lmf "..\..\..\Program Files\NEC Electronics Tools\CC78K0R\W2.10\lib78k0r\s0rm.rel" -go85h,0FC00h,1024 -gi0FFFFFFFFFFFFFFFFFFFFh -pbsr_k0r.map -nkd -gb7EFBFFh -b"C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\lib78k0r\fsl.lib" -bcl0rdm.lib -bcl0rm.lib -bcl0rmf.lib -i"C:\Program Files\NEC Electronics Tools\CC78K0R\W2.10\lib78k0r" -dbsr_mcu.dr -s -w0 loader.rel pm.rel i2c_ctr.rel main.rel magic.rel WDT.rel i2c_mcu.rel i2c_twl.rel led.rel rtc.rel vreg_ctr.rel vreg_twl.rel adc.rel renge.rel accero.rel self_flash.rel sw.rel task_debug.rel task_misc.rel task_sys.rel pedo_alg_thre_det2.rel ini_VECT.rel task_status.rel
Link complete, 0 error(s) and 0 warning(s) found. Link complete, 0 error(s) and 0 warning(s) found.

View File

@ -78,10 +78,10 @@ Symbol Type=OFF
Language=C Language=C
Kanji=SJIS Kanji=SJIS
[Source] [Source]
Geometry=285, 104, 812, 601 Geometry=196, 23, 873, 815
Window=Normal Window=Normal
DispStart=60 DispStart=331
CaretPos=84,0 CaretPos=335,0
Mode=Normal Mode=Normal
DispFile= DispFile=
Address1= Address1=
@ -139,19 +139,11 @@ SaveRange=Screen
SaveStart= SaveStart=
SaveEnd= SaveEnd=
Accumulative=ON Accumulative=ON
[Source1]
Geometry=75, 75, 812, 601
Window=Normal
DispStart=343
CaretPos=357,23
Mode=Normal
DispFile=vreg_ctr.c
Accumulative=ON
[Assemble] [Assemble]
Geometry=19, 497, 600, 400 Geometry=19, 497, 600, 400
Window=Normal Window=Normal
DispStart=704 DispStart=16664
CaretPos=704,27 CaretPos=16664,27
Address1= Address1=
Address2= Address2=
Address3= Address3=
@ -822,7 +814,7 @@ L529=IICWL1
L530=IICWH1 L530=IICWH1
L531=SVA1 L531=SVA1
[Local Variable] [Local Variable]
Geometry=772, 680, 400, 244 Geometry=860, 559, 400, 244
Window=Normal Window=Normal
Boundary=13041851 Boundary=13041851
Mode=Proper Mode=Proper
@ -891,8 +883,8 @@ PSW=1
ES=1 ES=1
CS=1 CS=1
[Event Manager] [Event Manager]
Geometry=0, 0, 0, 0 Geometry=50, 50, 500, 200
Window=Hide Window=Normal
Sort by=Unsort Sort by=Unsort
Detail=OFF Detail=OFF
[Event Set] [Event Set]
@ -968,47 +960,64 @@ Count=0
Geometry=884, 10, 440, 653 Geometry=884, 10, 440, 653
Window=Normal Window=Normal
Boundary=18088086 Boundary=18088086
0=.info_LED,.,N,A,+,1 0=.p7.0,P,S,A,+,1
1=.list_id,P,N,A,+,1 1=.p5.1,P,S,A,+,1
2=.TDR02,P,S,A,+,1 2=.pu7.0,P,S,A,+,1
3=.P4.2,P,S,A,+,1 3=.pm7.0,P,S,A,+,1
4=+pool,.,N,A,-,1 4=.pu5.1,P,S,A,+,1
5=.p_LED_duty_WiFi,.,N,A,+,1 5=.pm5.1,P,S,A,+,1
6=.system_status,.,N,A,+,1 6=.temperature,D,N,A,+,1
7=.psw,P,R,A,+,1 7=.raw_adc_temperature,D,N,A,+,1
8=.vreg_ctr,P,N,A,+,1 8=.info_LED,.,N,A,+,1
9=.tasks_immed,P,N,A,+,1 9=.list_id,P,N,A,+,1
Line=10 10=.TDR02,P,S,A,+,1
11=.P4.2,P,S,A,+,1
12=.pool,.,N,A,+,1
13=.p_LED_duty_WiFi,.,N,A,+,1
14=.system_status,.,N,A,+,1
15=.psw,P,R,A,+,1
16=.vreg_ctr,P,N,A,+,1
17=.tasks_immed,P,N,A,+,1
18=.rcomp,D,N,A,+,1
19=.temp_co_dn,D,N,A,+,1
20=.raw_adc_temperature,P,N,A,+,1
21=.temperature,D,N,A,+,1
22=.temp_co_up,D,N,A,+,1
Line=23
[Quick Watch] [Quick Watch]
0=iic_mcu_bus_status,P,A,1 0=TDR02,P,A,1
1=temp,P,A,1 1=vreg_ctr,P,A,1
2=adc_raw_vol,P,A,1 2=info_LED,P,A,1
3=force_update_adc,P,A,1 3=pool,P,A,1
4=DMAMK1,P,A,1 4=rcomp,P,A,1
5=DMAIF1,P,A,1 5=temp_co_up,P,A,1
6=tasks_immed,P,A,1 6=temp_co_dn,P,A,1
7=list_id,P,A,1 7=temperature,P,A,1
8=psw,P,A,1 8=raw_adc_temperature,P,A,1
9=system_status,P,A,1 9=pu70,P,A,1
10=p_LED_duty_WiFi,P,A,1 10=pm7.0,P,A,1
11=P4.2,P,A,1 11=pu7.0,P,A,1
12=TDR02,P,A,1 12=p7.0,P,A,1
13=vreg_ctr,P,A,1 13=p5.1,P,A,1
14=info_LED,P,A,1 14=pu5.1,P,A,1
15=pool,P,A,1 15=pm5.1,P,A,1
[Software Break] [Software Break]
Geometry=1085, 803, 500, 296 Geometry=1085, 803, 500, 296
Window=Normal Window=Normal
Width=150 30 200 100 Width=150 30 200 100
Name0=Swb00015 Name0=Swb00001
Address0=pm.c#_ntr_pmic_comm+0x32 Address0=vreg_ctr.c#_vreg_ctr_read+0x3c
Window0=ASM Window0=ASM
Status0=ON Status0=ON
Name1=Swb00001 Name1=Swb00015
Address1=vreg_ctr.c#_vreg_ctr_read+0x3c Address1=led.c#_tsk_led_cam+0x76
Window1=ASM Window1=ASM
Status1=ON Status1=ON
Count=2 Name2=Swb00002
Address2=task_status.c#_tsk_status+0x70
Window2=ASM
Status2=ON
Count=3
[Reset] [Reset]
Debugger=ON Debugger=ON
Symbol=OFF Symbol=OFF

View File

@ -520,6 +520,65 @@ DefaultMode2=1
DefaultMode3=1 DefaultMode3=1
DefaultMode4=1 DefaultMode4=1
DefaultMode5=1 DefaultMode5=1
[SrcFile]
Source1=loader.c
Source2=pm.c
Source3=i2c_ctr.c
Source4=main.c
Source5=magic.c
Source6=WDT.c
Source7=i2c_mcu.c
Source8=i2c_twl.c
Source9=led.c
Source10=rtc.c
Source11=vreg_ctr.c
Source12=vreg_twl.c
Source13=adc.c
Source14=renge\renge.c
Source15=accero.c
Source16=self_flash.c
Source17=sw.c
Source18=task_debug.c
Source19=task_misc.c
Source20=task_sys.c
Source21=pedo_alg_thre_det2.c
Source22=ini_VECT.c
Source23=task_status.c
[IncFile]
Include1=incs_loader.h
Include2=jhl_defs.h
Include3=config.h
Include4=user_define.h
Include5=bsr_system.h
Include6=renge\renge.h
Include7=renge\renge_defs.h
Include8=renge\renge_task_immediate.h
Include9=vreg_ctr.h
Include10=vreg_twl.h
Include11=loader.h
Include12=i2c_mcu.h
Include13=WDT.h
Include14=fsl.h
Include15=fsl_user.h
Include16=i2c_ctr.h
Include17=pm.h
Include18=rtc.h
Include19=reboot.h
Include20=incs.h
Include21=accero.h
Include22=pedometer.h
Include23=adc.h
Include24=led.h
Include25=batt_params.h
Include26=i2c_twl_defs.h
Include27=renge\renge_task_intval.h
Include28=i2c_twl.h
Include29=sw.h
Include30=self_flash.h
Include31=pool.h
Include32=pedo_lpf_coeff.h
Include33=..\..\..\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r\fsl.h
Include34=..\..\..\Program Files\NEC Electronics Tools\CC78K0R\W2.10\inc78k0r\math.h
[Options.CC78K0R 0] [Options.CC78K0R 0]
Version=210 Version=210
Include0=renge,C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r Include0=renge,C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r
@ -696,7 +755,7 @@ Unsignedchar=0
Usesaddrchk=0 Usesaddrchk=0
Autoallocationchk=1 Autoallocationchk=1
Jumpoptimize=1 Jumpoptimize=1
Librarycallchk=0 Librarycallchk=1
Librarycall=1129 Librarycall=1129
Aggressivechk=1 Aggressivechk=1
Relativebranchchk=1 Relativebranchchk=1
@ -986,62 +1045,3 @@ VfiFileBoot0=
VfiFileBoot1=boot.vfi VfiFileBoot1=boot.vfi
VF78K0Rchk=0 VF78K0Rchk=0
VF78K0Rvs= VF78K0Rvs=
[SrcFile]
Source1=loader.c
Source2=pm.c
Source3=i2c_ctr.c
Source4=main.c
Source5=magic.c
Source6=WDT.c
Source7=i2c_mcu.c
Source8=i2c_twl.c
Source9=led.c
Source10=rtc.c
Source11=vreg_ctr.c
Source12=vreg_twl.c
Source13=adc.c
Source14=renge\renge.c
Source15=accero.c
Source16=self_flash.c
Source17=sw.c
Source18=task_debug.c
Source19=task_misc.c
Source20=task_sys.c
Source21=pedo_alg_thre_det2.c
Source22=ini_VECT.c
Source23=task_status.c
[IncFile]
Include1=incs_loader.h
Include2=jhl_defs.h
Include3=config.h
Include4=user_define.h
Include5=bsr_system.h
Include6=renge\renge.h
Include7=renge\renge_defs.h
Include8=renge\renge_task_immediate.h
Include9=vreg_ctr.h
Include10=vreg_twl.h
Include11=loader.h
Include12=i2c_mcu.h
Include13=WDT.h
Include14=fsl.h
Include15=fsl_user.h
Include16=i2c_ctr.h
Include17=pm.h
Include18=rtc.h
Include19=reboot.h
Include20=incs.h
Include21=accero.h
Include22=pedometer.h
Include23=adc.h
Include24=led.h
Include25=batt_params.h
Include26=i2c_twl_defs.h
Include27=renge\renge_task_intval.h
Include28=i2c_twl.h
Include29=sw.h
Include30=self_flash.h
Include31=pool.h
Include32=pedo_lpf_coeff.h
Include33=..\..\..\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r\fsl.h
Include34=..\..\..\Program Files\NEC Electronics Tools\CC78K0R\W2.10\inc78k0r\math.h

View File

@ -1,5 +1,5 @@
[ProjectManager] [ProjectManager]
FrameMax=0 FrameMax=1
FrameX=255 FrameX=255
FrameY=34 FrameY=34
FrameCX=1299 FrameCX=1299
@ -10,21 +10,19 @@ OpenFile3=renge\\renge_defs.h,0,293,307,1537,1033,18,37,18,0
OpenFile4=task_sys.c,0,330,330,1574,1056,0,172,37,0 OpenFile4=task_sys.c,0,330,330,1574,1056,0,172,37,0
OpenFile5=loader.c,0,296,307,1286,923,20,214,20,0 OpenFile5=loader.c,0,296,307,1286,923,20,214,20,0
OpenFile6=pm.h,0,254,446,1244,1062,0,115,0,0 OpenFile6=pm.h,0,254,446,1244,1062,0,115,0,0
OpenFile7=sw.c,0,574,367,1818,1093,43,36,43,0 OpenFile7=vreg_ctr.h,0,632,184,1876,910,8,40,25,0
OpenFile8=vreg_ctr.h,0,632,184,1876,910,8,40,25,0 OpenFile8=pedo_alg_thre_det2.c,0,132,132,1376,858,0,12,0,0
OpenFile9=pedo_alg_thre_det2.c,0,132,132,1376,858,0,12,0,0 OpenFile9=adc.c,0,286,286,1530,1012,0,145,0,0
OpenFile10=adc.c,0,286,286,1530,1012,0,145,0,0 OpenFile10=self_flash.c,0,154,154,1398,880,7,365,7,0
OpenFile11=self_flash.c,0,154,154,1398,880,7,365,7,0 OpenFile11=ProjectWindow
OpenFile12=ProjectWindow
PrjPos=0,2,754,3,253 PrjPos=0,2,754,3,253
OpenFile13=magic.c,0,323,248,1567,974,0,17,0,0 OpenFile12=magic.c,0,323,248,1567,974,0,17,0,0
OpenFile14=led.h,0,22,22,1023,650,25,29,25,0 OpenFile13=led.h,0,22,22,1023,650,25,29,25,0
OpenFile15=config.h,0,288,71,1532,797,0,28,0,0 OpenFile14=led.c,0,315,193,1559,919,0,656,0,0
OpenFile16=task_misc.c,0,308,308,1552,1034,0,12,0,0 OpenFile15=config.h,0,288,71,1532,797,26,27,26,0
OpenFile17=renge\renge_defs.h,0,667,22,1514,748,4,37,4,0 OpenFile16=sw.c,0,574,367,1818,1093,0,36,0,0
OpenFile18=i2c_ctr.c,0,132,132,1376,858,20,211,16,0 OpenFile17=vreg_twl.c,0,286,286,1530,1012,2,65,2,0
OpenFile19=vreg_ctr.c,0,154,154,1398,880,72,355,73,0 OpenFile18=OutputWindow
OpenFile20=OutputWindow
OutputPos=0,536,1002,34,1092 OutputPos=0,536,1002,34,1092
ActivePRJ=yav_mcu_bsr.prj ActivePRJ=yav_mcu_bsr.prj
[ProjectWindow] [ProjectWindow]

View File

@ -11,7 +11,7 @@ T=4bf114e2
7=rtc.h 7=rtc.h
8=reboot.h 8=reboot.h
[pm.c] [pm.c]
T=4bf213b1 T=4bf28b7e
1=incs.h 1=incs.h
2=adc.h 2=adc.h
3=led.h 3=led.h
@ -25,7 +25,7 @@ T=4bf2324a
1=config.h 1=config.h
2=incs.h 2=incs.h
[main.c] [main.c]
T=4bf0d1e1 T=4bf3b1c1
1=incs_loader.h 1=incs_loader.h
2=WDT.h 2=WDT.h
3=rtc.h 3=rtc.h
@ -35,7 +35,7 @@ T=4bf0d1e1
7=adc.h 7=adc.h
8=pool.h 8=pool.h
[magic.c] [magic.c]
T=4bf23469 T=4bf3b865
1=config.h 1=config.h
[WDT.c] [WDT.c]
T=4bf0d1e1 T=4bf0d1e1
@ -50,14 +50,14 @@ T=4bf0d1e0
2=incs.h 2=incs.h
3=i2c_twl_defs.h 3=i2c_twl_defs.h
[led.c] [led.c]
T=4bf213b1 T=4bf3a163
1=incs.h 1=incs.h
2=led.h 2=led.h
[rtc.c] [rtc.c]
T=4bf0d1e1 T=4bf0d1e1
1=incs.h 1=incs.h
[vreg_ctr.c] [vreg_ctr.c]
T=4bf23471 T=4bf3a2ff
1=incs.h 1=incs.h
2=vreg_ctr.h 2=vreg_ctr.h
3=rtc.h 3=rtc.h
@ -68,7 +68,7 @@ T=4bf23471
8=..\..\..\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r\fsl.h 8=..\..\..\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r\fsl.h
9=fsl_user.h 9=fsl_user.h
[vreg_twl.c] [vreg_twl.c]
T=4bf1fe17 T=4bf3b1c1
1=incs.h 1=incs.h
2=jhl_defs.h 2=jhl_defs.h
3=led.h 3=led.h
@ -102,7 +102,7 @@ T=4bf0d1e0
4=i2c_ctr.h 4=i2c_ctr.h
5=pool.h 5=pool.h
[sw.c] [sw.c]
T=4bf0d1e0 T=4bf3afad
1=incs.h 1=incs.h
2=i2c_twl.h 2=i2c_twl.h
3=i2c_ctr.h 3=i2c_ctr.h
@ -115,7 +115,7 @@ T=4bf0d1e1
2=renge\renge.h 2=renge\renge.h
3=pm.h 3=pm.h
[task_misc.c] [task_misc.c]
T=4bf2178f T=4bf27c33
1=incs.h 1=incs.h
2=renge\renge.h 2=renge\renge.h
3=pm.h 3=pm.h
@ -124,7 +124,7 @@ T=4bf2178f
6=i2c_mcu.h 6=i2c_mcu.h
7=led.h 7=led.h
[task_sys.c] [task_sys.c]
T=4bf21233 T=4bf3b993
1=incs.h 1=incs.h
2=i2c_twl.h 2=i2c_twl.h
3=i2c_ctr.h 3=i2c_ctr.h
@ -169,9 +169,9 @@ T=4bf0d1e1
T=4bf0d1e0 T=4bf0d1e0
1=config.h 1=config.h
[config.h] [config.h]
T=4bf0d1e0 T=4bf3afad
[user_define.h] [user_define.h]
T=4bf0d1e1 T=4bf376de
[bsr_system.h] [bsr_system.h]
T=4bf0d1e1 T=4bf0d1e1
[renge\renge.h] [renge\renge.h]
@ -201,7 +201,7 @@ T=4bf0d1e0
[i2c_ctr.h] [i2c_ctr.h]
T=4bf0d1e1 T=4bf0d1e1
[pm.h] [pm.h]
T=4bf0d1e1 T=4bf376de
[rtc.h] [rtc.h]
T=4bf0d1e1 T=4bf0d1e1
[reboot.h] [reboot.h]
@ -228,9 +228,9 @@ T=4bf0d1e0
T=4bf0d1e1 T=4bf0d1e1
1=jhl_defs.h 1=jhl_defs.h
[led.h] [led.h]
T=4bf13f6f T=4bf3815d
[batt_params.h] [batt_params.h]
T=4bf0d1e1 T=4bf28b27
[i2c_twl_defs.h] [i2c_twl_defs.h]
T=4bf0d1e1 T=4bf0d1e1
[renge\renge_task_intval.h] [renge\renge_task_intval.h]