From 5812913f0d2356bdbaa8ce8ac67654e4b076c5cd Mon Sep 17 00:00:00 2001 From: fujita_ryohei Date: Tue, 1 Sep 2009 06:47:57 +0000 Subject: [PATCH] =?UTF-8?q?V0.2=E3=80=809/8,9/15=20=E5=AE=9F=E8=A3=85?= =?UTF-8?q?=E5=88=86=20=EF=BC=88=E5=AE=9F=E8=A3=85=EF=BC=89=E3=83=BB?= =?UTF-8?q?=E5=8A=A0=E9=80=9F=E5=BA=A6=E3=82=BB=E3=83=B3=E3=82=B5=E9=80=8F?= =?UTF-8?q?=E9=81=8E=E3=82=A2=E3=82=AF=E3=82=BB=E3=82=B9=20=EF=BC=88?= =?UTF-8?q?=E4=BF=AE=E6=AD=A3=EF=BC=89=E3=83=BBADC=E3=83=8E=E3=82=A4?= =?UTF-8?q?=E3=82=BA=20=EF=BC=88=E8=BF=BD=E5=8A=A0=EF=BC=89=E3=83=BB?= =?UTF-8?q?=E3=83=AF=E3=83=BC=E3=82=AD=E3=83=B3=E3=82=B0=E3=83=A2=E3=83=87?= =?UTF-8?q?=E3=83=AB=E5=AF=BE=E5=BF=9C=20=EF=BC=88=E4=BF=AE=E6=AD=A3?= =?UTF-8?q?=EF=BC=89=E3=83=BBI2C=5Fm=E3=81=AE=E9=80=9A=E4=BF=A1=E4=B8=AD?= =?UTF-8?q?=E3=81=ABI2C=5F2=E3=81=8B=E3=82=89=E3=83=87=E3=83=BC=E3=82=BF?= =?UTF-8?q?=E3=82=92=E7=A0=B4=E5=A3=8A=E3=81=99=E3=82=8B=E3=81=93=E3=81=A8?= =?UTF-8?q?=E3=81=8C=E3=81=82=E3=82=8A=E3=81=9D=E3=81=86=E3=81=A0=E3=81=A3?= =?UTF-8?q?=E3=81=9F=20=EF=BC=88=E4=BF=AE=E6=AD=A3=EF=BC=89=E3=83=BB?= =?UTF-8?q?=E9=9B=BB=E6=BA=90=E6=8A=95=E5=85=A5=E6=99=82=E3=81=AE=E6=AE=8B?= =?UTF-8?q?=E9=87=8FIC=E3=81=B8=E3=81=AE=E3=82=BB=E3=83=83=E3=83=88?= =?UTF-8?q?=E3=81=AE=E9=A0=86=E7=95=AA=E3=81=AA=E3=81=A9=20=EF=BC=88?= =?UTF-8?q?=E8=BF=BD=E5=8A=A0=EF=BC=89=E3=83=BBTWL=E3=81=8B=E3=82=89?= =?UTF-8?q?=E3=81=AE=E5=89=B2=E3=82=8A=E8=BE=BC=E3=81=BF=E3=82=92=E6=96=B0?= =?UTF-8?q?=E8=A6=8FI2C=E3=81=B8=E9=80=9A=E7=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-05-23%20-%20ctr.7z%20+%20svn_v1.068.zip/ctr/svn/ctr_mcu@5 013db118-44a6-b54f-8bf7-843cb86687b1 --- trunk/accero.c | 93 ++-- trunk/accero.h | 5 +- trunk/adc.c | 75 ++- trunk/config.h | 4 +- trunk/i2c_ctr.c | 16 +- trunk/i2c_mcu.c | 27 +- trunk/i2c_mcu.h | 2 +- trunk/i2c_twl.c | 52 +- trunk/loader.c | 5 +- trunk/main.c | 4 +- trunk/pm.c | 114 ++-- trunk/pm.h | 4 +- trunk/tasks.c | 45 +- trunk/tasks_sys.c | 19 +- trunk/user_define.h | 2 + trunk/vreg_ctr.c | 29 +- trunk/vreg_ctr.h | 20 +- trunk/vreg_twl.c | 54 +- trunk/vreg_twl.h | 9 +- trunk/yav_mcu_bsr.pri | 1159 ++++++++++++++++++++--------------------- trunk/yav_mcu_bsr.prj | 25 +- trunk/yav_mcu_bsr.prk | 46 +- trunk/yav_mcu_bsr.sdb | 69 +-- 23 files changed, 1003 insertions(+), 875 deletions(-) diff --git a/trunk/accero.c b/trunk/accero.c index 1672eb9..9cd4dce 100644 --- a/trunk/accero.c +++ b/trunk/accero.c @@ -41,6 +41,10 @@ #define ACC_BITS_ALL_AXIS_ON 7 +#define VREG_BITMASK_ACC_CONF0_HOSU 1 +#define VREG_BITMASK_ACC_CONF1_ACQ 3 + + // ======================================================== u8 hosu_mode = 0; @@ -62,32 +66,23 @@ task_status_immed tsk_cbk_accero(){ // if( system_status.pwr_state == ON ){ - // if( 自動歩数計? ) -/* - sequence += 1; - vreg_ctr[VREG_C_ACC_0SEQ + 7 * ( sequence & 0x03 )] = sequence; - dest_adrs = &vreg_ctr[VREG_C_ACC_0XH] + 7 * ( sequence & 0x03 ) + 1; - iic_mcu_read( IIC_SLA_ACCEL, ( ACC_REG_X | 0x80 ), 6, dest_adrs ); -*/ - iic_mcu_read( IIC_SLA_ACCEL, ( ACC_REG_X | 0x80 ), 6, &vreg_ctr[VREG_C_ACC_XH] ); - if(( vreg_ctr[ VREG_C_ACC_CONFIG ] & 0x03 ) == 1 ){ + // 加速度センサデータレジスタへの反映 + iic_mcu_read( IIC_SLA_ACCEL, ( ACC_REG_X | 0x80 ), 6, &vreg_ctr[VREG_C_ACC_XL] ); + if(( vreg_ctr[ VREG_C_ACC_CONFIG ] & VREG_BITMASK_ACC_CONF1_ACQ ) == 1 ){ vreg_ctr[ VREG_C_IRQ1 ] |= REG_BIT_ACC_DAT_RDY; - IRQ0_ast; + IRQ0_ast; + } } -/* - switch( system_status.pwr_state ){ - case OFF: - case ON_TRIG: - case ON: - case SLEEP_TRIG: - case SLEEP: - case OFF_TRIG: - default: - break; - } -*/ + // 歩数計 offでなければ、電源off中でも計測 + if(( vreg_ctr[ VREG_C_ACC_CONFIG_HOSU ] & VREG_BITMASK_ACC_CONF0_HOSU ) != 0 ){ + if(( vreg_ctr[ VREG_C_ACC_CONFIG ] & VREG_BITMASK_ACC_CONF1_ACQ ) == 0x01 ){ + // 歩数計アルゴリズム 100Hz版 + }else{ + // 同 省電力版 + } } + return( ERR_SUCCESS ); } @@ -98,7 +93,8 @@ task_status_immed tsk_cbk_accero(){ //  加速度センサ透過アクセス リード ========================================================*/ task_status_immed acc_read(){ - vreg_ctr[VREG_C_ACC_R_BUF] = iic_mcu_read_a_byte( IIC_SLA_ACCEL, vreg_ctr[VREG_C_ACC_R_ADRS] ); + vreg_ctr[ VREG_C_ACC_W_BUF ] = iic_mcu_read_a_byte( IIC_SLA_ACCEL, vreg_ctr[VREG_C_ACC_R_ADRS] ); +// vreg_ctr[ VREG_C_ACC_R_BUF ] = iic_mcu_read_a_byte( IIC_SLA_ACCEL, vreg_ctr[VREG_C_ACC_R_ADRS] ); vreg_ctr[ VREG_C_IRQ1 ] |= REG_BIT_ACC_ACK; IRQ0_ast; return( ERR_SUCCESS ); @@ -110,7 +106,7 @@ task_status_immed acc_read(){  加速度センサ透過アクセス ライト ========================================================*/ task_status_immed acc_write(){ - vreg_ctr[VREG_C_ACC_R_BUF] = iic_mcu_write_a_byte( IIC_SLA_ACCEL, vreg_ctr[VREG_C_ACC_W_ADRS], vreg_ctr[VREG_C_ACC_W_BUF] ); + iic_mcu_write_a_byte( IIC_SLA_ACCEL, vreg_ctr[VREG_C_ACC_W_ADRS], vreg_ctr[VREG_C_ACC_W_BUF] ); vreg_ctr[ VREG_C_IRQ1 ] |= REG_BIT_ACC_ACK; IRQ0_ast; return( ERR_SUCCESS ); @@ -123,44 +119,35 @@ task_status_immed acc_write(){ todo 他のモードだったら止めたり、復帰させたり 割り込みルーチンなどでカウント判定が必要 ========================================================*/ -err accero_hosu_start(){ +task_status_immed acc_set(){ u8 temp; u8 err; u8 str_send_buf[4]; - - if( system_status.pwr_state == ON ){ - temp = iic_mcu_read_a_byte( IIC_SLA_ACCEL, ACC_REG_WHOAMI ); + iic_mcu_read_a_byte( IIC_SLA_ACCEL, ACC_REG_WHOAMI ); if( iic_mcu_bus_status == ERR_NOSLAVE ){ -// vreg_ctr[ VREG_C_ACC_CONFIG_HOSU ] |= 0x01; - return( ERR_ERR ); + return( ERR_SUCCESS ); // とりあえず、タスクは削除しなくてはならない } - str_send_buf[0] = ( ACC_BITS_PM_NORM << ACC_bP_PM0 | ACC_BITS_DR_100Hz << ACC_bP_DR0 | ACC_BITS_ALL_AXIS_ON ); // cont1 - str_send_buf[1] = 0x00; // 泣ける... + str_send_buf[1] = 0x00; // ...。 str_send_buf[2] = 0x02; str_send_buf[3] = 0x80; + if( (( vreg_ctr[ VREG_C_ACC_CONFIG_HOSU ] & VREG_BITMASK_ACC_CONF0_HOSU ) == 0 ) + && (( vreg_ctr[ VREG_C_ACC_CONFIG ] & VREG_BITMASK_ACC_CONF1_ACQ ) == 0 ) ){ + // 完全停止 + str_send_buf[0] = ( ACC_BITS_PM_PDN << ACC_bP_PM0 | 0 << ACC_bP_DR0 | ACC_BITS_ALL_AXIS_ON ); + } + else + { + if(( vreg_ctr[ VREG_C_ACC_CONFIG ] & VREG_BITMASK_ACC_CONF1_ACQ ) == 0x01 ){ + // 100Hz 自動取り込み + str_send_buf[0] = ( ACC_BITS_PM_NORM << ACC_bP_PM0 | ACC_BITS_DR_100Hz << ACC_bP_DR0 | ACC_BITS_ALL_AXIS_ON ); + }else{ + // 10Hz 自動取り込み(歩数計向け省電力モード) + str_send_buf[0] = ( ACC_BITS_PM_LP10 << ACC_bP_PM0 | ACC_BITS_ALL_AXIS_ON ); + } + } err = iic_mcu_write( IIC_SLA_ACCEL, ( ACC_REG_CTRL1 | 0x80 ), 4, str_send_buf ); - -// str_send_buf[0] = 0x00; -// err |= iic_mcu_write( IIC_SLA_ACCEL, ACC_REG_CTRL5, 1, str_send_buf ); - - return( err ); + return( ERR_SUCCESS ); } - } - - - - -err accero_hosu_stop(){ - u8 err; - u8 str_send_buf[4]; - - str_send_buf[0] = ( ACC_BITS_PM_PDN << ACC_bP_PM0 | 0 << ACC_bP_DR0 | ACC_BITS_ALL_AXIS_ON ); - str_send_buf[1] = 0x00; // 泣ける... - str_send_buf[2] = 0x02; - str_send_buf[3] = 0x80; - err = iic_mcu_write( IIC_SLA_ACCEL, ( ACC_REG_CTRL1 | 0x80 ) , 4, str_send_buf ); - return( err ); -} diff --git a/trunk/accero.h b/trunk/accero.h index cfa655c..fcfcfbe 100644 --- a/trunk/accero.h +++ b/trunk/accero.h @@ -6,9 +6,6 @@ task_status_immed tsk_cbk_accero(); -err accero_hosu_start(); -err accero_hosu_stop(); - - +task_status_immed acc_set(); #endif diff --git a/trunk/adc.c b/trunk/adc.c index 861b22e..65f15bf 100644 --- a/trunk/adc.c +++ b/trunk/adc.c @@ -38,7 +38,9 @@ task_interval tsk_adc(){ || ( system_status.pwr_state == SLEEP )){ if( adc_updated ){ - // 3D +#if 0 + 3D depth と Vol の変化では割り込みを入れない + // 3D if( abs( old_3ddepth - vreg_ctr[ VREG_C_3D_DEPTH ] ) >= 4 ){ old_3ddepth = vreg_ctr[ VREG_C_3D_DEPTH ]; vreg_ctr[ VREG_C_IRQ0 ] |= REG_BIT_VR_3D_CHANGE; @@ -51,6 +53,7 @@ task_interval tsk_adc(){ vreg_ctr[ VREG_C_IRQ0 ] |= REG_BIT_VR_SNDVOL_CHANGE; IRQ0_ast; } +#endif // codecに伝える if( vreg_ctr[ VREG_C_SND_VOL ] != sndvol_codec ){ @@ -60,6 +63,7 @@ task_interval tsk_adc(){ u8 temp; do{ + temp = iic_mcu_write_a_byte( IIC_SLA_DCP, 0x08, 0x80 ); // ACR←0x80 揮発モードへ temp = iic_mcu_write_a_byte( IIC_SLA_DCP, 0, sndvol_codec ); NOP(); }while( temp != ERR_SUCCESS ); @@ -76,11 +80,7 @@ task_interval tsk_adc(){ ADPC = 0x06; // ADCポートのセレクト ADS = ADC_SEL_3D; - NOP(); - NOP(); - NOP(); - NOP(); - NOP(); +// NOP(); ADCS = 1; // AD開始。 /// ここまでに、1us以上開ける ADIF = 0; @@ -94,43 +94,63 @@ task_interval tsk_adc(){ +/* ======================================================== + 過去3つのminでもMAXでもない値を返す +  突発的なノイズを除く。 +  根本対策ではないが、これはこれで使い道がある。 +======================================================== */ +static u8 getmean3( u8* hist ){ + u8 temp; + + if( *hist < *( hist+1 ) ){ + temp = *hist; + *hist = *(hist+1); + *(hist+1) = temp; + } + + if( !( *hist > *(hist+1) )){ + return *hist; + }else{ + if( *(hist+1) > *(hist+2) ){ + return *(hist+1); + }else{ + return *(hist+2); + } + } +} + + /* ========================================================  自前で次のチャンネル   一通り終わったら止める ======================================================== */ -/* -static u8 average( u8* dat ){ - static u8 ind; - - hist[i] = ADCRH; - ++i &= 0x03; - - return( (u8)( (u16)( hist[0] + hist[1] + hist[2] + hist[3] ) /4 )); -} -*/ - - __interrupt void int_adc(){ - static u8 hist_3d_dep[4]; - static u8 hist_snd_vol[4]; - static u8 hist_bt_temp[4]; - u8 temp; + static u8 hist_3d_dep[3]; + static u8 hist_snd_vol[3]; + static u8 hist_bt_temp[3]; + static u8 index; + u8 temp; + EI(); switch( ADS ){ case( ADC_SEL_3D ): - vreg_ctr[ VREG_C_3D_DEPTH ] = ADCRH; + hist_3d_dep[ index ] = ADCRH; + vreg_ctr[ VREG_C_3D_DEPTH ] = getmean3( hist_3d_dep ); break; case( ADC_SEL_VOL ): temp = ADCRH; if( temp > 200 ){ - temp = 200; + temp = 200; } - vreg_ctr[ VREG_C_SND_VOL ] = temp; + hist_snd_vol[ index ] = temp; + vreg_ctr[ VREG_C_SND_VOL ] = getmean3( hist_snd_vol ); break; case( ADC_SEL_BATT_TEMP ): - raw_adc_temperature = ADCRH; + hist_bt_temp[ index ] = ADCRH; + raw_adc_temperature = getmean3( hist_3d_dep ); + renge_task_immed_add( PM_bt_temp_update ); break; case( ADC_SEL_BATT_DET ): @@ -139,13 +159,14 @@ __interrupt void int_adc(){ } -// if( ADS == ADC_SEL_BATT_DET ){ // もっとまともな書き方がありそうだ +// if( ADS == ADC_SEL_BATT_DET ){ if( ADS != ADC_SEL_BATT_TEMP ){ // 電池判別は電源投入の一回のみ ADS += 1; // 次のチャンネル }else{ ADCEN = 0; // 止めてしまう adc_updated = 1; + index = ( index == 2 )? 0: ( index + 1 ); } } diff --git a/trunk/config.h b/trunk/config.h index d4cfbd4..290056c 100644 --- a/trunk/config.h +++ b/trunk/config.h @@ -4,12 +4,12 @@ #define _debug_ #define MCU_VER_MAJOR 0; -#define MCU_VER_MINOR 1; +#define MCU_VER_MINOR 2; #define _MODEL_TEG2_ //#define _MODEL_WM0_ -//define _MODEL_CTR_ +//#define _MODEL_CTR_ diff --git a/trunk/i2c_ctr.c b/trunk/i2c_ctr.c index 08d8121..c68ded1 100644 --- a/trunk/i2c_ctr.c +++ b/trunk/i2c_ctr.c @@ -3,7 +3,7 @@ 藤田@開技.nintendo '09 Apr ======================================================== */ -#include "incs_loader.h" +#include "incs.h" // u16 tot; @@ -173,6 +173,8 @@ __interrupt void int_iic_ctr(){ static u8 reg_adrs_internal; static u8 trx_buf; +// EI(); + // 自局呼び出しに応答。 // 初期化など WREL = 1; // ウェイト解除 @@ -248,7 +250,11 @@ void IIC_ctr_Init( void ){ IICAPR0 = 0; /* set INTIICA high priority */ IICAPR1 = 0; /* set INTIICA high priority */ +#ifdef _MODEL_WM0_ + P20 &= ~0x3; +#else P6 &= ~0x3; +#endif SVA = IIC_C_SLAVEADDRESS; IICF = 0x01; @@ -266,7 +272,11 @@ void IIC_ctr_Init( void ){ IICAMK = 0; // 割り込みを許可 IICE = 1; +#ifdef _MODEL_WM0_ + PM20 &= ~0x3; /* set clock pin for IICA */ +#else PM6 &= ~0x3; /* set clock pin for IICA */ +#endif } @@ -277,7 +287,3 @@ void IIC_ctr_Stop( void ){ IICAEN = 0; } - - - - diff --git a/trunk/i2c_mcu.c b/trunk/i2c_mcu.c index 2ee97f4..770690f 100644 --- a/trunk/i2c_mcu.c +++ b/trunk/i2c_mcu.c @@ -64,7 +64,7 @@ u8 iic_mcu_bus_status; // エラー判定ができません。 ======================================================== */ u8 iic_mcu_read_a_byte( u8 SLA, u8 adrs ){ - + u8 dat; #ifdef _debug_ iic_mcu_start(); #else @@ -74,11 +74,13 @@ u8 iic_mcu_read_a_byte( u8 SLA, u8 adrs ){ while( iic_mcu_busy ){ NOP(); } + iic_mcu_busy = 1; iic_mcu_bus_status = ERR_OK; // スタートコンディションとスレーブの呼び出し、レジスタアドレスの送信 if( iic_mcu_call_slave( SLA ) != 0 ){ iic_mcu_bus_status = ERR_NOSLAVE; + iic_mcu_busy = 0; return( 0 ); } @@ -100,11 +102,12 @@ u8 iic_mcu_read_a_byte( u8 SLA, u8 adrs ){ while( IICIF10 == 0 ){ // 受信完了待ち ;} + dat = SIO10; iic_mcu_send_sp(); IICIF10 = 0; // 後を濁さないこと - - return( SIO10 ); + iic_mcu_busy = 0; + return( dat ); } @@ -143,8 +146,10 @@ err iic_mcu_read( u8 slave, u8 adrs, u8 len, u8* dest ){ } //*/ + iic_mcu_busy = 1; // スタートコンディションとスレーブの呼び出し、レジスタアドレスの送信 if( iic_mcu_call_slave( slave ) != 0 ){ + iic_mcu_busy = 0; return( ERR_NAK ); } @@ -193,9 +198,17 @@ err iic_mcu_read( u8 slave, u8 adrs, u8 len, u8* dest ){ ======================================================== */ err iic_mcu_write_a_byte( u8 SLA, u8 adrs, u8 dat ){ + if( iic_mcu_initialized == 0 ){ +#ifdef _debug_ + iic_mcu_start(); +#else + while(1){}; +#endif + } while( iic_mcu_busy ){ NOP(); } + iic_mcu_busy = 1; #if 0 temp = dat; return( iic_mcu_write( SLA, adrs, 1, &temp ) ); @@ -204,12 +217,13 @@ err iic_mcu_write_a_byte( u8 SLA, u8 adrs, u8 dat ){ // スタートコンディションとスレーブの呼び出し... IICMK10 = 1; if( iic_mcu_call_slave( SLA ) != 0 ){ + iic_mcu_busy = 0; return( ERR_NAK ); } - iic_mcu_send_a_byte( adrs ); iic_mcu_send_a_byte( dat ); iic_mcu_send_sp(); + iic_mcu_busy = 0; return( ERR_SUCCESS ); #endif } @@ -254,14 +268,14 @@ err iic_mcu_write( u8 slave, u8 adrs, u8 len, u8* src ){ } //*/ + iic_mcu_busy = 1; // スタートコンディションとスレーブの呼び出し... IICMK10 = 1; if( iic_mcu_call_slave( slave ) != 0 ){ + iic_mcu_busy = 0; return( ERR_NAK ); } - iic_mcu_busy = 1; - if( !iic_mcu_wo_dma ){ // DMAを使用する(通常) @@ -319,6 +333,7 @@ __interrupt void int_dma1(){ IIC MCUのバイト送出完了割り込み ======================================================== */ __interrupt void int_iic10(){ + EI(); if( iic_mcu_wo_dma ){ // DMA使用せず、転送途中 if( iic_send_wo_dma_len != 0 ){ diff --git a/trunk/i2c_mcu.h b/trunk/i2c_mcu.h index 9eb3bd7..7a728af 100644 --- a/trunk/i2c_mcu.h +++ b/trunk/i2c_mcu.h @@ -24,7 +24,7 @@ u8 iic_mcu_read_a_byte( u8 SLA, u8 adrs ); err iic_mcu_write( u8 SLA, u8 adrs, u8 len, u8* src ); err iic_mcu_write_a_byte( u8 SLA, u8 adrs, u8 dat ); - +// ↓その通信が完了したら解除されます。 #define iic_mcu_set_wo_dma() { while( iic_mcu_busy ){;} iic_mcu_wo_dma = 1; } void iic2m_bus_reset(); diff --git a/trunk/i2c_twl.c b/trunk/i2c_twl.c index ec429df..6e67bbe 100644 --- a/trunk/i2c_twl.c +++ b/trunk/i2c_twl.c @@ -9,7 +9,7 @@ extern u8 vreg_twl[]; - +#ifdef _MCU_BSR_ #ifdef _MODEL_WM0_ // ワーキングモデルはI2Cが逆 @@ -68,22 +68,17 @@ extern u8 vreg_twl[]; #define WTIM WTIM1 #endif - - +#endif #ifndef _MCU_BSR_ // ke3の時はダミー関数 void IIC_twl_Stop( void ){} -// __interrupt void int_iic_twl(){} void IIC_twl_Init( void ){} -void IIC_twl_SlaveReceiveStart(){} - #else - /*============================================================================*/ u8 vreg_adrs; u8 pre_dat; @@ -110,24 +105,29 @@ u16 tot; __interrupt void int_iic_twl(){ + u8 temp; + u16 tot = 0; - WREL = 1; // ウェイト解除して次のバイトを待つ // WDT_Restart(); // フラグ1回目 スレーブアドレス,R/W +/* COI != 1 なら、割り込みはいらない if( COI != 1 ){ // 被呼び出し? LREL = 1; // 呼ばれたのは他のID return; }else{ -// ACKE0 = 1; // 自動でackを返すようにする -// WREL = 1; // ウェイト解除して次のバイトを待つ + ACKE0 = 1; // 自動でackを返すようにする + WREL = 1; // ウェイト解除して次のバイトを待つ } + */ + WREL = 1; // ウェイト解除して次のバイトを待つ wait_next; // 1バイト受信完了を待つ // 2回目 R/W レジスタアドレス + temp = IICA; WREL = 1; IICAIF = 0; - vreg_adrs = adrs_table_twl_ext2int( IICA ); + vreg_adrs = adrs_table_twl_ext2int( temp ); // 3回目 // スタートコンディションか、データ受信完了フラグ待ち @@ -136,11 +136,13 @@ __interrupt void int_iic_twl(){ if( IICAIF == 1 ){ // 受信 // IICAIF = 0; - WREL = 1; + temp = IICA; + IICA = 0xFF; +// WREL = 1; // 通常アクセス(ライト) // - LREL = 1; - vreg_twl_write( vreg_adrs, IICA ); + LREL = 1; // スタートコンディション待ちへ(連続書き込み未対応のため) + vreg_twl_write( vreg_adrs, temp ); return; // 受信おしまい // }else if( STD ){ @@ -154,7 +156,7 @@ __interrupt void int_iic_twl(){ LREL = 1; // 呼ばれたのは他のID(あれ?) return; } - IICA = pre_dat; // データを送る + IICA = pre_dat; // データを送る。ウェイトも解除される。 wait_next; // 4回目。(送信データ後の、ACK/NACK後) どうしても発生してしまう。 @@ -182,8 +184,11 @@ void IIC_twl_Init( void ){ IICAPR0 = 0; /* set INTIICA high priority */ IICAPR1 = 0; /* set INTIICA high priority */ - +#ifdef _MODEL_WM0_ + P6 &= ~0x3; +#else P20 &= ~0x3; +#endif SVA = IIC_T_SLAVEADDRESS; IICF = 0x01; @@ -201,7 +206,13 @@ void IIC_twl_Init( void ){ IICAMK = 0; // 割り込みを許可 IICE = 1; +#ifdef _MODEL_WM0_ + PM6 &= ~0x3; /* set clock pin for IICA */ +#else PM20 &= ~0x3; /* set clock pin for IICA */ +#endif + + LREL = 1; } @@ -213,13 +224,4 @@ void IIC_twl_Stop( void ){ } - -//**************************************************************************** -void IIC_twl_SlaveReceiveStart(){ - IICE = 1; - LREL = 1; - return; -} - - #endif diff --git a/trunk/loader.c b/trunk/loader.c index 2699128..1d176dd 100644 --- a/trunk/loader.c +++ b/trunk/loader.c @@ -24,7 +24,6 @@ #include "i2c_mcu.h" #include "pm.h" #include "rtc.h" -#include "magic.h" // ======================================================== @@ -182,7 +181,7 @@ void hdwinit(void){ // PU0 = 0b00000000; // バッテリ認証後にそれぞれセット PU1 = 0b00000000; PU3 = 0b00000000; // 外部でプルアップしないと具合が悪い。CPUがプルアップする - PU4 = 0b00000000; + PU4 = 0b00000000; // 外部でプルアップしてほしいtool0,1) PU5 = 0b00000011; PU7 = 0b00011001; PU12 = 0b00000000; @@ -237,7 +236,7 @@ void hdwinit(void){ // PR00H = 0b11111111; PR10H = 0b11111111; PR01L = 0b11111111; - PR11L = 0b11111111; + PR11L = 0b11111110; PR01H = 0b11111111; PR11H = 0b11111111; PR02L = 0b11111111; diff --git a/trunk/main.c b/trunk/main.c index dae4896..2c6382d 100644 --- a/trunk/main.c +++ b/trunk/main.c @@ -91,10 +91,10 @@ void main_loop( void ){ ======================================================== */ static void read_dipsw(){ // ソフトディップスイッチ読み込み - PU4 |= 0x03; // dip sw 0,1 +// PU4 |= 0x03; // dip sw 0,1 system_status.dipsw0 = ( DIPSW_0 == 0 )? 0: 1; system_status.dipsw1 = ( DIPSW_1 == 0 )? 0: 1; - PU4 &= ~0x03; +// PU4 &= ~0x03; } diff --git a/trunk/pm.c b/trunk/pm.c index e080159..a85b149 100644 --- a/trunk/pm.c +++ b/trunk/pm.c @@ -20,7 +20,6 @@ // -1.45 ,-3.9} - // ======================================================== static const u8 BT_BT_PARAM_PANA[64] = { 0xEA, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, @@ -32,13 +31,16 @@ static const u8 BT_BT_PARAM_PANA[64] = { 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F }; -static const u8 BT_BT_PARAM_PANA_RCOMP_AND_PARAM[3] = { 158, 1, 4 }; // RCOMP, TempCoUp, ---Down; - +#define BT_PANA_RCOMP 158 +u16 BT_PANA_TEMPCOUP = 1.45*8; +u16 BT_PANA_TEMPCODN = 3.90*8; // ======================================================== u16 raw_adc_temperature; - +u8 starting_rcomp; +u16 temp_co_up; +u16 temp_co_dn; #define _TEG_ @@ -69,12 +71,7 @@ err PM_bt_auth(){ 返値 無し ======================================================== */ static void BT_set_batt_vend1(){ - - iic_mcu_write( IIC_SLA_BT_GAUGE, - BT_BT_PARAM_PANA_RCOMP_ADRS, - sizeof( BT_BT_PARAM_PANA_RCOMP_AND_PARAM ), - BT_BT_PARAM_PANA_RCOMP_AND_PARAM - ); + u8 dat[2]; iic_mcu_set_wo_dma(); iic_mcu_write( IIC_SLA_BT_GAUGE, @@ -83,7 +80,11 @@ static void BT_set_batt_vend1(){ BT_BT_PARAM_PANA ); - + iic_mcu_read( IIC_SLA_BT_GAUGE, + BT_GAUGE_REG_OCV, + 2, + dat + ); /* ベリファイしなさいと書いてあるが意味がわからないです todo あとで @@ -103,6 +104,13 @@ Send Memory Location (0x0Eh) Read Data Byte OriginalOCV1 Read Data Byte OriginalOCV2 STOP +*/ + iic_mcu_read( IIC_SLA_BT_GAUGE, + BT_GAUGE_REG_OCV, + 2, + dat + ); +/* //Write OCV Register START Send Slave Address (0x6Ch) @@ -110,6 +118,15 @@ Send Memory Location (0x0Eh) Send Data Byte (0xh) Send Data Byte (0xh) STOP +*/ + /* + iic_mcu_write( IIC_SLA_BT_GAUGE, + BT_GAUGE_REG_OCV, + 2, + ?? + ); + */ +/* //Read SOC Register START Send Slave Address (0x6Ch) @@ -120,6 +137,13 @@ Send Memory Location (0x04h) Read Data Byte SOC1 Read Data Byte SOC2 STOP +*/ + iic_mcu_read( IIC_SLA_BT_GAUGE, + BT_GAUGE_REG_SOC, + 2, + dat + ); +/* //Compare value //Write OCV Register back to original START @@ -128,6 +152,13 @@ Send Memory Location (0x0Eh) Send Data Byte (OriginalOCV1) Send Data Byte (OriginalOCV2) STOP +*/ + iic_mcu_write( IIC_SLA_BT_GAUGE, + BT_GAUGE_REG_OCV, + 2, + dat + ); +/* To lock the model the host software must write 0x00h to memory location 0x3Eh and 0x00h to memory location 0x3Fh. //Lock Model Access @@ -137,9 +168,18 @@ Send Memory Location (0x3Eh) Send Data Byte (0x00h) Send Data Byte (0x00h) STOP - */ + dat[0] = dat[1] = 0; + iic_mcu_write( IIC_SLA_BT_GAUGE, + BT_GAUGE_REG_LOCK, + 2, + dat + ); + starting_rcomp = BT_PANA_RCOMP; + + temp_co_up = BT_PANA_TEMPCOUP; + temp_co_dn = BT_PANA_TEMPCODN; return; } @@ -150,7 +190,7 @@ STOP 電池接続時に一回だけ ======================================================== */ err PM_reset(){ - iic_mcu_start(); + iic_mcu_start(); return( iic_mcu_write_a_byte( IIC_SLA_PMIC, PM_REG_ADRS_CONT, 0x00 ) ); } @@ -177,22 +217,20 @@ void PM_init(){ 2, BT_GAUGE_QUICK_START[0] ); - - - BT_TEMP_P = 1; // 電池温度監視スタート - - - // 電池固有パラメータの書き込み + // 電池固有パラメータの書き込み下準備 iic_mcu_write( IIC_SLA_BT_GAUGE, BT_GAUGE_UNLOCK_ADRS, sizeof( BT_GAUGE_UNLOCK_KEY ), BT_GAUGE_UNLOCK_KEY ); - // 電池メーカーのセット + // 電池メーカーの判別とセット BT_DET_P = 1; temp = (u8)( get_adc( ADC_SEL_BATT_DET ) >> 6 ); BT_DET_P = 0; + + + switch( temp ){ // case( BT_VENDER_PANA ): default: @@ -201,19 +239,16 @@ void PM_init(){ } // 電池温度測定 + BT_TEMP_P = 1; // 電池温度監視スタート raw_adc_temperature = get_adc( ADC_SEL_BATT_TEMP ); // 温度のtemp。 - PM_bt_temp_update(); - - + renge_task_immed_add( PM_bt_temp_update ); // PMIC バージョン読み出し temp = iic_mcu_read_a_byte( IIC_SLA_PMIC, PM_REG_ADRS_VER ); // vreg_ctr[ VREG_C_PM_INFO ] = temp; - /* - PMICのセット -  LCD DACの値のセット + LCD DACの値のセット */ } @@ -228,9 +263,10 @@ void PM_init(){ ・レジスタにセット ・残量ICにセット ======================================================== */ -err PM_bt_temp_update(){ - static u8 temp_threash_hi, temp_threash_lo; - u8 temp[2]; +task_status_immed PM_bt_temp_update(){ + u16 newrcomp; + static u8 temp_old = 0; + static u8 count = 0; // たまにしか書きに行かない /* サーミスタ - 10kΩ分圧点の時、 @@ -238,9 +274,18 @@ err PM_bt_temp_update(){ 村田 T[℃] = 81.48 - 111.97 x ratio TDK T = 81.406 - 111.81 x ratio */ + vreg_ctr[ VREG_C_BT_TEMP ] = (u8)( (s16)(( 163 - ( 224 * ( raw_adc_temperature )) ) / 2 ) >> 8 ); - vreg_ctr[ VREG_C_BT_TEMP ] = ( 163 - ( 224 * ( raw_adc_temperature )) ) / 2; - + // 時々/大きく変化があったら書きにゆく + if(( abs(vreg_ctr[ VREG_C_BT_TEMP ] - temp_old ) > 3 ) + || ( count == 0 )){ + count += 1; + if( (s8)vreg_ctr[ VREG_C_BT_TEMP ] > 20 ){ + newrcomp = -(( (s16)vreg_ctr[ VREG_C_BT_TEMP ] - 20 ) * temp_co_up ); + }else{ + newrcomp = -(( (s16)vreg_ctr[ VREG_C_BT_TEMP ] - 20 ) * temp_co_dn ); + } + newrcomp += starting_rcomp; /* If Temperature > 20 Then NewRCOMP = StartingRCOMP + ((Temperature - 20) * TempCoUp) @@ -250,9 +295,10 @@ Else NewRCOMP = StartingRCOMP End If */ - // 変化が少なかったら書きに行かない - // todo - return( iic_mcu_write( IIC_SLA_BT_GAUGE, BT_BT_PARAM_PANA_RCOMP_ADRS, 2, temp ) ); + return( iic_mcu_write( IIC_SLA_BT_GAUGE, BT_BT_PARAM_PANA_RCOMP_ADRS, 2, newrcomp ) ); + } + + return( ERR_SUCCESS ); } diff --git a/trunk/pm.h b/trunk/pm.h index 351b5da..9d8873c 100644 --- a/trunk/pm.h +++ b/trunk/pm.h @@ -12,7 +12,9 @@ enum BT_GAUGE_REG_ADRS{ BT_GAUGE_REG_SOC = 0x04, BT_GAUGE_REG_MODE = 0x06, BT_GAUGE_REG_VERSION = 0x08, + BT_GAUGE_REG_OCV = 0x0E, BT_GAUGE_REG_RCOMP = 0xC0, + BT_GAUGE_REG_LOCK = 0x3E, BT_GAUGE_REG_COMMAND = 0xFE }; @@ -57,7 +59,7 @@ err PM_sys_pow_on(); err PM_sys_pow_off(); err PM_LCD_on(); err PM_bt_auth(); -err PM_bt_temp_update(); +task_status_immed PM_bt_temp_update(); void PM_init(); err PM_reset(); diff --git a/trunk/tasks.c b/trunk/tasks.c index 37e5a38..4ab48ca 100644 --- a/trunk/tasks.c +++ b/trunk/tasks.c @@ -73,31 +73,27 @@ task_interval tsk_debug(){ // LED_WIFI_2 ^= 1; } + /* temp = iic_mcu_read_a_byte( IIC_SLA_8LEDS, IIC_8LEDS_REG_DO ); - count += 1; - iic_mcu_write_a_byte( IIC_SLA_8LEDS, IIC_8LEDS_REG_DO, count ); - -// iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 3, count ); + iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 3, count ); return 0; +*/ + return 255; } task_interval tsk_debug2(){ -volatile static u8 i; - - i ++; - iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 0, i ); - iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 1, i + 0x08 ); - iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 2, i + 0x20 ); - iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 3, i + 0x80 ); -/* -iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 0, vreg_ctr[ VREG_C_ACC_0ZH ] ); - iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 1, vreg_ctr[ VREG_C_VOL ] ); - iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 2, vreg_ctr[ VREG_C_3D_DEPTH ] ); -*/ -return 255; + if(( system_status.pwr_state != OFF ) + && ( system_status.pwr_state != ON_TRIG )){ + iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 3, vreg_ctr[ VREG_C_IRQ0 ] ); + iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 2, vreg_ctr[ VREG_C_IRQ1 ] ); + iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 1, vreg_ctr[ VREG_C_SND_VOL ] ); + // iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 2, vreg_ctr[ VREG_C_3D_DEPTH ] ); + iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 0, vreg_ctr[ VREG_C_ACC_ZH ] ); + } + return( 50/2 ); } @@ -170,6 +166,7 @@ task_interval tsk_soft_int(){ /* ======================================================== COMMANDレジスタへの書き込み +  0なら呼ばれません。ケア不要 ======================================================== */ task_status_immed do_command0(){ @@ -198,11 +195,19 @@ task_status_immed do_command0(){ /* ======================================================== - TEG2では無し。後で実装 + 互換向け、TWLアプリへの割り込み +  0なら呼ばれません。ケア不要 ======================================================== */ task_status_immed do_command1(){ - static u8 state = 0; - return( ERR_FINISED ); + + vreg_twl[ REG_TWL_ADRS_IRQ ] = (( vreg_ctr[ VREG_C_COMMAND1 ] & 0x01 ) != 0 )? 0x80: 0x00; //pwsw_det + vreg_twl[ REG_TWL_ADRS_IRQ ] |= (( vreg_ctr[ VREG_C_COMMAND1 ] & 0x02 ) != 0 )? 0x01: 0x00; //reset_det + vreg_twl[ REG_TWL_ADRS_IRQ ] = (( vreg_ctr[ VREG_C_COMMAND1 ] & 0x01 ) != 0 )? 0x80: 0x00; //pwsw_det + vreg_twl[ REG_TWL_ADRS_IRQ ] |= (( vreg_ctr[ VREG_C_COMMAND1 ] & 0x02 ) != 0 )? 0x01: 0x00; //reset_det + vreg_twl[ REG_TWL_ADRS_IRQ ] |= (( vreg_ctr[ VREG_C_COMMAND1 ] & 0x04 ) != 0 )? 0x02: 0x00; //off_det + vreg_twl[ REG_TWL_ADRS_IRQ ] |= (( vreg_ctr[ VREG_C_COMMAND1 ] & 0x08 ) != 0 )? 0x20: 0x00; //batt_low + vreg_twl[ REG_TWL_ADRS_IRQ ] |= (( vreg_ctr[ VREG_C_COMMAND1 ] & 0x10 ) != 0 )? 0x10: 0x00; //batt_empty + return( ERR_FINISED ); } diff --git a/trunk/tasks_sys.c b/trunk/tasks_sys.c index f5b188b..39fe6dc 100644 --- a/trunk/tasks_sys.c +++ b/trunk/tasks_sys.c @@ -101,8 +101,8 @@ task_interval tsk_sys(){ } - iic_mcu_write_a_byte( IIC_SLA_8LEDS, IIC_8LEDS_REG_DIR, 0x00 ); - iic_mcu_write_a_byte( IIC_SLA_8LEDS, IIC_8LEDS_REG_DO, 0x00 ); +// iic_mcu_write_a_byte( IIC_SLA_8LEDS, IIC_8LEDS_REG_DIR, 0x00 ); +// iic_mcu_write_a_byte( IIC_SLA_8LEDS, IIC_8LEDS_REG_DO, 0x00 ); { PU7 = 0b00011101; // 4:SW_WIFI 3:SW_PWSW 2:PM_IRQ 0:PM_EXTDC @@ -123,17 +123,18 @@ task_interval tsk_sys(){ MK2L= INT_MSK2L_RSV; system_status.pwr_state = ON; - iic_mcu_write_a_byte( IIC_SLA_8LEDS, IIC_8LEDS_REG_DO, 0x00 ); + #ifdef _PMIC_TWL_ { u8 temp; - do{ +// do{ temp = iic_mcu_write_a_byte( IIC_SLA_DCP, 0x08, 0x80 ); // ACR←0x80 揮発モードへ NOP(); - }while( temp != ERR_SUCCESS ); +// }while( temp != ERR_SUCCESS ); } #endif - accero_hosu_start(); + vreg_ctr[ VREG_C_ACC_CONFIG_HOSU ] = 0x01; + renge_task_immed_add( acc_set ); break; @@ -166,10 +167,8 @@ task_interval tsk_sys(){ // pullup_off(); { -// PU5 = 0b00000011; // PM_CHG,PM_CHGERR -// PU7 = 0b00011001; // SW_WiFi,PWSWI,PM_EXTTDC - PU5 = 0b00000000; - PU7 = 0b00001001; // PWSWI,PM_EXTDC + PU5 = 0b00000011; // PM_CHG,PM_CHGERR + PU7 = 0b00011001; // SW_WiFi,PWSWI,PM_EXTTDC } // KRM = ( KR_SW_POW | KR_SW_WIFI ); // Mask ではなく、Modeなのだそうだ。紛らわしい diff --git a/trunk/user_define.h b/trunk/user_define.h index 6a7b27a..ee2870c 100644 --- a/trunk/user_define.h +++ b/trunk/user_define.h @@ -13,11 +13,13 @@ #define _debug_ #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 diff --git a/trunk/vreg_ctr.c b/trunk/vreg_ctr.c index 5bff17e..40ca7f8 100644 --- a/trunk/vreg_ctr.c +++ b/trunk/vreg_ctr.c @@ -3,10 +3,11 @@ CTR MCU I2Cレジスタ ====================================================== */ -#include "incs_loader.h" +#include "incs.h" #include "vreg_ctr.h" #include "rtc.h" #include "led.h" +#include "accero.h" @@ -24,7 +25,11 @@ u8 vreg_ctr[ VREG_C_ENDMARK_ ]; // 非ゼロの初期値の指定が必要なアドレス void vreg_ctr_init(){ vreg_ctr[ VREG_C_LED_BRIGHT ] = 0xFF; +#ifdef _MCU_BSR_ + vreg_ctr[ VREG_C_MCU_VER_MAJOR ] = MCU_VER_MAJOR + 0x10; +#else vreg_ctr[ VREG_C_MCU_VER_MAJOR ] = MCU_VER_MAJOR; +#endif vreg_ctr[ VREG_C_MCU_VER_MINOR ] = MCU_VER_MINOR; } @@ -37,14 +42,23 @@ void vreg_ctr_init(){ //  存在しないアドレスにアクセスした場合、何もしません。 void vreg_ctr_write( u8 adrs, u8 data ){ switch( adrs ){ + case( VREG_C_IRQ_MASK0 ): + case( VREG_C_IRQ_MASK1 ): + vreg_ctr[ adrs ] = data; + break; + case( VREG_C_COMMAND0 ): vreg_ctr[ adrs ] = data; - renge_task_immed_add( do_command0 ); + if( data != 0 ){ + renge_task_immed_add( do_command0 ); + } break; case( VREG_C_COMMAND1 ): vreg_ctr[ adrs ] = data; - renge_task_immed_add( do_command1 ); + if( data != 0 ){ + renge_task_immed_add( do_command1 ); + } break; case( VREG_C_LED_BRIGHT ): @@ -66,9 +80,6 @@ void vreg_ctr_write( u8 adrs, u8 data ){ set_LED_cam(); break; - case( VREG_C_RTC_CONFIG ): - vreg_ctr[ adrs ] = data; - break; case( VREG_C_RTC_COMP ): vreg_ctr[ adrs ] = data; SUBCUD = data; @@ -88,14 +99,18 @@ void vreg_ctr_write( u8 adrs, u8 data ){ case( VREG_C_ACC_CONFIG_HOSU ): case( VREG_C_ACC_CONFIG ): vreg_ctr[ adrs ] = data; + renge_task_immed_add( acc_set ); break; case( VREG_C_ACC_R_ADRS ): vreg_ctr[ adrs ] = data; renge_task_immed_add( acc_read ); - + break; case( VREG_C_ACC_W_ADRS ): + vreg_ctr[ adrs ] = data; + break; + case( VREG_C_ACC_W_BUF ): vreg_ctr[ adrs ] = data; renge_task_immed_add( acc_write ); diff --git a/trunk/vreg_ctr.h b/trunk/vreg_ctr.h index 22907d5..975eb44 100644 --- a/trunk/vreg_ctr.h +++ b/trunk/vreg_ctr.h @@ -80,9 +80,9 @@ enum VREG_C{ // VREG_C_STATUS, - VREG_C_RESERVE0, - VREG_C_RESERVE1, - VREG_C_RESERVE2, + VREG_C_IRQ_MASK0, + VREG_C_IRQ_MASK1, + VREG_C_RESERVED0, VREG_C_BT_REMAIN, VREG_C_SND_VOL, @@ -110,7 +110,8 @@ enum VREG_C{ // VREG_C_VCS_B, VREG_C_BT_TEMP, - VREG_C_BL, + + VREG_C_RESERVED1, VREG_C_RTC_SEC, VREG_C_RTC_MIN, @@ -119,7 +120,7 @@ enum VREG_C{ // VREG_C_RTC_DAY, VREG_C_RTC_MONTH, VREG_C_RTC_YEAR, - VREG_C_RTC_CONFIG, + VREG_C_RESERVED2, VREG_C_RTC_ALARM_MIN, VREG_C_RTC_ALARM_HOUR, VREG_C_RTC_ALARM_DAY, @@ -130,19 +131,20 @@ enum VREG_C{ // VREG_C_ACC_CONFIG_HOSU, VREG_C_ACC_CONFIG, VREG_C_ACC_R_ADRS, +// VREG_C_ACC_R_BUF, VREG_C_ACC_W_ADRS, - VREG_C_ACC_BUF, + VREG_C_ACC_W_BUF, VREG_C_ACC_HOSU_L, VREG_C_ACC_HOSU_M, VREG_C_ACC_HOSU_H, - VREG_C_ACC_XH, VREG_C_ACC_XL, - VREG_C_ACC_YH, + VREG_C_ACC_XH, VREG_C_ACC_YL, - VREG_C_ACC_ZH, + VREG_C_ACC_YH, VREG_C_ACC_ZL, + VREG_C_ACC_ZH, VREG_C_DIAG, diff --git a/trunk/vreg_twl.c b/trunk/vreg_twl.c index f9942ed..6a8854d 100644 --- a/trunk/vreg_twl.c +++ b/trunk/vreg_twl.c @@ -17,8 +17,9 @@ u8 vreg_twl[ REG_TWL_INT_ADRS_TIME_PWSW_THRESHOLD +1 ]; ======================================================== */ void vreg_twl_init(){ vreg_twl[ REG_TWL_INT_ADRS_VER_INFO ] = 0x35; + vreg_twl[ REG_TWL_INT_ADRS_POWER_INFO ] = 0x0F; vreg_twl[ REG_TWL_INT_ADRS_POWER_SAVE ] = 0x07; -// vreg_twl[ REG_TWL_INT_ADRS_BL ] = 0x03; + vreg_twl[ REG_TWL_INT_ADRS_BL ] = 0x03; vreg_twl[ REG_TWL_INT_ADRS_CODEC_MIC_GAIN ] = 0x01; vreg_twl[ REG_TWL_INT_ADRS_ADC_CALIB_STATUS ] = 0x01; vreg_twl[ REG_TWL_INT_ADRS_ADC_CALIB_VALUE ] = 0x60; @@ -30,21 +31,47 @@ void vreg_twl_init(){ // 引数 adrs は内部アドレス //  存在しないアドレスにアクセスした場合、何もしません。 void vreg_twl_write( u8 adrs, u8 data ){ + switch( adrs ){ + case( REG_TWL_INT_ADRS_COMMAND ): + case( REG_TWL_INT_ADRS_MODE ): + case( REG_TWL_INT_ADRS_POWER_SAVE ): + case( REG_TWL_INT_ADRS_WIFI ): + case( REG_TWL_INT_ADRS_CAM ): + case( REG_TWL_INT_ADRS_VOL ): + case( REG_TWL_INT_ADRS_BL ): +/* + REG_TWL_INT_ADRS_CODEC_MIC_GAIN, // 0x50, + REG_TWL_INT_ADRS_CODEC_MIC_GAIN_RELOAD, + REG_TWL_INT_ADRS_ADC_CALIB, // 0x60, + REG_TWL_INT_ADRS_ADC_CALIB_VALUE, + REG_TWL_INT_ADRS_POWER_LED, +*/ + case( REG_TWL_INT_ADRS_TEMP0 ): + case( REG_TWL_INT_ADRS_TEMP1 ): + case( REG_TWL_INT_ADRS_TEMP2 ): + case( REG_TWL_INT_ADRS_TEMP3 ): + case( REG_TWL_INT_ADRS_TEMP4 ): + case( REG_TWL_INT_ADRS_TEMP5 ): + case( REG_TWL_INT_ADRS_TEMP6 ): + case( REG_TWL_INT_ADRS_TEMP7 ): +// REG_TWL_INT_ADRS_TIME_PWSW_DELAY, +// REG_TWL_INT_ADRS_TIME_PWSW_THRESHOLD - if( REG_TWL_INT_ADRS_TIME_PWSW_THRESHOLD >= adrs ){ // アドレス範囲外 vreg_twl[ adrs ] = data; + break; } - + // TWLレジスタに書かれて何かアクションする switch( adrs ){ case( REG_TWL_INT_ADRS_COMMAND ): - if(( data & 0x01 ) != 0 ){ - vreg_ctr[ VREG_C_IRQ1 ] |= REG_BIT_TWL_RESET_REQ; - IRQ0_ast; + if( data != 0 ){ + renge_task_immed_add( command_from_twl ); + break; } + + default: break; } - return; } @@ -129,3 +156,16 @@ u8 adrs_table_twl_ext2int( u8 img ){ return( 0xFF ); } + + + +/* ======================================================== + TWLからのコマンド + ・リセット + ・電源断 + ======================================================== */ +task_status_immed command_from_twl(){ + vreg_ctr[ VREG_C_IRQ1 ] |= ( 1 << REG_BIT_TWL_RESET_REQ ); + IRQ0_ast; + return( ERR_FINISED ); +} diff --git a/trunk/vreg_twl.h b/trunk/vreg_twl.h index 98e23f1..a31cd7e 100644 --- a/trunk/vreg_twl.h +++ b/trunk/vreg_twl.h @@ -65,6 +65,7 @@ enum REG_TWL_ADRS_INT{ REG_TWL_INT_ADRS_VOL, // 0x40, REG_TWL_INT_ADRS_BL, REG_TWL_INT_ADRS_CODEC_MIC_GAIN, // 0x50, + REG_TWL_INT_ADRS_CODEC_MIC_GAIN_RELOAD, REG_TWL_INT_ADRS_ADC_CALIB, // 0x60, REG_TWL_INT_ADRS_ADC_CALIB_STATUS, REG_TWL_INT_ADRS_ADC_CALIB_VALUE, @@ -82,6 +83,12 @@ enum REG_TWL_ADRS_INT{ }; +#define REG_BIT_TWL_RESET_REQ 6 + + + + + /* ========================================================================= */ extern u8 vreg_twl[ REG_TWL_INT_ADRS_TIME_PWSW_THRESHOLD +1 ]; @@ -104,6 +111,6 @@ void vreg_twl_write( u8 adrs, u8 data ); u8 adrs_table_twl_ext2int( u8 img ); u8 vreg_twl_read( u8 phy_adrs ); - +task_status_immed command_from_twl(); #endif diff --git a/trunk/yav_mcu_bsr.pri b/trunk/yav_mcu_bsr.pri index 9f18426..737a4b1 100644 --- a/trunk/yav_mcu_bsr.pri +++ b/trunk/yav_mcu_bsr.pri @@ -7,7 +7,7 @@ Internal Rom=64KB Internal Ram=3072B Clock=Target Sub Clock=Target -Peripheral Break=0x2 +Peripheral Break=0x3 Firm Clock=System Flash Programming=Permit Low-voltage Flash Rewriting=On @@ -17,12 +17,12 @@ NMI=OFF TRESET=OFF IRESET=OFF WAIT=OFF -SysClock=8.00 -SubClock=32.768 +SysClock=None +SubClock=None [Mapping] Count=0 [Main] -Geometry=114, 8, 1477, 1188 +Geometry=132, 132, 1200, 882 Window=Max MDI_MAX=OFF Button=ON @@ -58,7 +58,7 @@ Symbol Reset1=ON Dir=. Filter=Source [Debugger Option] -Source Path="renge" +Source Path=".;renge" Symbol Size=Byte Symbol Format=Hex Register Name=Func @@ -78,10 +78,10 @@ Symbol Type=OFF Language=C Kanji=SJIS [Source] -Geometry=424, 30, 708, 979 +Geometry=0, 0, 733, 1077 Window=Normal -DispStart=67 -CaretPos=119,0 +DispStart=64 +CaretPos=65,0 Mode=Normal DispFile= Address1= @@ -139,27 +139,11 @@ SaveRange=Screen SaveStart= SaveEnd= Accumulative=ON -[Source1] -Geometry=239, 23, 708, 979 -Window=Normal -DispStart=80 -CaretPos=81,0 -Mode=Normal -DispFile=tasks_sys.c -Accumulative=ON -[Source2] -Geometry=59, 80, 708, 979 -Window=Normal -DispStart=33 -CaretPos=34,0 -Mode=Normal -DispFile=adc.c -Accumulative=ON [Assemble] -Geometry=60, 545, 600, 400 -Window=Normal -DispStart=771 -CaretPos=524,27 +Geometry=0, 0, 0, 0 +Window=Hide +DispStart=864531456 +CaretPos=0,0 Address1= Address2= Address3= @@ -201,7 +185,7 @@ SaveRange=Screen SaveStart= SaveEnd= [Memory] -Geometry=25, 25, 550, 400 +Geometry=50, 50, 550, 400 Window=Hide Boundary=0 Format=Hex @@ -266,12 +250,12 @@ Destination=0 [I/O Port] Line=0 [Stack] -Geometry=19, 182, 400, 300 +Geometry=719, 11, 400, 300 Window=Normal Boundary=13762687 Mode=Proper [Sfr] -Geometry=1058, 5, 400, 400 +Geometry=1125, 1, 470, 635 Window=Normal Address1= Address2= @@ -292,521 +276,521 @@ Address16= Boundary=202, 89 Mode=Hex Attribute=Show -Sort=Unsort +Sort=Address Pickup=OFF SelectSort=Address -Last Name= +Last Name=PMK4 Line=506 -L1=P0 -L2=P1 -L3=P2 -L4=P3 -L5=P4 -L6=P5 -L7=P6 -L8=P7 -L9=P8 -L10=P12 -L11=P14 -L12=P15 -L13=SDR00 -L14=SIO00 -L15=TXD0 -L16=SDR01 -L17=RXD0 -L18=SIO01 -L19=TDR00 -L20=TDR01 -L21=ADCR -L22=ADCRH -L23=PM0 -L24=PM1 -L25=PM2 -L26=PM3 -L27=PM4 -L28=PM5 -L29=PM6 -L30=PM7 -L31=PM8 -L32=PM12 -L33=PM14 -L34=PM15 -L35=ADM -L36=ADCE -L37=ADCS -L38=ADS -L39=KRM -L40=EGP0 -L41=EGN0 -L42=ISC -L43=TIS0 -L44=SDR02 -L45=SIO10 -L46=TXD1 -L47=SDR03 -L48=RXD1 -L49=IICA -L50=IICS -L51=SPD -L52=STD -L53=ACKD -L54=TRC -L55=COI -L56=EXC -L57=ALD -L58=MSTS -L59=IICF -L60=IICRSV -L61=STCEN -L62=IICBSY -L63=STCF -L64=TDR02 -L65=TDR03 -L66=TDR04 -L67=TDR05 -L68=TDR06 -L69=TDR07 -L70=RSUBC -L71=SEC -L72=MIN -L73=HOUR -L74=WEEK -L75=DAY -L76=MONTH -L77=YEAR -L78=SUBCUD -L79=ALARMWM -L80=ALARMWH -L81=ALARMWW -L82=RTCC0 -L83=RCLOE0 -L84=RCLOE1 -L85=RTCE -L86=RTCC1 -L87=RWAIT -L88=RWST -L89=RIFG -L90=WAFG -L91=WALIE -L92=WALE -L93=RTCC2 -L94=RCKDIV -L95=RCLOE2 -L96=RINTE -L97=CMC -L98=CSC -L99=HIOSTOP -L100=XTSTOP -L101=MSTOP -L102=OSTC -L103=OSTS -L104=CKC -L105=MCM0 -L106=MCS -L107=CSS -L108=CLS -L109=CKS0 -L110=PCLOE0 -L111=CKS1 -L112=PCLOE1 -L113=RESF -L114=LVIM -L115=LVIF -L116=LVIMD -L117=LVISEL -L118=LVION -L119=LVIS -L120=WDTE -L121=DSA0 -L122=DSA1 -L123=DRA0 -L124=DRA0L -L125=DRA0H -L126=DRA1 -L127=DRA1L -L128=DRA1H -L129=DBC0 -L130=DBC0L -L131=DBC0H -L132=DBC1 -L133=DBC1L -L134=DBC1H -L135=DMC0 -L136=DWAIT0 -L137=DS0 -L138=DRS0 -L139=STG0 -L140=DMC1 -L141=DWAIT1 -L142=DS1 -L143=DRS1 -L144=STG1 -L145=DRC0 -L146=DST0 -L147=DEN0 -L148=DRC1 -L149=DST1 -L150=DEN1 -L151=BECTL -L152=FLMDPUP -L153=PFCMD -L154=PFS -L155=FPRERR -L156=FLPMC -L157=BFAEN -L158=FWEPR -L159=BRAMEN -L160=IF2 -L161=IF2L -L162=TMIF05 -L163=TMIF06 -L164=TMIF07 -L165=PIF6 -L166=PIF7 -L167=MK2 -L168=MK2L -L169=TMMK05 -L170=TMMK06 -L171=TMMK07 -L172=PMK6 -L173=PMK7 -L174=PR02 -L175=PR02L -L176=TMPR005 -L177=TMPR006 -L178=TMPR007 -L179=PPR06 -L180=PPR07 -L181=PR12 -L182=PR12L -L183=TMPR105 -L184=TMPR106 -L185=TMPR107 -L186=PPR16 -L187=PPR17 -L188=IF0 -L189=IF0L -L190=WDTIIF -L191=LVIIF -L192=PIF0 -L193=PIF1 -L194=PIF2 -L195=PIF3 -L196=PIF4 -L197=PIF5 -L198=IF0H -L199=CMPIF0 -L200=CMPIF1 -L201=DMAIF0 -L202=DMAIF1 -L203=CSIIF00 -L204=STIF0 -L205=CSIIF01 -L206=SRIF0 -L207=SREIF0 -L208=IF1 -L209=IF1L -L210=CSIIF10 -L211=IICIF10 -L212=STIF1 -L213=SRIF1 -L214=SREIF1 -L215=IICAIF -L216=TMIF00 -L217=TMIF01 -L218=TMIF02 -L219=TMIF03 -L220=IF1H -L221=ADIF -L222=RTCIF -L223=RTCIIF -L224=KRIF -L225=MDIF -L226=TMIF04 -L227=MK0 -L228=MK0L -L229=WDTIMK -L230=LVIMK -L231=PMK0 -L232=PMK1 -L233=PMK2 -L234=PMK3 -L235=PMK4 -L236=PMK5 -L237=MK0H -L238=CMPMK0 -L239=CMPMK1 -L240=DMAMK0 -L241=DMAMK1 -L242=CSIMK00 -L243=STMK0 -L244=CSIMK01 -L245=SRMK0 -L246=SREMK0 -L247=MK1 -L248=MK1L -L249=CSIMK10 -L250=IICMK10 -L251=STMK1 -L252=SRMK1 -L253=SREMK1 -L254=IICAMK -L255=TMMK00 -L256=TMMK01 -L257=TMMK02 -L258=TMMK03 -L259=MK1H -L260=ADMK -L261=RTCMK -L262=RTCIMK -L263=KRMK -L264=MDMK -L265=TMMK04 -L266=PR00 -L267=PR00L -L268=WDTIPR0 -L269=LVIPR0 -L270=PPR00 -L271=PPR01 -L272=PPR02 -L273=PPR03 -L274=PPR04 -L275=PPR05 -L276=PR00H -L277=CMPPR00 -L278=CMPPR01 -L279=DMAPR00 -L280=DMAPR01 -L281=CSIPR000 -L282=STPR00 -L283=CSIPR001 -L284=SRPR00 -L285=SREPR00 -L286=PR01 -L287=PR01L -L288=CSIPR010 -L289=IICPR010 -L290=STPR01 -L291=SRPR01 -L292=SREPR01 -L293=IICAPR0 -L294=TMPR000 -L295=TMPR001 -L296=TMPR002 -L297=TMPR003 -L298=PR01H -L299=ADPR0 -L300=RTCPR0 -L301=RTCIPR0 -L302=KRPR0 -L303=MDPR0 -L304=TMPR004 -L305=PR10 -L306=PR10L -L307=WDTIPR1 -L308=LVIPR1 -L309=PPR10 -L310=PPR11 -L311=PPR12 -L312=PPR13 -L313=PPR14 -L314=PPR15 -L315=PR10H -L316=CMPPR10 -L317=CMPPR11 -L318=DMAPR10 -L319=DMAPR11 -L320=CSIPR100 -L321=STPR10 -L322=CSIPR101 -L323=SRPR10 -L324=SREPR10 -L325=PR11 -L326=PR11L -L327=CSIPR110 -L328=IICPR110 -L329=STPR11 -L330=SRPR11 -L331=SREPR11 -L332=IICAPR1 -L333=TMPR100 -L334=TMPR101 -L335=TMPR102 -L336=TMPR103 -L337=PR11H -L338=ADPR1 -L339=RTCPR1 -L340=RTCIPR1 -L341=KRPR1 -L342=MDPR1 -L343=TMPR104 -L344=MDAL -L345=MULA -L346=MDAH -L347=MULB -L348=MDBH -L349=MULOH -L350=MDBL -L351=MULOL -L352=PMC -L353=MAA -L354=ADPC -L355=PU0 -L356=PU1 -L357=PU3 -L358=PU4 -L359=PU5 -L360=PU7 -L361=PU12 -L362=PU14 -L363=PIM3 -L364=PIM7 -L365=PIM8 -L366=POM3 -L367=POM7 -L368=NFEN0 -L369=NFEN1 -L370=NFEN2 -L371=MDCL -L372=MDCH -L373=MDUC -L374=DIVST -L375=DIVMODE -L376=PER0 -L377=SAU0EN -L378=IICAEN -L379=ADCEN -L380=RTCEN -L381=PER1 -L382=OACMPEN -L383=PER2 -L384=TAU0EN -L385=OSMC -L386=RMC -L387=DSCCTL -L388=DSCON -L389=SELDSC -L390=DSCS -L391=BCDADJ -L392=SSR00 -L393=SSR00L -L394=SSR01 -L395=SSR01L -L396=SSR02 -L397=SSR02L -L398=SSR03 -L399=SSR03L -L400=SIR00 -L401=SIR00L -L402=SIR01 -L403=SIR01L -L404=SIR02 -L405=SIR02L -L406=SIR03 -L407=SIR03L -L408=SMR00 -L409=SMR01 -L410=SMR02 -L411=SMR03 -L412=SCR00 -L413=SCR01 -L414=SCR02 -L415=SCR03 -L416=SE0 -L417=SE0L -L418=SS0 -L419=SS0L -L420=ST0 -L421=ST0L -L422=SPS0 -L423=SPS0L -L424=SO0 -L425=SOE0 -L426=SOE0L -L427=SOL0 -L428=SOL0L -L429=TCR00 -L430=TCR01 -L431=TCR02 -L432=TCR03 -L433=TCR04 -L434=TCR05 -L435=TCR06 -L436=TCR07 -L437=TMR00 -L438=TMR01 -L439=TMR02 -L440=TMR03 -L441=TMR04 -L442=TMR05 -L443=TMR06 -L444=TMR07 -L445=TSR00 -L446=TSR00L -L447=TSR01 -L448=TSR01L -L449=TSR02 -L450=TSR02L -L451=TSR03 -L452=TSR03L -L453=TSR04 -L454=TSR04L -L455=TSR05 -L456=TSR05L -L457=TSR06 -L458=TSR06L -L459=TSR07 -L460=TSR07L -L461=TE0 -L462=TE0L -L463=TS0 -L464=TS0L -L465=TT0 -L466=TT0L -L467=TPS0 -L468=TPS0L -L469=TO0 -L470=TO0L -L471=TOE0 -L472=TOE0L -L473=TOL0 -L474=TOL0L -L475=TOM0 -L476=TOM0L -L477=IICCTL0 -L478=SPT -L479=STT -L480=ACKE -L481=WTIM -L482=SPIE -L483=WREL -L484=LREL -L485=IICE -L486=IICCTL1 -L487=DFC -L488=SMC -L489=DAD -L490=CLD -L491=WUP -L492=IICWL -L493=IICWH -L494=SVA -L495=OAM -L496=OAEN -L497=C0CTL -L498=C0OE -L499=C0EN -L500=C0RVM -L501=C0VRE -L502=C1CTL -L503=C1OE -L504=C1EN -L505=C1RVM -L506=C1VRE +L1=ADPC +L2=PU0 +L3=PU1 +L4=PU3 +L5=PU4 +L6=PU5 +L7=PU7 +L8=PU12 +L9=PU14 +L10=PIM3 +L11=PIM7 +L12=PIM8 +L13=POM3 +L14=POM7 +L15=NFEN0 +L16=NFEN1 +L17=NFEN2 +L18=MDCL +L19=MDCH +L20=MDUC +L21=DIVST +L22=DIVMODE +L23=PER0 +L24=SAU0EN +L25=IICAEN +L26=ADCEN +L27=RTCEN +L28=PER1 +L29=OACMPEN +L30=PER2 +L31=TAU0EN +L32=OSMC +L33=RMC +L34=DSCCTL +L35=DSCON +L36=SELDSC +L37=DSCS +L38=BCDADJ +L39=SSR00L +L40=SSR00 +L41=SSR01 +L42=SSR01L +L43=SSR02L +L44=SSR02 +L45=SSR03 +L46=SSR03L +L47=SIR00L +L48=SIR00 +L49=SIR01 +L50=SIR01L +L51=SIR02 +L52=SIR02L +L53=SIR03 +L54=SIR03L +L55=SMR00 +L56=SMR01 +L57=SMR02 +L58=SMR03 +L59=SCR00 +L60=SCR01 +L61=SCR02 +L62=SCR03 +L63=SE0L +L64=SE0 +L65=SS0 +L66=SS0L +L67=ST0L +L68=ST0 +L69=SPS0 +L70=SPS0L +L71=SO0 +L72=SOE0 +L73=SOE0L +L74=SOL0 +L75=SOL0L +L76=TCR00 +L77=TCR01 +L78=TCR02 +L79=TCR03 +L80=TCR04 +L81=TCR05 +L82=TCR06 +L83=TCR07 +L84=TMR00 +L85=TMR01 +L86=TMR02 +L87=TMR03 +L88=TMR04 +L89=TMR05 +L90=TMR06 +L91=TMR07 +L92=TSR00 +L93=TSR00L +L94=TSR01L +L95=TSR01 +L96=TSR02L +L97=TSR02 +L98=TSR03 +L99=TSR03L +L100=TSR04L +L101=TSR04 +L102=TSR05 +L103=TSR05L +L104=TSR06 +L105=TSR06L +L106=TSR07 +L107=TSR07L +L108=TE0 +L109=TE0L +L110=TS0 +L111=TS0L +L112=TT0 +L113=TT0L +L114=TPS0 +L115=TPS0L +L116=TO0 +L117=TO0L +L118=TOE0L +L119=TOE0 +L120=TOL0L +L121=TOL0 +L122=TOM0 +L123=TOM0L +L124=IICCTL0 +L125=SPT +L126=STT +L127=ACKE +L128=WTIM +L129=SPIE +L130=WREL +L131=LREL +L132=IICE +L133=IICCTL1 +L134=DFC +L135=SMC +L136=DAD +L137=CLD +L138=WUP +L139=IICWL +L140=IICWH +L141=SVA +L142=OAM +L143=OAEN +L144=C0CTL +L145=C0OE +L146=C0EN +L147=C0RVM +L148=C0VRE +L149=C1CTL +L150=C1OE +L151=C1EN +L152=C1RVM +L153=C1VRE +L154=P0 +L155=P1 +L156=P2 +L157=P3 +L158=P4 +L159=P5 +L160=P6 +L161=P7 +L162=P8 +L163=P12 +L164=P14 +L165=P15 +L166=SIO00 +L167=TXD0 +L168=SDR00 +L169=SDR01 +L170=RXD0 +L171=SIO01 +L172=TDR00 +L173=TDR01 +L174=ADCR +L175=ADCRH +L176=PM0 +L177=PM1 +L178=PM2 +L179=PM3 +L180=PM4 +L181=PM5 +L182=PM6 +L183=PM7 +L184=PM8 +L185=PM12 +L186=PM14 +L187=PM15 +L188=ADM +L189=ADCE +L190=ADCS +L191=ADS +L192=KRM +L193=EGP0 +L194=EGN0 +L195=ISC +L196=TIS0 +L197=TXD1 +L198=SIO10 +L199=SDR02 +L200=RXD1 +L201=SDR03 +L202=IICA +L203=IICS +L204=SPD +L205=STD +L206=ACKD +L207=TRC +L208=COI +L209=EXC +L210=ALD +L211=MSTS +L212=IICF +L213=IICRSV +L214=STCEN +L215=IICBSY +L216=STCF +L217=TDR02 +L218=TDR03 +L219=TDR04 +L220=TDR05 +L221=TDR06 +L222=TDR07 +L223=RSUBC +L224=SEC +L225=MIN +L226=HOUR +L227=WEEK +L228=DAY +L229=MONTH +L230=YEAR +L231=SUBCUD +L232=ALARMWM +L233=ALARMWH +L234=ALARMWW +L235=RTCC0 +L236=RCLOE0 +L237=RCLOE1 +L238=RTCE +L239=RTCC1 +L240=RWAIT +L241=RWST +L242=RIFG +L243=WAFG +L244=WALIE +L245=WALE +L246=RTCC2 +L247=RCKDIV +L248=RCLOE2 +L249=RINTE +L250=CMC +L251=CSC +L252=HIOSTOP +L253=XTSTOP +L254=MSTOP +L255=OSTC +L256=OSTS +L257=CKC +L258=MCM0 +L259=MCS +L260=CSS +L261=CLS +L262=CKS0 +L263=PCLOE0 +L264=CKS1 +L265=PCLOE1 +L266=RESF +L267=LVIM +L268=LVIF +L269=LVIMD +L270=LVISEL +L271=LVION +L272=LVIS +L273=WDTE +L274=DSA0 +L275=DSA1 +L276=DRA0L +L277=DRA0 +L278=DRA0H +L279=DRA1 +L280=DRA1L +L281=DRA1H +L282=DBC0L +L283=DBC0 +L284=DBC0H +L285=DBC1L +L286=DBC1 +L287=DBC1H +L288=DMC0 +L289=DWAIT0 +L290=DS0 +L291=DRS0 +L292=STG0 +L293=DMC1 +L294=DWAIT1 +L295=DS1 +L296=DRS1 +L297=STG1 +L298=DRC0 +L299=DST0 +L300=DEN0 +L301=DRC1 +L302=DST1 +L303=DEN1 +L304=BECTL +L305=FLMDPUP +L306=PFCMD +L307=PFS +L308=FPRERR +L309=FLPMC +L310=BFAEN +L311=FWEPR +L312=BRAMEN +L313=IF2L +L314=IF2 +L315=TMIF05 +L316=TMIF06 +L317=TMIF07 +L318=PIF6 +L319=PIF7 +L320=MK2L +L321=MK2 +L322=TMMK05 +L323=TMMK06 +L324=TMMK07 +L325=PMK6 +L326=PMK7 +L327=PR02L +L328=PR02 +L329=TMPR005 +L330=TMPR006 +L331=TMPR007 +L332=PPR06 +L333=PPR07 +L334=PR12 +L335=PR12L +L336=TMPR105 +L337=TMPR106 +L338=TMPR107 +L339=PPR16 +L340=PPR17 +L341=IF0L +L342=IF0 +L343=WDTIIF +L344=LVIIF +L345=PIF0 +L346=PIF1 +L347=PIF2 +L348=PIF3 +L349=PIF4 +L350=PIF5 +L351=IF0H +L352=CMPIF0 +L353=CMPIF1 +L354=DMAIF0 +L355=DMAIF1 +L356=CSIIF00 +L357=STIF0 +L358=CSIIF01 +L359=SRIF0 +L360=SREIF0 +L361=IF1 +L362=IF1L +L363=CSIIF10 +L364=IICIF10 +L365=STIF1 +L366=SRIF1 +L367=SREIF1 +L368=IICAIF +L369=TMIF00 +L370=TMIF01 +L371=TMIF02 +L372=TMIF03 +L373=IF1H +L374=ADIF +L375=RTCIF +L376=RTCIIF +L377=KRIF +L378=MDIF +L379=TMIF04 +L380=MK0L +L381=MK0 +L382=WDTIMK +L383=LVIMK +L384=PMK0 +L385=PMK1 +L386=PMK2 +L387=PMK3 +L388=PMK4 +L389=PMK5 +L390=MK0H +L391=CMPMK0 +L392=CMPMK1 +L393=DMAMK0 +L394=DMAMK1 +L395=CSIMK00 +L396=STMK0 +L397=CSIMK01 +L398=SRMK0 +L399=SREMK0 +L400=MK1 +L401=MK1L +L402=STMK1 +L403=IICMK10 +L404=CSIMK10 +L405=SRMK1 +L406=SREMK1 +L407=IICAMK +L408=TMMK00 +L409=TMMK01 +L410=TMMK02 +L411=TMMK03 +L412=MK1H +L413=ADMK +L414=RTCMK +L415=RTCIMK +L416=KRMK +L417=MDMK +L418=TMMK04 +L419=PR00L +L420=PR00 +L421=WDTIPR0 +L422=LVIPR0 +L423=PPR00 +L424=PPR01 +L425=PPR02 +L426=PPR03 +L427=PPR04 +L428=PPR05 +L429=PR00H +L430=CMPPR00 +L431=CMPPR01 +L432=DMAPR00 +L433=DMAPR01 +L434=CSIPR000 +L435=STPR00 +L436=CSIPR001 +L437=SRPR00 +L438=SREPR00 +L439=PR01 +L440=PR01L +L441=CSIPR010 +L442=IICPR010 +L443=STPR01 +L444=SRPR01 +L445=SREPR01 +L446=IICAPR0 +L447=TMPR000 +L448=TMPR001 +L449=TMPR002 +L450=TMPR003 +L451=PR01H +L452=ADPR0 +L453=RTCPR0 +L454=RTCIPR0 +L455=KRPR0 +L456=MDPR0 +L457=TMPR004 +L458=PR10L +L459=PR10 +L460=WDTIPR1 +L461=LVIPR1 +L462=PPR10 +L463=PPR11 +L464=PPR12 +L465=PPR13 +L466=PPR14 +L467=PPR15 +L468=PR10H +L469=CMPPR10 +L470=CMPPR11 +L471=DMAPR10 +L472=DMAPR11 +L473=CSIPR100 +L474=STPR10 +L475=SRPR10 +L476=CSIPR101 +L477=SREPR10 +L478=PR11 +L479=PR11L +L480=CSIPR110 +L481=IICPR110 +L482=STPR11 +L483=SRPR11 +L484=SREPR11 +L485=IICAPR1 +L486=TMPR100 +L487=TMPR101 +L488=TMPR102 +L489=TMPR103 +L490=PR11H +L491=ADPR1 +L492=RTCPR1 +L493=RTCIPR1 +L494=KRPR1 +L495=MDPR1 +L496=TMPR104 +L497=MDAL +L498=MULA +L499=MDAH +L500=MULB +L501=MULOH +L502=MDBH +L503=MDBL +L504=MULOL +L505=PMC +L506=MAA [Local Variable] -Geometry=1190, 800, 400, 300 -Window=Normal -Boundary=13041851 +Geometry=0, 0, 0, 0 +Window=Hide +Boundary=0 Mode=Proper [Trace View] Geometry=0, 0, 0, 0 @@ -878,7 +862,7 @@ Window=Hide Sort by=Unsort Detail=OFF [Event Set] -Geometry=545, 396, 510, 403 +Geometry=0, 0, 0, 0 Window=Hide Manager=ON Sort by=Unsort @@ -947,60 +931,55 @@ Detail=OFF Last Name= Count=0 [Variable] -Geometry=1104, 353, 440, 558 +Geometry=1141, 640, 440, 300 Window=Normal -Boundary=13762700 -0=.CKC,P,S,A,+,1 -1=.temp,P,N,A,+,1 -2=.TDR06,P,S,A,+,1 -3=.blue_to,P,N,A,+,1 -4=.dirty,P,N,A,+,1 -5=.vreg_ctr,P,N,A,+,1 -6=.if0,P,S,A,+,1 -7=.mk0,P,S,A,+,1 -8=.if1,B,S,A,+,1 -9=.mk1,B,S,A,+,1 -10=.if2,P,S,A,+,1 -11=.mk2,P,S,A,+,1 -12=.krm,B,S,A,+,1 -13=.LED_duty_pow_H,P,N,A,+,1 -14=.state,P,N,A,+,1 -15=.wifi_TX,P,N,A,+,1 -Line=16 +Boundary=16777386 +0=.PU5,B,S,A,+,1 +1=.PM5,B,S,A,+,1 +2=.p5,B,S,A,+,1 +3=.vreg_ctr,P,N,A,+,1 +4=.IICAIF,P,S,A,+,1 +5=.P8,P,S,A,+,1 +6=.PM8,P,S,A,+,1 +Line=7 [Quick Watch] -0=if2,P,A,1 -1=mk1,P,A,1 -2=mk0,P,A,1 -3=if1,P,A,1 -4=if0,P,A,1 -5=krm,P,A,1 -6=vreg_c,P,A,1 -7=vreg_ctr,P,A,1 -8=LED_duty_pow_H,P,A,1 -9=state,P,A,1 -10=dirty,P,A,1 -11=blue_to,P,A,1 -12=TDR06,P,A,1 -13=wifi_TX,P,A,1 -14=temp,P,A,1 -15=CKC,P,A,1 +0=PM8,P,A,1 +1=P8,P,A,1 +2=IICAIF,P,A,1 +3=vreg_ctr,P,A,1 +4=p5,P,A,1 +5=PM5,B,A,1 +6=PU5B,P,A,1 +7=PU5,B,A,1 +8= +9= +10= +11= +12= +13= +14= +15= [Software Break] -Geometry=1003, 430, 500, 200 +Geometry=0, 0, 0, 0 Window=Hide Width=150 30 200 100 Name0=Swb00002 -Address0=tasks_sys.c#_tsk_sys+0x162 +Address0=accero.c#_acc_read+0x19 Window0=ASM -Status0=OFF -Name1=Swb00001 -Address1=tasks_sys.c#_tsk_sys+0x116 +Status0=ON +Name1=Swb00003 +Address1=accero.c#_acc_write+0x1a Window1=ASM Status1=ON -Name2=Swb00003 -Address2=adc.c#_tsk_adc+0x7d +Name2=Swb00004 +Address2=vreg_ctr.c#_vreg_ctr_write+0x15f Window2=ASM Status2=ON -Count=3 +Name3=Swb00001 +Address3=tasks_sys.c#_tsk_sys+0x123 +Window3=ASM +Status3=ON +Count=4 [Reset] Debugger=ON Symbol=OFF @@ -1009,7 +988,7 @@ Target CPU=OFF OnClick Software Break=ON TraceTimetag=x1 Redraw=500 -Break When Access Function=ON +Break When Access Function=OFF Break When Access Whole=Select Verify=ON Break Sound=ON @@ -1023,8 +1002,8 @@ Version=Program Geometry=0, 0, 0, 0 Window=Hide [List] -Geometry=25, 25, 450, 400 +Geometry=0, 0, 0, 0 Window=Hide [Console] -Geometry=874, 914, 707, 189 -Window=Normal +Geometry=0, 0, 0, 0 +Window=Hide diff --git a/trunk/yav_mcu_bsr.prj b/trunk/yav_mcu_bsr.prj index 148ffc8..5ddcc8e 100644 --- a/trunk/yav_mcu_bsr.prj +++ b/trunk/yav_mcu_bsr.prj @@ -533,11 +533,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 [Options.CC78K0R 0] Version=210 Include0=renge,C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r @@ -1022,13 +1017,17 @@ Include14=fsl_user.h Include15=i2c_ctr.h Include16=pm.h Include17=rtc.h -Include18=magic.h -Include19=adc.h -Include20=led.h -Include21=incs.h -Include22=vreg_twl.h -Include23=accero.h -Include24=i2c_twl_defs.h +Include18=adc.h +Include19=led.h +Include20=incs.h +Include21=vreg_twl.h +Include22=accero.h +Include23=i2c_twl_defs.h +Include24=..\..\Program Files\NEC Electronics Tools\CC78K0R\W2.10\inc78k0r\assert.h Include25=renge\renge_task_intval.h Include26=i2c_twl.h -Include27=..\..\Program Files\NEC Electronics Tools\CC78K0R\W2.10\inc78k0r\assert.h +[ToolSet] +ToolSetName=(変更)78K0R Software Package V1.10 +Tool1=CC78K0R|W2.10 +Tool2=RA78K0R|W1.31 +Tool3=ID78K0R-QB|V3.60 diff --git a/trunk/yav_mcu_bsr.prk b/trunk/yav_mcu_bsr.prk index d6c71d8..0398342 100644 --- a/trunk/yav_mcu_bsr.prk +++ b/trunk/yav_mcu_bsr.prk @@ -5,28 +5,32 @@ FrameY=9 FrameCX=1375 FrameCY=1183 OpenFile1=vreg_ctr.h,0,88,88,1332,845,19,158,0,0 -OpenFile2=vreg_ctr.c,0,110,110,1354,867,0,158,0,0 -OpenFile3=incs_loader.h,0,198,198,1442,955,4,25,1,0 -OpenFile4=WDT.h,0,242,242,1486,999,40,4,40,0 -OpenFile5=renge\\..\incs.h,0,68,451,1312,1208,0,9,0,0 -OpenFile6=magic.c,0,307,203,1275,828,0,16,0,0 -OpenFile7=fsl_user.h,0,330,330,1574,1087,53,63,53,0 -OpenFile8=renge\renge_task_immediate.h,0,243,127,1487,884,0,1,0,0 -OpenFile9=renge\renge_defs.h,0,270,17,1514,774,0,13,0,0 -OpenFile10=vreg_twl.c,0,44,44,1288,801,34,30,34,0 -OpenFile11=renge\renge.c,0,270,117,1514,874,45,105,45,0 -OpenFile12=i2c_twl.c,0,110,110,1354,867,0,7,27,0 -OpenFile13=ProjectWindow +OpenFile2=incs_loader.h,0,198,198,1442,955,4,25,1,0 +OpenFile3=WDT.h,0,242,242,1486,999,40,4,40,0 +OpenFile4=renge\\..\incs.h,0,68,451,1312,1208,0,9,0,0 +OpenFile5=magic.c,0,307,203,1275,828,0,15,0,0 +OpenFile6=fsl_user.h,0,330,330,1574,1087,53,63,53,0 +OpenFile7=renge\renge_task_immediate.h,0,243,127,1487,884,0,1,0,0 +OpenFile8=renge\renge_defs.h,0,270,17,1514,774,0,13,0,0 +OpenFile9=vreg_twl.c,0,44,44,1288,801,34,30,34,0 +OpenFile10=renge\renge.c,0,270,117,1514,874,45,105,45,0 +OpenFile11=tasks_sys.c,0,360,104,1068,950,63,126,63,0 +OpenFile12=adc.c,0,220,220,1464,977,48,79,0,0 +OpenFile13=renge\renge.h,0,352,352,1596,1109,0,7,0,0 +OpenFile14=led.c,0,166,57,1410,814,1,241,0,0 +OpenFile15=pm.c,0,213,107,1119,634,0,307,0,0 +OpenFile16=accero.c,0,132,132,1376,889,2,97,29,0 +OpenFile17=tasks.c,0,154,154,1398,911,0,92,0,0 +OpenFile18=pm.h,0,154,154,1398,911,15,63,15,0 +OpenFile19=loader.c,0,110,110,1121,842,0,174,0,0 +OpenFile20=vreg_ctr.c,0,110,110,1354,867,21,7,21,0 +OpenFile21=ProjectWindow PrjPos=0,0,752,0,250 -OpenFile14=adc.c,0,591,180,1474,977,48,79,0,0 -OpenFile15=pm.c,0,213,107,1119,634,0,530,2,0 -OpenFile16=tasks.c,0,154,154,1398,911,22,44,17,0 -OpenFile17=tasks_sys.c,0,360,104,1068,950,63,126,63,0 -OpenFile18=led.c,0,22,22,1266,779,5,250,5,0 -OpenFile19=adc.c,0,220,220,1464,977,15,63,15,0 -OpenFile20=renge\renge.h,0,352,352,1596,1109,0,7,0,0 -OpenFile21=OutputWindow -OutputPos=0,508,1056,612,1473 +OpenFile22=config.h,0,176,176,1420,933,0,13,0,0 +OpenFile23=i2c_twl.c,0,264,63,1508,820,0,72,0,0 +OpenFile24=i2c_ctr.c,0,198,198,1442,955,2,176,0,0 +OpenFile25=OutputWindow +OutputPos=0,283,1077,659,1520 ActivePRJ=yav_mcu_bsr.prj [ProjectWindow] ProjectWindowDispType=0 diff --git a/trunk/yav_mcu_bsr.sdb b/trunk/yav_mcu_bsr.sdb index a930603..88c5f69 100644 --- a/trunk/yav_mcu_bsr.sdb +++ b/trunk/yav_mcu_bsr.sdb @@ -1,7 +1,7 @@ [SdbInfo] Ver=5 [loader.c] -T=4a8a882b +T=4a9b7c2e 1=incs_loader.h 2=fsl.h 3=fsl_user.h @@ -9,73 +9,74 @@ T=4a8a882b 5=i2c_mcu.h 6=pm.h 7=rtc.h -8=magic.h [pm.c] -T=4a8a8a2a +T=4a950fea 1=incs_loader.h 2=adc.h 3=led.h 4=pm.h [i2c_ctr.c] -T=4a890e15 -1=incs_loader.h +T=4a9b8168 +1=incs.h [main.c] -T=4a8a882b +T=4a9b2fe1 1=incs.h 2=WDT.h 3=rtc.h 4=pm.h 5=accero.h [magic.c] -T=4a8aa5e4 +T=4a9b83c9 [WDT.c] -T=4a30a4d7 +T=4a8bb921 1=incs_loader.h [i2c_mcu.c] -T=4a890e4a +T=4a95d465 1=incs_loader.h 2=i2c_mcu.h [i2c_twl.c] -T=4a7d2831 +T=4a9b5586 1=incs.h 2=i2c_twl_defs.h [ini_VECT.c] T=4a8a91dd 1=config.h [led.c] -T=4a8aa519 +T=4a8bbf14 1=incs.h 2=led.h [rtc.c] -T=4a545e28 +T=4a8bbd28 1=incs.h [vreg_ctr.c] -T=4a8aa5e1 -1=incs_loader.h +T=4a9b83c6 +1=incs.h 2=vreg_ctr.h 3=rtc.h 4=led.h +5=accero.h [vreg_twl.c] -T=4a8a8348 +T=4a97560a 1=incs.h 2=jhl_defs.h 3=vreg_twl.h [tasks.c] -T=4a8a8a42 +T=4a953944 1=incs.h [adc.c] -T=4a8a658a +T=4a963d0a 1=incs_loader.h 2=adc.h 3=pm.h 4=led.h +5=..\..\Program Files\NEC Electronics Tools\CC78K0R\W2.10\inc78k0r\assert.h [renge\renge.c] T=4a7d2b02 1=renge\renge_task_intval.h 2=renge\renge_task_immediate.h 3=WDT.h [tasks_sys.c] -T=4a8a8a58 +T=4a953573 1=incs.h 2=i2c_twl.h 3=i2c_ctr.h @@ -84,16 +85,16 @@ T=4a8a8a58 6=pm.h 7=rtc.h [accero.c] -T=4a8a744b +T=4a94f989 1=incs.h [self_flash.c] -T=4a892bc1 +T=4a8bba9e 1=incs_loader.h 2=fsl.h 3=fsl_user.h 4=i2c_ctr.h [incs_loader.h] -T=4a7b6de3 +T=4a950ca2 1=jhl_defs.h 2=user_define.h 3=bsr_system.h @@ -103,12 +104,12 @@ T=4a7b6de3 7=i2c_mcu.h 8=WDT.h [jhl_defs.h] -T=4a7d2831 +T=4a8bb83c [user_define.h] -T=4a890dae +T=4a951723 1=config.h [config.h] -T=4a8a794e +T=4a9b5536 [bsr_system.h] T=4a023057 1=jhl_defs.h @@ -122,14 +123,14 @@ T=4a5547e1 T=4a8a7575 1=renge\renge_defs.h [vreg_ctr.h] -T=4a793427 +T=4a9b83a8 [loader.h] T=4a7a31d0 1=jhl_defs.h [i2c_mcu.h] -T=4a7b93e4 +T=4a94fcc6 [WDT.h] -T=499ba30b +T=4a8bb92f [fsl.h] T=47ec5c12 [fsl_user.h] @@ -137,18 +138,16 @@ T=4a7bf458 [i2c_ctr.h] T=4a7c0777 [pm.h] -T=4a8a81a5 +T=4a9507ff [rtc.h] -T=4a545899 -[magic.h] -T=4a7a2fee +T=4a8bbf80 [adc.h] T=4a2e6395 1=jhl_defs.h [led.h] T=4a8aa5ff [incs.h] -T=4a797971 +T=4a8bb7e6 1=jhl_defs.h 2=user_define.h 3=bsr_system.h @@ -157,12 +156,14 @@ T=4a797971 6=vreg_twl.h 7=i2c_mcu.h [vreg_twl.h] -T=49d2cf40 +T=4a973fd7 [accero.h] -T=4a4b15e2 +T=4a94f6c8 1=jhl_defs.h [i2c_twl_defs.h] T=4a7c074e +[..\..\Program Files\NEC Electronics Tools\CC78K0R\W2.10\inc78k0r\assert.h] +T=440fd290 [renge\renge_task_intval.h] T=4a78118b 1=renge\renge_defs.h