diff --git a/trunk/VCProj/bsr_trunk.sdf b/trunk/VCProj/bsr_trunk.sdf index 18e9f3e..30aa000 100644 Binary files a/trunk/VCProj/bsr_trunk.sdf and b/trunk/VCProj/bsr_trunk.sdf differ diff --git a/trunk/VCProj/bsr_trunk.suo b/trunk/VCProj/bsr_trunk.suo index 9b89253..42b28e5 100644 Binary files a/trunk/VCProj/bsr_trunk.suo and b/trunk/VCProj/bsr_trunk.suo differ diff --git a/trunk/accero.c b/trunk/accero.c index f5d4eaa..16819dc 100644 --- a/trunk/accero.c +++ b/trunk/accero.c @@ -137,7 +137,8 @@ task_status_immed tski_cbk_accero( ) } if( (( system_status.pwr_state == ON ) ||( system_status.pwr_state == SLEEP )) - &&( vreg_ctr[VREG_C_ACC_CONFIG] & VREG_BITMASK_ACC_CONF_HOSU )) + &&( ( vreg_ctr[VREG_C_ACC_CONFIG] & VREG_BITMASK_ACC_CONF_HOSU ) != 0 ) + ) { pedometer(); // 歩数計 } diff --git a/trunk/adc.c b/trunk/adc.c index 419be87..2cea7a5 100644 --- a/trunk/adc.c +++ b/trunk/adc.c @@ -284,17 +284,20 @@ __interrupt void int_adc( ) switch ( ADS ) { /* -case ( ADC_SEL_AMB_BRIT ): // 環境明るさ + case ( ADC_SEL_AMB_BRIT ): + // 環境明るさ // vreg_ctr[ VREG_C_AMBIENT_BRIGHTNESS ] = adc_data; break; */ case ( ADC_SEL_3D ): + // 3Dボリューム // EI(); adc_raw_dep = adc_data; break; case ( ADC_SEL_VOL ): + // 音量スライダ // EI(); if( system_status.model == MODEL_TS_BOARD ) { @@ -308,6 +311,7 @@ case ( ADC_SEL_AMB_BRIT ): // break; case ( ADC_SEL_BATT_TEMP ): + // バッテリ温度 // EI(); #ifdef _ENABLE_HAL_ if( vreg_ctr[ VREG_C_HAL_OVW_TEMPERATURE ] == 0xFF ) // HAL無効 @@ -334,6 +338,7 @@ case ( ADC_SEL_AMB_BRIT ): // /* 呼ばれません case ( ADC_SEL_BATT_DET ): + // バッテリメーカー識別 // break; */ } diff --git a/trunk/config.h b/trunk/config.h index 98e745c..5689f51 100644 --- a/trunk/config.h +++ b/trunk/config.h @@ -7,7 +7,7 @@ */ #define MCU_VER_MAJOR 0x02 -#define MCU_VER_MINOR 0x19 +#define MCU_VER_MINOR 0x1x ( Eより大きいこと) // デバッグ向けスイッチ diff --git a/trunk/i2c_mcu-sub.c b/trunk/i2c_mcu-sub.c index dde1f10..2cebe19 100644 --- a/trunk/i2c_mcu-sub.c +++ b/trunk/i2c_mcu-sub.c @@ -43,10 +43,11 @@ extern i2c_err iic_mcu_call_slave( u8 slave ); iic_mcu_write_a_byte CODEC不具合ワークアラウンド ***********************************************/ +#define YAMAHA_CODEC_ERRATA_CHECK_MASK ( 0x7D ) i2c_err iic_mcu_write_a_byte_codec( u8 adrs, u8 dat ) { u8 pm_reg_original; - u8 rv; + i2c_err rv; // ヤマハcodecワークアラウンド SPIとの共用レジスタの中身を取得 if(( rv = iic_mcu_read( IIC_SLA_CODEC, CODEC_REG_PM, 1, &pm_reg_original )) != I2C_ERR_OK ) @@ -62,7 +63,12 @@ i2c_err iic_mcu_write_a_byte_codec( u8 adrs, u8 dat ) } // ヤマハcodecワークアラウンド - if( dat != 0 ) // 書き込むのが0だったらチェックもしない + if( ( pm_reg_original & YAMAHA_CODEC_ERRATA_CHECK_MASK ) == 0 ) // はじめから共有レジスタが0だったらテストもしない + // (& リセット要求が立ってたらどうせリセットかかるので) + { + return( I2C_ERR_OK ); + } + { // 共有レジスタが 0x00 に書き換わっている(エラッタ発生!)ようなら書き戻す u8 pm_reg_after; @@ -72,16 +78,18 @@ i2c_err iic_mcu_write_a_byte_codec( u8 adrs, u8 dat ) return( rv ); } - if( ( pm_reg_after & 0x7C ) != 0x00 ) + if( ( pm_reg_after & YAMAHA_CODEC_ERRATA_CHECK_MASK ) != 0x00 ) { + // コンフリクトはなかった or リセット要求など return( I2C_ERR_OK ); } // else { - return iic_mcu_codec_write_low( CODEC_REG_PM, pm_reg_original ); + rv = iic_mcu_codec_write_low( CODEC_REG_PM, pm_reg_original ); // 書き戻すが、再チェックはしない + return ( rv ); // エラーが返ることもあるかも // リトライなどは無し } - return( I2C_ERR_OK ); + return( rv ); // no reach // } diff --git a/trunk/pm.c b/trunk/pm.c index 5905990..87705f1 100644 --- a/trunk/pm.c +++ b/trunk/pm.c @@ -1051,7 +1051,7 @@ err PM_sys_pow_on( ) RESET2_neg; codec_reg_init(); // CODEC 不定レジスタ初期化(reset2の後でないといけないので) - ntr_pm_reg_shadow = 3<<2; //  〃 こんなところで... 0x00はヤマハcodecバグ対策で書けないので、影響のない値 + ntr_pm_reg_shadow = 0; //  〃 こんなところで... return ( ERR_SUCCESS ); } @@ -1125,7 +1125,7 @@ __interrupt void intp6_PM_irq( ) /********************************************//** - PMICからの割り込みを受けて、NTR PMIC互換レジスタからリード + CODECからの割り込みを受けて、NTR PMIC互換レジスタからリード ***********************************************/ task_status_immed tski_ntr_pmic_comm( ) {