diff --git a/trunk/WDT.c b/trunk/WDT.c index 965b09c..436a51c 100644 --- a/trunk/WDT.c +++ b/trunk/WDT.c @@ -1,5 +1,2 @@ -#pragma sfr - - #include "incs_loader.h" diff --git a/trunk/accero.c b/trunk/accero.c index a5a3353..b8108a3 100644 --- a/trunk/accero.c +++ b/trunk/accero.c @@ -5,6 +5,8 @@ ・加速度センサ割り込みからタスクを登録して下さい。(I2Cの競合回避などがあるので) ======================================================== */ +#ifndef _WIN32 + #pragma SFR #pragma NOP #pragma HALT @@ -14,11 +16,13 @@ #pragma MUL #pragma BCD - +#endif #include "config.h" -#ifdef _MCU_BSR_ +#ifndef _WIN32 + #pragma interrupt INTP23 intp23_ACC_ready RB3 // 加速度センサ、データ準備完了 + #endif @@ -65,7 +69,7 @@ task_status tsk_soft_int( ); - +#define ACC_RAW_DATA_SIZE 6 /* ========================================================  ・割り込みを確認してデータを吸い上げ、レジスタに書き出します ・本当であればコールバック関数を登録しておけばいいじゃんとなるのですが、 @@ -75,12 +79,13 @@ task_status tsk_soft_int( ); task_status_immed tski_cbk_accero( ) { // (疑似)isrから登録されます static u8 err_count; + u8 acc_dat_buff[ ACC_RAW_DATA_SIZE ]; // 加速度センサデータレジスタへの反映 - if( iic_mcu_read( IIC_SLA_ACCEL, ( ACC_REG_X | 0x80 ), 6, &vreg_ctr[VREG_C_ACC_XL] ) + if( iic_mcu_read( IIC_SLA_ACCEL, ( ACC_REG_X | 0x80 ), ACC_RAW_DATA_SIZE, acc_dat_buff ) != ERR_SUCCESS ) { - err_count += 1; + err_count ++; if( err_count < 8 ) { // リトライ @@ -97,6 +102,8 @@ task_status_immed tski_cbk_accero( ) } else { + memcpy( &vreg_ctr[VREG_C_ACC_XL], acc_dat_buff, ACC_RAW_DATA_SIZE ); + err_count = 0; // 正常時パス // // 加速度更新&割り込み @@ -108,8 +115,8 @@ task_status_immed tski_cbk_accero( ) // ゴミデータのカラ読み if( ACC_VALID ) { - u8 temp[6]; - iic_mcu_read( IIC_SLA_ACCEL, ( ACC_REG_X | 0x80 ), 6, temp ); + u8 temp[ACC_RAW_DATA_SIZE]; + iic_mcu_read( IIC_SLA_ACCEL, ( ACC_REG_X | 0x80 ), ACC_RAW_DATA_SIZE, temp ); } } if(( system_status.pwr_state != ON_CHECK ) @@ -167,58 +174,74 @@ task_status_immed tski_acc_write( ) ========================================================*/ task_status_immed tski_acc_hosu_set( ) { - u8 str_send_buf[4]; - iic_mcu_read_a_byte( IIC_SLA_ACCEL, ACC_REG_WHOAMI ); - if( iic_mcu_result == ERR_NOSLAVE ) - { - vreg_ctr[ VREG_C_STATUS_1 ] |= REG_BIT_ACCERO_ERR; - return ( ERR_FINISED ); // とりあえず、タスクは削除しなくてはならない - }else{ - vreg_ctr[ VREG_C_STATUS_1 ] &= ~REG_BIT_ACCERO_ERR; - } - - str_send_buf[1] = 0x00; // ctrl2 HPF:normal, filterd, HPF for IRQ : dis/dis, HPF coeff:norm -/* -if( system_status.model == MODEL_TS_BOARD ) - { - // TS Final SoC - str_send_buf[2] = 0x02; // 3 IRQ pol :Active HI, Drive:Pushpull, - } - else - { - // 実機&派生種、白箱 - str_send_buf[2] = 0x10; // 3 IRQ pol :Active HI, Drive:Pushpull, - } -*/ - str_send_buf[2] = 0b00010010; // 面倒なので両方...。 - str_send_buf[3] = 0x80; // ctrl3 block update:enable, MSB first, scale: +-2G(default), selftest: dis +// iic_mcu_read_a_byte( IIC_SLA_ACCEL, ACC_REG_WHOAMI ); // スタックが足りないので展開… +// if( iic_mcu_result == ERR_NOSLAVE ) + { + u8 dummy; - if( ( vreg_ctr[VREG_C_ACC_CONFIG] & - ( VREG_BITMASK_ACC_CONF_HOSU | VREG_BITMASK_ACC_CONF_ACQ ) ) == 0 ) - { - PMK23 = 1; - // 完全停止 - str_send_buf[0] = - ( ACC_BITS_PM_PDN << ACC_bP_PM0 | 0 << ACC_bP_DR0 | ACC_BITS_ALL_AXIS_ON ); - } - else - { - PMK23 = 0; - // 100Hz 自動取り込み - str_send_buf[0] = - ( ACC_BITS_PM_NORM << ACC_bP_PM0 - | ACC_BITS_DR_100Hz << ACC_bP_DR0 - | ACC_BITS_ALL_AXIS_ON ); - } - iic_mcu_write( IIC_SLA_ACCEL, ( ACC_REG_CTRL1 | 0x80 ), 4, str_send_buf ); + if( iic_mcu_read( IIC_SLA_ACCEL, ACC_REG_WHOAMI, 1, &dummy ) == ERR_NOSLAVE ) + { + vreg_ctr[ VREG_C_STATUS_1 ] |= REG_BIT_ACCERO_ERR; + return ( ERR_FINISED ); // とりあえず、タスクは削除しなくてはならない + // おしまい + }else{ + vreg_ctr[ VREG_C_STATUS_1 ] &= ~REG_BIT_ACCERO_ERR; + } + } + + { + u8 str_send_buf[4]; + + str_send_buf[1] = 0x00; // ctrl2 HPF:normal, filterd, HPF for IRQ : dis/dis, HPF coeff:norm + /* + if( system_status.model == MODEL_TS_BOARD ) + { + // TS Final SoC + str_send_buf[2] = 0x02; // 3 IRQ pol :Active HI, Drive:Pushpull, + } + else + { + // 実機&派生種、白箱 + str_send_buf[2] = 0x10; // 3 IRQ pol :Active HI, Drive:Pushpull, + } + */ + if( system_status.model == MODEL_TS_BOARD ) + { + str_send_buf[2] = bits8(0,0,0,0, 0,0,1,0); // ピン不足のため、ちゃんと分ける + } + else + { + str_send_buf[2] = bits8(0,0,0,1, 0,0,0,0); + } + str_send_buf[3] = 0x80; // ctrl3 block update:enable, MSB first, scale: +-2G(default), selftest: dis + + if( ( vreg_ctr[VREG_C_ACC_CONFIG] & + ( VREG_BITMASK_ACC_CONF_HOSU | VREG_BITMASK_ACC_CONF_ACQ ) ) == 0 ) + { + PMK23 = 1; + // 完全停止 + str_send_buf[0] = + ( ACC_BITS_PM_PDN << ACC_bP_PM0 | 0 << ACC_bP_DR0 | ACC_BITS_ALL_AXIS_ON ); + } + else + { + PMK23 = 0; + // 100Hz 自動取り込み + str_send_buf[0] = + ( ACC_BITS_PM_NORM << ACC_bP_PM0 + | ACC_BITS_DR_100Hz << ACC_bP_DR0 + | ACC_BITS_ALL_AXIS_ON ); + } + iic_mcu_write( IIC_SLA_ACCEL, ( ACC_REG_CTRL1 | 0x80 ), 4, str_send_buf ); + } // カラ読み if( ACC_VALID ) { if( system_status.pwr_state == ON ) { - u8 temp[6]; + u8 temp[ACC_RAW_DATA_SIZE]; iic_mcu_read( IIC_SLA_ACCEL, ( ACC_REG_X | 0x80 ), 6, temp ); } } diff --git a/trunk/adc.c b/trunk/adc.c index 99c093f..c72471e 100644 --- a/trunk/adc.c +++ b/trunk/adc.c @@ -11,25 +11,24 @@ #include "vreg_twl.h" -#define _10db_ -#include "voltable.h" + +// ===================================================== // +static bit adc_updated; +static bit vol_changed_by_ctr; +bit vol_changed_by_twl; +static u8 vol_old; + +static u8 adc_raw_vol; +static u8 adc_raw_dep; + +u8 vol_polling; +u8 vol_level_twl; + +extern const u8 slider_to_codec[]; + // ===================================================== // -bit adc_updated; -bit vol_changed_by_ctr; -bit vol_changed_by_twl; -u8 vol_old; - - -u8 adc_raw_vol; -u8 adc_raw_dep; - -u8 vol_polling; - -u8 vol_level_twl; - - typedef struct filter_work { u8* value_used; @@ -39,14 +38,14 @@ typedef struct filter_work }filter_work; -filter_work work_vr_3d = { +static const filter_work work_vr_3d = { &vreg_ctr[ VREG_C_3D ] }; -u8 vol_data_ctr; -u8 vol_data_ctr_tmp; -filter_work work_vr_vol = { +static u8 vol_data_ctr; +static u8 vol_data_ctr_tmp; +static const filter_work work_vr_vol = { &vol_data_ctr_tmp }; @@ -56,7 +55,7 @@ filter_work work_vr_vol = { twl内の32 -> 8 テーブル 0〜1,〜4,〜8,〜13,〜18,〜23,〜28,31 */ -const u8 TWL_VOL_BOUNDARY[] = { +static const u8 TWL_VOL_BOUNDARY[] = { 1, 4, 8, 13, 18, 23, 28, 31 }; @@ -64,6 +63,7 @@ const u8 TWL_VOL_BOUNDARY[] = { extern void nop8(); static void adc_filter( u8 new_val, filter_work* work ); static u8 adc_scaling( u8 ); +static void update_twl_vol( u8 sent_index ); @@ -85,10 +85,6 @@ static u8 adc_scaling( u8 ); ======================================================== */ void tsk_adc( ) { - static u8 old_3D; - static u8 sndvol_codec; - static u8 bt_temp_old; - if( adc_updated ) { adc_updated = false; @@ -120,18 +116,18 @@ void tsk_adc( ) if( vol_polling < 5 ) { renge_task_immed_add( tski_vol_update ); - vol_polling = 200 / SYS_INTERVAL_TICK + 5; // 5回/sec + vol_polling = (u8)(200 / SYS_INTERVAL_TICK) + 5; // 5回/sec } - vol_polling -= 1; + vol_polling --; ADCEN = 1; - ADM = 0b00001011; // セレクトモード、昇圧、fCLK/6 ///ここから ↓ + ADM = bits8(0,0,0,0, 1,0,1,1); // セレクトモード、昇圧、fCLK/6 // ここから ↓ ADPC = 0x06; // ADCポートのセレクト ADS = ADC_SEL_3D; nop8(); - ADCS = 1; // AD開始。 /// ここまで ↑ までに1us=8clk以上開ける + ADCS = 1; // AD開始。 // ここまで ↑ までに1us=8clk以上開ける ADIF = 0; ADMK = 0; @@ -156,8 +152,7 @@ void vol_reset() task_status_immed tski_vol_update() { static u8 sent_index, sent_index_twl; - static u8 sent_data; - static bit last_modifyer_is_twl; // 0 = ctr + static bit last_modifyer_is_twl; // false = ctr if( !( system_status.pwr_state == ON ) || ( system_status.pwr_state == SLEEP )){ @@ -165,15 +160,7 @@ task_status_immed tski_vol_update() } // どの音量にするの? // - if( vreg_ctr[ VREG_C_VOL_OPTION ] & ( REG_BIT_VOL_UPDATE_TO_SLIDER ) ) - { - // debug // - NOP(); - // 最優先 スライダに上書き - sent_index = vol_data_ctr; - vreg_ctr[ VREG_C_VOL_OPTION ] &= ~REG_BIT_VOL_UPDATE_TO_SLIDER; - } - else if( vol_changed_by_ctr ) + if( vol_changed_by_ctr ) { // スライダ vol_changed_by_ctr = false; @@ -211,6 +198,21 @@ task_status_immed tski_vol_update() // レジスタの更新 // vreg_ctr[ VREG_C_SND_VOL ] = sent_index; + + // twl側更新 + update_twl_vol( sent_index ); + + // codecに伝える + /// 同値でも書く + iic_mcu_write_a_byte_codec( CODEC_REG_VOL, slider_to_codec[ sent_index ] ); + + // set_irq( VREG_C_IRQ0, REG_BIT_VR_SNDVOL_CHANGE ); // 割り込み廃止 + return( ERR_FINISED ); +} + + +static void update_twl_vol( u8 sent_index ) +{ // スケーリング if( sent_index == 0 ) { @@ -218,7 +220,7 @@ task_status_immed tski_vol_update() } else if( sent_index <= 4 ) { - vreg_twl[ REG_TWL_INT_ADRS_VOL ] = 2; + vreg_twl[ REG_TWL_INT_ADRS_VOL ] = 2; // 1はミッシングで正解 } else { @@ -248,52 +250,6 @@ task_status_immed tski_vol_update() vol_level_twl = new_level; } } - - - // CODECに書きに行く? - if( vreg_ctr[ VREG_C_VOL_OPTION ] & REG_BIT_VOL_BY_SPI ) - { - return( ERR_FINISED ); - // by SPI ならここまででおしまい // - } - - // codecに伝える - /// 同値でも書く - iic_mcu_write_a_byte_codec( CODEC_REG_VOL, slider_to_codec[ sent_index ] ); - - // set_irq( VREG_C_IRQ0, REG_BIT_VR_SNDVOL_CHANGE ); // 割り込み廃止 - return( ERR_FINISED ); -} - - - -/* ======================================================== - 過去3つのminでもMAXでもない値を返す -  突発的なノイズを除く。 -  運が悪いと振動するよ -======================================================== */ -static u8 getmean3( u8 * hist ) -{ - if( *hist > *( hist + 1 ) ) - { - if( *hist > *( hist + 2 ) ) - { - return( ( *( hist + 1 ) > *( hist + 2 ) ) ? *( hist + 1 ) : *( hist + 2 ) ); - } - else - { - return( *hist ); - } - }else{ - if( *hist > *( hist + 2 ) ) - { - return( *hist ); - } - else - { - return( ( *( hist + 1 ) < *( hist + 2 ) ) ? *( hist + 1 ) : *( hist + 2 ) ); - } - } } @@ -304,14 +260,7 @@ static u8 getmean3( u8 * hist ) ======================================================== */ __interrupt void int_adc( ) { - static u8 hist_3D[3]; - static u8 hist_snd_vol[3]; - static u8 hist_bt_temp[3]; - static u8 index; - - volatile u8 adc_data; - - adc_data = ADCRH; + volatile u8 adc_data = ADCRH; switch ( ADS ) { @@ -341,15 +290,16 @@ case ( ADC_SEL_AMB_BRIT ): // case ( ADC_SEL_BATT_TEMP ): EI(); - raw_adc_temperature = adc_data; -#ifdef _DEBUG_BT_TEMP_ - if( vreg_ctr[ VREG_C_COMMAND3 ] == 't' ) - { - raw_adc_temperature = vreg_ctr[ VREG_C_DBG01 ]; - } -#endif + if( vreg_ctr[ VREG_C_HAL_OVW_TEMPERATURE ] == 0xFF ) + { + raw_adc_temperature = adc_data; + } + else + { + raw_adc_temperature = vreg_ctr[ VREG_C_HAL_OVW_TEMPERATURE ]; + } - if( (( vreg_ctr[ VREG_C_STATUS_1 ] & REG_BIT_MGIC_ERR ) == 0 ) && + if(// (( vreg_ctr[ VREG_C_STATUS_1 ] & REG_BIT_MGIC_ERR ) == 0 ) && (( system_status.pwr_state == ON ) || ( system_status.pwr_state == SLEEP ) ) @@ -374,7 +324,6 @@ case ( ADC_SEL_AMB_BRIT ): // { ADCEN = 0; // 止めてしまう adc_updated = true; - index = ( index == 2 ) ? 0 : ( index + 1 ); // ノイズ取りの配列インデックス } ADIF = 0; // ←これをしないと、いっこ前のチャンネルのデータの完了で直後に割り込む可能性がある } @@ -392,7 +341,7 @@ u8 get_adc( u8 ch ) ADIF = 0; ADCEN = 1; - ADM = 0b00001011; // セレクトモード、昇圧、fCLK/6 ///ここから↓ + ADM = bits8(0,0,0,0, 1,0,1,1); // セレクトモード、昇圧、fCLK/6 ///ここから↓ ADPC = 0x06; // ADCポートのセレクト ADS = ch; @@ -451,11 +400,10 @@ static u8 adc_scaling( u8 orig_val ) #define KIKAN 16 static void adc_filter( u8 new_val, filter_work *work ) { - u8 temp; if( abs( new_val - *( work -> value_used )) > 2 ) { // 大きく離れた - work -> large_diff_count += 1; + work -> large_diff_count ++; if( work -> large_diff_count > 16 ) { *( work -> value_used ) = new_val; @@ -469,11 +417,11 @@ static void adc_filter( u8 new_val, filter_work *work ) // 近所の値でも、ある期間でいっぱい偏っていたらそっちに寄せる if( *( work -> value_used ) < new_val ) { - work -> diffs += 1; + work -> diffs ++; } else if( *( work -> value_used ) > new_val ) { - work -> diffs -= 1; + work -> diffs --; } if( --( work -> kikan ) == 0 ) @@ -494,91 +442,3 @@ static void adc_filter( u8 new_val, filter_work *work ) } } - - - -#if 0 -// getmean使用 // -__interrupt void int_adc( ) -{ - static u8 hist_3D[3]; - static u8 hist_snd_vol[3]; - static u8 hist_bt_temp[3]; - static u8 index; - - volatile u8 adc_data; - - adc_data = ADCRH; - - switch ( ADS ) - { -/* -case ( ADC_SEL_AMB_BRIT ): // 環境明るさ - vreg_ctr[ VREG_C_AMBIENT_BRIGHTNESS ] = adc_data; - break; -*/ - - case ( ADC_SEL_3D ): - hist_3D[index] = adc_data; - EI(); -#ifdef _MODEL_WM0_ - adc_raw_dep = 255 - getmean3( hist_3D ); -#else - adc_raw_dep = getmean3( hist_3D ); -#endif - break; - - case ( ADC_SEL_VOL ): - hist_snd_vol[index] = adc_data; - EI(); -#ifdef _MODEL_CTR_ - if( system_status.model == MODEL_TS_BOARD ) - { - adc_raw_vol = getmean3( hist_snd_vol ); - } - else - { - adc_raw_vol = ( 255 - getmean3( hist_snd_vol )); - } -#else - adc_raw_vol = getmean3( hist_snd_vol ); -#endif - - break; - - case ( ADC_SEL_BATT_TEMP ): - hist_bt_temp[index] = adc_data; - EI(); - raw_adc_temperature = getmean3( hist_bt_temp ); - if( (( vreg_ctr[ VREG_C_STATUS_1 ] & REG_BIT_MGIC_ERR ) == 0 ) && - (( system_status.pwr_state == ON ) || - ( system_status.pwr_state == SLEEP ) - ) - ) - { - renge_task_immed_add( tski_BT_temp_update ); - } - break; -/* 呼ばれません - case ( ADC_SEL_BATT_DET ): - break; -*/ - } - -// もっとまともな書き方がありそうだ - if( ADS < ADC_SEL_BATT_DET ) - { - ADS += 1; // 次のチャンネル - ADIF = 0; // ←これをしないと、いっこ前のチャンネルのデータの完了で直後に割り込む可能性がある - } - else - { - ADCEN = 0; // 止めてしまう - adc_updated = true; - index = ( index == 2 ) ? 0 : ( index + 1 ); // ノイズ取りの配列インデックス - } -} - - - -#endif diff --git a/trunk/batt_params.c b/trunk/batt_params.c new file mode 100644 index 0000000..74d87df --- /dev/null +++ b/trunk/batt_params.c @@ -0,0 +1,84 @@ +#include "jhl_defs.h" + +#include "batt_params.h" + +/* ======================================================== + 各社バッテリーパラメータ + ======================================================== */ +const bt_param_ bt_param[ _BT_PARAM_NUM_ ] = +{ + // ctr //////////////////////////////////////////////// + // BT_PARAM_CTR_MAXELL + { + { + 0xAE, 0xF0, 0xB4, 0x30, 0xB7, 0x40, 0xBA, 0x30, + 0xBB, 0x50, 0xBB, 0xB0, 0xBC, 0x50, 0xBD, 0x10, + 0xBD, 0x60, 0xBD, 0xB0, 0xBF, 0xE0, 0xC2, 0xB0, + 0xC4, 0x20, 0xC7, 0xB0, 0xCA, 0xE0, 0xCE, 0x10, + 0x01, 0xF0, 0x14, 0x10, 0x14, 0x20, 0x06, 0x30, + 0x63, 0x90, 0x49, 0x00, 0x6E, 0x00, 0x77, 0x70, + 0x7B, 0x00, 0x19, 0x00, 0x19, 0x00, 0x17, 0xF0, + 0x1C, 0x60, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00 + }, + 2, + { 92, (u8)(-256* 0.79), (u8)(-256* 4.35) }, + 0xD800, + { 0xEA, 0xE8 } + }, + + // BT_PARAM_CTR_PANA + { + { + 0x8C, 0x30, 0x9C, 0x10, 0xA5, 0xE0, 0xB0, 0x40, + 0xB1, 0xC0, 0xB2, 0x00, 0xB2, 0x50, 0xB3, 0x10, + 0xB4, 0x90, 0xB6, 0x20, 0xB8, 0x60, 0xBA, 0x50, + 0xBF, 0xA0, 0xC6, 0xB0, 0xCE, 0x90, 0xD0, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x7B, 0x30, 0x68, 0x60, 0x20, 0x00, 0x17, 0x00, + 0x17, 0x30, 0x12, 0xF0, 0x0D, 0xE0, 0x07, 0xF0, + 0x07, 0x00, 0x09, 0x30, 0x01, 0xC0, 0x01, 0xC0 + }, + 1, + { 171, (u8)(-256* 1.00), (u8)(-256* 2.60) }, + 0xDA20, + { 0x69, 0x67 }, + }, + + // spfl /////////////////////////////////////////////// + // BT_PARAM_SPFL_MAXELL + { + { + 0xA1, 0x20, 0xB7, 0x50, 0xB9, 0xD0, 0xBB, 0x00, + 0xBC, 0x30, 0xBC, 0x60, 0xBC, 0xA0, 0xBD, 0x10, + 0xBD, 0xC0, 0xBE, 0x70, 0xBF, 0xD0, 0xC2, 0xA0, + 0xC4, 0x00, 0xC8, 0x50, 0xCC, 0x80, 0xD0, 0xB0, + 0x01, 0xA0, 0x25, 0x10, 0x18, 0xB0, 0x17, 0xC0, + 0x95, 0x20, 0x6F, 0xE0, 0x7C, 0x60, 0x35, 0x10, + 0x35, 0x00, 0x37, 0xF0, 0x16, 0xF0, 0x1C, 0xA0, + 0x17, 0x30, 0x11, 0xD0, 0x11, 0xF0, 0x11, 0xF0 + }, + 2, + { 94, (u8)(-256* 0.35), (u8)(-256* 3.85) }, + 0xDAB0, + { 0xF5, 0xF3 } + }, + + // BT_PARAM_SPFL_PANA !!dummy!! + { + { + 0x8C, 0x30, 0x9C, 0x10, 0xA5, 0xE0, 0xB0, 0x40, + 0xB1, 0xC0, 0xB2, 0x00, 0xB2, 0x50, 0xB3, 0x10, + 0xB4, 0x90, 0xB6, 0x20, 0xB8, 0x60, 0xBA, 0x50, + 0xBF, 0xA0, 0xC6, 0xB0, 0xCE, 0x90, 0xD0, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x7B, 0x30, 0x68, 0x60, 0x20, 0x00, 0x17, 0x00, + 0x17, 0x30, 0x12, 0xF0, 0x0D, 0xE0, 0x07, 0xF0, + 0x07, 0x00, 0x09, 0x30, 0x01, 0xC0, 0x01, 0xC0 + }, + 1, + { 171, (u8)(-256* 1.00), (u8)(-256* 2.60) }, + 0xDA20, + { 0x69, 0x67 }, + } +}; + diff --git a/trunk/batt_params.h b/trunk/batt_params.h index 3b8d542..343b3f4 100644 --- a/trunk/batt_params.h +++ b/trunk/batt_params.h @@ -36,7 +36,7 @@ typedef struct u8 hi,low; } verify_; - typedef struct +typedef struct { u8 mg_param[64]; u8 v_scale; @@ -46,49 +46,4 @@ typedef struct } bt_param_; - - -/* ======================================================== - 各社バッテリーパラメータ - ======================================================== */ -const bt_param_ bt_param[ _BT_PARAM_NUM_ ] = -{ - // BT_PARAM_CTR_MAXELL - { - { - 0xAE, 0xF0, 0xB4, 0x30, 0xB7, 0x40, 0xBA, 0x30, - 0xBB, 0x50, 0xBB, 0xB0, 0xBC, 0x50, 0xBD, 0x10, - 0xBD, 0x60, 0xBD, 0xB0, 0xBF, 0xE0, 0xC2, 0xB0, - 0xC4, 0x20, 0xC7, 0xB0, 0xCA, 0xE0, 0xCE, 0x10, - 0x01, 0xF0, 0x14, 0x10, 0x14, 0x20, 0x06, 0x30, - 0x63, 0x90, 0x49, 0x00, 0x6E, 0x00, 0x77, 0x70, - 0x7B, 0x00, 0x19, 0x00, 0x19, 0x00, 0x17, 0xF0, - 0x1C, 0x60, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00 - }, - 2, - { 92, (u8)(-256* 0.79), (u8)(-256* 4.35) }, - 0xD800, - { 0xEA, 0xE8 } - }, - - // BT_PARAM_CTR_PANA - { - { - 0x8C, 0x30, 0x9C, 0x10, 0xA5, 0xE0, 0xB0, 0x40, - 0xB1, 0xC0, 0xB2, 0x00, 0xB2, 0x50, 0xB3, 0x10, - 0xB4, 0x90, 0xB6, 0x20, 0xB8, 0x60, 0xBA, 0x50, - 0xBF, 0xA0, 0xC6, 0xB0, 0xCE, 0x90, 0xD0, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x7B, 0x30, 0x68, 0x60, 0x20, 0x00, 0x17, 0x00, - 0x17, 0x30, 0x12, 0xF0, 0x0D, 0xE0, 0x07, 0xF0, - 0x07, 0x00, 0x09, 0x30, 0x01, 0xC0, 0x01, 0xC0 - }, - 1, - { 171, (u8)(-256* 1.00), (u8)(-256* 2.60) }, - 0xDA20, - { 0x69, 0x67 }, - } -}; - - #endif diff --git a/trunk/bsr.hex b/trunk/bsr.hex index 0d0597b..58f8615 100644 --- a/trunk/bsr.hex +++ b/trunk/bsr.hex @@ -1,1022 +1,1004 @@ -:02000000260DCB -:040010004D4A4F4ABC -:02001C00244C72 -:02002400904CFE -:02002A00FD4C8B -:08003400264EC84D214E554F28 -:02004A00514A19 -:02005A008C4ACE -:02006200D94E75 -:0400C0007EFBFF04C0 +:02000000760D7B +:02000200FFFFFE +:040010000A490C4944 +:02001C00CC4ACC +:02002400194B76 +:02002A00644B25 +:08003400914C344C8D4CAF4D92 +:02004A000E495D +:02005A00494912 +:02006200334D1C +:0400C0007EFBFF853F :0A00C4001B339499E033F240BFAA09 -:1000CE00C7C1FBF8FFCEABACC736F00071F4C6610A -:1000DE00D8710022F98EA89C018C015C10D1DD0A2A -:1000EE007110D8FB710022F9EF0B8C015C80D1618D -:1000FE00E8710022F98F22F931030FF6BBBBF6B17E -:10010E00614900DD05617900EFF4FDAA01CC000024 -:10011E00CC01008C014C09DE468C01318E04F60FA9 -:10012E00C1317B9EFDC41189728C01318E04F64F54 -:10013E0014896142DF03F6EF01E6600D9B8C0131FD -:10014E008E12490020728C01318E04F64F14896193 -:10015E0042DF03F6EF01E6600D9B615901EFB440FB -:10016E00F84F3A61E86159008BD161E8FD4F0731D4 -:10017E00020406714022F9EF04714822F9FDC7020C -:10018E00EDD300C0C6D7717BFACEA010CEA180E50C -:10019E00F300CEA408F5AAFFF5A9FFD78F22F931F7 -:1001AE00050ACD0003CD0307F40EEF07F400CD03CF -:1001BE0006F40ECE20FFCE23F0CE2EFC8F22F93188 -:1001CE00031FF51005CD01C0F402CD0408F405F4AB -:1001DE0006CD0740F40CF40F7108F200F690BFB490 -:1001EE0001F6BEE0BEE2BED0CBE4FFFFCBE6FFFFE2 -:1001FE00CBD4FFFFCF1105FCF521FFCE22E9CE2493 -:10020E00F3CE25F2CE26FCCE275FCE2CFFCE2FFFCF -:10021E00CF120511F53000F53100F53300F534003D -:10022E00CF350002CF370019F53C00F53E00F543FF -:10023E0000F54700CF530006F55700CBE8FFFFCB84 -:10024E00EAFFFFCBECFFFFCBEEFEFFCED8FFCEDCFE -:10025E00FFCE3831CE3970CF38050AF53905F5376E -:10026E00FF7158F000F530FF7128F0005087BF186D -:10027E0001BF1A01BF1C01BF1E017148F000F5300D -:10028E000271080105F55005F5BCFFF5BDFFF5A59A -:10029E00FFF5A6FFD7C7C1C1FBF8FFCEABAC8C02F2 -:1002AE00D1DD12616902305C03BBF6614900DDEEFF -:1002BE00618900EFF51004C6D7FDEC32FD473CFD19 -:1002CE002705717AFAFDFB23F520F98F22F9310506 -:1002DE00175003C15084FD3103C0625C01D161E847 -:1002EE00CF20F902CFE1FB64FDCC33FD5E48717285 -:1002FE0022712BE7FD4A3CFDEC3C61EDEFF6D7D7C2 -:10030E00C7F616FD2705717BFA3102210571022110 -:10031E00EF0B717AFAA7F647DFECE2EF04717AFA87 -:10032E00F2C6D7C7C1C1FBF8FF17A1C1E0C18C0A45 -:10033E0070C18C0270FD5B031006D2DF05F543FB26 -:10034E00EF04CF43FB028C01721004C6D7C7C1FB6A -:10035E00F8FFFD0E03D2DD03E2EF618B70FD7B042F -:10036E00D2DD077103215202EF528C0870FD90040A -:10037E00FDDB048B6C0170FD9004300400BF240182 -:10038E00301740BF1C01300400BF22018C0A91DFE0 -:10039E0004F6BF2A01710BE2CE44FF3182E202EF76 -:1003AE00FAAC0C148E449961790C61690A8C0AD1ED -:1003BE00DFDAFD0405710BE2710321F2C0C6D7C767 -:1003CE00C1FBF8FFFD0E03D2DD03E2EF25710AE655 -:1003DE008B70FD7B04D2DD077103215202EF138C6B -:1003EE000870FD90048C0A70FD9004FD04057103E5 -:1003FE0021F2C0C6D7C7C1FBF8FFFD0E03D2DD0345 -:10040E00E2EF67710AE6710BE28B70FD7B04D2DDC1 -:10041E00077103215202EF52710BE231722039C77C -:10042E00343CFBAC0C1652048B99A5A792DFF9C68F -:10043E003184BD02EFFA717ABDCEB144CBB43CFB30 -:10044E008C0A318EBEB8CEBB48714BE1714BE57153 -:10045E000ABD8C089E44EF11710BE68C089E448CED -:10046E000A9F42FBAC0CBF40FBF2C0C6D7C716FDBD -:10047E00B30417FD9004D2DD06FD0405E2EF01F290 -:10048E00C6D7C716710AE6710BE2669E443182E248 -:10049E0002EFFAF6420401DD09AF0401BF0C01E2DE -:1004AE00EF01F2C6D7AF2801085CFB08BF2801FD9B -:1004BE000D03AF28015CFBBF2801300400BF2A01E9 -:1004CE00301780BF1C01300400BF2201D7AF2401BA -:1004DE00086C0408BF2401AF28016C0F086C0B08D0 -:1004EE00BF2801FD0D03AF2A01085CFB08BF2A01DE -:1004FE00FD0D03EDB304300400BF2401F6BF2A0145 -:10050E00300B0BBF2801FD0D03300B0FBF2801FD73 -:10051E000D03300F0FBF2801D731142101D77102FF -:10052E0021710BBD0000717BBD713A25713A236AB2 -:10053E000E03713205713B25713203713B23500A54 -:10054E00FDA3027120F000FD0D03F6BF260150241D -:10055E00BF1401CB440014300F0FBF28017173205C -:10056E00710BE2710AE6FDB304CE44FF3182E20262 -:10057E00EFFAFD0405AF0401BF0C017103217112E6 -:10058E0021D731042102EFFAFDDB04713A25713ACD -:10059E00235A0EFC713305713B25713303713B23D6 -:1005AE007128F000711321D7C7880616FD0E03D2ED -:1005BE00DD03E2EF38710AE650A4FD7B04D2DD07BD -:1005CE007103215202EF2617FD90046770FD90040F -:1005DE00FDDB0450A4FD90045020FD9004D944FB93 -:1005EE00FD9004A044FBFD0405710321F2C6D7C79C -:1005FE002008FBF8FFFD59095014C15008FD8B0867 -:10060E00C0CC07048C074C14DE0C8C07318EFD0811 -:10061E000A615907EFEECC07048C074C1461C8ED44 -:10062E00EB06CC06008C064C0461C8EDCA063024DD -:10063E00F9BC02F6BBCEABAC31B2D109C73641051F -:10064E007184C6DEF3F1C73641057184C661DC9C48 -:10065E0005713BD1AC02148F400599715050056164 -:10066E007902617900F0E1614900DD09C736410583 -:10067E007184C6DEC3F1C73641057184C661DC0ED6 -:10068E00059C055040C18C07318E31AD128C063160 -:10069E008E318D03BDD831FFBDDADADAADD8FDD497 -:1006AE000CC0D2DD0C5008C15014FD8B08C0FD915A -:1006BE000B8C05D1DF06615906ED33068C07318EA2 -:1006CE00FD0C0AD2DD0C5008C15014FD8B08C0FD84 -:1006DE00910B8C05D1DF06615907ED27067160502D -:1006EE0005CC0400CC05008C054C09DE2B8C0531A5 -:1006FE008E04F61FC1317B9EFDC41189728C0531AB -:10070E008E04F64F14896142DF03F6EF01E6600EA8 -:10071E00049C04615905EFCF41001140F81F3A6166 -:10072E00E86159048C04D1DF08FD920BFDA40CEF97 -:10073E000C5008C15014FD8B08C0FD910B1008C65B -:10074E00D7C72004FBF8FF715B21CC0100F6BC0279 -:10075E00AC02440900DE3EAC0204F60F1441001157 -:10076E008972AC020C5014896142DF03F6EF01E688 -:10077E00600E019C01AC021249005072AC0204F6EC -:10078E007F14896142DF03F6EF01E6600E019C01E2 -:10079E00617902EFBB40F67FFF61F86159018C0170 -:1007AE00D161F8ED5908CC0100717AFAFD27057177 -:1007BE001300711B20710303710205E0C15003C1C8 -:1007CE005084FDCD0310045013FDA302500FC1E061 -:1007DE00C15084FDCD031004CEABAC6159018C0128 -:1007EE0091DD068C014C03DF03E6EF01F66061FB41 -:1007FE007151018C014C0861F8CC010031320705B2 -:10080E00A082FCEF03F582FC4082FC11DC11F58224 -:10081E00FCF0C15003C15084FDCD031004EF12E66D -:10082E00BC02F6614902DDB000000000617902EF02 -:10083E00F1CE3708CBE4FFFFCBE6FFF7CED4FFCFE8 -:10084E00370008F5120561FDF5ABFFFD5909D250D1 -:10085E0008C15014FD8B08C0D2FD910B1004C6D7F1 -:10086E003184BD02EFFA717BBDCBE4FFFFCBE6FF17 -:10087E00FFCBD4FFFF717ABED7717BBED7C7C12025 -:10088E000CFBF8FF8C0C318E31ADC1317B9DD4C089 -:10089E00BC068DD49C088C149C0B8C14318E040CCD -:1008AE0000128C0B318EBDD813FD630F61C8ED5451 -:1008BE0009CEABACCC05068C0B318EFD040AD2DD15 -:1008CE00158C0B318EFD080A6169058C05D1DFE7A9 -:1008DE00FD8708E2EF71CC0A008C0A4C04DE54F658 -:1008EE00BC023024F9BBAC06148C089EFD11897233 -:1008FE00AB146299AC06A1BC06617900617902F075 -:10090E00E1614902DFE05040C18C0B318E31AD12F6 -:10091E008C0A318E318D03BDD831FFBDDADADAADF6 -:10092E00D8FDD40CC0D2DD06FD8708E2EF1961595F -:10093E000AEFA68C0B318EFD0C0AD2DD03E2EF0717 -:10094E0061590BEDA808F2100EC6D7C7717B9D71C9 -:10095E007BFAFD6E083024F9FDB70AFD420AC6D7B0 -:10096E00FD5909FD910BFD8708F5ABFFF2D7C7D5F1 -:10097E006AFDDD05B06AFDEF7BCF6AFD023114071B -:10098E00067110E5FBEF047118E5FB8FE5FB7F3078 -:10099E00FD76D1DD5F8FE5FB9F30FD4020F903DF53 -:1009AE0025665C10D1DD1F7122208FE5FB5C10D116 -:1009BE00DD0B5080C15011FDFC37C0EF095040C116 -:1009CE005011FDFC37C04020F903DD064020F9042C -:1009DE00DF22665C02D1DD1C8FE5FB5C02D1DD0BF4 -:1009EE005040C15010FDFC37C0EF095020C15010CF -:0609FE00FDFC37C0C6D766 -:100A04005208EF065203EF025206FEE600FE1B00F8 -:100A1400DC16089F03088F0408089F040862FE245C -:100A240000089F0408EEBF00EEBA00C1C514410ED1 -:100A340011D9D0FF118FD1FF312E45C4C0D7F23167 -:100A4400A2C401E2D79DE261DD4C09DF12717BFA99 -:100A5400C18F06089F7BFDC0CF060800EE2700313A -:100A6400F2FA04CF0608004C00DF05D50008DD16B5 -:100A740061DD717BFAD50608DD0ACDE31F61CD6126 -:100A8400CDEE160061CDFED40061FFFE9A00FCF8A5 -:100A9400FF0EFEB20061CDFED5004C09DF0EC18F02 -:100AA40006086F7BFD9F0608C0EE0400CF06080011 -:100AB400F8E3D75200EF025202FE3700CF7AFD006E -:100AC400CF060800BF0408C716629F000841001142 -:100AD4008F86229B4100118F87229F0108C65100F7 -:100AE400FE62FFEF025205CF060800C1510CFE0A58 -:100AF40000C0D7C1511DFE0200C0D761DD717BFA71 -:100B040070CEC0A59EC47CFF9EC4609EC461CDD738 -:100B140061DD717BFAC18EC45C1BFED6FFCF060873 -:100B240001FED7FFC061CDD731F2FA1AC1AEE4BFDE -:100B34006CFDAEE6BF6EFDAED4BF70FD30FFFFBEF0 -:100B4400E4BEE6BED4C0D731F2FA11C1AF6CFDBE2B -:100B5400E4AF6EFDBEE6AF70FDBED4C0D7C1BF72B8 -:100B6400FD13BF74FD15BF76FD17BF78FDC0D7AF69 -:100B740072FDDB74FDEB76FDFB78FDD7534B3052F1 -:100B84005430324E323030475631323000FFC1508B -:100B9400FEFEAB0061DD717BFACF060800FE0A00A1 -:100BA400FEA4FF61CDF8E3EECF00C7FB0408BF6CE1 -:100BB400FD8FC0009C05C5C337040600BF6EFD351C -:100BC40036F60B300000522BFE6600C2C4C630A4B9 -:100BD4000BB800300000B8022004AF6EFDB800303E -:100BE4000F00B802AF6CFD61FF520AFE3AFFECF849 -:100BF400FF0E717BFAC1C7FB04088C05C65C80FE3E -:100C04000200C0D761DD717BFA70CFC0FFA59FC021 -:100C1400007CFF9FC000609FC00061CDD7618BFE48 -:100C2400E2FF717BBE410011FB000017CEFC0061A6 -:100C3400CB089EFDF31161C999A58392DFF7D7FE16 -:100C4400B1FED57AFDDF23C1CF0308035109FEF4B9 -:100C5400FDC0D2DF37FE3800A20408CF03080751D5 -:100C640009FEE1FDD2B20408DF22C7FB0408318388 -:100C740002C6D7C6510AFECCFD624C1FDF06CF7AEE -:100C8400FD01EF04CF7AFD00C0EE5BFEC0EE55FE21 -:100C9400C7C1FB04088B31196C0161589BC0C6D7CE -:100CA400717BFAFE4DFEAF0408040600C114360839 -:100CB4000C300000522DF3FE77FF8FC000FE2BFE98 -:100CC40061CF5C807C8073C0041900CEFC0F61CBC3 -:100CD400C55404EF03C55417FE18FEC7360008BBFD -:100CE400629C0288089C03D1DD334C41DE2F70F1F5 -:100CF400312DB161090033081C000851FF612A41FC -:100D04000E118FD0FF613B118FD1FF6138DC0E8B48 -:100D14005C03DF0964C6C4FE2BFDEECAFDC6C4EE47 -:020D2400C3FD0D -:100D260061CF5100718C7109FECBF800FEFC940175 -:100D360000F6BF00F953C0F693935820FEDFF94141 -:100D46000036764F3432FDEF05118B99A7A517446F -:100D5600B04FDFF53602F93032FDEF04CC0000A7C4 -:100D660047DFF94100365B4F346CFDEF05118B9977 -:100D7600A7A517445B4FDFF5366CFD306CFDEF041D -:100D8600CC0000A747DFF9FCCE0000EFFE61DD7165 -:100D96007BFABEF0ADD8BEF200AEF661CDD7C36128 -:100DA600DD717BFABEF0ADD8BEF200DBF6FFADDC3E -:100DB600BEF000AEF6BDD8AEF40312ADDABEF20058 -:100DC600AEF661CD03BDDAC2D7C3F33174D9088359 -:100DD600C1F626D8BDD8C031750683C312F623C224 -:100DE600FDF10D93DF0312F623C2D7440000DD2682 -:100DF60061DD717BFACFE80080BEF6F6BEF4BEF286 -:100E0600ADD8BEF0CFE800818FE8003103FAAEF02E -:100E1600F5E80061CDD7B1D7C3F33174D90883C1E2 -:100E2600F626D8BDD8C0317505C312F623C2FD3FDC -:100E36000E93DF0312F623C2D7440000DD2761DDDF -:100E4600717BFACFE80080BEF6F6BEF4BEF2ADD8EE -:100E5600BEF0CFE800818FE8003103FAAFE000F57D -:100E6600E80061CDD7ADD8D7C3F33174DB0F83C1AA -:100E7600F626D8BDD861317026DABDDAC031750DD7 -:100E860083C312F626DCBDDC61317023C2FDA70EDA -:100E960093DF0CF626D8BDD861317026DABDDAC2EA -:100EA600D7C161686BDC6BDDC0DD2F61DD717BFA5C -:100EB600CFE80080BEF4ADDCBEF6ADD8BEF0ADDA4C -:100EC600BEF2CFE800818FE8003103FAAEF0BDD85C -:100ED600AEF2BDDAF5E80061CDD7F6BDD8BDDAD7FA -:100EE6008292DD2B61DD717BFACFE80080BEF0F6E1 -:100EF600BEF2BEF46208BEF6CFE800818FE800318C -:100F060003FAAFE0006072AEF0F5E80061CDD7609D -:100F160072F6B1D706DABDDAADDC06D8BDD861D82F -:100F2600A6DAD7D1DD17C1C3DAD89DD8ADDA311C20 -:100F360061EEB4D8DFF8BDDA13BDD8C2C0D7D1DDB3 -:100F46001BC1C3DADA9DDAADD8311E33311E3371D7 -:100F5600F9B4DADFF4BDD813BDDAC2C0D746D8DD9E -:100F66000771FF7177D971C0D75BDB9DDB605BDAF8 -:100F76009DDAADDC5BD9085BD808BDD8D7C3C7F30B -:100F8600728EFDC162314C4100365C4F1161A07218 -:100F9600C09EFD62C6C2D7C3C7F3728EFDC1625C36 -:100FA6000F0C000FFE00314C410036664F11618078 -:0B0FB6000FFE0073C09EFD63C6C2D793 -:0A0FF60030383A35343A3333000046 -:0A20000030383A35343A333300002B -:10200A00AEF0B430B740BA30BB50BBB0BC50BD1014 -:10201A00BD60BDB0BFE0C2B0C420C7B0CAE0CE1038 -:10202A0001F0141014200630639049006E00777096 -:10203A007B001900190017F01C6012001200120030 -:10204A00AEF0B430B740BA30BB50BBB0BC50BD10D4 -:10205A00BD60BDB0BFE0C2B0C420C7B0CAE0CE10F8 -:10206A0001F0141014200630639049006E00777056 -:10207A007B001900190017F01C60120012001200F0 -:10208A00AEF0B430B740BA30BB50BBB0BC50BD1094 -:10209A00BD60BDB0BFE0C2B0C420C7B0CAE0CE10B8 -:1020AA0001F0141014200630639049006E00777016 -:1020BA007B001900190017F01C60120012001200B0 -:1020CA008C309C10A5E0B040B1C0B200B250B31041 -:1020DA00B490B620B860BA50BFA0C6B0CE90D02097 -:1020EA0000200020002000207B30686020001700BC -:1020FA00173012F00DE007F00700093001C001C0E7 -:10210A008C309C10A5E0B040B1C0B200B250B31000 -:10211A00B490B620B860BA50BFA0C6B0CE90D02056 -:10212A0000200020002000207B306860200017007B -:10213A00173012F00DE007F00700093001C001C0A6 -:10214A008C309C10A5E0B040B1C0B200B250B310C0 -:10215A00B490B620B860BA50BFA0C6B0CE90D02016 -:10216A0000200020002000207B306860200017003B -:10217A00173012F00DE007F00700093001C001C066 -:10218A008C309C10A5E0B040B1C0B200B250B31080 -:10219A00B490B620B860BA50BFA0C6B0CE90D020D6 -:1021AA0000200020002000207B30686020001700FB -:1021BA00173012F00DE007F00700093001C001C026 -:1021CA005C003600A7005C003600A7005C00360001 -:1021DA00A700AB0000006700AB0000006700AB007F -:1021EA0000006700AB000000670000D800D800D8E4 -:1021FA0020DA20DA20DA20DAEAEAEA69696969E8A3 -:10220A00E8E8676767670202020101010105214FD9 -:10221A007B9EC5E91926344453626E777D80807DA2 -:10222A00776E625344342619100A08080808080809 -:10223A0008080A107F7E7D7C7A79787776757472C1 -:10224A0071706F6E6D6C6A696867666564626160F9 -:10225A005F5E5D5C5A5958575655535251504F4E0E -:10226A004D4B4A494948474645434241403F3E3D16 -:10227A003B3A39380104080D12171C1F08010102E4 -:10228A000203030200FEFBF7F3F0F0F3FA0412254F -:10229A00384D5F6E777A776E5F4D38251204FAF300 -:1022AA00F0F0F3F7FBFE0002030302020100000054 -:1022BA0000001F003B005A0078009700B500D400C8 -:0822CA00F300110130014E0187 -:1022D200D520F9DD108F33FDB033FDD161E8ED7EFD -:1022E20023CF33FD33FD7F234002F94BDC1640023E -:1022F200F9B9DE10400EF928DE05A00EF9EF2771BC -:102302003320EF224002F93EDC064002F9BDDC1028 -:10231200400FF928DE05A00FF9EF0B713220EF060E -:10232200F50EF9F50FF93132200D31042009310291 -:102332000705713304EF0371320431140508F510F7 -:10234200F9714302EF0E4010F902DE05A010F9EF19 -:1023520003714202D50BF9DD06B00BF9714202316D -:102362004402067140E5FBEF047148E5FB4020F9A9 -:1023720001DD094020F90561E8FD2227D7C72004C5 -:10238200FBF8FF710407E66130609C038F11F94E80 -:1023920003DD628C039F11F98C03D1DD137130E5EB -:1023A200FB5002C15011FDFC37C0CF0BF91EEF45A7 -:1023B2007138E5FBE0C15011FDFC37C0F50BF91790 -:1023C200A1C15002C1C1506CFD5B031006D2DF0FE8 -:1023D2008C01318E318D080E02081C00BF0CF9AF42 -:1023E2000CF944009BDC05D5E1FBDF095020C1500C -:1023F20011FDFC37C01004C6D7C78F32FD76FD3CF5 -:1024020024D523F9DD05710320EF2D664F32FD61DE -:10241200F83144201A714320FD2705664C07DD037D -:1024220081DF098F22F9310303FDBA24FDDF247114 -:102432000220306426FDA23CC6D7C77162017172C8 -:1024420001E0FDA3025008FD163B629F02F950090C -:10245200FD163B6276716301713822F94002F9F18F -:10246200DC05E523F9EF244002F904DE1BCF23F952 -:10247200025008C1506CFD3103C092DF0ED543FB00 -:10248200DF09713022F9EF03F523F9CF32FD075747 -:1024920000674C08DE1173091722614EDC06679F44 -:1024A20032FDEF0387EFEA4032FD07DF09D523F95A -:1024B20061F8CF23F903C6D7C7C1FBF8FF500AFD65 -:1024C200A302304000BB17C15002C15006C1506C7C -:1024D200FD030410065096FDA302C0C6D7C720080C -:1024E200FBF8FF8F32FD5006D604CA2114F75006BE -:1024F20089A54804F9A390DFF7D523F961E8ED60D7 -:1025020026304A57BB17C15002C1503EC1506CFD24 -:1025120003041006D2DD077100E4FBED60267108AA -:10252200E4FB17040300C15004C1500CC1506CFD00 -:102532005B031006D932FDF10104F42114A9318D97 -:1025420012A9318E616B08616A08BB17C15002C1C2 -:10255200500EC1506CFD03041006F690BB17C1501B -:1025620002C1500CC1506CFD03041006310421025B -:10257200EFFA7172208F32FDF0312E040A20C15021 -:1025820010C15040C1506CFD0304100631042102F9 -:10259200EFFA7172208F32FDF0312E041A20C150F1 -:1025A20010C15050C1506CFD0304100631042102C9 -:1025B200EFFA7172208F32FDF0312E042A20C150C1 -:1025C20010C15060C1506CFD030410063104210299 -:1025D200EFFA7172208F32FDF0312E043A20C15091 -:1025E20010C15070C1506CFD0304100650A5FDA32C -:1025F20002D932FDF10104F42114A9318D12A9315D -:102602008E616B08616A08BB17C15002C1500EC1CE -:10261200506CFD0304100650A5FDA3025004C150E6 -:102622006CFD3103C0629C07E932FD0909224E07A5 -:1026320061C308E932FD0902224E0717040300C1F3 -:102642005004C1500CC1506CFD03041006F6BB17B8 -:10265200C15002C1503EC1506CFD03041006100867 -:10266200C6D7C7C1FBF8FF8F12F94F02F961F8ED27 -:102672001E274014F928DE06A014F9ED1E27F514D2 -:10268200F98F02F99F12F98F02F95070D612307346 -:1026920051230480001231FF318E039F13F99FE012 -:1026A200FBF6BB8F13F97C804C95DC1B8F13F93141 -:1026B2008F241400BDD8AF06F9FD930D1231FF31FE -:1026C2008E03318FBBEF198F13F9318F241400BDA4 -:1026D200D8AF08F9FD930D1231FF318E03318FBB54 -:1026E200D904F9F1610900BB44000171FEDC03F673 -:1026F20090BB8C0101DE02F6BBABABBF8CFC17C1F9 -:102702005002C1500CC1506CFD03041006D2DF0808 -:102712008F02F99F12F9EF047100E4FBF2C0C6D7F1 -:10272200C72006FBF8FF4023F901DF0BCFE1FB6373 -:10273200CFE3FBC8ED7C284023F902DF2C17040409 -:1027420000C15002C15004C1506CFD5B031006D29F -:10275200DD06CFE1FB63EF0A8C049FE1FB8C059F52 -:10276200E2FBCFE3FBC8ED7C2817040400C1500252 -:10277200C15004C1506CFD5B031006D2DD11710023 -:10278200E4FB710320F5E1FB712022F9ED51288C65 -:1027920004318E318D080E05081C00BF0CF9D932A8 -:1027A200FDF1041022148972AF0CF9FDE60EBF0C84 -:1027B200F99C04D1DF08CC0401CC0500EF058F0C95 -:1027C200F99C0517040200C15002C1C1506CFD5BA7 -:1027D200031006D2DF798C029FE3FB8C02318E312B -:1027E2008D080E03081C00BF0CF94401A5DC09CCBE -:1027F2000164F6BF16F9EF57AF0CF92216F944013E -:10280200A0DC09CC011EF6BF16F9EF43AF0CF94468 -:10281200819DDC0BCC010A30F401BF16F9EF30AF19 -:102822000CF944019BDC0BCC010530F401BF16F915 -:10283200EF1DAF0CF9440191DC0BCC010030F40127 -:10284200BF16F9EF0A712022F930F401BF16F931EF -:1028520032040D31140509CFE1FB64F5E2FBEF1AF6 -:102862008C044E01DE0C8C049FE1FB8C059FE2FB85 -:10287200EF088C019FE1FBF5E2FB40E1FB51DC0636 -:10288200CF38FC0FEF3540E1FB33DC06CF38FC0BD1 -:10289200EF2940E1FB0BDC06CF38FC07EF1D40E1DE -:1028A200FB0661D831320406CF38FC03EF0DD5E1C7 -:1028B200FBDD05E538FCEF03F538FC8F18F94FE135 -:1028C200FBDD2B40E1FB0BDE064018F90BDE164068 -:1028D200E1FB06DE064018F906DE0AD5E1FBDF0E53 -:1028E200D518F9DD095020C15011FDFC37C08FE128 -:1028F200FB9F18F9D520F9DF05715320EF3340E132 -:10290200FB0BDE03E6EF01F66061FB7161207114DF -:102912002071672061C831522017715220716420E2 -:10292200711120F171642061DC70C15012FDB60595 -:10293200C01006C6D7C75007C15002C15084FDCD92 -:102942000310045012FDA302500FC15002C1508463 -:10295200FDCD0310045003FDA302501FC15002C15C -:102962005084FDCD0310045016FDA3025003C15044 -:1029720084FD3103C0625C01D1DD107170E5FB5052 -:1029820002C15013FDFC37C0F2EF01E2C6D7C750B7 -:1029920004C15084FD3103C0625C03D1DD40501498 -:1029A200FD292A34E5FB895C9F998A0C7CFF50FF44 -:1029B2005C14D1DD228A0C7CFF5C147234E9FB8941 -:1029C200616A997162075600316207058666D1DF36 -:1029D200F7716307716B2734F8FB895CEB9950023E -:1029E200C15084FD3103C0D2DD335017C15002C142 -:1029F2005084FDCD031004E0FDA3025007C1500234 -:102A0200C15084FDCD0310045033FDA302F0C15028 -:102A120002C15084FDCD0310047178E5FBE0C15082 -:102A220013FDFC37C0C6D7C7C12004FBF8FFCC0298 -:102A3200005004C15084FD3103C0629C038C045CCD -:102A420020D1DD0E8C036C019C038C026C209C0255 -:102A5200EF138C045C10D1DD0C8C035CFE9C038CA8 -:102A6200026C109C028C045C08D1DD0E8C036C029B -:102A72009C038C026C089C02EF138C045C04D1DD75 -:102A82000C8C035CFD9C038C026C049C028C03D1B5 -:102A9200DD05501AFDA3028C0370C15004C150849D -:102AA200FDCD0310048FE5FB5C9F728C03318E31E8 -:102AB2006D148C03318E314D616D08616C5C606107 -:102AC20062629FE5FB8FF1FB7CFF50FF5E02D1DD6E -:102AD200278FF1FB7CFF5E027234E9FB89616A9900 -:102AE200716207CC0100316207086159018C01D182 -:102AF200DFF4716307716B27F21006C6D7D9D9FBD1 -:102B0200C15006C15084FDCD031004D9DAFBC15077 -:102B120007C15084FDCD031004D7FDFF2AF2D771FF -:102B22001300711B20710303710205E0C15003C140 -:102B32005084FDCD0310045013FDA302F0C15005D3 -:102B4200C15084FDCD031004500FC1E0C15084FD7B -:102B5200CD031004500AFDA3027103055008FDA322 -:102B620002501FC1E0C15084FDCD0310045012FD7C -:102B7200A3025003C15084FD3103C0625C01D1DF66 -:102B820002E2D75003C1C15084FDCD03100471028B -:102B920003711A20FDE92CF50AF9F2D75003C1504E -:102BA20084FD3103C0625C01D1DD195014FD292A74 -:102BB200FD90295014FDA302E0C15003C15084FDD1 -:102BC200CD031004711300711B207103035014FD17 -:102BD200A302F0C1E0C15084FDCD031004F0C15046 -:102BE20003C15084FDCD031004D7C72004FBF8FFB6 -:102BF200CC02008F0AF99C035010C150A4FD31038E -:102C0200C0629F0AF9D543FBDD04F2EDC62C8C03AA -:102C12007F0AF95C08D1DD108F0AF95C08D1DF0563 -:102C2200CC0210EF03CC02208C037F0AF95C04D1A2 -:102C3200DD168F0AF95C04D1DF088C026C049C0259 -:102C4200EF068C026C089C028FE4FB5CF3728F0A25 -:102C5200F95C0C6162629FE4FB8FF0FB7CFF50FF2A -:102C62005E029C02D1DD1F34E8FB896E029971621B -:102C720007CC0100316207086159018C01D1DFF4F0 -:102C8200716307716B278F0AF95C40D1DD0950022D -:102C9200C15012FDFC37C08F0AF95C01D1DD08E09A -:102CA200C15012FDFC37C0717AFA8F0AF95C41D12A -:102CB200DD11340AF9895CBE99D90AF9C15010FDB7 -:102CC200B605C0F21004C6D7FD3729F2D7FD902908 -:102CD200F2D7C78FF8FB7617FD292A664FF8FBDF7C -:102CE200F2F5F8FBF2C6D75064FDA30240E1FB0BFC -:102CF200DE03E6EF01F66061FB711120F171142031 -:102D020061DC70C15012FDB605C0FDC039CF49FC6F -:102D120003D77100010571785005713AD5713BD125 -:102D2200713ADD713BD98F10055CFC9F1005CF54C1 -:102D3200054AE5420571104205710042057148508D -:102D4200057130500571205005CF530505CF52054E -:102D52000A7130510571205105713BD571705005D2 -:102D62008F11055CFC9F1105D77178500571080120 -:102D720005D77140F00071783002713AE6713BE29A -:102D8200713BEA713BEE8F10055CFC9F1005CF345E -:102D9200024AE552FF711A52710A527148300271A9 -:102DA20030300271203002CF330205CF32020A7175 -:102DB200303102713BE6717030028F11055CFC9F6D -:102DC200110571603002D7717830027148F000D776 -:102DD200C788061666614FDD0967614EDE0396EF0E -:102DE20001866672C6D7C7161714AA0412A943DD54 -:102DF20029AA0412A923FDB04FC3AC02FDB04F13A0 -:102E0200C2BDD813FD630FDE0C1714AA0212AA0466 -:102E120003BA04EF051714A9BA04AC041231FF3146 -:102E22009E03317F087208C6D7C771201205712030 -:102E320011057100F200304400BFB601300188BFB5 -:102E42009001300984BF9E01BF9C01BF9A01BF98C7 -:102E520001BF9601BF9401BF9201F53CFF30FE0015 -:102E6200BFBE01F6BFBC01BFB80150EEBFBA01A19F -:102E7200BFB201C918FE00711022F94023F901DF27 -:102E820006711822F9EF0B36100571A461D871187A -:102E920022F97128100571281105F6BE6EBE64BEB6 -:102EA2006A7123047153078F22F9310507F5FFFB7D -:102EB200CB6CFF00713321C6D730EF00BFB401F6EF -:102EC200BFBA017108F200712304715307715301F3 -:102ED200D7714321D9FFFBF1E7240000DD1223DD86 -:102EE2001923DD1123DD2623DD3423DD3923DD3FE4 -:102EF200FD6E2FEF3DFD912FEF38D9FEFBC1AE6C79 -:102F0200FDD22DC0F313BE6C712321EF25F0C1AEAB -:102F12006CFDD22DC0F313BE6C712321EF14F6BEEB -:102F22006C712221EF0CCB6CFF00712321EF03FDAA -:102F32000E308F22F9311508712421712104EF0618 -:102F4200712421715101314421218F22F93115104F -:102F5200F6BE64BE6A3124210390EF01F6BE6ED73D -:102F620031242104F690EF01F6BE6AD7CF3AFD472D -:102F7200F5AAFBAE6C317DBFB0FBFDE32FD2DF0EB5 -:102F8200D9FEFBC1AE6CFDD22DC0F313BE6CD7FDD2 -:102F9200E32FD2DD0FCF3AFD47F5AAFBAE6C317DB0 -:102FA200BFB0FBD7E9AAFB091E225080D6BFACFBFB -:102FB20022B0FBBDD8304700FDCF0DBFAEFB30AC19 -:102FC200FBFDE82DF313BE6CB03AFDD53AFDDF10E0 -:102FD200CF3AFD47A0AAFB40AAFB1F61C8F5AAFB96 -:102FE200D740E1FB0BDC05712321F2D740E1FB0660 -:102FF20061D831120511F0C1AE6CFDD22DC0F313B0 -:10300200BE6C712221EF03FD0E30E2D7714221F036 -:10301200C1AE6CFDD22DC0F313BE6CA0B2FB40B2A8 -:10302200FB40DC3DF5B2FBD9B3FBF1313F0436FD89 -:1030320014D9B3FBF1BDD85008FD1E0E087208E684 -:10304200D2DD040192DFFC896158D1DD05712221B4 -:10305200EF03712321A0B3FB40B3FB2061C8F5B39A -:10306200FBD78FB4FBB0B4FBD1DF7331D4D106717F -:103072005BD1E5B6FBD5B6FBDD347140E4FBD9B5D7 -:10308200FBF1E734020023DD0625DD0325DF05F62B -:10309200BE66EF06D9FEFBF1BE66A0B5FB40B5FBEE -:1030A20020DF06F5B5FBB0B6FBCFB4FB19D7CFB422 -:1030B200FB1E7148E4FBD500FCDF04F6BE66D7D9DF -:1030C200FEFBF14266FFDD16D9FEFBF112AE66434E -:1030D200DE05A266FFEF03B266FFCFB4FB03D73172 -:1030E200442101D74020F902DF10F6BE64BE6EBE55 -:1030F2006ABFBEFBBFC4FBBFCAFB31342139F6BF76 -:10310200BAFBBFC0FBBFC6FB22BEFB1231FF31AE12 -:1031120003316FBFBCFBF622C4FB1231FF31AE0399 -:10312200316FBFC2FBF622CAFB1231FF31AE03314F -:103132006FBFC8FBEDF33131642110716321710857 -:1031420004FCF5B8FBF5B7FBEDF331D5B7FB61E84D -:10315200EDF0318F46FB9FB7FB40B8FB1FDC1A71C5 -:103162000004FC4048FBFFDD22A0B9FB8F48FB4F67 -:10317200B9FBDE17F5B8FBEF12D9B8FBF1A1605C21 -:103182001F9FB8FB710804FCF5B9FBE9B8FB094ABB -:10319200FB5080D6BFBAFBE9B8FB096AFB5080D668 -:1031A200BFC0FBE9B8FB098AFB5080D6BFC6FBAFA4 -:1031B200BAFB22BEFB12D947FBF133BDD813FDCFB8 -:1031C2000DBFBCFBAFC0FB22C4FB12D947FBF133DE -:1031D200BDD813FDCF0DBFC2FBAFC6FB22CAFB1287 -:1031E200D947FBF133BDD813FDCF0DBFC8FBB0B734 -:1031F200FB8F22F931151F30C6FBFDE82DF313BEFC -:103202006430BAFBFDE82DF313BE6E30C0FBFDE85F -:103212002DF313BE6AD730C6FBFDE82DF313BE6A49 -:10322200D7C73152210BD5CCFBDD06B0CCFBEDEA82 -:1032320032715321D901FCF1E7240000DD0F23DDB7 -:103242001B23DD1123DD5723DD2923DD3B5600F54A -:103252003BFDEDD6325601F53BFDEF78D53BFDDF68 -:10326200075601E53BFDEF055600F53BFDCFCCFBD4 -:10327200FAEF61D53BFDDF0B5601E53BFDCFCCFB01 -:10328200FAEF51F501FCEF4CD53BFDDF0B5600E5A3 -:103292003BFDCFCCFBFAEF3CCF01FC02EF36D93934 -:1032A200FCF1E7240000DD0923DD2423DD0A23EFFE -:1032B2001E5600F53BFDEF1CD53BFDDF075601E531 -:1032C2003BFDEF055600F53BFDCFCCFBFAEF055673 -:1032D20001E53BFD8F22F93115086661FB7151074B -:1032E200EF066661FB710101C6D7C736F00071F4C3 -:1032F200DC297170F000CE9D08CE9EC0CE9F80F575 -:1033020094FFF593FFF592FFE597FFE596FFE595AC -:10331200FFE598FFCE9C7F7100D8FB711BE3712BF8 -:10332200E3711AE7712BE7717A9D710A9E31929EC1 -:1033320002EFFA710B9E717321710322711322C67F -:10334200D7C73172211E717221710A9E31929E027B -:10335200EFFA3406FC3692FF52078B99A5A792DF4B -:10336200F9710B9EC6D7C788061631022215710263 -:1033720022C734CEFB3092FF1652078B99A5A79233 -:10338200DFF9C666736718CEFBC6D7C771732131E2 -:1033920004221E710322710A9E31929E02EFFA34B8 -:1033A20092FF36CEFB52078B99A5A792DFF9710BDC -:1033B2009E31142213711322717B9E8F0EFC9E9AF2 -:1033C2008F0FFC9E9B717A9EC6D7CFD9FB5CCFDA5A -:1033D200FB5FCFFAFB20CF2EFC36CF2FFCC9D7C71D -:1033E200CFD6FB11CFD7FB0FCFFEFBFFF5FFFBF5CF -:1033F20000FCF501FCF502FCCFFBFB20F5FCFB56C3 -:1034020000664C64DE08723846FB0086EFF3C6D7CE -:10341200C788061617F1E73403002361E3ED40374E -:103422002361F8EDF634B12361E3EDFD342561F853 -:10343200ED0C3524070024070061D8ED4037240B3A -:103442000061F8ED2D352361F8ED74352361F8ED57 -:1034520041352361F8ED18372561F8ED2C372561E8 -:10346200F8EDDD35B12561D8ED013624000061F8B3 -:10347200ED0E362361F8ED40372402002361E3EDBF -:1034820033362361F8ED44362361F8ED5536236176 -:10349200F8ED44362361F8ED66362361F8ED7736B0 -:1034A2002361F8ED86362361F8EDA8362361F8ED45 -:1034B200B4362361F8EDC0362361F8EDC936240233 -:1034C200002361E3ED403724020061F8EDD1362399 -:1034D20061F8EDDD362561F8EDE936240A0061F880 -:1034E200EDF53624120061F8ED12372361F8ED0094 -:1034F20037ED4237679FD8FBED4C37301C2BFDA2CE -:103502003C66736718D6FBED4C3740DBFB6ADF1471 -:1035120040DCFB68DF0E674C6CDF09305645FDA2CC -:103522003C713AD5679FDDFBED4C3767D1DD063044 -:10353200AE40FDA23C34F6FB89616F99ED4C3767D2 -:103542005C02D1DD0830CA2CFDA23CEF0C675C01A5 -:10355200D1DD0630CF2CFDA23C675C3CD1DD1030C2 -:10356200D42CFDA23C675C3C7266736218D6FBEDFC -:103572004C3767D1DD625C01D1DD05300800EF0117 -:10358200F6609F35FC675C02D1DD03E6EF01F6349D -:1035920035FC89616899675C04D1DD04E6A1EF011D -:1035A200F63435FC89616899675C08D1DD05302005 -:1035B20000EF01F63435FC89616899675C10D1DD52 -:1035C20005301000EF01F63435FC89616899675CBB -:1035D20020D161E8716035FCED4C37D51AF9DF096D -:1035E200679FFFFBA01AF9EF13401AF905DE0DD908 -:1035F2001AF9F1B112674836FDA01AF9ED4C376796 -:103602005C0F7266736218D6FBED4C37401AF96490 -:10361200DE1F401AF901DF0667D161F85701E91A86 -:10362200F9671846FBA01AF9401AF90561C87162D8 -:1036320021675C7F70C117F1243000FD6833C0ED53 -:103642004C37675C3F70C117F1243000FD6833C00E -:10365200ED4C37675C0770C117F1243000FD683309 -:10366200C0ED4C37675C1F70C117F1243000FD6854 -:1036720033C0ED4C376770C117F1243000FD683359 -:10368200C0ED4C37CEABAC710A9E31929E02EFFA7E -:10369200D592FFDF05710B9EEFED679E99710B9E30 -:1036A2009F0DFCED4C37711222675C7F9F0EFCED83 -:1036B2004C37711222675C3F9F0FFCED4C37675C01 -:1036C2003F9F10FCED4C37675C1F9F11FCEF7B3076 -:1036D200A03EFDA23C679F16FCEF6F305B3EFDA251 -:1036E2003C679F17FCEF63307D3EFDA23C679F1A4B -:1036F200FCEF57675C01D1DD51FD5E48EF4C403075 -:10370200FCC8DE46E930FC671874FAA030FCEF3AD8 -:10371200679F30FCEF3467318E247200DF06306E13 -:1037220009FDA23C679FF9FBEF208FFCFB617F5CE8 -:1037320010D161E8CF49FC03679FFCFBEF0CEF0A55 -:10374200664C5ADE05736718D6FBC6D7C716664C99 -:1037520030DC094C37DE05FD4333EF67664C02DF90 -:103762001F8FD8FB5C03728F37FC5C03318E316D87 -:1037720008616A08128F37FC5C80312A6162EF4966 -:10378200664C3DDF0AAE90BF32FCF932FCEF3A667E -:103792004C3EDF05F933FCEF30664C4FDF05FD820E -:1037A20048EF26664C61DF09E930FC0974FA72EFD2 -:1037B20018664C7FDF0D302741FDA23C713AD5528D -:1037C2004AEF06667309D6FB72C6D7C78806161774 -:1037D200F1241000240500DC07244C00DD17EF184B -:1037E200717BFA17F104D6FB1489617F99717AFA19 -:1037F200712222EF03A030FCC6D7C7C1C1FBF8FF7C -:103802004020F903DD064020F904DF2F8C02730902 -:10381200DEFB5E0AD1DF248C02318E04D6FB1489D2 -:103822006E0A99716207CC01003162070861590181 -:103832008C01D1DFF4716307716B271004C6D7CFF7 -:1038420037FC03F535FCF539FCF53BFCD7C7880698 -:103852001617F1E734020025DD3E23DD1825DD1DB4 -:1038620023DD0523DD2CEF3C715222679F3AFCCF0A -:1038720049FC03EF2F675C839F37FCEF27675C03EC -:103882009F39FC675C034C0261F8715221FD2332BF -:10389200EF12679F3BFCEF0C6791DF08E0C150120B -:1038A200FDFC37C0C6D7C71617F1E7240000DD3A82 -:1038B20023DD23240300DD0C240200DD2224F90091 -:1038C200DD2FEF3031020705308000EF01F6086F7F -:1038D20038FC7208EF248F35FCF535FC72EF1B8F34 -:1038E20043FC9F44FCF93AFCEF107142235235EF3E -:1038F20009F2EF0666730934FC72C6D7C71617F1D0 -:10390200E7240000DD38241000DD1C23DD1C23DD4C -:1039120030240E00DD18241100DD1B240F00DD12FF -:10392200243000DD15EF1EE2EF1D5202EF195204A2 -:10393200EF155206EF115205EF0D5207EF09F2EFA4 -:10394200065203EF0252FFC6D7C731342241713308 -:10395200228F48FC9FDEFB8F47FC9FFDFB3642FD1A -:10396200C7D947FCFD473B618A70618AFD8C3BC029 -:10397200D94BFCF1312F609F4AFC8F46FC4F4AFC29 -:10398200DD0D7142228F4AFC9F46FCCF49FC034069 -:1039920049FC05DE0A30CD39FDA23CCF49FC6BB0B3 -:1039A20049FC7150F000CE300BCF170006CE310625 -:1039B200FD0D03717A30710BE3710BE7C6D78F4AA5 -:1039C200FC9F46FC8F4AFC9FDFFBD7C74020F903D0 -:1039D200DF064020F904DF04F2EDC23A8FFCFB5C03 -:1039E20010D1DD0C8F4AFC9F4FFC7148FCFBEF614C -:1039F200314422247143227163228FFCFB5C04D187 -:103A0200DD088FFBFB9F50FCEF068F4AFC9F50FCAA -:103A12008F50FC9F4FFCEF39315422237153227196 -:103A22006222D53AFCDF05F551FCEF0B8F3AFC50D0 -:103A320002D6A1609F51FC8F51FC9F4FFCEF1231C7 -:103A42006422088F51FC9F4FFCEF068F50FC9F4F62 -:103A5200FC8F4FFC9FDFFBD54FFCDF05F53AFCEFF7 -:103A62001A404FFC05DE06CF3AFC02EF0ED94FFC9E -:103A7200F11231FE03311F609F3AFC8F53FC4F3A23 -:103A8200FCDD23571F8F3AFC9F53FC5600664C08FF -:103A9200DE1073097E224F3AFCDC046677EF038660 -:103AA200EFEB679F43FC8FFCFB5C01D1DD03F2EF80 -:103AB2000FE94FFC093E2270C15013FDB605C0F25A -:103AC200C6D7C7168B728C01614ADE248B728C02B8 -:103AD200614ADE188C01728C02614ADE068C013169 -:103AE2008EEF048C02318E087208EF268B72EF2261 -:103AF2008B728C02614ADE048B72EF168C01728C1F -:103B0200026142DE068C01318EEF048C02318E0896 -:103B12007208C6D7C716710AE7710BE37150F0003D -:103B2200CE300BCF170006669E31FD0D03717A3041 -:103B3200710BE33182E302EFFA8D1F7158F00071CD -:103B42000BE772C6D7C7C1C1FBF8FF8F2EFC4E022E -:103B5200DC03F2EF318C024F2FFCDC0452FFEF2624 -:103B62008C022F2EFC706131318D128F2FFC2F2E83 -:103B7200FC70613133BDD813FDF10DBB440001DC93 -:103B820003F690BB8B721004C6D7C7C1C1FBF8FF06 -:103B9200AC0A14A91489708C026128706131FDB0DD -:103BA2004F1344030071FEDC24AC0A148A04819A88 -:103BB20004AC0A148A044C11DC11A9148C0299ACCD -:103BC2000A14CA0200AC0A14CA0310EF74AC0A1435 -:103BD200CA0400AC0A14A914894E02DE0AAC0A1403 -:103BE2008A02819A02EF13AC0A14A914894E026167 -:103BF200D308AC0A148A02919A02AC0A148A03917D -:103C02009A03D1DF3CAC0A148A024C10DF10A914CB -:103C120089318EA112AC0A14A9146299EF17AC0A69 -:103C2200148A024CF0DF0EA91489318EB112AC0A4B -:103C320014A9146299AC0A14CA0200AC0A14CA0389 -:103C4200101004C6D7ED8D3C717BFAC7D55EFC61BE -:103C5200F831742230717422711123717322D55E8E -:103C6200FCDD06B05EFCCEABAC717AFA5600664C57 -:103C72000ADD1272F3311C7948FDCEFC0061CAFDE7 -:103C8200EC3C86EFE9717AFAF2C6D7C75600664C69 -:103C920010DE0BF0317E12F67860FC86EFF0C6D7AC -:103CA200C7C1C1FBF8FFCC01008C014C10DE36719C -:103CB2007BFA8C01F0317E0460FC14A96168DF0993 -:103CC200AC02B9717AFAF2EF1D8C01F0317E1279F1 -:103CD20060FC614902DF06717AFAE2EF09717AFA51 -:103CE200615901EFC4E21004C6D7C72004FBF8FFF4 -:103CF200F64260FC61F8EDD13D717BFA9C038C03C6 -:103D02004C10DE3C8C03F0317E0460FC14A9616827 -:103D1200DF05717AFAEF29717AFA8C0372F3311C9A -:103D22007960FCCEFC0061CA629C02D1DF0A8C037E -:103D3200F0317E12E67860FC717BFA615903EFBEC6 -:103D4200CC0200CC01018C02F0317E0460FC14A98B -:103D52006168DD7B8C02F0317E127960FCE743DF23 -:103D6200688C014C10DE628C01F0317E127960FCAD -:103D7200E743DD50717BFA8C01F0317E0460FC1464 -:103D8200A96168DF1B616901717BFA8C01F0317EE8 -:103D920012F67860FC717AFA8C024E01DCE7EF2FA2 -:103DA2008C01F0317E0460FC14A9128C02F0317E89 -:103DB200337860FC8C01F0317E12E67860FC615948 -:103DC20002717AFA615901EF98615902ED483D009A -:103DD200F21004C6D7C72006FBF8FF341BFCC550FF -:103DE20006C150A8C15030FD5B031006D2DD1DA0F4 -:103DF20080FC4080FC08DE03E2EF5A3416FC895C4A -:103E0200FC99FDA03E7110E4FBF2EF49F580FC8FB6 -:103E120016FC5C01D1DD264020F903DF205010C1E1 -:103E220080FDFC37C0C736100571D4C6DE0F17C13E -:103E32005006C150A8C15030FD5B0310064020F966 -:103E420001DD114020F905DD0B8F16FC5C02D1610A -:103E5200E8FD5B45F21006C6D7D917FCC15030FD0C -:103E62003103C0629F1AFC7130E7FB8FEFFB5C08E5 -:103E7200D1DF06716307716B27F2D7D91AFCC1D95A -:103E820019FCC15030FDCD0310047130E7FB8FEFF8 -:103E9200FB5C08D1DF06716307716B27F2D7C7207D -:103EA2000AFBF8FF500FC15030FD3103C04043FB05 -:103EB20002DF077110E4FBF2EF547118E4FBCC0748 -:103EC20000CC0812CC09808F16FC5C03D1DF08718C -:103ED2007AD5CC0607EF06717BD5CC062F170406E0 -:103EE20000C15004C150A0C15030FD03041006C7E8 -:103EF20036100571D4C6DE154020F903DF0F17C155 -:103F02005006C150A8C15030FD5B031006F2100AE2 -:103F1200C6D7C74020F902DF04F6BF84FCB05CFDBF -:103F2200D55CFD61E8ED2440CF5CFD048F20F931C2 -:103F32008FE723DD0B24020024030061C8ED244037 -:103F42003028004284FCDF0AE0C15010FDFC37C07B -:103F5200EF2530FA004284FCDF0B5002C15010FD05 -:103F6200FC37C0EF128FFAFB5010D604FA004284DD -:103F7200FC61D8712022F931340709712323F6BF7D -:103F820084FCEF1731242306F6BF84FCEF0DA284D4 -:103F9200FCF64284FCDF04B1BF84FC8F23F9318F2D -:103FA200E7240000DD0623DD0D23DF123610057144 -:103FB200C4713123EF0B710402713123EF037132AB -:103FC200233132231A4086FC0361D8A086FC408646 -:103FD200FC02DF0E5004C15010FDFC37C0EF03F5A8 -:103FE20086FC3134231A4088FC0361D8A088FC4047 -:103FF20088FC02DF0E5008C15010FDFC37C0EF03F1 -:10400200F588FC314207184087FC0361D8A087FC81 -:104012004087FC02DF0C5010C1FDFC37C0EF03F5F6 -:1040220087FCC6D7C736100571D4DE0730D73DFDF1 -:10403200A23CD24020F903DF413122070630EC2BAB -:10404200FDA23C3144230C7143235080C15012FD28 -:10405200FC37C0D58AFCDD05B08AFCEF1DCF8AFC97 -:10406200068F37FC5C01D1DD118F43FC4F44FCDD30 -:10407200095040C15012FDFC37C04020F903DD0554 -:10408200F6BD1AEF25D502FCDF09F6461ADD1BB68E -:104092001AEF17D9FEFBF1461ADD0FD9FEFB12AD5E -:1040A2001A43DE04A61AEF02B61AC6D7C78FF6FB6A -:1040B20076F5F6FB5C10D161E8715223665C0FD194 -:1040C200DD60665C01D1DD05F520F9EF55665C0225 -:1040D200D1DD15E0C15003C15084FDCD0310047140 -:1040E2001300711B20710303665C04D1DD1271138E -:1040F20000711B20D537FC61F8710303CF37FC0335 -:10410200665C08D161E87103035005FDA3027102E8 -:10411200035003C1C15084FDCD031004711A20FD68 -:10412200E92CF2C6D7C7364105718461D8EDCB417F -:104132003641057194DE0771405005CEABAC31B209 -:10414200D104E2EDDA41713BD1CEABAC401AF909B0 -:10415200DE77D51AF9DF618F22F93133088F23F91F -:104162009F4005EF04CF400504F0C15084FD3103A8 -:10417200C0629F8EFC8F32FD9F8FFC3690FCC75031 -:1041820002C15008C1506CFD5B0310068F8CFC9F6E -:1041920092FC8F02F99F93FC713420E66130127118 -:1041A200042061DC31196162629F94FC8F22F93133 -:1041B20069317A9F95FCEF0BD91AF9F112498DFCFE -:1041C2009F4005A01AF9E2EF0F7160500571485047 -:1041D20005713BD5F51AF9F2C6D7C78F20F9318F91 -:1041E200E724000061F8EDAD4323DD1B2361F8ED08 -:1041F200B4422361F8ED32432361F8ED7B4323613E -:10420200F8ED4A44EDAD43D521F9DF2BF64284FCAB -:10421200DD05F55EFDEF03A05EFD405EFD65DC0998 -:10422200F520F9717222EDCA44AF84FC440A0061A0 -:10423200D8EDCA44E521F9712223F55EFDF5F9FBBB -:10424200FD2705714320FDFB234023F903DF09719C -:104252007222F520F9EDCA44FD222740E3FB9BDEE2 -:1042620009717222F520F9EDCA44714A2771401191 -:104272000571301105713A22715A22711A2EFD21EF -:104282002BD2DD09717222F520F9EDCA4471103585 -:1042920000CF37001D714012054021F901DF05F5FD -:1042A200FFFBEF04CFFFFB03CF20F902FDFF2AED56 -:1042B200CA44FD142DFD742D714A9DFD4138FDE166 -:1042C20033F537FF712BE0F521F9717222CBE43F10 -:1042D200EFCBE6F6F0FD2705713BD48F22F93105CD -:1042E200305004C15084FD3103C0625C03318E3111 -:1042F2005D34E5FB896168995002C15084FD310348 -:10430200C0D2DD067170E5FBEF047178E5FBFDFBC1 -:1043120023FD2B2E710822F9CF20F9038FD8FB5CE5 -:1043220002D1DD095080C15010FDFC37C0EDCA44F6 -:10433200FDCC4431A4E020712BE031020C05FD4696 -:1043420045EF145027C15005C15084FDCD03100420 -:10435200CF20F9047172223154230BA098FCD59816 -:10436200FC61F8FD4645FD39458F22F9314507319B -:10437200040703F520F9EDCA44FDCC4431020C18C0 -:10438200F0C15005C15084FDCD0310045005FDA3BA -:1043920002FD4645CF20F903FD39458F22F931450B -:1043A2000731040703F520F9EDCA44F520F9CFFFE0 -:1043B200FB03F500FCF502FC713221F6426CFF6151 -:1043C200E8EDCA44712822F9F516FCFDA03EFDBBBA -:1043D2002EFD6B2DFDC92D714B9DF5E6FBF5E7FB1F -:1043E200F5E8FBF5E9FB31042102EFFACE3708CB01 -:1043F200E4BFFFCBE6FFF1CED4FFCF37000971480F -:104402001205F6BEE0BEE2BED0716A27FD9E2B7198 -:104412004307714B27714810057148110571381017 -:104422000571381105713302713B22715302715BC0 -:104432002271130E711B2EFD9005F55EFDCF20F942 -:1044420005712223F6BF84FC3102072CFDFB23AF4A -:1044520084FC440A00DC06E521F9E520F9D523F9BC -:1044620061E8FD90058F22F931455D502EFDA302D2 -:10447200E521F9E520F9EF50D50BF9DF4BF521F9EC -:10448200FD9005FD7F237173017132043112050223 -:10449200EFFA71430271032071422031949E02EFC0 -:1044A200FA712AE7CEA409F5F30061FD310407038E -:1044B200712323E5F300CEA408712BE7E520F98FE1 -:1044C20022F9314503F520F9C6D7D599FCDF1E3113 -:1044D2000200195003C15084FD3103C0625C01D156 -:1044E200DF07F520F9717222D7E599FCD74099FCD4 -:1044F200F0DF083104003FF599FCD74099FCC8DF92 -:104502000BF520F9717222CF99FCF0D73102000429 -:10451200A099FCD7F0C15004C15084FDCD03100412 -:104522008FE5FB5C9F9FE5FB7110F6FB30AE40FD13 -:10453200A23CCF99FCF0D78F22F9312506F520F95C -:10454200717222D7715323F598FC717207FD0D0326 -:10455200717307D7FDFD05F2D7C7200CFBF8FF8F5B -:104562001CFCF0F91BFCF303FDB04F13BC048F1EBF -:10457200FCF0F91DFCF303FDB04F13BC028F20FCCD -:10458200F0F91FFCF303FDB04F13BBAC04BDD8F62A -:10459200BDDAAC04311EBDDCF6BDDEFDA40DADD826 -:1045A200BDDCADDABDDEAC02BDD8F6BDDAAC02319F -:1045B2001EDADCC3DADEC3BDDCF6BDDEFDA40DC04F -:1045C200BDDEC0BDDCADDEFD1A0FADD8BDDCADDA9F -:1045D200BDDEABBDD8F6BDDAAB311EDADCC3DADE46 -:1045E200C3BDDCF6BDDEFDA40DC0BDDEC0BDDCADCD -:1045F200DEFD1A0FDADAADD8FDAC49C3C58F26FD50 -:104602005C3FF0317E04A6FC14C2C0B9A026FDF6C0 -:10461200BC08BC0A9C078C074C2EDD3E8F26FD0E83 -:104622000770F161DC605C3FF0317E1279A6FCBD5F -:10463200D8F6BDDA8C0773098822318FBDDC70BDD4 -:10464200DEFDA40DAC08BDDCAC0AFD1A0FADDABC70 -:104652000AADD8BC08615907EFBCAC08BDD8AC0A9A -:10466200BDDAC9DC0004F6FD6E0EC9DCFFFFF6FD03 -:104672006F0FADD8BFA0FCAF9AFC42A0FCDD12AF19 -:104682009CFCBF9EFCAF9AFCBF9CFCAFA0FCBF9AF7 -:10469200FCAF9CFC429EFCDC50AF9AFC429CFCDED0 -:1046A20048AF60FD429AFCDE404064FD16DC1F40CC -:1046B20064FDA0DE168FA2FC4F64FDDE0EAF9AFCF5 -:1046C20022A4FC44691061C8FD3447F564FDAF9A29 -:1046D200FC445146DC0BAF9AFC241027BF62FDEF6D -:1046E2001930F82ABF62FDEF114064FDFFDD03E6D9 -:1046F200EF01F63464FD89610899AF9EFC429CFC8F -:10470200DC1BAF9CFC429AFCDE13AF9AFC4262FDBA -:10471200DE0BF5A2FCAF9AFCBFA4FCEF1140A2FC99 -:10472200FFDD03E6EF01F634A2FC89610899100C63 -:10473200C6D7C72006FBF8FFA021FCD521FCDF1C51 -:10474200A022FCD522FCDF14A023FCD523FCDF0C25 -:10475200CF21FCFFCF22FCFFCF23FCFF717BFA713C -:104762000A9E31929E02EFFA8E98FD830F9C039F60 -:104772002AFD8E949F65FD8E969F66FD8E979F679C -:10478200FD8E939F28FD8E929F29FDFD154913BC36 -:1047920004BDD8F6BDDA46DADF03B146D8DF198C9C -:1047A200035C0391DF03E6EF01F6046D01313D1274 -:1047B2000103B1BC046169038F68FD4E03DF12AFD0 -:1047C2002CFD614904DE40AC04222CFDFD3648EF8D -:1047D200368C03318EB112D968FDF143DF1E8C0392 -:1047E2005C0391DF03E6EF01F6046D01313D120136 -:1047F20003222CFD610904FD3648EF0B8F68FD4E44 -:1048020003DE04F6FD36488C039F68FDAC04BF2C22 -:10481200FDD927FDF1010424F9BB14A944FFFFDFF0 -:1048220004E6B9EF0BAB14A944FEFFDD03A9A1B95D -:104832001006C6D7C7161744A90061C836A800A03B -:1048420027FD4027FDA861C8F527FDF927FDF331B3 -:104852001CF67824F9B7F647DFE5C6D7C756A896FF -:1048620066F0317E12F6B17824F966D1DFF1F521D6 -:10487200FCF522FCF523FCF527FDC6D7716323D78F -:10488200C72004FBF8FFD91AF9F1E7240000DD1173 -:1048920023DD1C23DD2123DD2623DD2F23DD34EF61 -:1048A2003A8F27FD9F2EFDA01AF9F965FDEF60A052 -:1048B2001AF9F966FDEF58A01AF9F967FDEF50A051 -:1048C2001AF98F2AFDFD9D0F72EF44A01AF9F928FB -:1048D200FDEF3CA01AF9F929FDEF34F92EFDF33171 -:1048E2001C7924F9BB316223058B9C03EF128C01E6 -:1048F2009C03D52EFDDF06CF2EFDA7EF03B02EFDC4 -:10490200718071672361DC61FB7161238C0372101A -:1049120004C6D7C72008FBF8FF8E989C058E979C8B -:10492200048E969C038E949C028E939C018E929B85 -:10493200710B9E717AFA8C05FD830F9C058C04FD28 -:10494200830F9C048C03FD830F9C038C02FD830F59 -:104952009C028C04F0317E1279B822BC068C055C74 -:1049620003D1DF098C044C0361C86179068C0331E1 -:104972008EB1610906BC06313D120103BC068C06EC -:104982000E02708C071C00BC068F26FC4E01DC0D4B -:104992008C014F26FCDC0B8F27FC4DDE05AC06128A -:1049A200EF04AC06B1121008C6D7C7C3C12008FB7A -:1049B200F8FFF661490A61F8614908DF07F7340038 -:1049C20000ED494AE6BC04F6BC06AC0ABC02AC08DF -:1049D200BBAC06614902AC0461F8614900DE28AC57 -:1049E20004BDD8AC06BDDAE1FD290FADDABC06ADD7 -:1049F200D8BC04ABBDD8AC02BDDAE1FD440FADDAE0 -:104A0200BC02ADD8BBEFCAAC06BC02AC04BBAC085E -:104A1200BDD8AC0ABDDAAC04BDDCAC06FDA70EAC59 -:104A220004BDDCAC06FD1A0FE1FD440FADDABC0695 -:104A3200ADD8BC04AC06614902AC0461F86149001E -:0B4A4200DCC5AC0214AB12100CC6D790 -:104A4D0061FC61FCC1C3C5C7520C929269D4FEC111 -:104A5D00DFF88EFD708EFCC1717AFA4020F903DF0C -:104A6D000630EC2BFDA23CC09EFC609EFD34D4FEB6 -:104A7D005206C0B9A5A592DFF9C6C4C2C061FC61DA -:104A8D00DF520C929269D4FEC1DFF88EFD708EFC60 -:104A9D00C1717AFAC736410571A4C6DC51F534FDF2 -:104AAD0071485005716050053124223671620771CD -:104ABD0023228FE6FB5FEEFBD1DF1B8FE7FB5FEF62 -:104ACD00FBD1DF128FE8FB5FF0FBD1DF098FE9FB34 -:104ADD005FF1FBD1DD0C31620702EFFA71630771F3 -:104AED006B27FD7E48FD8D33F51AF9ED104CC73659 -:104AFD0041057184C6DE0DF534FD71485005FD8DFF -:104B0D0033ED104CC73641057194C6DE154034FDAA -:104B1D0003DD0C4034FD04DD064034FD0161F8F584 -:104B2D0034FDD934FDF1E7240000DD0823DD132326 -:104B3D00DD39EF6071405005E534FD71505005EDE4 -:104B4D00104C8F40059F1BF99F1EF9D91BF9FD4E87 -:104B5D0037629F1DF9401BF97FDD06CF34FD02EF53 -:104B6D0003F534FD71505005ED104CC736410571FC -:104B7D0094C6DE1CC736410571C4C6DE06CF34FDB2 -:104B8D0003EF11F534FD7148500571605005EF7359 -:104B9D00CF34FD044034FD03DF138F1DF99F400515 -:104BAD00D91DF9C1D91BF9FDCD37C0EF108F4005C7 -:104BBD0076C7D91BF9FD1234C071505005D91EF9B5 -:104BCD00F1242900DD2D240400DD28242200DD231D -:104BDD00241100DD0C240100DD19241E00DD14EF6D -:104BED000C401BF960DF0CCF1BF961EF06F51AF9CC -:104BFD00A01BF94034FD03DF0AD91BF9FD4E3762C6 -:104C0D009F1DF9C09EFC609EFD34D4FE5206C0B9B6 -:104C1D00A5A592DFF961FCC1C3C5C7520C9292697B -:104C2D00D4FEC1DFF88EFD708EFCC1F616717AFAD6 -:104C3D00714AE5717BBD51405F0401D1DD05A7F6D9 -:104C4D0047DFF3300400BF2401F6BF2A01300B0B00 -:104C5D00BF2801FD0D03300B0FBF2801FD0D0330E3 -:104C6D000F0FBF2801710AE6710321C09EFC609EE3 -:104C7D00FD34D4FE5206C0B9A5A592DFF9C6C4C253 -:104C8D00C061FCC1C3C5C7520C929269D4FEC1DF8D -:104C9D00F88EFD708EFCC1717AFAD542FBDD0EEBFC -:104CAD0040FB899E44A240FBB042FBEF2B710AE60C -:104CBD00300400BF2401F6BF2A01300B0BBF2801C1 -:104CCD00FD0D03300B0FBF2801FD0D03300F0FBF7E -:104CDD002801717320710321C09EFC609EFD34D4A8 -:104CED00FE5206C0B9A5A592DFF9C6C4C2C061FCCB -:104CFD0061EF520C929269D4FEC1DFF88EFD708E79 -:104D0D00FCC12008FBF8FF71503002CEABACCC01DA -:104D1D0000F6BC0231B2E20F617902F6614902DFA1 -:104D2D00F371603002EF7E8E519B713BE28B5C0222 -:104D3D00D1DD1D8B5C08D1DF0971503002CC010033 -:104D4D00EFCF8C0770FDA838629E50CC0102EFC1E9 -:104D5D008B5C03D1DF408E509C05715030028C016D -:104D6D00D1DF0E8C0570FDFE38629C07CC0101EF82 -:104D7D00318C014C02DF0671603002EF28CF340216 -:104D8D005A716030028C0570C18C0770FD4F38C0B0 -:104D9D00CF34024AEF0F8B5C01D1DD06716030021A -:104DAD00EF03ED1E4D1008C09EFC609EFD34D4FE39 -:104DBD005206C0B9A5A592DFF961FCC1C3C5C752A2 -:104DCD000C929269D4FEC1DFF88EFD708EFCC1711C -:104DDD000A9E31929E02EFFA8F10FC4F96FFDF195B -:104DED008F11FC4F97FFDF118F12FC4F98FFDF09DA -:104DFD005004C15011FDFC37C0710B9EC09EFC606C -:104E0D009EFD34D4FE5206C0B9A5A592DFF9C6C4E5 -:104E1D00C2C061FCA05EFC61FCC1C3C5C7520C924F -:104E2D009269D4FEC1DFF88EFD708EFCC1C1FBF816 -:104E3D00FF8D1F9C018E31318EE7240600DD082386 -:104E4D00DD0F23DD25EF45717AFA8C019F48FCEFCC -:104E5D003B717AFA4023F901DF078C019F47FCEF84 -:104E6D002B51FF2E019F47FCEF22717AFA8C019F87 -:104E7D0002F98FE4FB5C01D1DF124020F903DD065E -:104E8D004020F904DF06306426FDA23C4031FF09C5 -:104E9D00DE05A031FFEF197158F000713222405D2F -:104EAD00FC02DF03F6EF05D95DFCF1A1609F5DFC0F -:104EBD00710BE3C0C09EFC609EFD34D4FE5206C053 -:104ECD00B9A5A592DFF9C6C4C2C061FC61FF520C41 -:104EDD00929269D4FEC1DFF88EFD708EFCC1717A9D -:104EED00FA8F16FC5C03D1DD194020F903DD064075 -:104EFD0020F904DF0D36100571D4DE0630D73DFDE7 -:104F0D00A23CC09EFC609EFD34D4FE5206C0B9A5E5 -:104F1D00A592DFF961FC61FC61FC61FC61FC61FC47 -:104F2D0061FC61FC61FC61FC61FC61FC61FC61FC8C -:104F3D0061FC61FC61FC61FC61FC61FC61FC61FC7C -:0E4F4D0061FC61FC61FC61FC61FC61FC61FCCB -:0A4F5C0000060C12181E242A30363D -:104F660000163248648096122844607692082440DF -:104F7600FF000000555555554700DEFB00000000B8 -:104F86004BFC00000000143F4B39D222D32E643074 -:104F9600E130233226407C09DC4101000000983ACA -:0A4FA600F82AFF23301299000000E2 -:084FB000317503F7332312D71A -:0A4FF60030383A35343A3333000006 +:0A00CE00FFFFFFFFFFFFFFFFFFFF32 +:1000D800C7C1FBF8FFCEABACC736F00071F4C66100 +:1000E800D8710016F98EA89C018C015C10D1DD0A2C +:1000F8007110BEFB710016F9EF0B8C015C80D161A9 +:10010800E8710016F98F16F931030EF6B1BBF661E6 +:100118004900DD05618900EFF5FDDE01FD3201FDD5 +:100128008A01FD6E02EFAEC0C6D7C7360000674C25 +:1001380009DE3F318E04F60FC1317B9EFDC4118963 +:100148007267318E04F64F14896142DF03F6EF01BE +:10015800E660610667318E124900207267318E04AD +:10016800F64F14896142DF03F6EF01E66061068706 +:10017800EFBC40F84F3A61E88666D161E8FDDB06DE +:10018800C6D751105B0C319E609F18F94018F901D1 +:10019800DF05CD2F05EF03CD2F078F16F95CE39F01 +:1001A80016F951035B04318EE7240000DD1023DDCE +:1001B8000823DF0E712016F9D7713016F9D7714070 +:1001C80016F9D7717BFACEA010CEA180E5F300CE48 +:1001D800A408F5AAFFD78F16F9310508CD0003CD7D +:1001E8000307EF03CD030ECE23F88F16F931030B67 +:1001F800CD0408CD0508F690BFB401CF1105F8F578 +:1002080021FFCE22E9CE24F3CE25FACE26FCCE2736 +:100218005FCE2EFCCF120511CF350002CF37001963 +:10022800CF530006CBEEFEFFCE3831CE3970CF3833 +:10023800050A308700BF1801BF1A01BF1C01BF1E85 +:1002480001D7C7C1C1FBF8FFCEABAC8C02D1DD1220 +:10025800616902305C03BBF6614900DDEE6189002B +:10026800EFF51004C6D7FD410AFD7309FD6E2FFD99 +:100278005338FDCC04717AFAFDAE23F514F98F16C4 +:10028800F93105135003FD5E2B625C01D161E8CFA3 +:1002980014F902CFC7FB64FD4E30FDB74471025F0D +:1002A800712BE7FD5638FDF53861EDEFF6D7D7C766 +:1002B800F616FDCC04717BFA31225D0871225D715E +:1002C8007AFAEF0B717AFAA7F647DFE9E2EF01F263 +:1002D800C6D7C7C1C1FBF8FF17A1C1E0C18C0A701E +:1002E800C18C0270FD02031006D2DF04F437EF035D +:1002F800CD37028C01721004C6D7C7C1FBF8FFFDC9 +:10030800B702D2DD03E2EF618B70FD2004D2DD0776 +:1003180071235D5202EF528C0870FD3504FD800494 +:100328008B6C0170FD3504300400BF240130174088 +:10033800BF1C01300400BF22018C0A91DF04F6BF04 +:100348002A01710BE2CE44FF3182E202EFFAAC0CD3 +:10035800148E449961790C61690A8C0AD1DFDAFD3F +:10036800A904710BE271235DF2C0C6D7C7C1FBF8BF +:10037800FFFDB702D2DD03E2EF25710AE68B70FDBF +:100388002004D2DD0771235D5202EF138C0870FD43 +:1003980035048C0A70FD3504FDA90471235DF2C093 +:1003A800C6D7C7C1FBF8FFFDB702D2DD03E2EF6590 +:1003B800710AE6710BE28B70FD2004D2DD07712310 +:1003C8005D5202EF50710BE231125D39C73432FBD6 +:1003D800AC0C1652048B99A5A792DFF9C63184BDDF +:1003E80002EFFA717ABDCEB144CBB432FB8C0A313C +:1003F8008EBEB8CEBB48714BE1714BE5710ABD8C1E +:10040800089E44EF0F710BE68C089E448C0A9D36BB +:10041800AC0CBD34F2C0C6D7C716FD580417FD355D +:1004280004D2DD06FDA904E2EF01F2C6D7C71671B2 +:100438000AE6710BE2669E443182E202EFFAF64266 +:100448000401DD09AF0401BF0C01E2EF01F2C6D7D8 +:10045800AF2801085CFB08BF2801FDB602AF2801E0 +:100468005CFBBF2801300400BF2A01301780BF1C85 +:1004780001300400BF2201D7AF2401086C0408BF73 +:100488002401AF28016C0F086C0B08BF2801FDB6CA +:1004980002AF2A01085CFB08BF2A01FDB602ED582D +:1004A80004300400BF2401F6BF2A01300B0BBF281B +:1004B80001FDB602300B0FBF2801FDB602300F0F49 +:1004C800BF2801D731345D01D771225D710BBD00A2 +:1004D80000717BBD6A0E03713B25713B23E0FD4A29 +:1004E800027120F000FDB602F6BF26015024BF14A9 +:1004F80001CB440014300F0FBF280171135D710B3D +:10050800E2710AE6FD5804CE44FF3182E202EFFAB6 +:10051800FDA904AF0401BF0C0171235D71325DD7E1 +:1005280031245D02EFFAFD8004713A25713A235AAD +:100538000EFC7128F00071335DD7C7880616FDB729 +:1005480002D2DD03E2EF38710AE650A4FD2004D29E +:10055800DD0771235D5202EF2617FD35046770FD34 +:100568003504FD800450A4FD35045020FD3504D920 +:1005780036FBFD3504A036FBFDA90471235DF2C6E8 +:10058800D7C72008FBF8FFFDD9085014C15008FD53 +:100598000B08C0CC07048C074C14DE0C8C07318E7A +:1005A800FD580A615907EFEECC07048C074C14611B +:1005B800C8ED7706CC06008C064C0461C8ED5606DB +:1005C800301AF9BC02F6BBCEABAC31B2D109C73692 +:1005D80041057184C6DEF3F1C73641057184C661F1 +:1005E800DC9C05713BD1AC02148F400599715050C9 +:1005F80005617902617900F0E1614900DD09C736DA +:1006080041057184C6DEC3F1C73641057184C661F0 +:10061800DC0E059C055040C18C07318E31AD128C23 +:1006280006318E318D03BDD831FFBDDADADAADD8A7 +:10063800FD240DC0D2DD0C5008C15014FD0B08C0BC +:10064800FDE10B8C05D1DF06615906EDBF058C076E +:10065800318EFD5C0AD2DD0C5008C15014FD0B0828 +:10066800C0FDE10B8C05D1DF06615907EDB30571BB +:10067800605005CC0400CC05008C054C09DE2B8CA1 +:1006880005318E04F61FC1317B9EFDC41189728C21 +:1006980005318E04F64F14896142DF03F6EF01E657 +:1006A800600E049C04615905EFCF41001140F81F0A +:1006B8003A61E86159048C04D1DF08FDE20BFDF4CE +:1006C8000CEF0C5008C15014FD0B08C0FDE10B10D5 +:1006D80008C6D7C72004FBF8FF715B21CC0100F6E0 +:1006E800BC02AC02440900DE3EAC0204F60F144121 +:1006F80000118972AC020C5014896142DF03F6EFD5 +:1007080001E6600E019C01AC021249005072AC0275 +:1007180004F67F14896142DF03F6EF01E6600E01FB +:100728009C01617902EFBB40F67FFF61F8615901D6 +:100738008C01D161F8EDD907CC0100717AFAFDCCB2 +:1007480004711300711B20710303710205E0C1508D +:1007580003FD4D2BC05013FD4A02500FC1E0FD4D63 +:100768002BC0CEABAC6159018C0191DD068C014CDC +:1007780003DF03E6EF01F66061FB7151018C014C68 +:100788000861F8CC010031320705A044FCEF03F5FD +:1007980044FC4044FC11DC0DF544FCF0C15003FD61 +:1007A8004D2BC0EF12E6BC02F6614902DDB4000031 +:1007B8000000617902EFF1CE3708CBE4FFFFCBE60A +:1007C800FFF7CED4FFCF370008F5120561FDF5AB72 +:1007D800FFFDD908D25008C15014FD0B08C0D2FD46 +:1007E800E10B1004C6D73184BD02EFFA717BBDCB93 +:1007F800E4FFFFCBE6FFFFCBD4FFFF717ABED771D2 +:100808007BBED7C7C1200CFBF8FF8C0C318E31ADF5 +:10081800C1317B9DD4C0BC068DD49C088C149C0B24 +:100828008C14318E040C00128C0B318EBDD813FD44 +:10083800B30F61C8EDD408CEABACCC05068C0B3138 +:100848008EFD540AD2DD158C0B318EFD580A616974 +:10085800058C05D1DFE7FD0708E2EF71CC0A008CB3 +:100868000A4C04DE54F6BC02301AF9BBAC06148CF0 +:10087800089EFD118972AB146299AC06A1BC066191 +:100888007900617902F0E1614902DFE05040C18CF2 +:100898000B318E31AD128C0A318E318D03BDD831BA +:1008A800FFBDDADADAADD8FD240DC0D2DD06FD07CA +:1008B80008E2EF1961590AEFA68C0B318EFD5C0A2C +:1008C800D2DD03E2EF0761590BED2808F2100EC6DE +:1008D800D7C7717B9D717BFAFDEE07301AF9FD07CA +:1008E8000BFD920AC6D7FDD908FDE10BFD0708F5F7 +:1008F800ABFFF2D7C7317460067110CBFBEF047100 +:1009080018CBFB8FCBFB7FF4FC76D1DD5C8FCBFB68 +:100918009FF4FC4014F903DF22665C10D1DD1C8FC4 +:10092800CBFB5C10D1DD0B5080C15011FDA634C04B +:10093800EF095040C15011FDA634C04014F903DD41 +:10094800064014F904DF22665C02D1DD1C8FCBFB64 +:100958005C02D1DD0B5040C15010FDA634C0EF0938 +:100968005020C15010FDA634C0C6D7C78F0EFC76E4 +:100978008F0FFC77665C80D1DD10675C80D1DF0566 +:10098800712360EF0B712260EF067104077121601B +:10099800665C40D1DD10675C40D1DF05713360EFE4 +:1009A8000B713260EF06711405713160665C01D11C +:1009B800DD10675C01D1DF05714360EF0B714260A8 +:1009C800EF06713407714160665C02D1DD10675C27 +:1009D80002D1DF05715360EF1D715260EF184017A7 +:1009E800F901DF08710402715160EF0AC73610057A +:1009F80071C4C6715160665C04D1DD10675C04D1B6 +:100A0800DF05716360EF0B716260EF067144077177 +:100A18006160665C08D1DD10675C08D1DF05717321 +:100A280060EF0B717260EF06711407717160665C9C +:100A380010D161E8715AD1C6D7F50EFCF510FCCF7C +:0C0A480016FCFFCF12FCFFCF13FCFFD701 +:100A54005208EF065203EF025206FEE600FE1B00A8 +:100A6400DC16089F03088F0408089F040862FE240C +:100A740000089F0408EEBF00EEBA00C1C514410E81 +:100A840011D9D0FF118FD1FF312E45C4C0D7F23117 +:100A9400A2C401E2D79DE261DD4C09DF12717BFA49 +:100AA400C18F06089F53FDC0CF060800EE27003112 +:100AB400F2FA04CF0608004C00DF05D50008DD1665 +:100AC40061DD717BFAD50608DD0ACDE31F61CD61D6 +:100AD400CDEE160061CDFED40061FFFE9A00FCF855 +:100AE400FF0EFEB20061CDFED5004C09DF0EC18FB2 +:100AF40006086F53FD9F0608C0EE0400CF060800E9 +:100B0400F8E3D75200EF025202FE3700CF52FD0045 +:100B1400CF060800BF0408C716629F0008410011F1 +:100B24008F26209B4100118F27209F0108C651006A +:100B3400FE62FFEF025205CF060800C1510CFE0A07 +:100B440000C0D7C1511DFE0200C0D761DD717BFA20 +:100B540070CEC0A59EC47CFF9EC4609EC461CDD7E8 +:100B640061DD717BFAC18EC45C1BFED6FFCF060823 +:100B740001FED7FFC061CDD731F2FA1AC1AEE4BF8E +:100B840044FDAEE6BF46FDAED4BF48FD30FFFFBE18 +:100B9400E4BEE6BED4C0D731F2FA11C1AF44FDBE03 +:100BA400E4AF46FDBEE6AF48FDBED4C0D7C1BF4AE0 +:100BB400FD13BF4CFD15BF4EFD17BF50FDC0D7AF91 +:100BC4004AFDDB4CFDEB4EFDFB50FDD7534B305241 +:100BD4005430324E323030475631323000FFC1503B +:100BE400FEFEAB0061DD717BFACF060800FE0A0051 +:100BF400FEA4FF61CDF8E3EECF00C7FB0408BF44B9 +:100C0400FD8FC0009C05C5C337040600BF46FD35F3 +:100C140036460C300000522BFE6600C2C4C630F4C7 +:100C24000BB800300000B8022004AF46FDB8003015 +:100C34000F00B802AF44FD61FF520AFE3AFFECF820 +:100C4400FF0E717BFAC1C7FB04088C05C65C80FEED +:100C54000200C0D761DD717BFA70CFC0FFA59FC0D1 +:100C6400007CFF9FC000609FC00061CDD7618BFEF8 +:100C7400E2FF717BBE410011FB000017CEFC006156 +:100C8400CB089EFDF31161C999A58392DFF7D7FEC6 +:100C9400B1FED552FDDF23C1CF0308035109FEF491 +:100CA400FDC0D2DF37FE3800A20408CF0308075185 +:100CB40009FEE1FDD2B20408DF22C7FB0408318338 +:100CC40002C6D7C6510AFECCFD624C1FDF06CF52C6 +:100CD400FD01EF04CF52FD00C0EE5BFEC0EE55FEF9 +:100CE400C7C1FB04088B31196C0161589BC0C6D77E +:100CF400717BFAFE4DFEAF0408040600C114365899 +:100D04000C300000522DF3FE77FF8FC000FE2BFE47 +:100D140061CF5C807C8073C0041900CEFC0F61CB72 +:100D2400C55404EF03C55417FE18FEC7360008BBAC +:100D3400629C0288089C03D1DD334C41DE2F70F1A4 +:100D4400312DB161090033081C000851FF612A41AB +:100D54000E118FD0FF613B118FD1FF6138DC0E8BF8 +:100D64005C03DF0964C6C4FE2BFDEECAFDC6C4EEF7 +:020D7400C3FDBD +:100D760061CF5100718C7109FECBF800FEFCCB01EE +:100D860000F6BF00F953C0F693935820FEDFF941F1 +:100D96000036C04D34FEFCEF05118B99A7A517440C +:100DA600064EDFF53602F930FEFCEF04CC0000A754 +:100DB60047DFF9410036064E3420FEEF05118B99C8 +:100DC600A7A517440E4EDFF53628FE305CFEEF046D +:100DD600CC0000A747DFF9FCD80000EFFE61DD710B +:100DE6007BFABEF0ADD8BEF200AEF661CDD7C361D8 +:100DF600DD717BFABEF0ADD8BEF200DBF6FFADDCEE +:100E0600BEF000AEF6BDD8AEF40312ADDABEF20007 +:100E1600AEF661CD03BDDAC2D7C3F33174D9088308 +:100E2600C1F626D8BDD8C031750683C312F623C2D3 +:100E3600FD410E93DF0312F623C2D7440000DD26E0 +:100E460061DD717BFACFE80080BEF6F6BEF4BEF235 +:100E5600ADD8BEF0CFE800818FE8003103FAAEF0DE +:100E6600F5E80061CDD7B1D7C3F33174D90883C192 +:100E7600F626D8BDD8C0317505C312F623C2FD8F3C +:100E86000E93DF0312F623C2D7440000DD2761DD8F +:100E9600717BFACFE80080BEF6F6BEF4BEF2ADD89E +:100EA600BEF0CFE800818FE8003103FAAFE000F52D +:100EB600E80061CDD7ADD8D7C3F33174DB0F83C15A +:100EC600F626D8BDD861317026DABDDAC031750D87 +:100ED60083C312F626DCBDDC61317023C2FDF70E3A +:100EE60093DF0CF626D8BDD861317026DABDDAC29A +:100EF600D7C161686BDC6BDDC0DD2F61DD717BFA0C +:100F0600CFE80080BEF4ADDCBEF6ADD8BEF0ADDAFB +:100F1600BEF2CFE800818FE8003103FAAEF0BDD80B +:100F2600AEF2BDDAF5E80061CDD7F6BDD8BDDAD7A9 +:100F36008292DD2B61DD717BFACFE80080BEF0F690 +:100F4600BEF2BEF46208BEF6CFE800818FE800313B +:100F560003FAAFE0006072AEF0F5E80061CDD7604D +:100F660072F6B1D706DABDDAADDC06D8BDD861D8DF +:100F7600A6DAD7D1DD17C1C3DAD89DD8ADDA311CD0 +:100F860061EEB4D8DFF8BDDA13BDD8C2C0D7D1DD63 +:100F96001BC1C3DADA9DDAADD8311E33311E337187 +:100FA600F9B4DADFF4BDD813BDDAC2C0D746D8DD4E +:100FB6000771FF7177D971C0D75BDB9DDB605BDAA8 +:100FC6009DDAADDC5BD9085BD808BDD8D7C3C7F3BB +:100FD600728EFDC162314C410036B64D1161A07270 +:070FE600C09EFD62C6C2D7E8 +:0A0FF60031383A34303A303400004C +:0A20000031383A34303A3034000031 +:10200A0005214F7B9EC5E900C4FB0000000040FE8D +:10201A00000000000104080D12171C1F080100002F +:10202A001F003B005A0078009700B500D400F30067 +:10203A00110130014E011926344453626E777D80B6 +:10204A00807D776E625344342619100A08080808FE +:10205A00080808080A10AEF0B430B740BA30BB50CE +:10206A00BBB0BC50BD10BD60BDB0BFE0C2B0C420A3 +:10207A00C7B0CAE0CE1001F01410142006306390E5 +:10208A0049006E0077707B001900190017F01C6078 +:10209A0012001200120002005C003600A70000D8ED +:1020AA00EAE88C309C10A5E0B040B1C0B200B25052 +:1020BA00B310B490B620B860BA50BFA0C6B0CE90E4 +:1020CA00D02000200020002000207B306860200003 +:1020DA001700173012F00DE007F00700093001C0B1 +:1020EA0001C00100AB000000670020DA6967A12087 +:1020FA00B750B9D0BB00BC30BC60BCA0BD10BDC0DD +:10210A00BE70BFD0C2A0C400C850CC80D0B001A05D +:10211A00251018B017C095206FE07C603510350087 +:10212A0037F016F01CA0173011D011F011F0020090 +:10213A005E00A7002700B0DAF5F38C309C10A5E00A +:10214A00B040B1C0B200B250B310B490B620B8607B +:10215A00BA50BFA0C6B0CE90D020002000200020E8 +:10216A0000207B30686020001700173012F00DE065 +:10217A0007F00700093001C001C00100AB000000F0 +:10218A00670020DA69670000000000000000000014 +:10219A000000000000000000000000000000000035 +:1021AA000000000000000000000000000000000025 +:1021BA000000000000000000000000000000000015 +:1021CA000000000000000000000000000000000005 +:1021DA0000000000000000000000000000000000F5 +:1021EA0000000000000000000000000000000000E5 +:1021FA0000000000000000000000000000000000D5 +:10220A0000000000000000000000000000000000C4 +:10221A0000000000000000000000000000007F7EB7 +:10222A007D7C7A7978777675747271706F6E6D6C61 +:10223A006A6968676665646261605F5E5D5C5A5977 +:10224A0058575655535251504F4E4D4B4A4949488B +:10225A00474645434241403F3E3D3B3A39380102F9 +:10226A000203030200FEFBF7F3F0F0F3FA0412256F +:10227A00384D5F6E777A776E5F4D38251204FAF320 +:0E228A00F0F0F3F7FBFE000203030202010076 +:102298008F04F9B004F9D1DF47CF04F91EFD4723B5 +:1022A800FDE92231325C0D31045C0931226005718F +:1022B8003304EF03713204FD202331225C0571429F +:1022C80002EF03714302D42ADD05B42A71420231B8 +:1022D8004402067140CBFBEF047148CBFBFD1C2682 +:1022E800D74A284BDC134A28B9DE0E4005F928DE08 +:1022F80004A005F9D771335CD74A283EDC054A2883 +:10230800BDDC0E4006F928DE04A006F9D771325C60 +:10231800D7F505F9F506F9D73132600E4007F9020D +:10232800DE04A007F9D771235CD73132040A40C70D +:10233800FB3CDE0471235CD771225CF507F9D7C733 +:10234800C1FBF8FF71445C712760DE57712460712E +:10235800415C312260127130CBFB5002C15011FD3B +:10236800A634C0CD2A32EF3B7138CBFBE0C1501107 +:10237800FDA634C0F42A17C15002FD352BC0D2DFA8 +:102388000D8B318E318D080E01081C00BD2CAD2C33 +:1023980044009BDC05D5C7FBDF095020C15011FD67 +:1023A800A634C0C0C6D7C78D2076FDF023FD692BA3 +:1023B800D517F9DD0571035CEF2C664B2061F83108 +:1023C800545C1A71535CFDCC04664C07DD0381DF55 +:1023D800098F16F9310303FD7924FD8D2471025C00 +:1023E800307025FDAB38C6D7C771620171720150D4 +:1023F80005FD4A025008FD2837629D285009FD282E +:10240800376276716301711816F94A28F1DC05E51F +:1024180017F9EF224A2804DE1ACF17F9025008C12B +:10242800506CFDDA02C092DF0DD437DF0971101647 +:10243800F9EF03F517F94017F901DF05710A22EFE3 +:1024480006710B22710302CD20075700674C08DE86 +:102458001073090A20614EDC05679D20EF0387EFA2 +:10246800EB4A2007DF09D517F961F8CF17F903C63A +:10247800D7500AFD4A02304000C15006FD182BC053 +:102488005096ED4A02C72006FBF8FFD517F961E818 +:10249800ED6C25304A57C1503EFD182BC0D2DD07E0 +:1024A8007100CAFBED6C257108CAFB17040200C154 +:1024B8005004C1500CC1506CFD02031006EA30AA4A +:1024C80048318D12AA48318E616B08616A08C15083 +:1024D8000EFD182BC0F690C1500CFD182BC0CC0176 +:1024E800008C014C04DE2831245D02EFFA71125D84 +:1024F800EA308C015010D605C15010C18C01D604A9 +:102508004000C1506CFDAA031006615901EFD2507A +:10251800A5FD4A02EA30AA48318D12AA48318E61D7 +:102528006B08616A08C1500EFD182BC050A5FD4A02 +:10253800025004C1506CFDDA02C0629C01EA308A84 +:102548004B4E0161C3048A4A4E0117040200C15070 +:1025580004C1500CC1506CFDAA031006F6C1503ED0 +:10256800FD182BC01006C6D7C78F08F94B2861F88D +:10257800ED1926400AF928DE06A00AF9ED1926F514 +:102588000AF98D289F08F98D285070D6123073519A +:10259800230480001231FF318E039F09F99FC6FB87 +:1025A800F68F09F97C804C95DC1C8F09F9318F2452 +:1025B8001400EA30BDD8AA44FDE30D1231FF318E74 +:1025C80003318F16EF1A8F09F9318F241400EA307E +:1025D800BDD8AA46FDE30D1231FF318E03318F16A7 +:1025E800EA308A427217F3031644000171FE61C88B +:1025F80036FF001701DE02F61617BD4EC7500CFD58 +:10260800182BC0D2DF078D289F08F9EF047100CA84 +:10261800FBF2C6D7C72008FBF8FF4017F901DD0613 +:102628004017F902DF1C17040600FD102CD2DF0A40 +:102638008C069C058C079C04EF4ACC0563CC0400EF +:10264800EF4217040600FD102CD2DD0F7100CAFB03 +:1026580071035CCC050071025DEF298C06318E3167 +:102668008D080E07081C00BBEA308A4072ABFD36A5 +:102678000FBB8C019C05D1DF08CC0501CC0400EF11 +:10268800038B9C0417040600FD2D2CD2DD06CC0616 +:10269800C8CC07008C069FC9FB8C06318E318D088B +:1026A8000E07081C00BD2CAD2C4401A5DC09CC0389 +:1026B80064F6BF0CF9EF52AD2C220CF94401A0DCF2 +:1026C80009CC031EF6BF0CF9EF3FAD2C44819DDC0D +:1026D8000BCC030A30F401BF0CF9EF2DAD2C4401EB +:1026E8009BDC0BCC030530F401BF0CF9EF1BAD2CC0 +:1026F800440191DC0BCC030030F401BF0CF9EF0965 +:1027080071025D30F401BF0CF93132040C31245CE4 +:1027180008CC0564CC0400EF0D8C034E05DE078C55 +:10272800039C05CC04008C059FC7FB8C049FC8FB49 +:10273800FD9D2B8F0EF94E05DD2B40C7FB0BDE06EA +:10274800400EF90BDE1640C7FB06DE06400EF90602 +:10275800DE0AD5C7FBDF0ED50EF9DD095020C150C2 +:1027680011FDA634C08FC7FB9F0EF9FDDA2B1008A8 +:10277800C6D7C7D82FC15002FD4D2BC04018F9014C +:1027880061F8712010055012FD4A028D2F6C0870F7 +:10279800C15002FD4D2BC05003FD4A028D2F6C180D +:1027A80070C15002FD4D2BC05016FD4A025003FD6A +:1027B8005E2B625C01D1DD107170CBFB5002C15001 +:1027C80013FDA634C0F2EF01E2C6D7C75004FD5E80 +:1027D8002B625C03D1DD405014FD6A2834CBFB89A1 +:1027E8005C9F998A0C7CFF50FF5C14D1DD228A0C17 +:1027F8007CFF5C147234CFFB89616A997162075659 +:1028080000316207058666D1DFF7716307716B27B0 +:1028180034DEFB895CEB99712810055002FD5E2BB4 +:10282800D2DD354018F901DF05500AFD4A028D2F27 +:102838006C1070C15002FD4D2BC0E0FD4A02D82F2C +:10284800C15002FD4D2BC05033FD4A02F0C1500269 +:10285800FD4D2BC07178CBFBE0C15013FDA634C0F1 +:10286800C6D7C7C12004FBF8FFCC02005004FD5EA8 +:102878002B629C038C045C20D1DD0E8C036C019CC4 +:10288800038C026C209C02EF138C045C10D1DD0CCD +:102898008C035CFE9C038C026C109C028C045C080C +:1028A800D1DD0E8C036C029C038C026C089C02EF39 +:1028B800138C045C04D1DD0C8C035CFD9C038C023E +:1028C8006C049C028C03D1DD05501AFD4A028C036E +:1028D80070C15004FD4D2BC08FCBFB5C9F728C03E5 +:1028E800318E316D148C03318E314D616D08616C00 +:1028F8005C606162629FCBFB8FD7FB7CFF50FF5E01 +:1029080002D1DD278FD7FB7CFF5E027234CFFB89B3 +:10291800616A99716207CC01003162070861590147 +:102928008C01D1DFF4716307716B27F21006C6D7EB +:10293800D9BFFBC15006FD4D2BC0D9C0FBC1500704 +:10294800FD4D2BC0D7FD3829F2D7C7711300711B75 +:1029580020710303710205E0C15003FD4D2BC050E7 +:1029680013FD4A02F0C15005FD4D2BC0500FC1E0C8 +:10297800FD4D2BC0500AFD4A027103055008FD4A5F +:1029880002501FC1E0FD4D2BC05012FD4A025003FA +:10299800FD5E2B625C01D1DF03E2EF24F0FD5E2BCC +:1029A800629D2E3602F9C75008FD352BC05003C171 +:1029B800FD4D2BC0710203711A20FDF52AF429F28E +:1029C800C6D75003FD5E2B625C01D1DD155014FDA6 +:1029D8006A28FDD3275014FD4A02E0C15003FD4D7B +:1029E8002BC0711300711B207103035014FD4A02A0 +:1029F800F0C1E0FD4D2BC0F0C15003FD4D2BC0D7F9 +:102A0800C72004FBF8FFCC02008D299C035010C19D +:102A180050A4FDDA02C0629D29D437DD04F2EDD25C +:102A28002A8C037B295C08D1DD0F8D295C08D1DF56 +:102A380005CC0210EF03CC02208C037B295C04D167 +:102A4800DD158D295C04D1DF088C026C049C02EF33 +:102A5800068C026C089C028FCAFB5CF3728D295CA1 +:102A68000C6162629FCAFB8FD6FB7CFF50FF5E023F +:102A78009C02D1DD1F34CEFB896E0299716207CCAE +:102A88000100316207086159018C01D1DFF47163DB +:102A980007716B278D295C40D1DD095002C15012A6 +:102AA800FDA634C08D295C01D1DD08E0C15012FDBE +:102AB800A634C0717AFA8D295C41D1DD0C5A29BE41 +:102AC800D829C15010FD4205C0F21004C6D7FD7ABE +:102AD80027F2D7FDD327F2D7C78FDEFB7617FD6A1B +:102AE80028664FDEFBDFF2F5DEFBF2C6D75064FD49 +:102AF8004A02FD452C6261FB71115CF171145C6145 +:102B0800DC70C15012FD4205C0FD4C36CD3D03D7E7 +:102B1800C7C1C1FBF8FFAC0ABB17C15002C18C0288 +:102B280070C1506CFDAA0310061004C6D7C7C1FBBC +:102B3800F8FFAC08C15002C18B70C1506CFD020394 +:102B48001006C0C6D7C78806166770C1C75084FD6F +:102B580074031004C6D7C716C75084FDDA02C0C66E +:102B6800D7C74A2004DE045600EF0256014018F980 +:102B780001DF048686EF0A4018F902DF0451046178 +:102B88000666318F12504CD633514CD6610A046018 +:102B980020BD30C6D740C7FB51DC05CF1EFC0FD780 +:102BA80040C7FB33DC05CF1EFC0BD740C7FB0BDC53 +:102BB80005CF1EFC07D740C7FB0661D83132040594 +:102BC800CF1EFC03D7D5C7FBDD04E51EFCD7F51ED9 +:102BD800FCD7D514F9DF0471635CD7FD452C62611D +:102BE800FB71715C71145C71775C61C831625C1750 +:102BF80071625C71745C71115CF171745C61DC70A0 +:102C0800C15012FD4205C0D7C7164012FCFFDD0CAB +:102C18008F12FC9B1714CA0100F2EF07C75004FD7E +:102C2800352BC0C6D7C7164013FCFFDD078F13FC32 +:102C38009BF2EF07C75002FD352BC0C6D740C7FB34 +:102C48000BDE02E2D7F2D7710001057178500571E9 +:102C58003AD5713BD18F10055CFC9F1005CF540508 +:102C68004AE5420571104205710042057148500558 +:102C78007130500571205005CF530505CF52050A14 +:102C88007130510571205105713BD5717050058F18 +:102C980011055CFC9F1105F422D771785005710865 +:102CA8000105D77140F00071783002713AE6713B46 +:102CB800E2713BEA713BEE8F10055CFC9F1005CF7B +:102CC80034024AE552FF711A52710A5271483002B1 +:102CD8007130300271203002CF330205CF32020A40 +:102CE80071303102713BE6717030028F11055CFC66 +:102CF8009F110571603002D7717830027148F00079 +:102D0800D7C788061666614FDD0967614EDE0396F0 +:102D1800EF01866672C6D7C7161714AA0412A9430C +:102D2800DD29AA0412A923FD0E4EC3AC02FD0E4EE6 +:102D380013C2BDD813FDB30FDE0C1714AA0212AAD2 +:102D48000403BA04EF051714A9BA04AC041231FF3E +:102D5800319E03317F087208C6D77100F2003044F3 +:102D680000BFB601300188BF9001300984BF9E01C1 +:102D7800BF9C01BF9A01BF9801BF9601BF9401BFD4 +:102D88009201F53CFF30FE00BFBE01F6BFBC01BF9B +:102D9800B80150EEBFBA01A1BFB201C918FE00F6D2 +:102DA800BE6EBE64BE6A7123047153078F16F93173 +:102DB8000507F5E5FBCB6CFF0071535D71425DD7EC +:102DC80030EF00BFB401F6BFBA017108F2007123F9 +:102DD8000471530771435DD78F9CFBB09CFBD1DF17 +:102DE8007331D4D106715BD1E59EFBD59EFBDD34F2 +:102DF8007140CAFBD99DFBF1E734020023DD0625AB +:102E0800DD0325DF05F6BE66EF06D9E4FBF1BE66F5 +:102E1800A09DFB409DFB20DF06F59DFBB09EFBCFF0 +:102E28009CFB19D7CF9CFB1E7148CAFBD5E6FBDF7C +:102E380004F6BE66D7D9E4FBF14266FFDD16D9E495 +:102E4800FBF112AE6643DE05A266FFEF03B266FF32 +:102E5800CF9CFB03D7C7161714F6B9AA0412F6239A +:102E68001231FF31AE03316FBA02C6D7C7C1FBF8C2 +:102E7800FF8C085080D612AB1413B9AB14AA0412F5 +:102E8800A92312D939FBF133BDD813FD1F0EBA029D +:102E9800C0C6D731645D01D74014F902DF10F6BE11 +:102EA80064BE6EBE6ABFA6FBBFACFBBFB2FB3154AB +:102EB8005D1530A2FBFD5D2E30A8FBFD5D2E30AE0A +:102EC800FBFD5D2EED4F2F31745D0F71735D710841 +:102ED800EAFBF5A0FBF59FFBEF6DD59FFBDF658F48 +:102EE80038FB9F9FFB40A0FB1FDC1A7100EAFB40E8 +:102EF8003AFBFFDD22A0A1FB8F3AFB4FA1FBDE17B7 +:102F0800F5A0FBEF12D9A0FBF1A1605C1F9FA0FB0D +:102F18007108EAFBF5A1FBE9A0FB093CFB70C13095 +:102F2800A2FBFD742EC0E9A0FB095CFB70C130A8B0 +:102F3800FBFD742EC0E9A0FB097CFB70C130AEFB21 +:102F4800FD742EC0B09FFB30A2FBFD1F2DF313BEF6 +:102F58006E30A8FBFD1F2DF313BE6A30AEFBFD1FBC +:102F68002DF313BE64D7C736F00071F4DC297170F5 +:102F7800F000CE9D08CE9EC0CE9F80F594FFF593BD +:102F8800FFF592FFE597FFE596FFE595FFE598FFCA +:102F9800CE9C7F7100BEFB711BE3712BE3711AE7B6 +:102FA800712BE7717A9D710A9E31929E02EFFA7138 +:102FB8000B9E71035E71135E71235EC6D7C7310223 +:102FC8005E1E71025E710A9E31929E02EFFA34EC27 +:102FD800FB3692FF52078B99A5A792DFF9710B9EDA +:102FE800C6D7C788061631125E1571125EC734B48B +:102FF800FB3092FF1652078B99A5A792DFF9C66698 +:10300800736718B4FBC6D7C771035E31145E1E71AF +:10301800135E710A9E31929E02EFFA3492FF36B423 +:10302800FB52078B99A5A792DFF9710B9E31245E9D +:103038001371235E717B9E8FF4FB9E9A8FF5FB9E26 +:103048009B717A9EC6D7CFBFFB5CCFC0FB5FCFE03A +:10305800FB5DCF14FC36CF15FCC9E5EBFBD7C7CF1A +:10306800BCFB12CFBDFB02CFE4FBFFF5E5FBF5E6A9 +:10307800FBF5E7FBF5E8FB5600664C64DE087238A2 +:1030880038FB0086EFF3C6D7C788061617F1E73472 +:1030980003002361E3EDD6332361F8ED8131B123D9 +:1030A80061E3ED8B312561F8ED9A31B1240D0061B2 +:1030B800D8EDD633240B0061F8EDBB312361F8ED70 +:1030C80002322361F8EDCF312361F8ED9A332406FB +:1030D8000061F8ED6B32B12561D8ED87322400002C +:1030E80061F8ED94322361F8EDD6332361F8EDB43D +:1030F80033B12361E3EDB7322361F8EDC8322361C0 +:10310800F8EDD9322361F8EDC8322361F8EDEA32DF +:103118002361F8EDFB322361F8ED0A332361F8ED02 +:103128002C332361F8ED38332361F8ED4433236100 +:10313800F8ED4D332402002361E3EDD63324020079 +:1031480061F8ED56332361F8ED63332561F8ED6FCF +:1031580033B124060061D8EDD63324000061F8EDC0 +:10316800D9332561F8ED7B3324120061F8ED9533EE +:103178002361F8ED8633EDDA3334BEFB89615F995C +:10318800EDE733304D29FDAB3866736718BCFBEDAE +:10319800E73340C1FB6ADF1440C2FB68DF0E674CAF +:1031A8006CDF0930DD41FDAB38713AD5679FC3FB51 +:1031B800EDE73367D1DD0D30013DFDAB3834DCFB85 +:1031C80089616F99EDE733675C02D1DD0830D62A53 +:1031D800FDAB38EF0C675C01D1DD0630DB2AFDABB7 +:1031E80038675C3CD1DD1030E02AFDAB38675C3CC9 +:1031F8007266736218BCFBEDE73367D1DD625C0170 +:10320800D1DD05300800EF01F6609F1BFC675C020A +:10321800D1DD03E6EF01F6341BFC89616899675C30 +:1032280004D1DD04E6A1EF01F6341BFC896168993D +:10323800675C08D1DD05302000EF01F6341BFC89FE +:10324800616899675C10D1DD05301000EF01F63434 +:103258001BFC89616899675C20D161E871601BFC7F +:10326800EDE733D432DF08679FE5FBA432EF0D4A60 +:103278003205DE08E83267183FFDA432EDE7336710 +:103288005C0F7266736218BCFBEDE7334A3264DE8A +:103298001B4A3201DF0667D161F85701E832671827 +:1032A80038FBA4324A320561C871725DEDE73367B5 +:1032B8005C7F70C117F1243000FDEA2FC0EDE733C1 +:1032C800675C3F70C117F1243000FDEA2FC0EDE7BD +:1032D80033675C0770C117F1243000FDEA2FC0ED99 +:1032E800E733675C1F70C117F1243000FDEA2FC077 +:1032F800EDE7336770C117F1243000FDEA2FC0ED08 +:10330800E733CEABAC710A9E31929E02EFFAD592AA +:10331800FFDF05710B9EEFED679E99710B9E9FF382 +:10332800FBEDE73371225E675C7F9FF4FBEDE733CB +:1033380071225E675C3F9FF5FBEDE733675C3F9F5B +:10334800F6FBEDE733675C1F9FF7FBEDE73330B81B +:103358003AFDAB38679FFCFBEDE73330733AFDABC2 +:1033680038679FFDFBEF7830953AFDAB38679F00D3 +:10337800FCEF6C675C01D161E8FDB744EF614A3846 +:10338800C8DE08E83867186AFAA438EF52679D382B +:10339800EF4D67318E247000DD0D240200DF4030D0 +:1033A800EE08FDAB38EF3871625FEF33675C01D12F +:1033B800DD05711202EF03711302675C02D1DD05AE +:1033C800712202EF03712302679FEBFBEF1100EFFD +:1033D8000E00664C5BDE07736718BCFBEF0100C686 +:1033E800D7C716664C30DC094C37DE05FDC52FEF14 +:1033F8006E664C02DF1F8FBEFB5C03728F1DFC5C88 +:1034080003318E316D08616A08128F1DFC5C8031B2 +:103418002A6162EF59664C3DDF0AAE90BF18FCF98D +:1034280018FCEF4A664C3EDF05F919FCEF40664C84 +:103438004FDF05FDDF44EF36664C61DF08E83809E9 +:103448006AFA72EF29664C7FDF05FD773DEF1F664C +:103458004C4EDF0B31745F045210EF12F2EF0F661F +:103468004C5BDC0452FFEF06667309BCFB72C6D7DF +:10347800C788061617F1241000240500DC07244C21 +:1034880000DD17EF17717BFA17F104BCFB14896193 +:103498007F99717AFA71325EEF02A438C6D7C7C134 +:1034A800C1FBF8FF4014F903DD064014F904DF2FCF +:1034B8008C027309C4FB5E0AD1DF248C02318E04AE +:1034C800BCFB14896E0A99716207CC01003162074E +:1034D800086159018C01D1DFF4716307716B271002 +:1034E80004C6D7CF1DFC03F51BFCF51FFCF521FC1A +:1034F800D7C788061617F1E734020025DD3D23DD1E +:103508001725DD1C23DD0523DD2BEF3B71625E678C +:103518009F20FCCD3D03EF2F675C839F1DFCEF27A9 +:10352800675C039F1FFC675C034C0261F8711260C3 +:10353800FDD246EF12679F21FCEF0C6791DF08E090 +:10354800C15012FDA634C0C6D7C71617F1E724002C +:1035580000DD2A23DD1E240300DD0724FB00DD2413 +:10356800EF2531226005308000EF01F6086F1EFC60 +:103578007208EF198F1BFCF51BFC72EF1071425F8C +:103588005235EF09F2EF066673091AFC72C6D7C7FF +:103598001617F1E7240000DD38241000DD1C23DDB8 +:1035A8001C23DD30240E00DD18241100DD1B240F40 +:1035B80000DD12243000DD15EF1EE2EF1D5202EF90 +:1035C800195204EF155206EF115205EF0D5207EF8D +:1035D80009F2EF065203EF0252FFC6D7C731445E25 +:1035E8003771435E8D3C9FC4FB8D3B9FE3FB3618D0 +:1035F80020C7D83BFD5937618A70618AFD9E37C064 +:10360800D840F1312F609D3F8D3A4B3FDD0A715212 +:103618005E8D3F9D3ACD3D034A3D05DE0930563665 +:10362800FDAB38CD3D6BB43D7150F000CE300BCFC3 +:10363800170006CE3106FDB602717A30710BE371C0 +:103648000BE7C6D78D3F9D3A8D3F9FC5FBD74014EA +:10365800F903DF064014F904DF02F2D731545E0D96 +:1036680071535E71735E8D3F9F2AFCEF3831645E43 +:103678002371635E71725ED520FCDF05F52BFCEFCC +:103688000B8F20FC5002D6A1609F2BFC8F2BFC9F38 +:103698002AFCEF1131745E088F2BFC9F2AFCEF0582 +:1036A8008D3F9F2AFC8F2AFC9FC5FBD92AFCFDC9A8 +:1036B80036E92AFC09282270C15013FD4205C0F2E0 +:1036C800D7C7C1C1FBF8FF8C02D1DF05F520FCEF9D +:1036D8001A8C024C05DE06CF20FC02EF0E8C02315C +:1036E8008E1231FE03311F609F20FC8F2CFC4F206F +:1036F800FCDD29CC011F8F20FC9F2CFCCC00008B0B +:103708004C08DE148B73091E204F20FCDC058B9CB3 +:1037180001EF05615900EFE78C019D3E1004C6D703 +:10372800C716710AE7710BE37150F000CE300BCF6A +:10373800170006669E31FDB602717A30710BE331CF +:1037480082E302EFFA8D1F7158F000710BE772C621 +:10375800D7C7C1C1FBF8FF8F14FC4E02DC03F2EFA0 +:10376800318C024F15FCDC0452FFEF268C022F141B +:10377800FC706131318D128F15FC2F14FC70613192 +:1037880033BDD813FD410EBB440001DC03F690BBEA +:103798008B721004C6D7C7C1FBF8FFAC0814A91474 +:1037A80089708B6128706131FD0E4E1344030071DE +:1037B800FEDC23AC08148A04819A04AC08148A0439 +:1037C8004C11DC10A9148B99AC0814CA0200AC087F +:1037D80014CA0310EF72AC0814CA0400AC0814A988 +:1037E80014894DDE0AAC08148A02819A02EF12ACE1 +:1037F8000814A914894D61D308AC08148A02919A57 +:1038080002AC08148A03919A03D1DF3CAC08148AED +:10381800024C10DF10A91489318EA112AC0814A92A +:10382800146299EF17AC08148A024CF0DF0EA91441 +:1038380089318EB112AC0814A9146299AC0814CA63 +:103848000200AC0814CA0310C0C6D7ED9638717BC5 +:10385800FAC7D44261F831045F2E71045F71215FA9 +:1038680071035FD442DD05B442CEABAC717AFA562F +:1038780000664C0ADD1272F3311C79FEFCCEFC00A6 +:1038880061CAFDF53886EFE9717AFAF2C6D7C756EC +:1038980000664C0ADE0BF0317E12F6782EFC86EFBD +:1038A800F0C6D7C7C1C1FBF8FFCC01008C014C0A98 +:1038B800DE36717BFA8C01F0317E042EFC14A9618E +:1038C80068DF09AC02B9717AFAF2EF1D8C01F031A8 +:1038D8007E12792EFC614902DF06717AFAE2EF095D +:1038E800717AFA615901EFC4E21004C6D7C72004FF +:1038F800FBF8FFF6422EFC61F8EDD739717BFA9C94 +:10390800038C034C0ADE3C8C03F0317E042EFC143D +:10391800A96168DF05717AFAEF29717AFA8C037266 +:10392800F3311C792EFCCEFC0061CA629C02D1DF07 +:103938000A8C03F0317E12E6782EFC717BFA61590D +:1039480003EFBECC0200CC01018C02F0317E042EC4 +:10395800FC14A96168DD788C02F0317E12792EFCA6 +:10396800E743DF658C014C0ADE5F8C01F0317E1283 +:10397800792EFCE743DD4D717BFA8C01F0317E0432 +:103988002EFC14A96168DF186169018C01F0317E91 +:1039980012F6782EFC8C024E01DCED717AFAEF2FCC +:1039A8008C01F0317E042EFC14A9128C02F0317EB9 +:1039B80033782EFC8C01F0317E12E6782EFC6159AA +:1039C80002717AFA615901EF9B615902ED51390090 +:1039D800F21004C6D7C7200CFBF8FF17040600C175 +:1039E8005006C150A8C15030FD02031006D2DD1D9B +:1039F800A042FC4042FC08DE03E2EF6B34FCFB898A +:103A08005CFC99FDB83A7110CAFBF2EF5A30060017 +:103A1800C117040600C13001FCFD164E1004F54222 +:103A2800FC8FFCFB5C01D1DD264014F903DF20503C +:103A380010C180FDA634C0C736100571D4C6DE0F8C +:103A480017C15006C150A8C15030FD0203100640EE +:103A580014F901DD114014F905DD0B8FFCFB5C0244 +:103A6800D161E8FDE241F2100CC6D7D9FDFBC15087 +:103A780030FDDA02C0629F00FC7130CDFB8FD5FBB0 +:103A88005C08D1DF06716307716B27F2D7D900FC98 +:103A9800C1D9FFFBC15030FD740310047130CDFB58 +:103AA8008FD5FB5C08D1DF06716307716B27F2D7EE +:103AB800C72006FBF8FF17040500C1E0C1500FC17D +:103AC8005030FD02031006624C02DF077110CAFB7A +:103AD800F2EF5F7118CAFBCC03004017F901DF054C +:103AE800CC0402EF03CC0410CC05808FFCFB5C03F4 +:103AF800D1DF08717AD5CC0207EF06717BD5CC02ED +:103B08002F17040200C15004C150A0C15030FDAAB3 +:103B1800031006C736100571D4C6DE154014F90324 +:103B2800DF0F17C15006C150A8C15030FD02031065 +:103B380006F21006C6D7D514F9DF03F6BD444014C3 +:103B4800F901DD0DD546FCDD04B046FCD7CF46FCB7 +:103B5800038F14F9318FE723DD0B240200240300BF +:103B680061C8ED663C8F16F931233E301B00464490 +:103B7800DF0AE0C15010FDA634C0EF1D30770146C2 +:103B880044DF165002C15010FDA634C0F6464ADF85 +:103B9800088FE0FB5010D6BD4AF6464ADD36B64AD5 +:103BA800464ADF3071025DEF2B301B004644DF13BD +:103BB800F6464CDF18E0C15010FDA634C0C94C537E +:103BC80007EF0A307701464461F871025DF6464C0A +:103BD80061E8B64C3144600871335FF6BD44EF14B8 +:103BE80031345F05F6BD44EF0BA644F6464461F850 +:103BF800C944FFFF315260194A4605DE16A4464AF9 +:103C08004605DF0FA4465004C15010FDA634C0EF8E +:103C180002F446315460194A4805DE16A4484A4859 +:103C280005DF0FA4485008C15010FDA634C0EF02AC +:103C3800F448D449DD03B449D7316260174A4705CF +:103C4800DE14A4474A4705DF0DA4475010C1FDA65E +:103C580034C0EF02F4474A470661F8CD4925D7C773 +:103C680036100571D4DE0730DD39FDAB38D240148B +:103C7800F903DF1D3122070630082AFDAB3831442D +:103C88005F0C71435F5080C15012FDA634C0FDA87F +:103C98003CFDD33C31645F0671635FFDB143C6D719 +:103CA8008F1DFC5C01D1DD22D549FCDD04B049FC47 +:103CB800D7CF49FC098D3E4F48FCDD0E8D3E9F480D +:103CC800FC5040C15012FDA634C0D74014F903DDA2 +:103CD80004F6BD1AD7D5E8FBDF08F6461ADD19B693 +:103CE8001AD7D9E4FBF1461ADD0ED9E4FB12AD1A56 +:103CF80043DE03A61AD7B61AD7717BFAC78FDCFB47 +:103D080076F5DCFB717AFA5C10D161E871525F6676 +:103D18005C0FD1DD57665C01D1DD05F514F9EF4C78 +:103D2800665C02D1DD11E0C15003FD4D2BC071135B +:103D380000711B20710303665C04D1DD117113004F +:103D4800711B20D51DFC61F8710303FDEB34665C23 +:103D580008D161E87103035005FD4A02710203505E +:103D680003C1FD4D2BC0711A20FDF52AF2C6D7C735 +:103D780056FF4A321361C8ED513E8F16F9311505C9 +:103D8800300400EF0F8F16F9314505300500EF04B8 +:103D9800D917F9F1609F4CFC8D4E9F4DFC71345C36 +:103DA800E661301271045C61DC31196162629F4E18 +:103DB800FCE54FFC31140205308000EF01F6C131FB +:103DC800346005304000EF01F6C2616B08616A0893 +:103DD800C131340405302000EF01F6C2616B08617F +:103DE8006A08C131240205300800EF01F6C2616B90 +:103DF80008616A08C131646005300400EF01F6C249 +:103E0800616B08616A08C131546004E6A1EF01F6EC +:103E1800C2616B08616A08C131446003E6EF01F6CC +:103E2800C2616B08616A9F50FCF171240461DC9FD8 +:103E38004AFCF171540761DC9F4BFCD832F1010454 +:103E480012FD14A9148976A4326672C6D7C7FD7309 +:103E5800098F14F9318FE724000061F8ED31402310 +:103E6800DD1B2361F8ED3B3F2361F8EDB73F23618C +:103E7800F8ED00402361F8EDD140ED2E404015F9F2 +:103E880001DF303124601FF64644DD05F538FDEFCB +:103E980003A038FD4038FD65DC0FF6BD44F514F984 +:103EA80071025FED5641FDAE23AD44440A0061D86E +:103EB800ED564171325FFDCC0471535CFDAE234079 +:103EC80017F903DF0971025FF514F9ED5641FD1C7E +:103ED8002640C9FB9BDE0D3124600971025FF51491 +:103EE800F9ED5641714A277140110571301105717C +:103EF8003A22715A2271501105FD5229D2DD0971F9 +:103F0800025FF514F9ED564171103500CF37001DE9 +:103F1800714012054015F901DD064015F903DF056A +:103F2800F5E5FBEF04CFE5FB03CF14F902FD3829D3 +:103F3800ED5641FD4F2CFDAB2C714A9DFDEB34FD38 +:103F48006630F537FF712BE0F515F971025FCBE4A8 +:103F58003FEFCBE6F6F0FDCC04713BD47112027151 +:103F680023028F16F93105285004FD5E2B625C038D +:103F7800318E315D34CBFB896168995002FD5E2B2F +:103F8800D2DD067170CBFBEF047178CBFBFDAE235D +:103F9800FD622D710816F9CF14F9038FBEFB5C0280 +:103FA800D1DD095080C15010FDA634C0ED5641FD49 +:103FB800584131545F2FA450D450DD0831A4E00A91 +:103FC80031020C06712BE0FDCE4131A4E01731041B +:103FD8000C13712BE05027C15005FD4D2BC0CF1499 +:103FE800F90471025FFDC3418F16F93125073124A9 +:103FF8006003F514F9ED5641FD584131020C14F0F7 +:10400800C15005FD4D2BC05005FD4A02FDCE41CFE4 +:1040180014F903FDC3418F16F931250731246003D4 +:10402800F514F9ED5641F514F9CFE5FB03F5E6FB78 +:10403800F5E8FB71525DF6426CFF61E8ED5641F61A +:10404800BD4A71035DF5FCFBFDB83AFDC82DFDA224 +:104058002CFD002D714B9D711302712302F5CCFBD1 +:10406800F5CDFBF5CEFBF5CFFB31245D02EFFACEA3 +:104078003708CBE4BFFFCBE6FFF3CED4FFCF370042 +:104088000971481205F6BEE0BEE2BED0716A27FD8E +:10409800CA29714307714B277148100571481105EA +:1040A8007138100571381105713302713B22715353 +:1040B80002715B227158100571581105CF14F9056A +:1040C80071325FF6BD44FD410AF515F9F538FD3149 +:1040D800246004D42ADD2371335FE515F9E514F96A +:1040E8008F16F9312568F510FCF50EFC502EFD4AA7 +:1040F80002CF15F903E514F9EF54FD2805FD472310 +:1041080071730171320471430271035C71525C3145 +:10411800949E02EFFA712AE7CEA409F5F300312440 +:10412800600261FDF442FD7309E5F300CEA4083195 +:10413800226006CF14F905EF0971335FE515F9E53B +:1041480014F9712BE78F16F9312503F514F9C6D741 +:10415800D552FCDF1A310200155003FD5E2B625C5C +:1041680001D1DF07F514F971025FD7E552FCD7409A +:1041780052FCF0DF0831040041F552FCD74052FCF4 +:10418800C8DF0BF514F971025FCF52FCF0D731028A +:10419800000A4052FCFFDD22A052FCD7F0C15004B7 +:1041A800FD4D2BC08FCBFB5C9F9FCBFB7110DCFBC5 +:1041B80030013DFDAB38CF52FCF0D731045D06F538 +:1041C80014F971025FD771535FF450717207FDB62D +:1041D80002717307D7FD8905F2D7717BFAC7200CE6 +:1041E800FBF8FF8F02FCF0F901FCF303FD0E4E1300 +:1041F800BC048F04FCF0F903FCF303FD0E4E13BC62 +:10420800028F06FCF0F905FCF303FD0E4E13BB719B +:104218007AFAAC04BDD8F6BDDAAC04311EBDDCF6C2 +:10422800BDDEFDF40DADD8BDDCADDABDDEAC02BD42 +:10423800D8F6BDDAAC02311EDADCC3DADEC3BDDC87 +:10424800F6BDDEFDF40DC0BDDEC0BDDCADDEFD6A31 +:104258000FADD8BDDCADDABDDEABBDD8F6BDDAAB8F +:10426800311EDADCC3DADEC3BDDCF6BDDEFDF40DDB +:10427800C0BDDEC0BDDCADDEFD6A0FDADAADD8FD4B +:10428800CD45C3C58FECFC5C3FF0317E046CFC145B +:10429800C2C0B9A0ECFCF6BC08BC0A9C078C074C51 +:1042A8002EDD3E8FECFC0E0770F161DC605C3FF0A8 +:1042B800317E12796CFCBDD8F6BDDA8C07730968BB +:1042C80022318FBDDC70BDDEFDF40DAC08BDDCAC69 +:1042D8000AFD6A0FADDABC0AADD8BC08615907EF10 +:1042E800BCAC08BDD8AC0ABDDAC9DC0004F6FDBE1A +:1042F8000EC9DCFFFFF6FDBF0FADD8BF66FCAF608F +:10430800FC4266FCDD12AF62FCBF64FCAF60FCBF20 +:1043180062FCAF66FCBF60FCAF62FC4264FCDC5030 +:10432800AF60FC4262FCDE48AF3AFD4260FCDE4012 +:10433800403EFD16DC1F403EFDA0DE168F68FC4F98 +:104348003EFDDE0EAF60FC226AFC44691061C8FDC8 +:10435800B143F53EFDAF60FC445146DC0BAF60FC59 +:10436800241027BF3CFDEF1130F82ABF3CFDEF09B0 +:10437800403EFDFF61E8A03EFDAF64FC4262FCDC0C +:104388001BAF62FC4260FCDE13AF60FC423CFDDE0A +:104398000BF568FCAF60FCBF6AFCEF094068FCFFE6 +:1043A80061E8A068FC100CC6D7717BFAC7710A9E39 +:1043B80031929E02EFFA8E949F5AFC8E969F5BFC78 +:1043C8008E979F5CFC8E989F5DFC8E939F5EFC8E03 +:1043D800929F5FFC710B9E717AFA8F5DFCFDD30F83 +:1043E80076FD4B4513BD56D507FCDF0AD508FCDF23 +:1043F80005D509FCDD25F6B14656DF11C956372229 +:10440800665C0391DF060A56181A57009617FD6E68 +:104418004613FD894431745F02EF61520692926936 +:104428005AFC6854FCDFF6AD56BD54F852F3311C03 +:10443800791AF944FEFFDD44D852F101041AF9143F +:10444800A944FFFFDF04E6B9EF0BD852F101041AC3 +:10445800F914A9A1B9717BFAA007FCD507FCDF1CE8 +:10446800A008FCD508FCDF14A009FCD509FCDF0C6A +:10447800CF07FCFFCF08FCFFCF09FCFFC6717AFA13 +:10448800D7C716D852F10744A800DC0571725FEF50 +:104498001CF647DD18A4524A52A8DC0571725FEF7A +:1044A8000CF852F3311CF6781AF9B7EFE4C6D7C7FF +:1044B80056A89666F0317E12F6B1781AF966D1DF01 +:1044C800F1717BFAF507FCF508FCF509FCF452716B +:1044D800735FC6717AFAD7C72004FBF8FFD432DFBE +:1044E800178D529FEDFC717BFA520692926954FC2B +:1044F80068EEFCDFF6717AFA4A3206DE0EE8320917 +:10450800EEFC9C03A4328C0372EF34F9EDFCF3311A +:104518001C791AF9BB310260058B9C03EF128C01E0 +:104528009C03D5EDFCDF06CFEDFCA7EF03B0EDFC57 +:10453800718071076061DC61FB7101608C0372102E +:1045480004C6D7C72008FBF8FF8F5DFCFDD30F9C7E +:10455800078F5CFCFDD30F9C068F5BFCFDD30F9C83 +:10456800058F5AFCFDD30F9C048F5EFC9C038F5F64 +:10457800FC9C028C06318E0112792620BB8C075CCC +:1045880003D1DF098C064C0361C86179008C0531C1 +:104598008EB1610900BB313D120103BB8B0E047063 +:1045A8008C011C00BB8F0CFC4E03DC0E8C034F0CE3 +:1045B800FCDC0B8C024F0DFCDC04AB12EF03ABB13F +:1045C800121008C6D7C7C3C12008FBF8FFF6614917 +:1045D8000A61F8614908DF07F7340000ED6A46E62A +:1045E800BC04F6BC06AC0ABC02AC08BBAC0661490C +:1045F80002AC0461F8614900DE28AC04BDD8AC0601 +:10460800BDDAE1FD790FADDABC06ADD8BC04ABBDAF +:10461800D8AC02BDDAE1FD940FADDABC02ADD8BB6F +:10462800EFCAAC06BC02AC04BBAC08BDD8AC0ABD32 +:10463800DAAC04BDDCAC06FDF70EAC04BDDCAC06A0 +:10464800FD6A0FE1FD940FADDABC06ADD8BC04AC31 +:1046580006614902AC0461F8614900DCC5AC02148A +:10466800AB12100CC6D7C7C12004FBF8FF8F57FC4C +:10467800FDD30F9C034E04DF1CAD544656DE07AD38 +:1046880056265412EF40F64656DF074654DD03E738 +:10469800EF34F7EF318C04318EB1128C03318E4335 +:1046A800DF1830382226540656BB8C045C0391DF91 +:1046B80005AB041800BBAB12EF0C8C034E04DE05EF +:1046C80032A900EF01F71006C6D7717BFA311260E4 +:1046D80009F64658DD04B658EF7C711360717AFA12 +:1046E8004014F904DF07715307F424EF69D9E7FB95 +:1046F800F1E7240000DD0F23DD1A23DD1023DD534D +:1047080023DD2723DD38715307F424EF497152075D +:10471800F424EF42D424DF07715207E424EF057133 +:104728005307F424C958FA00EF2CD424DF0B715234 +:1047380007E424C958FA00EF1DF5E7FBEF18D42465 +:10474800DF0B715307E424C958FA00EF09CFE7FBE0 +:1047580002EF03FD5F47D7D91FFCF1E7240000DD16 +:104768000923DD2123DD0923EF1B715307F424D727 +:10477800D424DF07715207E424EF05715307F424AA +:10478800C9582D01D7715207E424D731425D01D7AA +:1047980071635DD9E5FBF1E7240000DD1223DD1923 +:1047A80023DD1123DD2623DD3423DD3923DD3FFD21 +:1047B8001F48EF3DFD4048EF38D9E4FBC1AE6CFD22 +:1047C800092DC0F313BE6C712304EF25F0C1AE6C44 +:1047D800FD092DC0F313BE6C712304EF14F6BE6CF3 +:1047E800712204EF0CCB6CFF00712304EF03FDB4BE +:1047F800484014F905DD064014F901DF0671230469 +:1048080071635D31645D0FF6BE64BE6A31220402D5 +:10481800EF02F690BE6ED7CD2647F45AAE6C317DC6 +:10482800BFFAFCFD8948D2DF0ED9E4FBC1AE6CFDAE +:10483800092DC0F313BE6CD7FD8948D2DD0DCD26F6 +:1048480047F45AAE6C317DBFFAFCD7E85A094020CC +:104858005080D6BFF6FC22FAFCBDD8304700FD1FB9 +:104868000EBFF8FC30F6FCFD1F2DF313BE6CB4260A +:10487800D426DF0CCD2647A45A4A5A1F61C8F45AD9 +:10488800D740C7FB0BDC05712304F2D740C7FB06F2 +:1048980061D831225C11F0C1AE6CFD092DC0F31353 +:1048A800BE6C712204EF03FDB448E2D771625DF07B +:1048B800C1AE6CFD092DC0F313BE6CA0FCFC40FC1E +:1048C800FC40DC3DF5FCFCD9FDFCF1313F0440FD2A +:1048D80014D9FDFCF1BDD85008FD6E0E087208E62B +:1048E800D2DD040192DFFC896158D1DD0571220413 +:1048F800EF03712304A0FDFC40FDFC2061C8F5FD19 +:02490800FCD7DA +:10490A0061FC61FCC1C3C5C7520C929269D4FEC155 +:10491A00DFF88EFD708EFCC1717AFA4014F903DF5C +:10492A000630082AFDAB38C09EFC609EFD34D4FEDA +:10493A005206C0B9A5A592DFF9C6C4C2C061FC611E +:10494A00DF520C929269D4FEC1DFF88EFD708EFCA4 +:10495A00C18F4105775C04D1DD06675C01D1DD506A +:10496A0031345E3671620771335E8FCCFB5FD4FBE4 +:10497A00D1DF1B8FCDFB5FD5FBD1DF128FCEFB5F63 +:10498A00D6FBD1DF098FCFFB5FD7FBD1DD0C3162BC +:10499A000702EFFA716307716B27710360FD0F302D +:1049AA00F4227148500571605005717AFAEDB84ADF +:1049BA00675C02D1DD17D422DD134A2202DD0E0024 +:1049CA00F4227148500571605005717AFA717AFAC9 +:1049DA008D22318FE7240000DD0823DD1423DD3129 +:1049EA00EF50F4327140500571505005E422EDB891 +:1049FA004A8F40059F10F9715050058F10F99F1288 +:104A0A00F9D910F9FDE933629F11F9CD2202EDB807 +:104A1A004A675C02D1DD18675C10D1DD05CD22033F +:104A2A00EF107148500571605005F422EDB84ACD77 +:104A3A0022044A2203DF138F11F99F4005D911F985 +:104A4A00C1D910F9FD7834C0EF228F4005768F1056 +:104A5A00F901DC064010F902DE0671605005EF4EDE +:104A6A00C7D910F9FD9030C071505005D912F9F12B +:104A7A00242900DD2A240400DD25242200DD202447 +:104A8A001100DD0C240100DD16241E00DD11EF0CDF +:104A9A004010F960DF09CF10F961EF03A010F94A5D +:104AAA002203DF0AD910F9FDE933629F11F9C09E8A +:104ABA00FC609EFD34D4FE5206C0B9A5A592DFF96A +:104ACA0061FCC1C7717AFA714AE5717BBD51405FD9 +:104ADA000401D1DD06F616A747DFF2300400BF2431 +:104AEA0001F6BF2A01300B0BBF28010000000000AD +:104AFA00000000510FBF2801000000000000000064 +:104B0A00500FBF2801710AE671235DC6C061FCC15E +:104B1A00C5717AFAD436DD0BEA34899E44A634B4D8 +:104B2A0036EF33710AE6300400BF2401F6BF2A01CA +:104B3A00300B0BBF28010000000000000000510FDD +:104B4A00BF28010000000000000000500FBF28012C +:104B5A0071135D71235DC4C061FC61EF520C9292C6 +:104B6A0069D4FEC1DFF88EFD708EFCC12006FBF809 +:104B7A00FF71503002CEABACCC0400F6BB31B2E2CE +:104B8A0010617900F6614900DFF371603002ED1EB1 +:104B9A004C8E519C03713BE28C035C02D1DD1E8C6E +:104BAA00035C08D1DF0971503002CC0400EFCC8CD1 +:104BBA000570FD5135629E50CC0402EFBE8C035C39 +:104BCA0003D1DF408E509C02715030028C04D1DF39 +:104BDA000E8C0270FD9735629C05CC0401EF328C75 +:104BEA00044C02DF0671603002EF29CF34025A7199 +:104BFA006030028C0270C18C0570FDF934C0CF346C +:104C0A00024AEF108C035C01D1DD0671603002EFBD +:104C1A0003ED854B1006C09EFC609EFD34D4FE5207 +:104C2A0006C0B9A5A592DFF961FCC1C3C5C7520C7C +:104C3A00929269D4FEC1DFF88EFD708EFCC1710AB2 +:104C4A009E31929E02EFFA8FF6FB4F96FFDF198F85 +:104C5A00F7FB4F97FFDF118FF8FB4F98FFDF0950E3 +:104C6A0004C15011FDA634C0710B9EC09EFC609E0B +:104C7A00FD34D4FE5206C0B9A5A592DFF9C6C4C256 +:104C8A00C061FCA44261FCC1C3C5C7520C929269BF +:104C9A00D4FEC1DFF88EFD708EFCC1C1FBF8FF8D1A +:104CAA001F9C018E31318EE7240600DD0823DD0EBC +:104CBA0023DD22EF46717AFA8C019D3CEF3D717A31 +:104CCA00FA4017F901DF068C019D3BEF2E51FF2EAA +:104CDA00019D3BEF26717AFA4016FCFFDF068C0134 +:104CEA009D28EF058F16FC9D284014F903DD064028 +:104CFA0014F904DF06307025FDAB384031FF09DEB8 +:104D0A0005A031FFEF077158F00071425E710BE3A5 +:104D1A00C0C09EFC609EFD34D4FE5206C0B9A5A553 +:104D2A0092DFF9C6C4C2C061FC61FF520C9292695B +:104D3A00D4FEC1DFF88EFD708EFCC1717AFA8FFC49 +:104D4A00FB5C03D1DD194014F903DD064014F904B4 +:104D5A00DF0D36100571D4DE0630DD39FDAB38C003 +:104D6A009EFC609EFD34D4FE5206C0B9A5A592DF12 +:104D7A00F961FC61FC61FC61FC61FC61FC61FC6144 +:104D8A00FC61FC61FC61FC61FC61FC61FC61FC6131 +:104D9A00FC61FC61FC61FC61FC61FC61FC61FC6121 +:0B4DAA00FC61FC61FC61FC61FC61FC31 +:0A4DB60000060C12181E242A3036E5 +:104DC0003E3BE43598229347E02D9B2ED246673C2C +:104DD000FC08553E4CFC2EFE20FE02F903F94DFC6A +:104DE00028FE4EFC4FFC18F94AFC6CFF1AFF6EFFC0 +:104DF0006AFF64FF4BFC66FF50FC0000983AF82AFB +:064E0000FF005555555559 +:084E0600FF000000000047005E +:104E0E00317503F7332312D714AEF8C716AC06125A +:104E1E00C5AC0416F643DD078B99A7A5B3EFF5C213 +:024E2E00C6D7E5 +:024FF4000202B7 +:0A4FF60031383A34303A303400000C :00000001FF  \ No newline at end of file diff --git a/trunk/bsr.lmf b/trunk/bsr.lmf index d779fe4..69e93f1 100644 Binary files a/trunk/bsr.lmf and b/trunk/bsr.lmf differ diff --git a/trunk/bsr_k0r.map b/trunk/bsr_k0r.map index 229ffe3..7c5eb6e 100644 --- a/trunk/bsr_k0r.map +++ b/trunk/bsr_k0r.map @@ -1,20 +1,21 @@ -78K0R Linker W1.33 Date:10 Jun 2011 Page: 1 +78K0R Linker W1.33 Date:10 Aug 2011 Page: 1 Command: -yc:\program files (x86)\nec electronics tools\dev -_msgoff - obsr.lmf ..\..\..\Program Files (x86)\NEC Electronics Tools\C - C78K0R\W2.13\lib78k0r\s0rm.rel -gi1B339499E033F240BFAAh -pbsr - _k0r.map -nkd -gb7EFBFFh -bC:\Program Files (x86)\NEC Electro - nics Tools\CC78K0R\W2.13\lib78k0r\fsl.lib -bcl0rdm.lib -bcl0r - m.lib -bcl0rmf.lib -iC:\Program Files (x86)\NEC Electronics T - ools\CC78K0R\W2.13\lib78k0r -dbsr_mcu.dr -s -w0 loader.rel pm - .rel i2c_ctr.rel main.rel magic.rel WDT.rel i2c_mcu.rel i2c_t - wl.rel led.rel rtc.rel vreg_ctr.rel vreg_twl.rel adc.rel reng - e.rel accero.rel self_flash.rel sw.rel task_debug.rel task_mi - sc.rel task_sys.rel pedo_alg_thre_det2.rel ini_VECT.rel task_ - status.rel led_cam.rel led_pow.rel + C78K0R\W2.13\lib78k0r\s0rm.rel -go85h,0FC00h,1024 -gi1B339499 + E033F240BFAAh -pbsr_k0r.map -nkd -gb7EFBFFh -bC:\Program File + s (x86)\NEC Electronics Tools\CC78K0R\W2.13\lib78k0r\fsl.lib + -bcl0rdm.lib -bcl0rm.lib -bcl0rmf.lib -iC:\Program Files (x86 + )\NEC Electronics Tools\CC78K0R\W2.13\lib78k0r -dbsr_mcu.dr - + s -w2 loader.rel pm.rel i2c_ctr.rel main.rel magic.rel WDT.re + l i2c_mcu.rel i2c_twl.rel led.rel rtc.rel vreg_ctr.rel vreg_t + wl.rel adc.rel renge.rel accero.rel self_flash.rel sw.rel tas + k_debug.rel task_misc.rel task_sys.rel pedo_alg_thre_det2.rel + ini_VECT.rel task_status.rel led_cam.rel led_pow.rel hal.rel + batt_params.rel voltable.rel pedo_lpf_coeff.rel Para-file: Out-file: bsr.lmf Map-file: bsr_k0r.map @@ -23,9 +24,9 @@ Direc-file:bsr_mcu.dr *** Link information *** - 65 output segment(s) - 3DA7H byte(s) real data - 5803 symbol(s) defined + 72 output segment(s) + 3D8EH byte(s) real data + 6216 symbol(s) defined *** Memory map *** @@ -57,7 +58,10 @@ Direc-file:bsr_mcu.dr LDR_CNSL 00002H 00000H CSEG PAGE64KP LDR_CNSL task_status 00002H 00000H -* gap * 00002H 0000EH + LDR_CNSL 00002H 00000H CSEG PAGE64KP + LDR_CNSL hal 00002H 00000H + ??NMIROM 00002H 00002H CSEG +* gap * 00004H 0000CH @@VECT10 00010H 00004H CSEG AT @@VECT10 ini_VECT 00010H 00004H * gap * 00014H 00008H @@ -86,6 +90,8 @@ Direc-file:bsr_mcu.dr @@CODE 000C4H 00000H CSEG BASE @@CODE magic 000C4H 00000H @@CODE ini_VECT 000C4H 00000H + @@CODE batt_params + 000C4H 00000H LDR_CODL 000C4H 00000H CSEG LDR_CODL loader 000C4H 00000H LDR_CODL main 000C4H 00000H @@ -97,54 +103,57 @@ Direc-file:bsr_mcu.dr 000C4H 00000H LDR_CODL task_status 000C4H 00000H + LDR_CODL hal 000C4H 00000H ?CSEGSI 000C4H 0000AH CSEG - LDR_CODE 000CEH 00945H CSEG - LDR_CODE loader 000CEH 00218H - LDR_CODE main 002E6H 00042H - LDR_CODE WDT 00328H 00000H - LDR_CODE i2c_mcu 00328H 002F0H + ?OCDSTAD 000CEH 0000AH CSEG + LDR_CODE 000D8H 0097CH CSEG + LDR_CODE loader 000D8H 00196H + LDR_CODE main 0026EH 00048H + LDR_CODE WDT 002B6H 00000H + LDR_CODE i2c_mcu 002B6H 002D3H LDR_CODE self_flash - 00618H 00373H + 00589H 00373H LDR_CODE task_debug - 0098BH 00000H + 008FCH 00000H LDR_CODE task_status - 0098BH 00088H - FSL_CODE 00A13H 00322H CSEG + 008FCH 00077H + LDR_CODE hal 00973H 000E1H + FSL_CODE 00A54H 00322H CSEG FSL_CODE fsl_block_cmd - 00A13H 0002BH + 00A54H 0002BH FSL_CODE fsl_block_check - 00A3EH 00013H + 00A7FH 00013H FSL_CODE fsl_common - 00A51H 0014FH + 00A92H 0014FH FSL_CODE fsl_reset - 00BA0H 00001H + 00BE1H 00001H FSL_CODE fsl_si_ibf - 00BA1H 00064H + 00BE2H 00064H FSL_CODE fsl_phySwap - 00C05H 0004DH + 00C46H 0004DH FSL_CODE fsl_si_common - 00C52H 00061H - FSL_CODE fsl_swap 00CB3H 00030H + 00C93H 00061H + FSL_CODE fsl_swap 00CF4H 00030H FSL_CODE fsl_write - 00CE3H 00052H - @@LCODE 00D35H 00277H CSEG - @@LCODE @cstart 00D35H 0006DH - @@LCODE @imul 00DA2H 00011H - @@LCODE @lumul 00DB3H 0002BH - @@LCODE @isdiv 00DDEH 00022H - @@LCODE @iudiv 00E00H 0002DH - @@LCODE @isrem 00E2DH 00021H - @@LCODE @iurem 00E4EH 0002FH - @@LCODE @lsdiv 00E7DH 00039H - @@LCODE @ludiv 00EB6H 0003FH - @@LCODE @divuw 00EF5H 00034H - @@LCODE @ladd 00F29H 0000FH - @@LCODE @llsh 00F38H 0001BH - @@LCODE @lursh 00F53H 0001FH - @@LCODE @iscmp 00F72H 0000CH - @@LCODE @lband 00F7EH 00014H - @@LCODE @bcdtob 00F92H 0001AH -* gap * 00FACH 0004AH + 00D24H 00052H + @@LCODE 00D76H 00277H CSEG + @@LCODE @cstart 00D76H 0006DH + @@LCODE @imul 00DE3H 00011H + @@LCODE @lumul 00DF4H 0002BH + @@LCODE @isdiv 00E1FH 00022H + @@LCODE @iudiv 00E41H 0002DH + @@LCODE @isrem 00E6EH 00021H + @@LCODE @iurem 00E8FH 0002FH + @@LCODE @lsdiv 00EBEH 00039H + @@LCODE @ludiv 00EF7H 0003FH + @@LCODE @divuw 00F36H 00034H + @@LCODE @ladd 00F6AH 0000FH + @@LCODE @llsh 00F79H 0001BH + @@LCODE @lursh 00F94H 0001FH + @@LCODE @iscmp 00FB3H 0000CH + @@LCODE @lband 00FBFH 00014H + @@LCODE @bcdtob 00FD3H 0001AH +* gap * 00FEDH 00009H MGC_LOAD 00FF6H 0000AH CSEG AT MGC_LOAD magic 00FF6H 0000AH @@ -154,283 +163,338 @@ Direc-file:bsr_mcu.dr SEGMENT SEGMENT MODULE ADDRESS MGC_MIMI 02000H 0000AH CSEG AT MGC_MIMI magic 02000H 0000AH - @@CNST 0200AH 00282H CSEG + @@CNST 0200AH 0028EH CSEG @@CNST @cstart 0200AH 00000H @@CNST loader 0200AH 00000H - @@CNST pm 0200AH 001D0H - @@CNST i2c_ctr 021DAH 00000H - @@CNST main 021DAH 00000H - @@CNST magic 021DAH 00000H - @@CNST WDT 021DAH 00000H - @@CNST i2c_mcu 021DAH 00000H - @@CNST i2c_twl 021DAH 00000H - @@CNST led 021DAH 00000H - @@CNST rtc 021DAH 00000H - @@CNST vreg_ctr 021DAH 00000H - @@CNST vreg_twl 021DAH 00000H - @@CNST adc 021DAH 00048H - @@CNST renge 02222H 00000H - @@CNST accero 02222H 00000H + @@CNST pm 0200AH 00008H + @@CNST i2c_ctr 02012H 00000H + @@CNST main 02012H 00000H + @@CNST magic 02012H 00000H + @@CNST WDT 02012H 00000H + @@CNST i2c_mcu 02012H 00000H + @@CNST i2c_twl 02012H 00000H + @@CNST led 02012H 00000H + @@CNST rtc 02012H 00000H + @@CNST vreg_ctr 02012H 00000H + @@CNST vreg_twl 02012H 00000H + @@CNST adc 02012H 00014H + @@CNST renge 02026H 00000H + @@CNST accero 02026H 00000H @@CNST self_flash - 02222H 00002H - @@CNST sw 02224H 00000H + 02026H 00002H + @@CNST sw 02028H 00000H @@CNST task_debug - 02224H 00000H + 02028H 00000H @@CNST task_misc - 02224H 00000H - @@CNST task_sys 02224H 00000H + 02028H 00000H + @@CNST task_sys 02028H 00000H @@CNST pedo_alg_thre_det2 - 02224H 00048H - @@CNST ini_VECT 0226CH 00000H + 02028H 00018H + @@CNST ini_VECT 02040H 00000H @@CNST task_status - 0226CH 00000H - @@CNST led_cam 0226CH 00000H - @@CNST led_pow 0226CH 00020H - ROM_CODE 0228CH 026F1H CSEG - ROM_CODE pm 0228CH 009F9H - ROM_CODE i2c_ctr 02C85H 00060H - ROM_CODE i2c_twl 02CE5H 0005EH - ROM_CODE led 02D43H 00265H - ROM_CODE rtc 02FA8H 000E0H - ROM_CODE vreg_ctr 03088H 00486H - ROM_CODE vreg_twl 0350EH 000FAH - ROM_CODE adc 03608H 002E7H - ROM_CODE renge 038EFH 00190H - ROM_CODE accero 03A7FH 0013DH - ROM_CODE sw 03BBCH 00178H + 02040H 00000H + @@CNST led_cam 02040H 00000H + @@CNST led_pow 02040H 00020H + @@CNST hal 02060H 00000H + @@CNST batt_params + 02060H 001C8H + @@CNST voltable 02228H 00040H + @@CNST pedo_lpf_coeff + 02268H 00030H + ROM_CODE 02298H 02672H CSEG + ROM_CODE pm 02298H 009B7H + ROM_CODE i2c_ctr 02C4FH 0005CH + ROM_CODE i2c_twl 02CABH 0005EH + ROM_CODE led 02D09H 00265H + ROM_CODE rtc 02F6EH 000E0H + ROM_CODE vreg_ctr 0304EH 0049DH + ROM_CODE vreg_twl 034EBH 000F9H + ROM_CODE adc 035E4H 0026FH + ROM_CODE renge 03853H 0018AH + ROM_CODE accero 039DDH 00161H + ROM_CODE sw 03B3EH 00129H ROM_CODE task_misc - 03D34H 00177H - ROM_CODE task_sys 03EABH 00373H + 03C67H 001EEH + ROM_CODE task_sys 03E55H 0038DH ROM_CODE pedo_alg_thre_det2 - 0421EH 00502H - ROM_CODE led_cam 04720H 000DBH - ROM_CODE led_pow 047FBH 00182H - @@BASE 0497DH 004C6H CSEG BASE - @@BASE loader 0497DH 00000H - @@BASE pm 0497DH 0003FH - @@BASE i2c_ctr 049BCH 0018DH - @@BASE main 04B49H 00000H - @@BASE magic 04B49H 00000H - @@BASE WDT 04B49H 00000H - @@BASE i2c_mcu 04B49H 0009CH - @@BASE i2c_twl 04BE5H 000CBH - @@BASE led 04CB0H 00000H - @@BASE rtc 04CB0H 0005EH - @@BASE vreg_ctr 04D0EH 00000H - @@BASE vreg_twl 04D0EH 00000H - @@BASE adc 04D0EH 000B3H - @@BASE renge 04DC1H 00000H - @@BASE accero 04DC1H 0004AH + 041E2H 004F0H + ROM_CODE led_cam 046D2H 000C1H + ROM_CODE led_pow 04793H 00177H + ROM_CODE voltable 0490AH 00000H + ROM_CODE pedo_lpf_coeff + 0490AH 00000H + @@BASE 0490AH 004ABH CSEG BASE + @@BASE loader 0490AH 00000H + @@BASE pm 0490AH 0003FH + @@BASE i2c_ctr 04949H 00183H + @@BASE main 04ACCH 00000H + @@BASE magic 04ACCH 00000H + @@BASE WDT 04ACCH 00000H + @@BASE i2c_mcu 04ACCH 00098H + @@BASE i2c_twl 04B64H 000D0H + @@BASE led 04C34H 00000H + @@BASE rtc 04C34H 0005DH + @@BASE vreg_ctr 04C91H 00000H + @@BASE vreg_twl 04C91H 00000H + @@BASE adc 04C91H 000A2H + @@BASE renge 04D33H 00000H + @@BASE accero 04D33H 0004AH @@BASE self_flash - 04E0BH 00000H - @@BASE sw 04E0BH 00000H + 04D7DH 00000H + @@BASE sw 04D7DH 00000H @@BASE task_debug - 04E0BH 00000H + 04D7DH 00000H @@BASE task_misc - 04E0BH 00000H - @@BASE task_sys 04E0BH 00000H + 04D7DH 00000H + @@BASE task_sys 04D7DH 00000H @@BASE pedo_alg_thre_det2 - 04E0BH 00000H - @@BASE ini_VECT 04E0BH 00038H + 04D7DH 00000H + @@BASE ini_VECT 04D7DH 00038H @@BASE task_status - 04E43H 00000H - @@BASE led_cam 04E43H 00000H - @@BASE led_pow 04E43H 00000H - @@CNSTL 04E43H 00000H CSEG PAGE64KP - @@CNSTL @cstart 04E43H 00000H - @@CNSTL 04E43H 00000H CSEG PAGE64KP - @@CNSTL pm 04E43H 00000H - @@CNSTL 04E43H 00000H CSEG PAGE64KP - @@CNSTL i2c_ctr 04E43H 00000H - @@CNSTL 04E43H 00000H CSEG PAGE64KP - @@CNSTL i2c_twl 04E43H 00000H - @@CNSTL 04E43H 00000H CSEG PAGE64KP - @@CNSTL led 04E43H 00000H - @@CNSTL 04E43H 00000H CSEG PAGE64KP - @@CNSTL rtc 04E43H 00000H - @@CNSTL 04E43H 00000H CSEG PAGE64KP - @@CNSTL vreg_ctr 04E43H 00000H - @@CNSTL 04E43H 00000H CSEG PAGE64KP - @@CNSTL vreg_twl 04E43H 00000H - @@CNSTL 04E43H 00000H CSEG PAGE64KP - @@CNSTL adc 04E43H 00000H - @@CNSTL 04E43H 00000H CSEG PAGE64KP - @@CNSTL renge 04E43H 00000H - @@CNSTL 04E43H 00000H CSEG PAGE64KP - @@CNSTL accero 04E43H 00000H - @@CNSTL 04E43H 00000H CSEG PAGE64KP - @@CNSTL sw 04E43H 00000H - @@CNSTL 04E43H 00000H CSEG PAGE64KP + 04DB5H 00000H + @@BASE led_cam 04DB5H 00000H + @@BASE led_pow 04DB5H 00000H + @@BASE hal 04DB5H 00000H + @@BASE batt_params + 04DB5H 00000H + @@BASE voltable 04DB5H 00000H + @@BASE pedo_lpf_coeff + 04DB5H 00000H + @@CNSTL 04DB5H 00000H CSEG PAGE64KP + @@CNSTL @cstart 04DB5H 00000H + @@CNSTL 04DB5H 00000H CSEG PAGE64KP + @@CNSTL pm 04DB5H 00000H + @@CNSTL 04DB5H 00000H CSEG PAGE64KP + @@CNSTL i2c_ctr 04DB5H 00000H + @@CNSTL 04DB5H 00000H CSEG PAGE64KP + @@CNSTL i2c_twl 04DB5H 00000H + @@CNSTL 04DB5H 00000H CSEG PAGE64KP + @@CNSTL led 04DB5H 00000H + @@CNSTL 04DB5H 00000H CSEG PAGE64KP + @@CNSTL rtc 04DB5H 00000H + @@CNSTL 04DB5H 00000H CSEG PAGE64KP + @@CNSTL vreg_ctr 04DB5H 00000H + @@CNSTL 04DB5H 00000H CSEG PAGE64KP + @@CNSTL vreg_twl 04DB5H 00000H + @@CNSTL 04DB5H 00000H CSEG PAGE64KP + @@CNSTL adc 04DB5H 00000H + @@CNSTL 04DB5H 00000H CSEG PAGE64KP + @@CNSTL renge 04DB5H 00000H + @@CNSTL 04DB5H 00000H CSEG PAGE64KP + @@CNSTL accero 04DB5H 00000H + @@CNSTL 04DB5H 00000H CSEG PAGE64KP + @@CNSTL sw 04DB5H 00000H + @@CNSTL 04DB5H 00000H CSEG PAGE64KP @@CNSTL task_misc - 04E43H 00000H - @@CNSTL 04E43H 00000H CSEG PAGE64KP - @@CNSTL task_sys 04E43H 00000H - @@CNSTL 04E43H 00000H CSEG PAGE64KP + 04DB5H 00000H + @@CNSTL 04DB5H 00000H CSEG PAGE64KP + @@CNSTL task_sys 04DB5H 00000H + @@CNSTL 04DB5H 00000H CSEG PAGE64KP @@CNSTL pedo_alg_thre_det2 - 04E43H 00000H - @@CNSTL 04E43H 00000H CSEG PAGE64KP - @@CNSTL ini_VECT 04E43H 00000H - @@CNSTL 04E43H 00000H CSEG PAGE64KP - @@CNSTL led_cam 04E43H 00000H - @@CNSTL 04E43H 00000H CSEG PAGE64KP - @@CNSTL led_pow 04E43H 00000H - @@R_INIS 04E43H 00000H CSEG UNIT64KP - @@R_INIS @cstart 04E43H 00000H - @@R_INIS loader 04E43H 00000H - @@R_INIS pm 04E43H 00000H - @@R_INIS i2c_ctr 04E43H 00000H - @@R_INIS main 04E43H 00000H - @@R_INIS magic 04E43H 00000H - @@R_INIS WDT 04E43H 00000H - @@R_INIS i2c_mcu 04E43H 00000H - @@R_INIS i2c_twl 04E43H 00000H - @@R_INIS led 04E43H 00000H - @@R_INIS rtc 04E43H 00000H - @@R_INIS vreg_ctr 04E43H 00000H - @@R_INIS vreg_twl 04E43H 00000H - @@R_INIS adc 04E43H 00000H - @@R_INIS renge 04E43H 00000H - @@R_INIS accero 04E43H 00000H - @@R_INIS self_flash - 04E43H 00000H - @@R_INIS sw 04E43H 00000H - @@R_INIS task_debug - 04E43H 00000H - @@R_INIS task_misc - 04E43H 00000H - @@R_INIS task_sys 04E43H 00000H - @@R_INIS pedo_alg_thre_det2 - 04E43H 00000H - @@R_INIS ini_VECT 04E43H 00000H - @@R_INIS task_status - 04E43H 00000H - @@R_INIS led_cam 04E43H 00000H - @@R_INIS led_pow 04E43H 00000H - @@R_INIS @rom 04E43H 00000H - @@CALT 04E43H 00000H CSEG - @@CALT @cstart 04E43H 00000H - @@CALT loader 04E43H 00000H - @@CALT pm 04E43H 00000H - @@CALT i2c_ctr 04E43H 00000H - @@CALT main 04E43H 00000H - @@CALT magic 04E43H 00000H - @@CALT WDT 04E43H 00000H - @@CALT i2c_mcu 04E43H 00000H - @@CALT i2c_twl 04E43H 00000H - @@CALT led 04E43H 00000H - @@CALT rtc 04E43H 00000H - @@CALT vreg_ctr 04E43H 00000H - @@CALT vreg_twl 04E43H 00000H - @@CALT adc 04E43H 00000H - @@CALT renge 04E43H 00000H - @@CALT accero 04E43H 00000H + 04DB5H 00000H + @@CNSTL 04DB5H 00000H CSEG PAGE64KP + @@CNSTL ini_VECT 04DB5H 00000H + @@CNSTL 04DB5H 00000H CSEG PAGE64KP + @@CNSTL led_cam 04DB5H 00000H + @@CNSTL 04DB5H 00000H CSEG PAGE64KP + @@CNSTL led_pow 04DB5H 00000H + @@CNSTL 04DB5H 00000H CSEG PAGE64KP + @@CNSTL batt_params + 04DB5H 00000H + @@CNSTL 04DB5H 00000H CSEG PAGE64KP + @@CNSTL voltable 04DB5H 00000H + @@CNSTL 04DB5H 00000H CSEG PAGE64KP + @@CNSTL pedo_lpf_coeff + 04DB5H 00000H + @@CALT 04DB5H 00000H CSEG + @@CALT @cstart 04DB5H 00000H + @@CALT loader 04DB5H 00000H + @@CALT pm 04DB5H 00000H + @@CALT i2c_ctr 04DB5H 00000H + @@CALT main 04DB5H 00000H + @@CALT magic 04DB5H 00000H + @@CALT WDT 04DB5H 00000H + @@CALT i2c_mcu 04DB5H 00000H + @@CALT i2c_twl 04DB5H 00000H + @@CALT led 04DB5H 00000H + @@CALT rtc 04DB5H 00000H + @@CALT vreg_ctr 04DB5H 00000H + @@CALT vreg_twl 04DB5H 00000H + @@CALT adc 04DB5H 00000H + @@CALT renge 04DB5H 00000H + @@CALT accero 04DB5H 00000H @@CALT self_flash - 04E43H 00000H - @@CALT sw 04E43H 00000H + 04DB5H 00000H + @@CALT sw 04DB5H 00000H @@CALT task_debug - 04E43H 00000H + 04DB5H 00000H @@CALT task_misc - 04E43H 00000H - @@CALT task_sys 04E43H 00000H + 04DB5H 00000H + @@CALT task_sys 04DB5H 00000H @@CALT pedo_alg_thre_det2 - 04E43H 00000H - @@CALT ini_VECT 04E43H 00000H + 04DB5H 00000H + @@CALT ini_VECT 04DB5H 00000H @@CALT task_status - 04E43H 00000H - @@CALT led_cam 04E43H 00000H - @@CALT led_pow 04E43H 00000H - @@RLINIT 04E43H 00000H CSEG UNIT64KP - @@RLINIT loader 04E43H 00000H - @@RLINIT pm 04E43H 00000H - @@RLINIT i2c_ctr 04E43H 00000H - @@RLINIT main 04E43H 00000H - @@RLINIT magic 04E43H 00000H - @@RLINIT WDT 04E43H 00000H - @@RLINIT i2c_mcu 04E43H 00000H - @@RLINIT i2c_twl 04E43H 00000H - @@RLINIT led 04E43H 00000H - @@RLINIT rtc 04E43H 00000H - @@RLINIT vreg_ctr 04E43H 00000H - @@RLINIT vreg_twl 04E43H 00000H - @@RLINIT adc 04E43H 00000H - @@RLINIT renge 04E43H 00000H - @@RLINIT accero 04E43H 00000H + 04DB5H 00000H + @@CALT led_cam 04DB5H 00000H + @@CALT led_pow 04DB5H 00000H + @@CALT hal 04DB5H 00000H + @@CALT batt_params + 04DB5H 00000H + @@CALT voltable 04DB5H 00000H + @@CALT pedo_lpf_coeff + 04DB5H 00000H + @@RLINIT 04DB5H 00000H CSEG UNIT64KP + @@RLINIT loader 04DB5H 00000H + @@RLINIT pm 04DB5H 00000H + @@RLINIT i2c_ctr 04DB5H 00000H + @@RLINIT main 04DB5H 00000H + @@RLINIT magic 04DB5H 00000H + @@RLINIT WDT 04DB5H 00000H + @@RLINIT i2c_mcu 04DB5H 00000H + @@RLINIT i2c_twl 04DB5H 00000H + @@RLINIT led 04DB5H 00000H + @@RLINIT rtc 04DB5H 00000H + @@RLINIT vreg_ctr 04DB5H 00000H + @@RLINIT vreg_twl 04DB5H 00000H + @@RLINIT adc 04DB5H 00000H + @@RLINIT renge 04DB5H 00000H + @@RLINIT accero 04DB5H 00000H @@RLINIT self_flash - 04E43H 00000H - @@RLINIT sw 04E43H 00000H + 04DB5H 00000H + @@RLINIT sw 04DB5H 00000H @@RLINIT task_debug - 04E43H 00000H + 04DB5H 00000H @@RLINIT task_misc - 04E43H 00000H - @@RLINIT task_sys 04E43H 00000H + 04DB5H 00000H + @@RLINIT task_sys 04DB5H 00000H @@RLINIT pedo_alg_thre_det2 - 04E43H 00000H - @@RLINIT ini_VECT 04E43H 00000H + 04DB5H 00000H + @@RLINIT ini_VECT 04DB5H 00000H @@RLINIT task_status - 04E43H 00000H - @@RLINIT led_cam 04E43H 00000H - @@RLINIT led_pow 04E43H 00000H - @@RLINIT @rom 04E43H 00000H - @@CODEL 04E43H 00000H CSEG - @@CODEL pm 04E43H 00000H - @@CODEL i2c_ctr 04E43H 00000H - @@CODEL magic 04E43H 00000H - @@CODEL i2c_twl 04E43H 00000H - @@CODEL led 04E43H 00000H - @@CODEL rtc 04E43H 00000H - @@CODEL vreg_ctr 04E43H 00000H - @@CODEL vreg_twl 04E43H 00000H - @@CODEL adc 04E43H 00000H - @@CODEL renge 04E43H 00000H - @@CODEL accero 04E43H 00000H - @@CODEL sw 04E43H 00000H + 04DB5H 00000H + @@RLINIT led_cam 04DB5H 00000H + @@RLINIT led_pow 04DB5H 00000H + @@RLINIT hal 04DB5H 00000H + @@RLINIT batt_params + 04DB5H 00000H + @@RLINIT voltable 04DB5H 00000H + @@RLINIT pedo_lpf_coeff + 04DB5H 00000H + @@RLINIT @rom 04DB5H 00000H + @@CODEL 04DB5H 00000H CSEG + @@CODEL pm 04DB5H 00000H + @@CODEL i2c_ctr 04DB5H 00000H + @@CODEL magic 04DB5H 00000H + @@CODEL i2c_twl 04DB5H 00000H + @@CODEL led 04DB5H 00000H + @@CODEL rtc 04DB5H 00000H + @@CODEL vreg_ctr 04DB5H 00000H + @@CODEL vreg_twl 04DB5H 00000H + @@CODEL adc 04DB5H 00000H + @@CODEL renge 04DB5H 00000H + @@CODEL accero 04DB5H 00000H + @@CODEL sw 04DB5H 00000H @@CODEL task_misc - 04E43H 00000H - @@CODEL task_sys 04E43H 00000H + 04DB5H 00000H + @@CODEL task_sys 04DB5H 00000H @@CODEL pedo_alg_thre_det2 - 04E43H 00000H - @@CODEL ini_VECT 04E43H 00000H - @@CODEL led_cam 04E43H 00000H - @@CODEL led_pow 04E43H 00000H -* gap * 04E43H 00001H - @@CNSTL 04E44H 0000AH CSEG PAGE64KP - @@CNSTL @bcdtob 04E44H 0000AH - @@R_INIT 04E4EH 00038H CSEG UNIT64KP - @@R_INIT @cstart 04E4EH 00000H - @@R_INIT loader 04E4EH 00000H - @@R_INIT pm 04E4EH 00002H - @@R_INIT i2c_ctr 04E50H 00002H - @@R_INIT main 04E52H 00000H - @@R_INIT magic 04E52H 00000H - @@R_INIT WDT 04E52H 00000H - @@R_INIT i2c_mcu 04E52H 00000H - @@R_INIT i2c_twl 04E52H 00000H - @@R_INIT led 04E52H 00000H - @@R_INIT rtc 04E52H 00000H - @@R_INIT vreg_ctr 04E52H 00000H - @@R_INIT vreg_twl 04E52H 00000H - @@R_INIT adc 04E52H 0000CH - @@R_INIT renge 04E5EH 00014H - @@R_INIT accero 04E72H 00000H + 04DB5H 00000H + @@CODEL ini_VECT 04DB5H 00000H + @@CODEL led_cam 04DB5H 00000H + @@CODEL led_pow 04DB5H 00000H + @@CODEL batt_params + 04DB5H 00000H + @@CODEL voltable 04DB5H 00000H + @@CODEL pedo_lpf_coeff + 04DB5H 00000H +* gap * 04DB5H 00001H + @@CNSTL 04DB6H 0000AH CSEG PAGE64KP + @@CNSTL @bcdtob 04DB6H 0000AH + @@R_INIT 04DC0H 00046H CSEG UNIT64KP + @@R_INIT @cstart 04DC0H 00000H + @@R_INIT loader 04DC0H 00000H + @@R_INIT pm 04DC0H 00000H + @@R_INIT i2c_ctr 04DC0H 00000H + @@R_INIT main 04DC0H 00000H + @@R_INIT magic 04DC0H 00000H + @@R_INIT WDT 04DC0H 00000H + @@R_INIT i2c_mcu 04DC0H 00000H + @@R_INIT i2c_twl 04DC0H 00000H + @@R_INIT led 04DC0H 00000H + @@R_INIT rtc 04DC0H 00000H + @@R_INIT vreg_ctr 04DC0H 00000H + @@R_INIT vreg_twl 04DC0H 00000H + @@R_INIT adc 04DC0H 00000H + @@R_INIT renge 04DC0H 00014H + @@R_INIT accero 04DD4H 00000H @@R_INIT self_flash - 04E72H 00000H - @@R_INIT sw 04E72H 00002H + 04DD4H 00000H + @@R_INIT sw 04DD4H 00000H @@R_INIT task_debug - 04E74H 00000H + 04DD4H 00000H @@R_INIT task_misc - 04E74H 00000H - @@R_INIT task_sys 04E74H 00002H + 04DD4H 00026H + @@R_INIT task_sys 04DFAH 00002H @@R_INIT pedo_alg_thre_det2 - 04E76H 00006H - @@R_INIT ini_VECT 04E7CH 00000H + 04DFCH 00006H + @@R_INIT ini_VECT 04E02H 00000H @@R_INIT task_status - 04E7CH 00002H - @@R_INIT led_cam 04E7EH 00002H - @@R_INIT led_pow 04E80H 00006H - @@R_INIT @rom 04E86H 00000H - @@LCODEL 04E86H 00008H CSEG - @@LCODEL abs 04E86H 00008H -* gap * 04E8EH 00168H + 04E02H 00000H + @@R_INIT led_cam 04E02H 00000H + @@R_INIT led_pow 04E02H 00004H + @@R_INIT hal 04E06H 00000H + @@R_INIT batt_params + 04E06H 00000H + @@R_INIT voltable 04E06H 00000H + @@R_INIT pedo_lpf_coeff + 04E06H 00000H + @@R_INIT @rom 04E06H 00000H + @@R_INIS 04E06H 00008H CSEG UNIT64KP + @@R_INIS @cstart 04E06H 00000H + @@R_INIS loader 04E06H 00000H + @@R_INIS pm 04E06H 00002H + @@R_INIS i2c_ctr 04E08H 00002H + @@R_INIS main 04E0AH 00000H + @@R_INIS magic 04E0AH 00000H + @@R_INIS WDT 04E0AH 00000H + @@R_INIS i2c_mcu 04E0AH 00000H + @@R_INIS i2c_twl 04E0AH 00000H + @@R_INIS led 04E0AH 00000H + @@R_INIS rtc 04E0AH 00000H + @@R_INIS vreg_ctr 04E0AH 00000H + @@R_INIS vreg_twl 04E0AH 00000H + @@R_INIS adc 04E0AH 00000H + @@R_INIS renge 04E0AH 00000H + @@R_INIS accero 04E0AH 00000H + @@R_INIS self_flash + 04E0AH 00000H + @@R_INIS sw 04E0AH 00000H + @@R_INIS task_debug + 04E0AH 00000H + @@R_INIS task_misc + 04E0AH 00000H + @@R_INIS task_sys 04E0AH 00000H + @@R_INIS pedo_alg_thre_det2 + 04E0AH 00000H + @@R_INIS ini_VECT 04E0AH 00000H + @@R_INIS task_status + 04E0AH 00000H + @@R_INIS led_cam 04E0AH 00002H + @@R_INIS led_pow 04E0CH 00002H + @@R_INIS hal 04E0EH 00000H + @@R_INIS batt_params + 04E0EH 00000H + @@R_INIS voltable 04E0EH 00000H + @@R_INIS pedo_lpf_coeff + 04E0EH 00000H + @@R_INIS @rom 04E0EH 00000H + @@LCODEL 04E0EH 00022H CSEG + @@LCODEL abs 04E0EH 00008H + @@LCODEL memcpy_n 04E16H 0001AH +* gap * 04E30H 001C4H + MGC_VER 04FF4H 00002H CSEG AT + MGC_VER magic 04FF4H 00002H MGC_TAIL 04FF6H 0000AH CSEG AT MGC_TAIL magic 04FF6H 0000AH @@ -438,244 +502,286 @@ Direc-file:bsr_mcu.dr BASE ADDRESS=FF900H SIZE=00500H OUTPUT INPUT INPUT BASE SIZE SEGMENT SEGMENT MODULE ADDRESS - @@DATA FF900H 00430H DSEG BASEP + @@DATA FF900H 003FEH DSEG BASEP @@DATA @cstart FF900H 00002H @@DATA loader FF902H 00000H - @@DATA pm FF902H 00018H - @@DATA i2c_ctr FF91AH 00006H - @@DATA main FF920H 0021EH - @@DATA magic FFB3EH 00000H - @@DATA WDT FFB3EH 00000H - @@DATA i2c_mcu FFB3EH 0000AH - @@DATA i2c_twl FFB48H 00000H - @@DATA led FFB48H 0007CH - @@DATA rtc FFBC4H 00008H - @@DATA vreg_ctr FFBCCH 0005EH - @@DATA vreg_twl FFC2AH 00010H - @@DATA adc FFC3AH 00018H - @@DATA renge FFC52H 00016H - @@DATA accero FFC68H 00002H + @@DATA pm FF902H 0000EH + @@DATA i2c_ctr FF910H 00004H + @@DATA main FF914H 0021EH + @@DATA magic FFB32H 00000H + @@DATA WDT FFB32H 00000H + @@DATA i2c_mcu FFB32H 00006H + @@DATA i2c_twl FFB38H 00000H + @@DATA led FFB38H 0007CH + @@DATA rtc FFBB4H 00008H + @@DATA vreg_ctr FFBBCH 0005EH + @@DATA vreg_twl FFC1AH 00010H + @@DATA adc FFC2AH 00004H + @@DATA renge FFC2EH 00014H + @@DATA accero FFC42H 00002H @@DATA self_flash - FFC6AH 00002H - @@DATA sw FFC6CH 0000AH + FFC44H 00002H + @@DATA sw FFC46H 00002H @@DATA task_debug - FFC76H 00000H + FFC48H 00000H @@DATA task_misc - FFC76H 00004H - @@DATA task_sys FFC7AH 00002H + FFC48H 0000AH + @@DATA task_sys FFC52H 00002H @@DATA pedo_alg_thre_det2 - FFC7CH 000A6H - @@DATA ini_VECT FFD22H 00000H + FFC54H 000A0H + @@DATA ini_VECT FFCF4H 00000H @@DATA task_status - FFD22H 00002H - @@DATA led_cam FFD24H 00002H - @@DATA led_pow FFD26H 0000AH - @@DATA @rom FFD30H 00000H - @@INIT FFD30H 00038H DSEG BASEP - @@INIT @cstart FFD30H 00000H - @@INIT loader FFD30H 00000H - @@INIT pm FFD30H 00002H - @@INIT i2c_ctr FFD32H 00002H - @@INIT main FFD34H 00000H - @@INIT magic FFD34H 00000H - @@INIT WDT FFD34H 00000H - @@INIT i2c_mcu FFD34H 00000H - @@INIT i2c_twl FFD34H 00000H - @@INIT led FFD34H 00000H - @@INIT rtc FFD34H 00000H - @@INIT vreg_ctr FFD34H 00000H - @@INIT vreg_twl FFD34H 00000H - @@INIT adc FFD34H 0000CH - @@INIT renge FFD40H 00014H - @@INIT accero FFD54H 00000H + FFCF4H 00002H + @@DATA led_cam FFCF6H 00000H + @@DATA led_pow FFCF6H 00008H + @@DATA hal FFCFEH 00000H + @@DATA batt_params + FFCFEH 00000H + @@DATA voltable FFCFEH 00000H + @@DATA pedo_lpf_coeff + FFCFEH 00000H + @@DATA @rom FFCFEH 00000H + @@INIT FFCFEH 00046H DSEG BASEP + @@INIT @cstart FFCFEH 00000H + @@INIT loader FFCFEH 00000H + @@INIT pm FFCFEH 00000H + @@INIT i2c_ctr FFCFEH 00000H + @@INIT main FFCFEH 00000H + @@INIT magic FFCFEH 00000H + @@INIT WDT FFCFEH 00000H + @@INIT i2c_mcu FFCFEH 00000H + @@INIT i2c_twl FFCFEH 00000H + @@INIT led FFCFEH 00000H + @@INIT rtc FFCFEH 00000H + @@INIT vreg_ctr FFCFEH 00000H + @@INIT vreg_twl FFCFEH 00000H + @@INIT adc FFCFEH 00000H + @@INIT renge FFCFEH 00014H + @@INIT accero FFD12H 00000H @@INIT self_flash - FFD54H 00000H - @@INIT sw FFD54H 00002H + FFD12H 00000H + @@INIT sw FFD12H 00000H @@INIT task_debug - FFD56H 00000H + FFD12H 00000H @@INIT task_misc - FFD56H 00000H - @@INIT task_sys FFD56H 00002H + FFD12H 00026H + @@INIT task_sys FFD38H 00002H @@INIT pedo_alg_thre_det2 - FFD58H 00006H - @@INIT ini_VECT FFD5EH 00000H + FFD3AH 00006H + @@INIT ini_VECT FFD40H 00000H @@INIT task_status - FFD5EH 00002H - @@INIT led_cam FFD60H 00002H - @@INIT led_pow FFD62H 00006H - @@INIT @rom FFD68H 00000H - @@INIS FFD68H 00000H DSEG UNITP - @@INIS @cstart FFD68H 00000H - @@INIS loader FFD68H 00000H - @@INIS pm FFD68H 00000H - @@INIS i2c_ctr FFD68H 00000H - @@INIS main FFD68H 00000H - @@INIS magic FFD68H 00000H - @@INIS WDT FFD68H 00000H - @@INIS i2c_mcu FFD68H 00000H - @@INIS i2c_twl FFD68H 00000H - @@INIS led FFD68H 00000H - @@INIS rtc FFD68H 00000H - @@INIS vreg_ctr FFD68H 00000H - @@INIS vreg_twl FFD68H 00000H - @@INIS adc FFD68H 00000H - @@INIS renge FFD68H 00000H - @@INIS accero FFD68H 00000H - @@INIS self_flash - FFD68H 00000H - @@INIS sw FFD68H 00000H - @@INIS task_debug - FFD68H 00000H - @@INIS task_misc - FFD68H 00000H - @@INIS task_sys FFD68H 00000H - @@INIS pedo_alg_thre_det2 - FFD68H 00000H - @@INIS ini_VECT FFD68H 00000H - @@INIS task_status - FFD68H 00000H - @@INIS led_cam FFD68H 00000H - @@INIS led_pow FFD68H 00000H - @@INIS @rom FFD68H 00000H - @@DATS FFD68H 00000H DSEG UNITP - @@DATS @cstart FFD68H 00000H - @@DATS loader FFD68H 00000H - @@DATS pm FFD68H 00000H - @@DATS i2c_ctr FFD68H 00000H - @@DATS main FFD68H 00000H - @@DATS magic FFD68H 00000H - @@DATS WDT FFD68H 00000H - @@DATS i2c_mcu FFD68H 00000H - @@DATS i2c_twl FFD68H 00000H - @@DATS led FFD68H 00000H - @@DATS rtc FFD68H 00000H - @@DATS vreg_ctr FFD68H 00000H - @@DATS vreg_twl FFD68H 00000H - @@DATS adc FFD68H 00000H - @@DATS renge FFD68H 00000H - @@DATS accero FFD68H 00000H - @@DATS self_flash - FFD68H 00000H - @@DATS sw FFD68H 00000H - @@DATS task_debug - FFD68H 00000H - @@DATS task_misc - FFD68H 00000H - @@DATS task_sys FFD68H 00000H - @@DATS pedo_alg_thre_det2 - FFD68H 00000H - @@DATS ini_VECT FFD68H 00000H - @@DATS task_status - FFD68H 00000H - @@DATS led_cam FFD68H 00000H - @@DATS led_pow FFD68H 00000H - @@DATS @rom FFD68H 00000H - FSL_DATA FFD68H 00010H DSEG UNITP + FFD40H 00000H + @@INIT led_cam FFD40H 00000H + @@INIT led_pow FFD40H 00004H + @@INIT hal FFD44H 00000H + @@INIT batt_params + FFD44H 00000H + @@INIT voltable FFD44H 00000H + @@INIT pedo_lpf_coeff + FFD44H 00000H + @@INIT @rom FFD44H 00000H + FSL_DATA FFD44H 00010H DSEG UNITP FSL_DATA fsl_common - FFD68H 00010H - @@INITL FFD78H 00000H DSEG UNIT64KP - @@INITL loader FFD78H 00000H - @@INITL pm FFD78H 00000H - @@INITL i2c_ctr FFD78H 00000H - @@INITL main FFD78H 00000H - @@INITL magic FFD78H 00000H - @@INITL WDT FFD78H 00000H - @@INITL i2c_mcu FFD78H 00000H - @@INITL i2c_twl FFD78H 00000H - @@INITL led FFD78H 00000H - @@INITL rtc FFD78H 00000H - @@INITL vreg_ctr FFD78H 00000H - @@INITL vreg_twl FFD78H 00000H - @@INITL adc FFD78H 00000H - @@INITL renge FFD78H 00000H - @@INITL accero FFD78H 00000H + FFD44H 00010H + @@INITL FFD54H 00000H DSEG UNIT64KP + @@INITL loader FFD54H 00000H + @@INITL pm FFD54H 00000H + @@INITL i2c_ctr FFD54H 00000H + @@INITL main FFD54H 00000H + @@INITL magic FFD54H 00000H + @@INITL WDT FFD54H 00000H + @@INITL i2c_mcu FFD54H 00000H + @@INITL i2c_twl FFD54H 00000H + @@INITL led FFD54H 00000H + @@INITL rtc FFD54H 00000H + @@INITL vreg_ctr FFD54H 00000H + @@INITL vreg_twl FFD54H 00000H + @@INITL adc FFD54H 00000H + @@INITL renge FFD54H 00000H + @@INITL accero FFD54H 00000H @@INITL self_flash - FFD78H 00000H - @@INITL sw FFD78H 00000H + FFD54H 00000H + @@INITL sw FFD54H 00000H @@INITL task_debug - FFD78H 00000H + FFD54H 00000H @@INITL task_misc - FFD78H 00000H - @@INITL task_sys FFD78H 00000H + FFD54H 00000H + @@INITL task_sys FFD54H 00000H @@INITL pedo_alg_thre_det2 - FFD78H 00000H - @@INITL ini_VECT FFD78H 00000H + FFD54H 00000H + @@INITL ini_VECT FFD54H 00000H @@INITL task_status - FFD78H 00000H - @@INITL led_cam FFD78H 00000H - @@INITL led_pow FFD78H 00000H - @@INITL @rom FFD78H 00000H - @@DATAL FFD78H 00000H DSEG UNIT64KP - @@DATAL loader FFD78H 00000H - @@DATAL pm FFD78H 00000H - @@DATAL i2c_ctr FFD78H 00000H - @@DATAL main FFD78H 00000H - @@DATAL magic FFD78H 00000H - @@DATAL WDT FFD78H 00000H - @@DATAL i2c_mcu FFD78H 00000H - @@DATAL i2c_twl FFD78H 00000H - @@DATAL led FFD78H 00000H - @@DATAL rtc FFD78H 00000H - @@DATAL vreg_ctr FFD78H 00000H - @@DATAL vreg_twl FFD78H 00000H - @@DATAL adc FFD78H 00000H - @@DATAL renge FFD78H 00000H - @@DATAL accero FFD78H 00000H + FFD54H 00000H + @@INITL led_cam FFD54H 00000H + @@INITL led_pow FFD54H 00000H + @@INITL hal FFD54H 00000H + @@INITL batt_params + FFD54H 00000H + @@INITL voltable FFD54H 00000H + @@INITL pedo_lpf_coeff + FFD54H 00000H + @@INITL @rom FFD54H 00000H + @@DATAL FFD54H 00000H DSEG UNIT64KP + @@DATAL loader FFD54H 00000H + @@DATAL pm FFD54H 00000H + @@DATAL i2c_ctr FFD54H 00000H + @@DATAL main FFD54H 00000H + @@DATAL magic FFD54H 00000H + @@DATAL WDT FFD54H 00000H + @@DATAL i2c_mcu FFD54H 00000H + @@DATAL i2c_twl FFD54H 00000H + @@DATAL led FFD54H 00000H + @@DATAL rtc FFD54H 00000H + @@DATAL vreg_ctr FFD54H 00000H + @@DATAL vreg_twl FFD54H 00000H + @@DATAL adc FFD54H 00000H + @@DATAL renge FFD54H 00000H + @@DATAL accero FFD54H 00000H @@DATAL self_flash - FFD78H 00000H - @@DATAL sw FFD78H 00000H + FFD54H 00000H + @@DATAL sw FFD54H 00000H @@DATAL task_debug - FFD78H 00000H + FFD54H 00000H @@DATAL task_misc - FFD78H 00000H - @@DATAL task_sys FFD78H 00000H + FFD54H 00000H + @@DATAL task_sys FFD54H 00000H @@DATAL pedo_alg_thre_det2 - FFD78H 00000H - @@DATAL ini_VECT FFD78H 00000H + FFD54H 00000H + @@DATAL ini_VECT FFD54H 00000H @@DATAL task_status - FFD78H 00000H - @@DATAL led_cam FFD78H 00000H - @@DATAL led_pow FFD78H 00000H - @@DATAL @rom FFD78H 00000H -* gap * FFD78H 00088H + FFD54H 00000H + @@DATAL led_cam FFD54H 00000H + @@DATAL led_pow FFD54H 00000H + @@DATAL hal FFD54H 00000H + @@DATAL batt_params + FFD54H 00000H + @@DATAL voltable FFD54H 00000H + @@DATAL pedo_lpf_coeff + FFD54H 00000H + @@DATAL @rom FFD54H 00000H +* gap * FFD54H 000ACH MEMORY=RAM2 BASE ADDRESS=FFE20H SIZE=000C0H OUTPUT INPUT INPUT BASE SIZE SEGMENT SEGMENT MODULE ADDRESS - @@BITS FFE20H 00005H BSEG - @@BITS @cstart FFE20H.0 00000H.0 - @@BITS loader FFE20H.0 00000H.0 - @@BITS pm FFE20H.0 00001H.0 - @@BITS i2c_ctr FFE21H.0 00000H.0 - @@BITS main FFE21H.0 00000H.0 - @@BITS magic FFE21H.0 00000H.0 - @@BITS WDT FFE21H.0 00000H.0 - @@BITS i2c_mcu FFE21H.0 00000H.3 - @@BITS i2c_twl FFE21H.3 00000H.0 - @@BITS led FFE21H.3 00000H.4 - @@BITS rtc FFE21H.7 00000H.3 - @@BITS vreg_ctr FFE22H.2 00000H.1 - @@BITS vreg_twl FFE22H.3 00000H.0 - @@BITS adc FFE22H.3 00000H.4 - @@BITS renge FFE22H.7 00000H.3 - @@BITS accero FFE23H.2 00000H.0 + @@INIS FFE20H 00008H DSEG SADDRP + @@INIS @cstart FFE20H 00000H + @@INIS loader FFE20H 00000H + @@INIS pm FFE20H 00002H + @@INIS i2c_ctr FFE22H 00002H + @@INIS main FFE24H 00000H + @@INIS magic FFE24H 00000H + @@INIS WDT FFE24H 00000H + @@INIS i2c_mcu FFE24H 00000H + @@INIS i2c_twl FFE24H 00000H + @@INIS led FFE24H 00000H + @@INIS rtc FFE24H 00000H + @@INIS vreg_ctr FFE24H 00000H + @@INIS vreg_twl FFE24H 00000H + @@INIS adc FFE24H 00000H + @@INIS renge FFE24H 00000H + @@INIS accero FFE24H 00000H + @@INIS self_flash + FFE24H 00000H + @@INIS sw FFE24H 00000H + @@INIS task_debug + FFE24H 00000H + @@INIS task_misc + FFE24H 00000H + @@INIS task_sys FFE24H 00000H + @@INIS pedo_alg_thre_det2 + FFE24H 00000H + @@INIS ini_VECT FFE24H 00000H + @@INIS task_status + FFE24H 00000H + @@INIS led_cam FFE24H 00002H + @@INIS led_pow FFE26H 00002H + @@INIS hal FFE28H 00000H + @@INIS batt_params + FFE28H 00000H + @@INIS voltable FFE28H 00000H + @@INIS pedo_lpf_coeff + FFE28H 00000H + @@INIS @rom FFE28H 00000H + @@DATS FFE28H 00034H DSEG SADDRP + @@DATS @cstart FFE28H 00000H + @@DATS loader FFE28H 00000H + @@DATS pm FFE28H 0000AH + @@DATS i2c_ctr FFE32H 00002H + @@DATS main FFE34H 00000H + @@DATS magic FFE34H 00000H + @@DATS WDT FFE34H 00000H + @@DATS i2c_mcu FFE34H 00004H + @@DATS i2c_twl FFE38H 00000H + @@DATS led FFE38H 00000H + @@DATS rtc FFE38H 00000H + @@DATS vreg_ctr FFE38H 00002H + @@DATS vreg_twl FFE3AH 00000H + @@DATS adc FFE3AH 00008H + @@DATS renge FFE42H 00002H + @@DATS accero FFE44H 00000H + @@DATS self_flash + FFE44H 00000H + @@DATS sw FFE44H 0000AH + @@DATS task_debug + FFE4EH 00000H + @@DATS task_misc + FFE4EH 00002H + @@DATS task_sys FFE50H 00002H + @@DATS pedo_alg_thre_det2 + FFE52H 00006H + @@DATS ini_VECT FFE58H 00000H + @@DATS task_status + FFE58H 00000H + @@DATS led_cam FFE58H 00002H + @@DATS led_pow FFE5AH 00002H + @@DATS hal FFE5CH 00000H + @@DATS batt_params + FFE5CH 00000H + @@DATS voltable FFE5CH 00000H + @@DATS pedo_lpf_coeff + FFE5CH 00000H + @@DATS @rom FFE5CH 00000H + @@BITS FFE5CH 00005H BSEG + @@BITS @cstart FFE5CH.0 00000H.0 + @@BITS loader FFE5CH.0 00000H.0 + @@BITS pm FFE5CH.0 00001H.0 + @@BITS i2c_ctr FFE5DH.0 00000H.0 + @@BITS main FFE5DH.0 00000H.1 + @@BITS magic FFE5DH.1 00000H.0 + @@BITS WDT FFE5DH.1 00000H.0 + @@BITS i2c_mcu FFE5DH.1 00000H.3 + @@BITS i2c_twl FFE5DH.4 00000H.0 + @@BITS led FFE5DH.4 00000H.4 + @@BITS rtc FFE5EH.0 00000H.3 + @@BITS vreg_ctr FFE5EH.3 00000H.1 + @@BITS vreg_twl FFE5EH.4 00000H.0 + @@BITS adc FFE5EH.4 00000H.4 + @@BITS renge FFE5FH.0 00000H.3 + @@BITS accero FFE5FH.3 00000H.0 @@BITS self_flash - FFE23H.2 00000H.0 - @@BITS sw FFE23H.2 00000H.2 + FFE5FH.3 00000H.0 + @@BITS sw FFE5FH.3 00000H.1 @@BITS task_debug - FFE23H.4 00000H.0 + FFE5FH.4 00000H.0 @@BITS task_misc - FFE23H.4 00000H.2 - @@BITS task_sys FFE23H.6 00000H.0 + FFE5FH.4 00000H.3 + @@BITS task_sys FFE5FH.7 00000H.0 @@BITS pedo_alg_thre_det2 - FFE23H.6 00000H.2 - @@BITS ini_VECT FFE24H.0 00000H.0 + FFE5FH.7 00000H.2 + @@BITS ini_VECT FFE60H.1 00000H.0 @@BITS task_status - FFE24H.0 00000H.0 - @@BITS led_cam FFE24H.0 00000H.1 - @@BITS led_pow FFE24H.1 00000H.0 -* gap * FFE25H 000AFH + FFE60H.1 00000H.0 + @@BITS led_cam FFE60H.1 00000H.1 + @@BITS led_pow FFE60H.2 00000H.0 + @@BITS hal FFE60H.2 00000H.6 + @@BITS batt_params + FFE61H.0 00000H.0 + @@BITS voltable FFE61H.0 00000H.0 + @@BITS pedo_lpf_coeff + FFE61H.0 00000H.0 +* gap * FFE61H 00073H @@SEGREG FFED4H 00004H DSEG AT @@SEGREG @SEGREG FFED4H 00004H @@RTARG0 FFED8H 00008H DSEG AT diff --git a/trunk/bsr_mcu.dr b/trunk/bsr_mcu.dr index bd8099c..81aeecc 100644 --- a/trunk/bsr_mcu.dr +++ b/trunk/bsr_mcu.dr @@ -40,9 +40,7 @@ MERGE @@R_INIT: =ROM ; ROM ; RAM1,RAM2領域はユーザープログラムで使用しても良いですが、セルフプログラム時は ; セルフプログラムのライブラリが使用するため、値は破壊されます。 ; -memory RAM2 : (0FFE20H, 00C0H) ; セルフプログラム時、使用禁止領域 -;memory SLF_RAM : (0FFE00H, 0020H) ; Slef Program予約領域[使用禁止] memory RAM : (0FF900H, 0500H) ; ユーザーRAM領域 ;memory SLF_RAM : (0FF900H, 0020H) ; Slef Program予約領域[使用禁止] - - +memory RAM2 : (0FFE20H, 00C0H) ; セルフプログラム時、使用禁止領域 +;memory SLF_RAM : (0FFE00H, 0020H) ; Slef Program予約領域[使用禁止] diff --git a/trunk/bsr_system.h b/trunk/bsr_system.h index 6f5bb61..bb6105f 100644 --- a/trunk/bsr_system.h +++ b/trunk/bsr_system.h @@ -17,7 +17,11 @@ enum pwr_state_ enum poweron_reason_ { NONE = 0, - PWSW + RSN_PWSW, + RSN_RTC_ALARM, + RSN_TRIAL, // 体験台 + RSN_RSV4, + RSN_RSV5 }; diff --git a/trunk/config.h b/trunk/config.h index 32c3014..44a5c96 100644 --- a/trunk/config.h +++ b/trunk/config.h @@ -2,19 +2,30 @@ #define __config__ +#define MCU_VER_MAJOR 0x02 +#define MCU_VER_MINOR 0x03 + + // デバッグ向けスイッチ -//#define _debug_led_ -//#define _ALLOW_NOBATT_ -//#define _DEBUG_BT_FUEL_ -//#define _DEBUG_BT_TEMP_ -//#define _DBG_PEDO_AUTO_ENABLE_ -//#define _DBG_LED_PRINT_ -//#define _DBG_FORCE_FULLCOLOR_ -//#define _PMIC_TEST_ +//#define _debug_led_ // LED print デバッグをしたいとき +//#define _ALLOW_NOBATT_ // 実機電池なし(=アダプタのみ)での起動を許可 +//#define _DBG_PEDO_AUTO_ENABLE_ // 電源投入の瞬間から歩数計on +//#define _DBG_LED_PRINT_ // LED print デバッグをしたいとき(自己アップデート用) //#define _ENABLE_WDT_TEST_ //#define _FORCE_TAIKENDAI_ //#define _FORCE_TAIKENDAI_NBD_ +//#define _DBG_CHK_OFF_LEAK_ // OFF時リーク電流のチェック(デバッガで確認) +#define _DBG_NOP_ // ブレークを貼るためにNOP()を有効にしたいとき + +#define _I2C_ERR_ABORT_ + + +#ifdef _DBG_NOP_ +# define dbg_nop() NOP() +#else +# define dbg_nop() ; +#endif // 特殊仕様ファーム @@ -26,9 +37,6 @@ // デバッガアタッチ時にターゲットリセットで電源が切れてしまうのを回避 -#define MCU_VER_MAJOR 0x01 -#define MCU_VER_MINOR 0x37 - // ↑改訂の時は↓気をつけないと体験台の生産できないからね! #ifdef _TAIKENDAI_SEISAN_SPECIAL_ #define MCU_VER_MINOR 0x80 diff --git a/trunk/fsl_user.h b/trunk/fsl_user.h index 823eb8d..1018689 100644 --- a/trunk/fsl_user.h +++ b/trunk/fsl_user.h @@ -55,7 +55,7 @@ /* specify the CPU frequency in [Hz], only 2MHz....20MHz allowed */ -#define FSL_SYSTEM_FREQUENCY 4000000 +#define FSL_SYSTEM_FREQUENCY 8000000 /* define whether low-voltage mode is used or not */ /* #define FSL_LOW_VOLTAGE_MODE */ @@ -94,8 +94,13 @@ /* FLMD0 control bit */ +#ifndef _WIN32 #define FSL_FLMD0_HIGH {BECTL.7 = 1;} #define FSL_FLMD0_LOW {BECTL.7 = 0;} +#else +#define FSL_FLMD0_HIGH {BECTL_7 = 1;} +#define FSL_FLMD0_LOW {BECTL_7 = 0;} +#endif /*----------------------------------------------------------------------------------------------*/ diff --git a/trunk/hal.c b/trunk/hal.c new file mode 100644 index 0000000..75e1385 --- /dev/null +++ b/trunk/hal.c @@ -0,0 +1,171 @@ +#ifndef _WIN32 +#pragma SFR +#endif + +#include "incs_loader.h" + + +#define WIFI_txLatch PIF21 // 電波送信パルス 本来 led.h で定義 + + +// HALでかぶせるの //////////////////////////////////////// +// こんな事するなら正論理にすr...いや何でもない +bit PM_EXTDC_n; +bit BT_IN_CHG_n; +bit SW_POW_n; +bit SW_HOME_n; +bit SW_WIFI_n; +bit SHELL_OPEN; + +/* +#define REG_BIT_HAL0_PM_EXTDC_n ( 1 << 7 ) +#define REG_BIT_HAL0_BT_IN_CHG_n ( 1 << 6 ) +//#define REG_BIT_HAL0_PM_IRQ_n ( 1 << 5 ) // 使わない +#define REG_BIT_HAL0_WL_TX ( 1 << 4 ) +#define REG_BIT_HAL0_SHELL_OPEN ( 1 << 3 ) +#define REG_BIT_HAL0_SW_WIFI_n ( 1 << 2 ) +#define REG_BIT_HAL0_SW_HOME_n ( 1 << 1 ) +#define REG_BIT_HAL0_SW_POW_n ( 1 << 0 ) + +#define REG_BIT_HAL1_DIPSW_1 ( 1 << 3 ) +#define REG_BIT_HAL1_DIPSW_0 ( 1 << 2 ) +#define REG_BIT_HAL1_HW_DET_1 ( 1 << 1 ) +#define REG_BIT_HAL1_HW_DET_0 ( 1 << 0 ) +*/ + + +// 載せ替え +// チャタリング除去ならここでやったり(押し時間カウントは別) +void hal_update() +{ + u8 temp_conf = vreg_ctr[ VREG_C_HAL_OVW_CONT0 ]; + u8 temp_dat = vreg_ctr[ VREG_C_HAL_OVW_DAT0 ]; + + // アダプタ有無 + if( temp_conf & REG_BIT_HAL0_PM_EXTDC_n ) + { + // 三項式はなんだか大きくなりがち + if(( temp_dat & REG_BIT_HAL0_PM_EXTDC_n ) == 0 ) + { + PM_EXTDC_n = 0; + } + else + { + PM_EXTDC_n = 1; + } + } + else + { + PM_EXTDC_n = PM_EXTDC_n_RAW; + } + + // 充電中? + if( temp_conf & REG_BIT_HAL0_BT_IN_CHG_n ) + { + if(( temp_dat & REG_BIT_HAL0_BT_IN_CHG_n ) == 0 ) + { + BT_IN_CHG_n = 0; + } + else + { + BT_IN_CHG_n = 1; + } + } + else + { + BT_IN_CHG_n = BT_IN_CHG_n_RAW; + } + + // 電源釦 + if( temp_conf & REG_BIT_HAL0_SW_POW_n ) + { + if(( temp_dat & REG_BIT_HAL0_SW_POW_n ) == 0 ) + { + SW_POW_n = 0 ; + } + else + { + SW_POW_n = 1; + } + } + else + { + SW_POW_n = SW_POW_n_RAW; + } + + // 実家釦 + if( temp_conf & REG_BIT_HAL0_SW_HOME_n ) + { + if(( temp_dat & REG_BIT_HAL0_SW_HOME_n ) == 0 ) + { + SW_HOME_n = 0; + } + else + { + SW_HOME_n = 1; + } + } + else + { + if( system_status.model == MODEL_TS_BOARD )// 接続先のポートが違うため + { + SW_HOME_n = SW_HOME_n_TSBOARD_RAW; + } + else + { + SW_HOME_n = SW_HOME_n_JIKKI_RAW; + } + } + + // 無線開閉 + if( temp_conf & REG_BIT_HAL0_SW_WIFI_n ) + { + if(( temp_dat & REG_BIT_HAL0_SW_WIFI_n ) == 0 ) + { + SW_WIFI_n = 0; + } + else + { + SW_WIFI_n = 1; + } + } + else + { + SW_WIFI_n = SW_WIFI_n_RAW; + } + + // 蝶番 + if( temp_conf & REG_BIT_HAL0_SHELL_OPEN ) + { + if(( temp_dat & REG_BIT_HAL0_SHELL_OPEN ) == 0 ) + { + SHELL_OPEN = 0; + } + else + { + SHELL_OPEN = 1; + } + } + else + { + SHELL_OPEN = SHELL_OPEN_RAW; + } + + // 無線電波発射 + if( temp_conf & REG_BIT_HAL0_WL_TX ) + { + WIFI_txLatch = 1; + } + +} + + + +void hal_reset() +{ + vreg_ctr[ VREG_C_HAL_OVW_CONT0 ] = 0; + vreg_ctr[ VREG_C_HAL_OVW_CONT1 ] = 0; + vreg_ctr[ VREG_C_HAL_OVW_TEMPERATURE ] = 0xFF; + vreg_ctr[ VREG_C_HAL_OVW_BT_FUEL ] = 0xFF; + vreg_ctr[ VREG_C_HAL_OVW_BT_VOLTAGE ] = 0xFF; +} diff --git a/trunk/hal.h b/trunk/hal.h new file mode 100644 index 0000000..f08592a --- /dev/null +++ b/trunk/hal.h @@ -0,0 +1,17 @@ +#ifndef _hal_h_ +#define _hal_h_ + + +extern bit PM_EXTDC_n; +extern bit BT_IN_CHG_n; +extern bit SW_POW_n; +extern bit SW_HOME_n; +extern bit SW_WIFI_n; +extern bit SHELL_OPEN; + + +// ======================================================== +void hal_update(); +void hal_reset(); + +#endif diff --git a/trunk/hoge.bin b/trunk/hoge.bin index b52e71c..a252c7f 100644 Binary files a/trunk/hoge.bin and b/trunk/hoge.bin differ diff --git a/trunk/i2c_ctr.c b/trunk/i2c_ctr.c index 4d56ebf..8899cda 100644 --- a/trunk/i2c_ctr.c +++ b/trunk/i2c_ctr.c @@ -6,10 +6,9 @@ #include "config.h" -#ifdef _MCU_KE3_ -#pragma interrupt INTIICA int_iic_ctr // CTR側 -#else // TSはマザボでテレコ、WMは回路図がテレコで結局一致… + +#ifndef _WIN32 #pragma interrupt INTIICA1 int_iic_ctr RB1 #endif @@ -49,18 +48,12 @@ #define SMC SMC1 #define DFC DFC1 - #endif + + // ============================================== -extern bit irq_readed; // いずれかのIRQレジスタが読まれた - -u8 iic_burst_state; - - -/* ======================================================== - ======================================================== */ -enum IIC_STATE +enum en_IIC_STATE { IIC_IDLE = 0, IIC_RCV_REG_ADRS, @@ -70,24 +63,37 @@ enum IIC_STATE }; -// 1バイト送受の度に割り込みが発生するバージョン + +// ============================================== +extern bit irq_readed; // いずれかのIRQレジスタが読まれた + +u8 iic_burst_state; +static enum en_IIC_STATE state = IIC_IDLE; + +#define bit_iics_spd (i2c_stat & (1<<0)) +#define bit_iics_std (i2c_stat & (1<<1)) +#define bit_iics_ackd (i2c_stat & (1<<2)) +#define bit_iics_trc (i2c_stat & (1<<3)) +#define bit_iics_coi (i2c_stat & (1<<4)) + +// ============================================== __interrupt void int_iic_ctr( ) { - static u8 state = IIC_IDLE; static u8 reg_adrs; - static u8 reg_adrs_internal; static u8 tx_buf; u8 rx_buf; - static u8 adrs_access_from; + static u8 adrs_access_from; // バーストアクセスの時に使う - EI(); + u8 i2c_stat = IICS1; // volatileのため // 読み出し終了 - if( !ACKD ) // 割り込み要因はNAK(データ送信の最後) + if( !bit_iics_ackd // 割り込み要因はNAK(データ送信の最後) + || bit_iics_spd ) // ストップコンディション(!ACKD に来たときは割り込み来ない (SPIE = 0)) { - state = IIC_IDLE; - SPIE = 0; - LREL = 1; + /* + I2Cの反応が遅くてこのフラグを処理する前にSTDがきてしまうことがある + けど、問題なく動作するつもり + */ // レジスタリードで、割り込みピンをネゲート // まだ読まれてない割り込みがあれば、再度アサート @@ -104,58 +110,68 @@ __interrupt void int_iic_ctr( ) IRQ0_ast; } } + + // I2C終了時に何かする物 // hosu_read_end( ); // 歩数計読み出し終了 rtc_unlock( ); - iic_burst_state = 0; - return; - } - if( SPD ) // 割り込み要因はストップコンディション - // 通信の最後。↑の !ACKD に来たときは割り込み来ない (SPIE = 0 のため ) - { state = IIC_IDLE; SPIE = 0; - // I2C終了時に何かする物 // - rtc_unlock( ); + LREL = 1; + EI(); return; } - if( STD ) // 割り込み要因:スタートコンディション + if( bit_iics_std ) // 割り込み要因:スタートコンディション { - if( ( state == IIC_TX ) || ( state == IIC_RX ) - || ( state == IIC_RCV_REG_ADRS ) - ) + if( !( state == IIC_IDLE || state == IIC_TX_OR_RX )) { + // sp/nack 取り損ねた + dbg_nop(); // こないはず... +/* + // パケットの先頭のstと見なす。 + // 普通に続行 state = IIC_IDLE; - // no break // - } - } +/*/ + // リトライしてもらう + state = IIC_IDLE; + SPIE = 0; + LREL = 1; + EI(); +//*/ + } + // 通常 + } + + EI(); switch ( state ) { case ( IIC_IDLE ): // 自局呼び出しに応答。 // 初期化など + iic_burst_state = 0; SPIE = 1; - state = IIC_RCV_REG_ADRS; WREL = 1; // ウェイト解除 - break; + state = IIC_RCV_REG_ADRS; + return; case ( IIC_RCV_REG_ADRS ): // 2バイト目(レジスタアドレス)受信後に来る // レジスタアドレス受信 reg_adrs = IICA; + + WREL = 1; adrs_access_from = reg_adrs; tx_buf = vreg_ctr_read( reg_adrs ); // データの準備をしておく state = IIC_TX_OR_RX; - WREL = 1; - break; + return; case ( IIC_TX_OR_RX ): // ↑の次に来る割り込み。STなら送信準備、データが来たら書き込まれ -// if( TRC ){ // 送信方向フラグ で区別するのは、割り込み遅延時に不具合が起こりえる - if( STD ) + // if( TRC ) // 送信方向フラグ で区別するのは、割り込み遅延時に不具合が起こりえる + if( bit_iics_std ) { // スタートコンディション検出フラグ // リードされる - if( COI ) + if( bit_iics_coi ) { // アドレス一致フラグ state = IIC_TX; // no break, no return // @@ -163,9 +179,9 @@ __interrupt void int_iic_ctr( ) else { // リスタートで違うデバイスが呼ばれた! - state = IIC_IDLE; // 終了処理 SPIE = 0; LREL = 1; // ウェイト解除? + state = IIC_IDLE; // 終了処理 return; } } @@ -174,6 +190,7 @@ __interrupt void int_iic_ctr( ) state = IIC_RX; // データ1バイト受信の割り込みだった // no break, no return // } + /* FALLTHROUGH */ default: // バースト R/W でここが何回も呼ばれることになる if( state == IIC_TX ) @@ -184,11 +201,19 @@ __interrupt void int_iic_ctr( ) else { // 受信 rx_buf = IICA; - vreg_ctr_write( reg_adrs, rx_buf ); - WREL = 1; - } - // レジスタアドレスのインクリメント +#ifdef _I2C_ERR_ABORT_ + if( reg_adrs >= 0x80 || reg_adrs <= 1 ) + { + LREL = 1; // なんかデータ化けたので通信終了 nakが返るのがなぁ… + return; + } +#endif + vreg_ctr_write( reg_adrs, rx_buf ); + WREL = 1; + } + + // レジスタアドレスのインクリメント /// アクセスポインタを進めない特殊なレジスタ switch( adrs_access_from ) { @@ -205,8 +230,7 @@ __interrupt void int_iic_ctr( ) } break; default: - iic_burst_state = 0; // 保険 - reg_adrs += 1; + reg_adrs ++; } if( state == IIC_TX ) @@ -230,14 +254,10 @@ void IIC_ctr_Init( void ) IICAMK = 1; /* INTIICA disable */ IICAIF = 0; /* clear INTIICA interrupt flag */ - IICAPR0 = 1; /* set INTIICA high priority */ - IICAPR1 = 0; /* set INTIICA high priority */ +// IICAPR0 = 1; /* set INTIICA high priority */ +// IICAPR1 = 0; /* set INTIICA high priority */ スタック不足 -#ifdef _MODEL_TEG2_ - P6 &= ~0x3; -#else P20 &= ~0x3; -#endif SVA = IIC_C_SLAVEADDRESS; IICF = 0x01; @@ -247,7 +267,7 @@ void IIC_ctr_Init( void ) SPIE = 0; // ストップコンディションでの割り込みを禁止 WTIM = 1; // 自動でACKを返した後clkをLに固定する - ACKE = 1; // ダメCPUは無視して次の通信をはじめるかもしれないんで早くclkを開放しないといけない + ACKE = 1; IICWH = 5; IICWL = 10; // L期間の長さ @@ -259,11 +279,9 @@ void IIC_ctr_Init( void ) IICE = 1; -#ifdef _MODEL_TEG2_ - PM6 &= ~0x3; /* set clock pin for IICA */ -#else PM20 &= ~0x3; /* set clock pin for IICA */ -#endif + + state = IIC_IDLE; } diff --git a/trunk/i2c_mcu.c b/trunk/i2c_mcu.c index 7ee4929..1c3e44c 100644 --- a/trunk/i2c_mcu.c +++ b/trunk/i2c_mcu.c @@ -3,17 +3,18 @@ de JHL 藤田@開技 '09 Feb - ======================================================== */ +#ifndef _WIN32 #pragma sfr #pragma di #pragma ei #pragma nop #pragma inline // memcpy()をインライン展開する(の方が小さい!) +#endif #include "incs_loader.h" #include "i2c_mcu.h" - // ======================================================== // レジスタのビット名 // プリフィックスbだが、一部のビット名がレジスタ名にかぶるため... @@ -42,14 +43,13 @@ #define TSF0 ( 1 << 6 ) // SOn -#define TAUS_MASK 0b0000101100001011; +#define TAUS_MASK 0x0B0B; // DMCn #define DRS ( 1 << 6 ) - // ======================================================== static void iic_mcu_send_st( ); static void iic_mcu_send_re_st( ); @@ -62,12 +62,12 @@ static err iic_mcu_call_slave( u8 slave ); // ======================================================== bit iic_mcu_wo_dma; volatile bit iic_mcu_busy; -volatile bit iic_mcu_initialized; +static volatile bit iic_mcu_initialized; -u8 iic_send_work[4]; -u8 *p_iic_send_wo_dma_dat; -u8 iic_send_wo_dma_len; +static u8 iic_send_work[4]; +static u8 *p_iic_send_wo_dma_dat; +static u8 iic_send_wo_dma_len; u8 iic_mcu_result; // 一文字リードの時はデータを返す。 // ステータスが必要ならこっちを呼んで @@ -79,7 +79,7 @@ extern bit i2c_mcu_time_out_error; // ======================================================== void nop8() { - // 実は nop11 位なのだが + // ここに来る call に3clk, return に 6clk } @@ -419,8 +419,8 @@ __interrupt void int_iic10( ) if( iic_send_wo_dma_len != 0 ) { SIO10 = *p_iic_send_wo_dma_dat; - p_iic_send_wo_dma_dat++; - iic_send_wo_dma_len--; + p_iic_send_wo_dma_dat ++; + iic_send_wo_dma_len --; return; } @@ -562,7 +562,7 @@ void iic_mcu_start( ) DEN1 = 0; I2C_PU_on(); - wait_ms( 20 ); // 立ち上がるのに50us位かかる + wait_ms( 1 ); // 立ち上がるのに50us位かかる SAU0EN = 1; nop8(); @@ -647,7 +647,7 @@ err iic_mcu_write_a_byte_codec( u8 adrs, u8 dat ) iic_mcu_send_a_byte( 0x20 ); iic_mcu_send_a_byte( count ); - count++; + count ++; iic_mcu_send_sp( ); iic_mcu_busy = false; diff --git a/trunk/i2c_twl.c b/trunk/i2c_twl.c index 1a2fa17..48c1447 100644 --- a/trunk/i2c_twl.c +++ b/trunk/i2c_twl.c @@ -1,13 +1,18 @@ +#ifndef _WIN32 + #pragma sfr /* 特殊機能レジスタ使用 */ +#endif /*============================================================================*/ #include "config.h" -#ifdef _MCU_KE3_ -#else + +#ifndef _WIN32 + #pragma interrupt INTIICA0 int_iic_twl RB2 + #endif #include "incs.h" @@ -47,7 +52,7 @@ extern u8 vreg_twl[]; #define SMC SMC0 #define TRC TRC0 -#endif +#endif // _MCU_BSR_ #ifndef _MCU_BSR_ @@ -58,7 +63,7 @@ void IIC_twl_Stop( void ) void IIC_twl_Init( void ) { } -#else +#else // _MCU_BSR_ @@ -77,7 +82,7 @@ enum IIC_TWL_STATE{ #define wait_next { \ tot = 0; \ while( IICAIF != 1 ){ \ - tot++; \ + tot ++; \ if( tot == 0 ){ \ LREL = 1; \ return; \ @@ -89,9 +94,6 @@ enum IIC_TWL_STATE{ __interrupt void int_iic_twl( ) { u8 vreg_adrs; - u8 pre_dat; - u8 rcvd; - u16 tot; u8 state; // @ @@ -103,9 +105,12 @@ __interrupt void int_iic_twl( ) { u8 my_iics; - wait_next; // 1バイト受信完了を待つ + { + u16 tot; + wait_next; // 1バイト受信完了を待つ + } - my_iics = IICS; + my_iics = IICS; IICAIF = 0; if( my_iics & 0x02 ) // ( STD && !SPD ) @@ -129,6 +134,8 @@ __interrupt void int_iic_twl( ) } else if( ( my_iics & 0x03 ) == 0 ) // ( !STD && !SPD ) { + u8 rcvd; + // 何らか受信 rcvd = IICA; WREL = 1; diff --git a/trunk/incs.h b/trunk/incs.h index 4ac3b15..cd33a79 100644 --- a/trunk/incs.h +++ b/trunk/incs.h @@ -1,19 +1,20 @@ +#ifndef _WIN32 #pragma SFR #pragma di #pragma ei #pragma nop #pragma stop #pragma halt +#endif #ifndef _WIN32 #pragma section @@CODE ROM_CODE //#pragma section @@CNST ROM_CNST #endif -# ifdef _WIN32 +#ifdef _WIN32 // VCの赤線をどうにかする #include "sim/simOnWin.h" - # endif @@ -28,6 +29,8 @@ #include "jhl_defs.h" #include "user_define.h" +#include "hal.h" + #include "bsr_system.h" #include "renge\renge.h" #include "loader.h" diff --git a/trunk/incs_loader.h b/trunk/incs_loader.h index 535be09..4bb13b5 100644 --- a/trunk/incs_loader.h +++ b/trunk/incs_loader.h @@ -1,3 +1,4 @@ +#ifndef _WIN32 #pragma SFR #pragma di #pragma ei @@ -13,12 +14,20 @@ //#pragma section @@CNST FSL_CNST // セットしてくれない #pragma section @@CNSTL LDR_CNSL +#endif + +# ifdef _WIN32 +// VCの赤線をどうにかする +#include "sim/simOnWin.h" +# endif //========================================================= #include "jhl_defs.h" #include "user_define.h" +#include "hal.h" + #include "bsr_system.h" #include "renge\renge.h" diff --git a/trunk/ini_VECT.c b/trunk/ini_VECT.c index 38bdea9..10ea9ea 100644 --- a/trunk/ini_VECT.c +++ b/trunk/ini_VECT.c @@ -1,8 +1,12 @@ +#ifndef _WIN32 + #pragma nop +#endif #include "config.h" +#ifndef _WIN32 //#pragma interrupt INTWDTI fn_intwdti // 未使用 //#pragma interrupt INTLVI fn_intlvi // 未使用 @@ -48,19 +52,10 @@ /* -それぞれの .c へ -#ifdef _MCU_KE3_ -#pragma interrupt INTIICA int_iic_ctr RB1 // CTR側 -#else // TSはマザボでテレコ、WMは回路図がテレコで結局一致… #pragma interrupt INTIICA1 int_iic_ctr RB1 -#endif - -#ifdef _MCU_KE3_ -#else #pragma interrupt INTIICA0 int_iic_twl RB2 -#endif */ //#pragma interrupt INTTM00 fn_inttm00 @@ -79,6 +74,7 @@ //#pragma interrupt INTTM06 fn_inttm06 //#pragma interrupt INTTM07 fn_inttm07 + //#define _irq_debug_ /****************************************************/ /* 未使用時のダミー関数定義 */ @@ -379,4 +375,9 @@ __interrupt void intp5( ) } +#else + +#include "sim/sim_interrupt_decrare.c" + +#endif diff --git a/trunk/led.c b/trunk/led.c index aa78b7d..9dc9cc0 100644 --- a/trunk/led.c +++ b/trunk/led.c @@ -1,8 +1,11 @@ /* ======================================================== LED.c ======================================================== */ +#ifndef _WIN32 + #pragma sfr +#endif #include "incs.h" #include "led.h" @@ -54,11 +57,11 @@ u8 fade_to( u8 now, u8 goal ) { if( now > goal ) { - now -= 1; + now --; } else { - now += 1; + now ++; } } return( now ); @@ -119,14 +122,14 @@ void LED_init( ) 1 << BIT_CKS0 | 0 << BIT_CCS0 | 0 << BIT_MASTER0 | 4 << BIT_STS0 | 0 << BIT_CIS0 | 4 << BIT_MD123 | 1 << BIT_MD0; ISC = 0; - TOM0 = 0b0000000011111110; // 出力モード。4はPWM出力しないが1にしないとTO5以降にクロックが届かない + TOM0 = 0x00FE; // 出力モード。4はPWM出力しないが1にしないとTO5以降にクロックが届かない - TOL0 = 0b0000000000000000; // 出力を反転させるかフラグ + TOL0 = 0x0000; // 出力を反転させるかフラグ - TO0 = 0; // タイマー動作中で、タイマー出力にしてないときのピンのラッチ。タイマー出力を使わないなら0 - TOE0 = 0b0000000011101110; // TOxをタイマーモジュールが制御? + TO0 = 0x0000; // タイマー動作中で、タイマー出力にしてないときのピンのラッチ。タイマー出力を使わないなら0 + TOE0 = 0x00EE; // TOxをタイマーモジュールが制御? - TS0 = 0b0000000011101111; // 動作開始 + TS0 = 0x00EF; // 動作開始 TDR00 = LED_BRIGHT_MAX - 1; // 周期 10bit @@ -151,8 +154,8 @@ void LED_init( ) void LED_stop( ) { - TT0 = 0b0000000011101111; // 一斉停止(しないとだめ) - TOE0 = 0b0000000000000000; // TOxをタイマーモジュールが制御?(GPIOになる) + TT0 = 0x00EF; // 一斉停止(しないとだめ) + TOE0 = 0x0000; // TOxをタイマーモジュールが制御?(GPIOになる) TAU0EN = 0; LED_pow_red = 0; LED_CAM = 0; @@ -201,11 +204,11 @@ void tsk_led_wifi( ) default: LED_duty_WiFi = vreg_ctr[VREG_C_LED_BRIGHT]; } - state_wifi_tx++; + state_wifi_tx ++; if( state_wifi_tx == 32 ) // ←点滅後、点灯している期間の長さ { state_wifi_tx = 0; - flag_wifi_TX -= 1; + flag_wifi_TX --; } task_interval = 25; return; @@ -228,11 +231,11 @@ void tsk_led_wifi( ) } else if( LED_duty_WiFi < vreg_ctr[VREG_C_LED_BRIGHT] ) { - LED_duty_WiFi += 1; + LED_duty_WiFi ++; } else { - LED_duty_WiFi -= 1; + LED_duty_WiFi --; } } task_interval = 3; @@ -243,20 +246,19 @@ void tsk_led_wifi( ) - bit info_led_pattern_updated; /* ======================================================== お知らせLED ======================================================== */ // グラデーション計算など -void calc_info_led_fade_out( st_LED_dim_status* tgt_led ) +static void calc_info_led_fade_out( st_LED_dim_status* tgt_led ) { tgt_led -> to = 0; tgt_led -> delta = ( 0 - tgt_led -> now ) / 64; } -void calc_info_led_next_frame( st_LED_dim_status* tgt_led, u8 color ) +static void calc_info_led_next_frame( st_LED_dim_status* tgt_led, u8 color ) { tgt_led -> to = color * 128; // グラデーションのデルタを計算 @@ -317,7 +319,7 @@ void tsk_led_notify( ) vreg_ctr[ VREG_C_LED_NOTIFY_FLAG ] |= REG_BIT_IN_LOOP; if( info_LED.info_LED.last_loop != 255 ) // 255:無限ループ { - loops++; + loops ++; if( loops > info_LED.info_LED.last_loop ) { frame = 0; @@ -337,7 +339,7 @@ void tsk_led_notify( ) calc_info_led_next_frame( &LED_dim_status_info_B, info_LED.info_LED.blu[frame] ); } - time_to_next_frame -= 1; + time_to_next_frame --; } } diff --git a/trunk/led.h b/trunk/led.h index d745ba4..e92d209 100644 --- a/trunk/led.h +++ b/trunk/led.h @@ -17,9 +17,13 @@ #define LED_duty_notify_blu TDR02 // これらはduty変えられません +#ifndef _WIN32 #define LED_pow_red P4.2 #define LED_CAM P7.5 - +#else +#define LED_pow_red mcuRegP[ _P4_2 ] +#define LED_CAM mcuRegP[ _P7_5 ] +#endif #define NOTIFY_LED_TERM 32 @@ -27,11 +31,7 @@ #define LED_BRIGHT_MAX 0x00FF // ==================================== -#ifdef _MCU_BSR_ // 電波送信パルス -#define WIFI_txLatch PIF21 -#else -#define WIFI_txLatch PIF7 -#endif +#define WIFI_txLatch PIF21 // 電波送信パルス diff --git a/trunk/led_cam.c b/trunk/led_cam.c index a49477e..6e0d28a 100644 --- a/trunk/led_cam.c +++ b/trunk/led_cam.c @@ -3,8 +3,12 @@ \n BLINK,*_PLUSE の時は、1周期分は必ずその状態になります。 \n その間に OFF→BLINK などされると、OFFが無視されます。 *********************************************************/ +#ifndef _WIN32 + #pragma sfr +#endif + #include "incs.h" #include "led.h" @@ -31,11 +35,12 @@ void tsk_led_cam( ) { if( task_interval != 0 ) { - task_interval -= 1; + task_interval --; return; } } - cam_led_update = false; // TWL のブリンク設定(一発だけ点灯)のため + + cam_led_update = false; // TWL のブリンク設定(一発だけ点灯)のため EI(); if( system_status.pwr_state == SLEEP ) // sleep中、強制消灯 @@ -128,7 +133,7 @@ void cam_led_twl() LED_CAM = 0; state_led_cam = 0; } - task_interval = 600 / SYS_INTERVAL_TICK + 250; + task_interval = (u8)( 600 / SYS_INTERVAL_TICK ) + 250; break; case( TWL_CAMLED_ON ): diff --git a/trunk/led_pow.c b/trunk/led_pow.c index 2d0bbe9..5906ee8 100644 --- a/trunk/led_pow.c +++ b/trunk/led_pow.c @@ -20,8 +20,12 @@ enum LED_ILUM_MODE{ LED_POW_ILM_CEOFF }; ======================================================== */ +#ifndef _WIN32 + #pragma sfr +#endif + #include "incs.h" #include "led.h" @@ -60,9 +64,9 @@ extern u8 fade_to2( st_LED_dim_status* status ); // ======================================================== // 電源LEDのスリープパターンのステータス類 -u8 time_to_next_frame_sleep = LED_SLEEP_FRAME_LEN; -u8 frame_sleep; -st_LED_dim_status LED_dim_status_sleep; +static u8 time_to_next_frame_sleep = LED_SLEEP_FRAME_LEN; +static u8 frame_sleep; +static st_LED_dim_status LED_dim_status_sleep; extern bit ledInitialized; extern bit BT_IN_CHG_delayed_n; @@ -126,7 +130,7 @@ void tsk_led_pow( ) { LED_duty_notify_blu = 0; LED_duty_notify_grn = 0; - LED_duty_notify_red = LED_pow_red ? 255: 0; + LED_duty_notify_red = ( LED_pow_red == 0 )? 0 : 255; } } @@ -175,12 +179,12 @@ static void led_pow_sleep( ) led_fade_to2( LED_duty_pow_blu, &LED_dim_status_sleep ); // 次のフレームに進める? - time_to_next_frame_sleep -= 1; + time_to_next_frame_sleep --; if( time_to_next_frame_sleep == 0 ) { time_to_next_frame_sleep = LED_SLEEP_FRAME_LEN; - frame_sleep += 1; + frame_sleep ++; if( frame_sleep >= LED_SLEEP_FRAME_NUM -1 ) { frame_sleep = 0; @@ -240,7 +244,7 @@ static void led_pow_bt_empty() led_fade_to( LED_duty_pow_blu, 0 ); // 赤の点滅パターンも指定できる - delay += 1; + delay ++; if( delay < 64 ) // フレームの保持時間稼ぎ { return; @@ -255,7 +259,7 @@ static void led_pow_bt_empty() { LED_pow_red = 0; } - red_blink_poi += 1; + red_blink_poi ++; if( red_blink_poi >= 32 ) { red_blink_poi = 0; diff --git a/trunk/loader.c b/trunk/loader.c index f7361a6..85c7d4e 100644 --- a/trunk/loader.c +++ b/trunk/loader.c @@ -7,6 +7,8 @@ ホストの通信と、自己書き換え、ファームのチェックを行う。 ======================================================== */ +#ifndef _WIN32 + #pragma SFR #pragma di #pragma ei @@ -15,7 +17,7 @@ #pragma halt #pragma opc - +#endif #include "incs_loader.h" #include @@ -57,15 +59,13 @@ static fsl_u08 fsl_MK2H_bak_u08; /* } // ======================================================== -void FSL_Open( void ); -void FSL_Close( void ); -void hdwinit( void ); -static void hdwinit2( ); -static void chk_platform_type(); -static void chk_firm_broke(); +void hdwinit(); +static void hdwinit2(); +static void chk_platform_type(); +static void chk_firm_broke(); -extern void main_loop( ); +extern void main_loop(); @@ -107,13 +107,15 @@ void main( ) // 通常の電源投入 // 電池接続時、ちょっと待ってみる(チャタリング対策) u16 pwup_delay0; - for( pwup_delay0 = 0xFFFF; pwup_delay0 != 0; pwup_delay0-- ){;}; + for( pwup_delay0 = 0xFFFF; pwup_delay0 != 0; pwup_delay0 -- ){;}; } hdwinit2( ); +#ifndef _WIN32 // ファームの整合性チェック // chk_firm_broke(); +#endif // 試遊台判定 chk_platform_type(); @@ -140,7 +142,7 @@ void chk_firm_broke() if( *( u8 * )( MGC_FOOT +2 ) != ':' ) // 消去済のまま { - comp += 1; + comp ++; } if( comp != 0 ) @@ -168,6 +170,14 @@ void chk_platform_type() { // ●CTRファミリ // system_status.family = (enum _family)( DEV_DET >> 1 ); /// あぁ... + if( system_status.family == FAMILY_SPFL ) + { + pm_reg_bit_vddlcd = PM_REG_BIT_VDDLCD_AMO; + } + else + { + pm_reg_bit_vddlcd = PM_REG_BIT_VDDLCD_CGS; + } // ●CTR&その開発機材 // // 一応初期化 @@ -206,15 +216,15 @@ void hdwinit( void ) { // スタートアップルーチンが勝手に呼びます DI( ); /* マスタ割り込み禁止 */ - CMC = 0b00010000; /* X1発振せず(入力ポート)、XT1使用、超低電力発振は不安定に付き通常で */ - CSC = 0b10000000; /* X1発振なし、XT1発振あり、高速内蔵発振動作 */ + CMC = bits8(0,0,0,1, 0,0,0,0); /* X1発振せず(入力ポート)、XT1使用、超低電力発振は不安定に付き通常で */ + CSC = bits8(1,0,0,0, 0,0,0,0); /* X1発振なし、XT1発振あり、高速内蔵発振動作 */ OSMC = 0x01; /* 隠しレジスタ */ - CKC = 0b00001000; /* CPU/周辺クロック=fMAIN、fMAIN=fMX、fCLK=fMX */ + CKC = bits8(0,0,0,0, 1,0,0,0); /* CPU/周辺クロック=fMAIN、fMAIN=fMX、fCLK=fMX */ /*--- 低電圧検出回路の設定 ---*/ /* リセット解除時のデフォルトは、オプション・バイトにて指定される */ - LVIS = 0b00000000; /* VLVI = 4.22±0.1V */ - LVIM = 0b00000000; /* LVI動作禁止 */ + LVIS = 0x00; /* VLVI = 4.22±0.1V */ +// LVIM = 0x00; /* LVI動作禁止 */ /* 電源電圧(VDD)<検出電圧(VLVI)時に割込発生 */ /* 電源電圧(VDD)≧検出電圧= PEDOMETER_LOG_SIZE ) { pedolog_overflow = true; -// NOP(); // ここに来るようだとバグ +// dbg_nop(); // ここに来るようだとバグ break; } else @@ -314,7 +337,7 @@ static void fill_hosu_hist_hours( u16 hours ) { pool.vreg_c_ext.pedo_log[ p_record ] = 0; } - hours -= 1; + hours --; } return; @@ -331,15 +354,18 @@ void clear_hosu_hist() u8 hours = PEDOMETER_LOG_SIZE; do { - hours -= 1; + hours --; pool.vreg_c_ext.pedo_log[ hours ] = 0xFFFF; } while( hours != 0 ); - vreg_ctr[ VREG_C_ACC_HOSU_L ] = 0; + + DI(); + vreg_ctr[ VREG_C_ACC_HOSU_L ] = 0; vreg_ctr[ VREG_C_ACC_HOSU_M ] = 0; vreg_ctr[ VREG_C_ACC_HOSU_H ] = 0; p_record = 0; pedolog_overflow = false; + EI(); } @@ -379,13 +405,13 @@ u8 hosu_read( ) if( iic_burst_state <= 5 ) { rv = *( (u8*)&cal_buff + iic_burst_state ); // あうあう - iic_burst_state += 1; + iic_burst_state ++; return( rv ); } else { u16 temp; - // 16ビットで記録してあるのでばらして送る todo: もっと楽する方法があるんじゃ + // 16ビットで記録してあるのでばらして送る /// もっと楽する方法があるんじゃ temp = pool.vreg_c_ext.pedo_log[ p_record_buffer ]; if( !pedolog_read_msb ) { @@ -400,7 +426,7 @@ u8 hosu_read( ) } else { - p_record_buffer -= 1; + p_record_buffer --; } } pedolog_read_msb ^= 1; @@ -446,7 +472,7 @@ static u16 get_long_hour() if( is_leapyear(year) && ( 3 <= month )) { // 閏年で、閏日より後 - long_hour += 1; + long_hour ++; } long_hour += day - 1; long_hour *= 24; // 日数→時間 @@ -472,6 +498,7 @@ static u16 get_long_hour() /* ========================================================  軽量平方根。  必要十分な精度で打ち切る + pc上でシミュレーションして大丈夫そう ======================================================== */ static unsigned long my_sqrt(unsigned long x) { @@ -526,7 +553,12 @@ static u16 calc_hours_spend( u8 year ) else if( cal_log_latest_year == ( year -1 ) ) { // 年をまたいでいるとき - return( ( ( 365 + ( is_firstyear(year) ? 1: 0 )) * 24 ) - last_hour_fny + now_longhour ); + u16 temp = 365 * 24 - last_hour_fny + now_longhour; + if( is_firstyear(year) ) + { + temp += 24; + } + return( temp ); } else if( cal_log_latest_year < year ) { diff --git a/trunk/pedo_lpf_coeff.c b/trunk/pedo_lpf_coeff.c new file mode 100644 index 0000000..2e16755 --- /dev/null +++ b/trunk/pedo_lpf_coeff.c @@ -0,0 +1,83 @@ + +#include "incs.h" + +// ========================================================= +#define TAP 64 +#define FIL_COEFF_QUANT 10 +const s8 lpf_coeff[]={ +/* +Window Function Algorithm LPF +Sampling Frequency = 100.0 +cutoff1 = 6.0000000 +Tap Count =64 +Kaiser Constant = 7.000000 +Quantized by 11 [bits] + */ +/* 0,// [0] + 0, + 0, + 0, + 0, + 0, + 0, + 0, +*/ + 1,// 8 + 2, + 2, + 3, + 3, + 2, + 0, + -2, + -5,// 16 + -9, + -13, + -16, + -16, + -13, + -6, + 4, + 18,// 24 + 37, + 56, + 77, + 95, + 110, + 119, + 122, + 119,// 32 + 110, + 95, + 77, + 56, + 37, + 18, + 4, + -6,// 40 + -13, + -16, + -16, + -13, + -9, + -5, + -2, + 0,// 48 + 2, + 3, + 3, + 2, + 2, + 1, +/* + 0, + 0,// 56 + 0, + 0, + 0, + 0, + 0, + 0, + 0 +*/ +}; diff --git a/trunk/pedometer.h b/trunk/pedometer.h index 56252a0..8760308 100644 --- a/trunk/pedometer.h +++ b/trunk/pedometer.h @@ -1,8 +1,14 @@ #ifndef _pedo_ #define _pedo_ +#ifdef WIN32 +typedef unsigned char bit; +typedef unsigned char u8; +typedef unsigned short u16; +#endif + // ========================================================= extern bit pedolog_read_msb; @@ -14,6 +20,7 @@ extern bit pedolog_read_msb; #define hosu_read_end() pedolog_read_msb = 0 u8 hosu_read( ); +void hosu_increment_if_necessary(); void fill_hosu_hist_hours( u16 ); void clear_hosu_hist(); void pedometer(); diff --git a/trunk/pm.c b/trunk/pm.c index 8fb1bec..8def2ab 100644 --- a/trunk/pm.c +++ b/trunk/pm.c @@ -4,8 +4,12 @@ nintendo '08 Dec ======================================================== */ +#ifndef _WIN32 + #pragma nop +#endif + #include "incs.h" #include "adc.h" #include "led.h" @@ -20,27 +24,27 @@ // ======================================================== -u8 raw_adc_temperature; -BT_VENDER battery_manufacturer = BT_VENDER_NOT_CHECKED; -static u8 ntr_pm_reg_shadow; // NTR PMIC レジスタミラー -bit bt_authorized; // バッテリパラメータ送信済。充電開始許可 -u8 chg_led_override; // アダプタ差したとき、充電するしないに関わらずしばらく点灯させる +u8 raw_adc_temperature; +BT_VENDER battery_manufacturer = BT_VENDER_NOT_CHECKED; +static u8 ntr_pm_reg_shadow; // NTR PMIC レジスタミラー +bit bt_authorized; // バッテリパラメータ送信済。充電開始許可 +u8 chg_led_override; // アダプタ差したとき、充電するしないに関わらずしばらく点灯させる -static u16 bt_volt16; +static u16 bt_volt16; -static bit ntr_pm_bt_low_old; -bit BT_CHG_STAT_Change; -bit BT_IN_CHG_delayed_n; +static bit ntr_pm_bt_low_old; -bit temp_zone_charge_disable; // 温度で充電停止する時にヒステリシスを付けるため +bit BT_IN_CHG_delayed_n; +bit temp_zone_charge_disable; // 温度で充電停止する時にヒステリシスを付けるため -u8 pmic_version; -u8 mgic_version[2]; +u8 pmic_version; +u8 mgic_version[2]; -static bt_param_* p_bt_param; +u8 pm_reg_bit_vddlcd; + +static bt_param_* p_bt_param; +extern const bt_param_ bt_param[]; -static err send_cmd_mgic_2B( u8 reg, u16 dat ); -static err read_mgic_2B( u8 reg, u8* dat ); // ======================================================== @@ -53,6 +57,13 @@ static void bt_param_select(); static void bt_batt_update_twl(); static void bt_batt_update_ntr(); +// ラッパー +static err send_cmd_mgic_2B( u8 reg, u16 dat ); +static err read_mgic_2B( u8 reg, u8* dat ); +static err read_BT_SOC( u8* dest ); +static err read_BT_voltage( u8* dest ); +static u8 conv_ctr_bt_to_twl_bt(); + // ======================================================== @@ -66,6 +77,7 @@ const u8 BT_MANUF_BORDER[] = { }; + /* ======================================================== 電池の管理 @@ -87,18 +99,15 @@ const u8 BT_MANUF_BORDER[] = { void tsk_batt( ) { - static u8 task_interval = 0; + static u8 task_interval; - if( system_status.pwr_state != OFF_TRIG ) + if( task_interval -- != 0 ) { - if( task_interval-- != 0 ) - { - return; - } - else - { - task_interval = (u8)( INTERVAL_TSK_BATT / SYS_INTERVAL_TICK ); - } + return; + } + else + { + task_interval = (u8)( INTERVAL_TSK_BATT / SYS_INTERVAL_TICK ); } // アダプタステータス更新 // @@ -117,11 +126,18 @@ void tsk_batt( ) bt_get_charge_status(); // CCIC制御 - LED_CHARGE = ( ! BT_IN_CHG_delayed_n )? 1: 0; // LEDに反映 + if( ! BT_IN_CHG_delayed_n ) // LEDに反映 + { + LED_CHARGE = 1; + } + else + { + LED_CHARGE = 0; + } // アダプタつないだ瞬間、満充電でも数秒わざと点灯させる。給電してることをわからせるため。 if( chg_led_override != 0 ){ // ↑から見ればわかるが、瞬間(数クロック)消える事がある。気がつく人いるかな…? - chg_led_override -= 1; + chg_led_override --; LED_CHARGE = 1; } @@ -132,17 +148,14 @@ void tsk_batt( ) // tsk_miscが引き受ける // 電池残量 // - if( system_status.pwr_state != ON_CHECK ) - { - BT_get_left(); - } + BT_get_left(); } -#define RAW_TEMP_LH 75 -#define RAW_TEMP_LL 61 -#define RAW_TEMP_HL 184 -#define RAW_TEMP_HH 189 +#define RAW_TEMP_LH 75 // 50 [degC] +#define RAW_TEMP_LL 61 // 55 +#define RAW_TEMP_HL 184 // 1 +#define RAW_TEMP_HH 189 // -1 #define AVG_COUNT 40 /* ******************************************************* @@ -227,19 +240,17 @@ void bt_get_charge_status() ***********************************************************/ void pm_chk_adapter() { - static u8 pm_extdc_old; - u8 temp_pm_extdc; + static bit pm_extdc_old; - temp_pm_extdc = (u8)!PM_EXTDC_n; // volatileのため - if( pm_extdc_old != temp_pm_extdc ) + if( pm_extdc_old != PM_EXTDC_n ) // HAL を通すため、 PM_EXTDC_n の volatile にする心配なし { - pm_extdc_old = temp_pm_extdc; - if( temp_pm_extdc ) + pm_extdc_old = PM_EXTDC_n; + if( !PM_EXTDC_n ) { // 刺さった set_bit( 1, vreg_ctr[VREG_C_STATUS], REG_BIT_POW_SUPPLY ); set_irq( VREG_C_IRQ1, REG_BIT_BT_DC_CONNECT ); - chg_led_override = (u8)( 3000 / INTERVAL_TSK_BATT ); + chg_led_override = (u8)( 3000 / INTERVAL_TSK_BATT ); // 誤差蓄積で実測4.5secぐらいだが、もういじらない } else { @@ -296,6 +307,9 @@ void BT_chk() battery_manufacturer_old = battery_manufacturer; BT_model_detect(); + bt_param_select(); // バッテリ残量補正パラメータなどセット 非実機でも、とりあえずの値(パナ)指定にしておく。 + // 無駄にrcomp計算させるが、未初期化ポインタを参照するのいやだし、非実機なら計算しないとか面倒 + if( system_status.model != MODEL_JIKKI ) { bt_authorized = false; @@ -303,8 +317,6 @@ void BT_chk() // おしまい } - bt_param_select(); // バッテリ残量補正パラメータなどセット - if(( battery_manufacturer_old != battery_manufacturer ) || bt_force_update ) { @@ -319,7 +331,7 @@ void BT_chk() BT_mgic_init(); // 機種判定も行います } bt_authorized = true; - renge_task_immed_add( tski_BT_temp_update ); // 電池温度監視スタート + renge_task_immed_add( tski_BT_temp_update ); // 電池温度監視 } @@ -362,6 +374,17 @@ void BT_model_detect() system_status.model = MODEL_JIKKI; // バッテリ無しの時は↓で上書きする } + // TSのhomeボタン、実機は未接続なので要端子処理 /// gndにしとけばよかった… + if( system_status.model == MODEL_TS_BOARD ) + { + PM_SW_HOME_n_TSBOARD = 1; + } + else + { + PM_SW_HOME_n_TSBOARD = 0; + SW_HOME_n_TSBOARD_RAW = 0; /// 実機open どっちでもいいんだけど + } + // 電池メーカーの識別 // { u8 i; @@ -413,7 +436,6 @@ static void BT_mgic_quick_start() #define MGIC_CMD_RESET 0x5400 static void BT_mgic_init() { - u8 temp; u8 origParam[4]; /* @@ -456,7 +478,7 @@ static void BT_mgic_init() u8 loop; // 16バイトごとに区切れとのこと (ノイズ対策とか言うんだけど、意味あるんか?) - for( loop = 0; loop < 4; loop++ ) + for( loop = 0; loop < 4; loop ++ ) { iic_mcu_set_wo_dma( ); iic_mcu_write( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_BT_PARAM + loop*16, 16, p_bt_param->mg_param + loop*16 ); @@ -473,14 +495,16 @@ static void BT_mgic_init() wait_ms( 150 + 15 ); // 9. SOCを読む。ベリファイのため。 - temp = iic_mcu_read_a_byte( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_SOC ); + { u8 temp; + temp = iic_mcu_read_a_byte( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_SOC ); - if(( p_bt_param->verify.low <= temp ) && ( temp <= p_bt_param->verify.hi )) - { - // カスタムモデル書き込みOK! - }else{ - // 失敗だったらリトライするのか? -// NOP(); + if(( p_bt_param->verify.low <= temp ) && ( temp <= p_bt_param->verify.hi )) + { + // カスタムモデル書き込みOK! + }else{ + // 失敗だったらリトライするのか? + // dbg_nop(); + } } // 10.元のRCOMPとOCVを書き戻す @@ -516,7 +540,7 @@ task_status_immed tski_BT_temp_update( ) { if( heikinka < 40 ) { - heikinka++; + heikinka ++; } else { @@ -570,151 +594,138 @@ task_status_immed tski_BT_temp_update( )  BT_chk()が実行されている必要があります。 **********************************************************/ void BT_get_left(){ - u8 temp_fuel[2]; - static u16 hysteresis; + u8 temp[2]; + u8 reg_volatile_temp_bt_remain,reg_volatile_temp_bt_remain_fine; // I2Cの非同期読み込みでのちらつき防止 キャップ処理の所為 + u8 fuel_cap_by_voltage; // 電圧でキャップに使う -#ifdef _DEBUG_BT_FUEL_ - if( vreg_ctr[ VREG_C_COMMAND3 ] == 'd' ) + // 電池残量 + if( system_status.model == MODEL_TS_BOARD + || system_status.model == MODEL_SHIROBAKO ) { - vreg_ctr[ VREG_C_BT_REMAIN ] = vreg_ctr[ VREG_C_DBG01 ]; - } - else -#endif - { - if( system_status.model == MODEL_TS_BOARD ) + // TS & 白箱 // + if( read_BT_SOC( temp ) == ERR_SUCCESS ) { - // TS // - vreg_ctr[ VREG_C_BT_REMAIN ] = 99; - vreg_ctr[ VREG_C_BT_VOLTAGE ] = 200; - } - else if( system_status.model == MODEL_SHIROBAKO ) - { - // 白箱 // - // 電池残量 - if( read_mgic_2B( BT_GAUGE_REG_SOC, temp_fuel ) != ERR_SUCCESS ) - { - // エミュレーション機能がおかしい - vreg_ctr[ VREG_C_BT_REMAIN ] = 99; - } - else - { - vreg_ctr[ VREG_C_BT_REMAIN ] = temp_fuel[0]; - vreg_ctr[ VREG_C_BT_REMAIN_FINE ] = temp_fuel[1]; - } - -//* - // 電池電圧 - if( read_mgic_2B( BT_GAUGE_REG_VCELL, temp_fuel ) == ERR_SUCCESS ) - { - vreg_ctr[ VREG_C_BT_VOLTAGE ] = temp_fuel[0]; - } - else -//*/ - { - vreg_ctr[ VREG_C_BT_VOLTAGE ] = 200; - } + reg_volatile_temp_bt_remain = temp[0]; + reg_volatile_temp_bt_remain_fine = temp[1]; } else { - // 実機 // - u8 temp_v[2]; - u8 temp_force_fuel_left; - - // 残量リード - if( read_mgic_2B( BT_GAUGE_REG_SOC, temp_fuel ) != ERR_SUCCESS ) - { - // 残量ICがNACK …バッテリはずれた - vreg_ctr[ VREG_C_STATUS_1 ] |= REG_BIT_MGIC_ERR; - bt_authorized = false; - vreg_ctr[ VREG_C_BT_REMAIN ] = 0; - force_off = true; - } - else - { - // バッテリパラメータの関係でビットシフトが必要 - bt_volt16 = temp_fuel[0] * 256 + temp_fuel[1]; - bt_volt16 /= p_bt_param->v_scale; - temp_fuel[0] = (u8)(( bt_volt16 >> 8 ) & 0xFF); - if( temp_fuel[0] == 0 ) - { - // 0%台の時は1.00%に上げ底 - // 充電開始後もしばらくは電池残量が減るので - // 0%に到達してしまうことがあるのだ - temp_fuel[0] = 1; - temp_fuel[1] = 0; - } - else - { - temp_fuel[1] = (u8)(bt_volt16 & 0xFF); - } - - - // 電圧でキャップ - if( read_mgic_2B( BT_GAUGE_REG_VCELL, temp_v ) == ERR_SUCCESS ) - { - vreg_ctr[ VREG_C_BT_VOLTAGE ] = temp_v[0]; - - bt_volt16 = ( temp_v[0] * 256 + temp_v[1] ); - - if( bt_volt16 > V_TH_30 ) - { - temp_force_fuel_left = 100; - hysteresis = 0; - } - else if( bt_volt16 - hysteresis > V_TH_LO ) - { - temp_force_fuel_left = 30; - hysteresis = 0; - } - else if( bt_volt16 > V_TH_EMPTY ) - { - temp_force_fuel_left = BATT_TH_LO; // ここから赤 - hysteresis = 500; - } - else if( bt_volt16 > V_TH_ZERO ) - { - temp_force_fuel_left = BATT_TH_EMPTY; - hysteresis = 500; - } - else if( bt_volt16 > V_TH_FORCE_OFF ) - { - temp_force_fuel_left = 0; - hysteresis = 500; - } - else - { - force_off = true; - hysteresis = 500; - } - } - } - - // 充電許可(=アダプタも刺さってる)のに充電してない - // かつ、(少なくとも)素の電池残量が60%以上(CCICバグ回避) - // = 充電完了。電池がへたってくるとMGICが100%を返さない - if( !BT_CHG_Ena_n && BT_IN_CHG_delayed_n ){ - vreg_ctr[ VREG_C_BT_REMAIN ] = 100; - vreg_ctr[ VREG_C_BT_REMAIN_FINE ] = 0; - } - else - { // 少ない方にキャップ - if( temp_force_fuel_left > temp_fuel[0] ) - { - vreg_ctr[ VREG_C_BT_REMAIN ] = temp_fuel[0]; - vreg_ctr[ VREG_C_BT_REMAIN_FINE ] = temp_fuel[1]; - } - else - { - vreg_ctr[ VREG_C_BT_REMAIN ] = temp_force_fuel_left; - vreg_ctr[ VREG_C_BT_REMAIN_FINE ] = 0; - } - } - } - if( system_status.taikendai_nbd ) - { - vreg_ctr[ VREG_C_BT_REMAIN ] = 100; + // エミュレーション機能がおかしい + //  それで電源断は不便すぎるだろう + reg_volatile_temp_bt_remain = 99; + reg_volatile_temp_bt_remain_fine = 0; } } + else + { + // 実機 // + // 残量リード + if( read_BT_SOC( temp ) != ERR_SUCCESS ) + { + // 残量ICがNACK …バッテリはずれた + vreg_ctr[ VREG_C_STATUS_1 ] |= REG_BIT_MGIC_ERR; + bt_authorized = false; + reg_volatile_temp_bt_remain = 0; + force_off = true; + } + else + { + u16 temp_u16; + + // バッテリパラメータの関係でビットシフトが必要 + temp_u16 = temp[0] * 256 + temp[1]; + temp_u16 /= p_bt_param->v_scale; + reg_volatile_temp_bt_remain = (u8)(( temp_u16 >> 8 ) & 0xFF ); + if( reg_volatile_temp_bt_remain == 0 ) + { + // 0%台の時は1.00%に上げ底 + // 充電開始後もしばらくは電池残量が減るので + // 0%に到達してしまうことがあるのだ + reg_volatile_temp_bt_remain = 1; + reg_volatile_temp_bt_remain_fine = 0; + } + else + { + reg_volatile_temp_bt_remain_fine = (u8)(temp_u16 & 0xFF); + } + } + } + + // 電池電圧 + { + if( read_BT_voltage( temp ) != ERR_SUCCESS ) // 2byte read + { + temp[0] = (u8)( V_BT_4000MV / 256 ); // 電池電圧読めなかったら4000mVだったことにしておく。 + temp[1] = 0; + } + vreg_ctr[ VREG_C_BT_VOLTAGE ] = temp[0]; + bt_volt16 = ( temp[0] * 256 + temp[1] ); + } + + + // 電圧でキャップ...の準備 + { + static u16 hysteresis; + + if( bt_volt16 > V_TH_30 ) + { + fuel_cap_by_voltage = 100; + hysteresis = 0; + } + else if( bt_volt16 - hysteresis > V_TH_LO ) + { + fuel_cap_by_voltage = 30; + hysteresis = 0; + } + else if( bt_volt16 > V_TH_EMPTY ) + { + fuel_cap_by_voltage = BATT_TH_LO; // ここから赤 + hysteresis = 500; + } + else if( bt_volt16 > V_TH_ZERO ) + { + fuel_cap_by_voltage = BATT_TH_EMPTY; + hysteresis = 500; + } + else if( bt_volt16 > V_TH_FORCE_OFF ) + { + fuel_cap_by_voltage = 0; + hysteresis = 500; + } + else + { + force_off = true; + hysteresis = 500; + } + } + + + // 充電許可(=アダプタも刺さってる)のに充電してない + // かつ、(少なくとも)素の電池残量が60%以上(CCICバグ回避) + // = 充電完了。電池がへたってくるとMGICが100%を返さない + if( !BT_CHG_Ena_n && BT_IN_CHG_delayed_n ){ + reg_volatile_temp_bt_remain = 100; + reg_volatile_temp_bt_remain_fine = 0; + } + else + { // 電圧でのキャップを掛けるか? + if( fuel_cap_by_voltage < reg_volatile_temp_bt_remain ) + { + reg_volatile_temp_bt_remain = fuel_cap_by_voltage; + reg_volatile_temp_bt_remain_fine = 0; + } + } + + /* + 十分に問題ない電圧が供給されてるらしいのでケアせずでよし + if( system_status.taikendai_nbd && system_status.model != MODEL_TS_BOARD ) // 電池端子に電源がつながってて値が不正なため上書き。 + { + reg_volatile_temp_bt_remain = 100; + } + */ + + vreg_ctr[ VREG_C_BT_REMAIN ] = reg_volatile_temp_bt_remain; + vreg_ctr[ VREG_C_BT_REMAIN_FINE ] = reg_volatile_temp_bt_remain_fine; // twlのレジスタ更新 (CTRに割り込み入れる前に更新しないと割り込みのタイミングがまずいかもしれない) bt_batt_update_twl(); @@ -723,7 +734,7 @@ void BT_get_left(){ { static u8 bt_remain_old_ctr; - if( bt_remain_old_ctr != vreg_ctr[ VREG_C_BT_REMAIN ] ) + if( bt_remain_old_ctr != reg_volatile_temp_bt_remain ) // CTRに通知 { if( (( vreg_ctr[ VREG_C_BT_REMAIN ] <= BATT_TH_LO ) && ( BATT_TH_LO < bt_remain_old_ctr ))|| @@ -793,7 +804,7 @@ void PM_LCD_off() u8 tot; PM_BL_set( REG_BIT_CMD_BL_U_OFF | REG_BIT_CMD_BL_L_OFF ); - vreg_ctr[VREG_C_STATUS] &= 0b10011111; + vreg_ctr[VREG_C_STATUS] &= bits8(1,0,0,1, 1,1,1,1); if( (( REG_BIT_BL_U_OFF | REG_BIT_BL_L_OFF ) & ~vreg_ctr[ VREG_C_IRQ_MASK3 ] ) != 0 ) { @@ -808,14 +819,14 @@ void PM_LCD_off() // 液晶電源切る // - SPFL_LCD_AMOL_HV_CONT = 0; // 他のファミリでも弊害ないし + SPFL_LCD_AMOL_HV_CONT = 0; // 他のファミリでもL縛りなので弊害なし // 50msとか待つし、確認しましょうかね… if( read_pmic( PM_REG_ADRS_VDD_LCD ) != 0 ) { if( system_status.family == FAMILY_SPFL ) { - wait_ms( 10 ); // アモルファス15Vを切ったときのウェイト。数字は暫定 + wait_ms( 10 ); // アモルファス15Vを切ったときのウェイト。 } PM_TCOM_off(); @@ -883,8 +894,8 @@ err PM_BL_set( u8 dat ) // 更新してしまう。 #endif // PMICのBLのビットと、MCUのSTATUSレジスタのビット位置が逆なため入れ替え - vreg_ctr[VREG_C_STATUS] = (( vreg_ctr[VREG_C_STATUS] & 0b10011111 ) - | ( (( blset << 6 ) | ( blset << 4 )) & 0b01100000 )); + vreg_ctr[VREG_C_STATUS] = (( vreg_ctr[VREG_C_STATUS] & bits8(1,0,0,1, 1,1,1,1) ) + | ( (( blset << 6 ) | ( blset << 4 )) & bits8(0,1,1,0, 0,0,0,0) )); // 割り込み /// 複数ビットまとめて行うので、いつもの関数使用不可 @@ -1022,7 +1033,7 @@ void PM_sys_pow_off( ) =========================================================*/ __interrupt void intp4_extdc( ) { -// chg_led_override = (u8)( 1000 / INTERVAL_TSK_BATT / SYS_INTERVAL_TICK ); +// chg_led_override = (u8)( 1000 / INTERVAL_TSK_BATT ); // chg_led_override = 4; } @@ -1193,7 +1204,8 @@ void codec_reg_init() { wait_ms( 100 ); - ntr_pm_bt_low_old = ( vreg_ctr[ VREG_C_BT_REMAIN ] <= BATT_TH_LO )? NTR_PM_BT_EMPTY: NTR_PM_BT_ENOUGH; // 1で電池切れ + ntr_pm_bt_low_old = conv_ctr_bt_to_twl_bt(); + iic_mcu_write_a_byte_codec( CODEC_REG_BT, (u8)ntr_pm_bt_low_old ); // SoC から書けず vol_reset(); @@ -1305,7 +1317,7 @@ static void bt_batt_update_ntr() else { - flag = (( vreg_ctr[ VREG_C_BT_REMAIN ] <= BATT_TH_LO )? NTR_PM_BT_EMPTY: NTR_PM_BT_ENOUGH ); // 1で電池切れ + flag = conv_ctr_bt_to_twl_bt(); if(( ntr_pm_bt_low_old != flag ) || !initialized ) { @@ -1315,3 +1327,54 @@ static void bt_batt_update_ntr() } } } + + +/* ======================================================== +========================================================= */ +static err read_BT_SOC( u8* dest ) +{ + if( vreg_ctr[ VREG_C_HAL_OVW_BT_FUEL ] != 0xFF ) + { + *dest = vreg_ctr[ VREG_C_HAL_OVW_BT_FUEL ]; + *(dest+1) = 0x00; + return ERR_SUCCESS; + } + else + { + return( read_mgic_2B( BT_GAUGE_REG_SOC, dest ) ); + } +} + + +/* ======================================================== +========================================================= */ +static err read_BT_voltage( u8* dest ) +{ + if( vreg_ctr[ VREG_C_HAL_OVW_BT_VOLTAGE ] != 0xFF ) + { + *dest = vreg_ctr[ VREG_C_HAL_OVW_BT_VOLTAGE ]; +// *(dest+1) = 0x00; // 使わないよ けど2バイトリード関数しか用意してないのです + return ERR_SUCCESS; + } + else + { + return( read_mgic_2B( BT_GAUGE_REG_VCELL, dest ) ); + } +} + + +/* ======================================================== + 電池残量をtwlにフラグにして返す +========================================================= */ +static u8 conv_ctr_bt_to_twl_bt() +{ +// ntr_pm_bt_low_old = ( vreg_ctr[ VREG_C_BT_REMAIN ] <= BATT_TH_LO )? NTR_PM_BT_EMPTY: NTR_PM_BT_ENOUGH; // 1で電池切れ + if( vreg_ctr[ VREG_C_BT_REMAIN ] <= BATT_TH_LO ) + { + return NTR_PM_BT_EMPTY; + } + else + { + return NTR_PM_BT_ENOUGH; + } +} diff --git a/trunk/pm.h b/trunk/pm.h index 215e7e5..423d771 100644 --- a/trunk/pm.h +++ b/trunk/pm.h @@ -15,16 +15,20 @@ #define BATT_TH_EMPTY 5 // 電圧レジスタと直接比較できる用にオフセット -#define V_TH_30 (u16)( 3300 * 12.8 ) -#define V_TH_LO (u16)( 3200 * 12.8 ) -#define V_TH_EMPTY (u16)( 3150 * 12.8 ) -#define V_TH_ZERO (u16)( 3100 * 12.8 ) -#define V_TH_FORCE_OFF (u16)( 2900 * 12.8 ) +#define V_BT_4000MV (u16)( 4000 * 12.8 ) // 電圧読み出し失敗用 4000mV設定 +#define V_TH_30 (u16)( 3300 * 12.8 ) // 30% +#define V_TH_LO (u16)( 3200 * 12.8 ) // 10% +#define V_TH_EMPTY (u16)( 3150 * 12.8 ) // 5% +#define V_TH_ZERO (u16)( 3100 * 12.8 ) // 0% +#define V_TH_FORCE_OFF (u16)( 2900 * 12.8 ) // 2.9V 最終強制断 //========================================================= +#ifdef _WIN32 +#define LED_CHARGE mcuRegP[ _P2_4 ] +#else #define LED_CHARGE P2.4 - +#endif //========================================================= @@ -101,7 +105,8 @@ enum NTR_PM_BT_STATUS{ #define PM_REG_BIT_VDD50A ( 1 << 4 ) // 0x02 pw cnt2 -#define PM_REG_BIT_VDDLCD 0x07 +#define PM_REG_BIT_VDDLCD_CGS 0x07 +#define PM_REG_BIT_VDDLCD_AMO 0x05 #define PM_REG_BIT_LCD_VCS ( 0x01 << 4 ) #define PM_REG_BIT_LCD_TCOM ( 0x01 << 3 ) @@ -111,11 +116,11 @@ enum NTR_PM_BT_STATUS{ // 0x05 pow save -#define PM_REG_BIT_VDD1P_1R15 0b00000000 -#define PM_REG_BIT_VDD1P_1R05 0b00001000 -#define PM_REG_BIT_VDD1P_0R90 0b00100000 -#define PM_REG_BIT_VDD_AUTO 0b00000111 -#define PM_REG_BIT_VDD_PWM 0b00000000 +#define PM_REG_BIT_VDD1P_1R15 bits8(0,0,0,0, 0,0,0,0) +#define PM_REG_BIT_VDD1P_1R05 bits8(0,0,0,0, 1,0,0,0) +#define PM_REG_BIT_VDD1P_0R90 bits8(0,0,1,0, 0,0,0,0) +#define PM_REG_BIT_VDD_AUTO bits8(0,0,0,0, 0,1,1,1) +#define PM_REG_BIT_VDD_PWM bits8(0,0,0,0, 0,0,0,0) #define DELAY_PM_TW_PWUP 16 + 2 @@ -134,6 +139,8 @@ extern bit bt_force_update; extern u8 pmic_version; extern u8 mgic_version[]; +extern u8 pm_reg_bit_vddlcd; // アモルファス対応(電源シーケンスが違う) + //========================================================= err PM_sys_pow_on( ); @@ -153,7 +160,6 @@ void pm_chk_adapter(); void codec_reg_init(); - task_status_immed tski_BT_temp_update( ); task_status_immed tski_vcom_set( ); task_status_immed tski_PM_LCD_on(); @@ -166,8 +172,6 @@ u8 read_pmic( u8 reg ); #define PM_Chg_Stop() { BT_TEMP_P = 0; BT_CHG_DISABLE(); LED_CHARGE = 0; bt_authorized = false; } - - //  これを呼ぶ前に、現在温度を教えておく必要があります。 #define PM_reset() ( send_cmd_pmic( PM_REG_ADRS_CONT, 0x00 ) ) @@ -184,10 +188,11 @@ u8 read_pmic( u8 reg ); #define PM_VDD_on() ( send_cmd_pmic( PM_REG_ADRS_VDD_SYS, PM_REG_BIT_VDD )) #define PM_VDD50A_on() ( send_cmd_pmic( PM_REG_ADRS_VDD_SYS, ( PM_REG_BIT_VDD | PM_REG_BIT_VDD50A ))) #define PM_VDD_off() ( send_cmd_pmic( PM_REG_ADRS_VDD_SYS, 0 )) -#define PM_off() ( send_cmd_pmic( PM_REG_ADRS_VDD_SYS, 0 )) +#define PM_off() PM_VDD_off() #define PM_VDD_normMode() ( send_cmd_pmic( PM_REG_ADRS_POW_SAVE, PM_REG_BIT_VDD1P_1R15 | PM_REG_BIT_VDD_PWM )) #define PM_VDD_ecoMode() ( send_cmd_pmic( PM_REG_ADRS_POW_SAVE, PM_REG_BIT_VDD1P_0R90 | PM_REG_BIT_VDD_AUTO )) +// todo Yでコア電圧が変わるかもしれない // ほか // #define PM_reset_neg() ( send_cmd_pmic( PM_REG_ADRS_CONT, ( PM_REG_BIT_LDSW | PM_REG_BIT_nRST1 ))) @@ -196,10 +201,10 @@ u8 read_pmic( u8 reg ); // ↑ 0 だと異常 // 液晶系電源 // -#define PM_VDDLCD_on() ( send_cmd_pmic( PM_REG_ADRS_VDD_LCD, PM_REG_BIT_VDDLCD )) -#define PM_TCOM_on() ( send_cmd_pmic( PM_REG_ADRS_VDD_LCD, ( PM_REG_BIT_VDDLCD | PM_REG_BIT_LCD_TCOM ))) -#define PM_VCS_on() ( send_cmd_pmic( PM_REG_ADRS_VDD_LCD, ( PM_REG_BIT_VDDLCD | PM_REG_BIT_LCD_VCS | PM_REG_BIT_LCD_TCOM ))) -#define PM_TCOM_off() ( send_cmd_pmic( PM_REG_ADRS_VDD_LCD, ( PM_REG_BIT_VDDLCD | PM_REG_BIT_LCD_VCS ))) +#define PM_VDDLCD_on() ( send_cmd_pmic( PM_REG_ADRS_VDD_LCD, pm_reg_bit_vddlcd )) +#define PM_TCOM_on() ( send_cmd_pmic( PM_REG_ADRS_VDD_LCD, ( pm_reg_bit_vddlcd | PM_REG_BIT_LCD_TCOM ))) +#define PM_VCS_on() ( send_cmd_pmic( PM_REG_ADRS_VDD_LCD, ( pm_reg_bit_vddlcd | PM_REG_BIT_LCD_VCS | PM_REG_BIT_LCD_TCOM ))) +#define PM_TCOM_off() ( send_cmd_pmic( PM_REG_ADRS_VDD_LCD, ( pm_reg_bit_vddlcd | PM_REG_BIT_LCD_VCS ))) #define PM_TCOM_VCS_off() PM_VDDLCD_on() #define PM_VDDLCD_off() ( send_cmd_pmic( PM_REG_ADRS_VDD_LCD, 0 ) ) diff --git a/trunk/renge/renge.c b/trunk/renge/renge.c index f50fb59..1c7562a 100644 --- a/trunk/renge/renge.c +++ b/trunk/renge/renge.c @@ -1,9 +1,19 @@ +#ifndef _WIN32 + #pragma section @@CODE ROM_CODE #pragma nop #pragma ei #pragma di #pragma sfr +#endif + + +#ifdef _WIN32 +typedef unsigned char bit; +typedef unsigned char u8; +#endif + /****************************************************************************** タスクシステム? なるほど、iTRONにはコンフィギュレータがあるはずだ。 @@ -17,7 +27,9 @@ #include "..\config.h" #include "..\user_define.h" - +#ifdef _WIN32 +#include "../sim/simOnWin.h" +#endif //#define _renge_test_ #define true 1 @@ -31,12 +43,10 @@ bit renge_task_immediate_not_empty; bit renge_task_interval_in_force; - #include "..\bsr_system.h" extern system_status_ system_status; - //****************************************************************************** static void renge_task_immed_init(); static void renge_task_immed_del(); @@ -87,17 +97,17 @@ err renge_task_interval_run(){ // インターバル起動 DI(); if(( renge_flg_interval != 0 ) || - ( renge_task_interval_run_force )) // todo 統合 + ( renge_task_interval_run_force )) /// 統合したかったな… { renge_task_interval_in_force = renge_task_interval_run_force; renge_task_interval_run_force = false; // 今から起動するタスク、割り込むタスクでフラグが立つかもなので if( renge_flg_interval != 0 ) { - renge_flg_interval -= 1; + renge_flg_interval --; WDT_Restart( ); } EI(); - for( i = 0; i != TSK_LAST; i += 1 ) + for( i = 0; i != TSK_LAST; i ++ ) { tasks[ i ](); // 逐次起動タスクがあったら間に挟む @@ -145,7 +155,7 @@ err renge_task_immed_add( task_status_immed (*new_task)() ){ // リストの空きの先頭に登録 // 削除したばかりのタスクは、削除マーク(TSK_IMM_DELETED_)となり、空きとは明示的に区別される // 重複登録を避ける - for( i = 0; i < TASK_IMMED_RUN_LIST_MAX; i += 1 ) + for( i = 0; i < TASK_IMMED_RUN_LIST_MAX; i ++ ) { DI(); if( tasks_immed[ i ] == TSK_IMM_EMPTY_ ) @@ -184,7 +194,7 @@ err renge_task_immed_run(){ if( tasks_immed[ 0 ] != TSK_IMM_EMPTY_ ) { DI(); - for( list_id = 0; list_id < TASK_IMMED_RUN_LIST_MAX; list_id += 1 ){ + for( list_id = 0; list_id < TASK_IMMED_RUN_LIST_MAX; list_id ++ ){ if( tasks_immed[ list_id ] == TSK_IMM_EMPTY_ ){ // リスト完了 EI(); @@ -245,12 +255,11 @@ err renge_task_immed_run(){ if( tasks_immed[ j ] == TSK_IMM_EMPTY_ ) { do{ - j -= 1; - DI(); + j --; tasks_immed[ j ] = TSK_IMM_EMPTY_; // リスト前詰め完了 - EI(); }while( i < j ); + EI(); goto imm_list_sort_fin; } else @@ -258,7 +267,7 @@ err renge_task_immed_run(){ // 前詰めすべきタスクを見つけた tasks_immed[ i ] = tasks_immed[ j ]; tasks_immed[ j ] = TSK_IMM_DELETED_; - i += 1; + i ++; EI(); } } @@ -268,7 +277,7 @@ err renge_task_immed_run(){ { // このタスク、滞留 } - i += 1; + i ++; } } } @@ -297,7 +306,7 @@ imm_list_sort_fin: } } #else - NOP(); // リンカが怒る + NOP(); // なんか無いとリンカが怒る #endif // } return( ERR_SUCCESS ); diff --git a/trunk/rtc.c b/trunk/rtc.c index ce00e45..a539a97 100644 --- a/trunk/rtc.c +++ b/trunk/rtc.c @@ -1,18 +1,21 @@ /* ======================================================== RTC ======================================================== */ +#ifndef _WIN32 + #pragma sfr #pragma inline +#endif #include "incs.h" - +#define RTC_DATA_SIZE 7 // ======================================================== -u8 rtc_work[7]; -bit rtc_lock; -bit rtc_dirty; +static u8 rtc_work[RTC_DATA_SIZE]; +static bit rtc_lock; +static bit rtc_dirty; bit rtc_alarm_dirty; @@ -28,9 +31,12 @@ void RTC_init( void ) RTCEN = 1; // モジュールON // RTC設定 - RTCC0 = 0b00001000; /* 動作停止、24時間制、32k出力「まだなし」、定周期割り込みなし */ - RTCC1 = 0b11000000; /* アラーム割り込み有効&動作開始 */ - RTCC2 = 0b10000000; /* インターバル:32k/2^6=2ms、RTCDIV出力なし */ + RTCC0 = bits8(0,0,0,0, 1,0,0,0); /* 動作停止、24時間制、32k出力「まだなし」、定周期割り込みなし */ + // (RTCE 0 RCLOE1 RCLOE0 AMPM CT2 CT1 CT0) + RTCC1 = bits8(1,1,0,0, 0,0,0,0); /* アラーム割り込み有効&動作開始 */ + // (WALE WALIE 0 WAFG RIFG 0 RWST RWAIT) + RTCC2 = bits8(1,0,0,0, 0,0,0,0); /* インターバル:32k/2^6=2ms、RTCDIV出力なし */ + // (RINTE RCLOE2 RCKDIV 0 0 ICT2 ICT1 ICT0) HOUR = 0x00; MIN = 0x00; @@ -88,7 +94,7 @@ __interrupt void int_rtc( ) RTC のリード レジスタは、sec,min,hour,week,day,month,year の順 ======================================================== */ -void rtc_buf_reflesh( ) +void rtc_buf_refresh( ) { if( !rtc_lock ) { @@ -97,7 +103,7 @@ void rtc_buf_reflesh( ) while( !RWST ) {;} - memcpy( &vreg_ctr[VREG_C_RTC_SEC], &SEC, 7 ); + memcpy( &vreg_ctr[VREG_C_RTC_SEC], &SEC, RTC_DATA_SIZE ); RWAIT = 0; // renge_task_immed_add( tski_rtc_close ); } @@ -116,7 +122,7 @@ void set_rtc( u8 adrs, u8 data ) if( !rtc_dirty ) { rtc_dirty = true; - memcpy( rtc_work, &SEC, 7 ); + memcpy( rtc_work, &SEC, RTC_DATA_SIZE ); // renge_task_immed_add( tski_rtc_close ); // I2C終了時に行う } rtc_work[adrs] = data; @@ -140,7 +146,7 @@ void rtc_unlock( ) RWAIT = 1; while( !RWST ) {;} - memcpy( &SEC, rtc_work, 7 ); + memcpy( &SEC, rtc_work, RTC_DATA_SIZE ); RWAIT = 0; } @@ -165,5 +171,5 @@ void rtc_unlock( ) ======================================================== */ __interrupt void int_rtc_int( ) { - renge_flg_interval += 1; // インクリメント/デクリメント命令を使うので DI()不要 + renge_flg_interval ++; // インクリメント/デクリメント命令を使うので DI()不要 } diff --git a/trunk/rtc.h b/trunk/rtc.h index f189a89..6b2d9f8 100644 --- a/trunk/rtc.h +++ b/trunk/rtc.h @@ -3,7 +3,7 @@ void RTC_init( void ); -void rtc_buf_reflesh( ); +void rtc_buf_refresh( ); void set_rtc( u8 adrs, u8 data ); //task_status_immed tski_rtc_close(); diff --git a/trunk/self_flash.c b/trunk/self_flash.c index a22536b..d1ff4dd 100644 --- a/trunk/self_flash.c +++ b/trunk/self_flash.c @@ -1,6 +1,8 @@ /* ======================================================== 自己アップデータ ======================================================== */ +#ifndef _WIN32 + #pragma SFR #pragma di #pragma ei @@ -8,6 +10,7 @@ #pragma stop #pragma halt +#endif #include "incs_loader.h" @@ -66,7 +69,13 @@ const u8 fsl_low_voltage_u08 = 1; #define WTIM WTIM1 #endif - +#ifndef _WIN32 +#define LED_POW1 P1.5 +#define LED_PM_POW1 PM1.5 +#else +#define LED_POW1 mcuRegP[ _P1_5 ] +#define LED_PM_POW1 mcuRegPM[ _P1_5 ] +#endif // ======================================================== static void FSL_Open( void ); @@ -124,7 +133,7 @@ void firm_update( ) //(新ファームが書かれるところに残ってる、以前のファームのフッタを消したい) for( target_block = INACTIVE_BOOTSECT_TOP; target_block < ALTERNATE_FIRMTOP; - target_block += 1 ) + target_block ++ ) { FSL_Erase( target_block ); } @@ -135,7 +144,7 @@ void firm_update( ) // ●終わったら、スタートアップルーチンに飛ぶ for( target_block = INACTIVE_BOOTSECT_TOP; target_block < ALTERNATE_FIRMTOP; - target_block += 1 ) + target_block ++ ) { u8 my_spd; @@ -146,7 +155,7 @@ void firm_update( ) // 分割書き込み for( split_write_count = 0; split_write_count < SELF_UPDATE_SPLIT_WRITE_NUM; - split_write_count += 1 ) + split_write_count ++ ) { u8* p_buffer = &pool.self_update_work[0]; u16 buff_written_size = 0; @@ -162,8 +171,8 @@ void firm_update( ) IICAIF = 0; *p_buffer = IICA; WREL = 1; - p_buffer += 1; - buff_written_size += 1; + p_buffer ++; + buff_written_size ++; } while( ( buff_written_size != SELF_UPDATE_BUFF_SIZE ) && !SPD ); @@ -196,7 +205,7 @@ void firm_update( ) // 1ブロック書き込み完了。内部ベリファイを行う if( FSL_IVerify( target_block ) != FSL_OK ){ alert(2); - // 再度消去→書き込み ベリファイを繰り返すだけじゃダメでした... todo…? + // 再度消去→書き込み ベリファイを繰り返すだけじゃダメでした... /// 再書き込みすべき? // リストア firm_duplicate( ALTERNATE_FIRMTOP, FIRM_TOP ); FSL_ForceReset(); // リセット @@ -224,7 +233,7 @@ void firm_update( ) } if( *( __far u8 * )( N_MGC_L +2 ) != ':' ) // 消去済のまま { - comp += 1; + comp ++; } if( comp == 0 ) @@ -259,7 +268,7 @@ void firm_update( ) void firm_restore( ) { DBG_LED_on; - PM1.5 = 0; + LED_PM_POW1 = 0; // バックアップは正常? // { @@ -273,7 +282,7 @@ void firm_restore( ) } if( *( u8 * )( MGC_FOOT_BKUP ) == 0xFF ) { - comp += 1; + comp ++; } if( comp != 0 ) @@ -298,7 +307,7 @@ void firm_restore( ) { // 赤LED ピコピコ comp++; - P1.5 = ( comp == 1 || comp == 3 )? 1: 0; + LED_POW1 = ( comp == 1 || comp == 3 )? 1: 0; if( comp == 8 ) { comp = 0; @@ -309,7 +318,7 @@ void firm_restore( ) // 電源ボタンで電源off static u8 sw_hold_count; - if( !SW_POW_n ) + if( !SW_POW_n_RAW ) { sw_hold_count++; } @@ -345,8 +354,8 @@ void firm_restore( ) MK2L = 0xFF; // PU5 そのまま - PU7 = 0b00001000; // PWSWI - PU20 = 0x00; // SW_HOME 停止 + PU7 = bits8(0,0,0,0, 1,0,0,0); // PWSWI + PU20 = bits8(0,0,0,0, 0,0,0,0);; // SW_HOME 停止 STOP( ); @@ -370,8 +379,7 @@ void firm_restore( ) } DBG_LED_off; - // todo - //  リストア失敗したら、LEDちかちかとかさせて、サービス送りにしてもらう? + // todo リストア失敗したら、LEDちかちかとかさせて、サービス送りにしてもらう? /* // リブート @@ -412,9 +420,9 @@ static void FSL_Open( void ) MK1 = 0xFFFF; MK2 = 0xFFFF; /* - LVIM = 0b00000010; - LVIS = 0x08; - LVIM = 0b10000010; + LVIM = bits8(0,0,0,0, 0,0,1,0); + LVIS = bits8(0,0,0,0, 1,0,0,0); + LVIM = bits8(1,0,0,0, 0,0,1,0); */ FSL_FLMD0_HIGH; // フラッシュ書き替え許可 } @@ -464,7 +472,7 @@ static err firm_duplicate( u8 block_src, // 書き込み先ブロックの数だけ繰り返す for( target_block = block_dest; target_block < ( block_dest + FIRM_SIZE ); - target_block += 1 ) + target_block ++ ) { led_print(2); WDT_Restart( ); @@ -474,7 +482,7 @@ static err firm_duplicate( u8 block_src, { led_print(3); FSL_Erase( target_block ); - if( --retry_error == 0 ) + if( -- retry_error == 0 ) { // フラッシュ寿命? FSL_Close( ); @@ -486,7 +494,7 @@ static err firm_duplicate( u8 block_src, // 分割書き込み分繰り返す for( split_write_count = 0; split_write_count < SELF_UPDATE_SPLIT_WRITE_NUM; - split_write_count += 1 ) + split_write_count ++ ) { u16 buff_written_size; u8* p_buff; @@ -497,9 +505,9 @@ static err firm_duplicate( u8 block_src, do { *p_buff = *p_src; - p_src += 1; - p_buff += 1; - buff_written_size +=1; + p_src ++; + p_buff ++; + buff_written_size ++; } while( buff_written_size != SELF_UPDATE_BUFF_SIZE ); @@ -574,13 +582,13 @@ void alert( u8 num ) while(1) { WDT_Restart(); - P1.5 = 1; + LED_POW1 = 1; for( i = 0; i < num; i++ ) { DBG_LED_on; DBG_LED_off; } - P1.5 = 0; + LED_POW1 = 0; } } @@ -592,8 +600,8 @@ void led_print( u8 num ) DBG_LED_on; for( i = 0; i < num; i++ ) { - P1.5 = 1; - P1.5 = 0; + LED_POW1 = 1; + LED_POW1 = 0; } DBG_LED_off; } diff --git a/trunk/sw.c b/trunk/sw.c index 58b5b41..5fd74ed 100644 --- a/trunk/sw.c +++ b/trunk/sw.c @@ -1,8 +1,12 @@ +#ifndef _WIN32 + #pragma SFR #pragma NOP #pragma HALT #pragma STOP +#endif + #include "incs.h" #include "i2c_twl.h" @@ -16,27 +20,25 @@ //========================================================= /* vreg_ctrから読みたいのでヘッダへ -#define INTERVAL_TSK_SW 8 -#define CLICK_THRESHOLD 2 +#define INTERVAL_TSK_SW +#define CLICK_THRESHOLD -#define HOLD_THREASHOLD (u8)( 2000 / INTERVAL_TSK_SW ) -#define FORCEOFF_THREASHOLD (u8)( 4000 / INTERVAL_TSK_SW ) +#define HOLD_THREASHOLD +#define FORCEOFF_THREASHOLD */ -#define TIME_MUKAN (u8)( 300 / INTERVAL_TSK_SW ) -#define TIME_MUKAN_PWSW (u16)( 8000 / INTERVAL_TSK_SW ) +#define TIME_MUKAN ( u8)( 300 / INTERVAL_TSK_SW ) +#define TIME_MUKAN_PWSW_RED_TRIAL (u16)( 15000 / INTERVAL_TSK_SW ) // 試遊台、homeマスク時間 //========================================================= u16 SW_pow_count; bit SW_pow_mask; -u8 SW_home_count, SW_wifi_count, SW_home_count_rel; -u8 sw_wifi_mukan_time; +static u8 SW_home_count, SW_wifi_count, SW_home_count_rel; +static u8 sw_wifi_mukan_time; -bit SW_HOME_n; +u16 off_timeout_timer; -u16 off_timeout_timer; - -u16 sw_pwsw_mukan_time; +static u16 sw_pwsw_mukan_time; //========================================================= // 押した時間を数える。押しっぱなしでも0に戻らない @@ -50,7 +52,7 @@ u16 sw_pwsw_mukan_time; if( mask != 0 ){ \ counter = 0; \ }else{ \ - counter += 1; \ + counter ++; \ if( counter == 0 ) counter = -1; \ } \ } \ @@ -60,14 +62,14 @@ u16 sw_pwsw_mukan_time; #define chk_clicked( button, count, irq_bit_name ) \ if( !button ) \ { \ - if( count <= CLICK_THRESHOLD ) \ + if( count < CLICK_THRESHOLD ) \ { \ - count += 1; \ - } \ - if( count == CLICK_THRESHOLD ) \ - { \ - count += 1; \ - set_irq( VREG_C_IRQ0, irq_bit_name ); \ + count ++; \ + if( count == CLICK_THRESHOLD ) \ + { \ + count ++; \ + set_irq( VREG_C_IRQ0, irq_bit_name ); \ + } \ } \ } \ else \ @@ -83,22 +85,26 @@ u16 sw_pwsw_mukan_time; ======================================================== */ void tsk_sw( ) { - static u8 task_interval = 1; + static u8 task_interval; - if( system_status.pwr_state == ON_TRIG ) + if( system_status.pwr_state == OFF_TRIG ) { - SW_pow_count = 0; // カウントクリア + SW_pow_count = 0; // 電源投入に備えてクリア +// task_interval = 0; } - if( --task_interval != 0 ) - { - return; - } - else - { - task_interval = (u8)( INTERVAL_TSK_SW / SYS_INTERVAL_TICK ); - } + if( system_status.pwr_state != ON_CHECK ) // 測定時間(PWSW_POWON_TIME)が短いのでプリスケーラ無し でないとチャタ除去があまりきかない + { + if( task_interval != 0 ) + { + task_interval--; + return; + // おしまい + } + task_interval = (u8)( INTERVAL_TSK_SW / SYS_INTERVAL_TICK ) -1; // プリスケーラ代わりに使ってますね… + // -1はポストデクリメントのための調整 + } // 8ms 毎にきます switch ( system_status.pwr_state ) @@ -127,14 +133,15 @@ void tsk_sw( ) if( off_timeout_timer != 0 ) // 長押し割り込み後、タイムアウトで強制オフ。 { - off_timeout_timer -= 1; - if( off_timeout_timer == 1 ) + off_timeout_timer --; + if( off_timeout_timer == 0 ) { force_off = true; } } }else{ + // スタンドアロン試遊台 // 電源スイッチの監視 // if( SW_pow_count == ( TIME_PWSW_CLICK ) ) { @@ -142,7 +149,7 @@ void tsk_sw( ) { set_irq( VREG_C_IRQ0, REG_BIT_SW_POW_CLICK ); // いやなタイミングでPWSWを押すとHOMEメニューに入れてしまうのを回避するためのマスクタイマー - sw_pwsw_mukan_time = TIME_MUKAN_PWSW; + sw_pwsw_mukan_time = TIME_MUKAN_PWSW_RED_TRIAL; } } else if( SW_pow_count == ( HOLD_THREASHOLD ) ) @@ -158,26 +165,12 @@ void tsk_sw( ) count_sw_n( SW_POW_n, SW_pow_count, SW_pow_mask ); // ボタン押し時間のカウント - // HOME スイッチ // - switch( system_status.model ) - { - case( MODEL_JIKKI ): - case( MODEL_SHIROBAKO ): - SW_HOME_n = SW_HOME_n_JIKKI; // 接続先のポートが違うため - break; - case( MODEL_TS_BOARD ): - SW_HOME_n = SW_HOME_n_TSBOARD; - break; - default: - SW_HOME_n = 1; // 放されてる状態 - } - - - chk_clicked( SW_HOME_n, SW_home_count, REG_BIT_SW_HOME_CLICK ); + // HOME sw // + chk_clicked( SW_HOME_n, SW_home_count, REG_BIT_SW_HOME_CLICK ); chk_clicked( !SW_HOME_n, SW_home_count_rel, REG_BIT_SW_HOME_RELEASE ); // wifi sw // - /// 最悪な実装なのはわかっているが、メモリ不足と、市場に出てしまった不良スイッチを救うため + /// 最悪な実装なのはわかっているが、市場に出てしまった不良スイッチを救うため if( sw_wifi_mukan_time != 0 ) { sw_wifi_mukan_time--; @@ -192,3 +185,4 @@ void tsk_sw( ) } } } + diff --git a/trunk/task_debug.c b/trunk/task_debug.c index 1745e4e..54b594b 100644 --- a/trunk/task_debug.c +++ b/trunk/task_debug.c @@ -1,8 +1,12 @@ +#ifndef _WIN32 + #pragma SFR #pragma NOP #pragma HALT #pragma STOP +#endif + #include "incs_loader.h" //#include "incs.h" #include "renge\renge.h" @@ -39,20 +43,13 @@ void tsk_debug( ) static u8 count = 0; // デバッグLED(8bit)の初期化 temp = iic_mcu_read_a_byte( IIC_SLA_8LEDS, IIC_8LEDS_REG_DO ); - count += 1; + count ++; iic_mcu_write_a_byte( IIC_SLA_8LEDS, IIC_8LEDS_REG_DO, count ); iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 3, count ); } } */ -#ifdef _PMIC_TEST_ - if( ( system_status.pwr_state == ON ) || ( system_status.pwr_state == SLEEP ) ) - { - iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 0x03, 0 ); - } -#endif - // 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 ] ); @@ -103,7 +100,7 @@ task_interval tsk_hina( ) default: } - return ( 次の起 ・ョまでのシ ・X ・e ・ tick ・・); // 毎 tic 呼ばれることになります + return; // 毎 tic 呼ばれることになります } diff --git a/trunk/task_misc.c b/trunk/task_misc.c index 750c834..bcc8696 100644 --- a/trunk/task_misc.c +++ b/trunk/task_misc.c @@ -1,8 +1,12 @@ +#ifndef _WIN32 + #pragma SFR #pragma NOP #pragma HALT #pragma STOP +#endif + #include "incs.h" #include "renge\renge.h" #include "pm.h" @@ -48,12 +52,19 @@ // ======================================================== -bit twl_ver_read; -bit going_to_sleep; +bit twl_ver_read; // twl home menuがverを読んだら互換カーネルに割り込みを入れるため +bit going_to_sleep; // SoCから、sleepに入る通知をもらう。slp_i のH期間が0になると + // スリープから復帰できなくなるのを防ぐため -void update_LED_3D(); -void check_twl_vol_irq(); +// 自動テスト用 +bit reserve_pedo_increnent; + + +// ======================================================== +static void update_LED_3D(); +static void check_twl_vol_irq(); + /* ======================================================== @@ -71,7 +82,7 @@ void tsk_misc( ) if( ACC_VALID ) { if( renge_task_immed_add( tski_cbk_accero ) == ERR_SUCCESS ){ - // NOP(); + // dbg_nop(); } } @@ -84,7 +95,7 @@ void tsk_misc( ) if( !PM_IRQ_n ) { renge_task_immed_add( tski_ntr_pmic_comm ); - // NOP(); + // dbg_nop(); } /* ======================================================== @@ -102,6 +113,13 @@ void tsk_misc( ) // 3D ランプ更新 // update_LED_3D(); + + if( reserve_pedo_increnent ) + { + reserve_pedo_increnent = 0; + hosu_increment_if_necessary(); + } + } @@ -153,7 +171,7 @@ void update_LED_3D() { if( LED_duty_3d != 0 ) { - LED_duty_3d -= 1; + LED_duty_3d --; } } else @@ -162,12 +180,12 @@ void update_LED_3D() { if( LED_duty_3d < vreg_ctr[VREG_C_LED_BRIGHT] ) { - LED_duty_3d += 1; - } - else - { - LED_duty_3d -= 1; - } + LED_duty_3d ++; + } + else + { + LED_duty_3d --; + } } } } @@ -184,9 +202,13 @@ void update_LED_3D() ======================================================== */ task_status_immed tski_do_command0( ) { - // command0 本体電源など - u8 temp_command = vreg_ctr[VREG_C_COMMAND0]; + u8 temp_command; + + // command0 本体電源など + DI(); + temp_command = vreg_ctr[VREG_C_COMMAND0]; vreg_ctr[VREG_C_COMMAND0] = 0; + EI(); if( temp_command & REG_BIT_GOING_TO_SLEEP ) { @@ -243,11 +265,7 @@ task_status_immed tski_do_command0( ) -/* ======================================================== - 互換向け、TWLアプリへの割り込み - 仮想レジスタの書き込み時に行います。 - ======================================================== */ - +/* デバッグ・自動テスト用 ============================== */ u16 _dbg_rcomp; extern u8 raw_adc_temperature; @@ -272,45 +290,85 @@ extern bit bt_authorized; 10) system_status.family ======================================================== */ -#define KOUMOKU 9 -u8 extinfo_read() -{ - u8 infos[ KOUMOKU +1 ]; +#define KOUMOKU 19 - if( iic_burst_state > KOUMOKU ) +static u8 infos_bits[2]; +static u8 infos_temp[5]; + +static const u8 *infos_table[] = { + &infos_temp[0], /* 0 */ + &pmic_version, + (u8*)&battery_manufacturer, + &mgic_version[0], + &mgic_version[1], + &infos_temp[1], /* 5 */ + &raw_adc_temperature, + &infos_temp[2], + &infos_temp[3], + (u8*)&system_status.family, +// LED_pow_red, /* 10 */ + &infos_bits[0], + (u8*)&LED_duty_pow_blu, + (u8*)&LED_duty_3d, + (u8*)&LED_duty_notify_red, + (u8*)&LED_duty_notify_grn, + (u8*)&LED_duty_notify_blu, /* 15 */ + &infos_bits[1], +// &LED_CAM, + (u8*)&LED_duty_WiFi, + &infos_temp[4] /* 18 */ + /* 項目足すときは KOUMOKU に注意 */ +}; + + u8 extinfo_read(void) +{ + u8 ret = 0xFF; + + /* + * tempは計算処理が必要なデータ。メモリに余裕がないので計算が必要な + * 変数は、要/不要に関わらず計算するポリシー + */ + + if( iic_burst_state < KOUMOKU ) { - return( 0x73 ); + infos_temp[0] = system_status.captureBox? MODEL_CAPTURE_BOX + : ( system_status.is_dev? MODEL_ISBAKO: (u8)system_status.model ); + infos_temp[1] = (u8)( _dbg_rcomp & 0xFF ); + infos_temp[2] = ( !temp_zone_charge_disable | ( bt_authorized << 1 ) ); + infos_temp[3] = 1; /* 仕様変更により1固定になった */ + infos_temp[4] = 0 +// | ( PM_EXTDC_n ? REG_BIT_HAL0_PM_EXTDC_n : 0 ) // status0にある + | ( RBR_RESET_n ? REG_BIT_HAL0_PM_EXTDC_n : 0 ) // ↑空きを使わせてもらう + | ( BT_IN_CHG_n ? REG_BIT_HAL0_BT_IN_CHG_n : 0 ) + | ( BT_CHG_Ena_n ? REG_BIT_HAL0_RSV_5 : 0 ) // 空きビット使用,out pin + | 0 // WL_TX 使えない +// | ( SHELL_OPEN ? REG_BIT_HAL0_SHELL_OPEN : 0 ) // status0にある + | ( RBR_FLIGHT ? REG_BIT_HAL0_SHELL_OPEN : 0 ) // ↑空きを使わせてもらう + | ( SW_WIFI_n ? REG_BIT_HAL0_SW_WIFI_n : 0 ) + | ( SW_HOME_n ? REG_BIT_HAL0_SW_HOME_n : 0 ) + | ( SW_POW_n ? REG_BIT_HAL0_SW_POW_n : 0 ); + + infos_bits[0] = (u8)LED_pow_red; + infos_bits[1] = (u8)LED_CAM; + + ret = *infos_table[iic_burst_state]; + iic_burst_state ++; } - // static でとるほどのものでないので毎回スタックからとってくる - // switchとかにするとromが困る... なんだかなぁ。 - infos[0] = system_status.captureBox? MODEL_CAPTURE_BOX - : ( system_status.is_dev? MODEL_ISBAKO: (u8)system_status.model ); - infos[1] = pmic_version; - infos[2] = battery_manufacturer; - infos[3] = mgic_version[0]; - infos[4] = mgic_version[1]; - infos[5] = (u8)( _dbg_rcomp & 0xFF ); - infos[6] = raw_adc_temperature; - infos[7] = ( !temp_zone_charge_disable | ( bt_authorized << 1 ) ); - infos[8] = 1; // system_status.info_fullcolor; - infos[9] = system_status.family; - // 項目足すときは気をつけてね!! // - - iic_burst_state++; - return( infos[ iic_burst_state -1 ] ); + return ret; } + #ifdef i2c_timeout_test void i2c_mcu_error_monitor() - { - LED_duty_pow_blu = 0xff; - LED_duty_3d = 0xff; - LED_duty_notify_red = 0xff; - LED_duty_notify_grn = 0xff; - LED_duty_notify_blu = 0xff; - LED_pow_red = 1; - LED_CAM = 1; - } +{ + LED_duty_pow_blu = 0xff; + LED_duty_3d = 0xff; + LED_duty_notify_red = 0xff; + LED_duty_notify_grn = 0xff; + LED_duty_notify_blu = 0xff; + LED_pow_red = 1; + LED_CAM = 1; +} #endif diff --git a/trunk/task_status.c b/trunk/task_status.c index 03f74e5..0d07510 100644 --- a/trunk/task_status.c +++ b/trunk/task_status.c @@ -1,45 +1,37 @@ +#ifndef _WIN32 + #pragma SFR #pragma NOP #pragma HALT #pragma STOP +#endif + #include "incs_loader.h" #include "renge\renge.h" +#include "hal.h" + #include "pm.h" #include "accero.h" #include "adc.h" #include "i2c_mcu.h" - +#include "led.h" // ======================================================== #define INTERVAL_TSK_STATUS 4 -extern bit BT_CHG_STAT_Change; - - /* ======================================================== ステータスレジスタなど ======================================================== */ void tsk_status( ) { - static u8 interval_task_status = 0; static u8 state_old; // ステータス変化検出→割り込み の為 u8 diff; - if( interval_task_status != 0 ) - { - interval_task_status -= 1; - return; - } - else - { - interval_task_status = (u8)( INTERVAL_TSK_STATUS / SYS_INTERVAL_TICK ); - } - - // 蓋開けチェック + // 蓋開けチェック set_bit( SHELL_OPEN, vreg_ctr[VREG_C_STATUS], REG_BIT_ST_SHELL_OPEN ); // ステータスレジスタ関係 → 割り込み // @@ -57,8 +49,6 @@ void tsk_status( ) { if( diff & REG_BIT_BATT_CHARGE ) { - BT_CHG_STAT_Change = true; - // 充電状態に以下略 if( vreg_ctr[VREG_C_STATUS] & REG_BIT_BATT_CHARGE ) { diff --git a/trunk/task_sys.c b/trunk/task_sys.c index 2356647..5a44c0d 100644 --- a/trunk/task_sys.c +++ b/trunk/task_sys.c @@ -1,8 +1,12 @@ +#ifndef _WIN32 + #pragma SFR #pragma NOP #pragma HALT #pragma STOP +#endif + #include "incs.h" #include "i2c_twl.h" @@ -42,6 +46,10 @@ extern u8 chg_led_override; extern bit i2c_mcu_time_out_error; #endif + +//========================================================= +#define PWSW_POWON_TIME (u8)( 20 / SYS_INTERVAL_TICK ) // [ms] // INTERVAL_TSK_SW で割らない。値が元から小さいので + /* ======================================================== マイコン内部で必要なもの ・省電力に入れる @@ -50,59 +58,58 @@ extern bit i2c_mcu_time_out_error; ======================================================== */ void tsk_sys( ) { - static u8 timeout = 0; + static u8 pwsw_timeout = 0; // 電源ボタンチャタリング回避。 タイムアウトするまでに電源投入確定しないとoffに戻る - switch ( system_status.pwr_state ) + hal_update(); + + switch ( system_status.pwr_state ) { case ON_CHECK: //------------------------------------------------------- - // スイッチ操作などで割り込みが発生し、スリープが解除されるとここに来ます。 + // 他の割り込みでHALT(スリープ)が解除 / アダプタ有時 - if( system_status.poweron_reason == NONE ) + // 電源スイッチでHALT解除 // + if( system_status.poweron_reason == RSN_PWSW ) { - // スイッチで電源on - if( SW_pow_count != 0 ) - { - timeout = 0; - } - else - { - timeout += 1; - } + if( PM_EXTDC_n ) + { + // アダプタなし + if( SW_pow_count != 0 ) + { + pwsw_timeout = 0; + } + else + { + pwsw_timeout ++; + } - if( timeout > 100 ) - { - system_status.pwr_state = OFF; // スイッチはノイズだった。寝る。 - renge_task_interval_run_force = true; - return; - } + if( pwsw_timeout > 100 ) + { + SW_pow_count = 0; + system_status.pwr_state = OFF_TRIG; // スイッチはノイズだった。寝る。 + renge_task_interval_run_force = true; + return; + } + } + else + { + BT_chk(); // 要ポーリング。電池抜かれ検出のため。(必要だったらI2C_m_init呼んでます) + } - if( SW_pow_count < 10 ) - { - // もう少しスイッチの様子を見る - return; - } - // 電源投入 - system_status.poweron_reason = PWSW; + if( SW_pow_count < PWSW_POWON_TIME ) + { + // 押し時間が短くて電源onに到達していない + return; + } } + // else { if( system_status.poweron_reason == RSN_TRIAL、… ) 電源投入 } - SW_pow_mask = true; - - timeout = 0; - - // for debug -#ifdef _DEBUG_BT_FUEL_ - vreg_ctr[ VREG_C_DBG01 ] = 99; -#endif -#ifdef _DEBUG_BT_TEMP_ - vreg_ctr[ VREG_C_DBG01 ] = 0x80; -#endif - vreg_ctr[ VREG_C_COMMAND3 ] = 0; + SW_pow_mask = true; // pwsw押しっぱなしで電源入/切 を繰り返さないように // 電源投入 // iic_mcu_start( ); bt_force_update = false; - BT_chk(); // 実機やバッテリの判定、電池残量ICの設定 + BT_chk(); // 実機やバッテリの判定、電池残量ICの設定 #ifndef _ALLOW_NOBATT_ if( system_status.model == MODEL_JIKKI_NOBATT ) @@ -117,8 +124,8 @@ void tsk_sys( ) BT_get_left(); // 先に、BT_chk()が実行されている必要があります。 if( // ( vreg_ctr[VREG_C_BT_REMAIN] < 1 ) // こっちで判定すると電池がほとんど無いときに -// && // アダプタ差しても数分起動できなくなっちゃう - ( vreg_ctr[VREG_C_BT_VOLTAGE] < ( V_TH_ZERO / 256 ) ) +// // アダプタ差しても数分起動できなくなっちゃう + (( vreg_ctr[VREG_C_BT_VOLTAGE] < ( V_TH_ZERO / 256 ) ) && PM_EXTDC_n ) // 電池空っぽ && アダプタなし ) { // 電池が少ないので起動させない(電圧チェックもされてる) @@ -127,15 +134,15 @@ void tsk_sys( ) return; } - // ポートの設定 電源入れる前に。 - PM7.4 = 1; // SW_wifi - PM20.4 = 1; // sw_home - PM20.3 = 1; // wl_tx - PM2.3 = 1; // key_sel - PM2.5 = 1; // acc_valid1 - PM14.1 = 1; // acc_valid2 + // ポートの方向設定 電源入れる前に。 + PM_SW_WIFI_n = 1; + PM_SW_HOME_n_JIKKI = 1; + PM_WL_TX = 1; + PM_SW_SEL_n = 1; + PM_ACCEL_INT1 = 1; + PM_ACC_VALID = 1; - if( PM_sys_pow_on( ) != ERR_SUCCESS ) + if( PM_sys_pow_on( ) != ERR_SUCCESS ) // リセット解除もしてきます { // 電源起動不可エラー renge_task_interval_run_force = true; system_status.pwr_state = OFF_TRIG; @@ -143,12 +150,13 @@ void tsk_sys( ) } // ここまで来ると、電源投入確定 // + // プルアップon + PU_BT_IN_CHG_n = 1; + PU7 = bits8(0,0,0,1, 1,1,0,1); // 4:SW_WIFI 3:SW_PWSW 2:PM_IRQ 0:PM_EXTDC_n + PU_SW_HOME_n_JIKKI = 1; // SW_HOME - PU5.1 = 1; // 1:PM_CHARGE - PU7 = 0b00011101; // 4:SW_WIFI 3:SW_PWSW 2:PM_IRQ 0:PM_EXTDC_n - PU20.4 = 1; // SW_HOME - - if( system_status.poweron_reason == PWSW ) + if( system_status.poweron_reason == RSN_PWSW || + system_status.poweron_reason == RSN_TRIAL ) { // 電源ボタンでのonの時は、LEDを点灯させる vreg_ctr[VREG_C_LED_POW] = LED_POW_ILM_AUTO; @@ -183,7 +191,7 @@ void tsk_sys( ) vreg_twl_init( ); vreg_ctr_reset( ); - KRM = 0b00000000; + KRM = bits8(0,0,0,0, 0,0,0,0); PIF0 = 0; system_status.poweron_reason = NONE; @@ -194,13 +202,13 @@ void tsk_sys( ) iic_mcu_start(); -#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 + + // todo 将来的には完全にレジスタ制御に + RBR_RESET_n = 1; + RBR_FLIGHT = 0; // リブート時、ステータスを何となく更新 if( system_status.reboot ) @@ -236,7 +244,7 @@ void tsk_sys( ) // SLP監視 if( going_to_sleep ) // 絶対に SLP_REQ の前に予告が来る { - timeout_sleep += 1; + timeout_sleep ++; if( timeout_sleep == 0 || // オーバーフローを期待。sleepするって言ったけど一瞬で起きて気がつかなかった ( PIF0 && !SLP_REQ )) // slp割り込みが入った気がしたが、もう起きてしまった { @@ -290,9 +298,10 @@ void tsk_sys( ) #endif default: //--------------------------------------- - system_status.pwr_state = OFF_TRIG; - // no break // - case OFF_TRIG: //--------------------------------------- + system_status.pwr_state = OFF_TRIG; // あり得ないステート。デバッグ用 + /* FALLTHROUGH */ + + case OFF_TRIG: //--------------------------------------- // LED消灯を待つ vreg_ctr[ VREG_C_LED_POW ] = LED_POW_ILM_OFF; vreg_ctr[ VREG_C_LED_WIFI ] = WIFI_LED_OFF; @@ -313,7 +322,11 @@ void tsk_sys( ) IIC_twl_Stop( ); RTC_32k_off(); - vreg_ctr[VREG_C_IRQ0] = 0; + // todo マクロにでもするよ + RBR_RESET_n = 0; + RBR_FLIGHT = 0; + + vreg_ctr[VREG_C_IRQ0] = 0; vreg_ctr[VREG_C_IRQ1] = 0; vreg_ctr[VREG_C_IRQ2] = 0; vreg_ctr[VREG_C_IRQ3] = 0; @@ -329,12 +342,12 @@ void tsk_sys( ) KRM = ( KR_SW_POW ); // Mask ではなく、Modeなのだそうだ。紛らわしい MK0 = ~( INT_MSK0_EXTDC ); - MK1 = ~( INT_MSK1_KR | INT_MSK1_RTCALARM | INT_MSK1_RTCINTVAL ); - MK2L = 0b11111111; + MK1 = ~( INT_MSK1_KR | INT_MSK1_RTCINTVAL ); // INT_MSK1_RTCALARM | RTCアラーム封印中 + MK2L = 0xFF; // PU5 そのまま - PU7 = 0b00001001; // PWSWI,PM_EXTTDC,( IRQ0_deactive(), PM_IRQ_deactive ) - PU20.4 = 0; // SW_HOME 停止 + PU7 = bits8(0,0,0,0, 1,0,0,1); // PWSWI,PM_EXTTDC,( IRQ0_deactive(), PM_IRQ_deactive ) + PU_SW_HOME_n_JIKKI = 0; // SW_HOME 停止 IF0 = 0; IF1 = 0; @@ -342,68 +355,62 @@ void tsk_sys( ) IRQ0_disable; - PM_sys_pow_off( ); + PM_sys_pow_off( ); // 電源カットオフ - P7.4 = 0; // SW_wifi - PM7.4 = 0; + // ポート類を停止モードに。こういう回路でも、L出力にしなきゃだめだそうな。 + SW_WIFI_n_RAW = 0; + PM_SW_WIFI_n = 0; - P20.4 = 0; // sw_home - PM20.4 = 0; + SW_HOME_n_JIKKI_RAW = 0; + PM_SW_HOME_n_JIKKI = 0; - P20.3 = 0; // WL_TX - PM20.3 = 0; + WL_TX = 0; + PM_WL_TX = 0; - P2.3 = 0; // KEY_SEL - PM2.3 = 0; - P2.5 = 0; // ACC_ready1 - PM2.5 = 0; - P14.1 = 0; // ACC_ready2 - PM14.1 = 0; + SW_SEL_n = 0; + PM_SW_SEL_n = 0; - iic_mcu_stop( ); + ACCEL_INT1 = 0; + PM_ACCEL_INT1 = 0; + ACC_VALID = 0; + PM_ACC_VALID = 0; system_status.pwr_state = OFF; SW_pow_mask = true; SW_pow_count = 0; - - // no break // + // HALデバッグリセット 忘れると電源on出来なくなることが… + hal_reset(); + /* FALLTHROUGH */ case OFF: - system_status.poweron_reason = NONE; - if( !PM_EXTDC_n ) + // 注:現状では電源ボタンしか電源投入はありません。 + + system_status.poweron_reason = NONE; + pwsw_timeout = 0; + + if( !PM_EXTDC_n + || chg_led_override != 0 ) // これがゼロになるまで待つ { - // アダプタが刺さってるときはこのブロックを繰り返す。 - BT_chk(); // 要ポーリング(電池抜かれ検出のため) - // ↑の中で必要だったらI2C_m_init呼んでます + // アダプタ有り /////////////////////////////// または、アダプタさして3秒は充電LEDを点けている期間 - // アダプタ有り:充電温度監視 - if( SW_pow_count >= 10 ) // 電源スイッチが押されるのを待つ - { - // 電源投入 - system_status.pwr_state = ON_CHECK; - } - - if( system_status.model != MODEL_JIKKI ) - { - iic_mcu_stop( ); - } + // 電源ボタン押しチェックへ + SW_pow_mask = false; + system_status.poweron_reason = RSN_PWSW; + system_status.pwr_state = ON_CHECK; + // 試遊台なら自動で電源再投入 if( system_status.taikendai ) { - // 電源投入 - wait_ms(46); - system_status.poweron_reason = PWSW; + vreg_ctr[ VREG_C_HAL_OVW_CONT0 ] = vreg_ctr[ VREG_C_HAL_OVW_CONT1 ] = 0; + wait_ms(46); // pmicの電源再投入仕様のため + system_status.poweron_reason = RSN_TRIAL; system_status.pwr_state = ON_CHECK; } } else { - // アダプタなし - if( chg_led_override != 0 ) // これがゼロになるまで待つ - { - return; - }; + // アダプタなし /////////////////////////////// // 省電力へ移行 iic_mcu_stop( ); @@ -415,36 +422,84 @@ void tsk_sys( ) {;} // 割り込み待ちで寝る // - RTCIMK = 1; + RTCIMK = 1; // systick用インターバルタイマー割り込みマスク - CKC = 0b00001001; + CKC = bits8(0,0,0,0, 1,0,0,1); OSMC = 0x00; - - if( PM_EXTDC_n ) // きわどいタイミングで挿抜が起きることがある +#ifdef _DBG_CHK_OFF_LEAK_ { - STOP( ); + // off中のpin設定ミスチェック + volatile u8 ports_i[12]; + volatile u8 ports_o[12]; + + ports_i[0] = ( PM0 & PU0 & ~P0 ); // プルアップ切り忘れ? + ports_i[1] = ( PM1 & PU1 & ~P1 ); + ports_i[2] = 0; + ports_i[3] = ( PM3 & PU3 & ~P3 ); + ports_i[4] = ( PM4 & PU4 & ~P4 ); + ports_i[5] = ( PM5 & PU5 & ~P5 ); + ports_i[6] = 0; + ports_i[7] = ( PM7 & PU7 & ~P7 ); + ports_i[8] = ( PM12 & PU12 & ~P12 ); + ports_i[9] = ( PM14 & PU14 & ~P14 ); + ports_i[10] = 0; + ports_i[11] = ( PM20 & PU20 & ~P20 ); + + ports_o[0] = ( ~PM0 & P0 ); // H 出力しちゃってるかも + ports_o[1] = ( ~PM1 & P1 ); + ports_o[2] = ( ~PM2 & P2 ); + ports_o[3] = ( ~PM3 & P3 & ~POM3 ); + ports_o[4] = ( ~PM4 & P4 ); // bit3はchg_enなので1でもよい + ports_o[5] = ( ~PM5 & P5 ); + ports_o[6] = ( ~PM6 & P6 ); + ports_o[7] = ( ~PM7 & P7 ); + ports_o[8] = ( ~PM12 & P12 ); + ports_o[9] = ( ~PM14 & P14 ); + ports_o[10] = ( ~PM15 & P15 ); + ports_o[11] = ( ~PM20 & P20 ); + NOP(); // ←ブレーク置くため } - // 起きる // +#endif + if( PM_EXTDC_n ) // きわどいタイミングで挿抜が起きることがある + { + STOP(); + } + + // 起きる // // 起きる条件は // ・KeyReturn割り込み(電源ボタン) - // ・アダプタ挿抜 + // ・RTCアラーム(現在封印) - OSMC = 0x01; - CKC = 0b00001000; + renge_flg_interval = 0; + hal_update(); - if( PM_EXTDC_n ) - { - // 電源ボタンで起きたとき - SW_pow_mask = false; - system_status.pwr_state = ON_CHECK; - timeout = 0; - } - // else{ - // アダプタで起きたときは OFF の中をぐるぐるまわる + OSMC = 0x01; + CKC = bits8(0,0,0,0, 1,0,0,0); + + // 起きた理由は? + if( !PM_EXTDC_n ){ + system_status.pwr_state = OFF; // 一回回ってきて、ON_CHECKに行く + } +/* // RTCアラーム。封印中 + else if( vreg_ctr[ VREG_C_IRQ1 ] & REG_BIT_RTC_ALARM ) + { + system_status.poweron_reason = RSN_RTC_ALARM; + system_status.pwr_state = ON_CHECK; + } + // else if( 他の割り込みで電源on ){ + // 現状他の要因では起きない // } +*/ + else // if( !SW_POW_n ) // (それ以外なら)電源ボタンで起きた + { + SW_pow_mask = false; + system_status.poweron_reason = RSN_PWSW; + system_status.pwr_state = ON_CHECK; + } - RTCIMK = 0; + RTCIMK = 0; // sys tick タイマー有効 + if( system_status.taikendai ) { system_status.pwr_state = OFF_TRIG; @@ -515,14 +570,14 @@ static void chk_emergencyExit(){ { if( !RESET1_n ) { - if( shirobako_power_control_count != 255 ) - shirobako_power_control_count += 1; + if( shirobako_power_control_count != 255 ) + shirobako_power_control_count ++; } else { // (TSボードで手動で/デバッガが)リセットをかけたらしい send_cmd_pmic( PM_REG_ADRS_BL, 0 ); - vreg_ctr[VREG_C_STATUS] = ( vreg_ctr[VREG_C_STATUS] & 0b10011111 ); + vreg_ctr[VREG_C_STATUS] = ( vreg_ctr[VREG_C_STATUS] & bits8(1,0,0,1, 1,1,1,1) ); vreg_ctr[VREG_C_COMMAND0] |= REG_BIT_RESET1_REQ; renge_task_immed_add( tski_do_command0 ); shirobako_power_control_count = WAIT_SHIROBAKO_POW_CONTROL; @@ -568,9 +623,9 @@ void send_getup_to_soc() -/*******************************************************//** +/* ======================================================== firm_update()を task_status_immed型 を返すようにすればいいのですが... - **********************************************************/ + ======================================================== */ task_status_immed tski_firm_update(){ firm_update(); return( ERR_SUCCESS ); diff --git a/trunk/user_define.h b/trunk/user_define.h index 1906ca2..701ee3a 100644 --- a/trunk/user_define.h +++ b/trunk/user_define.h @@ -8,14 +8,20 @@ //#define IIC_SLA_DCP 0x50 +#define bits8(a,b,c,d,e,f,g,h) ( a<<7 | b<<6 | c<<5 | d<<4 | e<<3 | f<<2 | g<<1 | h ) + +#ifndef _WIN32 +// 実機環境 + #ifdef _debug_led_ +/*spfl対応以降、ncでなくなるので使えません # define DBG_LED_on { PM2.1 = 0; P2.1 = 1; } # define DBG_LED_off { P2.1 = 0; } # define DBG_LED_toggle ( P2.1 ^= 1 ) # define DBG_LED2_on { PM2.2 = 0; P2.2 = 1; } # define DBG_LED2_off { P2.2 = 0; } # define DBG_LED2_toggle ( P2.2 ^= 1 ) - +*/ #else # define DBG_LED_on ; # define DBG_LED_off ; @@ -23,51 +29,31 @@ # define DBG_LED2_on ; # define DBG_LED2_off ; # define DBG_LED2_toggle ; -#endif - -#ifdef _PMIC_CTR_ -# define SLP_ACK P7.7 -#endif - +#endif // _debug_led_ #define IIC_SLA_CODEC 0xA4 #define IIC_SLA_ACCEL 0x30 // ST LIS331DLH +#define SLP_ACK P7.7 + + // PMxは0で出力モード // SoC -#ifdef _MODEL_TEG2_ -#define IRQ0_ast { P3.0 = 0; PM3.0 = 0; } -#define IRQ0_neg { PM3.0 = 1; } -#define IRQ0 ( P3.0 ) -#endif -#ifdef _MODEL_WM0_ -#define IRQ0_ast { P3.0 = 0; PM3.0 = 0; } -#define IRQ0_neg { PM3.0 = 1; } -#define IRQ0 ( P3.0 ) -#endif - -#ifdef _MODEL_TS0_ -#define IRQ0_ast { P7.6 = 0; PM7.6 = 0; } -#define IRQ0_neg { PM7.6 = 1; } -#define IRQ0 ( P7.6 ) -#endif -#ifdef _MODEL_CTR_ #define IRQ0_ast { P7.6 = 0; PM7.6 = 0; } #define IRQ0_neg { P7.6 = 1; } #define IRQ0_enable { PM7.6 = 0; } #define IRQ0_disable { PM7.6 = 1; } #define IRQ0 ( P7.6 ) -#endif // ↓誤代入防止 #define RESET1_n ( P0.0 ) #if 0 // PM_RESET1〜を使う -#define RESET1_ast { P0.0 = 0; PM0.0 = 0; } -#define RESET1_neg { PM0.0 = 1; } +# define RESET1_ast { P0.0 = 0; PM0.0 = 0; } +# define RESET1_neg { PM0.0 = 1; } #endif #define RESET2_ast { P0.1 = 0; PM0.1 = 0; } @@ -83,35 +69,16 @@ #define DEV_RSV2 ( 0b11 << 1 ) // FCRAM -#ifdef _MODEL_TEG2_ -#define FCRAM_RST P14.0 -#define FCRAM_RST_ast { P14.0 = 0; } -#define FCRAM_RST_neg { P14.0 = 1; } -#endif -#ifdef _MODEL_WM0_ -#define FCRAM_RST P14.0 -#define FCRAM_RST_ast { P14.0 = 0; } -#define FCRAM_RST_neg { P14.0 = 1; } -#endif - -#ifdef _MODEL_TS0_ #define FCRAM_RST P3.0 #define FCRAM_RST_ast { P3.0 = 0; } #define FCRAM_RST_neg { P3.0 = 1; } -#endif -#ifdef _MODEL_CTR_ -#define FCRAM_RST P3.0 -#define FCRAM_RST_ast { P3.0 = 0; } -#define FCRAM_RST_neg { P3.0 = 1; } -#endif - // CODEC #define PM_IRQ_n P7.2 // INTP6 // PM -#define PM_EXTDC_n P7.0 +#define PM_EXTDC_n_RAW P7.0 // INTP7 //#define BT_TEMP P15.0 // ANI8 @@ -132,26 +99,35 @@ #define BT_CHG_Ena_n ( P4.3 ) // 充電中(in) -#define BT_IN_CHG_n P5.1 +#define BT_IN_CHG_n_RAW P5.1 +#define PM_BT_IN_CHG_n PM5.1 +#define PU_BT_IN_CHG_n PU5.1 -#define SW_WIFI_n P7.4 +#define SW_WIFI_n_RAW P7.4 +#define PM_SW_WIFI_n PM7.4 // KR4 -#define SW_POW_n P7.3 +#define SW_POW_n_RAW P7.3 // KR3 -#define SW_SEL_n P2.3 +#define SW_SEL_n P2.3 +#define PM_SW_SEL_n PM2.3 //#define VOL P2.7 // ANI7 -#define SW_HOME_n_JIKKI P20.4 +#define SW_HOME_n_JIKKI_RAW P20.4 +#define PM_SW_HOME_n_JIKKI PM20.4 +#define PU_SW_HOME_n_JIKKI PU20.4 + // INTP22 -#define SW_HOME_n_TSBOARD P2.0 +#define SW_HOME_n_TSBOARD_RAW P2.0 // TSマザー上でpull up(P2は内蔵p.u.無い) +#define PM_SW_HOME_n_TSBOARD PM2.0 // WiFi -#ifndef _TEG_ #define WL_TX P20.3 // INTP21 -#else -#define WL_TX P20.3 // INTP21 -#endif +#define PM_WL_TX PM20.3 // INTP21 + +// RBR制御 +#define RBR_RESET_n P2.1 +#define RBR_FLIGHT P2.2 //#define LED_CAM P1.0 // TO02 //#define LED_WIFI P1.1 // TO03 @@ -161,36 +137,13 @@ //#define LED_POW1 P1.5 // TO07 ( 赤 ) //#define LED_CHARGE P2.4 - -#ifdef _MODEL_TEG2_ -#define I2C_PU_on() P5.3 = 1 -#define I2C_PU_off() P5.3 = 0 -#endif - -#ifdef _MODEL_TS0_ -#define I2C_PU_on() P5.3 = 1 -#define I2C_PU_off() P5.3 = 0 -#endif - -#ifdef _MODEL_WM0_ -#define I2C_PU_on() P5.3 = 1 -#define I2C_PU_off() P5.3 = 0 -#endif - -#ifdef _MODEL_CTR_ // P5.3 に加え、P5.5, P140 P141 // P140が出力専用なので... -#define I2C_PU_on() { PM5.3 = 1; PM3.3 = 1; P14 |= 0x03; P5.3 = 1; PM5.3 = 0; P3.3 = 1; PM3.3 = 0; } -#define I2C_PU_off() { PM5.3 = 1; PM3.3 = 1; P14 &= ~0x03; P5.3 = 0; PM5.3 = 0; P3.3 = 0; PM3.3 = 0; } -#endif +#define I2C_PU_on() { P14 |= 0x03; PM5.3 = 0; PM3.3 = 0; } +#define I2C_PU_off() { PM5.3 = 1; PM3.3 = 1; P14 &= ~0x03; } -#ifdef _MODEL_CTR_ #define GYRO_ENABLE() P5.0 = 0 #define GYRO_DISABLE() P5.0 = 1 -#else -#define GYRO_ENABLE() ; -#define GYRO_DISABLE() ; -#endif //#define I2C_M_SDA P3.1 // SDA10 //#define I2C_M_SCL P3.2 // SCL10 @@ -213,46 +166,47 @@ #define DIPSW_TAIKENDAI_NBD 0b01 -#ifndef _MODEL_WM0_ -#define SHELL_OPEN P7.1 // INTP5 ふた開閉 (閉じるとL) -#else -#define SHELL_OPEN 1 -#endif +#define SHELL_OPEN_RAW P7.1 // INTP5 ふた開閉 (閉じるとL) -//#define DBG_VR P2.6 -// ANI6 - -#define DBG P14.1 - -#ifdef _MODEL_TEG2_ -#define ACC_VALID P15.2 -#define ACCEL_INT1 P2.5 -#endif - -#ifdef _MODEL_TS0_ -#define ACC_VALID P20.5 -#define ACCEL_INT1 P2.5 -#endif - -#ifdef _MODEL_WM0_ -// テレコになっていたが、センサ側の設定を変えたため、TS0と同じでよい -#define ACC_VALID P20.5 -#define ACCEL_INT1 P2.5 -#endif - -#ifdef _MODEL_CTR_ -#define ACC_VALID P20.5 -#define ACCEL_INT1 P2.5 -#endif +#define ACC_VALID P20.5 +#define PM_ACC_VALID PM20.5 +#define ACCEL_INT1 P2.5 +#define PM_ACCEL_INT1 PM2.5 +#endif // _WIN32 + +// win32 sim環境と共通 #define KR_SW_POW ( 1 << 3 ) #define KR_SW_WIFI ( 1 << 4 ) - /////////////////////////////////////////////////////////// +#define INT_MSK0_IIC_M_DMA 1<<12 +#define INT_MSK0_SHELL 1<<7 +#define INT_MSK0_EXTDC 1<<6 +//#define INT_MSK0_SLP 1<<2 +#define INT_MSK0_RSV ~( INT_MSK0_IIC_M_DMA | INT_MSK0_SHELL | INT_MSK0_EXTDC ) + +#define INT_MSK1_KR 1<<11 +#define INT_MSK1_RTCINTVAL 1<<10 +#define INT_MSK1_RTCALARM 1<<9 +#define INT_MSK1_ADC 1<<8 +#define INT_MSK1_IIC_CTR 1<<3 +#define INT_MSK1_IIC_MCU 1<<0 +#define INT_MSK1_RSV ~( INT_MSK1_KR | INT_MSK1_RTCINTVAL | INT_MSK1_RTCALARM | INT_MSK1_ADC \ + | INT_MSK1_IIC_CTR | INT_MSK1_IIC_MCU ) + +#define INT_MSK2_WIFI_TX_KE3 1<<4 +#define INT_MSK2L_RSV ~( INT_MSK2_WIFI_TX_KE3 ) + +#define INT_MSK2_IIC_TWL 1<<8 +#define INT_MSK2_WIFI_TX_BSR 1<<10 +#define INT_MSK2_CODEC_PMIRQ 1<<3 +#define INT_MSK2_RSV ~( INT_MSK2_IIC_TWL | INT_MSK2_WIFI_TX_BSR | INT_MSK2_CODEC_PMIRQ ) + +#if 0 #define INT_MSK0_IIC_M_DMA 0b0001000000000000 #define INT_MSK0_SHELL 0b0000000010000000 #define INT_MSK0_EXTDC 0b0000000001000000 @@ -275,5 +229,6 @@ #define INT_MSK2_WIFI_TX_BSR ( 0b0000010000000000 ) #define INT_MSK2_CODEC_PMIRQ ( 0b0000000000001000 ) #define INT_MSK2_RSV 0b1111101111110111 +#endif // 0 -#endif +#endif // dupe include guard diff --git a/trunk/voltable.c b/trunk/voltable.c new file mode 100644 index 0000000..2aedcf0 --- /dev/null +++ b/trunk/voltable.c @@ -0,0 +1,48 @@ +#include "incs.h" + +#define _10db_ + +#ifdef _10db_ +// max -10db +const u8 slider_to_codec[64] = +{ + 127, 126, 125, 124, 122, 121, 120, 119, + 118, 117, 116, 114, 113, 112, 111, 110, + 109, 108, 106, 105, 104, 103, 102, 101, + 100, 98, 97, 96, 95, 94, 93, 92, + 90, 89, 88, 87, 86, 85, 83, 82, + 81, 80, 79, 78, 77, 75, 74, 73, + 73, 72, 71, 70, 69, 67, 66, 65, + 64, 63, 62, 61, 59, 58, 57, 56 + }; +#endif + +#ifdef _15db_ +// max -15db +const u8 slider_to_codec[64] = +{ + 127, 127, 127, 127, 127, 126, 125, 123, + 122, 121, 120, 119, 118, 117, 116, 115, + 114, 113, 112, 110, 109, 108, 107, 106, + 105, 104, 103, 102, 101, 100, 99, 97, + 96, 95, 94, 93, 92, 91, 90, 89, + 88, 87, 86, 85, 84, 83, 82, 81, + 80, 79, 78, 77, 76, 75, 74, 73, + 71, 70, 69, 68, 67, 66, 66, 66 +}; +#endif + +#ifdef _4db_ +// max -4db +const u8 slider_to_codec[64] = +{ + 127, 127, 126, 125, 123, 122, 121, 119, + 118, 117, 115, 114, 112, 111, 110, 108, + 107, 106, 104, 103, 101, 100, 99, 97, + 96, 94, 93, 92, 90, 89, 88, 86, + 85, 83, 82, 81, 79, 78, 77, 75, + 74, 72, 71, 70, 68, 67, 66, 64, + 64, 63, 61, 60, 59, 57, 56, 54, + 53, 52, 50, 49, 48, 46, 44, 44 +}; +#endif diff --git a/trunk/vreg_ctr.c b/trunk/vreg_ctr.c index 0df1fcc..3edd8b9 100644 --- a/trunk/vreg_ctr.c +++ b/trunk/vreg_ctr.c @@ -12,6 +12,7 @@ CTR MCU I2C #include "pool.h" #include + #include "fsl_user.h" @@ -21,6 +22,7 @@ extern u8 iic_burst_state; // extern bit info_led_pattern_updated; // お知らせLEDのパターンを先頭に戻す extern bit pedolog_overflow; +extern bit reserve_pedo_increnent; @@ -31,8 +33,7 @@ u8 vreg_ctr[VREG_C_ENDMARK_ + 16]; u8 vreg_ctr[VREG_C_ENDMARK_]; #endif -u8 vreg_free_adrs; // アドレス飛んでるのでしばらくはこれで - +static u8 vreg_free_adrs; // アドレス飛んでるのでしばらくはこれで bit irq_readed; // AAA型のため。 @@ -62,6 +63,7 @@ void vreg_ctr_init( ) vreg_ctr[ VREG_C_VOL_CAL_MIN ] = 0x36; vreg_ctr[ VREG_C_VOL_CAL_MAX ] = 0xFF - 0x36; + vreg_ctr[ VREG_C_RBR_CONTROL ] = REG_BIT_RESET_n; // todo | REG_BIT_FLIGHT; } @@ -77,7 +79,6 @@ void vreg_ctr_reset( ) vreg_ctr[ VREG_C_LED_WIFI ] = 0; vreg_ctr[ VREG_C_LED_CAM ] = 0; vreg_ctr[ VREG_C_LED_3D ] = 0; - vreg_ctr[ VREG_C_VOL_OPTION ] = 0; // vreg_ctr[ VREG_C_VOL_CAL_MIN ] = 0x36; ここで書いちゃダメ! // vreg_ctr[ VREG_C_VOL_CAL_MAX ] = 0xFF - 0x36; 電源入れるたびにデフォルト値になってしまう { @@ -104,7 +105,8 @@ void vreg_ctr_write( u8 adrs, u8 data ) case ( VREG_C_MCU_STATUS ): // vreg_twl[ REG_TWL_INT_ADRS_MODE ] = (u8)( ( data >> 6 ) & 0x03 ); Rでよい。その代わりリセットでクリア - vreg_ctr[ VREG_C_MCU_STATUS ] = data; + vreg_ctr[ VREG_C_MCU_STATUS ] &= data; // bitクリアはするがセットはしない。 + // 上の方のtwlレジスタミラーは読み出され時に合成 break; case ( VREG_C_VCOM_T ): @@ -128,8 +130,8 @@ void vreg_ctr_write( u8 adrs, u8 data ) if( data != 0 ) { renge_task_immed_add( tski_do_command0 ); + vreg_ctr[ VREG_C_COMMAND0 ] |= data; } - vreg_ctr[ VREG_C_COMMAND0 ] |= data; break; case ( VREG_C_COMMAND2 ): @@ -156,19 +158,21 @@ void vreg_ctr_write( u8 adrs, u8 data ) case ( VREG_C_COMMAND1 ): if( data != 0 ) { + // u8 temp; 中間変数使ったらばかでかくなった... // TWLに割り込みを入れる /// 実際に割り込みを入れるのはSoC - vreg_twl[REG_TWL_INT_ADRS_IRQ] = ( ( data & REG_BIT_SEND_TWL_PWSW_DET ) != 0 ) ? REG_BIT_TWL_IRQ_PWSW_DET : 0x00; //pwsw_det - vreg_twl[REG_TWL_INT_ADRS_IRQ] |= ( ( data & REG_BIT_SEND_TWL_RESET_DET ) != 0 ) ? REG_BIT_TWL_IRQ_RESET : 0x00; //reset_req + /// ビットの並びが違うから面倒 + vreg_twl[ REG_TWL_INT_ADRS_IRQ ] = ( ( data & REG_BIT_SEND_TWL_PWSW_DET ) != 0 ) ? REG_BIT_TWL_IRQ_PWSW_DET : 0x00; //pwsw_det + vreg_twl[ REG_TWL_INT_ADRS_IRQ ] |= ( ( data & REG_BIT_SEND_TWL_RESET_DET ) != 0 ) ? REG_BIT_TWL_IRQ_RESET : 0x00; //reset_req - vreg_twl[REG_TWL_INT_ADRS_IRQ] |= ( ( data & REG_BIT_SEND_TWL_OFF_DET ) != 0 ) ? REG_BIT_TWL_IRQ_OFF : 0x00; //off_req + vreg_twl[ REG_TWL_INT_ADRS_IRQ ] |= ( ( data & REG_BIT_SEND_TWL_OFF_DET ) != 0 ) ? REG_BIT_TWL_IRQ_OFF : 0x00; //off_req - vreg_twl[REG_TWL_INT_ADRS_IRQ] |= ( ( data & REG_BIT_SEND_TWL_BATT_LOW ) != 0 ) ? REG_BIT_TWL_IRQ_BT_LOW : 0x00; //batt_low - vreg_twl[REG_TWL_INT_ADRS_IRQ] |= ( ( data & REG_BIT_SEND_TWL_BATT_EMPTY ) != 0 ) ? REG_BIT_TWL_IRQ_BT_EMPTY : 0x00; //batt_empty + vreg_twl[ REG_TWL_INT_ADRS_IRQ ] |= ( ( data & REG_BIT_SEND_TWL_BATT_LOW ) != 0 ) ? REG_BIT_TWL_IRQ_BT_LOW : 0x00; //batt_low + vreg_twl[ REG_TWL_INT_ADRS_IRQ ] |= ( ( data & REG_BIT_SEND_TWL_BATT_EMPTY ) != 0 ) ? REG_BIT_TWL_IRQ_BT_EMPTY : 0x00; //batt_empty if(( data & REG_BIT_SEND_TWL_VOL_CLICK ) != 0 ) { - vreg_twl[REG_TWL_INT_ADRS_IRQ] |= REG_BIT_TWL_IRQ_VOL_CHANGE; //vol_changed + vreg_twl[ REG_TWL_INT_ADRS_IRQ ] |= REG_BIT_TWL_IRQ_VOL_CHANGE; //vol_changed } } break; @@ -177,12 +181,12 @@ void vreg_ctr_write( u8 adrs, u8 data ) if( iic_burst_state == 0 ) { vreg_ctr[ VREG_C_LED_POW ] = data; - iic_burst_state += 1; + iic_burst_state ++; } else if( iic_burst_state < 5 ) { led_red_batt_empty.dats[ iic_burst_state -1 ] = data; - iic_burst_state += 1; + iic_burst_state ++; } break; @@ -200,13 +204,13 @@ void vreg_ctr_write( u8 adrs, u8 data ) data = 1; } info_LED.bindata[ iic_burst_state ] = data; - iic_burst_state += 1; + iic_burst_state ++; if( iic_burst_state > 4 ) // パターンを1文字でも書いた { info_led_pattern_updated = true; } } - break; + break; /// 非同期で動いているためここでは書かない。 // 予約するだけでstopで書く @@ -294,7 +298,7 @@ void vreg_ctr_write( u8 adrs, u8 data ) if( vreg_free_adrs < VREG_C_FREE_SIZE ) { pool.vreg_c_ext.vreg_c_free[ vreg_free_adrs ] = data; - vreg_free_adrs += 1; + vreg_free_adrs ++; } break; @@ -322,66 +326,93 @@ void vreg_ctr_write( u8 adrs, u8 data ) // mcu_wdt_reset; // このコマンド使ったら意味ないでしょ! break; #endif + case( 'p' ): + reserve_pedo_increnent = 1; + // ここで増やすにはスタックが足りない。↑で予約のみ、task_misc内で処理 +// hosu_increment_if_necessary(); // 今、一歩増えた + break; } - vreg_ctr[ VREG_C_COMMAND3 ] = data; + +// vreg_ctr[ VREG_C_COMMAND3 ] = data; // 書く必要なし break; - case ( VREG_C_VOL_OPTION ): - if(( vreg_ctr[ VREG_C_VOL_OPTION ] ^ data ) & ( REG_BIT_VOL_UPDATE_TO_SLIDER )) + case ( VREG_C_RBR_CONTROL ): + if(( data & REG_BIT_RESET_n ) != 0 ) { -// renge_task_immed_add( tski_vol_update ); - vol_polling = 3; + RBR_RESET_n = 1; } - vreg_ctr[ VREG_C_VOL_OPTION ] = data; + else + { + RBR_RESET_n = 0; + } + if(( data & REG_BIT_FLIGHT ) != 0 ) + { + RBR_FLIGHT = 1; + } + else + { + RBR_FLIGHT = 0; + } + vreg_ctr[ VREG_C_RBR_CONTROL ] = data; break; - // read only // - case ( VREG_C_MCU_VER_MAJOR ): - case ( VREG_C_MCU_VER_MINOR ): - // VREG_C_3D = 0x08, - // VREG_C_SND_VOL, - // VREG_C_BT_TEMP, - // VREG_C_BT_REMAIN, - // VREG_C_BT_REMAIN_FINE, - // VREG_C_BT_VOLTAGE, - case ( VREG_C_STATUS_1 ): - case ( VREG_C_STATUS ): - case ( VREG_C_IRQ0 ): - case ( VREG_C_IRQ1 ): - case ( VREG_C_IRQ2 ): - case ( VREG_C_IRQ3 ): - case ( VREG_C_IRQ4 ): - case ( VREG_C_LED_NOTIFY_FLAG ): - case ( VREG_C_RTC_SEC_FINE_L ): - case ( VREG_C_RTC_SEC_FINE_H ): - // VREG_C_ACC_RESERVE, + // read only ////////////////////////////////////////// + case VREG_C_MCU_VER_MAJOR: + case VREG_C_MCU_VER_MINOR: + case VREG_C_3D: // すぐにリフレッシュされる + case VREG_C_SND_VOL: // すぐにリフレッシュされる + case VREG_C_BT_TEMP: // すぐにリフレッシュされる + case VREG_C_BT_REMAIN: // すぐにリフレッシュされる + case VREG_C_BT_REMAIN_FINE: // すぐにリフレッシュされる + case VREG_C_BT_VOLTAGE: // すぐにリフレッシュされる + case VREG_C_STATUS_1: // 適当にリフレッシュされる + case VREG_C_STATUS: // 適当にリフレッシュされる + case VREG_C_IRQ0: // 次のついでに割り込み起こしてほしいなら... + case VREG_C_IRQ1: + case VREG_C_IRQ2: + case VREG_C_IRQ3: + case VREG_C_IRQ4: + case VREG_C_LED_NOTIFY_FLAG: // すぐリフレッシュされる + case VREG_C_RTC_SEC_FINE_L: // すぐリフレッシュされる + case VREG_C_RTC_SEC_FINE_H: // すぐリフレッシュされる + // VREG_C_ACC_RESERVE, // 何も起きない // VREG_C_ACC_HOSU_HIST = 0x4F, + case VREG_C_ACC_XH: // すぐリフレッシュされる + case VREG_C_ACC_XL: + case VREG_C_ACC_YH: + case VREG_C_ACC_YL: + case VREG_C_ACC_ZH: + case VREG_C_ACC_ZL: + dbg_nop(); break; -//debug// - case ( VREG_C_VOL_DIGITAL ): - NOP(); - // no break // - - // ただ値を更新するだけ // - default: + case VREG_C_ACC_HOSU_L: // 書けてもいいけど、デバッグ用。(アドレス0x4B == mcu sla(r)) + dbg_nop(); + /* FALLTHROUGH */ + + // 普通に書かれるだけ ///////////////////////////////// + default: /* - case ( VREG_C_IRQ_MASK0 ): - case ( VREG_C_IRQ_MASK1 ): - case ( VREG_C_IRQ_MASK2 ): - case ( VREG_C_IRQ_MASK3 ): - case ( VREG_C_IRQ_MASK4 ): - case ( VREG_C_DBG01 ): - case ( VREG_C_DBG02 ): - case ( VREG_C_LED_BRIGHT ): - case ( VREG_C_ACC_HOSU_L ): - case ( VREG_C_ACC_HOSU_M ): - case ( VREG_C_ACC_HOSU_H ): - case ( VREG_C_ACC_HOSU_HOUR_BOUNDARY ): - case ( VREG_C_FREE_ADRS ): - case ( VREG_C_RTC_ALARM_YEAR ): - case ( VREG_C_ACC_W_ADRS ): - case ( VREG_C_OFF_DELAY ): + case VREG_C_IRQ_MASK0: + case VREG_C_IRQ_MASK1: + case VREG_C_IRQ_MASK2: + case VREG_C_IRQ_MASK3: + case VREG_C_IRQ_MASK4: + case VREG_C_DBG01: + case VREG_C_DBG02: + case VREG_C_LED_BRIGHT: + case VREG_C_ACC_HOSU_L: + case VREG_C_ACC_HOSU_M: + case VREG_C_ACC_HOSU_H: + case VREG_C_ACC_HOSU_HOUR_BOUNDARY: + case VREG_C_FREE_ADRS: + case VREG_C_RTC_ALARM_YEAR: + case VREG_C_ACC_W_ADRS: + case VREG_C_OFF_DELAY: + case VREG_C_HAL_OVW_CONT0: + case VREG_C_HAL_OVW_DAT0: + case VREG_C_HAL_OVW_CONT1: + case VREG_C_HAL_OVW_DAT1: */ if( adrs < VREG_C_ENDMARK_ ) { @@ -390,6 +421,7 @@ void vreg_ctr_write( u8 adrs, u8 data ) } else { + dbg_nop(); // read onlyの所に書いた。なんかバグってない? break; } } @@ -412,7 +444,7 @@ u8 vreg_ctr_read( u8 adrs ) // RTCは読み出し途中に繰り上がるのを避けるため if( ( VREG_C_RTC_SEC <= adrs ) && ( adrs <= VREG_C_RTC_YEAR ) ) { - rtc_buf_reflesh( ); + rtc_buf_refresh( ); } else if( adrs == VREG_C_MCU_STATUS ) { @@ -429,14 +461,21 @@ u8 vreg_ctr_read( u8 adrs ) { return( (u8)( ( rsub_temp >> 8 ) & 0xFF ) ); } - else if( adrs == VREG_C_ACC_HOSU_HIST ) +/* + // debug 的な + else if( adrs == VREG_C_IRQ_MASK0 ) + { + return( vreg_ctr[ VREG_C_IRQ_MASK0 ] & 0x7F ); // ぜ〜ったいにMSBは0。1なら通信エラー + } +*/ + else if( adrs == VREG_C_ACC_HOSU_HIST ) { return( hosu_read() ); } else if( adrs == VREG_CX_FREE_DATA ) { temp = pool.vreg_c_ext.vreg_c_free[ vreg_free_adrs ]; - // vreg_free_adrs += 1; // ここで加算してしまうとインデックスがずれる + // vreg_free_adrs ++; // ここで加算してしまうとインデックスがずれる return( temp ); } else if( adrs == VREG_CX_INFO ) @@ -444,18 +483,22 @@ u8 vreg_ctr_read( u8 adrs ) return( extinfo_read() ); } else if( adrs == VREG_C_ACC_HOSU_SETTING ) - { - return( pedolog_overflow? 0x10: 0 ); - } + { + if( pedolog_overflow ) + { + return( 0x10 ); + } + else + { + return( 0 ); + } + } -#if 0 if( adrs >= VREG_C_ENDMARK_ ) { - // VREG_C_INFO > VREG_C_ENDMARK_ なので - // いじるときは注意 - return( 0xEE ); + // VREG_C_INFO > VREG_C_ENDMARK_ なのでいじるとき注意 + return( 0xFF ); } -#endif return ( vreg_ctr[adrs] ); } @@ -480,7 +523,7 @@ void vreg_ctr_after_read( u8 adrs, u8 data ) break; case VREG_CX_FREE_DATA: - vreg_free_adrs += 1; + vreg_free_adrs ++; break; default: @@ -508,7 +551,7 @@ void vreg_ctr_after_read( u8 adrs, u8 data ) } #endif -// マスクされてたら、フラグも立てず、割り込みも入れない。 +// マスクされてたら、フラグ「立てない」、割り込み入れない。 void set_irq( u8 irqreg, u8 irq_flg ) { u8 tot; diff --git a/trunk/vreg_ctr.h b/trunk/vreg_ctr.h index af4f86e..a7ba785 100644 --- a/trunk/vreg_ctr.h +++ b/trunk/vreg_ctr.h @@ -5,6 +5,8 @@ #include "config.h" // VREG_C_MCU_STATUS +// bit[7.6] twl.sys_modeの[1.0] ctrから書けないが、fcr_reset時に適当にリセット +// bit[5] 〃 [7] ctrから書けないが、fcr_reset時に適当にリセット #define REG_BIT_STATUS_WDT_RESET ( 1 << 1 ) #define REG_BIT_RTC_BLACKOUT ( 1 << 0 ) @@ -27,7 +29,7 @@ // twl bl のミラー[1: ( 1 << 3 ) // 0]( 1 << 2 ) #define REG_BIT_ACCERO_ERR ( 1 << 1 ) -#define REG_BIT_MGIC_ERR ( 1 << 0 ) +#define REG_BIT_MGIC_ERR ( 1 << 0 ) // VREG_C_IRQ0 #define REG_BIT_IRQ_WDT_RESET ( 1 << 7 ) @@ -113,10 +115,6 @@ #define REG_BIT_TWL_IRQ_BT_EMPTY 0x10 #define REG_BIT_TWL_IRQ_VOL_CHANGE 0x40 -// VOL option (0x26) -#define REG_BIT_VOL_UPDATE_TO_SLIDER ( 1 << 4 ) -#define REG_BIT_VOL_BY_SPI ( 1 << 0 ) -// FORCE_REGの方が弱い // CODEC上のPMIC NTR の代理レジスタ #define REG_BIT_TWL_REQ_OFF ( 1 << 6 ) @@ -125,10 +123,31 @@ #define REG_BIT_TWL_REQ_RESET ( 1 << 0 ) - // VREG_C_LED_NOTIFY_FLAG #define REG_BIT_IN_LOOP ( 1 << 0 ) +// RBR control (0x57) +#define REG_BIT_FLIGHT ( 1 << 1 ) +#define REG_BIT_RESET_n ( 1 << 0 ) + + +// HAL bitfields 0 +#define REG_BIT_HAL0_PM_EXTDC_n ( 1 << 7 ) +#define REG_BIT_HAL0_BT_IN_CHG_n ( 1 << 6 ) +//#define REG_BIT_HAL0_PM_IRQ_n // 使わない +#define REG_BIT_HAL0_RSV_5 ( 1 << 5 ) +#define REG_BIT_HAL0_WL_TX ( 1 << 4 ) +#define REG_BIT_HAL0_SHELL_OPEN ( 1 << 3 ) // statusにあります +#define REG_BIT_HAL0_SW_WIFI_n ( 1 << 2 ) +#define REG_BIT_HAL0_SW_HOME_n ( 1 << 1 ) +#define REG_BIT_HAL0_SW_POW_n ( 1 << 0 ) + + +// HAL bitfields 1 +#define REG_BIT_HAL1_DIPSW_1 ( 1 << 3 ) +#define REG_BIT_HAL1_DIPSW_0 ( 1 << 2 ) +#define REG_BIT_HAL1_HW_DET_1 ( 1 << 1 ) +#define REG_BIT_HAL1_HW_DET_0 ( 1 << 0 ) /* テンプレ @@ -189,9 +208,9 @@ enum VREG_C_ADRS VREG_C_COMMAND3, // 'r' でマイコンリセット、 'w' でWDTリセット VREG_C_OFF_DELAY = 0x24, - VREG_C_VOL_DIGITAL = 0x25, - VREG_C_VOL_OPTION, - VREG_C_VOL_ADC_RAW, +// VREG_C_VOL_DIGITAL = 0x25, // todo 消すよ +// VREG_C_VOL_OPTION, + VREG_C_VOL_ADC_RAW = 0x27, VREG_C_LED_BRIGHT = 0x28, VREG_C_LED_POW, @@ -201,6 +220,8 @@ enum VREG_C_ADRS VREG_C_LED_NOTIFY_DATA, VREG_C_LED_NOTIFY_FLAG, + VREG_C_RBR_CONTROL = 0x2F, + VREG_C_RTC_SEC = 0x30, VREG_C_RTC_MIN, VREG_C_RTC_HOUR, @@ -242,12 +263,23 @@ enum VREG_C_ADRS VREG_C_ACC_HOSU_HOUR_BOUNDARY = 0x50, VREG_C_ACC_HOSU_HOUR_BOUNDARY_SEC, + VREG_C_HAL_OVW_CONT0 = 0x52, + VREG_C_HAL_OVW_DAT0, + VREG_C_HAL_OVW_CONT1, // reserved + VREG_C_HAL_OVW_DAT1, // reserved + + VREG_C_HAL_OVW_BT_FUEL = 0x56, + VREG_C_HAL_OVW_BT_VOLTAGE, + VREG_C_VOL_CAL_MIN = 0x58, VREG_C_VOL_CAL_MAX, - VREG_C_ENDMARK_ + VREG_C_HAL_OVW_TEMPERATURE = 0x5A, + + VREG_C_ENDMARK_ }; +// ↓間は抜けにして、メモリも確保しないために 別に define してる #define VREG_CX_INFO 0x7F #define VREG_CX_FREE_ADRS 0x60 #define VREG_CX_FREE_DATA 0x61 diff --git a/trunk/yav_mcu_bsr.plg b/trunk/yav_mcu_bsr.plg index 955cec1..910a544 100644 --- a/trunk/yav_mcu_bsr.plg +++ b/trunk/yav_mcu_bsr.plg @@ -1,152 +1,38 @@ -C:\WINDOWS\system32\cmd.exe /c touch magic.c -"D:\Program Files\NEC Electronics Tools\CC78K0R\W2.12\bin\cc78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff -irenge -i"C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r" -ms -qvjl2w -sainter_asm -zpb -no loader.c -loader.c(121) : CC78K0R warning W0401: Conversion may lose significant digits -loader.c(122) : CC78K0R warning W0401: Conversion may lose significant digits +C:\Windows\system32\cmd.exe /c c:\cygwin\bin\touch magic.c +"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\bin\cc78k0r.exe" -c9F0104 -y"c:\program files (x86)\nec electronics tools\dev" -_msgoff -irenge -i"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r" -ms -rd2 -qvjl2w -sainter_asm -zpb -no magic.c +Compilation complete, 0 error(s) and 0 warning(s) found. +"C:\Program Files (x86)\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"c:\program files (x86)\nec electronics tools\dev" -_msgoff inter_asm\magic.asm +Assembly complete, 0 error(s) and 0 warning(s) found. +"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\bin\cc78k0r.exe" -c9F0104 -y"c:\program files (x86)\nec electronics tools\dev" -_msgoff -irenge -i"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r" -ms -rd2 -qvjl2w -sainter_asm -zpb -no sw.c +Compilation complete, 0 error(s) and 0 warning(s) found. +"C:\Program Files (x86)\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"c:\program files (x86)\nec electronics tools\dev" -_msgoff inter_asm\sw.asm +Assembly complete, 0 error(s) and 0 warning(s) found. +"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\bin\cc78k0r.exe" -c9F0104 -y"c:\program files (x86)\nec electronics tools\dev" -_msgoff -irenge -i"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r" -ms -rd2 -qvjl2w -sainter_asm -zpb -no task_sys.c +task_sys.c(219) : CC78K0R warning W0401: Conversion may lose significant digits +task_sys.c(580) : CC78K0R warning W0401: Conversion may lose significant digits Compilation complete, 0 error(s) and 2 warning(s) found. -"D:\Program Files\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff inter_asm\loader.asm +"C:\Program Files (x86)\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"c:\program files (x86)\nec electronics tools\dev" -_msgoff inter_asm\task_sys.asm Assembly complete, 0 error(s) and 0 warning(s) found. -"D:\Program Files\NEC Electronics Tools\CC78K0R\W2.12\bin\cc78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff -irenge -i"C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r" -ms -qvjl2w -sainter_asm -zpb -no pm.c -pm.c(801) : CC78K0R warning W0401: Conversion may lose significant digits -pm.c(878) : CC78K0R warning W0401: Conversion may lose significant digits -pm.c(886) : CC78K0R warning W0401: Conversion may lose significant digits -pm.c(1101) : CC78K0R warning W0401: Conversion may lose significant digits -pm.c(1104) : CC78K0R warning W0401: Conversion may lose significant digits -Compilation complete, 0 error(s) and 5 warning(s) found. -"D:\Program Files\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff inter_asm\pm.asm -Assembly complete, 0 error(s) and 0 warning(s) found. -"D:\Program Files\NEC Electronics Tools\CC78K0R\W2.12\bin\cc78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff -irenge -i"C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r" -ms -qvjl2w -sainter_asm -zpb -no i2c_ctr.c -Compilation complete, 0 error(s) and 0 warning(s) found. -"D:\Program Files\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff inter_asm\i2c_ctr.asm -Assembly complete, 0 error(s) and 0 warning(s) found. -"D:\Program Files\NEC Electronics Tools\CC78K0R\W2.12\bin\cc78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff -irenge -i"C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r" -ms -qvjl2w -sainter_asm -zpb -no main.c -Compilation complete, 0 error(s) and 0 warning(s) found. -"D:\Program Files\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff inter_asm\main.asm -Assembly complete, 0 error(s) and 0 warning(s) found. -"D:\Program Files\NEC Electronics Tools\CC78K0R\W2.12\bin\cc78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff -irenge -i"C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r" -ms -qvjl2w -sainter_asm -zpb -no magic.c -Compilation complete, 0 error(s) and 0 warning(s) found. -"D:\Program Files\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff inter_asm\magic.asm -Assembly complete, 0 error(s) and 0 warning(s) found. -"D:\Program Files\NEC Electronics Tools\CC78K0R\W2.12\bin\cc78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff -irenge -i"C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r" -ms -qvjl2w -sainter_asm -zpb -no WDT.c -Compilation complete, 0 error(s) and 0 warning(s) found. -"D:\Program Files\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff inter_asm\WDT.asm -Assembly complete, 0 error(s) and 0 warning(s) found. -"D:\Program Files\NEC Electronics Tools\CC78K0R\W2.12\bin\cc78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff -irenge -i"C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r" -ms -qvjl2w -sainter_asm -zpb -no i2c_mcu.c -i2c_mcu.c(210) : CC78K0R warning W0401: Conversion may lose significant digits -Compilation complete, 0 error(s) and 1 warning(s) found. -"D:\Program Files\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff inter_asm\i2c_mcu.asm -Assembly complete, 0 error(s) and 0 warning(s) found. -"D:\Program Files\NEC Electronics Tools\CC78K0R\W2.12\bin\cc78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff -irenge -i"C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r" -ms -qvjl2w -sainter_asm -zpb -no i2c_twl.c -Compilation complete, 0 error(s) and 0 warning(s) found. -"D:\Program Files\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff inter_asm\i2c_twl.asm -Assembly complete, 0 error(s) and 0 warning(s) found. -"D:\Program Files\NEC Electronics Tools\CC78K0R\W2.12\bin\cc78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff -irenge -i"C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r" -ms -qvjl2w -sainter_asm -zpb -no led.c -led.c(109) : CC78K0R warning W0745: Expected function prototype -led.c(251) : CC78K0R warning W0401: Conversion may lose significant digits -led.c(256) : CC78K0R warning W0401: Conversion may lose significant digits -led.c(318) : CC78K0R warning W0401: Conversion may lose significant digits -led.c(377) : CC78K0R warning W0401: Conversion may lose significant digits -led.c(403) : CC78K0R warning W0401: Conversion may lose significant digits -led.c(579) : CC78K0R warning W0401: Conversion may lose significant digits -Compilation complete, 0 error(s) and 7 warning(s) found. -"D:\Program Files\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff inter_asm\led.asm -Assembly complete, 0 error(s) and 0 warning(s) found. -"D:\Program Files\NEC Electronics Tools\CC78K0R\W2.12\bin\cc78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff -irenge -i"C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r" -ms -qvjl2w -sainter_asm -zpb -no rtc.c -Compilation complete, 0 error(s) and 0 warning(s) found. -"D:\Program Files\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff inter_asm\rtc.asm -Assembly complete, 0 error(s) and 0 warning(s) found. -"D:\Program Files\NEC Electronics Tools\CC78K0R\W2.12\bin\cc78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff -irenge -i"C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r" -ms -qvjl2w -sainter_asm -zpb -no vreg_ctr.c -vreg_ctr.c(163) : CC78K0R warning W0401: Conversion may lose significant digits -vreg_ctr.c(164) : CC78K0R warning W0401: Conversion may lose significant digits -vreg_ctr.c(166) : CC78K0R warning W0401: Conversion may lose significant digits -vreg_ctr.c(168) : CC78K0R warning W0401: Conversion may lose significant digits -vreg_ctr.c(169) : CC78K0R warning W0401: Conversion may lose significant digits -vreg_ctr.c(216) : CC78K0R warning W0401: Conversion may lose significant digits -vreg_ctr.c(216) : CC78K0R warning W0401: Conversion may lose significant digits -vreg_ctr.c(221) : CC78K0R warning W0401: Conversion may lose significant digits -vreg_ctr.c(221) : CC78K0R warning W0401: Conversion may lose significant digits -vreg_ctr.c(225) : CC78K0R warning W0401: Conversion may lose significant digits -vreg_ctr.c(225) : CC78K0R warning W0401: Conversion may lose significant digits -vreg_ctr.c(229) : CC78K0R warning W0401: Conversion may lose significant digits -vreg_ctr.c(229) : CC78K0R warning W0401: Conversion may lose significant digits -vreg_ctr.c(233) : CC78K0R warning W0401: Conversion may lose significant digits -Compilation complete, 0 error(s) and 14 warning(s) found. -"D:\Program Files\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff inter_asm\vreg_ctr.asm -Assembly complete, 0 error(s) and 0 warning(s) found. -"D:\Program Files\NEC Electronics Tools\CC78K0R\W2.12\bin\cc78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff -irenge -i"C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r" -ms -qvjl2w -sainter_asm -zpb -no vreg_twl.c -vreg_twl.c(57) : CC78K0R warning W0401: Conversion may lose significant digits -vreg_twl.c(61) : CC78K0R warning W0401: Conversion may lose significant digits -Compilation complete, 0 error(s) and 2 warning(s) found. -"D:\Program Files\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff inter_asm\vreg_twl.asm -Assembly complete, 0 error(s) and 0 warning(s) found. -"D:\Program Files\NEC Electronics Tools\CC78K0R\W2.12\bin\cc78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff -irenge -i"C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r" -ms -qvjl2w -sainter_asm -zpb -no adc.c -adc.c(103) : CC78K0R warning W0401: Conversion may lose significant digits -adc.c(200) : CC78K0R warning W0401: Conversion may lose significant digits -adc.c(232) : CC78K0R warning W0401: Conversion may lose significant digits -adc.c(344) : CC78K0R warning W0401: Conversion may lose significant digits -adc.c(384) : CC78K0R warning W0401: Conversion may lose significant digits -adc.c(462) : CC78K0R warning W0745: Expected function prototype -adc.c(491) : CC78K0R warning W0401: Conversion may lose significant digits -adc.c(496) : CC78K0R warning W0401: Conversion may lose significant digits -adc.c(122) : CC78K0R warning W0401: Conversion may lose significant digits -Compilation complete, 0 error(s) and 9 warning(s) found. -"D:\Program Files\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff inter_asm\adc.asm -Assembly complete, 0 error(s) and 0 warning(s) found. -"D:\Program Files\NEC Electronics Tools\CC78K0R\W2.12\bin\cc78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff -irenge -i"C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r" -ms -qvjl2w -sainter_asm -zpb -no renge\renge.c -Compilation complete, 0 error(s) and 0 warning(s) found. -"D:\Program Files\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff inter_asm\renge.asm -Assembly complete, 0 error(s) and 0 warning(s) found. -"D:\Program Files\NEC Electronics Tools\CC78K0R\W2.12\bin\cc78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff -irenge -i"C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r" -ms -qvjl2w -sainter_asm -zpb -no accero.c -Compilation complete, 0 error(s) and 0 warning(s) found. -"D:\Program Files\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff inter_asm\accero.asm -Assembly complete, 0 error(s) and 0 warning(s) found. -"D:\Program Files\NEC Electronics Tools\CC78K0R\W2.12\bin\cc78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff -irenge -i"C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r" -ms -qvjl2w -sainter_asm -zpb -no self_flash.c -self_flash.c(271) : CC78K0R warning W0401: Conversion may lose significant digits -self_flash.c(272) : CC78K0R warning W0401: Conversion may lose significant digits -Compilation complete, 0 error(s) and 2 warning(s) found. -"D:\Program Files\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff inter_asm\self_flash.asm -Assembly complete, 0 error(s) and 0 warning(s) found. -"D:\Program Files\NEC Electronics Tools\CC78K0R\W2.12\bin\cc78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff -irenge -i"C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r" -ms -qvjl2w -sainter_asm -zpb -no sw.c -Compilation complete, 0 error(s) and 0 warning(s) found. -"D:\Program Files\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff inter_asm\sw.asm -Assembly complete, 0 error(s) and 0 warning(s) found. -"D:\Program Files\NEC Electronics Tools\CC78K0R\W2.12\bin\cc78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff -irenge -i"C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r" -ms -qvjl2w -sainter_asm -zpb -no task_debug.c -Compilation complete, 0 error(s) and 0 warning(s) found. -"D:\Program Files\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff inter_asm\task_debug.asm -Assembly complete, 0 error(s) and 0 warning(s) found. -"D:\Program Files\NEC Electronics Tools\CC78K0R\W2.12\bin\cc78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff -irenge -i"C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r" -ms -qvjl2w -sainter_asm -zpb -no task_misc.c -task_misc.c(300) : CC78K0R warning W0401: Conversion may lose significant digits -Compilation complete, 0 error(s) and 1 warning(s) found. -"D:\Program Files\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff inter_asm\task_misc.asm -Assembly complete, 0 error(s) and 0 warning(s) found. -"D:\Program Files\NEC Electronics Tools\CC78K0R\W2.12\bin\cc78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff -irenge -i"C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r" -ms -qvjl2w -sainter_asm -zpb -no task_sys.c -task_sys.c(207) : CC78K0R warning W0401: Conversion may lose significant digits -task_sys.c(525) : CC78K0R warning W0401: Conversion may lose significant digits -Compilation complete, 0 error(s) and 2 warning(s) found. -"D:\Program Files\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff inter_asm\task_sys.asm -Assembly complete, 0 error(s) and 0 warning(s) found. -"D:\Program Files\NEC Electronics Tools\CC78K0R\W2.12\bin\cc78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff -irenge -i"C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r" -ms -qvjl2w -sainter_asm -zpb -no pedo_alg_thre_det2.c -pedo_alg_thre_det2.c(58) : CC78K0R warning W0745: Expected function prototype -pedo_alg_thre_det2.c(73) : CC78K0R warning W0401: Conversion may lose significant digits -pedo_alg_thre_det2.c(140) : CC78K0R warning W0401: Conversion may lose significant digits -pedo_alg_thre_det2.c(153) : CC78K0R warning W0401: Conversion may lose significant digits -Compilation complete, 0 error(s) and 4 warning(s) found. -"D:\Program Files\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff inter_asm\pedo_alg_thre_det2.asm -Assembly complete, 0 error(s) and 0 warning(s) found. -"D:\Program Files\NEC Electronics Tools\CC78K0R\W2.12\bin\cc78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff -irenge -i"C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r" -ms -qvjl2w -sainter_asm -zpb -no ini_VECT.c -Compilation complete, 0 error(s) and 0 warning(s) found. -"D:\Program Files\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff inter_asm\ini_VECT.asm -Assembly complete, 0 error(s) and 0 warning(s) found. -"D:\Program Files\NEC Electronics Tools\CC78K0R\W2.12\bin\cc78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff -irenge -i"C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r" -ms -qvjl2w -sainter_asm -zpb -no task_status.c -Compilation complete, 0 error(s) and 0 warning(s) found. -"D:\Program Files\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff inter_asm\task_status.asm -Assembly complete, 0 error(s) and 0 warning(s) found. -"D:\Program Files\NEC Electronics Tools\RA78K0R\W1.33\bin\lk78k0r.exe" -y"d:\program files\nec electronics tools\dev" -_msgoff -obsr.lmf "..\..\..\..\Program Files\NEC Electronics Tools\CC78K0R\W2.12\lib78k0r\s0rm.rel" -gi1B339499E033F240BFAAh -pbsr_k0r.map -nkd -gb7EFBFFh -b"C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\lib78k0r\fsl.lib" -bcl0rdm.lib -bcl0rm.lib -bcl0rmf.lib -i"D:\Program Files\NEC Electronics Tools\CC78K0R\W2.12\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 led.rel rtc.rel vreg_ctr.rel vreg_twl.rel adc.rel renge.rel accero.rel self_flash.rel sw.rel task_debug.rel task_misc.rel task_sys.rel pedo_alg_thre_det2.rel ini_VECT.rel task_status.rel -Link complete, 0 error(s) and 0 warning(s) found. -"D:\Program Files\NEC Electronics Tools\RA78K0R\W1.33\bin\oc78k0r.exe" -y"d:\program files\nec electronics tools\dev" -_msgoff -o.\bsr.hex -nu -ki bsr.lmf +"C:\Program Files (x86)\NEC Electronics Tools\RA78K0R\W1.33\bin\lk78k0r.exe" -y"c:\program files (x86)\nec electronics tools\dev" -_msgoff -obsr.lmf "..\..\..\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\lib78k0r\s0rm.rel" -go85h,0FC00h,1024 -gi1B339499E033F240BFAAh -pbsr_k0r.map -nkd -gb7EFBFFh -b"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\lib78k0r\fsl.lib" -bcl0rdm.lib -bcl0rm.lib -bcl0rmf.lib -i"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\lib78k0r" -dbsr_mcu.dr -s -w2 loader.rel pm.rel i2c_ctr.rel main.rel magic.rel WDT.rel i2c_mcu.rel i2c_twl.rel led.rel rtc.rel vreg_ctr.rel vreg_twl.rel adc.rel renge.rel accero.rel self_flash.rel sw.rel task_debug.rel task_misc.rel task_sys.rel pedo_alg_thre_det2.rel ini_VECT.rel task_status.rel led_cam.rel led_pow.rel hal.rel batt_params.rel voltable.rel pedo_lpf_coeff.rel +RA78K0R warning W3420: File 'loader.rel' already has had error(s)/warning(s) by 'CC78K' + Read Device File Directory : C:\PROGRAM FILES (X86)\NEC ELECTRONICS TOOLS\DEV\ +RA78K0R warning W3420: File 'pm.rel' already has had error(s)/warning(s) by 'CC78K' +RA78K0R warning W3420: File 'i2c_mcu.rel' already has had error(s)/warning(s) by 'CC78K' +RA78K0R warning W3420: File 'led.rel' already has had error(s)/warning(s) by 'CC78K' +RA78K0R warning W3420: File 'vreg_ctr.rel' already has had error(s)/warning(s) by 'CC78K' +RA78K0R warning W3420: File 'vreg_twl.rel' already has had error(s)/warning(s) by 'CC78K' +RA78K0R warning W3420: File 'adc.rel' already has had error(s)/warning(s) by 'CC78K' +RA78K0R warning W3420: File 'accero.rel' already has had error(s)/warning(s) by 'CC78K' +RA78K0R warning W3420: File 'self_flash.rel' already has had error(s)/warning(s) by 'CC78K' +RA78K0R warning W3420: File 'task_misc.rel' already has had error(s)/warning(s) by 'CC78K' +RA78K0R warning W3420: File 'task_sys.rel' already has had error(s)/warning(s) by 'CC78K' +RA78K0R warning W3420: File 'pedo_alg_thre_det2.rel' already has had error(s)/warning(s) by 'CC78K' +RA78K0R warning W3420: File 'led_pow.rel' already has had error(s)/warning(s) by 'CC78K' + +Link complete, 0 error(s) and 13 warning(s) found. +"C:\Program Files (x86)\NEC Electronics Tools\RA78K0R\W1.33\bin\oc78k0r.exe" -y"c:\program files (x86)\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 nec_s_2_bsrbin2.rb bsr.hex -intel-HEX to bsr bin converter - file converted! - - -Build Total error(s) : 0 Total warning(s) : 49 +C:\Windows\system32\cmd.exe /c ruby nec_s_2_bsrbin2.rb bsr.hex +133 +!E debug enable!! +Build Total error(s) : 0 Total warning(s) : 15 diff --git a/trunk/yav_mcu_bsr.pri b/trunk/yav_mcu_bsr.pri index edd788b..8741ece 100644 --- a/trunk/yav_mcu_bsr.pri +++ b/trunk/yav_mcu_bsr.pri @@ -14,7 +14,7 @@ Low-voltage Flash Rewriting=On Fail Safe Break=0x2000 Port=1 NMI=OFF -TRESET=OFF +TRESET=ON IRESET=OFF WAIT=OFF SysClock=None @@ -22,8 +22,8 @@ SubClock=None [Mapping] Count=0 [Main] -Geometry=154, 154, 1080, 635 -Window=Max +Geometry=39, 38, 1452, 1091 +Window=Normal MDI_MAX=OFF Button=ON Mode=Auto @@ -55,7 +55,7 @@ HighSpeed1=OFF CPU Reset1=ON Symbol Reset1=ON [View File] -Dir=\\Tsclient\c\78k_data\yav-mcu-basara\trunk\ +Dir=\\Tsclient\c\78k_data\yav-mcu-basara\branches\1.34_pwsw_analyze\ Filter=Source [Debugger Option] Source Path="" @@ -78,10 +78,10 @@ Symbol Type=OFF Language=C Kanji=SJIS [Source] -Geometry=28, 27, 1001, 770 +Geometry=68, 7, 822, 815 Window=Normal -DispStart=432 -CaretPos=433,0 +DispStart=49 +CaretPos=62,0 Mode=Normal DispFile= Address1= @@ -140,10 +140,10 @@ SaveStart= SaveEnd= Accumulative=ON [Assemble] -Geometry=43, 31, 727, 721 -Window=Hide -DispStart=847754240 -CaretPos=0,0 +Geometry=100, 100, 600, 400 +Window=Normal +DispStart=12209 +CaretPos=12209,27 Address1= Address2= Address3= @@ -185,7 +185,7 @@ SaveRange=Screen SaveStart= SaveEnd= [Memory] -Geometry=244, 107, 550, 400 +Geometry=24, 534, 550, 400 Window=Normal Boundary=163 Format=Hex @@ -194,9 +194,9 @@ Endian=Little Ascii=OFF Idtag=OFF Address= -DispStart=000F2220 -CaretPosData=26, 62009 -CaretPosAscii=50176, 0 +DispStart=000FFCF0 +CaretPosData=0, 65487 +CaretPosAscii=0, 65487 Address1= Address2= Address3= @@ -814,9 +814,9 @@ L529=IICWL1 L530=IICWH1 L531=SVA1 [Local Variable] -Geometry=1032, 466, 400, 300 -Window=Normal -Boundary=13041851 +Geometry=0, 0, 0, 0 +Window=Hide +Boundary=0 Mode=Proper [Trace View] Geometry=0, 0, 0, 0 @@ -866,22 +866,22 @@ SaveRange=Screen SaveStart= SaveEnd= [Register] -Geometry=0, 0, 0, 0 -Window=Hide +Geometry=50, 50, 250, 400 +Window=Normal Mode=Hex -Boundary=62 +Boundary=159 Pickup=OFF Name=Functional Register Bank=0 -RP0=3 -RP1=3 -RP2=3 -RP3=3 -PC=3 -SP=3 -PSW=3 -ES=3 -CS=3 +RP0=1 +RP1=1 +RP2=1 +RP3=1 +PC=1 +SP=1 +PSW=1 +ES=1 +CS=1 [Event Manager] Geometry=0, 0, 0, 0 Window=Hide @@ -957,43 +957,62 @@ Detail=OFF Last Name= Count=0 [Variable] -Geometry=981, 20, 440, 451 +Geometry=935, 61, 440, 634 Window=Normal Boundary=13762700 -0=.battery_manufacturer,P,N,A,+,1 -1=.temp_fuel,P,N,A,+,1 -2=.bt_volt16,P,N,A,+,1 -Line=3 +0=.SW_pow_count,P,N,A,+,1 +1=.renge_flg_interval,P,N,A,+,1 +2=.SW_pow_count,P,N,A,+,1 +3=.pwsw_timeout,P,N,A,+,1 +4=.RWAIT,P,S,A,+,1 +5=.RWST,P,S,A,+,1 +6=.system_status,.,N,A,+,1 +7=.counter1,D,N,A,+,1 +8=.chg_led_override,P,N,A,+,1 +9=.PM_EXTDC_n,P,N,A,+,1 +Line=10 [Quick Watch] -0=LED_dim_status_info_G,P,A,1 -1=LED_dim_status_info_B,P,A,1 -2=LED_dim_status_info_R,P,A,1 -3=info_LED.info_LED,P,A,1 -4=temp,P,A,1 -5=p_batt_param,P,A,1 -6=loop,P,A,1 -7=system_status,P,A,1 -8=battery_manufacturer,P,A,1 -9=p_bt_param,P,A,1 -10=bt_volt16,P,A,1 -11=temp_fuel,P,A,1 +0=counter1,P,A,1 +1=system_status,P,A,1 +2=timeout,P,A,1 +3=tp,P,A,1 +4=chg_led_override,P,A,1 +5=PM_EXTDC_n,P,A,1 +6=pwsw_timeout,P,A,1 +7=SW_pow_count,P,A,1 +8=renge_flg_interval,P,A,1 +9=RWST,P,A,1 +10=RWAIT,P,A,1 +11= 12= 13= 14= 15= [Software Break] -Geometry=75, 75, 500, 200 +Geometry=914, 762, 500, 200 Window=Normal Width=150 30 200 100 -Name0=Swb00001 -Address0=pm.c#_BT_get_left+0x13c +Name0=Swb00003 +Address0=task_sys.c#_tsk_sys+0x47 Window0=ASM -Status0=ON -Name1=Swb00003 -Address1=pm.c#_BT_get_left+0x135 +Status0=OFF +Name1=Swb00002 +Address1=task_sys.c#_tsk_sys+0x27f Window1=ASM -Status1=ON -Count=2 +Status1=OFF +Name2=Swb00004 +Address2=task_sys.c#_tsk_sys+0x28d +Window2=ASM +Status2=ON +Name3=Swb00001 +Address3=task_sys.c#_tsk_sys+0x69 +Window3=ASM +Status3=ON +Name4=Swb00005 +Address4=rtc.c#_RTC_init+0x4c +Window4=ASM +Status4=ON +Count=5 [Reset] Debugger=ON Symbol=OFF @@ -1018,7 +1037,7 @@ Window=Hide [Data Flash Option] Data Flash Emulation=OFF [List] -Geometry=0, 0, 0, 0 +Geometry=75, 75, 856, 846 Window=Hide [Console] Geometry=0, 0, 0, 0 diff --git a/trunk/yav_mcu_bsr.prj b/trunk/yav_mcu_bsr.prj index ca010d2..c1b8f73 100644 --- a/trunk/yav_mcu_bsr.prj +++ b/trunk/yav_mcu_bsr.prj @@ -6,7 +6,7 @@ Series=78K0R.PM Device=uPD79F0104 DeviceVer=E1.00b DebugMode=1 -Target=C:\78k_data\yav-mcu-basara\trunk\bsr.lmf +Target=bsr.lmf [BuildMode0] BuildModeName=Debug Build TargetFile=0 @@ -36,6 +36,562 @@ TargetFile=0 [BuildMode5] BuildModeName=BSR_WM0 TargetFile=0 +[Options.OC78K0R 0] +Version=100 +O0=.\bsr.hex +O1=bsr.hex +UC=1 +UN=FF +UST= +USZ= +K=1 +ZF=0 +S=1 +E=0 +CommandFile=0 +[Options.OC78K0R 1] +Version=100 +UC=1 +UN=FF +UST= +USZ= +K=1 +ZF=0 +S=1 +E=0 +CommandFile=0 +[Options.OC78K0R 2] +Version=100 +O0=.\bsr.hex +O1=bsr.hex +UC=0 +UN=FF +UST= +USZ= +K=0 +ZF=0 +S=1 +E=0 +CommandFile=0 +[Options.OC78K0R 3] +Version=100 +O0=.\bsr.hex +O1=bsr.hex +UC=1 +UN=FF +UST= +USZ= +K=1 +ZF=0 +S=1 +E=0 +CommandFile=0 +[Options.OC78K0R 4] +Version=100 +O0=.\bsr.hex +O1=bsr.hex +UC=1 +UN=FF +UST= +USZ= +K=1 +ZF=0 +S=1 +E=0 +CommandFile=0 +[Options.OC78K0R 5] +Version=100 +O0=.\bsr.hex +O1=bsr.hex +UC=1 +UN=FF +UST= +USZ= +K=1 +ZF=0 +S=1 +E=0 +CommandFile=0 +[BuildBefore-AfterCmd] +Before1=c:\cygwin\bin\touch magic.c +After1=ruby nec_s_2_bsrbin2.rb bsr.hex +[ToolSet] +ToolSetName=(変更)78K0R Software Package V1.10 +Tool1=CC78K0R|W2.13 +Tool2=RA78K0R|W1.33 +Tool3=SK78K0R|V3.10 +Tool4=ID78K0R-QB|V3.61 +[Options.LCNV78K0R 0] +Version=100 +LCNV_GO=0 +E=0 +CommandFile=0 +[Options.LCNV78K0R 1] +Version=100 +LCNV_GO=0 +E=0 +CommandFile=0 +[Options.LCNV78K0R 2] +Version=100 +LCNV_GO=0 +O0=inter_asm +E=0 +CommandFile=0 +[Options.LCNV78K0R 3] +Version=100 +LCNV_GO=0 +E=0 +CommandFile=0 +[Options.LCNV78K0R 4] +Version=100 +LCNV_GO=0 +E=0 +CommandFile=0 +[Options.LCNV78K0R 5] +Version=100 +LCNV_GO=0 +E=0 +CommandFile=0 +[Options.RA78K0R 0] +Version=100 +G=1 +GA=1 +E=0 +COMMON=0 +COMPATI=0 +P=1 +KA=1 +KS=0 +KX=0 +LF=0 +LW=132 +LL=0 +LT=8 +Z=0 +CommandFile=0 +RA_OPT= +[Options.RA78K0R 1] +Version=100 +G=0 +GA=0 +E=0 +COMMON=0 +COMPATI=0 +P=1 +KA=1 +KS=0 +KX=0 +LF=0 +LW=132 +LL=0 +LT=8 +Z=0 +CommandFile=0 +RA_OPT= +[Options.RA78K0R 2] +Version=100 +O0= +O1=obj +G=1 +GA=1 +E=0 +COMMON=0 +COMPATI=0 +P=1 +KA=1 +KS=0 +KX=0 +LF=0 +LW=132 +LL=0 +LT=8 +Z=0 +CommandFile=0 +RA_OPT= +[Options.RA78K0R 3] +Version=100 +G=1 +GA=1 +E=0 +COMMON=0 +COMPATI=0 +P=1 +KA=1 +KS=0 +KX=0 +LF=0 +LW=132 +LL=0 +LT=8 +Z=0 +CommandFile=0 +RA_OPT= +[Options.RA78K0R 4] +Version=100 +G=1 +GA=1 +E=0 +COMMON=0 +COMPATI=0 +P=1 +KA=1 +KS=0 +KX=0 +LF=0 +LW=132 +LL=0 +LT=8 +Z=0 +CommandFile=0 +RA_OPT= +[Options.RA78K0R 5] +Version=100 +G=1 +GA=1 +E=0 +COMMON=0 +COMPATI=0 +P=1 +KA=1 +KS=0 +KX=0 +LF=0 +LW=132 +LL=0 +LT=8 +Z=0 +CommandFile=0 +RA_OPT= +[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=task_status.c +Source24=led_cam.c +Source25=led_pow.c +Source26=hal.c +Source27=batt_params.c +Source28=voltable.c +Source29=pedo_lpf_coeff.c +[Options.LK78K0R 0] +Version=100 +O0=bsr_k0r.lmf +O1=bsr.lmf +O2=flash.lmf +O3=a.lmf +G=1 +E=0 +E0=flash.elk +E1=a.elk +GO=1 +GOValue=85 +GOStart=FC00 +GOSizeValue=1024 +GI=1 +GIValue=FFFFFFFFFFFFFFFFFFFF +CCZA=0 +MemInfoCheck=1 +P=1 +P0=bsr_k0r.map +P1=bsr.map +P2=flash.map +P3=a.map +MI=0 +GB=1 +GBValue=6EFBFF +KM=1 +KD=0 +KP=1 +KL=0 +LF=0 +LL=0 +B0=C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\lib78k0r\fsl.lib +D0=bsr_mcu.dr +D1=user_area.dr +S=1 +W=0 +SELFCheck=1 +SELF=0 +ZB= +Etcetera0= +Etcetera1=boot.lmf +CommandFile=0 +[Options.LK78K0R 1] +Version=100 +O0=a.lmf +G=0 +E=0 +E0=a.elk +GO=0 +GOValue= +GOStart=FC00 +GOSizeValue=1024 +GI=0 +GIValue=FFFFFFFFFFFFFFFFFFFF +CCZA=1 +MemInfoCheck=0 +P=1 +P0=a.map +MI=0 +GB=0 +GBValue= +KM=1 +KD=1 +KP=0 +KL=0 +LF=0 +LL=0 +S=0 +W=1 +SELFCheck=0 +SELF=0 +ZB= +CommandFile=0 +[Options.LK78K0R 2] +Version=100 +O0=bsr.lmf +O1=bsr_k0r.lmf +O2=flash.lmf +O3=a.lmf +G=1 +E=0 +E0=flash.elk +E1=a.elk +GO=1 +GOValue=85 +GOStart=FC00 +GOSizeValue=1024 +GI=1 +GIValue=1B339499E033F240BFAA +CCZA=0 +MemInfoCheck=1 +P=1 +P0=bsr_k0r.map +P1=bsr.map +P2=flash.map +P3=a.map +MI=0 +GB=1 +GBValue=7EFBFF +KM=1 +KD=0 +KP=0 +KL=0 +LF=0 +LL=0 +B0=C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\lib78k0r\fsl.lib +B1=C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\lib78k0r\fsl.lib +D0=bsr_mcu.dr +D1=user_area.dr +S=1 +W=2 +SELFCheck=0 +SELF=0 +ZB= +Etcetera0= +Etcetera1=boot.lmf +CommandFile=0 +OFILE=C:\78k_data\yav-mcu-basara\trunk\bsr.lmf +[Options.LK78K0R 3] +Version=100 +O0=bsr_bsr.lmf +O1=bsr_k0r.lmf +O2=bsr.lmf +O3=flash.lmf +O4=a.lmf +G=1 +E=0 +E0=flash.elk +E1=a.elk +GO=1 +GOValue=85 +GOStart=FC00 +GOSizeValue=1024 +GI=1 +GIValue=FFFFFFFFFFFFFFFFFFFF +CCZA=0 +MemInfoCheck=1 +P=1 +P0=bsr_bsr.map +P1=bsr_k0r.map +P2=bsr.map +P3=flash.map +P4=a.map +MI=0 +GB=1 +GBValue=6EFBFF +KM=1 +KD=0 +KP=1 +KL=0 +LF=0 +LL=0 +B0=C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\lib78k0r\fsl.lib +D0=bsr_mcu.dr +D1=user_area.dr +S=1 +W=2 +SELFCheck=0 +SELF=0 +ZB= +Etcetera0= +Etcetera1=boot.lmf +CommandFile=0 +[Options.LK78K0R 4] +Version=100 +O0=bsr_k0r.lmf +O1=bsr.lmf +O2=flash.lmf +O3=a.lmf +G=1 +E=0 +E0=flash.elk +E1=a.elk +GO=1 +GOValue=85 +GOStart=FC00 +GOSizeValue=1024 +GI=1 +GIValue=FFFFFFFFFFFFFFFFFFFF +CCZA=0 +MemInfoCheck=1 +P=1 +P0=bsr_k0r.map +P1=bsr.map +P2=flash.map +P3=a.map +MI=0 +GB=1 +GBValue=6EFBFF +KM=1 +KD=0 +KP=1 +KL=0 +LF=0 +LL=0 +B0=C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\lib78k0r\fsl.lib +D0=bsr_mcu.dr +D1=user_area.dr +S=1 +W=0 +SELFCheck=1 +SELF=0 +ZB= +Etcetera0= +Etcetera1=boot.lmf +CommandFile=0 +[Options.LK78K0R 5] +Version=100 +O0=bsr_bsr.lmf +O1=bsr_k0r.lmf +O2=bsr.lmf +O3=flash.lmf +O4=a.lmf +G=1 +E=0 +E0=flash.elk +E1=a.elk +GO=1 +GOValue=85 +GOStart=FC00 +GOSizeValue=1024 +GI=1 +GIValue=FFFFFFFFFFFFFFFFFFFF +CCZA=0 +MemInfoCheck=1 +P=1 +P0=bsr_bsr.map +P1=bsr_k0r.map +P2=bsr.map +P3=flash.map +P4=a.map +MI=0 +GB=1 +GBValue=6EFBFF +KM=1 +KD=0 +KP=1 +KL=0 +LF=0 +LL=0 +B0=C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\lib78k0r\fsl.lib +D0=bsr_mcu.dr +D1=user_area.dr +S=1 +W=2 +SELFCheck=0 +SELF=0 +ZB= +Etcetera0= +Etcetera1=boot.lmf +CommandFile=0 +[Options.78K0R] +BuildMode=2 +BuildMode2=K0R_dbg +BuildMode3=BSR_dbg +BuildMode4=BSR_rel +BuildMode5=BSR_WM0 +DefaultMode2=1 +DefaultMode3=1 +DefaultMode4=1 +DefaultMode5=1 +[IncFile] +Include1=incs_loader.h +Include2=sim\simOnWin.h +Include3=sim\sfrAlias.h +Include4=config.h +Include5=jhl_defs.h +Include6=user_define.h +Include7=hal.h +Include8=bsr_system.h +Include9=renge\renge.h +Include10=renge\renge_defs.h +Include11=renge\renge_task_immediate.h +Include12=vreg_ctr.h +Include13=vreg_twl.h +Include14=loader.h +Include15=i2c_mcu.h +Include16=WDT.h +Include17=..\..\..\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r\fsl.h +Include18=fsl_user.h +Include19=i2c_ctr.h +Include20=pm.h +Include21=rtc.h +Include22=reboot.h +Include23=magic.h +Include24=incs.h +Include25=i2c_twl.h +Include26=accero.h +Include27=pedometer.h +Include28=sw.h +Include29=adc.h +Include30=led.h +Include31=batt_params.h +Include32=pool.h +Include33=i2c_twl_defs.h +Include34=renge\renge_task_intval.h +Include35=..\..\..\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r\math.h +Include36=self_flash.h +Include37=sim\sim_interrupt_decrare.c [Options.CC78K0R 0] Version=210 Include0=renge,C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r @@ -197,8 +753,8 @@ Flashobj=0 FlashStartadr= FlashBranchStartadr= Mirror=0 -Saddrglobalchk=0 -Saddrglobal=1066 +Saddrglobalchk=1 +Saddrglobal=1063 Saddrstaticchk=0 Saddrstatic=1072 Bitfieldmsb=0 @@ -505,553 +1061,3 @@ VfiFileBoot0= VfiFileBoot1=boot.vfi VF78K0Rchk=0 VF78K0Rvs= -[Options.OC78K0R 0] -Version=100 -O0=.\bsr.hex -O1=bsr.hex -UC=1 -UN=FF -UST= -USZ= -K=1 -ZF=0 -S=1 -E=0 -CommandFile=0 -[Options.OC78K0R 1] -Version=100 -UC=1 -UN=FF -UST= -USZ= -K=1 -ZF=0 -S=1 -E=0 -CommandFile=0 -[Options.OC78K0R 2] -Version=100 -O0=.\bsr.hex -O1=bsr.hex -UC=0 -UN=FF -UST= -USZ= -K=0 -ZF=0 -S=1 -E=0 -CommandFile=0 -[Options.OC78K0R 3] -Version=100 -O0=.\bsr.hex -O1=bsr.hex -UC=1 -UN=FF -UST= -USZ= -K=1 -ZF=0 -S=1 -E=0 -CommandFile=0 -[Options.OC78K0R 4] -Version=100 -O0=.\bsr.hex -O1=bsr.hex -UC=1 -UN=FF -UST= -USZ= -K=1 -ZF=0 -S=1 -E=0 -CommandFile=0 -[Options.OC78K0R 5] -Version=100 -O0=.\bsr.hex -O1=bsr.hex -UC=1 -UN=FF -UST= -USZ= -K=1 -ZF=0 -S=1 -E=0 -CommandFile=0 -[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=task_status.c -Source24=led_cam.c -Source25=led_pow.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=..\..\..\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r\fsl.h -Include15=fsl_user.h -Include16=i2c_ctr.h -Include17=pm.h -Include18=rtc.h -Include19=reboot.h -Include20=magic.h -Include21=incs.h -Include22=i2c_twl.h -Include23=accero.h -Include24=pedometer.h -Include25=sw.h -Include26=adc.h -Include27=led.h -Include28=batt_params.h -Include29=pool.h -Include30=i2c_twl_defs.h -Include31=voltable.h -Include32=renge\renge_task_intval.h -Include33=..\..\..\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r\math.h -Include34=self_flash.h -Include35=pedo_lpf_coeff.h -[BuildBefore-AfterCmd] -Before1=c:\cygwin\bin\touch magic.c -After1=ruby nec_s_2_bsrbin2.rb bsr.hex -[Options.RA78K0R 0] -Version=100 -G=1 -GA=1 -E=0 -COMMON=0 -COMPATI=0 -P=1 -KA=1 -KS=0 -KX=0 -LF=0 -LW=132 -LL=0 -LT=8 -Z=0 -CommandFile=0 -RA_OPT= -[Options.RA78K0R 1] -Version=100 -G=0 -GA=0 -E=0 -COMMON=0 -COMPATI=0 -P=1 -KA=1 -KS=0 -KX=0 -LF=0 -LW=132 -LL=0 -LT=8 -Z=0 -CommandFile=0 -RA_OPT= -[Options.RA78K0R 2] -Version=100 -O0= -O1=obj -G=1 -GA=1 -E=0 -COMMON=0 -COMPATI=0 -P=1 -KA=1 -KS=0 -KX=0 -LF=0 -LW=132 -LL=0 -LT=8 -Z=0 -CommandFile=0 -RA_OPT= -[Options.RA78K0R 3] -Version=100 -G=1 -GA=1 -E=0 -COMMON=0 -COMPATI=0 -P=1 -KA=1 -KS=0 -KX=0 -LF=0 -LW=132 -LL=0 -LT=8 -Z=0 -CommandFile=0 -RA_OPT= -[Options.RA78K0R 4] -Version=100 -G=1 -GA=1 -E=0 -COMMON=0 -COMPATI=0 -P=1 -KA=1 -KS=0 -KX=0 -LF=0 -LW=132 -LL=0 -LT=8 -Z=0 -CommandFile=0 -RA_OPT= -[Options.RA78K0R 5] -Version=100 -G=1 -GA=1 -E=0 -COMMON=0 -COMPATI=0 -P=1 -KA=1 -KS=0 -KX=0 -LF=0 -LW=132 -LL=0 -LT=8 -Z=0 -CommandFile=0 -RA_OPT= -[ToolSet] -ToolSetName=(変更)78K0R Software Package V1.10 -Tool1=CC78K0R|W2.13 -Tool2=RA78K0R|W1.33 -Tool3=SK78K0R|V3.10 -Tool4=ID78K0R-QB|V3.61 -[Options.LK78K0R 0] -Version=100 -O0=bsr_k0r.lmf -O1=bsr.lmf -O2=flash.lmf -O3=a.lmf -G=1 -E=0 -E0=flash.elk -E1=a.elk -GO=1 -GOValue=85 -GOStart=FC00 -GOSizeValue=1024 -GI=1 -GIValue=FFFFFFFFFFFFFFFFFFFF -CCZA=0 -MemInfoCheck=1 -P=1 -P0=bsr_k0r.map -P1=bsr.map -P2=flash.map -P3=a.map -MI=0 -GB=1 -GBValue=6EFBFF -KM=1 -KD=0 -KP=1 -KL=0 -LF=0 -LL=0 -B0=C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\lib78k0r\fsl.lib -D0=bsr_mcu.dr -D1=user_area.dr -S=1 -W=0 -SELFCheck=1 -SELF=0 -ZB= -Etcetera0= -Etcetera1=boot.lmf -CommandFile=0 -[Options.LK78K0R 1] -Version=100 -O0=a.lmf -G=0 -E=0 -E0=a.elk -GO=0 -GOValue= -GOStart=FC00 -GOSizeValue=1024 -GI=0 -GIValue=FFFFFFFFFFFFFFFFFFFF -CCZA=1 -MemInfoCheck=0 -P=1 -P0=a.map -MI=0 -GB=0 -GBValue= -KM=1 -KD=1 -KP=0 -KL=0 -LF=0 -LL=0 -S=0 -W=1 -SELFCheck=0 -SELF=0 -ZB= -CommandFile=0 -[Options.LK78K0R 2] -Version=100 -O0=bsr.lmf -O1=bsr_k0r.lmf -O2=flash.lmf -O3=a.lmf -G=1 -E=0 -E0=flash.elk -E1=a.elk -GO=0 -GOValue=85 -GOStart=FC00 -GOSizeValue=1024 -GI=1 -GIValue=1B339499E033F240BFAA -CCZA=0 -MemInfoCheck=1 -P=1 -P0=bsr_k0r.map -P1=bsr.map -P2=flash.map -P3=a.map -MI=0 -GB=1 -GBValue=7EFBFF -KM=1 -KD=0 -KP=0 -KL=0 -LF=0 -LL=0 -B0=C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\lib78k0r\fsl.lib -B1=C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\lib78k0r\fsl.lib -D0=bsr_mcu.dr -D1=user_area.dr -S=1 -W=0 -SELFCheck=0 -SELF=0 -ZB= -Etcetera0= -Etcetera1=boot.lmf -CommandFile=0 -OFILE=C:\78k_data\yav-mcu-basara\trunk\bsr.lmf -[Options.LK78K0R 3] -Version=100 -O0=bsr_bsr.lmf -O1=bsr_k0r.lmf -O2=bsr.lmf -O3=flash.lmf -O4=a.lmf -G=1 -E=0 -E0=flash.elk -E1=a.elk -GO=1 -GOValue=85 -GOStart=FC00 -GOSizeValue=1024 -GI=1 -GIValue=FFFFFFFFFFFFFFFFFFFF -CCZA=0 -MemInfoCheck=1 -P=1 -P0=bsr_bsr.map -P1=bsr_k0r.map -P2=bsr.map -P3=flash.map -P4=a.map -MI=0 -GB=1 -GBValue=6EFBFF -KM=1 -KD=0 -KP=1 -KL=0 -LF=0 -LL=0 -B0=C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\lib78k0r\fsl.lib -D0=bsr_mcu.dr -D1=user_area.dr -S=1 -W=2 -SELFCheck=0 -SELF=0 -ZB= -Etcetera0= -Etcetera1=boot.lmf -CommandFile=0 -[Options.LK78K0R 4] -Version=100 -O0=bsr_k0r.lmf -O1=bsr.lmf -O2=flash.lmf -O3=a.lmf -G=1 -E=0 -E0=flash.elk -E1=a.elk -GO=1 -GOValue=85 -GOStart=FC00 -GOSizeValue=1024 -GI=1 -GIValue=FFFFFFFFFFFFFFFFFFFF -CCZA=0 -MemInfoCheck=1 -P=1 -P0=bsr_k0r.map -P1=bsr.map -P2=flash.map -P3=a.map -MI=0 -GB=1 -GBValue=6EFBFF -KM=1 -KD=0 -KP=1 -KL=0 -LF=0 -LL=0 -B0=C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\lib78k0r\fsl.lib -D0=bsr_mcu.dr -D1=user_area.dr -S=1 -W=0 -SELFCheck=1 -SELF=0 -ZB= -Etcetera0= -Etcetera1=boot.lmf -CommandFile=0 -[Options.LK78K0R 5] -Version=100 -O0=bsr_bsr.lmf -O1=bsr_k0r.lmf -O2=bsr.lmf -O3=flash.lmf -O4=a.lmf -G=1 -E=0 -E0=flash.elk -E1=a.elk -GO=1 -GOValue=85 -GOStart=FC00 -GOSizeValue=1024 -GI=1 -GIValue=FFFFFFFFFFFFFFFFFFFF -CCZA=0 -MemInfoCheck=1 -P=1 -P0=bsr_bsr.map -P1=bsr_k0r.map -P2=bsr.map -P3=flash.map -P4=a.map -MI=0 -GB=1 -GBValue=6EFBFF -KM=1 -KD=0 -KP=1 -KL=0 -LF=0 -LL=0 -B0=C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\lib78k0r\fsl.lib -D0=bsr_mcu.dr -D1=user_area.dr -S=1 -W=2 -SELFCheck=0 -SELF=0 -ZB= -Etcetera0= -Etcetera1=boot.lmf -CommandFile=0 -[Options.LCNV78K0R 0] -Version=100 -LCNV_GO=0 -E=0 -CommandFile=0 -[Options.LCNV78K0R 1] -Version=100 -LCNV_GO=0 -E=0 -CommandFile=0 -[Options.LCNV78K0R 2] -Version=100 -LCNV_GO=0 -O0=inter_asm -E=0 -CommandFile=0 -[Options.LCNV78K0R 3] -Version=100 -LCNV_GO=0 -E=0 -CommandFile=0 -[Options.LCNV78K0R 4] -Version=100 -LCNV_GO=0 -E=0 -CommandFile=0 -[Options.LCNV78K0R 5] -Version=100 -LCNV_GO=0 -E=0 -CommandFile=0 -[Options.78K0R] -BuildMode=2 -BuildMode2=K0R_dbg -BuildMode3=BSR_dbg -BuildMode4=BSR_rel -BuildMode5=BSR_WM0 -DefaultMode2=1 -DefaultMode3=1 -DefaultMode4=1 -DefaultMode5=1 diff --git a/trunk/yav_mcu_bsr.prk b/trunk/yav_mcu_bsr.prk index 4ef0391..7f8119d 100644 --- a/trunk/yav_mcu_bsr.prk +++ b/trunk/yav_mcu_bsr.prk @@ -1,22 +1,42 @@ [ProjectManager] FrameMax=0 -FrameX=89 -FrameY=169 -FrameCX=1550 -FrameCY=921 -OpenFile1=led.c,0,100,100,1295,581,2,168,45,0 -OpenFile2=ProjectWindow +FrameX=383 +FrameY=50 +FrameCX=1293 +FrameCY=1075 +OpenFile1=loader.c,0,248,38,1221,669,0,1,0,0 +OpenFile2=pm.c,0,373,197,1346,828,0,1,0,0 +OpenFile3=i2c_ctr.c,0,655,120,1628,751,0,1,0,0 +OpenFile4=main.c,0,250,250,1841,957,0,1,0,0 +OpenFile5=magic.c,0,300,300,1891,1007,0,1,0,0 +OpenFile6=WDT.c,0,275,275,1866,982,0,2,24,0 +OpenFile7=i2c_mcu.c,0,325,325,1916,1032,0,1,0,0 +OpenFile8=i2c_twl.c,0,364,126,1955,833,0,1,0,0 +OpenFile9=led.c,0,228,97,1819,804,0,1,0,0 +OpenFile10=rtc.c,0,364,142,1955,849,0,1,0,0 +OpenFile11=vreg_ctr.c,0,313,167,1904,874,0,1,0,0 +OpenFile12=vreg_twl.c,0,353,225,1944,932,0,1,0,0 +OpenFile13=adc.c,0,300,241,1891,948,0,1,0,0 +OpenFile14=renge\renge.c,0,342,270,1933,977,0,1,0,0 +OpenFile15=accero.c,0,355,308,1328,939,0,1,0,0 +OpenFile16=self_flash.c,0,346,268,1937,975,0,1,0,0 +OpenFile17=sw.c,0,358,322,1949,1029,0,1,0,0 +OpenFile18=task_debug.c,0,332,258,1923,965,0,1,0,0 +OpenFile19=task_misc.c,0,364,322,1955,1029,0,1,0,0 +OpenFile20=task_sys.c,0,351,450,1521,951,0,1,0,0 +OpenFile21=pedo_alg_thre_det2.c,0,414,74,1387,705,0,1,0,0 +OpenFile22=ini_VECT.c,0,275,275,1866,982,0,1,0,0 +OpenFile23=task_status.c,0,300,300,1891,1007,0,1,0,0 +OpenFile24=led_cam.c,0,325,325,1916,1032,0,1,0,0 +OpenFile25=led_pow.c,0,354,184,1945,891,0,1,0,0 +OpenFile26=hal.c,0,262,160,1853,867,0,1,0,0 +OpenFile27=batt_params.c,0,376,168,1967,875,0,1,0,0 +OpenFile28=voltable.c,0,300,300,1273,931,0,1,0,0 +OpenFile29=ProjectWindow PrjPos=0,0,706,0,291 -OpenFile3=led_cam.c,0,125,125,1320,606,0,24,0,0 -OpenFile4=led_pow.c,0,150,150,1345,631,0,205,0,0 -OpenFile5=config.h,0,442,428,1557,1029,29,23,29,0 -OpenFile6=i2c_mcu.c,0,175,175,1766,882,0,303,0,0 -OpenFile7=i2c_mcu.h,0,200,200,1791,907,46,23,48,0 -OpenFile8=self_flash.c,0,0,0,1195,481,21,290,12,0 -OpenFile9=batt_params.h,0,596,19,1842,741,0,31,0,0 -OpenFile10=pm.c,0,225,225,1278,761,33,54,32,0 -OpenFile11=OutputWindow -OutputPos=0,198,904,529,1655 +OpenFile30=pedo_lpf_coeff.c,0,478,297,1451,928,0,1,19,0 +OpenFile31=OutputWindow +OutputPos=0,349,1040,690,1928 ActivePRJ=yav_mcu_bsr.prj [ProjectWindow] ProjectWindowDispType=0 diff --git a/trunk/yav_mcu_bsr.sdb b/trunk/yav_mcu_bsr.sdb index d554cbd..5c855af 100644 --- a/trunk/yav_mcu_bsr.sdb +++ b/trunk/yav_mcu_bsr.sdb @@ -1,9 +1,9 @@ [SdbInfo] Ver=5 [loader.c] -T=4cc02a17 +T=4e4248ee 1=incs_loader.h -2=C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r\fsl.h +2=..\..\..\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r\fsl.h 3=fsl_user.h 4=i2c_ctr.h 5=i2c_mcu.h @@ -12,21 +12,21 @@ T=4cc02a17 8=reboot.h 9=magic.h [pm.c] -T=4ce758f6 +T=4e4111a9 1=incs.h 2=adc.h 3=led.h 4=pm.h 5=renge\renge.h 6=batt_params.h -7=C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r\fsl.h +7=..\..\..\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r\fsl.h 8=fsl_user.h [i2c_ctr.c] -T=4cc020c9 +T=4e409e63 1=config.h 2=incs.h [main.c] -T=4cd9f64d +T=4e40c90e 1=incs_loader.h 2=WDT.h 3=rtc.h @@ -36,31 +36,31 @@ T=4cd9f64d 7=adc.h 8=pool.h [magic.c] -T=4ce75924 +T=4e4248f2 1=config.h 2=magic.h [WDT.c] -T=4cc020c9 +T=4e424710 1=incs_loader.h [i2c_mcu.c] -T=4cd9f64c +T=4e4234b9 1=incs_loader.h 2=i2c_mcu.h [i2c_twl.c] -T=4cc020c9 +T=4e409e61 1=config.h 2=incs.h 3=i2c_twl_defs.h 4=i2c_twl.h [led.c] -T=4cd9fb99 +T=4e423830 1=incs.h 2=led.h [rtc.c] -T=4cd9f64c +T=4e423614 1=incs.h [vreg_ctr.c] -T=4cc020c9 +T=4e409e63 1=incs.h 2=vreg_ctr.h 3=rtc.h @@ -68,48 +68,48 @@ T=4cc020c9 5=accero.h 6=pm.h 7=pool.h -8=C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r\fsl.h +8=..\..\..\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r\fsl.h 9=fsl_user.h [vreg_twl.c] -T=4cc11aea +T=4d5e3e6f 1=incs.h 2=jhl_defs.h 3=led.h 4=vreg_twl.h 5=vreg_ctr.h [adc.c] -T=4cc14cca +T=4e42374e 1=incs.h 2=adc.h 3=pm.h 4=led.h 5=vreg_twl.h -6=voltable.h [renge\renge.c] -T=4cd9f64c +T=4e40d459 1=renge\renge.h 2=renge\renge_task_intval.h 3=renge\renge_task_immediate.h 4=WDT.h 5=config.h 6=user_define.h -7=bsr_system.h +7=sim\simOnWin.h +8=bsr_system.h [accero.c] -T=4cc020c9 +T=4e422e91 1=config.h 2=incs.h -3=..\..\..\..\Program Files\NEC Electronics Tools\CC78K0R\W2.12\inc78k0r\math.h +3=..\..\..\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r\math.h [self_flash.c] -T=4cd9f64c +T=4e409e18 1=incs_loader.h -2=C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r\fsl.h +2=..\..\..\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r\fsl.h 3=fsl_user.h 4=i2c_ctr.h 5=pool.h 6=magic.h 7=pm.h [sw.c] -T=4cc020c9 +T=4e4251bb 1=incs.h 2=i2c_twl.h 3=i2c_ctr.h @@ -118,13 +118,13 @@ T=4cc020c9 6=rtc.h 7=sw.h [task_debug.c] -T=4cc020c9 +T=4e409e1c 1=incs_loader.h 2=renge\renge.h 3=pm.h 4=accero.h [task_misc.c] -T=4cd9f5ab +T=4e409e61 1=incs.h 2=renge\renge.h 3=pm.h @@ -134,7 +134,7 @@ T=4cd9f5ab 7=led.h 8=vreg_twl.h [task_sys.c] -T=4cd9f64c +T=4e4251f0 1=incs.h 2=i2c_twl.h 3=i2c_ctr.h @@ -146,126 +146,160 @@ T=4cd9f64c 9=adc.h 10=self_flash.h [pedo_alg_thre_det2.c] -T=4cc020c9 +T=4e423b4a 1=incs.h -2=..\..\..\..\Program Files\NEC Electronics Tools\CC78K0R\W2.12\inc78k0r\math.h +2=..\..\..\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r\math.h 3=accero.h 4=pedometer.h -5=pedo_lpf_coeff.h -6=pool.h +5=pool.h [ini_VECT.c] -T=4cc020c9 +T=4e409e1a 1=config.h +2=sim\sim_interrupt_decrare.c [task_status.c] -T=4cc020c9 +T=4e409e1c 1=incs_loader.h 2=renge\renge.h -3=pm.h -4=accero.h -5=adc.h -6=i2c_mcu.h -[incs_loader.h] -T=4cc020c9 +3=hal.h +4=pm.h +5=accero.h +6=adc.h +7=i2c_mcu.h +8=led.h +[led_cam.c] +T=4e409e1d +1=incs.h +2=led.h +[led_pow.c] +T=4e423450 +1=incs.h +2=led.h +[hal.c] +T=4e40c910 +1=incs_loader.h +[batt_params.c] +T=4e409e1b 1=jhl_defs.h -2=user_define.h -3=bsr_system.h -4=renge\renge.h -5=vreg_ctr.h -6=vreg_twl.h -7=loader.h -8=i2c_mcu.h -9=WDT.h -[jhl_defs.h] -T=4cc020c9 +2=batt_params.h +[voltable.c] +T=4e422f23 +1=incs.h +[pedo_lpf_coeff.c] +T=4e422f1d +1=incs.h +[incs_loader.h] +T=4e409e1d +1=sim\simOnWin.h +2=jhl_defs.h +3=user_define.h +4=hal.h +5=bsr_system.h +6=renge\renge.h +7=vreg_ctr.h +8=vreg_twl.h +9=loader.h +10=i2c_mcu.h +11=WDT.h +[sim\simOnWin.h] +T=4e4243ba +1=sim\sfrAlias.h +[sim\sfrAlias.h] +T=4e409e19 1=config.h [config.h] -T=4ce75a11 +T=4e409e18 +[jhl_defs.h] +T=4df82cd1 +1=config.h [user_define.h] -T=4cc020c9 +T=4e409e1d +[hal.h] +T=4e40c8f0 [bsr_system.h] -T=4cc020c9 +T=4e409e1a [renge\renge.h] -T=4cc020c4 +T=4cbf8235 1=renge\renge_defs.h 2=renge\renge_task_immediate.h [renge\renge_defs.h] -T=4cc020c4 +T=4c073c5a [renge\renge_task_immediate.h] -T=4cc020c4 +T=4d37f8c8 1=renge\renge_defs.h [vreg_ctr.h] -T=4cc11aea +T=4e409e1c 1=config.h [vreg_twl.h] -T=4cc11aea +T=4d42202e [loader.h] -T=4cc020c9 +T=4c318e0f [i2c_mcu.h] -T=4cc020c9 +T=4dde0033 [WDT.h] -T=4cc020c9 -[C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r\fsl.h] +T=4c319dfc +[..\..\..\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r\fsl.h] T=49a3bd4e [fsl_user.h] -T=4cc020c9 +T=4e409e62 [i2c_ctr.h] -T=4cc020c9 +T=4bf0d1e1 [pm.h] -T=4cd9f5ab +T=4e409e1c [rtc.h] -T=4cc020c9 +T=4e409e1c [reboot.h] -T=4cc020c9 +T=4bf0d1e1 [magic.h] -T=4cc020c9 +T=4caab849 [incs.h] -T=4cc020c9 -1=jhl_defs.h -2=user_define.h -3=bsr_system.h -4=renge\renge.h -5=loader.h -6=vreg_ctr.h -7=vreg_twl.h -8=i2c_mcu.h -9=i2c_twl.h -10=rtc.h -11=accero.h -12=pm.h -13=sw.h -14=adc.h -15=WDT.h +T=4e409e18 +1=sim\simOnWin.h +2=jhl_defs.h +3=user_define.h +4=hal.h +5=bsr_system.h +6=renge\renge.h +7=loader.h +8=vreg_ctr.h +9=vreg_twl.h +10=i2c_mcu.h +11=i2c_twl.h +12=rtc.h +13=accero.h +14=pm.h +15=sw.h +16=adc.h +17=WDT.h [i2c_twl.h] -T=4bf0fdc7 +T=4bf4e29e [accero.h] -T=4cc020c9 +T=4ca28964 1=jhl_defs.h 2=pedometer.h [pedometer.h] -T=4cc020c9 +T=4e409e19 [sw.h] -T=4cc020c9 +T=4df2001a 1=config.h [adc.h] -T=4cc020c9 +T=4dd5c8b2 1=jhl_defs.h [led.h] -T=4cc020c9 +T=4e409e1c [batt_params.h] -T=4cc020c9 +T=4e409e1c +1=jhl_defs.h [pool.h] -T=4cc020c9 +T=4c072cf1 1=pedometer.h [i2c_twl_defs.h] -T=4cc020c9 -[voltable.h] -T=4cc020c9 +T=4bf0d1e1 [renge\renge_task_intval.h] -T=4cc020c4 +T=4d5e55a1 1=renge\renge_defs.h -[..\..\..\..\Program Files\NEC Electronics Tools\CC78K0R\W2.12\inc78k0r\math.h] +[..\..\..\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r\math.h] T=45f12258 [self_flash.h] -T=4cc020c9 -[pedo_lpf_coeff.h] -T=4cc020c9 +T=4bf0d1e0 +[sim\sim_interrupt_decrare.c] +T=4e409e19 diff --git a/trunk/繝吶シ繧ケ縺九i縺ョ螟画峩.xls b/trunk/繝吶シ繧ケ縺九i縺ョ螟画峩.xls new file mode 100644 index 0000000..5212dac Binary files /dev/null and b/trunk/繝吶シ繧ケ縺九i縺ョ螟画峩.xls differ