2.33 異常終了時、アモルファスLCD電源を切り忘れていた。

read_pmic() が、通信異常時に不定値を返していた。そもそも通信異常が無い前提のコードだが、0xff を返すようにしておく。

git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-05-23%20-%20ctr.7z%20+%20svn_v1.068.zip/ctr/svn/ctr_mcu@577 013db118-44a6-b54f-8bf7-843cb86687b1
This commit is contained in:
n2232 2013-12-12 08:27:17 +00:00
parent ac85094962
commit f5d3581e4a
6 changed files with 18 additions and 16 deletions

Binary file not shown.

Binary file not shown.

View File

@ -7,7 +7,7 @@
*/ */
#define MCU_VER_MAJOR 0x02 #define MCU_VER_MAJOR 0x02
#define MCU_VER_MINOR 0x32 #define MCU_VER_MINOR 0x33
// ビルドスイッチ // ビルドスイッチ

View File

@ -143,6 +143,10 @@ u8 iic_mcu_read_a_byte( u8 SLA, u8 adrs )
u8 dat; u8 dat;
iic_mcu_result = iic_mcu_read( SLA, adrs, 1, &dat ); iic_mcu_result = iic_mcu_read( SLA, adrs, 1, &dat );
if( iic_mcu_result != I2C_ERR_OK )
{
dat = 0xff;
}
return ( dat ); return ( dat );
} }

View File

@ -875,7 +875,8 @@ err PM_LCD_on( )
void PM_LCD_off() void PM_LCD_off()
{ {
// BLついてたら消す。// チェックするのは割り込みの関係 // BLついてたら消す。
// チェックするのは割り込みの関係
if( ( read_pmic( PM_REG_ADRS_BL ) & 0x03 ) != 0 ) if( ( read_pmic( PM_REG_ADRS_BL ) & 0x03 ) != 0 )
{ {
u8 tot; u8 tot;
@ -895,8 +896,8 @@ void PM_LCD_off()
} }
// LCD 電源落とす
// 50msとか待つし、確認しましょうかね… // 50ms も wait あるので点いてるか確認する
if( read_pmic( PM_REG_ADRS_VDD_LCD ) != 0 ) if( read_pmic( PM_REG_ADRS_VDD_LCD ) != 0 )
{ {
PM_TCOM_off(); PM_TCOM_off();
@ -907,7 +908,7 @@ void PM_LCD_off()
if( system_status.LCD_is_CGS == false ) if( system_status.LCD_is_CGS == false )
{ {
// アモルファスならポート操作 // アモルファスならポート操作
SPFL_LCD_AMOL_HV_CONT = 0; // 他のファミリでもL縛りなので弊害なし SPFL_LCD_AMOL_HV_CONT = 0; // 他のファミリでもL縛りなので弊害なしだが。
wait_ms( 10 ); // アモルファス15Vを切ったときのウェイト。 wait_ms( 10 ); // アモルファス15Vを切ったときのウェイト。
} }
@ -915,7 +916,7 @@ void PM_LCD_off()
vreg_ctr[VREG_C_STATUS] &= ~REG_BIT_LCD_POW; vreg_ctr[VREG_C_STATUS] &= ~REG_BIT_LCD_POW;
} }
set_irq( VREG_C_IRQ3, REG_BIT_LCD_OFF ); // 無条件に発生。マスク無ければ。 set_irq( VREG_C_IRQ3, REG_BIT_LCD_OFF ); // 無条件に発生。(マスクは有効)
} }
@ -1110,16 +1111,12 @@ void reset_release()
***********************************************/ ***********************************************/
void PM_sys_pow_off( ) void PM_sys_pow_off( )
{ {
// if( RESET1_n ) // 一応 LCD 関係消すのを試みる。
if( PM_chk_LDSW() ) PM_BL_set( REG_BIT_CMD_BL_U_OFF | REG_BIT_CMD_BL_L_OFF );
{ PM_LCD_off(); // 消えてれば何もしない
// 異常終了でないとき wait_ms( 20 );
PM_BL_set( REG_BIT_CMD_BL_U_OFF | REG_BIT_CMD_BL_L_OFF );
PM_LCD_off(); // TCOM,VCS OFF も消してきます。
wait_ms( 20 );
PM_reset_ast(); PM_reset_ast();
}
RESET2_ast; RESET2_ast;
FCRAM_RST_ast; FCRAM_RST_ast;
@ -1128,7 +1125,6 @@ void PM_sys_pow_off( )
PM_off( ); PM_off( );
PM_LDSW_off( ); PM_LDSW_off( );
} }

View File

@ -406,6 +406,8 @@ void tsk_sys( )
system_status.poweron_reason = NONE; system_status.poweron_reason = NONE;
pwsw_timeout = 0; pwsw_timeout = 0;
SPFL_LCD_AMOL_HV_CONT = 0; // 異常終了時、アモルファスLCD用電源を切り忘れてしまう
if( !PM_EXTDC_n if( !PM_EXTDC_n
|| chg_led_override != 0 ) // これがゼロになるまで待つ || chg_led_override != 0 ) // これがゼロになるまで待つ