diff --git a/snake_trunk/VCProj/bsr_trunk.sdf b/snake_trunk/VCProj/bsr_trunk.sdf index e884dd4..902398d 100644 Binary files a/snake_trunk/VCProj/bsr_trunk.sdf and b/snake_trunk/VCProj/bsr_trunk.sdf differ diff --git a/snake_trunk/VCProj/bsr_trunk.suo b/snake_trunk/VCProj/bsr_trunk.suo index b1f9219..bdf527e 100644 Binary files a/snake_trunk/VCProj/bsr_trunk.suo and b/snake_trunk/VCProj/bsr_trunk.suo differ diff --git a/snake_trunk/config.h b/snake_trunk/config.h index 6c65253..ef24663 100644 --- a/snake_trunk/config.h +++ b/snake_trunk/config.h @@ -7,7 +7,7 @@ */ #define MCU_VER_MAJOR 0x02 -#define MCU_VER_MINOR 0x32 +#define MCU_VER_MINOR 0x33 // ビルドスイッチ diff --git a/snake_trunk/i2c_mcu.c b/snake_trunk/i2c_mcu.c index db007b3..fabaece 100644 --- a/snake_trunk/i2c_mcu.c +++ b/snake_trunk/i2c_mcu.c @@ -143,6 +143,10 @@ u8 iic_mcu_read_a_byte( u8 SLA, u8 adrs ) u8 dat; iic_mcu_result = iic_mcu_read( SLA, adrs, 1, &dat ); + if( iic_mcu_result != I2C_ERR_OK ) + { + dat = 0xff; + } return ( dat ); } diff --git a/snake_trunk/pm.c b/snake_trunk/pm.c index 1599397..b278d26 100644 --- a/snake_trunk/pm.c +++ b/snake_trunk/pm.c @@ -875,7 +875,8 @@ err PM_LCD_on( ) void PM_LCD_off() { - // BLついてたら消す。// チェックするのは割り込みの関係 + // BLついてたら消す。 + // チェックするのは割り込みの関係 if( ( read_pmic( PM_REG_ADRS_BL ) & 0x03 ) != 0 ) { u8 tot; @@ -895,8 +896,8 @@ void PM_LCD_off() } - - // 50msとか待つし、確認しましょうかね… + // LCD 電源落とす + // 50ms も wait あるので点いてるか確認する if( read_pmic( PM_REG_ADRS_VDD_LCD ) != 0 ) { PM_TCOM_off(); @@ -907,7 +908,7 @@ void PM_LCD_off() 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を切ったときのウェイト。 } @@ -915,7 +916,7 @@ void PM_LCD_off() 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( ) { -// if( RESET1_n ) - if( PM_chk_LDSW() ) - { - // 異常終了でないとき - PM_BL_set( REG_BIT_CMD_BL_U_OFF | REG_BIT_CMD_BL_L_OFF ); - PM_LCD_off(); // TCOM,VCS OFF も消してきます。 - wait_ms( 20 ); + // 一応 LCD 関係消すのを試みる。 + PM_BL_set( REG_BIT_CMD_BL_U_OFF | REG_BIT_CMD_BL_L_OFF ); + PM_LCD_off(); // 消えてれば何もしない + wait_ms( 20 ); - PM_reset_ast(); - } + PM_reset_ast(); RESET2_ast; FCRAM_RST_ast; @@ -1128,7 +1125,6 @@ void PM_sys_pow_off( ) PM_off( ); PM_LDSW_off( ); - } diff --git a/snake_trunk/task_sys.c b/snake_trunk/task_sys.c index 457ab56..98fc8e2 100644 --- a/snake_trunk/task_sys.c +++ b/snake_trunk/task_sys.c @@ -406,6 +406,8 @@ void tsk_sys( ) system_status.poweron_reason = NONE; pwsw_timeout = 0; + SPFL_LCD_AMOL_HV_CONT = 0; // 異常終了時、アモルファスLCD用電源を切り忘れてしまう + if( !PM_EXTDC_n || chg_led_override != 0 ) // これがゼロになるまで待つ