diff --git a/branches/0.15(sdk0.9_E3_fix_vol)/accero.c b/branches/0.15(sdk0.9_E3_fix_vol)/accero.c index 9835851..783137a 100644 --- a/branches/0.15(sdk0.9_E3_fix_vol)/accero.c +++ b/branches/0.15(sdk0.9_E3_fix_vol)/accero.c @@ -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 #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, /// IRQ2flg latch: auto clear after read, IRQ2 conf: IRQ( fall,shock,...) /// 1 : auto clear after read, conf: data ready +# endif + #else # ifdef _MODEL_CTR_JIKKI_ str_send_buf[2] = 0x10; # else - str_send_buf[2] = 0x02; // 3 IRQ pol :Active HI, Drive:Pushpull, - /// IRQ2flg latch: auto clear after read, IRQ2 conf: IRQ( fall,shock,...) - /// 1 : auto clear after read, conf: data ready + str_send_buf[2] = 0x02; # endif #endif diff --git a/branches/0.15(sdk0.9_E3_fix_vol)/config.h b/branches/0.15(sdk0.9_E3_fix_vol)/config.h index 9f50e69..fe1ecb9 100644 --- a/branches/0.15(sdk0.9_E3_fix_vol)/config.h +++ b/branches/0.15(sdk0.9_E3_fix_vol)/config.h @@ -22,9 +22,9 @@ //#define _MODEL_WM0_TEG2_CTRC_ //#define _MODEL_TS0_ // ↑TEG2 CPU + Type-C -#define _MODEL_CTR_TS_ +//#define _MODEL_CTR_TS_ // ↑FINAL SoC + Type-C -//#define _MODEL_CTR_JIKKI_ +#define _MODEL_CTR_JIKKI_ //#define _SW_HOME_ENABLE_ @@ -44,6 +44,9 @@ #define _MODEL_CTR_ #endif +#ifdef _MODEL_WM0_TEG2_CTRC_ +#define _MODEL_WM0_ +#endif // ---------------------------------- // #ifdef _MODEL_TEG2_ diff --git a/branches/0.15(sdk0.9_E3_fix_vol)/hoge.bin b/branches/0.15(sdk0.9_E3_fix_vol)/hoge.bin index 2b6bbd0..519d4ff 100644 Binary files a/branches/0.15(sdk0.9_E3_fix_vol)/hoge.bin and b/branches/0.15(sdk0.9_E3_fix_vol)/hoge.bin differ diff --git a/branches/0.15(sdk0.9_E3_fix_vol)/yav_mcu_bsr.plg b/branches/0.15(sdk0.9_E3_fix_vol)/yav_mcu_bsr.plg index eac9f3c..2c8d701 100644 --- a/branches/0.15(sdk0.9_E3_fix_vol)/yav_mcu_bsr.plg +++ b/branches/0.15(sdk0.9_E3_fix_vol)/yav_mcu_bsr.plg @@ -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(148) : 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 -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 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 @@ -143,4 +144,4 @@ intel-HEX to bsr bin converter file converted! -Build Total error(s) : 0 Total warning(s) : 42 +Build Total error(s) : 0 Total warning(s) : 43 diff --git a/branches/0.15(sdk0.9_E3_fix_vol)/yav_mcu_bsr.pri b/branches/0.15(sdk0.9_E3_fix_vol)/yav_mcu_bsr.pri index 9a46c84..7426518 100644 --- a/branches/0.15(sdk0.9_E3_fix_vol)/yav_mcu_bsr.pri +++ b/branches/0.15(sdk0.9_E3_fix_vol)/yav_mcu_bsr.pri @@ -78,10 +78,10 @@ Symbol Type=OFF Language=C Kanji=SJIS [Source] -Geometry=317, -7, 707, 899 +Geometry=527, 9, 707, 899 Window=Normal -DispStart=68 -CaretPos=69,0 +DispStart=289 +CaretPos=290,0 Mode=Normal DispFile= Address1= @@ -142,8 +142,8 @@ Accumulative=ON [Assemble] Geometry=75, 362, 600, 400 Window=Normal -DispStart=15269 -CaretPos=15269,27 +DispStart=17283 +CaretPos=17283,27 Address1= Address2= Address3= @@ -982,11 +982,7 @@ Line=0 Geometry=857, 296, 391, 360 Window=Hide Width=150 30 200 100 -Name0=Swb00001 -Address0=accero.c#es_F0038+0x6 -Window0=ASM -Status0=ON -Count=1 +Count=0 [Reset] Debugger=ON Symbol=OFF diff --git a/branches/0.15(sdk0.9_E3_fix_vol)/yav_mcu_bsr.prj b/branches/0.15(sdk0.9_E3_fix_vol)/yav_mcu_bsr.prj index 3b94f50..7e9114f 100644 --- a/branches/0.15(sdk0.9_E3_fix_vol)/yav_mcu_bsr.prj +++ b/branches/0.15(sdk0.9_E3_fix_vol)/yav_mcu_bsr.prj @@ -6,7 +6,7 @@ Series=78K0R.PM Device=uPD79F0104 DeviceVer=E1.00b DebugMode=1 -Target=bsr.lmf +Target=C:\78k_data\yav-mcu-basara\branches\0.15(sdk0.9_E3_fix_vol)\bsr.lmf [BuildMode0] BuildModeName=Debug Build TargetFile=0 @@ -1005,11 +1005,6 @@ DefaultMode2=1 DefaultMode3=1 DefaultMode4=1 DefaultMode5=1 -[ToolSet] -ToolSetName=(変更)78K0R Software Package V1.10 -Tool1=CC78K0R|W2.10 -Tool2=RA78K0R|W1.31 -Tool3=ID78K0R-QB|V3.60 [IncFile] Include1=incs_loader.h Include2=jhl_defs.h @@ -1042,3 +1037,8 @@ Include28=i2c_twl.h Include29=sw.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 +[ToolSet] +ToolSetName=(変更)78K0R Software Package V1.10 +Tool1=CC78K0R|W2.10 +Tool2=RA78K0R|W1.31 +Tool3=ID78K0R-QB|V3.60 diff --git a/branches/0.15(sdk0.9_E3_fix_vol)/yav_mcu_bsr.prk b/branches/0.15(sdk0.9_E3_fix_vol)/yav_mcu_bsr.prk index a646e01..96288f1 100644 --- a/branches/0.15(sdk0.9_E3_fix_vol)/yav_mcu_bsr.prk +++ b/branches/0.15(sdk0.9_E3_fix_vol)/yav_mcu_bsr.prk @@ -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 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 -OpenFile5=loader.c,0,296,307,1286,923,20,214,20,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 +OpenFile5=pm.h,0,254,446,1244,1062,0,115,0,0 +OpenFile6=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 PrjPos=0,2,754,3,253 -OpenFile9=vreg_ctr.h,0,632,184,1876,910,13,2,13,0 -OpenFile10=config.h,0,352,352,1596,1078,2,27,0,0 +OpenFile9=loader.c,0,538,345,1528,961,4,239,6,0 +OpenFile10=config.h,0,302,62,1546,788,0,27,0,0 OpenFile11=OutputWindow OutputPos=0,572,1038,46,1104 -OpenFile12=adc.c,0,88,88,1332,814,5,288,0,0 ActivePRJ=yav_mcu_bsr.prj [ProjectWindow] ProjectWindowDispType=0 diff --git a/branches/0.15(sdk0.9_E3_fix_vol)/yav_mcu_bsr.sdb b/branches/0.15(sdk0.9_E3_fix_vol)/yav_mcu_bsr.sdb index 4331e97..326ddfa 100644 --- a/branches/0.15(sdk0.9_E3_fix_vol)/yav_mcu_bsr.sdb +++ b/branches/0.15(sdk0.9_E3_fix_vol)/yav_mcu_bsr.sdb @@ -34,7 +34,7 @@ T=4bf0d1dd 6=led.h 7=adc.h [magic.c] -T=4bf21819 +T=4bf32d27 1=config.h [WDT.c] T=4bf0d1dd @@ -90,7 +90,7 @@ T=4bf0d1db 6=user_define.h 7=bsr_system.h [accero.c] -T=4bf0d1dd +T=4bf32d1e 1=incs.h 2=..\..\..\..\Program Files\NEC Electronics Tools\CC78K0R\W2.10\inc78k0r\math.h [self_flash.c] @@ -157,7 +157,7 @@ T=4bf0d1dd T=4bf0d1dd 1=config.h [config.h] -T=4bf21845 +T=4bf33a2b [user_define.h] T=4bf0d1dd [bsr_system.h] diff --git a/trunk/adc.c b/trunk/adc.c index b2848d1..39db695 100644 --- a/trunk/adc.c +++ b/trunk/adc.c @@ -68,11 +68,11 @@ const u8 slider_to_codec[64] = 127, 127, 126, 125, 123, 122, 121, 119, 118, 117, 115, 114, 112, 111, 110, 108, 107, 106, 104, 103, 101, 100, 99, 97, - 96, 94, 93, 92, 90, 89, 88, 86, - 85, 83, 82, 81, 79, 78, 77, 75, - 74, 72, 71, 70, 68, 67, 66, 64, - 64, 63, 61, 60, 59, 57, 56, 54, - 53, 52, 50, 49, 48, 46, 44, 44 + 96, 94, 93, 92, 90, 89, 88, 86, + 85, 83, 82, 81, 79, 78, 77, 75, + 74, 72, 71, 70, 68, 67, 66, 64, + 64, 63, 61, 60, 59, 57, 56, 54, + 53, 52, 50, 49, 48, 46, 44, 44 }; #endif @@ -96,9 +96,11 @@ void tsk_adc( ) if( adc_updated ) { + adc_updated = 0; + if( system_status.pwr_state == ON ) { - // Tune /////////////////////////////////////// + // 3D ///////////////////////////////////////// { // 似非ヒステリシス V2 // ガリオームには適さない @@ -155,6 +157,12 @@ void tsk_adc( ) static u8 vol_old; 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 ) // 生値でこれくらいずれたら更新(似非ヒステリシス) || ( --force_update_vol == 0 ) ) // ポーリング { @@ -172,8 +180,6 @@ void tsk_adc( ) force_update_vol = 10; } } - - adc_updated = 0; } } diff --git a/trunk/batt_params.h b/trunk/batt_params.h index 36927a2..aa07085 100644 --- a/trunk/batt_params.h +++ b/trunk/batt_params.h @@ -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 }, - { // ID = 5 2.7kohm パナ - 0xAD, 0x30, 0xAE, 0x70, 0xB0, 0x00, 0xB3, 0x00, - 0xB4, 0x70, 0xB5, 0xA0, 0xB7, 0x80, 0xBA, 0x00, + { // ID = 5 2.7kohm パナ + 0x80, 0x30, 0x83, 0x90, 0x92, 0x00, 0xAE, 0x30, + 0xB0, 0x80, 0xB3, 0xA0, 0xB5, 0x00, 0xB5, 0x30, - 0xBB, 0x90, 0xBD, 0x00, 0xBE, 0x00, 0xBF, 0xF0, - 0xC3, 0x00, 0xC5, 0xC0, 0xC8, 0x00, 0xCA, 0xC0, + 0xB5, 0xC0, 0xB6, 0xA0, 0xB7, 0x90, 0xB9, 0x70, + 0xBC, 0x10, 0xC6, 0x90, 0xCA, 0x00, 0xD0, 0x90, - 0x04, 0x00, 0x12, 0x00, 0x0C, 0x10, 0x24, 0x00, - 0x10, 0xD0, 0x1B, 0xF0, 0x0A, 0xF0, 0x08, 0xE0, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x0D, 0x40, + 0x15, 0x00, 0x08, 0xF0, 0x80, 0x00, 0x00, 0x20, - 0x0C, 0xF0, 0x08, 0xC0, 0x08, 0xB0, 0x07, 0xF0, - 0x0B, 0x00, 0x05, 0xD0, 0x02, 0x00, 0x09, 0x00 + 0x1F, 0x80, 0x1D, 0x60, 0x0D, 0x50, 0x08, 0xF0, + 0x08, 0xA0, 0x04, 0xF0, 0x07, 0x70, 0x07, 0x70 }, { // ID = 6 8.2kohm 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; -// static const float BT_PANA_TEMPCOUP = 0.3; -// static const float BT_PANA_TEMPCODN = 0.5; -// 256倍してある -const unsigned char BT_PANA_TEMPCOUP = 77; -const unsigned char BT_PANA_TEMPCODN = 128; +// temp_co_xxxxは256倍しておく +const unsigned char BT_MAXELL_RCOMP = 135; +const signed short BT_MAXELL_TEMPCOUP = -256* 0.15; +const signed short BT_MAXELL_TEMPCODN = -256* 2.15; + +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 diff --git a/trunk/bsr_system.h b/trunk/bsr_system.h index 4fcbf1e..57c0a08 100644 --- a/trunk/bsr_system.h +++ b/trunk/bsr_system.h @@ -29,7 +29,7 @@ enum model_ MODEL_TS_BOARD, MODEL_SHIROBAKO, MODEL_JIKKI_NOBATT, - MODEL_RESERVED1, + MODEL_UNKNOWN, MODEL_RESERVED2, MODEL_RESERVED3, }; diff --git a/trunk/config.h b/trunk/config.h index 81bac6f..4c7c3a5 100644 --- a/trunk/config.h +++ b/trunk/config.h @@ -1,12 +1,13 @@ #ifndef __config__ #define __config__ -//#define _debug_ //#define _debug_led_ +#define _FORCE_OFF_1SEC_ +//#define _ALLOW_NOBATT_ #define MCU_VER_MAJOR 0x00 -#define MCU_VER_MINOR 0x14 +#define MCU_VER_MINOR 0x17 //#define PM_CCIC_TIM @@ -20,16 +21,11 @@ //#define _MODEL_TS0_ // ↑TEG2 CPU + Type-C -//#define _MODEL_CTR_ +#define _MODEL_CTR_ // ↑TS board, WM1,1 TS-CTRC -#define _MODEL_CTR_NOTIFY_FULLCOLOR_ - // ↑TS board, WM1,1 TS-CTRC - - // 特殊仕様 // //#define _SW_HOME_ENABLE_ -#define _FOR_E3_ // ---------------------------------- // #ifdef _MODEL_TEG2_ @@ -56,11 +52,4 @@ #define _SW_HOME_ENABLE_ #endif -#ifdef _MODEL_CTR_NOTIFY_FULLCOLOR_ -#define _MODEL_CTR_ -#define _PMIC_CTR_ -#define _MCU_BSR_ -#define _SW_HOME_ENABLE_ -#endif - #endif diff --git a/trunk/i2c_ctr.c b/trunk/i2c_ctr.c index d192c0b..cae9e2b 100644 --- a/trunk/i2c_ctr.c +++ b/trunk/i2c_ctr.c @@ -148,7 +148,7 @@ __interrupt void int_iic_ctr( ) reg_adrs = IICA; adrs_access_from = 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; } @@ -202,15 +202,15 @@ __interrupt void int_iic_ctr( ) switch( adrs_access_from ) { case( VREG_C_ACC_HOSU_HIST ): - case( VREG_C_INFO ): case( VREG_C_LED_NOTIFY_DATA ): case( VREG_C_LED_POW ): - case( VREG_C_FREE_DATA ): + case( VREG_CX_INFO ): + case( VREG_CX_FREE_DATA ): break; - case( VREG_C_FREE_ADRS ): - if( reg_adrs == VREG_C_FREE_ADRS ) + case( VREG_CX_FREE_ADRS ): + if( reg_adrs == VREG_CX_FREE_ADRS ) { - reg_adrs = VREG_C_FREE_DATA; + reg_adrs = VREG_CX_FREE_DATA; } break; default: diff --git a/trunk/i2c_mcu.c b/trunk/i2c_mcu.c index 5a0c683..96456fe 100644 --- a/trunk/i2c_mcu.c +++ b/trunk/i2c_mcu.c @@ -83,18 +83,7 @@ void nop8() static err iic_mcu_is_ready() { - if( iic_mcu_initialized == 0 ) - { -#ifdef _debug_ - iic_mcu_start( ); -#else - return( ERR_ERR ); - while( 1 ) - { - NOP(); - } -#endif - } + iic_mcu_start( ); while( iic_mcu_busy ) { @@ -185,15 +174,8 @@ err iic_mcu_read( u8 slave, u8 adrs, u8 len, u8 * dest ) { return( ERR_ERR ); } - ; #else // 使用中なら帰る - if( iic_mcu_initialized == 0 ){ - return(0x80); - } - if( iic_mcu_busy != 0 ){ - return( 3 ); - } #endif // スタートコンディションとスレーブの呼び出し、レジスタアドレスの送信 @@ -309,12 +291,6 @@ err iic_mcu_write( u8 slave, u8 adrs, u8 len, void * src ) } #if 0 // 使用中なら帰る - if( iic_mcu_initialized == 0 ){ - return(0x80); - } - if( iic_mcu_busy != 0 ){ - return( 3 ); - } #endif // スタートコンディションとスレーブの呼び出し... @@ -557,6 +533,10 @@ static void iic_mcu_send_sp( ) ======================================================== */ void iic_mcu_start( ) { + if( iic_mcu_initialized ) + { + return; + } DST1 = 0; NOP( ); // 2clkもしくは、DSTn==0をポーリング NOP( ); diff --git a/trunk/i2c_twl.c b/trunk/i2c_twl.c index 51dcf0e..62120db 100644 --- a/trunk/i2c_twl.c +++ b/trunk/i2c_twl.c @@ -12,7 +12,7 @@ #include "incs.h" #include "i2c_twl_defs.h" - +#include "i2c_twl.h" extern u8 vreg_twl[]; @@ -45,6 +45,7 @@ extern u8 vreg_twl[]; #define WREL WREL0 #define WTIM WTIM0 #define SMC SMC0 +#define TRC TRC0 #endif @@ -60,23 +61,22 @@ void IIC_twl_Init( void ) #else + +enum IIC_TWL_STATE{ + WAIT_ADRS = 0, + WAIT_DATA, + DATA_READED +}; + + + + /*============================================================================*/ -u8 vreg_adrs; -u8 pre_dat; - - -u16 tot; - // 注! ↓はマクロなので、returnはメインループに戻ります。 #define wait_next { \ tot = 0; \ while( IICAIF != 1 ){ \ - if( SPD ){ \ - LREL = 1; \ - NOP(); \ - return; \ - } \ tot++; \ if( tot == 0 ){ \ LREL = 1; \ @@ -88,74 +88,82 @@ u16 tot; __interrupt void int_iic_twl( ) { - u8 temp; + u8 vreg_adrs; + u8 pre_dat; + u8 rcvd; 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; // ウェイト解除して次のバイトを待つ - wait_next; // 1バイト受信完了を待つ - - // 2回目 R/W レジスタアドレス - IICAIF = 0; - temp = IICA; - WREL = 1; - - vreg_adrs = adrs_table_twl_ext2int( temp ); - - // 3回目 - // スタートコンディションか、データ受信完了フラグ待ち + WDT_Restart(); + state = WAIT_ADRS; while( 1 ) { - u8 my_iics = IICS; + u8 my_iics; - if( my_iics & 0x01 ) // SPD - { // 強制終了 - LREL = 1; - return; - } - else if( my_iics & 0x02 ) // ( STD && !SPD ) + wait_next; // 1バイト受信完了を待つ + + my_iics = IICS; + IICAIF = 0; + + if( my_iics & 0x02 ) // ( STD && !SPD ) { - // 送信 // (スタートコンディション検出) - pre_dat = vreg_twl_read( vreg_adrs ); // mcu内部アドレスを渡す。一バイト目の準備 IICBに書き込むとウェイト解除 - - // 自局をRで呼ばれるのを待つ - wait_next; - IICAIF = 0; - if( COI != 1 ) - { // 被呼び出し? - LREL = 1; // 呼ばれたのは他のID(あれ?) - return; + // スタートコンディションがきた + if( !TRC ) // 送信方向フラグ 0:マイコンが受信 + { + // @’マイコンが応答できず、TWLがリトライしたときとか + // ここに来るのはスレーブ呼び出しの時 // + WREL = 1; + state = WAIT_ADRS; + /// レジスタアドレスが書かれるのを待つ + } + else + { + // BR 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; - temp = IICA; + // 何らか受信 + rcvd = IICA; WREL = 1; - // 通常アクセス(ライト) // - LREL = 1; // スタートコンディション待ちへ(連続書き込み未対応のため) - vreg_twl_write( vreg_adrs, temp ); - return; // 受信おしまい // + if( state == WAIT_ADRS ) + { + // A + vreg_adrs = adrs_table_twl_ext2int( rcvd ); + /// データが書かれるか、リスタートで読み出されるのを待つ + state = WAIT_DATA; + } + else if( state == DATA_READED ) + { + // データ1バイト送信後発生する + LREL = 1; + return; + } + else + { + // BW + // データ書き込まれ + LREL = 1; // スタートコンディション待ちへ(連続書き込み未対応のため) + vreg_twl_write( vreg_adrs, rcvd ); + return; // 受信おしまい // + } + } + else if( my_iics & 0x01 ) // SPD + { + // 終了 + LREL = 1; + return; + } + else + { + NOP(); } } } diff --git a/trunk/incs.h b/trunk/incs.h index 120ba7a..3ef2066 100644 --- a/trunk/incs.h +++ b/trunk/incs.h @@ -25,6 +25,7 @@ #include "vreg_twl.h" #include "i2c_mcu.h" +#include "i2c_twl.h" #include "rtc.h" @@ -32,6 +33,10 @@ #include "pm.h" +#include "sw.h" + +#include "wdt.h" + //========================================================= #endif diff --git a/trunk/led.c b/trunk/led.c index dbe9240..ca4965a 100644 --- a/trunk/led.c +++ b/trunk/led.c @@ -9,9 +9,6 @@ #include "led.h" -#ifdef _MODEL_CTR_NOTIFY_FULLCOLOR_ - - // ======================================================== // TPS0 #define BIT_PRS012 ( 1 << 2 ) @@ -41,13 +38,16 @@ uni_info_LED info_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 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 ) @@ -136,7 +136,8 @@ void LED_init( ) #endif TO0 = 0; // タイマー動作中で、タイマー出力にしてないときのピンのラッチ。タイマー出力を使わないなら0 - TOE0 = 0b0000000011101110; // TOxをタイマーモジュールが制御? + TOE0 = 0b0000000001101010; // TOxをタイマーモジュールが制御? + TS0 = 0b0000000011101111; // 動作開始 TDR00 = LED_BRIGHT_MAX - 1; // 周期 10bit @@ -164,15 +165,17 @@ void LED_init( ) if( system_status.reboot ) { vreg_ctr[VREG_C_LED_POW] = LED_POW_ILM_AUTO; + LED_duty_pow_blu_Mirror = LED_BRIGHT_MAX; if( system_status.info_fullcolor ) { - LED_duty_pow_blu = LED_BRIGHT_MAX; + LED_duty_pow_blu = LED_duty_pow_blu_Mirror; } 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( ) { - // tsk_led_powを呼び出すrengeどんが、タスク関数の配列をリンク時 - // に決めるてROMにもっているので、ここで分岐するしかない orz - if( system_status.info_fullcolor ) + // お知らせランプフルカラー版 ///////////////////// + switch ( vreg_ctr[VREG_C_LED_POW] ) { - // お知らせランプフルカラー版 ///////////////////// - switch ( vreg_ctr[VREG_C_LED_POW] ) + // 自動切り替え + case ( LED_POW_ILM_AUTO ): + switch ( system_status.pwr_state ) { - // 自動切り替え - 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 ): + case SLEEP: led_pow_hotaru( ); break; - case ( LED_POW_ILM_ON ): - default: + case ON: led_pow_normal( ); break; - case ( LED_POW_ILM_OFF ): - 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; + default: 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 { - // 旧仕様 ///////////////////////////////////////// - switch ( vreg_ctr[VREG_C_LED_POW] ) + LED_duty_old_pow_blu = LED_duty_pow_blu_Mirror; + LED_old_pow_red = LED_pow_red_Mirror; + } + + if( vreg_ctr[VREG_C_BT_REMAIN] <= BATT_TH_EMPTY ) + { + if( system_status.info_fullcolor ) { - // 自動切り替え - case ( LED_POW_ILM_AUTO ): - switch ( system_status.pwr_state ) - { - case SLEEP: - led_pow_hotaru_old( ); - break; - - 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; + LED_duty_notify_blu = 0; + LED_duty_notify_grn = 0; + LED_duty_notify_red = LED_pow_red_Mirror ? 255: 0; + } + else + { + LED_duty_old_NOTIFY = LED_pow_red_Mirror ? 255: 0; } } } @@ -327,27 +302,24 @@ static void led_pow_normal( ) 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; - if( delay < 16 ) // フレームの保持時間稼ぎ + if( delay < 64 ) // フレームの保持時間稼ぎ { return; } 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_duty_notify_red = 255; + LED_pow_red_Mirror = 1; } else { - LED_pow_red = 0; - LED_duty_notify_red = 0; + LED_pow_red_Mirror = 0; } - red_blink_poi += 1; 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 ) { // 赤点灯 - led_fade_to( LED_duty_pow_blu, 0 ); - LED_pow_red = 1; - return; - + led_fade_to( LED_duty_pow_blu_Mirror, 0 ); + LED_pow_red_Mirror = 1; } else { // 青点灯 - led_fade_to( LED_duty_pow_blu, vreg_ctr[VREG_C_LED_BRIGHT] ); - LED_pow_red = 0; + led_fade_to( LED_duty_pow_blu_Mirror, vreg_ctr[VREG_C_LED_BRIGHT] ); + 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 ) { blue_to = 0; - LED_pow_red = 1; + LED_pow_red_Mirror = 1; } else { blue_to = vreg_ctr[VREG_C_LED_BRIGHT]; - LED_pow_red = 0; + LED_pow_red_Mirror = 0; } break; @@ -468,7 +380,7 @@ static void led_pow_hotaru( ) // フェードアウト if( vreg_ctr[VREG_C_BT_REMAIN] <= BATT_TH_LO ) { - LED_pow_red = 0; + LED_pow_red_Mirror = 0; } else { @@ -478,19 +390,19 @@ static void led_pow_hotaru( ) } // 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 { - 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; } @@ -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 @@ -680,48 +518,74 @@ void tsk_led_notify( ) return; } - // 次のフレームに進める? - if( time_to_next_frame == 0 ) + if( system_status.pwr_state == ON_TRIG ) { - 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( frame >= NOTIFY_LED_TERM ) + if( !infoLed_off ) + { + // 次のフレームに進める? + 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; - } - else - { - if( loops_to_go != 0 ) + if( info_LED.info_LED.last_loop == 255 ) { - loops_to_go -= 1; + vreg_ctr[ VREG_C_LED_NOTIFY_FLAG ] |= REG_BIT_IN_LOOP; } else { - loops_to_go = info_LED.info_LED.last_loop; - frame = 0; + if( loops_to_go != 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 - { - vreg_ctr[ VREG_C_LED_NOTIFY_FLAG ] &= ~REG_BIT_IN_LOOP; - frame += 1; - } - - 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; - + time_to_next_frame -= 1; + } + else + { + // フェードアウトさせる + 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.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; } - time_to_next_frame -= 1; if( system_status.info_fullcolor ) { @@ -749,7 +613,7 @@ void tsk_led_cam( ) static u8 state_led_cam = 0; static u8 task_interval; static u8 state_led_cam_twl; - u8 temp_led_brightness; + u8 LED_CAM_mirror; if( task_interval != 0 ) { @@ -764,24 +628,24 @@ void tsk_led_cam( ) { case ( CAM_LED_OFF ): default: - temp_led_brightness = 0; + LED_CAM_mirror = 0; state_led_cam = 0; break; case ( CAM_LED_ON ): - temp_led_brightness = 1; + LED_CAM_mirror = 1; state_led_cam = 0; break; case ( CAM_LED_BLINK ): if( state_led_cam == 0 ) { - temp_led_brightness = 1; + LED_CAM_mirror = 1; state_led_cam = 1; } else { - temp_led_brightness = 0; + LED_CAM_mirror = 0; state_led_cam = 0; } task_interval = 250; @@ -790,7 +654,7 @@ void tsk_led_cam( ) case ( CAM_LED_ON_PLUSE ): if( state_led_cam == 0 ) { - temp_led_brightness = 1; + LED_CAM_mirror = 1; state_led_cam = 1; task_interval = 250; } @@ -803,7 +667,7 @@ void tsk_led_cam( ) case ( CAM_LED_OFF_PLUSE ): if( state_led_cam == 0 ) { - temp_led_brightness = 0; + LED_CAM_mirror = 0; state_led_cam = 1; task_interval = 250; } @@ -816,19 +680,19 @@ void tsk_led_cam( ) case ( CAM_LED_BY_TWL ): switch ( vreg_twl[ REG_TWL_INT_ADRS_CAM ] ){ // switchのネストとか… case( TWL_CAMLED_OFF ): - temp_led_brightness = 0; + LED_CAM_mirror = 0; state_led_cam = 0; break; case( TWL_CAMLED_BLINK ): if( state_led_cam == 0 ) { - temp_led_brightness = 1; + LED_CAM_mirror = 1; state_led_cam = 1; } else { - temp_led_brightness = 0; + LED_CAM_mirror = 0; state_led_cam = 0; } task_interval = 250; @@ -837,7 +701,7 @@ void tsk_led_cam( ) case( TWL_CAMLED_ON ): case( TWL_CAMLED_DEF_ON ): default: - temp_led_brightness = 1; + LED_CAM_mirror = 1; state_led_cam = 1; break; } @@ -846,20 +710,10 @@ void tsk_led_cam( ) // 輝度更新 // if( system_status.info_fullcolor ) { - LED_CAM = temp_led_brightness; + LED_CAM = LED_CAM_mirror; } else { - if( temp_led_brightness == 0 ) - { - LED_duty_old_CAM = 0; - } - else - { - LED_duty_old_CAM = 255; - } + LED_old_CAM = LED_CAM_mirror; } - return; } - -#endif diff --git a/trunk/led.h b/trunk/led.h index e2858b9..02754da 100644 --- a/trunk/led.h +++ b/trunk/led.h @@ -1,8 +1,11 @@ #ifndef __led__ #define __led__ + + // ==================================== +//#define LED_CHARGE P2.4 // PMで定義 // LED_DUTY #define LED_duty_pow_blu TDR05 @@ -21,13 +24,14 @@ // 旧仕様 ///////////////////////////// // LED_DUTY #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_NOTIFY TDR05 -#define LED_duty_old_CAM TDR02 +//#define LED_duty_old_CAM TDR02 #define LED_duty_old_3d TDR01 // 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 { LED_TUNE_ILM_OFF = 0, - LED_TUNE_ILM_ON, - LED_TUNE_ILM_SVR + LED_TUNE_ILM_ON }; @@ -119,14 +122,9 @@ extern uni_info_LED info_LED; // 赤LED 点滅向け // typedef struct{ u8 dats[4]; -}st_u8s4; +}st_led_red_batt_empty; -typedef union{ - unsigned long bits; - st_u8s4 dats; -}uni_led_red_batt_empty; - -extern uni_led_red_batt_empty led_red_batt_empty; +extern st_led_red_batt_empty led_red_batt_empty; /* diff --git a/trunk/loader.c b/trunk/loader.c index 13dd648..9f9d1ba 100644 --- a/trunk/loader.c +++ b/trunk/loader.c @@ -236,7 +236,7 @@ void hdwinit2( ) PM3 = 0b11110000; // P31,32は簡易I2C PM14 = 0b11111100; // debugger[1] とりあえず出力 - P1 = 0b00000000; + P1 = 0b10000000; P2 = 0b00000000; P4 = 0b00000000; P5 = 0b00000000; diff --git a/trunk/main.c b/trunk/main.c index d752b2d..bfb6c6b 100644 --- a/trunk/main.c +++ b/trunk/main.c @@ -41,8 +41,10 @@ void main_loop( void ) iic_mcu_start( ); EI( ); + system_status.pwr_state = OFF_TRIG; if( system_status.reboot ) { + // リブート時は電源onに上書き #ifdef _PMIC_TWL_ if( RESET1_n ) #else @@ -52,14 +54,8 @@ void main_loop( void ) system_status.pwr_state = ON_TRIG; } } - else - { - // リブート時は実行されない - system_status.pwr_state = OFF_TRIG; - } vreg_ctr_init( ); - vreg_twl_init( ); read_dipsw( ); // 特定スイッチで何かするか? diff --git a/trunk/pm.c b/trunk/pm.c index 0eb66af..edc0a9e 100644 --- a/trunk/pm.c +++ b/trunk/pm.c @@ -28,8 +28,8 @@ u8 rcomp; // float temp_co_up; // float temp_co_dn; // 256倍してある -unsigned char temp_co_up; -unsigned char temp_co_dn; +s16 temp_co_up; +s16 temp_co_dn; BT_VENDER battery_manufacturer = BT_VENDER_NOT_CHECKED; u8 reg_shadow; // NTR PMIC レジスタミラー @@ -174,15 +174,8 @@ err PM_BL_set( u8 dat ) intset |= REG_BIT_BL_L_OFF; } -/* -SoCがPWMを出すようレジスタをセットしてから遅延が有るため、ステータスを先に -更新してしまう。 -// Write - iic_mcu_write_a_byte( IIC_SLA_PMIC, PM_REG_ADRS_BL, blset ); - if( blset != 0x00 ){ - wait_ms( 10 ); - } -*/ +// SoCがPWMを出すようレジスタをセットしてから遅延が有るため、ステータスを先に +// 更新してしまう。 vreg_ctr[VREG_C_STATUS] = (( vreg_ctr[VREG_C_STATUS] & 0b10011111 ) | ( (( blset << 6 ) | ( blset << 4 )) & 0b01100000 )); // PMICのBLのビットと、MCUのSTATUSレジスタのビット位置が逆なため入れ替え @@ -205,6 +198,7 @@ SoC /// シャットダウンすることがある { wait_ms( 16 ); +// wait_ms( 84 ); ミツミの1stバグ回避 } 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] ) - && ( vreg_ctr[VREG_C_BT_TEMP] < 185 )) + if(( 86 < raw_adc_temperature ) + && ( raw_adc_temperature < 185 )) { temp_zone_charge_enable = 1; // 充電許可 } - else if(( vreg_ctr[VREG_C_BT_TEMP] < 70 ) - || ( 189 < vreg_ctr[VREG_C_BT_TEMP] )) + else if(( raw_adc_temperature < 70 ) + || ( 189 < raw_adc_temperature )) { temp_zone_charge_enable = 0; // 充電禁止 } @@ -655,25 +648,16 @@ void tsk_batt( ) if(( temp_zone_charge_enable == 1 ) && ( battery_manufacturer <= BT_VENDER_6 )) { -# ifndef _MODEL_WM0_ +#ifndef _MODEL_WM0_ // CHG_ENABLEピンは /WL_RST に配線されているので BT_CHG_ENABLE(); // 温度範囲OKで充電再開 } else { BT_CHG_DISABLE(); // 温度危険! 充電停止 -# endif +#endif } -#else - - // 温度無視して充電 -# ifndef _MODEL_WM0_ -// CHG_ENABLEピンは /WL_RST に配線されているので - BT_CHG_ENABLE(); // 温度範囲OKで充電再開 -# endif - -#endif // 充電 // // →割り込み。miscの中でよろしくやってくれている。 @@ -720,6 +704,8 @@ void BT_init( ) }dat_16; +// BT_DET_P = 1; // チャージに時間が掛かるので、先に上げておく +// BT_TEMP_P = 1; // 電池温度測定(TS,白箱判定も兼ねる) // while( ADCEN != 0 ) @@ -783,7 +769,7 @@ void BT_init( ) else { // 実機、バッテリ無し - system_status.model = MODEL_JIKKI_NOBATT; + system_status.model = MODEL_UNKNOWN; } } } @@ -799,9 +785,11 @@ void BT_init( ) else { // 実機、残量IC NACK( バッテリ無しまたは残量IC故障 ) - // 現状では、起動はさせとくが… - // todo? +#ifdef _ALLOW_NOBATT_ 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_write( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_BT_PARAM, 64, &BT_PARAM[ battery_manufacturer ] ); + rcomp = BT_PANA_RCOMP; temp_co_up = BT_PANA_TEMPCOUP; temp_co_dn = BT_PANA_TEMPCODN; +/* + todo +*/ + } // 6. 150ms以上待つ @@ -859,7 +852,6 @@ void BT_init( ) BT_temp_update( ); // 温度のtemp。 残量ICに行きます } - // どの機体で走ってても不可を同じくらいにするため、ADCタスクを登録 // 電池温度監視スタート raw_adc_temperature = get_adc( ADC_SEL_BATT_TEMP ); // 温度のtemp。 @@ -875,7 +867,7 @@ void BT_init( ) - +extern u16 _dbg_rcomp; /* ======================================================== raw_adc_temperatureに入っている値を℃に変換するとともに、 ・レジスタにセット @@ -886,8 +878,8 @@ task_status_immed BT_temp_update( ) static u8 count = 0; // たまにしか書きに行かない static u8 rawdat_old; - static unsigned long temperature; - u16 newrcomp; + static s16 temperature; + s16 newrcomp; /* サーミスタ - 10kΩ分圧点の時、 @@ -896,33 +888,28 @@ task_status_immed BT_temp_update( ) TDK T = 81.406 - 111.81 x ratio */ if( rawdat_old != raw_adc_temperature ){ - DBG_P_n = 1; // temperature = 81.45 - 111.9 * raw_adc_temperature/256.0; // それぞれ256倍してある - temperature = 20851 - 28646 * raw_adc_temperature; - vreg_ctr[VREG_C_BT_TEMP] = (u8)temperature / 256; - DBG_P_n = 0; + temperature = ( 20851 - 112 * raw_adc_temperature + (256/2) ) /256; + vreg_ctr[VREG_C_BT_TEMP] = temperature; } // 時々書きにゆく if( count == 0 ) { - DBG_P_n = 1; + newrcomp = 0; if( vreg_ctr[VREG_C_BT_TEMP] > 20 ) { - newrcomp = -( ( temperature - 20 ) * temp_co_up )/256; + newrcomp = ( ( temperature - 20 ) * temp_co_up )/256; } 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 ); - // todo - newrcomp = 0x9700; - - DBG_P_n = 0; + _dbg_rcomp = newrcomp; if( iic_mcu_write ( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_RCOMP, 2, &newrcomp ) == ERR_SUCCESS ) @@ -944,10 +931,15 @@ task_status_immed BT_temp_update( )  BT_init()が実行されている必要があります。 **********************************************************/ 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 ) { // 電池残量の取得 - static u8 bt_left_state; // バッテリ残量で割り込みのため static u8 bt_voltage_low_count; // todo どうにかせんとね u8 temp[2]; @@ -956,12 +948,15 @@ void BT_get_left(){ if( vreg_ctr[ VREG_C_BT_VOLTAGE ] > ( 3100 / 16 / 1.25 ) ) { bt_voltage_low_count = 0; + iic_mcu_read( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_SOC, 2, temp ); + vreg_ctr[ VREG_C_BT_REMAIN ] = temp[0]; + vreg_ctr[ VREG_C_BT_REMAIN_FINE ] = temp[1]; } else { bt_voltage_low_count += 1; - if( bt_voltage_low_count == 12 ) // およそ3sec + if( bt_voltage_low_count == 3*4 ) // およそ3sec { vreg_ctr[ VREG_C_BT_REMAIN ] = 0; set_irq( VREG_C_IRQ1, REG_BIT_BT_REMAIN ); @@ -972,45 +967,51 @@ void BT_get_left(){ 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 { 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に電池残量を教えてあげる 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で電池切れ } diff --git a/trunk/pm.h b/trunk/pm.h index 35d8637..77f6a54 100644 --- a/trunk/pm.h +++ b/trunk/pm.h @@ -16,6 +16,11 @@ +//========================================================= +#define LED_CHARGE P2.4 + + + //========================================================= enum PMIC_REG_ADRS { @@ -134,6 +139,9 @@ task_status_immed tski_PM_LCD_off(); 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 ) ) diff --git a/trunk/pool.h b/trunk/pool.h index bc7e991..24580c8 100644 --- a/trunk/pool.h +++ b/trunk/pool.h @@ -4,7 +4,7 @@ #include "pedometer.h" -#define VREG_C_FREE_SIZE 24 +#define VREG_C_FREE_SIZE 176 // 空いてるメモリ typedef struct { diff --git a/trunk/renge/renge.c b/trunk/renge/renge.c index 163f160..a9806a4 100644 --- a/trunk/renge/renge.c +++ b/trunk/renge/renge.c @@ -17,8 +17,7 @@ #include "..\config.h" #include "..\user_define.h" - -#define _renge_test_ +//#define _renge_test_ //****************************************************************************** bit renge_flg_interval; diff --git a/trunk/sw.c b/trunk/sw.c index f63fe27..fd0e880 100644 --- a/trunk/sw.c +++ b/trunk/sw.c @@ -10,19 +10,23 @@ #include "led.h" #include "pm.h" #include "rtc.h" - +#include "sw.h" //========================================================= +/* + vreg_ctrから読みたいのでヘッダへ #define INTERVAL_TSK_SW 8 #define CLICK_THRESHOLD 2 -#ifdef _FOR_E3_ -#define HOLD_THREASHOLD (u8)( 800 / INTERVAL_TSK_SW ) +#ifdef _FORCE_OFF_1SEC_ +#define HOLD_THREASHOLD (u8)( 800 / INTERVAL_TSK_SW ) +#define FORCEOFF_THREASHOLD (u8)( 1000 / INTERVAL_TSK_SW ) #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 - +*/ //========================================================= u8 SW_pow_count; @@ -83,7 +87,8 @@ void tsk_sw( ) { case ( ON_TRIG ): cnt_force_off = 0; - break; + SW_pow_count = 0; + break; } if( task_interval-- != 0 ) @@ -126,15 +131,11 @@ void tsk_sw( ) if( cnt_force_off != 0 ) { -#ifdef _FOR_E3_ - if( ++cnt_force_off == ( 200 / INTERVAL_TSK_SW ) ) -#else - if( ++cnt_force_off == ( 4000 / INTERVAL_TSK_SW ) ) -#endif + if( ++cnt_force_off >= vreg_ctr[ VREG_C_OFF_DELAY ] * 6 ); { // タイムアウトによる強制OFF 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; renge_task_interval_run_force = 1; } diff --git a/trunk/sw.h b/trunk/sw.h index 12b473e..1ad7d4c 100644 --- a/trunk/sw.h +++ b/trunk/sw.h @@ -1,7 +1,20 @@ #ifndef _sw_ #define _sw_ +#include "config.h" + extern u8 SW_pow_count; 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 diff --git a/trunk/task_misc.c b/trunk/task_misc.c index 5321191..399feee 100644 --- a/trunk/task_misc.c +++ b/trunk/task_misc.c @@ -211,6 +211,11 @@ task_status_immed do_command0( ) // task_status_immed do_command1( ) + +u16 _dbg_rcomp; +extern u8 raw_adc_temperature; + + extern u8 iic_burst_state; /* ========================================================  デバッグ用にいろいろ読んできます。 @@ -259,7 +264,15 @@ task_status_immed tski_mcu_info_read() break; 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; default: diff --git a/trunk/task_sys.c b/trunk/task_sys.c index 93272e3..2f64235 100644 --- a/trunk/task_sys.c +++ b/trunk/task_sys.c @@ -22,7 +22,7 @@ static void chk_emergencyExit(); //========================================================= - +extern bit infoLed_off; /* ======================================================== @@ -34,17 +34,16 @@ static void chk_emergencyExit(); void tsk_sys( ) { static u8 timeout = 0; + static u8 bt_status_old; switch ( system_status.pwr_state ) { case OFF: //------------------------------------------------------- // スイッチ操作などで割り込みが発生し、スリープが解除されるとここに来ます。 - switch ( system_status.poweron_reason ) + if( system_status.poweron_reason == NONE ) { - case( NONE ): // スイッチで電源on - if( SW_pow_count != 0 ) { timeout = 0; @@ -67,24 +66,24 @@ void tsk_sys( ) } // 電源投入 system_status.poweron_reason = PWSW; - break; - - default: - break; } SW_pow_mask = 1; timeout = 0; - BT_DET_P = 1; // チャージに時間が掛かるので先に上げておく - BT_TEMP_P = 1; - // 電源投入 // + BT_DET_P = 1; // チャージに時間が掛かるので、先に上げておく + BT_TEMP_P = 1; iic_mcu_start( ); - BT_init( ); // 実機やバッテリの判定、電池残量ICの設定 + if( system_status.poweron_reason == EXT_POWER ) + { + system_status.pwr_state = BT_CHARGE; + return; + } + if( system_status.model == MODEL_JIKKI_NOBATT ) { renge_task_interval_run_force = 1; @@ -142,28 +141,10 @@ void tsk_sys( ) #endif 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の初期化まで割り込み保留 // ほんとはここにべた書きしたくないが... - 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 ) + if( ( vreg_ctr[ VREG_C_MCU_STATUS ] & REG_BIT_STATUS_WDT_RESET ) != 0 ) { set_irq( VREG_C_IRQ0, REG_BIT_IRQ_WDT_RESET ); } @@ -192,6 +173,17 @@ void tsk_sys( ) MK2L = ~INT_MSK2_WIFI_TX_KE3; #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.pwr_state = ON; break; @@ -228,19 +220,30 @@ void tsk_sys( ) NOP(); SLP_ACK = 0; #endif - - system_status.pwr_state = ON_TRIG; - renge_task_interval_run_force = 1; + system_status.pwr_state = ON; } break; case OFF_TRIG: //--------------------------------------- // LED消灯を待つ - vreg_ctr[VREG_C_LED_POW] = LED_POW_ILM_OFF; - if( LED_duty_pow_blu != 0 ) + vreg_ctr[ VREG_C_LED_POW ] = LED_POW_ILM_OFF; + 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( ); @@ -290,17 +293,30 @@ void tsk_sys( ) // no break // case BT_CHARGE: - system_status.pwr_state = OFF; 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 { + bt_status_old = 0; // 省電力へ移行 - LED_CHARGE = 0; - BT_TEMP_P = 0; + system_status.poweron_reason = NONE; + + PM_Chg_Stop(); + while( RWST ) {;} @@ -329,6 +345,9 @@ void tsk_sys( ) CKC = 0b00001000; # endif RTCIMK = 0; + system_status.pwr_state = OFF; + BT_DET_P = 1; // チャージに時間が掛かるので、先に上げておく + BT_TEMP_P = 1; } return; @@ -416,15 +435,22 @@ __interrupt void intp0_slp( ) { // SLP if( SLP_REQ ){ system_status.pwr_state = SLEEP_TRIG; + renge_task_interval_run_force = 1; }else{ - system_status.pwr_state = ON_TRIG; - if( PM_BL_set() != ERR_SUCCESS ){ - renge_task_interval_run_force = 1; - iic_mcu_stop(); - system_status.pwr_state = OFF_TRIG; - } + system_status.pwr_state = ON; + PM_VDD_normMode(); + wait_ms( 5 ); // tdly_sw + +#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; } */ diff --git a/trunk/user_define.h b/trunk/user_define.h index d846f3e..c0980d4 100644 --- a/trunk/user_define.h +++ b/trunk/user_define.h @@ -1,26 +1,12 @@ #ifndef _USER_DEF_ #define _USER_DEF_ -#define IIC_SLV_ADDR_MONITOR 0x6E + #define IIC_T_SLAVEADDRESS 0x4A #define IIC_C_SLAVEADDRESS 0x4A #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_ # define DBG_LED_on { PM2.4 = 0; P2.4 = 1; } # define DBG_LED_off { PM2.4 = 1; P2.4 = 0; } @@ -171,7 +157,7 @@ //#define LED_TUNE P5.2 // SLTO ← TO01 //#define LED_POW2 P1.4 // TO06 ( 青 ) //#define LED_POW1 P1.5 // TO07 ( 赤 ) -#define LED_CHARGE P2.4 +//#define LED_CHARGE P2.4 #ifdef _MODEL_TEG2_ @@ -253,8 +239,6 @@ #endif -#define DBG_P_n P2.2 - #define KR_SW_POW ( 1 << 3 ) #define KR_SW_WIFI ( 1 << 4 ) diff --git a/trunk/vreg_ctr.c b/trunk/vreg_ctr.c index 1a3e311..70f5781 100644 --- a/trunk/vreg_ctr.c +++ b/trunk/vreg_ctr.c @@ -21,6 +21,8 @@ extern u8 iic_burst_state; // ******************************************************** u8 vreg_ctr[VREG_C_ENDMARK_]; +u8 vreg_free_adrs; // アドレス飛んでるのでしばらくはこれで + bit irq_readed; // AAA型のため。 @@ -38,22 +40,24 @@ extern task_status_immed tski_mcu_info_read(); // 非ゼロの初期値の指定が必要なアドレス 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_B] = VCOM_DEFAULT_B; + vreg_ctr[ VREG_C_VCOM_T ] = VCOM_DEFAULT_T; + vreg_ctr[ VREG_C_VCOM_B ] = VCOM_DEFAULT_B; + + vreg_ctr[ VREG_C_OFF_DELAY ] = FORCEOFF_THREASHOLD; } void vreg_ctr_reset( ) { #ifdef _PMIC_TWL_ - vreg_ctr[VREG_C_MCU_VER_MAJOR] = MCU_VER_MAJOR; + vreg_ctr[ VREG_C_MCU_VER_MAJOR ] = MCU_VER_MAJOR; #else - vreg_ctr[VREG_C_MCU_VER_MAJOR] = MCU_VER_MAJOR | 0x10; + vreg_ctr[ VREG_C_MCU_VER_MAJOR ] = MCU_VER_MAJOR | 0x10; #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_WIFI ] = 0; vreg_ctr[ VREG_C_LED_CAM ] = 0; @@ -62,7 +66,7 @@ void vreg_ctr_reset( ) u8 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; break; - case ( VREG_C_DBG1 ): - case ( VREG_C_DBG2 ): - vreg_ctr[adrs] = data; - break; - - case ( VREG_C_DBG3 ): - if( ( vreg_ctr[VREG_C_DBG1] == 'j' ) - && ( vreg_ctr[VREG_C_DBG2] == 'h' ) + case ( VREG_C_DBG03 ): + if( ( vreg_ctr[VREG_C_DBG01] == 'j' ) + && ( vreg_ctr[VREG_C_DBG02] == 'h' ) && ( data == 'l' ) ) { renge_task_immed_add( tski_firm_update ); IICAMK = 1; } - vreg_ctr[ VREG_C_DBG3 ] = 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; + vreg_ctr[ VREG_C_DBG03 ] = data; break; case ( VREG_C_COMMAND0 ): @@ -161,17 +152,6 @@ void vreg_ctr_write( u8 adrs, u8 data ) } 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 ): if( iic_burst_state == 0 ) { @@ -180,7 +160,7 @@ void vreg_ctr_write( u8 adrs, u8 data ) } 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; } break; @@ -198,7 +178,6 @@ void vreg_ctr_write( u8 adrs, u8 data ) iic_burst_state += 1; } - /// 非同期で動いているためここでは書かない。 // 予約するだけでstopで書く 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 ); break; - case ( VREG_C_RTC_DAY ): - set_rtc( adrs - VREG_C_RTC_SEC, data & 0x3F ); - break; - case ( VREG_C_RTC_MONTH ): set_rtc( adrs - VREG_C_RTC_SEC, data & 0x1F ); break; @@ -250,11 +225,6 @@ void vreg_ctr_write( u8 adrs, u8 data ) vreg_ctr[ VREG_C_RTC_ALARM_MONTH ] = ( data & 0x1F ); break; - case ( VREG_C_RTC_ALARM_YEAR ): - vreg_ctr[ VREG_C_RTC_ALARM_YEAR ] = data; - break; - - case ( VREG_C_ACC_CONFIG ): renge_task_immed_add( acc_hosu_set ); 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; break; - case ( VREG_C_ACC_W_ADRS ): - vreg_ctr[ VREG_C_ACC_W_ADRS ] = data; - break; - case ( VREG_C_ACC_W_BUF ): renge_task_immed_add( acc_write ); vreg_ctr[ VREG_C_ACC_W_BUF ] = data; 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 ): if( ( data & 0x01 ) != 0 ) { @@ -287,22 +247,19 @@ void vreg_ctr_write( u8 adrs, u8 data ) } break; - case ( VREG_C_ACC_HOSU_HOUR_BOUNDARY ): - vreg_ctr[ VREG_C_ACC_HOSU_HOUR_BOUNDARY ] = data; - 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 ) + case ( VREG_CX_FREE_DATA ): + if( vreg_free_adrs < VREG_C_FREE_SIZE ) { - pool.vreg_c_ext.vreg_c_free[ vreg_ctr[ VREG_C_FREE_ADRS ] ] = data; - vreg_ctr[ VREG_C_FREE_ADRS ] += 1; + pool.vreg_c_ext.vreg_c_free[ vreg_free_adrs ] = data; + vreg_free_adrs += 1; } break; + case ( VREG_CX_FREE_ADRS ): + vreg_free_adrs = data; + break; + + case ( VREG_C_COMMAND3 ): switch ( data ) { @@ -320,7 +277,34 @@ void vreg_ctr_write( u8 adrs, u8 data ) break; 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; } @@ -350,10 +334,10 @@ u8 vreg_ctr_read( u8 adrs ) { 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] ]; - vreg_ctr[VREG_C_FREE_ADRS] += 1; + temp = pool.vreg_c_ext.vreg_c_free[ vreg_free_adrs ]; + // vreg_free_adrs += 1; // ここで加算してしまうとインデックスがずれる return( temp ); } 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 ) ); } - else if( adrs == VREG_C_INFO ) + else if( adrs == VREG_CX_INFO ) { // I2C_mを使うので、ここからでは割り込みが使えなくて困る // なのでタスク登録する。 @@ -395,16 +379,20 @@ void vreg_ctr_after_read( u8 adrs ) // 割り込みフラグはリードでクリア switch( adrs ) { - case VREG_C_IRQ0: - case VREG_C_IRQ1: - case VREG_C_IRQ2: - case VREG_C_IRQ3: - case VREG_C_IRQ4: + case VREG_C_IRQ0: + case VREG_C_IRQ1: + case VREG_C_IRQ2: + case VREG_C_IRQ3: + case VREG_C_IRQ4: vreg_ctr[ adrs ] = 0; irq_readed = 1; break; - default: + case VREG_CX_FREE_DATA: + vreg_free_adrs += 1; + break; + + default: break; } } @@ -434,14 +422,19 @@ void set_irq( u8 irqreg, u8 irq_flg ) { u8 tot; -// DI(); - if( ( vreg_ctr[ irqreg + 8 ] & irq_flg ) == 0 ){ - vreg_ctr[ irqreg ] |= irq_flg; - IRQ0_neg; // 一瞬上げて... -// EI(); - tot = 0; - while( !IRQ0 && ( ++tot != 0 ) ){;} // O.D.なのでちゃんとあがるのを待つ & IRQ_mcu がLに縛られてると困る(基板不良) - IRQ0_ast; // 落とし直す。 + if(( system_status.pwr_state == ON ) || + ( system_status.pwr_state == SLEEP ) || + ( system_status.pwr_state == SLEEP_TRIG )) + { + // DI(); + if( ( vreg_ctr[ irqreg + 8 ] & irq_flg ) == 0 ){ + vreg_ctr[ irqreg ] |= irq_flg; + IRQ0_neg; // 一瞬上げて... + // EI(); + tot = 0; + while( !IRQ0 && ( ++tot != 0 ) ){;} // O.D.なのでちゃんとあがるのを待つ & IRQ_mcu がLに縛られてると困る(基板不良) + IRQ0_ast; // 落とし直す。 + } } // EI(); } diff --git a/trunk/vreg_ctr.h b/trunk/vreg_ctr.h index 42a19fb..5f62943 100644 --- a/trunk/vreg_ctr.h +++ b/trunk/vreg_ctr.h @@ -152,9 +152,9 @@ enum VREG_C VREG_C_VCOM_T = 0x03, VREG_C_VCOM_B, - VREG_C_DBG1 = 0x05, - VREG_C_DBG2, - VREG_C_DBG3, + VREG_C_DBG01 = 0x05, + VREG_C_DBG02, + VREG_C_DBG03, VREG_C_TUNE = 0x08, VREG_C_SND_VOL, @@ -181,12 +181,11 @@ enum VREG_C VREG_C_COMMAND0 = 0x20, VREG_C_COMMAND1, VREG_C_COMMAND2, - VREG_C_COMMAND3, // 'r' でマイコンリセット + VREG_C_COMMAND3, // 'r' でマイコンリセット、 'w' でWDTリセット - VREG_C_DBG20 = 0x24, - VREG_C_DBG21, - VREG_C_DBG22, - VREG_C_DBG23, + VREG_C_VOL_DIGITAL = 0x23, + + VREG_C_OFF_DELAY = 0x24, VREG_C_LED_BRIGHT = 0x28, VREG_C_LED_POW, @@ -233,24 +232,17 @@ enum VREG_C VREG_C_ACC_HOSU_H, VREG_C_ACC_HOSU_SETTING, VREG_C_ACC_HOSU_HIST = 0x4F, - VREG_C_ACC_HOSU_HOUR_BOUNDARY = 0x50, - - // とりあえず15バイトのスキマ - - VREG_C_FREE_ADRS = 0x60, - VREG_C_FREE_DATA, + VREG_C_ACC_HOSU_HOUR_BOUNDARY = 0x50, 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_PM_INFO, // 未使用 - VREG_C_BT_INFO, // 未使用 -*/ - /*============================================================================*/ void vreg_ctr_init( ); void vreg_ctr_reset( ); diff --git a/trunk/vreg_twl.c b/trunk/vreg_twl.c index de4f18e..ed01e76 100644 --- a/trunk/vreg_twl.c +++ b/trunk/vreg_twl.c @@ -8,7 +8,6 @@ TWL #include "led.h" #include "vreg_twl.h" - #include "vreg_ctr.h" // ======================================================== @@ -28,9 +27,9 @@ extern bit twl_ver_read; void vreg_twl_init( ) { vreg_twl[ REG_TWL_INT_ADRS_MODE ] = 0x03; - vreg_twl[ REG_TWL_ADRS_IRQ ] = 0; - vreg_twl[ REG_TWL_ADRS_CAM ] = 0; - vreg_twl[ REG_TWL_ADRS_TEMP0 ] = 0; + vreg_twl[ REG_TWL_INT_ADRS_IRQ ] = 0; + vreg_twl[ REG_TWL_INT_ADRS_CAM ] = 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; }else if( vreg_ctr[ VREG_C_BT_REMAIN ] > 50 ){ 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; - }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; }else{ vreg_twl[ REG_TWL_INT_ADRS_POWER_INFO ] = 0x00; diff --git a/trunk/yav_mcu_bsr.plg b/trunk/yav_mcu_bsr.plg index 49bf2bd..b538fba 100644 --- a/trunk/yav_mcu_bsr.plg +++ b/trunk/yav_mcu_bsr.plg @@ -1,24 +1,28 @@ 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. "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. -"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 -vreg_ctr.c(84) : CC78K0R warning W0401: Conversion may lose significant digits -vreg_ctr.c(143) : CC78K0R warning W0401: Conversion may lose significant digits -vreg_ctr.c(152) : CC78K0R warning W0401: Conversion may lose significant digits -vreg_ctr.c(153) : CC78K0R warning W0401: Conversion may lose significant digits -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 +"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 +task_sys.c(182) : CC78K0R warning W0401: Conversion may lose significant digits +task_sys.c(417) : CC78K0R warning W0401: Conversion may lose significant digits +Compilation complete, 0 error(s) and 2 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\task_sys.asm 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 Link complete, 0 error(s) and 0 warning(s) found. diff --git a/trunk/yav_mcu_bsr.pri b/trunk/yav_mcu_bsr.pri index cbb15ff..c2a4876 100644 --- a/trunk/yav_mcu_bsr.pri +++ b/trunk/yav_mcu_bsr.pri @@ -78,10 +78,10 @@ Symbol Type=OFF Language=C Kanji=SJIS [Source] -Geometry=285, 104, 812, 601 +Geometry=196, 23, 873, 815 Window=Normal -DispStart=60 -CaretPos=84,0 +DispStart=331 +CaretPos=335,0 Mode=Normal DispFile= Address1= @@ -139,19 +139,11 @@ SaveRange=Screen SaveStart= SaveEnd= Accumulative=ON -[Source1] -Geometry=75, 75, 812, 601 -Window=Normal -DispStart=343 -CaretPos=357,23 -Mode=Normal -DispFile=vreg_ctr.c -Accumulative=ON [Assemble] Geometry=19, 497, 600, 400 Window=Normal -DispStart=704 -CaretPos=704,27 +DispStart=16664 +CaretPos=16664,27 Address1= Address2= Address3= @@ -822,7 +814,7 @@ L529=IICWL1 L530=IICWH1 L531=SVA1 [Local Variable] -Geometry=772, 680, 400, 244 +Geometry=860, 559, 400, 244 Window=Normal Boundary=13041851 Mode=Proper @@ -891,8 +883,8 @@ PSW=1 ES=1 CS=1 [Event Manager] -Geometry=0, 0, 0, 0 -Window=Hide +Geometry=50, 50, 500, 200 +Window=Normal Sort by=Unsort Detail=OFF [Event Set] @@ -968,47 +960,64 @@ Count=0 Geometry=884, 10, 440, 653 Window=Normal Boundary=18088086 -0=.info_LED,.,N,A,+,1 -1=.list_id,P,N,A,+,1 -2=.TDR02,P,S,A,+,1 -3=.P4.2,P,S,A,+,1 -4=+pool,.,N,A,-,1 -5=.p_LED_duty_WiFi,.,N,A,+,1 -6=.system_status,.,N,A,+,1 -7=.psw,P,R,A,+,1 -8=.vreg_ctr,P,N,A,+,1 -9=.tasks_immed,P,N,A,+,1 -Line=10 +0=.p7.0,P,S,A,+,1 +1=.p5.1,P,S,A,+,1 +2=.pu7.0,P,S,A,+,1 +3=.pm7.0,P,S,A,+,1 +4=.pu5.1,P,S,A,+,1 +5=.pm5.1,P,S,A,+,1 +6=.temperature,D,N,A,+,1 +7=.raw_adc_temperature,D,N,A,+,1 +8=.info_LED,.,N,A,+,1 +9=.list_id,P,N,A,+,1 +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] -0=iic_mcu_bus_status,P,A,1 -1=temp,P,A,1 -2=adc_raw_vol,P,A,1 -3=force_update_adc,P,A,1 -4=DMAMK1,P,A,1 -5=DMAIF1,P,A,1 -6=tasks_immed,P,A,1 -7=list_id,P,A,1 -8=psw,P,A,1 -9=system_status,P,A,1 -10=p_LED_duty_WiFi,P,A,1 -11=P4.2,P,A,1 -12=TDR02,P,A,1 -13=vreg_ctr,P,A,1 -14=info_LED,P,A,1 -15=pool,P,A,1 +0=TDR02,P,A,1 +1=vreg_ctr,P,A,1 +2=info_LED,P,A,1 +3=pool,P,A,1 +4=rcomp,P,A,1 +5=temp_co_up,P,A,1 +6=temp_co_dn,P,A,1 +7=temperature,P,A,1 +8=raw_adc_temperature,P,A,1 +9=pu70,P,A,1 +10=pm7.0,P,A,1 +11=pu7.0,P,A,1 +12=p7.0,P,A,1 +13=p5.1,P,A,1 +14=pu5.1,P,A,1 +15=pm5.1,P,A,1 [Software Break] Geometry=1085, 803, 500, 296 Window=Normal Width=150 30 200 100 -Name0=Swb00015 -Address0=pm.c#_ntr_pmic_comm+0x32 +Name0=Swb00001 +Address0=vreg_ctr.c#_vreg_ctr_read+0x3c Window0=ASM Status0=ON -Name1=Swb00001 -Address1=vreg_ctr.c#_vreg_ctr_read+0x3c +Name1=Swb00015 +Address1=led.c#_tsk_led_cam+0x76 Window1=ASM Status1=ON -Count=2 +Name2=Swb00002 +Address2=task_status.c#_tsk_status+0x70 +Window2=ASM +Status2=ON +Count=3 [Reset] Debugger=ON Symbol=OFF diff --git a/trunk/yav_mcu_bsr.prj b/trunk/yav_mcu_bsr.prj index 732524d..30c18b4 100644 --- a/trunk/yav_mcu_bsr.prj +++ b/trunk/yav_mcu_bsr.prj @@ -520,6 +520,65 @@ DefaultMode2=1 DefaultMode3=1 DefaultMode4=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] Version=210 Include0=renge,C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r @@ -696,7 +755,7 @@ Unsignedchar=0 Usesaddrchk=0 Autoallocationchk=1 Jumpoptimize=1 -Librarycallchk=0 +Librarycallchk=1 Librarycall=1129 Aggressivechk=1 Relativebranchchk=1 @@ -986,62 +1045,3 @@ VfiFileBoot0= VfiFileBoot1=boot.vfi VF78K0Rchk=0 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 diff --git a/trunk/yav_mcu_bsr.prk b/trunk/yav_mcu_bsr.prk index 06a7bcb..8c25c0b 100644 --- a/trunk/yav_mcu_bsr.prk +++ b/trunk/yav_mcu_bsr.prk @@ -1,5 +1,5 @@ [ProjectManager] -FrameMax=0 +FrameMax=1 FrameX=255 FrameY=34 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 OpenFile5=loader.c,0,296,307,1286,923,20,214,20,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 -OpenFile8=vreg_ctr.h,0,632,184,1876,910,8,40,25,0 -OpenFile9=pedo_alg_thre_det2.c,0,132,132,1376,858,0,12,0,0 -OpenFile10=adc.c,0,286,286,1530,1012,0,145,0,0 -OpenFile11=self_flash.c,0,154,154,1398,880,7,365,7,0 -OpenFile12=ProjectWindow +OpenFile7=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=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=ProjectWindow PrjPos=0,2,754,3,253 -OpenFile13=magic.c,0,323,248,1567,974,0,17,0,0 -OpenFile14=led.h,0,22,22,1023,650,25,29,25,0 -OpenFile15=config.h,0,288,71,1532,797,0,28,0,0 -OpenFile16=task_misc.c,0,308,308,1552,1034,0,12,0,0 -OpenFile17=renge\renge_defs.h,0,667,22,1514,748,4,37,4,0 -OpenFile18=i2c_ctr.c,0,132,132,1376,858,20,211,16,0 -OpenFile19=vreg_ctr.c,0,154,154,1398,880,72,355,73,0 -OpenFile20=OutputWindow +OpenFile12=magic.c,0,323,248,1567,974,0,17,0,0 +OpenFile13=led.h,0,22,22,1023,650,25,29,25,0 +OpenFile14=led.c,0,315,193,1559,919,0,656,0,0 +OpenFile15=config.h,0,288,71,1532,797,26,27,26,0 +OpenFile16=sw.c,0,574,367,1818,1093,0,36,0,0 +OpenFile17=vreg_twl.c,0,286,286,1530,1012,2,65,2,0 +OpenFile18=OutputWindow OutputPos=0,536,1002,34,1092 ActivePRJ=yav_mcu_bsr.prj [ProjectWindow] diff --git a/trunk/yav_mcu_bsr.sdb b/trunk/yav_mcu_bsr.sdb index 308178e..46c38f1 100644 --- a/trunk/yav_mcu_bsr.sdb +++ b/trunk/yav_mcu_bsr.sdb @@ -11,7 +11,7 @@ T=4bf114e2 7=rtc.h 8=reboot.h [pm.c] -T=4bf213b1 +T=4bf28b7e 1=incs.h 2=adc.h 3=led.h @@ -25,7 +25,7 @@ T=4bf2324a 1=config.h 2=incs.h [main.c] -T=4bf0d1e1 +T=4bf3b1c1 1=incs_loader.h 2=WDT.h 3=rtc.h @@ -35,7 +35,7 @@ T=4bf0d1e1 7=adc.h 8=pool.h [magic.c] -T=4bf23469 +T=4bf3b865 1=config.h [WDT.c] T=4bf0d1e1 @@ -50,14 +50,14 @@ T=4bf0d1e0 2=incs.h 3=i2c_twl_defs.h [led.c] -T=4bf213b1 +T=4bf3a163 1=incs.h 2=led.h [rtc.c] T=4bf0d1e1 1=incs.h [vreg_ctr.c] -T=4bf23471 +T=4bf3a2ff 1=incs.h 2=vreg_ctr.h 3=rtc.h @@ -68,7 +68,7 @@ T=4bf23471 8=..\..\..\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r\fsl.h 9=fsl_user.h [vreg_twl.c] -T=4bf1fe17 +T=4bf3b1c1 1=incs.h 2=jhl_defs.h 3=led.h @@ -102,7 +102,7 @@ T=4bf0d1e0 4=i2c_ctr.h 5=pool.h [sw.c] -T=4bf0d1e0 +T=4bf3afad 1=incs.h 2=i2c_twl.h 3=i2c_ctr.h @@ -115,7 +115,7 @@ T=4bf0d1e1 2=renge\renge.h 3=pm.h [task_misc.c] -T=4bf2178f +T=4bf27c33 1=incs.h 2=renge\renge.h 3=pm.h @@ -124,7 +124,7 @@ T=4bf2178f 6=i2c_mcu.h 7=led.h [task_sys.c] -T=4bf21233 +T=4bf3b993 1=incs.h 2=i2c_twl.h 3=i2c_ctr.h @@ -169,9 +169,9 @@ T=4bf0d1e1 T=4bf0d1e0 1=config.h [config.h] -T=4bf0d1e0 +T=4bf3afad [user_define.h] -T=4bf0d1e1 +T=4bf376de [bsr_system.h] T=4bf0d1e1 [renge\renge.h] @@ -201,7 +201,7 @@ T=4bf0d1e0 [i2c_ctr.h] T=4bf0d1e1 [pm.h] -T=4bf0d1e1 +T=4bf376de [rtc.h] T=4bf0d1e1 [reboot.h] @@ -228,9 +228,9 @@ T=4bf0d1e0 T=4bf0d1e1 1=jhl_defs.h [led.h] -T=4bf13f6f +T=4bf3815d [batt_params.h] -T=4bf0d1e1 +T=4bf28b27 [i2c_twl_defs.h] T=4bf0d1e1 [renge\renge_task_intval.h]