diff --git a/trunk/adc.c b/trunk/adc.c index cff474c..82bcc5d 100644 --- a/trunk/adc.c +++ b/trunk/adc.c @@ -34,21 +34,21 @@ void tsk_adc( ) static u8 sndvol_codec; static u8 bt_temp_old; - if( ( system_status.pwr_state == ON ) || ( system_status.pwr_state == SLEEP ) ) + if( task_interval != 0 ) { - if( adc_updated ) + task_interval -= 1; + return; + } + else + { + task_interval = ( INTERVAL_TSK_ADC / SYS_INTERVAL_TICK ); + } + + + if( adc_updated ) + { + if( system_status.pwr_state == ON ) { - - if( task_interval != 0 ) - { - task_interval -= 1; - return; - } - else - { - task_interval = ( INTERVAL_TSK_ADC / SYS_INTERVAL_TICK ); - } - #if 0 tune ・フ変化では割り込みを入れない // tune @@ -63,7 +63,7 @@ void tsk_adc( ) } #endif - // Volume + // Volume // { static u8 vol_old; static u8 class_old; @@ -83,22 +83,43 @@ void tsk_adc( ) } } + // デバイスに伝える + if( sndvol_codec != vreg_ctr[VREG_C_SND_VOL] ) + { + sndvol_codec = vreg_ctr[VREG_C_SND_VOL]; + // DCPにも伝えておく + iic_mcu_write_a_byte( IIC_SLA_DCP, 0, + sndvol_codec / 2 + sndvol_codec / 4 ); // 簡易スケーリング todo + // codecに伝える + iic_mcu_write_a_byte( IIC_SLA_CODEC, REG_ADRS_CODEC_VOL, + 127 - ( sndvol_codec / 2 + sndvol_codec / 4 )/2 ); + } } - // デバイスに伝える - if( sndvol_codec != vreg_ctr[VREG_C_SND_VOL] ) + + // TUNE_LED // { - sndvol_codec = vreg_ctr[VREG_C_SND_VOL]; - // DCPにも伝えておく - iic_mcu_write_a_byte( IIC_SLA_DCP, 0, - sndvol_codec / 2 + sndvol_codec / 4 ); // 簡易スケーリング todo - // codecに伝える - iic_mcu_write_a_byte( IIC_SLA_CODEC, REG_ADRS_CODEC_VOL, - 127 - ( sndvol_codec / 2 + sndvol_codec / 4 )/2 ); + // ここで?仕様?  + switch ( vreg_ctr[VREG_C_LED_TUNE] ) + { + case ( 1 ): // 点灯 + LED_duty_TUNE = vreg_ctr[VREG_C_LED_BRIGHT]; + break; + + case ( 2 ): // + LED_duty_TUNE = LED_BRIGHT_MAX - vreg_ctr[VREG_C_TUNE]; + break; + + default: // 消灯 + LED_duty_TUNE = 0; + break; + } } + adc_updated = 0; } + ADCEN = 1; ADM = 0b00011011; // セレクトモード、章圧、fCLK/6 ///ここから @@ -110,22 +131,6 @@ void tsk_adc( ) ADIF = 0; ADMK = 0; - - // TUNE_LED ここかよ! - switch ( vreg_ctr[VREG_C_LED_TUNE] ) - { - case ( 1 ): // 点灯 - LED_duty_TUNE = vreg_ctr[VREG_C_LED_BRIGHT]; - break; - - case ( 2 ): // - LED_duty_TUNE = LED_BRIGHT_MAX - vreg_ctr[VREG_C_TUNE]; - break; - - default: // 消灯 - LED_duty_TUNE = 0; - break; - } } } diff --git a/trunk/bsr_system.h b/trunk/bsr_system.h index 4d166a8..962cb47 100644 --- a/trunk/bsr_system.h +++ b/trunk/bsr_system.h @@ -11,11 +11,13 @@ enum pwr_state_ SLEEP_TRIG, SLEEP, // WAKE, + BT_CHARGE, }; enum poweron_reason_ { - PWSW = 0, + NONE = 0, + PWSW, RTC_ALARM, }; diff --git a/trunk/i2c_ctr.c b/trunk/i2c_ctr.c index a2cde37..159577a 100644 --- a/trunk/i2c_ctr.c +++ b/trunk/i2c_ctr.c @@ -5,13 +5,11 @@ ======================================================== */ #include "incs.h" -// u16 tot; - - #ifdef _MCU_BSR_ // #ifdef _MODEL_TS0_ || _MODEL_WM0_ // ワーキングモデルはI2Cが逆 +// TEGは回路図でテレコ #define ACKD ACKD1 #define ACKE ACKE1 #define COI COI1 @@ -84,9 +82,8 @@ __interrupt void int_iic_ctr( ) rtc_unlock( ); - // レジスタリードで、割り込みピンの設定 -// if( ( reg_adrs - 1 ) == VREG_C_IRQ3 ){ -// IRQ0_neg; + // レジスタリードで、割り込みピンをネゲート + // まだ読まれてない割り込みがあれば、再度アサート if( !( ( vreg_ctr[VREG_C_IRQ0] == 0 ) && ( vreg_ctr[VREG_C_IRQ1] == 0 ) && ( vreg_ctr[VREG_C_IRQ2] == 0 ) && ( vreg_ctr[VREG_C_IRQ3] == 0 ) ) ) @@ -100,7 +97,6 @@ __interrupt void int_iic_ctr( ) else { IRQ0_neg; -// } } return; } @@ -184,100 +180,6 @@ __interrupt void int_iic_ctr( ) } -#if 0 -// 一度通信が始まったら終わるまで戻らないバージョン -__interrupt void int_iic_ctr( ) -{ - static u8 state = 0; - static u8 reg_adrs; -// static u8 reg_adrs_internal; - static u8 trx_buf; - - if( SPD ) - { - return; - } - - // 自局呼び出しに応答。 - // 初期化など - WREL = 1; // ウェイト解除 - - while( !IICAIF ) - {; - } - IICAIF = 0; - - // レジスタアドレス受信 - reg_adrs = IICA; - WREL = 1; - trx_buf = vreg_ctr_read( reg_adrs ); // データの準備をしておく - - while( !IICAIF ) - {; - } - IICAIF = 0; - - if( STD ) - { // リスタートコンディション - // リードされる - if( COI ) - { - state = IIC_TX; - } - else - { - // リスタートで違うデバイスが呼ばれた! - WREL = 1; // ウェイト解除? - state = IIC_IDLE; // 終了処理 - SPIE = 0; - return; - } - } - else - { // ライト続行 - state = IIC_RX; - } - - if( state == IIC_TX ) - { - // 送信 // - do - { - IICA = trx_buf; - vreg_ctr_after_read( reg_adrs ); // 読んだらクリアなどの処理 - reg_adrs += 1; - trx_buf = vreg_ctr_read( reg_adrs ); - while( !IICAIF ) - {; - } - IICAIF = 0; - } - while( ACKD ); - LREL = 1; - - } - else - { - // 受信 // - SPIE = 1; - do - { - trx_buf = IICA; - vreg_ctr_write( reg_adrs, trx_buf ); - reg_adrs += 1; - WREL = 1; - while( !IICAIF ) - {; - } - IICAIF = 0; - } - while( !SPD ); - SPIE = 0; - } - state = IIC_IDLE; -} -#endif - // ======================================================== diff --git a/trunk/i2c_mcu.c b/trunk/i2c_mcu.c index 39145e9..4ca3126 100644 --- a/trunk/i2c_mcu.c +++ b/trunk/i2c_mcu.c @@ -272,7 +272,7 @@ err iic_mcu_write_a_byte( u8 SLA, u8 adrs, u8 dat ) その場合でもエラー検出などできません DMA1を使用します。 ******************************************************************************/ -err iic_mcu_write( u8 slave, u8 adrs, u8 len, u8 * src ) +err iic_mcu_write( u8 slave, u8 adrs, u8 len, void * src ) { //* // 使用中なら待つ diff --git a/trunk/i2c_mcu.h b/trunk/i2c_mcu.h index cd5209b..5b8a3dd 100644 --- a/trunk/i2c_mcu.h +++ b/trunk/i2c_mcu.h @@ -21,7 +21,7 @@ extern u8 iic_mcu_bus_status; err iic_mcu_read( u8 SLA, u8 adrs, u8 len, u8 * dest ); u8 iic_mcu_read_a_byte( u8 SLA, u8 adrs ); -err iic_mcu_write( u8 SLA, u8 adrs, u8 len, u8 * src ); +err iic_mcu_write( u8 SLA, u8 adrs, u8 len, void * src ); err iic_mcu_write_a_byte( u8 SLA, u8 adrs, u8 dat ); // ↓その通信が完了したら解除されます。 diff --git a/trunk/jhl_defs.h b/trunk/jhl_defs.h index 01d48df..e23de70 100644 --- a/trunk/jhl_defs.h +++ b/trunk/jhl_defs.h @@ -18,6 +18,8 @@ typedef unsigned char err; } \ } + +// 割り込みマスクが必要と言うことでこんな事をする羽目になりました #if 0 // マスクされてたら、フラグは立てるが、割り込みは入れない。 #define set_irq( irqreg, bitpos ) \ diff --git a/trunk/led.c b/trunk/led.c index 16aab7e..f653df5 100644 --- a/trunk/led.c +++ b/trunk/led.c @@ -162,7 +162,7 @@ static void led_pow_normal( ) { static u8 state; - if( vreg_ctr[VREG_C_BT_REMAIN] < ( 255 * 0.05 ) ) + if( vreg_ctr[VREG_C_BT_REMAIN] < 3 ) { // 赤点滅 state++; @@ -178,7 +178,7 @@ static void led_pow_normal( ) return; } - else if( vreg_ctr[VREG_C_BT_REMAIN] < ( 255 * 0.2 ) ) + else if( vreg_ctr[VREG_C_BT_REMAIN] < 12 ) { // 赤点灯 if( LED_duty_pow_H != 0x0000 ) @@ -260,7 +260,7 @@ static void led_pow_hotaru( ) case ( 0 ): case ( 2 ): case ( 4 ): - if( vreg_ctr[VREG_C_BT_REMAIN] < ( 255 * 0.2 ) ) + if( vreg_ctr[VREG_C_BT_REMAIN] < 12 ) { // 赤いとき blue_to = 0; @@ -275,7 +275,7 @@ static void led_pow_hotaru( ) default: // フェードアウト - if( vreg_ctr[VREG_C_BT_REMAIN] < ( 255 * 0.2 ) ) + if( vreg_ctr[VREG_C_BT_REMAIN] < 12 ) { red_to = 2; } diff --git a/trunk/loader.c b/trunk/loader.c index 2dfc773..c98dc1f 100644 --- a/trunk/loader.c +++ b/trunk/loader.c @@ -52,7 +52,6 @@ static fsl_u08 fsl_MK2H_bak_u08; /* } #define MGC_HEAD 0x2100 #define MGC_FOOT 0x47F6 -u8 temp; // ======================================================== @@ -63,7 +62,7 @@ void power_save( ); static void hdwinit2( ); extern void main_loop( ); -extern void chk_bootCluster( ); + // ======================================================== @@ -79,6 +78,9 @@ void main( ) // 旧版対応 強制リセット WDTE = 0x00; /* + { + u8 temp; + #asm mov A,PSW and A,#06h @@ -103,6 +105,7 @@ void main( ) DBG_LED_WIFI_2_off; } } + } */ } else @@ -117,7 +120,7 @@ void main( ) { pwup_delay1 += 1; } - while( pwup_delay1 != 0 ); // u16にするとコンパイラが怒るため…。 + while( pwup_delay1 != 0 ); // u16にするとコンパイラが怒るんだが…。 } while( pwup_delay0 != 0 ); @@ -150,8 +153,6 @@ void main( ) } } -// chk_bootCluster( ); - // 通常運転 main_loop( ); } @@ -159,16 +160,6 @@ void main( ) -/* ======================================================== - 省電力モードへ移行 - ======================================================== */ -void power_save( ) -{ - HALT( ); -} - - - /* ======================================================== キーリターン割り込み ======================================================== */ diff --git a/trunk/main.c b/trunk/main.c index 8595fee..89a3a61 100644 --- a/trunk/main.c +++ b/trunk/main.c @@ -14,18 +14,15 @@ #include "accero.h" #include "led.h" + + // ======================================================== static void read_dipsw( ); -extern void power_save( ); - // ======================================================== system_status_ system_status; -extern u8 boot_ura; - - /* ======================================================== 本当のエントリ関数は loader.c にあります @@ -72,6 +69,7 @@ void main_loop( void ) EI( ); + RTCIMK = 0; /* 割り込み(アラーム&インターバル)許可 */ // メインループ // while( 1 ) @@ -84,7 +82,7 @@ void main_loop( void ) renge_task_interval_run( ); } renge_task_immed_run( ); // ここのループが廻る度に実行されます - power_save( ); + HALT( ); } } diff --git a/trunk/pm.c b/trunk/pm.c index e52b5df..77d1441 100644 --- a/trunk/pm.c +++ b/trunk/pm.c @@ -14,7 +14,8 @@ // ======================================================== -// -1.45 ,-3.9} + + // ======================================================== @@ -44,24 +45,6 @@ u8 rcomp; float temp_co_up; float temp_co_dn; -#define _TEG_ - -/* ======================================================== - バッテリの認証を行います。 - 引数 無し - 返値 (ERR)ERR_SUCCESS 成功 - それ以外 失敗 - ======================================================== */ -err PM_bt_auth( ) -{ - /* - todo - マキシムなら Dallas-1wire 通信 - SHA-1計算 - */ - return ( ERR_SUCCESS ); -} - /******************************************************//** @@ -87,38 +70,36 @@ void PM_init( ) }chars; }dat_16; -#if 1 - wait_ms( 200 ); + wait_ms( 150 ); +#if 0 // -1. なんかおかしい… リセットをかけてみる dat_16._u16 = swap_endian_16( 0x5400 ); // reset iic_mcu_write( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_COMMAND, 2, &dat_16.chars.lsb ); #endif - wait_ms( 200 ); - // 0. バッテリ残量IC クイックスタート dat_16._u16 = swap_endian_16( 0x4000 ); // quick start if( iic_mcu_write( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_MODE, 2, &dat_16.chars.lsb ) != ERR_SUCCESS ) { - vreg_ctr[ VREG_C_STATUS_X ] |= 0x01; + vreg_ctr[ VREG_C_STATUS_1 ] |= 0x01; } else { // 1. ロック解除 dat_16._u16 = swap_endian_16( 0x4057 ); // unlock key - iic_mcu_write( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_LOCK, 2, &dat_16.chars.lsb ); + iic_mcu_write( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_LOCK, 2, &dat_16._u16 ); // 2. 初期パラメータを一時保存 iic_mcu_read( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_RCOMP, 4, origParam ); // 3. 一時的にOCVを変更 dat_16._u16 = swap_endian_16( 0xD4C0 ); // マジックナンバー的なもの。メーカー指定 - iic_mcu_write( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_OCV, 2, &dat_16.chars.lsb ); + iic_mcu_write( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_OCV, 2, &dat_16._u16 ); // 4. 一時的にRCOMPを変更 dat_16._u16 = swap_endian_16( 0xFF00 ); - iic_mcu_write( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_RCOMP, 2, &dat_16.chars.lsb ); + iic_mcu_write( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_RCOMP, 2, &dat_16._u16 ); // 電池メーカーの識別 BT_DET_P = 1; @@ -143,7 +124,7 @@ void PM_init( ) // 7. OCVに「とある値」を書く dat_16._u16 = swap_endian_16( 0xD4C0 ); - iic_mcu_write( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_OCV, 2, &dat_16.chars.lsb ); + iic_mcu_write( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_OCV, 2, &dat_16._u16 ); // 8. 150〜600ms待つ。600msは厳守 wait_ms( 200 ); @@ -162,7 +143,7 @@ void PM_init( ) // 11. ロック dat_16._u16 = swap_endian_16( 0x0000 ); // lock key - iic_mcu_write( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_LOCK, 2, &dat_16.chars.lsb ); + iic_mcu_write( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_LOCK, 2, &dat_16._u16 ); // おしまい // } @@ -191,7 +172,7 @@ void PM_init( ) ======================================================== */ task_status_immed PM_bt_temp_update( ) { - s8 newrcomp; + s16 newrcomp; static s8 temp_old; static u8 count = 0; // たまにしか書きに行かない static s16 temperature; @@ -472,13 +453,14 @@ err PM_sys_pow_on( ) // 残量チェック vreg_ctr[VREG_C_BT_REMAIN] = PM_get_batt_left( ); - vreg_ctr[VREG_C_BT_REMAIN] = 200; + vreg_ctr[VREG_C_BT_REMAIN] = 99; if( vreg_ctr[VREG_C_BT_REMAIN] < 0 ) { return ( 1 ); } // 電源順次立ち上げ + PM_reset_ast( ); RESET2_ast; FCRAM_RST_ast; @@ -511,7 +493,8 @@ err PM_sys_pow_on( ) u8 temp; // 電源投入 - RESETs_ast; + RESET1_ast; + RESET2_ast; FCRAM_RST_ast; PM_TEG_PWSW = 1; @@ -535,7 +518,8 @@ err PM_sys_pow_on( ) if( !RESET1_n ) { // 起動失敗 - RESETs_ast; + RESET1_ast; + RESET2_ast; FCRAM_RST_ast; return ( ERR_ERR ); } @@ -567,8 +551,8 @@ err PM_sys_pow_off( ) if( RESET1_n ) { - - RESETs_ast; + RESET1_ast; + RESET2_ast; FCRAM_RST_ast; PM_TEG_PWSW = 1; wait_ms( 250 ); @@ -576,7 +560,8 @@ err PM_sys_pow_off( ) wait_ms( 250 ); PM_TEG_PWSW = 0; } - RESETs_ast; + RESET1_ast; + RESET2_ast; FCRAM_RST_ast; #endif @@ -619,7 +604,7 @@ void tsk_batt( ) } // 電源周りのステータスが変化? /// - set_bit( PM_EXTDC, vreg_ctr[VREG_C_STATUS], REG_BIT_POW_SUPPLY ); + set_bit( !PM_EXTDC_n, vreg_ctr[VREG_C_STATUS], REG_BIT_POW_SUPPLY ); set_bit( !BT_CHG_n, vreg_ctr[VREG_C_STATUS], REG_BIT_BATT_CHARGE ); // →割り込み。miscの中でよろしくやってくれている。 @@ -644,17 +629,17 @@ void tsk_batt( ) && ( ( 345 / 4 ) < vreg_ctr[VREG_C_BT_TEMP] ) && ( vreg_ctr[VREG_C_BT_TEMP] < ( 739 / 4 ) ) ) ) { - BT_CHG_EN = 1; + BT_CHG_EN_n = 0; // 温度範囲OKで充電再開 } else { - BT_CHG_EN = 0; + BT_CHG_EN_n = 1; // 温度危険! 充電停止 } // 充電LED LED_duty_CHARGE = !BT_CHG_n ? vreg_ctr[VREG_C_LED_BRIGHT] : 0; - if(( vreg_ctr[ VREG_C_STATUS_X ] & 0x01 ) == 0 ) + if(( vreg_ctr[ VREG_C_STATUS_1 ] & REG_BIT_GASGAUGE_ERR ) == 0 ) { // 電池残量の取得 { @@ -667,7 +652,7 @@ void tsk_batt( ) } else { - vreg_ctr[ VREG_C_BT_REMAIN ] = 0xFF; + vreg_ctr[ VREG_C_BT_REMAIN ] = 99; } vreg_ctr[ VREG_C_FREE0 ] = vreg_ctr[ VREG_C_BT_REMAIN ]; vreg_ctr[ VREG_C_FREE1 ] = iic_mcu_read_a_byte( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_VCELL ); @@ -718,11 +703,11 @@ extern u8 temp_debug_3; task_status_immed ntr_pmic_comm( ) { #ifdef _CODEC_CTR_ - static u8 reg_shadow[2]; + static u8 reg_shadow; u8 reg1_old; - reg1_old = reg_shadow[1]; - if( iic_mcu_read( IIC_SLA_CODEC, CODEC_REG_PM, 2, reg_shadow ) != ERR_SUCCESS ) + reg1_old = reg_shadow; + if( iic_mcu_read( IIC_SLA_CODEC, CODEC_REG_PM, 1, ®_shadow ) != ERR_SUCCESS ) { return ( ERR_FINISED ); } @@ -730,7 +715,7 @@ task_status_immed ntr_pmic_comm( ) DI( ); // offリクエスト - if( ( reg_shadow[0] & REG_BIT_TWL_REQ_OFF_REQ ) != 0 ) + if( ( reg_shadow & REG_BIT_TWL_REQ_OFF_REQ ) != 0 ) { set_irq( VREG_C_IRQ3, REG_BIT_TWL_OFF_REQ ); vreg_ctr[VREG_C_IRQ3] |= REG_BIT_TWL_OFF_REQ; @@ -741,7 +726,7 @@ task_status_immed ntr_pmic_comm( ) } // リセットリクエスト - if( ( reg_shadow[0] & REG_BIT_TWL_REQ_RST_REQ ) != 0 ) + if( ( reg_shadow & REG_BIT_TWL_REQ_RST_REQ ) != 0 ) { vreg_ctr[VREG_C_IRQ3] |= REG_BIT_TWL_RESET_REQ; if( ( vreg_ctr[VREG_C_IRQ_MASK3] & REG_BIT_TWL_RESET_REQ ) == 0 ) @@ -751,9 +736,9 @@ task_status_immed ntr_pmic_comm( ) } // バックライトが... - if( ( ( reg1_old ^ reg_shadow[1] ) & REG_BIT_TWL_REQ_BL ) != 0 ) // バックライトの2ビットが何らか変化して、 + if( ( ( reg1_old ^ reg_shadow ) & REG_BIT_TWL_REQ_BL ) != 0 ) // バックライトの2ビットが何らか変化して、 { - if( ( reg_shadow[1] & REG_BIT_TWL_REQ_BL ) == 0x00 ) // 00になった + if( ( reg_shadow & REG_BIT_TWL_REQ_BL ) == 0x00 ) // 00になった { // 両方消された vreg_ctr[VREG_C_IRQ3] |= REG_BIT_TWL_BL_OFF; @@ -762,7 +747,7 @@ task_status_immed ntr_pmic_comm( ) IRQ0_ast; } } - else if( ( reg_shadow[1] & REG_BIT_TWL_REQ_BL ) == REG_BIT_TWL_REQ_BL ) + else if( ( reg_shadow & REG_BIT_TWL_REQ_BL ) == REG_BIT_TWL_REQ_BL ) { // 両方ついた vreg_ctr[VREG_C_IRQ3] |= REG_BIT_TWL_BL_ON; @@ -773,8 +758,8 @@ task_status_immed ntr_pmic_comm( ) } } EI( ); - reg_shadow[0] &= ~( REG_BIT_TWL_REQ_OFF_REQ | REG_BIT_TWL_REQ_RST_REQ ); - iic_mcu_write_a_byte( IIC_SLA_CODEC, CODEC_REG_PM, reg_shadow[0] ); + reg_shadow &= ~( REG_BIT_TWL_REQ_OFF_REQ | REG_BIT_TWL_REQ_RST_REQ ); + iic_mcu_write_a_byte( IIC_SLA_CODEC, CODEC_REG_PM, reg_shadow ); #endif return ( ERR_FINISED ); } diff --git a/trunk/pm.h b/trunk/pm.h index 443da09..dc9efa1 100644 --- a/trunk/pm.h +++ b/trunk/pm.h @@ -114,6 +114,7 @@ task_status_immed tski_PM_LCD_off( ); #ifdef _model_CTR_ #define PM_VDD_ecoMode() ( iic_mcu_write_a_byte( IIC_SLA_PMIC, PM_REG_ADRS_POW_SAVE, 0x47 )) #define PM_VDD_normMode() ( iic_mcu_write_a_byte( IIC_SLA_PMIC, PM_REG_ADRS_POW_SAVE, 0x00 )) +// todo コア電圧を下げる #else #define PM_VDD_ecoMode() ( iic_mcu_write_a_byte( IIC_SLA_PMIC, PM_REG_ADRS_POW_SAVE, 0x00 | 0x40 )) #define PM_VDD_normMode() ( iic_mcu_write_a_byte( IIC_SLA_PMIC, PM_REG_ADRS_POW_SAVE, 0x00 | 0x03 )) @@ -140,7 +141,6 @@ task_status_immed tski_PM_LCD_off( ); #define PM_VDDLCD_off() ( iic_mcu_write_a_byte( IIC_SLA_PMIC, PM_REG_ADRS_VDD_LCD, 0 ) ) #define PM_set_BL( dat ) ( iic_mcu_write_a_byte( IIC_SLA_PMIC, PM_REG_ADRS_BL, dat ) ) -#define PM_set_pow_save( dat ) ( iic_mcu_write_a_byte( IIC_SLA_PMIC, PM_REG_ADRS_POW_SAVE, dat ) ) #define PM_set_adc1( dat ) ( iic_mcu_write_a_byte( IIC_SLA_PMIC, PM_REG_ADRS_POW_DAC1, dat ) ) #define PM_set_adc2( dat ) ( iic_mcu_write_a_byte( IIC_SLA_PMIC, PM_REG_ADRS_POW_DAC2, dat ) ) diff --git a/trunk/renge/renge.c b/trunk/renge/renge.c index 6bedb5a..63e2ca2 100644 --- a/trunk/renge/renge.c +++ b/trunk/renge/renge.c @@ -149,7 +149,7 @@ static u8 lock = 0; for( temp = 0; temp < task_immed_index; temp += 1 ){ if( tasks_immed[ temp ] == new_task ){ // while(1){ - NOP(); // アサートで止めたいのですが。 + NOP(); // アサートで止めたい // } lock = 0; EI(); @@ -263,6 +263,7 @@ err renge_task_immed_run(){ if( tasks_immed[ task_id ]() == ERR_FINISED ){ DI(); renge_task_immed_del( task_id ); + task_id -= 1; // ↑でリストを前詰めするので帳尻あわせが必要 todo EI(); } } @@ -315,7 +316,7 @@ err renge_task_immed_run(){ /****************************************************************************** 単位は ms - NOPを回すだけ、指定時間CPUを占有します。 + NOPを回すだけ、指定時間CPUを *占有します* 。 割り込みとか入るとその分遅れます。 少し誤差あります。 *****************************************************************************/ diff --git a/trunk/rtc.c b/trunk/rtc.c index 7100844..c5dd07b 100644 --- a/trunk/rtc.c +++ b/trunk/rtc.c @@ -34,9 +34,9 @@ void RTC_init( void ) SEC = 0; MIN = 0; HOUR = 15; - DAY = ((1<<4) + 7); + DAY = 1; WEEK = 0; - MONTH = 10; + MONTH = 11; YEAR = 9; ALARMWW = 0x7F; @@ -75,6 +75,7 @@ __interrupt void int_rtc_int( ) } + /* ======================================================== RTC アラーム割り込み 2^6/fXT(1.953125 ms) diff --git a/trunk/self_flash.c b/trunk/self_flash.c index daefff7..439552c 100644 --- a/trunk/self_flash.c +++ b/trunk/self_flash.c @@ -75,10 +75,6 @@ err firm_restore( ); #define N_MGC_T 0x47F6 -// ======================================================== -u8 boot_ura; // ブートクラスタ 0/1 - - /* ======================================================== ======================================================== */ @@ -343,21 +339,6 @@ err firm_restore( ) } -void chk_bootCluster( ) -{ - u8 data_buffer[SELF_UPDATE_BUFF_SIZE]; - u8 err; - - DI( ); - FSL_Open( ); // 割り込み禁止など - - err = FSL_Init( data_buffer ); // ライブラリ初期化。割り込み中断考慮せず - err |= FSL_ModeCheck( ); // ライトプロテクトチェック。失敗することを考慮せず - err |= FSL_GetActiveBootCluster( &boot_ura ); - - FSL_Close( ); -} - // ======================================================== diff --git a/trunk/sw.c b/trunk/sw.c new file mode 100644 index 0000000..3372eb4 --- /dev/null +++ b/trunk/sw.c @@ -0,0 +1,153 @@ +#pragma SFR +#pragma NOP +#pragma HALT +#pragma STOP + +#include "incs.h" + +#include "i2c_twl.h" +#include "i2c_ctr.h" +#include "led.h" +#include "accero.h" +#include "pm.h" +#include "rtc.h" + + + +//========================================================= +#define INTERVAL_TSK_SW 16 +#define CLICK_THRESHOLD 3 +#define HOLD_THREASHOLD ( 800 / INTERVAL_TSK_SW ) + + + +//========================================================= +u8 SW_pow_count, SW_home_count, SW_wifi_count; +bit SW_pow_mask, SW_home_mask, SW_wifi_mask; + + + +//========================================================= +// 押した時間を数える。押しっぱなしでも0に戻らない +// maskが非0の時は、一度離すまで無視する +#define count_sw_n( sw, counter, mask ) \ + { \ + if( sw ){ \ + mask = 0; \ + counter = 0; \ + }else{ \ + if( mask != 0 ){ \ + counter = 0; \ + }else{ \ + counter += 1; \ + if( counter == 0 ) counter = 255; \ + } \ + } \ + } + + + +/* ======================================================== + スイッチの監視 +  チャタリングをはねたり、長押しや、押したトリガなどの検出など + ======================================================== */ +void tsk_sw( ) +{ + static u8 cnt_force_off = 0; + static u8 task_interval = 0; + + if( task_interval != 0 ) + { + task_interval -= 1; + return; + } + else + { + task_interval = ( INTERVAL_TSK_SW / SYS_INTERVAL_TICK ); + } + + + switch ( system_status.pwr_state ) + { + case ( OFF_TRIG ): + SW_pow_count = 0; + SW_wifi_count = 0; + SW_home_count = 0; + cnt_force_off = 0; + break; + + case ( ON ): + case ( SLEEP ): + case ( BT_CHARGE ): + // 電源スイッチの監視 // + if( SW_POW_n ) + { + if( ( CLICK_THRESHOLD < SW_pow_count ) && ( SW_pow_count < HOLD_THREASHOLD ) ) + { + set_irq( VREG_C_IRQ0, REG_BIT_SW_POW_CLICK ); + } + } + else if( SW_pow_count == HOLD_THREASHOLD ) + { + set_irq( VREG_C_IRQ0, REG_BIT_SW_POW_HOLD ); + } + else if( SW_pow_count == ( HOLD_THREASHOLD * 4 ) ) + { // todo +// vreg_ctr[ VREG_C_LED_POW ] = LED_POW_ONLY_RED; + system_status.pwr_state = OFF_TRIG; + renge_task_interval_run_force = 1; + } + + // 電源OFF割り込みを入れたが… + if( ( vreg_ctr[VREG_C_IRQ0] & REG_BIT_SW_POW_HOLD ) != 0 ) + { + cnt_force_off += 1; + if( cnt_force_off >= 13 ) + { // …返事がない。強制的に切る。 + vreg_ctr[VREG_C_LED_POW] = LED_POW_ILM_OFF; + if( ( LED_duty_pow_H == 0 ) && ( LED_duty_pow_L == 0 ) ) + { + system_status.pwr_state = OFF_TRIG; + renge_task_interval_run_force = 1; + } + } + } + else + { + cnt_force_off = 0; + } + + // HOME スイッチ // + if( SW_HOME_n ) + { + if( ( CLICK_THRESHOLD < SW_home_count ) && ( SW_home_count < HOLD_THREASHOLD ) ) + { + set_irq( VREG_C_IRQ0, REG_BIT_SW_HOME_CLICK ); + } + } + else if( SW_home_count == HOLD_THREASHOLD ) + { + set_irq( VREG_C_IRQ0, REG_BIT_SW_HOME_HOLD ); + } + + // wifi sw // + if( SW_wifi_count == 10 ) + { + set_irq( VREG_C_IRQ0, REG_BIT_SW_WIFI_CLICK ); + } + + break; + } + + // ボタン押し時間のカウント + if( ( system_status.pwr_state == ON ) || ( system_status.pwr_state == OFF ) ) + { + count_sw_n( SW_POW_n, SW_pow_count, SW_pow_mask ); +#ifdef _SW_HOME_ENABLE_ + count_sw_n( SW_HOME_n, SW_home_count, SW_home_mask ); +#endif + count_sw_n( SW_WIFI_n, SW_wifi_count, SW_wifi_mask ); + } + + return; +} diff --git a/trunk/sw.h b/trunk/sw.h new file mode 100644 index 0000000..f3bea21 --- /dev/null +++ b/trunk/sw.h @@ -0,0 +1,7 @@ +#ifndef _sw_ +#define _sw_ + +extern u8 SW_pow_count, SW_home_count, SW_wifi_count; +extern bit SW_pow_mask, SW_home_mask, SW_wifi_mask; + +#endif diff --git a/trunk/task_debug.c b/trunk/task_debug.c new file mode 100644 index 0000000..13c050f --- /dev/null +++ b/trunk/task_debug.c @@ -0,0 +1,114 @@ +#pragma SFR +#pragma NOP +#pragma HALT +#pragma STOP + +#include "incs.h" +#include "renge.h" +#include "pm.h" + + + + +/* ======================================================== + ======================================================== */ +void tsk_debug( ) +{ + u8 temp; + static u8 count = 0; + static u8 task_interval; + + if( system_status.pwr_state == ON_TRIG ){ + + iic_mcu_write_a_byte( IIC_SLA_DCP, 0x08, 0x80 ); // ACR←0x80 揮発モードへ + + if( !SW_SEL_n ){ + renge_task_immed_add( tski_PM_LCD_on ); + renge_task_immed_add( tski_PM_BL_on ); + } + +// vreg_ctr[ VREG_C_ACC_CONFIG ] = 0x03; +// renge_task_immed_add( acc_hosu_set ); + } + + + /* + temp = iic_mcu_read_a_byte( IIC_SLA_8LEDS, IIC_8LEDS_REG_DO ); + count += 1; + iic_mcu_write_a_byte( IIC_SLA_8LEDS, IIC_8LEDS_REG_DO, count ); + iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 3, count ); + */ + return; +} + +u8 temp_debug_3; + +void tsk_debug2( ) +{ + u8 str[4]; + + if( ( system_status.pwr_state == ON ) || ( system_status.pwr_state == SLEEP ) ) + { +/* + str[3] = vreg_ctr[ VREG_C_FREE0 ]; + str[2] = vreg_ctr[ VREG_C_FREE1 ]; + str[1] = vreg_ctr[ VREG_C_STATUS ]; + str[0] = vreg_ctr[ VREG_C_RTC_SEC ]; +*/ + str[3] = vreg_ctr[ VREG_C_IRQ1 ]; + str[2] = vreg_ctr[ VREG_C_IRQ2 ]; + str[1] = vreg_ctr[ VREG_C_IRQ3 ]; +// str[0] = vreg_ctr[ VREG_C_STATUS ]; + str[0] = temp_debug_3; + +// iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 2, vreg_ctr[ VREG_C_IRQ1 ] ); +// iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 1, boot_ura ); +// iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 1, vreg_ctr[ VREG_C_SND_VOL ] ); +// iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 1, vreg_ctr[ VREG_TUNE ] ); +// iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 0, vreg_ctr[ VREG_C_ACC_ZH ] ); +// iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 3, vreg_ctr[ VREG_C_TUNE ] ); +// iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 2, vreg_ctr[ VREG_C_SND_VOL ] ); +// iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 1, vreg_ctr[ VREG_C_STATUS ] ); +// iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 0, vreg_ctr[ VREG_C_ACC_ZH ] ); + + iic_mcu_write( IIC_SLA_DBG_MONITOR, 0, 4, &str[0] ); + } + return; +} + + +#if 0 +/* ======================================================== + タスクひな形 + ======================================================== */ +task_interval tsk_hina( ) +{ + switch ( system_status.pwr_state ) + { + case OFF: + case ON_TRIG: + case ON: + case SLEEP_TRIG: + case SLEEP: + case OFF_TRIG: + default: + } + + return ( 次の起 ・ョまでのシ ・X ・e ・ tick ・・); // 毎 tic 呼ばれることになります +} + + +// ポインタで何かもらうのは危険な気がしてきた +/* このように使う + renge_task_immed_add( タスク関数へのポインタ ); +*/ +task_status_immed tsk_imm_hina( u8 * arg ) +{ + return ( ERR_FINISED ); + // ERR_FINISED タスクを削除 + // ERR_CONTINUE 次になんか割り込みなり、ユーザー操作なり、システムチックが + // 来たときに再度実行 +} + + +#endif diff --git a/trunk/tasks.c b/trunk/task_misc.c similarity index 57% rename from trunk/tasks.c rename to trunk/task_misc.c index ba8e8a6..afc4461 100644 --- a/trunk/tasks.c +++ b/trunk/task_misc.c @@ -9,8 +9,6 @@ #include "accero.h" -extern u8 boot_ura; - #define INTERVAL_TSK_MISC_STAT 4 @@ -116,24 +114,27 @@ void tsk_misc_stat( ) } //#ifdef _MCU_KE3_ + // KE3では必須です。 /* ======================================================== 加速度センサ割り込みピンがオリジナルマイコンには無いので ポーリングする。 歩数計用 BSRマイコンはaccero.cで割り込みルーチンからタスク登録します。 ======================================================== */ + // 割り込みの取りこぼし? if( ( vreg_ctr[VREG_C_ACC_CONFIG] & 0x03 ) != 0x00 ) { if( ACC_VALID ) { -// renge_task_immed_add( tsk_cbk_accero ); + renge_task_immed_add( tsk_cbk_accero ); + NOP(); } } //#endif // 割り込みの取りこぼし? if( !PM_IRQ_n ){ -// renge_task_immed_add( ntr_pmic_comm ); + renge_task_immed_add( ntr_pmic_comm ); NOP(); } } @@ -143,109 +144,6 @@ void tsk_misc_stat( ) -/* ======================================================== - ======================================================== */ -void tsk_debug( ) -{ - u8 temp; - static u8 count = 0; - static u8 task_interval; - - if( system_status.pwr_state == ON_TRIG ){ - if( !SW_SEL_n ){ - renge_task_immed_add( tski_PM_LCD_on ); - wait_ms( 50 ); - renge_task_immed_add( tski_PM_BL_on ); - } - -// vreg_ctr[ VREG_C_ACC_CONFIG ] = 0x03; -// renge_task_immed_add( acc_hosu_set ); - } - - - /* - temp = iic_mcu_read_a_byte( IIC_SLA_8LEDS, IIC_8LEDS_REG_DO ); - count += 1; - iic_mcu_write_a_byte( IIC_SLA_8LEDS, IIC_8LEDS_REG_DO, count ); - iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 3, count ); - */ - return; -} - -u8 temp_debug_3; - -void tsk_debug2( ) -{ - u8 str[4]; - - if( ( system_status.pwr_state == ON ) || ( system_status.pwr_state == SLEEP ) ) - { -/* - str[3] = vreg_ctr[ VREG_C_FREE0 ]; - str[2] = vreg_ctr[ VREG_C_FREE1 ]; - str[1] = vreg_ctr[ VREG_C_STATUS ]; - str[0] = vreg_ctr[ VREG_C_RTC_SEC ]; -*/ - str[3] = vreg_ctr[ VREG_C_IRQ1 ]; - str[2] = vreg_ctr[ VREG_C_IRQ2 ]; - str[1] = vreg_ctr[ VREG_C_IRQ3 ]; -// str[0] = vreg_ctr[ VREG_C_STATUS ]; - str[0] = temp_debug_3; - -// iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 2, vreg_ctr[ VREG_C_IRQ1 ] ); -// iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 1, boot_ura ); -// iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 1, vreg_ctr[ VREG_C_SND_VOL ] ); -// iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 1, vreg_ctr[ VREG_TUNE ] ); -// iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 0, vreg_ctr[ VREG_C_ACC_ZH ] ); -// iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 3, vreg_ctr[ VREG_C_TUNE ] ); -// iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 2, vreg_ctr[ VREG_C_SND_VOL ] ); -// iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 1, vreg_ctr[ VREG_C_STATUS ] ); -// iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 0, vreg_ctr[ VREG_C_ACC_ZH ] ); - - iic_mcu_write( IIC_SLA_DBG_MONITOR, 0, 4, &str[0] ); - } - return; -} - - -#if 0 -/* ======================================================== - タスクひな形 - ======================================================== */ -task_interval tsk_hina( ) -{ - switch ( system_status.pwr_state ) - { - case OFF: - case ON_TRIG: - case ON: - case SLEEP_TRIG: - case SLEEP: - case OFF_TRIG: - default: - } - - return ( 次の起 ・ョまでのシ ・X ・e ・ tick ・・); // 毎 tic 呼ばれることになります -} - - -// ポインタで何かもらうのは危険な気がしてきた -/* このように使う - renge_task_immed_add( タスク関数へのポインタ ); -*/ -task_status_immed tsk_imm_hina( u8 * arg ) -{ - return ( ERR_FINISED ); - // ERR_FINISED タスクを削除 - // ERR_CONTINUE 次になんか割り込みなり、ユーザー操作なり、システムチックが - // 来たときに再度実行 -} - - -#endif - - - /* ======================================================== 逐一起動タスク @@ -267,12 +165,8 @@ task_status_immed do_command0( ) { if( vreg_ctr[VREG_C_COMMAND0] & REG_BIT_RESET1_REQ ) { -#ifdef _PMIC_TWL_ - RESETs_ast; -#else PM_reset_ast( ); RESET2_ast; -#endif FCRAM_RST_ast; wait_ms( 5 ); } @@ -286,12 +180,8 @@ task_status_immed do_command0( ) FCRAM_RST_ast; wait_ms( 5 ); } -#ifdef _PMIC_TWL_ - RESETs_neg; -#else PM_reset_neg( ); RESET2_neg; -#endif FCRAM_RST_neg; } @@ -328,23 +218,3 @@ task_status_immed do_command0( ) -/* ======================================================== - CPUからのスリープ要求 -  ポーリングにしました。 - ======================================================== */ - /* -__interrupt void intp0_slp( ) -{ // SLP - if( SLP_REQ ){ - system_status.pwr_state = SLEEP_TRIG; - }else{ - system_status.pwr_state = ON_TRIG; - if( PM_BL_on() == 0 ){ - renge_task_interval_run_force = 1; - iic_mcu_stop(); - system_status.pwr_state = OFF_TRIG; - } - } - renge_task_interval_run_force = 1; -} - */ diff --git a/trunk/task_sys.c b/trunk/task_sys.c new file mode 100644 index 0000000..51313ea --- /dev/null +++ b/trunk/task_sys.c @@ -0,0 +1,322 @@ +#pragma SFR +#pragma NOP +#pragma HALT +#pragma STOP + +#include "incs.h" + +#include "i2c_twl.h" +#include "i2c_ctr.h" +#include "led.h" +#include "accero.h" +#include "pm.h" +#include "rtc.h" +#include "sw.h" + + + +//========================================================= +static void chk_emergencyExit(); + + + +//========================================================= + + + +/* ======================================================== + マイコン内部で必要なもの +・省電力に入れる +  system_status.pwr_state == OFF_TRIG で、このタスクが呼ばれると、 + 省電力モードに入ります + ======================================================== */ +void tsk_sys( ) +{ + static u8 timeout = 0; + + switch ( system_status.pwr_state ) + { + case OFF: //------------------------------------------------------- + // スイッチ操作などで割り込みが発生し、スリープが解除されるとここに来ます。 + + switch ( system_status.poweron_reason ) + { + default: + // スイッチで電源on + if( ( SW_pow_count != 0 ) || ( SW_wifi_count != 0 ) ) + { + timeout = 0; + } + else + { + timeout += 1; + } + if( timeout > 127 ) + { + system_status.pwr_state = OFF_TRIG; // スイッチはノイズだった。寝る。 + renge_task_interval_run_force = 1; + return; + } + if( ( SW_pow_count < 3 ) && ( SW_wifi_count < 3 ) ) + { + // もう少しスイッチの様子を見る + return; + } + // 電源投入 + system_status.poweron_reason = PWSW; + break; + + case ( RTC_ALARM ): + break; + } + + timeout = 0; + + // 電源投入 + SW_pow_mask = 1; + SW_home_mask = 1; + SW_wifi_mask = 1; + + // 電源投入 // + iic_mcu_start( ); + + // ↓で電池残量ICの起動待ちウェイトなどがあります。 + PM_init( ); // 電池残量ICの設定 + + if( PM_sys_pow_on( ) != ERR_SUCCESS ) + { // 電源起動不可エラー + renge_task_interval_run_force = 1; + iic_mcu_stop( ); + system_status.pwr_state = OFF; + return; + } + + PM_LCD_vcom_set( ); // LCDの対向電圧値など書き込み +#ifdef _PMIC_TWL_ + PM_TEG_LCD_dis( 0 ); +#endif + + if( system_status.poweron_reason == PWSW ) + { + // 電源ボタンでのonの時は、LEDを点灯させる + vreg_ctr[VREG_C_LED_POW] = LED_POW_ILM_AUTO; + } + else + { + // とりあえず、LED消灯状態で起動させる + vreg_ctr[VREG_C_LED_POW] = LED_POW_ILM_OFF; + // todo? + } + + // ここまで来ると、電源投入確定 + + LED_init( ); + + PU7 = 0b00011101; // 4:SW_WIFI 3:SW_PWSW 2:PM_IRQ 0:PM_EXTDC_n + + IIC_ctr_Init( ); // とりあえずはここで初期化 + IIC_twl_Init( ); + RTC_32k_on( ); + + KRM = 0b00000000; + + system_status.poweron_reason = NONE; + system_status.pwr_state = ON_TRIG; + renge_task_interval_run_force = 1; + break; + + case ON_TRIG: //------------------------------------------------------- + MK0 = INT_MSK0_RSV; // 何とかする。ON_TRIGがいらない子の気がして + MK1 = INT_MSK1_RSV; +#ifdef _MCU_BSR_ +// MK2 = ~( INT_MSK2_IIC_TWL | INT_MSK2_WIFI_TX_BSR | INT_MSK2_CODEC_PMIRQ ); +// PMK21 = 0; // wifi 使わない + PMK6 = 0; // pm_irq +#else + MK2L = ~INT_MSK2_WIFI_TX_KE3; +#endif + + system_status.pwr_state = ON; + break; + + case ON: //--------------------------------------------- + // PMICによる強制電源断チェック + // デバッガがreset1をアサートすることもある。そのときは全部リセット + chk_emergencyExit(); + + // SLP監視 + if( SLP_REQ ){ + system_status.pwr_state = SLEEP_TRIG; + renge_task_interval_run_force = 1; + } + break; + + case SLEEP_TRIG: //------------------------------------- + PM_VDD_ecoMode(); + system_status.pwr_state = SLEEP; + break; + + case SLEEP: //------------------------------------------ + chk_emergencyExit(); + // スリープから復帰 + if( !SLP_REQ ){ + PM_VDD_normMode(); + wait_ms( 5 ); // tdly_sw + +#ifdef _MODEL_CTR_ + SLP_ACK = 1; + NOP(); // 適当ウェイト + NOP(); + NOP(); + NOP(); + SLP_ACK = 0; +#endif + + system_status.pwr_state = ON_TRIG; + renge_task_interval_run_force = 1; + } + + break; + + case OFF_TRIG: //--------------------------------------- + LED_stop( ); + IIC_ctr_Stop( ); + IIC_twl_Stop( ); + iic_mcu_stop( ); + + vreg_ctr[VREG_C_IRQ0] = 0; + vreg_ctr[VREG_C_IRQ1] = 0; + vreg_ctr[VREG_C_IRQ2] = 0; + vreg_ctr[VREG_C_IRQ3] = 0; + +// 電源オン条件の割り込みセット +// PWSW KR3 押すとL +// BG24 KR4 +// ふた開け INTP5 閉じるとL +// ACアダプタ INTP4 アダプタありでL +// RTC + +#ifdef _PMIC_TWL_ + PM_TEG_LCD_dis( 1 ); +#endif + PM_sys_pow_off( ); + + // pullup_off(); ↓ + { + PU5 = 0b00000011; // PM_CHG,PM_CHGERR + PU7 = 0b00011001; // SW_WiFi,PWSWI,PM_EXTTDC + } + + KRM = ( KR_SW_POW ); // Mask ではなく、Modeなのだそうだ。紛らわしい + // intp20系は後ほど + MK0 = ~( INT_MSK0_EXTDC ); + MK1 = ~( INT_MSK1_KR | INT_MSK1_RTCALARM | INT_MSK1_RTCINTVAL ); + MK2L = 0b11111111; + + IF0 = 0; + IF1 = 0; + IF2 = 0; + + timeout = 0; + + system_status.pwr_state = BT_CHARGE; + // no break // + + case BT_CHARGE: + if( !PM_EXTDC_n ) + { + // アダプタ有り:充電温度監視 + BT_TEMP_P = 1; + + // 電源on? + if( ( SW_pow_count > 3 ) || ( SW_wifi_count > 3 ) + || ( system_status.poweron_reason == RTC_ALARM ) ) + { + system_status.pwr_state = OFF; // 若干抵抗有るがこれでよい + renge_task_interval_run_force = 1; + KRMK = 1; + return; + } + return; + } + else + { + // 省電力へ移行 + BT_TEMP_P = 0; + while( RWST ) + {; + } + + // 割り込み待ちで寝る // + RTCIMK = 1; + STOP( ); + RTCIMK = 0; + // 起きる // + + // 起きる条件は + // ・KeyReturn割り込み(電源ボたん) + // ・RTCアラーム + // ・アダプタ挿抜 + system_status.pwr_state = OFF; // 若干抵抗有るがこれでよい + renge_task_interval_run_force = 1; + KRMK = 1; + return; + } + + default: + while( 1 ) + { + NOP( ); + // あり得ないステート + } + + } +} + + + +/*******************************************************//** + PMICが電源異常で止めたか確認 + **********************************************************/ +static void chk_emergencyExit(){ + if( !RESET1_n ) + { + if( PM_chk_LDSW( ) == 0 ) + { + // PMICが異常終了判断をした + system_status.pwr_state = OFF_TRIG; + renge_task_interval_run_force = 1; + } + else + { + // デバッガなりがリセットをかけた + vreg_ctr[VREG_C_COMMAND0] |= REG_BIT_RESET1_REQ; + renge_task_immed_add( do_command0 ); + } + } +} + + + + + +/* ======================================================== + CPUからのスリープ要求 +  ポーリングにしました。 + ======================================================== */ + /* +__interrupt void intp0_slp( ) +{ // SLP + if( SLP_REQ ){ + system_status.pwr_state = SLEEP_TRIG; + }else{ + system_status.pwr_state = ON_TRIG; + if( PM_BL_on() == 0 ){ + renge_task_interval_run_force = 1; + iic_mcu_stop(); + system_status.pwr_state = OFF_TRIG; + } + } + renge_task_interval_run_force = 1; +} + */ diff --git a/trunk/user_define.h b/trunk/user_define.h index 90a295c..cddd43b 100644 --- a/trunk/user_define.h +++ b/trunk/user_define.h @@ -74,8 +74,6 @@ #define RESET1_n ( P0.0 ) #define RESET1_ast { P0.0 = 0; PM0.0 = 0; } #define RESET1_neg { PM0.0 = 1; } -#define RESETs_ast { P0 &= ~0x03; PM0 &= ~0x03; } -#define RESETs_neg { PM0.0 = 1; P0.1 = 1; } #define RESET2_ast { P0.1 = 0; } #define RESET2_neg { P0.1 = 1; } @@ -99,7 +97,7 @@ #define SND_DEPOP P7.7 // PM -#define PM_EXTDC P7.0 +#define PM_EXTDC_n P7.0 // INTP7 //#define BT_TEMP P15.0 // ANI8 @@ -107,19 +105,17 @@ // ANI9 #define BT_DET_P P1.6 #define BT_TEMP_P P1.7 + + +// 充電せよ(out) #ifndef _PMIC_CTR_ -#define BT_CHG_EN P4.2 +#define BT_CHG_EN_n P4.2 #else -#define BT_CHG_EN P4.3 +#define BT_CHG_EN_n P4.3 #endif -#define BT_CHG_ERR_n P5.0 +// 充電中(in) #define BT_CHG_n P5.1 -#ifdef _PMIC_TWL_ -#define PM_BT_AUTH P12.1 -#else -#define PM_BT_AUTH P4.2 -#endif #define SW_WIFI_n P7.4 // KR4 @@ -202,27 +198,27 @@ #define KR_SW_WIFI ( 1 << 4 ) -#define INT_MSK0_IIC_M_DMA ( 0b0001000000000000 ) -#define INT_MSK0_SHELL ( 0b0000000010000000 ) -#define INT_MSK0_EXTDC ( 0b0000000001000000 ) -//#define INT_MSK0_SLP ( 0b0000000000000100 ) -//#define INT_MSK0_RSV ( 0b1110111100111011 ) -#define INT_MSK0_RSV ( 0b1110111100111111 ) +#define INT_MSK0_IIC_M_DMA 0b0001000000000000 +#define INT_MSK0_SHELL 0b0000000010000000 +#define INT_MSK0_EXTDC 0b0000000001000000 +//#define INT_MSK0_SLP 0b0000000000000100 ) +//#define INT_MSK0_RSV 0b1110111100111011 ) +#define INT_MSK0_RSV 0b1110111100111111 -#define INT_MSK1_KR ( 0b0000100000000000 ) -#define INT_MSK1_RTCINTVAL ( 0b0000010000000000 ) -#define INT_MSK1_RTCALARM ( 0b0000001000000000 ) -#define INT_MSK1_ADC ( 0b0000000100000000 ) -#define INT_MSK1_IIC_CTR ( 0b0000000000001000 ) -#define INT_MSK1_IIC_MCU ( 0b0000000000000001 ) -#define INT_MSK1_RSV ( 0b1111000011110110 ) +#define INT_MSK1_KR 0b0000100000000000 +#define INT_MSK1_RTCINTVAL 0b0000010000000000 +#define INT_MSK1_RTCALARM 0b0000001000000000 +#define INT_MSK1_ADC 0b0000000100000000 +#define INT_MSK1_IIC_CTR 0b0000000000001000 +#define INT_MSK1_IIC_MCU 0b0000000000000001 +#define INT_MSK1_RSV 0b1111000011110110 -#define INT_MSK2_WIFI_TX_KE3 ( 0b00010000 ) -#define INT_MSK2L_RSV ( 0b11101111 ) +#define INT_MSK2_WIFI_TX_KE3 0b00010000 +#define INT_MSK2L_RSV 0b11101111 #define INT_MSK2_IIC_TWL ( 0b0000000100000000 ) #define INT_MSK2_WIFI_TX_BSR ( 0b0000010000000000 ) #define INT_MSK2_CODEC_PMIRQ ( 0b0000000000001000 ) -#define INT_MSK2_RSV ( 0b1111101111110111 ) +#define INT_MSK2_RSV 0b1111101111110111 #endif diff --git a/trunk/vreg_ctr.c b/trunk/vreg_ctr.c index f1e76d8..16c93ef 100644 --- a/trunk/vreg_ctr.c +++ b/trunk/vreg_ctr.c @@ -220,10 +220,38 @@ void vreg_ctr_write( u8 adrs, u8 data ) // I2C仮想レジスタから読みます。 // 引数 adrs 外から見たときの、アドレス // 戻り xx データ -//  存在しないアドレスにアクセスした場合、戻り値は0x5A u8 vreg_ctr_read( u8 adrs ) { - if( ( VREG_C_RTC_SEC <= adrs ) && ( adrs <= VREG_C_RTC_YEAR ) ) + u8 dat; + + // 割り込みフラグはリードでクリア + if( adrs == VREG_C_IRQ0 ) + { + dat = vreg_ctr[VREG_C_IRQ0]; + vreg_ctr[VREG_C_IRQ0] = 0; + return dat; + } + else if( adrs == VREG_C_IRQ1 ) + { + dat = vreg_ctr[VREG_C_IRQ1]; + vreg_ctr[VREG_C_IRQ1] = 0; + return dat; + } + else if( adrs == VREG_C_IRQ2 ) + { + dat = vreg_ctr[VREG_C_IRQ2]; + vreg_ctr[VREG_C_IRQ2] = 0; + return dat; + } + else if( adrs == VREG_C_IRQ3 ) + { + dat = vreg_ctr[VREG_C_IRQ3]; + vreg_ctr[VREG_C_IRQ3] = 0; + return dat; + } + + // RTCは読み出し途中に繰り上がるのを避けるため + else if( ( VREG_C_RTC_SEC <= adrs ) && ( adrs <= VREG_C_RTC_YEAR ) ) { get_rtc( ); } @@ -236,13 +264,4 @@ u8 vreg_ctr_read( u8 adrs ) // I2C仮想レジスタから読まれて何かするレジスタ void vreg_ctr_after_read( u8 adrs ) { - - // リードがトリガで何かをする↓ - // 割り込みビットのクリア - if( adrs == VREG_C_IRQ3 ) - { - vreg_ctr[VREG_C_IRQ0] = vreg_ctr[VREG_C_IRQ1] = - vreg_ctr[VREG_C_IRQ2] = vreg_ctr[VREG_C_IRQ3] = 0; - } - return; } diff --git a/trunk/vreg_ctr.h b/trunk/vreg_ctr.h index 285650c..88d79be 100644 --- a/trunk/vreg_ctr.h +++ b/trunk/vreg_ctr.h @@ -56,6 +56,9 @@ #define REG_BIT_POW_SUPPLY ( 1 << 3 ) #define REG_BIT_ST_SHELL_CLOSED ( 1 << 1 ) +// VREG_C_STATUS_1 +#define REG_BIT_GASGAUGE_ERR ( 1 << 0 ) + // VREG_C_COMMAND0 #define REG_BIT_CMD_LCD_ON ( 1 << 7 ) @@ -152,7 +155,7 @@ enum VREG_C VREG_C_BT_REMAIN, VREG_C_BT_TEMP, - VREG_C_STATUS_X = 0x0E, + VREG_C_STATUS_1 = 0x0E, VREG_C_STATUS = 0x0F, VREG_C_IRQ0 = 0x10, diff --git a/trunk/vreg_twl.h b/trunk/vreg_twl.h index aec11ea..007acc7 100644 --- a/trunk/vreg_twl.h +++ b/trunk/vreg_twl.h @@ -78,13 +78,13 @@ enum REG_TWL_ADRS_INT // REG_TWL_INT_ADRS_ADC_CALIB_VALUE, // REG_TWL_INT_ADRS_POWER_LED, REG_TWL_INT_ADRS_TEMP0, // 0x70 - 0x77 -// REG_TWL_INT_ADRS_TEMP1, -// REG_TWL_INT_ADRS_TEMP2, -// REG_TWL_INT_ADRS_TEMP3, -// REG_TWL_INT_ADRS_TEMP4, -// REG_TWL_INT_ADRS_TEMP5, -// REG_TWL_INT_ADRS_TEMP6, -// REG_TWL_INT_ADRS_TEMP7, + REG_TWL_INT_ADRS_TEMP1, + REG_TWL_INT_ADRS_TEMP2, + REG_TWL_INT_ADRS_TEMP3, + REG_TWL_INT_ADRS_TEMP4, + REG_TWL_INT_ADRS_TEMP5, + REG_TWL_INT_ADRS_TEMP6, + REG_TWL_INT_ADRS_TEMP7, // REG_TWL_INT_ADRS_TIME_PWSW_DELAY, // REG_TWL_INT_ADRS_TIME_PWSW_THRESHOLD _REG_TWL_INT_ADRS_ENDMARK, diff --git a/trunk/yav_mcu_bsr.plg b/trunk/yav_mcu_bsr.plg index 018859e..4097ad1 100644 --- a/trunk/yav_mcu_bsr.plg +++ b/trunk/yav_mcu_bsr.plg @@ -1,19 +1,25 @@ C:\WINDOWS\system32\cmd.exe /c echo touch magic.c touch magic.c -"C:\Program Files\NEC Electronics Tools\CC78K0R\W2.10\bin\cc78k0r.exe" -c9F0104 -y"C:\Program Files\NEC Electronics Tools\DEV" -_msgoff -irenge -i"C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r" -ms -qvjl1wt -sainter_asm -zp -no pm.c -pm.c(210) : CC78K0R warning W0745: Expected function prototype -pm.c(214) : CC78K0R warning W0401: Conversion may lose significant digits -pm.c(218) : CC78K0R warning W0401: Conversion may lose significant digits -pm.c(223) : CC78K0R warning W0510: Pointer mismatch in function 'iic_mcu_write' -pm.c(617) : CC78K0R warning W0401: Conversion may lose significant digits -Compilation complete, 0 error(s) and 5 warning(s) found. -"C:\Program Files\NEC Electronics Tools\RA78K0R\W1.31\bin\ra78k0r.exe" -c9F0104 -y"C:\Program Files\NEC Electronics Tools\DEV" -_msgoff inter_asm\pm.asm +"C:\Program Files\NEC Electronics Tools\CC78K0R\W2.10\bin\cc78k0r.exe" -c9F0104 -y"C:\Program Files\NEC Electronics Tools\DEV" -_msgoff -irenge -i"C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r" -ms -qvjl1wt -sainter_asm -zp -no i2c_ctr.c +Compilation complete, 0 error(s) and 0 warning(s) found. +"C:\Program Files\NEC Electronics Tools\RA78K0R\W1.31\bin\ra78k0r.exe" -c9F0104 -y"C:\Program Files\NEC Electronics Tools\DEV" -_msgoff inter_asm\i2c_ctr.asm Assembly complete, 0 error(s) and 0 warning(s) found. -"C:\Program Files\NEC Electronics Tools\RA78K0R\W1.31\bin\lk78k0r.exe" -y"C:\Program Files\NEC Electronics Tools\DEV" -_msgoff -obsr.lmf "..\..\Program Files\NEC Electronics Tools\CC78K0R\W2.10\lib78k0r\s0rm.rel" -go85h,0FC00h,1024 -gi0FFFFFFFFFFFFFFFFFFFFh -pbsr_k0r.map -nkd -kp -gb7EFBFFh -b"C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\lib78k0r\fsl.lib" -bcl0rdm.lib -bcl0rm.lib -bcl0rmf.lib -i"C:\Program Files\NEC Electronics Tools\CC78K0R\W2.10\lib78k0r" -dbsr_mcu.dr -s -w0 loader.rel pm.rel i2c_ctr.rel main.rel magic.rel WDT.rel i2c_mcu.rel i2c_twl.rel ini_VECT.rel led.rel rtc.rel vreg_ctr.rel vreg_twl.rel tasks.rel adc.rel renge.rel tasks_sys.rel accero.rel self_flash.rel reboot.rel +"C:\Program Files\NEC Electronics Tools\CC78K0R\W2.10\bin\cc78k0r.exe" -c9F0104 -y"C:\Program Files\NEC Electronics Tools\DEV" -_msgoff -irenge -i"C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r" -ms -qvjl1wt -sainter_asm -zp -no vreg_ctr.c +vreg_ctr.c(59) : CC78K0R warning W0401: Conversion may lose significant digits +vreg_ctr.c(102) : CC78K0R warning W0401: Conversion may lose significant digits +vreg_ctr.c(103) : CC78K0R warning W0401: Conversion may lose significant digits +vreg_ctr.c(105) : CC78K0R warning W0401: Conversion may lose significant digits +vreg_ctr.c(107) : CC78K0R warning W0401: Conversion may lose significant digits +vreg_ctr.c(108) : CC78K0R warning W0401: Conversion may lose significant digits +vreg_ctr.c(110) : CC78K0R warning W0401: Conversion may lose significant digits +Compilation complete, 0 error(s) and 7 warning(s) found. +"C:\Program Files\NEC Electronics Tools\RA78K0R\W1.31\bin\ra78k0r.exe" -c9F0104 -y"C:\Program Files\NEC Electronics Tools\DEV" -_msgoff inter_asm\vreg_ctr.asm +Assembly complete, 0 error(s) and 0 warning(s) found. +"C:\Program Files\NEC Electronics Tools\RA78K0R\W1.31\bin\lk78k0r.exe" -y"C:\Program Files\NEC Electronics Tools\DEV" -_msgoff -obsr.lmf "..\..\Program Files\NEC Electronics Tools\CC78K0R\W2.10\lib78k0r\s0rm.rel" -go85h,0FC00h,1024 -gi0FFFFFFFFFFFFFFFFFFFFh -pbsr_k0r.map -nkd -kp -gb7EFBFFh -b"C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\lib78k0r\fsl.lib" -bcl0rdm.lib -bcl0rm.lib -bcl0rmf.lib -i"C:\Program Files\NEC Electronics Tools\CC78K0R\W2.10\lib78k0r" -dbsr_mcu.dr -s -w0 loader.rel pm.rel i2c_ctr.rel main.rel magic.rel WDT.rel i2c_mcu.rel i2c_twl.rel ini_VECT.rel led.rel rtc.rel vreg_ctr.rel vreg_twl.rel adc.rel renge.rel accero.rel self_flash.rel reboot.rel sw.rel task_debug.rel task_misc.rel task_sys.rel Link complete, 0 error(s) and 0 warning(s) found. "C:\Program Files\NEC Electronics Tools\RA78K0R\W1.31\bin\oc78k0r.exe" -y"C:\Program Files\NEC Electronics Tools\DEV" -_msgoff -o.\bsr.hex -nu -ki bsr.lmf Object Conversion Complete, 0 error(s) and 0 warning(s) found. C:\WINDOWS\system32\cmd.exe /c ruby C:\Cygwin\home\fujita_ryohei\ctr\nec_s_2_bsrbin.rb bsr.hex C:/Cygwin/home/fujita_ryohei/ctr/nec_s_2_bsrbin.rb:2: warning: variable $KCODE is no longer effective; ignored -Build Total error(s) : 0 Total warning(s) : 5 +Build Total error(s) : 0 Total warning(s) : 7 diff --git a/trunk/yav_mcu_bsr.pri b/trunk/yav_mcu_bsr.pri index 9610659..dce639d 100644 --- a/trunk/yav_mcu_bsr.pri +++ b/trunk/yav_mcu_bsr.pri @@ -78,10 +78,10 @@ Symbol Type=OFF Language=C Kanji=SJIS [Source] -Geometry=104, 38, 981, 857 +Geometry=286, 184, 981, 857 Window=Normal -DispStart=264 -CaretPos=265,0 +DispStart=40 +CaretPos=86,0 Mode=Normal DispFile= Address1= @@ -140,10 +140,10 @@ SaveStart= SaveEnd= Accumulative=ON [Assemble] -Geometry=59, 244, 600, 738 +Geometry=66, 131, 600, 738 Window=Normal -DispStart=14961 -CaretPos=14961,27 +DispStart=10043 +CaretPos=10043,27 Address1= Address2= Address3= @@ -251,7 +251,7 @@ Destination=0 [I/O Port] Line=0 [Stack] -Geometry=839, 787, 400, 300 +Geometry=906, 793, 400, 300 Window=Normal Boundary=13762687 Mode=Proper @@ -876,11 +876,11 @@ Register Bank=0 RP0=1 RP1=1 RP2=1 -RP3=3 +RP3=1 PC=1 SP=1 PSW=1 -ES=3 +ES=1 CS=1 [Event Manager] Geometry=0, 0, 0, 0 @@ -960,38 +960,52 @@ Count=0 Geometry=1138, 6, 440, 688 Window=Normal Boundary=13762700 -0=.hist_bt_temp,D,N,A,+,1 -1=.ADCRH,P,S,A,+,1 -2=.vreg_ctr,P,N,A,+,1 -3=.vreg_ctr[11],D,N,A,+,1 -4=.skip,P,N,A,+,1 -5=.temperature,P,N,A,+,1 -6=.raw_adc_temperature,P,N,A,+,1 -7=.system_status.pwr_state,P,N,A,+,1 -Line=8 +0=.mk2h,P,S,A,+,1 +1=.mk2l,P,S,A,+,1 +2=.MK1,P,S,A,+,1 +3=.MK2,P,S,A,+,1 +4=.IICAMK1,P,S,A,+,1 +5=.IICAIF1,P,S,A,+,1 +6=.IICAMK0,P,S,A,+,1 +7=.IICAIF0,P,S,A,+,1 +8=.tasks,P,N,A,+,1 +9=.RTCIIF,P,S,A,+,1 +10=.RTCIMK,P,S,A,+,1 +11=.task_id,P,N,A,+,1 +12=.system_status.poweron_reason,P,N,A,+,1 +13=.ADCRH,P,S,A,+,1 +14=.hist_bt_temp,P,N,A,+,1 +15=.raw_adc_temperature,P,N,A,+,1 +16=.system_status.pwr_state,P,N,A,+,1 +17=.vreg_ctr[11],D,N,A,+,1 +18=.newrcomp,D,N,A,+,1 +19=.temperature,P,N,A,+,1 +20=.temp_co_up,P,N,A,+,1 +21=.temp_co_dn,P,N,A,+,1 +Line=22 [Quick Watch] -0=pm12,P,A,1 -1=vreg_twl,P,A,1 -2=PMK21,P,A,1 -3=IFP21,P,A,1 -4=PIF21,P,A,1 -5=skip,P,A,1 -6=vreg_ctr[11],P,A,1 -7=ADCRH,P,A,1 -8=hist_tune,P,A,1 -9=hist_bt_temp,P,A,1 -10=vreg_ctr,P,A,1 -11=t1,P,A,1 -12=t2,P,A,1 -13=t3,P,A,1 -14=raw_adc_temperature,P,A,1 -15=temperature,P,A,1 +0=PM7.3,P,A,1 +1=IMMED_RSV_TASKS_NUM,P,A,1 +2=task_id,P,A,1 +3=tasks,P,A,1 +4=RTCIMK,P,A,1 +5=RTCIIF,P,A,1 +6=IICA0IF,P,A,1 +7=IICAIF0,P,A,1 +8=IICAIF1,P,A,1 +9=IICAMK1,P,A,1 +10=IICAMK0,P,A,1 +11=mk2,P,A,1 +12=mk2l,P,A,1 +13=mk2h,P,A,1 +14=MK2,P,A,1 +15=MK1,P,A,1 [Software Break] -Geometry=51, 459, 500, 200 +Geometry=14, 896, 500, 200 Window=Normal Width=150 30 200 100 -Name0=Swb00001 -Address0=pm.c#_PM_bt_temp_update+0x3d +Name0=Swb00002 +Address0=i2c_ctr.c#_int_iic_ctr+0x17 Window0=ASM Status0=ON Count=1 diff --git a/trunk/yav_mcu_bsr.prj b/trunk/yav_mcu_bsr.prj index 252cf8a..a639f85 100644 --- a/trunk/yav_mcu_bsr.prj +++ b/trunk/yav_mcu_bsr.prj @@ -514,61 +514,6 @@ DefaultMode2=1 DefaultMode3=1 DefaultMode4=1 DefaultMode5=1 -[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=ini_VECT.c -Source10=led.c -Source11=rtc.c -Source12=vreg_ctr.c -Source13=vreg_twl.c -Source14=tasks.c -Source15=adc.c -Source16=renge\renge.c -Source17=tasks_sys.c -Source18=accero.c -Source19=self_flash.c -Source20=reboot.c -[IncFile] -Include1=incs_loader.h -Include2=jhl_defs.h -Include3=user_define.h -Include4=config.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=loader.h -Include11=i2c_mcu.h -Include12=WDT.h -Include13=fsl.h -Include14=fsl_user.h -Include15=i2c_ctr.h -Include16=pm.h -Include17=rtc.h -Include18=adc.h -Include19=led.h -Include20=incs.h -Include21=vreg_twl.h -Include22=accero.h -Include23=i2c_twl_defs.h -Include24=renge\renge_task_intval.h -Include25=i2c_twl.h -Include26=..\..\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r\fsl.h -Include27=..\..\Program Files\NEC Electronics Tools\CC78K0R\W2.10\inc78k0r\math.h -Include28=reboot.h -[ToolSet] -ToolSetName=(変更)78K0R Software Package V1.10 -Tool1=CC78K0R|W2.10 -Tool2=RA78K0R|W1.31 -Tool3=ID78K0R-QB|V3.60 [Options.CC78K0R 0] Version=210 Include0=renge,C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r @@ -1035,3 +980,61 @@ 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=ini_VECT.c +Source10=led.c +Source11=rtc.c +Source12=vreg_ctr.c +Source13=vreg_twl.c +Source14=adc.c +Source15=renge\renge.c +Source16=accero.c +Source17=self_flash.c +Source18=reboot.c +Source19=sw.c +Source20=task_debug.c +Source21=task_misc.c +Source22=task_sys.c +[IncFile] +Include1=incs_loader.h +Include2=jhl_defs.h +Include3=user_define.h +Include4=config.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=loader.h +Include11=i2c_mcu.h +Include12=WDT.h +Include13=fsl.h +Include14=fsl_user.h +Include15=i2c_ctr.h +Include16=pm.h +Include17=rtc.h +Include18=adc.h +Include19=led.h +Include20=incs.h +Include21=vreg_twl.h +Include22=accero.h +Include23=i2c_twl_defs.h +Include24=renge\renge_task_intval.h +Include25=i2c_twl.h +Include26=..\..\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r\fsl.h +Include27=..\..\Program Files\NEC Electronics Tools\CC78K0R\W2.10\inc78k0r\math.h +Include28=reboot.h +Include29=sw.h +[ToolSet] +ToolSetName=(変更)78K0R Software Package V1.10 +Tool1=CC78K0R|W2.10 +Tool2=RA78K0R|W1.31 +Tool3=ID78K0R-QB|V3.60 diff --git a/trunk/yav_mcu_bsr.prk b/trunk/yav_mcu_bsr.prk index c5d0d5b..6773aeb 100644 --- a/trunk/yav_mcu_bsr.prk +++ b/trunk/yav_mcu_bsr.prk @@ -15,17 +15,17 @@ OpenFile8=loader.c,0,255,224,1438,850,14,85,0,0 OpenFile9=main.c,0,124,87,1368,844,0,45,0,0 OpenFile10=vreg_ctr.c,0,345,273,1060,932,14,23,0,0 OpenFile11=reboot.c,0,110,110,1354,867,5,14,14,0 -OpenFile12=config.h,0,374,323,1618,1080,15,18,22,0 -OpenFile13=vreg_twl.c,0,314,110,1558,867,74,90,75,0 -OpenFile14=renge\renge.c,0,154,154,1398,911,0,264,0,0 -OpenFile15=adc.c,0,275,163,1065,610,0,145,0,0 -OpenFile16=led.c,0,286,286,1469,912,12,323,0,0 -OpenFile17=ProjectWindow +OpenFile12=vreg_twl.c,0,314,110,1558,867,74,90,75,0 +OpenFile13=renge\renge.c,0,154,154,1398,911,0,264,0,0 +OpenFile14=adc.c,0,275,163,1065,610,0,145,0,0 +OpenFile15=led.c,0,286,286,1469,912,45,278,46,0 +OpenFile16=pm.c,0,457,302,1701,1059,4,496,14,0 +OpenFile17=i2c_ctr.c,0,329,42,1171,976,0,56,0,0 +OpenFile18=ProjectWindow PrjPos=0,2,754,3,253 -OpenFile18=i2c_ctr.c,0,329,42,1171,976,9,101,9,0 -OpenFile19=pm.c,0,457,302,1701,1059,0,216,0,0 -OpenFile20=OutputWindow +OpenFile19=OutputWindow OutputPos=0,360,1128,478,1503 +OpenFile20=config.h,0,263,342,1507,1099,15,15,15,0 ActivePRJ=yav_mcu_bsr.prj [ProjectWindow] ProjectWindowDispType=0 diff --git a/trunk/yav_mcu_bsr.sdb b/trunk/yav_mcu_bsr.sdb index 74cf1dd..959814e 100644 --- a/trunk/yav_mcu_bsr.sdb +++ b/trunk/yav_mcu_bsr.sdb @@ -1,7 +1,7 @@ [SdbInfo] Ver=5 [loader.c] -T=4ae7c536 +T=4af2385f 1=incs_loader.h 2=fsl.h 3=fsl_user.h @@ -11,16 +11,16 @@ T=4ae7c536 7=rtc.h 8=reboot.h [pm.c] -T=4aee97ce +T=4af37d73 1=incs.h 2=adc.h 3=led.h 4=pm.h [i2c_ctr.c] -T=4ae78e76 +T=4af2327f 1=incs.h [main.c] -T=4aee391d +T=4af281ee 1=incs.h 2=WDT.h 3=rtc.h @@ -34,7 +34,7 @@ T=4ad3e9ff T=4aca8ef0 1=incs_loader.h [i2c_mcu.c] -T=4aee94fe +T=4af25f2b 1=incs.h 2=i2c_mcu.h [i2c_twl.c] @@ -45,11 +45,11 @@ T=4add157f T=4ae986c0 1=config.h [led.c] -T=4ae991e4 +T=4af37126 1=incs.h 2=led.h [rtc.c] -T=4adee281 +T=4af0e439 1=incs.h [vreg_ctr.c] T=4ae6477f @@ -60,45 +60,30 @@ T=4ae6477f 5=accero.h 6=pm.h [vreg_twl.c] -T=4ae916d9 +T=4af37c2b 1=incs.h 2=jhl_defs.h 3=vreg_twl.h 4=vreg_ctr.h -[tasks.c] -T=4aee6c62 -1=incs.h -2=renge\renge.h -3=pm.h -4=accero.h [adc.c] -T=4aea78e3 +T=4af27e29 1=incs.h 2=adc.h 3=pm.h 4=led.h [renge\renge.c] -T=4ae94be1 +T=4af291b9 1=renge\renge_defs.h 2=renge\renge_task_intval.h 3=renge\renge_task_immediate.h 4=WDT.h 5=bsr_system.h -[tasks_sys.c] -T=4aea41aa -1=incs.h -2=i2c_twl.h -3=i2c_ctr.h -4=led.h -5=accero.h -6=pm.h -7=rtc.h [accero.c] T=4ae66d1d 1=incs.h 2=..\..\Program Files\NEC Electronics Tools\CC78K0R\W2.10\inc78k0r\math.h [self_flash.c] -T=4ae67264 +T=4af2385f 1=incs_loader.h 2=..\..\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r\fsl.h 3=fsl_user.h @@ -106,6 +91,36 @@ T=4ae67264 [reboot.c] T=4ae01bca 1=incs_loader.h +[sw.c] +T=4af283ee +1=incs.h +2=i2c_twl.h +3=i2c_ctr.h +4=led.h +5=accero.h +6=pm.h +7=rtc.h +[task_debug.c] +T=4af37091 +1=incs.h +2=renge\renge.h +3=pm.h +[task_misc.c] +T=4af23bcc +1=incs.h +2=renge\renge.h +3=pm.h +4=accero.h +[task_sys.c] +T=4af3afcc +1=incs.h +2=i2c_twl.h +3=i2c_ctr.h +4=led.h +5=accero.h +6=pm.h +7=rtc.h +8=sw.h [incs_loader.h] T=4aca8c17 1=jhl_defs.h @@ -117,14 +132,14 @@ T=4aca8c17 7=i2c_mcu.h 8=WDT.h [jhl_defs.h] -T=4ae647cd +T=4af224f5 [user_define.h] -T=4ae8dfa1 +T=4af3ad8a 1=config.h [config.h] -T=4aee58b4 +T=4af37e8a [bsr_system.h] -T=4aca8c17 +T=4af27e29 [renge\renge.h] T=4abc82ef 1=renge\renge_defs.h @@ -135,13 +150,13 @@ T=4ac96e5c T=4ad68780 1=renge\renge_defs.h [vreg_ctr.h] -T=4aee86c8 +T=4af37075 1=config.h [loader.h] T=4aca8c17 1=jhl_defs.h [i2c_mcu.h] -T=4aee9168 +T=4af25faf [WDT.h] T=4aca8c17 [fsl.h] @@ -151,7 +166,7 @@ T=4aca8c17 [i2c_ctr.h] T=4aca8c17 [pm.h] -T=4aee8ed6 +T=4af23bbb [rtc.h] T=4aca8c17 [adc.h] @@ -170,7 +185,7 @@ T=4ae508d8 7=i2c_mcu.h 8=rtc.h [vreg_twl.h] -T=4ae8ea1f +T=4af37c30 [accero.h] T=4aca8c17 1=jhl_defs.h @@ -187,3 +202,5 @@ T=49a3bd4e T=45f12258 [reboot.h] T=4ae008e4 +[sw.h] +T=4af2326b