ヤマハcodec対策ブランチ(C:\78k_data\yav-mcu-basara\branches)から手動マージ

git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-05-23%20-%20ctr.7z%20+%20svn_v1.068.zip/ctr/svn/ctr_mcu@444 013db118-44a6-b54f-8bf7-843cb86687b1
This commit is contained in:
n2232 2012-01-26 08:10:44 +00:00
parent b16a237b49
commit 8aa11a947a
7 changed files with 24 additions and 10 deletions

Binary file not shown.

Binary file not shown.

View File

@ -137,7 +137,8 @@ task_status_immed tski_cbk_accero( )
} }
if( (( system_status.pwr_state == ON ) if( (( system_status.pwr_state == ON )
||( system_status.pwr_state == SLEEP )) ||( 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(); // •à<E280A2>”Œv pedometer(); // •à<E280A2>”Œv
} }

View File

@ -284,17 +284,20 @@ __interrupt void int_adc( )
switch ( ADS ) switch ( ADS )
{ {
/* /*
case ( ADC_SEL_AMB_BRIT ): // 環境明るさ case ( ADC_SEL_AMB_BRIT ):
// 環境明るさ //
vreg_ctr[ VREG_C_AMBIENT_BRIGHTNESS ] = adc_data; vreg_ctr[ VREG_C_AMBIENT_BRIGHTNESS ] = adc_data;
break; break;
*/ */
case ( ADC_SEL_3D ): case ( ADC_SEL_3D ):
// 3Dボリューム //
EI(); EI();
adc_raw_dep = adc_data; adc_raw_dep = adc_data;
break; break;
case ( ADC_SEL_VOL ): case ( ADC_SEL_VOL ):
// 音量スライダ //
EI(); EI();
if( system_status.model == MODEL_TS_BOARD ) if( system_status.model == MODEL_TS_BOARD )
{ {
@ -308,6 +311,7 @@ case ( ADC_SEL_AMB_BRIT ): //
break; break;
case ( ADC_SEL_BATT_TEMP ): case ( ADC_SEL_BATT_TEMP ):
// バッテリ温度 //
EI(); EI();
#ifdef _ENABLE_HAL_ #ifdef _ENABLE_HAL_
if( vreg_ctr[ VREG_C_HAL_OVW_TEMPERATURE ] == 0xFF ) // 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 ): case ( ADC_SEL_BATT_DET ):
// バッテリメーカー識別 //
break; break;
*/ */
} }

View File

@ -7,7 +7,7 @@
*/ */
#define MCU_VER_MAJOR 0x02 #define MCU_VER_MAJOR 0x02
#define MCU_VER_MINOR 0x19 #define MCU_VER_MINOR 0x1x ( Eより大きいこと)
// デバッグ向けスイッチ // デバッグ向けスイッチ

View File

@ -43,10 +43,11 @@ extern i2c_err iic_mcu_call_slave( u8 slave );
iic_mcu_write_a_byte CODEC不具合ワークアラウンド 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 ) i2c_err iic_mcu_write_a_byte_codec( u8 adrs, u8 dat )
{ {
u8 pm_reg_original; u8 pm_reg_original;
u8 rv; i2c_err rv;
// ヤマハcodecワークアラウンド SPIとの共用レジスタの中身を取得 // ヤマハcodecワークアラウンド SPIとの共用レジスタの中身を取得
if(( rv = iic_mcu_read( IIC_SLA_CODEC, CODEC_REG_PM, 1, &pm_reg_original )) != I2C_ERR_OK ) 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ワークアラウンド // ヤマハcodecワークアラウンド
if( dat != 0 ) // 書き込むのが0だったらチェックもしない if( ( pm_reg_original & YAMAHA_CODEC_ERRATA_CHECK_MASK ) == 0 ) // はじめから共有レジスタが0だったらテストもしない
// (& リセット要求が立ってたらどうせリセットかかるので)
{
return( I2C_ERR_OK );
}
{ {
// 共有レジスタが 0x00 に書き換わっている(エラッタ発生!)ようなら書き戻す // 共有レジスタが 0x00 に書き換わっている(エラッタ発生!)ようなら書き戻す
u8 pm_reg_after; u8 pm_reg_after;
@ -72,16 +78,18 @@ i2c_err iic_mcu_write_a_byte_codec( u8 adrs, u8 dat )
return( rv ); return( rv );
} }
if( ( pm_reg_after & 0x7C ) != 0x00 ) if( ( pm_reg_after & YAMAHA_CODEC_ERRATA_CHECK_MASK ) != 0x00 )
{ {
// コンフリクトはなかった or リセット要求など
return( I2C_ERR_OK ); return( I2C_ERR_OK );
} }
// else { // 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 //
} }

View File

@ -1051,7 +1051,7 @@ err PM_sys_pow_on( )
RESET2_neg; RESET2_neg;
codec_reg_init(); // CODEC 不定レジスタ初期化(reset2の後でないといけないので) codec_reg_init(); // CODEC 不定レジスタ初期化(reset2の後でないといけないので)
ntr_pm_reg_shadow = 3<<2; //  〃 こんなところで... 0x00はヤマハcodecバグ対策で書けないので、影響のない値 ntr_pm_reg_shadow = 0; //  〃 こんなところで...
return ( ERR_SUCCESS ); 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( ) task_status_immed tski_ntr_pmic_comm( )
{ {