From 1f16a6ac8f0194d0b5f65ba9dbc1858e6f4a8bc4 Mon Sep 17 00:00:00 2001 From: N2232 Date: Fri, 23 Apr 2010 12:04:39 +0000 Subject: [PATCH] =?UTF-8?q?=E3=83=91=E3=83=A9=E3=83=87=E3=82=A3=E3=82=A6?= =?UTF-8?q?=E3=83=A0=E3=80=81=E3=83=90=E3=82=B0=E6=8C=81=E3=81=A1PMIC?= =?UTF-8?q?=E3=81=AEIfdef=E3=81=AE=E5=89=8A=E9=99=A4=20=E6=96=B0=E3=83=95?= =?UTF-8?q?=E3=83=AA=E3=83=BC=E3=83=AC=E3=82=B8=E3=82=B9=E3=82=BF=E3=81=AE?= =?UTF-8?q?=E5=AE=9F=E8=A3=85=20=E9=9B=BB=E6=BA=90=E9=9B=BB=E5=9C=A7?= =?UTF-8?q?=E3=81=A7=E5=BC=B7=E5=88=B6=E3=82=AA=E3=83=95=EF=BC=88=E9=80=9A?= =?UTF-8?q?=E7=9F=A5=E3=81=AF=E8=A1=8C=E3=81=84=E3=80=81=E6=9A=AB=E5=AE=9A?= =?UTF-8?q?=E3=81=A7=E3=82=BF=E3=82=A4=E3=83=A0=E3=82=A2=E3=82=A6=E3=83=88?= =?UTF-8?q?=E2=86=92=E5=BC=B7=E5=88=B6=E6=96=AD=EF=BC=89=20=E7=99=BD?= =?UTF-8?q?=E7=AE=B1=E3=81=8B=E3=82=89=E3=81=AE=E3=83=AA=E3=82=BB=E3=83=83?= =?UTF-8?q?=E3=83=88=E3=81=AB=E5=AF=BE=E5=BF=9C=E3=82=92=E4=BF=AE=E6=AD=A3?= =?UTF-8?q?=20=E3=83=95=E3=83=AB=E3=82=AB=E3=83=A9=E3=83=BCLED=E3=81=AE?= =?UTF-8?q?=E5=AF=BE=E5=BF=9C=E3=80=82=20=E3=80=80=E3=83=95=E3=83=AB?= =?UTF-8?q?=E3=82=AB=E3=83=A9=E3=83=BC=E7=89=88=E3=82=92=E7=8F=BE=E8=A1=8C?= =?UTF-8?q?=E3=81=A7=E8=B5=B0=E3=82=89=E3=81=9B=E3=82=8B=E3=81=A8=E3=82=B7?= =?UTF-8?q?=E3=83=A7=E3=83=BC=E3=83=88=E3=81=A7=E8=90=BD=E3=81=A1=E3=82=8B?= =?UTF-8?q?=E3=81=9F=E3=82=81=E3=80=82?= 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@130 013db118-44a6-b54f-8bf7-843cb86687b1 --- trunk/config.h | 20 ++++-- trunk/i2c_ctr.c | 2 +- trunk/led.c | 14 ++-- trunk/led.h | 25 +++++-- trunk/loader.c | 16 +++-- trunk/main.c | 3 - trunk/pm.c | 158 +++++++++++++++++------------------------- trunk/pm.h | 13 ++-- trunk/sw.c | 2 +- trunk/task_sys.c | 37 ++++------ trunk/user_define.h | 5 +- trunk/vreg_ctr.c | 35 +++++----- trunk/vreg_ctr.h | 3 +- trunk/yav_mcu_bsr.prj | 123 ++++++++++++++++---------------- 14 files changed, 215 insertions(+), 241 deletions(-) diff --git a/trunk/config.h b/trunk/config.h index eb7bb11..32509e0 100644 --- a/trunk/config.h +++ b/trunk/config.h @@ -12,23 +12,24 @@ //#define PM_CCIC_TIM -// 古い(C)電源ボード -//#define _PM_BUG_ -//#define _PARRADIUM_ //#define _MODEL_TEG2_ // ↑TEG2 CPU + Type-T //#define _MODEL_WM0_ //#define _MODEL_WM0_TEG2_CTRC_ //#define _MODEL_TS0_ // ↑TEG2 CPU + Type-C -//#define _MODEL_CTR_TS_ - // ↑FINAL SoC + Type-C + #define _MODEL_CTR_ -#define _NOTIFY_FULLCOLOR_ + // ↑TS board, WM1,1 TS-CTRC +//#define _MODEL_CTR_NOTIFY_FULLCOLOR_ + // ↑TS board, WM1,1 TS-CTRC +// 特殊仕様 // //#define _SW_HOME_ENABLE_ +//#define _PARRADIUM_ 廃止 +//#define _PM_BUG_ // バグ持ち CTR PMIC 廃止 // ---------------------------------- // @@ -56,4 +57,11 @@ #define _SW_HOME_ENABLE_ #endif +#ifdef _MODEL_CTR_NOTIFY_FULLCOLOR_ +#define _MODEL_CTR_ +#define _PMIC_CTR_ +#define _MCU_BSR_ +#define _SW_HOME_ENABLE_ +#endif + #endif diff --git a/trunk/i2c_ctr.c b/trunk/i2c_ctr.c index 6a795f9..e243e74 100644 --- a/trunk/i2c_ctr.c +++ b/trunk/i2c_ctr.c @@ -199,7 +199,7 @@ __interrupt void int_iic_ctr( ) /// アクセスポインタを進めない特殊なレジスタ if( ( reg_adrs != VREG_C_ACC_HOSU_HIST ) && ( reg_adrs != VREG_C_INFO ) - && ( reg_adrs != VREG_C_FREE_ADDRESS ) + && ( reg_adrs != VREG_C_FREE_DATA ) ) { reg_adrs += 1; diff --git a/trunk/led.c b/trunk/led.c index 5af3b85..54e1b75 100644 --- a/trunk/led.c +++ b/trunk/led.c @@ -9,6 +9,8 @@ #include "led.h" +#ifdef _MODEL_CTR_NOTIFY_FULLCOLOR_ + // ======================================================== // TPS0 @@ -33,9 +35,9 @@ static void led_pow_hotaru( ); // ======================================================== // お知らせLEDのパターンデータ uni_info_LED info_LED = { - 32, - 32, - 0, + 32, // 1フレームの長さ + 32, // グラデーション時間 + 0, // 最終フレームをn回繰り返す { {255, 0,0}, {0,0,0}, @@ -75,6 +77,7 @@ uni_info_LED info_LED = { } }; + //調光可能LEDのワークというか /* typedef struct{ @@ -494,12 +497,12 @@ void tsk_led_notify( ) frame += 1; // 最後のフレームリピート - if( frame > NOTIFY_LED_TERM + 1 + info_LED.info_LED.last_loop ) + if( frame > NOTIFY_LED_TERM + info_LED.info_LED.last_loop ) { frame = 0; } - if( frame <= NOTIFY_LED_TERM ) + if( frame < NOTIFY_LED_TERM ) { temp = info_LED.info_LED.ptn[ frame ]; @@ -630,3 +633,4 @@ void tsk_led_cam( ) return; } +#endif diff --git a/trunk/led.h b/trunk/led.h index 12114a2..9b5a311 100644 --- a/trunk/led.h +++ b/trunk/led.h @@ -1,11 +1,11 @@ #ifndef __led__ #define __led__ - // ==================================== -#ifdef _NOTIFY_FULLCOLOR_ +#ifdef _MODEL_CTR_NOTIFY_FULLCOLOR_ + // LED_DUTY #define LED_duty_pow_blu TDR06 #define LED_duty_WiFi TDR03 @@ -17,13 +17,26 @@ // これらはduty変えられません #define LED_pow_red P7.5 #define LED_CAM P4.2 + +#else + +// LED_DUTY +#define LED_duty_pow_L TDR07 +#define LED_duty_pow_blu TDR06 +#define LED_duty_WiFi TDR03 +#define LED_duty_NOTIFY TDR05 +#define LED_duty_CAM TDR02 +#define LED_duty_3d TDR01 +// wifi2はPWMできません。 + #endif -#define LED_BRIGHT_MAX 0x00FF +#define NOTIFY_LED_TERM 32 -#define NOTIFY_LED_TERM 32 - 1 + +#define LED_BRIGHT_MAX 0x00FF // ==================================== #ifdef _MCU_BSR_ // 電波送信パルス @@ -99,8 +112,8 @@ typedef struct{ typedef struct{ u8 term; // 1フレーム何チック? u8 fade_time; // 何チックで次のフレームの色に達するか - u8 last_loop; // 最終フレームをn回繰り返す(0=1回) - st_info_LED_ptn ptn[32]; + u8 last_loop; // 最終フレームを + st_info_LED_ptn ptn[ NOTIFY_LED_TERM ]; }st_info_LED; typedef union{ diff --git a/trunk/loader.c b/trunk/loader.c index 109db0a..522bfec 100644 --- a/trunk/loader.c +++ b/trunk/loader.c @@ -236,7 +236,11 @@ void hdwinit2( ) PM2 = 0b11101001; #ifdef _PMIC_CTR_ +# ifdef _MODEL_CTR_NOTIFY_FULLCOLOR_ + PM4 = 0b11110011; +# else PM4 = 0b11110111; +# endif #else PM4 = 0b11111011; #endif @@ -268,15 +272,15 @@ void hdwinit2( ) PU14 = 0b00000000; #ifdef _MCU_BSR_ -#ifdef _MODEL_CTR_ -#ifdef _SW_HOME_ENABLE_ +# ifdef _MODEL_CTR_ +# ifdef _SW_HOME_ENABLE_ PU20 = 0b00010001; -#else +# else PU20 = 0b00000001; -#endif -#else +# endif +# else PU20 = 0b00000000; -#endif +# endif #endif // ポート入力モード・レジスタ設定 ///////////////////// diff --git a/trunk/main.c b/trunk/main.c index f4686e1..d752b2d 100644 --- a/trunk/main.c +++ b/trunk/main.c @@ -58,9 +58,6 @@ void main_loop( void ) system_status.pwr_state = OFF_TRIG; } -#ifdef _PARRADIUM_ - system_status.pwr_state = OFF; -#endif vreg_ctr_init( ); vreg_twl_init( ); diff --git a/trunk/pm.c b/trunk/pm.c index 4a1c0cc..4d252a8 100644 --- a/trunk/pm.c +++ b/trunk/pm.c @@ -39,7 +39,6 @@ BT_VENDER battery_manufacturer = BT_VENDER_NOT_CHECKED; u8 blset; #endif -#ifndef _PARRADIUM_ /* ======================================================== 液晶系の電源制御  ステータスフラグはすぐに立ててしまう。 @@ -63,9 +62,6 @@ err PM_LCD_on( ) PM_VCS_on( ); wait_ms( DELAY_PM_VCS_TO_BL ); -#ifdef _PM_BUG_ - iic_mcu_write_a_byte( IIC_SLA_PMIC, 0x22, 0x4A ); // バグ持ちPMIC対策 -#endif rv = PM_chk_LDSW( ); @@ -120,7 +116,7 @@ void PM_LCD_off() blset = 0; #endif - if( iic_mcu_read_a_byte( IIC_SLA_PMIC, PM_REG_VDD_LCD ) != 0 ) + if( iic_mcu_read_a_byte( IIC_SLA_PMIC, PM_REG_ADRS_VDD_LCD ) != 0 ) { PM_TCOM_VCS_off( ); wait_ms( DELAY_PM_LCD_OFF ); @@ -224,53 +220,13 @@ err PM_LCD_vcom_set( ) { u8 rv; - rv = iic_mcu_write_a_byte( IIC_SLA_PMIC, PM_REG_ADRS_POW_DAC1, vreg_ctr[VREG_C_VCOM_T] ); // がっかりなことに、PMICはバースト書き込み不可 + rv = iic_mcu_write_a_byte( IIC_SLA_PMIC, PM_REG_ADRS_POW_DAC1, vreg_ctr[VREG_C_VCOM_T] ); // がっかりなことに、PMICはバースト書き込み不可 rv |= iic_mcu_write_a_byte( IIC_SLA_PMIC, PM_REG_ADRS_POW_DAC2, vreg_ctr[VREG_C_VCOM_B] ); return ( rv ); } -#else -// パラディウム上のSoCでチェックしたいとき、PMICも液晶もつながってないので -// 異常終了しないようにダミー関数にする -err PM_LCD_on( ) -{ - vreg_ctr[VREG_C_STATUS] |= REG_BIT_LCD_POW; - set_irq( VREG_C_IRQ3, REG_BIT_LCD_ON ); - SND_DEPOP_SND_ENABLE; // 1でミュート - return ( ERR_SUCCESS ); -} - - -void PM_LCD_off( ) -{ - SND_DEPOP_SND_MUTE; - vreg_ctr[VREG_C_STATUS] &= ~REG_BIT_LCD_POW; - set_irq( VREG_C_IRQ3, REG_BIT_LCD_OFF ); -} - - -err PM_BL_set( u8 ) -{ - wait_ms( 10 ); - vreg_ctr[VREG_C_STATUS] = ( vreg_ctr[VREG_C_STATUS] & ~( REG_BIT_BL_U | REG_BIT_BL_L ) - | ( command_bl_set & REG_BIT_CMD_BL_U_ON )? REG_BIT_BL_U - | ( command_bl_set & REG_BIT_CMD_BL_L_ON )? REG_BIT_BL_L - ); - return ( PM_chk_LDSW( ) ); -} - - -err PM_LCD_vcom_set( ) -{ - return ( ERR_SUCCESS ); -} - -#endif - - - /* ======================================================== ↑で、レジスタ書き込みから呼び出される時のため  I2Cの取り合いの関係でここから呼ぶ @@ -303,9 +259,6 @@ err PM_sys_pow_on( ) PM_LDSW_on( ); wait_ms( 1 ); -#ifdef _PM_BUG_ - iic_mcu_write_a_byte( 0x22, 0xCA ); // バグ持ちPMIC対策 OVP解除 -#endif wait_ms( DELAY_PM_TW_PWUP ); @@ -317,10 +270,6 @@ err PM_sys_pow_on( ) wait_ms( DELAY_PM_TW_PWUP ); -#ifdef _PM_BUG_ - iic_mcu_write_a_byte( IIC_SLA_PMIC, PM_REG_ADRS_POW_SAVE, 0x03 ); // バグ持ちPMIC対策 強制PWM -#endif - // 無事電源が起動したかチェック。 #ifdef _PMIC_CTR_ if( !PM_chk_LDSW() ) @@ -642,7 +591,7 @@ task_status_immed tski_PM_BL_set() void tsk_batt( ) { static u8 task_interval = 0; - static u8 temp_area = 0; // 温度で充電停止する時にヒステリシスを付けるため + static u8 temp_zone_charge_enable = 0; // 温度で充電停止する時にヒステリシスを付けるため static bit pm_extdc_old; if( task_interval-- != 0 ) @@ -655,7 +604,7 @@ void tsk_batt( ) } - // アダプタ? // + // アダプタ? ///////////////////// if( pm_extdc_old != !PM_EXTDC_n ) { pm_extdc_old = !PM_EXTDC_n; @@ -677,19 +626,19 @@ void tsk_batt( ) if(( 86 < vreg_ctr[VREG_C_BT_TEMP] ) && ( vreg_ctr[VREG_C_BT_TEMP] < 185 )) { - temp_area = 1; // 充電許可 + temp_zone_charge_enable = 1; // 充電許可 } else if(( vreg_ctr[VREG_C_BT_TEMP] < 70 ) || ( 189 < vreg_ctr[VREG_C_BT_TEMP] )) { - temp_area = 0; // 充電禁止 + temp_zone_charge_enable = 0; // 充電禁止 } else { - // temp_area そのまま + // temp_zone_charge_enable そのまま } - if(( temp_area == 1 ) + if(( temp_zone_charge_enable == 1 ) && ( battery_manufacturer <= BT_VENDER_6 )) { #ifndef _MODEL_WM0_ @@ -972,44 +921,63 @@ void BT_get_left(){ if(( vreg_ctr[ VREG_C_STATUS_1 ] & REG_BIT_GASGAUGE_ERR ) == 0 ) { // 電池残量の取得 - { - static u8 bt_left_state; // バッテリ残量で割り込みのため - u8 temp[2]; + static u8 bt_left_state; // バッテリ残量で割り込みのため + static u8 bt_voltage_low_count; // todo どうにかせんとね + u8 temp[2]; - iic_mcu_read( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_SOC, 2, temp ); - - vreg_ctr[ VREG_C_BT_REMAIN ] = temp[0]; - vreg_ctr[ VREG_C_BT_REMAIN_FINE ] = temp[1]; - - // 残量で割り込み - switch( bt_left_state ) - { - case( 0 ): // 前回、バッテリーは十分にあった - if( vreg_ctr[ VREG_C_BT_REMAIN ] <= BATT_TH_LO ) - { - bt_left_state = 1; // 突然バッテリ残量が減っても、Lo割り込みを入れる - set_irq( VREG_C_IRQ1, REG_BIT_BT_REMAIN ); - } - break; - - case( 1 ): - if( vreg_ctr[ VREG_C_BT_REMAIN ] <= BATT_TH_EMPTY ) - { - bt_left_state = 2; - set_irq( VREG_C_IRQ1, REG_BIT_BT_REMAIN ); - } - break; - - default: - if( vreg_ctr[ VREG_C_BT_REMAIN ] > BATT_TH_LO ) - { - bt_left_state = 0; - } - break; - } - - } + // 電池電圧で強制断が優先される vreg_ctr[ VREG_C_BT_VOLTAGE ] = iic_mcu_read_a_byte( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_VCELL ); + if( vreg_ctr[ VREG_C_BT_VOLTAGE ] > ( 3100 / 16 / 1.25 ) ) + { + bt_voltage_low_count = 0; + } + else + { + bt_voltage_low_count += 1; + + if( bt_voltage_low_count == 12 ) // およそ3sec + { + vreg_ctr[ VREG_C_BT_REMAIN ] = 0; + set_irq( VREG_C_IRQ1, REG_BIT_BT_REMAIN ); + } + else if( bt_voltage_low_count == 12 + 3 * 5 ) + { // …時間切れ。強制的に切る + vreg_ctr[ VREG_C_LED_POW ] = LED_POW_ILM_ONLY_RED; + system_status.pwr_state = OFF_TRIG; + renge_task_interval_run_force = 1; + } + } + + iic_mcu_read( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_SOC, 2, temp ); + vreg_ctr[ VREG_C_BT_REMAIN ] = temp[0]; + vreg_ctr[ VREG_C_BT_REMAIN_FINE ] = temp[1]; + + // 残量で割り込み + switch( bt_left_state ) + { + case( 0 ): // 前回、バッテリーは十分にあった + if( vreg_ctr[ VREG_C_BT_REMAIN ] <= BATT_TH_LO ) + { + bt_left_state = 1; // 突然バッテリ残量が減っても、Lo割り込みを入れる + set_irq( VREG_C_IRQ1, REG_BIT_BT_REMAIN ); + } + break; + + case( 1 ): + if( vreg_ctr[ VREG_C_BT_REMAIN ] <= BATT_TH_EMPTY ) + { + bt_left_state = 2; + set_irq( VREG_C_IRQ1, REG_BIT_BT_REMAIN ); + } + break; + + default: + if( vreg_ctr[ VREG_C_BT_REMAIN ] > BATT_TH_LO ) + { + bt_left_state = 0; + } + break; + } } else { diff --git a/trunk/pm.h b/trunk/pm.h index 7fbbb5a..35d8637 100644 --- a/trunk/pm.h +++ b/trunk/pm.h @@ -11,6 +11,9 @@ #define BATT_TH_LO 8 #define BATT_TH_EMPTY 3 +#define VCOM_DEFAULT_T 92 +#define VCOM_DEFAULT_B 95 + //========================================================= @@ -79,7 +82,7 @@ typedef enum #define PM_REG_BIT_VDD50A ( 1 << 4 ) // 0x02 pw cnt2 -#define PM_REG_BIT_VDDLCD 0x07 +#define PM_REG_BIT_VDDLCD 0x07 #define PM_REG_BIT_LCD_VCS ( 0x01 << 4 ) #define PM_REG_BIT_LCD_TCOM ( 0x01 << 3 ) @@ -153,17 +156,9 @@ task_status_immed tski_PM_BL_set(); #define PM_VDD_normMode() ( iic_mcu_write_a_byte( IIC_SLA_PMIC, PM_REG_ADRS_POW_SAVE, PM_REG_BIT_VDD1P_1R15 | PM_REG_BIT_VDD_PWM )) #define PM_VDD_ecoMode() ( iic_mcu_write_a_byte( IIC_SLA_PMIC, PM_REG_ADRS_POW_SAVE, PM_REG_BIT_VDD1P_0R90 | PM_REG_BIT_VDD_AUTO )) -#else -// 本番チップ待ち -#ifdef _PM_BUG_ -#define PM_VDD_ecoMode() ( iic_mcu_write_a_byte( IIC_SLA_PMIC, PM_REG_ADRS_POW_SAVE, PM_REG_BIT_VDD1P_0R90 | PM_REG_BIT_VDD_AUTO )) -#define PM_VDD_normMode() ( iic_mcu_write_a_byte( IIC_SLA_PMIC, PM_REG_ADRS_POW_SAVE, PM_REG_BIT_VDD1P_1R10 | PM_REG_BIT_VDD_PWM )) - #else #define PM_VDD_ecoMode() ( iic_mcu_write_a_byte( IIC_SLA_PMIC, PM_REG_ADRS_POW_SAVE, PM_REG_BIT_VDD1P_1R05 | PM_REG_BIT_VDD_AUTO )) #define PM_VDD_normMode() ( iic_mcu_write_a_byte( IIC_SLA_PMIC, PM_REG_ADRS_POW_SAVE, PM_REG_BIT_VDD1P_1R05 | PM_REG_BIT_VDD_PWM )) - -#endif #endif // ほか // diff --git a/trunk/sw.c b/trunk/sw.c index 50c1c65..1e105b6 100644 --- a/trunk/sw.c +++ b/trunk/sw.c @@ -110,7 +110,7 @@ void tsk_sw( ) #endif } else if( SW_pow_count == ( HOLD_THREASHOLD * 4 ) ) - { // todo + {// 長押しによる強制OFF vreg_ctr[ VREG_C_LED_POW ] = LED_POW_ILM_ONLY_RED; system_status.pwr_state = OFF_TRIG; renge_task_interval_run_force = 1; diff --git a/trunk/task_sys.c b/trunk/task_sys.c index 1ec5d7f..4d72a36 100644 --- a/trunk/task_sys.c +++ b/trunk/task_sys.c @@ -40,7 +40,6 @@ void tsk_sys( ) case OFF: //------------------------------------------------------- // スイッチ操作などで割り込みが発生し、スリープが解除されるとここに来ます。 -#ifndef _PARRADIUM_ switch ( system_status.poweron_reason ) { default: @@ -107,11 +106,6 @@ void tsk_sys( ) return; } -#else - vreg_ctr[ VREG_C_STATUS_1 ] |= REG_BIT_GASGAUGE_ERR; - system_status.poweron_reason = PWSW; -#endif // _PARADDIUM_ - PM_LCD_vcom_set( ); // LCDの対向電圧値など書き込み #ifdef _PMIC_TWL_ PM_TEG_LCD_dis( 0 ); @@ -314,19 +308,17 @@ void tsk_sys( ) // 割り込み待ちで寝る // RTCIMK = 1; -#ifndef _PARRADIUM_ -#ifdef _MCU_BSR_ +# ifdef _MCU_BSR_ CKC = 0b00001001; OSMC = 0x00; -#endif +# endif STOP( ); -#ifdef _MCU_BSR_ +# ifdef _MCU_BSR_ OSMC = 0x01; CKC = 0b00001000; -#endif +# endif -#endif RTCIMK = 0; // 起きる // @@ -356,10 +348,9 @@ void tsk_sys( ) PMICが電源異常で止めたか確認 **********************************************************/ static void chk_emergencyExit(){ -#ifndef _PARRADIUM_ - static u8 shirobako_power_control; + static u8 shirobako_power_control_count; - if( shirobako_power_control == 0 ) // PM_chk_LDSW() はI2C_mを使用し、高コスト + if( shirobako_power_control_count == 0 ) // PM_chk_LDSW() はI2C_mを使用し、高コスト { if( !RESET1_n ) { @@ -373,46 +364,44 @@ static void chk_emergencyExit(){ else { // 白箱の仕業 - shirobako_power_control = 1; + shirobako_power_control_count = 1; } } } else { - if( shirobako_power_control == 240 ) + if( shirobako_power_control_count == 240 ) // デバッガが何かした。reset1を解除するまでは無視 { if( RESET1_n ) { - shirobako_power_control = 0; + shirobako_power_control_count = 0; } - }else if( shirobako_power_control == 200 ) + }else if( shirobako_power_control_count == 200 ) // デバッガが何かしたいらしい { // 白箱は電源を切りたいらしい system_status.pwr_state = OFF_TRIG; renge_task_interval_run_force = 1; - shirobako_power_control = 240; + shirobako_power_control_count = 240; } else { if( !RESET1_n ) { - shirobako_power_control += 1; + shirobako_power_control_count += 1; } else { - // リセットをかけたらしい iic_mcu_write_a_byte( IIC_SLA_PMIC, PM_REG_ADRS_BL, 0 ); vreg_ctr[VREG_C_STATUS] = ( vreg_ctr[VREG_C_STATUS] & 0b10011111 ); vreg_ctr[VREG_C_COMMAND0] |= REG_BIT_RESET1_REQ; renge_task_immed_add( do_command0 ); - shirobako_power_control = 240; + shirobako_power_control_count = 240; } } } -#endif } diff --git a/trunk/user_define.h b/trunk/user_define.h index cdd61a3..1f0f6d0 100644 --- a/trunk/user_define.h +++ b/trunk/user_define.h @@ -83,11 +83,7 @@ #define RESET2_ast { P0.1 = 0; PM0.1 = 0; } #define RESET2_neg { PM0.1 = 1; } -#ifndef _PARRADIUM_ #define SLP_REQ P12.0 -#else -#define SLP_REQ 0 -#endif // FCRAM #ifdef _MODEL_TEG2_ @@ -138,6 +134,7 @@ // 充電せよ(out) #ifdef _PMIC_CTR_ +// 負論理です。注意。 #define BT_CHG_ENABLE() ( P4.3 = 0 ) #define BT_CHG_DISABLE() ( P4.3 = 1 ) #else diff --git a/trunk/vreg_ctr.c b/trunk/vreg_ctr.c index cd3f422..d3bf742 100644 --- a/trunk/vreg_ctr.c +++ b/trunk/vreg_ctr.c @@ -47,8 +47,8 @@ void vreg_ctr_init( ) #endif vreg_ctr[VREG_C_MCU_VER_MINOR] = MCU_VER_MINOR; - vreg_ctr[VREG_C_VCOM_T] = 92; - vreg_ctr[VREG_C_VCOM_B] = 95; + vreg_ctr[VREG_C_VCOM_T] = VCOM_DEFAULT_T; + vreg_ctr[VREG_C_VCOM_B] = VCOM_DEFAULT_B; } @@ -155,21 +155,6 @@ void vreg_ctr_write( u8 adrs, u8 data ) vreg_ctr[adrs] = data; break; - case ( VREG_C_FREE_ADDRESS ): - if( iic_burst_state == 0 ) - { - iic_burst_state = 1; - vreg_ctr[adrs] = data; - } - else - { - if( vreg_ctr[ VREG_C_FREE_ADDRESS ] >= VREG_C_FREE_SIZE ) - { - vreg_ctr[ VREG_C_FREE_ADDRESS ] = 0; - } - pool.vreg_c_ext.vreg_c_free[ vreg_ctr[ VREG_C_FREE_ADDRESS ]++ ] = data; - } - case ( VREG_C_LED_BRIGHT ): vreg_ctr[adrs] = data; break; @@ -289,6 +274,18 @@ void vreg_ctr_write( u8 adrs, u8 data ) } break; + case ( VREG_C_FREE_ADRS ): + vreg_ctr[adrs] = data; + break; + + case ( VREG_C_FREE_DATA ): + if( vreg_ctr[ VREG_C_FREE_ADRS ] < VREG_C_FREE_SIZE ) + { + pool.vreg_c_ext.vreg_c_free[ vreg_ctr[ VREG_C_FREE_ADRS ] ] = data; + vreg_ctr[ VREG_C_FREE_ADRS ] += 1; + } + break; + case ( VREG_C_COMMAND3 ): switch ( data ) { @@ -331,9 +328,9 @@ u8 vreg_ctr_read( u8 adrs ) { return( hosu_read() ); } - else if( adrs == VREG_C_FREE_ADDRESS ) + else if( adrs == VREG_C_FREE_DATA ) { - return( pool.vreg_c_ext.vreg_c_free[ vreg_ctr[VREG_C_FREE_ADDRESS]++ ] ); + return( pool.vreg_c_ext.vreg_c_free[ vreg_ctr[VREG_C_FREE_ADRS]++ ] ); } else if( adrs == VREG_C_RTC_SEC_FINE_L ) { diff --git a/trunk/vreg_ctr.h b/trunk/vreg_ctr.h index 4b02444..36e4013 100644 --- a/trunk/vreg_ctr.h +++ b/trunk/vreg_ctr.h @@ -237,7 +237,8 @@ enum VREG_C // VREG_C_AMBIENT_BRIGHTNESS = 0xXX, - VREG_C_FREE_ADDRESS = 0x50, + VREG_C_FREE_ADRS = 0x50, + VREG_C_FREE_DATA, VREG_C_ENDMARK_ }; diff --git a/trunk/yav_mcu_bsr.prj b/trunk/yav_mcu_bsr.prj index 1fb8a5b..0553d19 100644 --- a/trunk/yav_mcu_bsr.prj +++ b/trunk/yav_mcu_bsr.prj @@ -520,64 +520,6 @@ Tool3=ID78K0R-QB|V3.60 [BuildBefore-AfterCmd] Before1=touch magic.c After1=ruby nec_s_2_bsrbin2.rb bsr.hex -[SrcFile] -Source1=loader.c -Source2=pm.c -Source3=i2c_ctr.c -Source4=main.c -Source5=magic.c -Source6=WDT.c -Source7=i2c_mcu.c -Source8=i2c_twl.c -Source9=led.c -Source10=rtc.c -Source11=vreg_ctr.c -Source12=vreg_twl.c -Source13=adc.c -Source14=renge\renge.c -Source15=accero.c -Source16=self_flash.c -Source17=sw.c -Source18=task_debug.c -Source19=task_misc.c -Source20=task_sys.c -Source21=pedo_alg_thre_det2.c -Source22=ini_VECT.c -[IncFile] -Include1=incs_loader.h -Include2=jhl_defs.h -Include3=config.h -Include4=user_define.h -Include5=bsr_system.h -Include6=renge\renge.h -Include7=renge\renge_defs.h -Include8=renge\renge_task_immediate.h -Include9=vreg_ctr.h -Include10=vreg_twl.h -Include11=loader.h -Include12=i2c_mcu.h -Include13=WDT.h -Include14=fsl.h -Include15=fsl_user.h -Include16=i2c_ctr.h -Include17=pm.h -Include18=rtc.h -Include19=reboot.h -Include20=incs.h -Include21=accero.h -Include22=pedometer.h -Include23=adc.h -Include24=led.h -Include25=batt_params.h -Include26=..\..\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r\fsl.h -Include27=i2c_twl_defs.h -Include28=renge\renge_task_intval.h -Include29=..\..\Program Files\NEC Electronics Tools\CC78K0R\W2.10\inc78k0r\math.h -Include30=i2c_twl.h -Include31=sw.h -Include32=self_flash.h -Include33=pool.h -Include34=pedo_lpf_coeff.h [Options.CC78K0R 0] Version=210 Include0=renge,C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r @@ -788,7 +730,7 @@ Intunexpand=0 Kanjicode=1210 Verbose=0 CommandFile=0 -Warninglevel=2 +Warninglevel=1 Startupchk=1 Fixation=0 FarROMization=0 @@ -815,7 +757,7 @@ Include0=renge,C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\in Include1=renge,C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r Include2=renge,C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r Include3=renge,C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r -Include4=C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r +Include4=renge,C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r Memorymodel=1 Flashobj=0 FlashStartadr= @@ -871,7 +813,7 @@ Intunexpand=0 Kanjicode=1210 Verbose=0 CommandFile=0 -Warninglevel=2 +Warninglevel=1 Startupchk=1 Fixation=0 FarROMization=0 @@ -1127,3 +1069,62 @@ VfiFileBoot0= VfiFileBoot1=boot.vfi VF78K0Rchk=0 VF78K0Rvs= +[SrcFile] +Source1=loader.c +Source2=pm.c +Source3=i2c_ctr.c +Source4=main.c +Source5=magic.c +Source6=WDT.c +Source7=i2c_mcu.c +Source8=i2c_twl.c +Source9=led.c +Source10=rtc.c +Source11=vreg_ctr.c +Source12=vreg_twl.c +Source13=adc.c +Source14=renge\renge.c +Source15=accero.c +Source16=self_flash.c +Source17=sw.c +Source18=task_debug.c +Source19=task_misc.c +Source20=task_sys.c +Source21=pedo_alg_thre_det2.c +Source22=ini_VECT.c +Source23=led_old.c +[IncFile] +Include1=incs_loader.h +Include2=jhl_defs.h +Include3=config.h +Include4=user_define.h +Include5=bsr_system.h +Include6=renge\renge.h +Include7=renge\renge_defs.h +Include8=renge\renge_task_immediate.h +Include9=vreg_ctr.h +Include10=vreg_twl.h +Include11=loader.h +Include12=i2c_mcu.h +Include13=WDT.h +Include14=fsl.h +Include15=fsl_user.h +Include16=i2c_ctr.h +Include17=pm.h +Include18=rtc.h +Include19=reboot.h +Include20=incs.h +Include21=accero.h +Include22=pedometer.h +Include23=adc.h +Include24=led.h +Include25=batt_params.h +Include26=..\..\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r\fsl.h +Include27=i2c_twl_defs.h +Include28=renge\renge_task_intval.h +Include29=..\..\Program Files\NEC Electronics Tools\CC78K0R\W2.10\inc78k0r\math.h +Include30=i2c_twl.h +Include31=sw.h +Include32=self_flash.h +Include33=pool.h +Include34=pedo_lpf_coeff.h