From 4efe3574918e6fbc033d07350eabc00340635736 Mon Sep 17 00:00:00 2001 From: N2232 Date: Tue, 13 Jul 2010 12:12:27 +0000 Subject: [PATCH] =?UTF-8?q?CODEC=E3=81=AE=E4=B8=8D=E5=85=B7=E5=90=88?= =?UTF-8?q?=E5=AF=BE=E7=AD=96=E3=81=A7Vol=E3=82=92SPI=E3=81=8B=E3=82=89?= =?UTF-8?q?=E6=9B=B8=E3=81=8F=E3=81=9F=E3=82=81=E3=81=AE=E4=BB=95=E7=B5=84?= =?UTF-8?q?=E3=81=BF=E3=82=92=E8=BF=BD=E5=8A=A0=20=E3=82=B9=E3=83=A9?= =?UTF-8?q?=E3=82=A4=E3=83=80=E3=81=AE=E5=8F=AF=E5=8B=95=E7=AF=84=E5=9B=B2?= =?UTF-8?q?=E3=81=8C=E3=82=82=E3=81=A8=E3=82=82=E3=81=A8=E7=AD=90=E4=BD=93?= =?UTF-8?q?=E3=81=A7=E5=88=B6=E9=99=90=E3=81=95=E3=82=8C=E3=81=A6=E3=81=84?= =?UTF-8?q?=E3=82=8B=E3=81=8C=E3=80=81=EF=BC=90=E5=81=B4=E3=81=AB=E5=AF=84?= =?UTF-8?q?=E3=81=A3=E3=81=A6=E3=81=84=E3=82=8B=E3=81=AE=E3=81=A7Vol?= =?UTF-8?q?=E3=83=AC=E3=82=B8=E3=82=B9=E3=82=BF=E3=81=AB=E5=8F=8D=E6=98=A0?= =?UTF-8?q?=E3=81=95=E3=81=9B=E3=82=8B=E9=9A=9B=E3=81=AB0-63=E3=81=8C?= =?UTF-8?q?=E3=81=A7=E3=82=8B=E3=82=88=E3=81=86=E3=82=B9=E3=82=B1=E3=83=BC?= =?UTF-8?q?=E3=83=AA=E3=83=B3=E3=82=B0=E3=82=92=E8=AA=BF=E6=95=B4=20?= =?UTF-8?q?=E3=83=90=E3=83=83=E3=83=86=E3=83=AA=E3=83=91=E3=83=A9=E3=83=A1?= =?UTF-8?q?=E3=83=BC=E3=82=BF=E3=81=AE=E6=9C=80=E7=B5=82=E7=89=88=E3=82=92?= =?UTF-8?q?=E5=8F=8D=E6=98=A0=E3=80=82=20ROM=E3=81=8C=E3=81=82=E3=81=B5?= =?UTF-8?q?=E3=82=8C=E3=81=9D=E3=81=86=E3=81=AA=E3=81=AE=E3=81=A7RTC?= =?UTF-8?q?=E3=82=92=E3=83=96=E3=83=BC=E3=83=88=E3=83=96=E3=83=AD=E3=83=83?= =?UTF-8?q?=E3=82=AF=E3=81=AB=E7=A7=BB=E5=8B=95=20=E3=83=9B=E3=82=BF?= =?UTF-8?q?=E3=83=AB=E5=BB=83=E6=AD=A2=E3=80=81SoC=E3=81=8B=E3=82=89?= =?UTF-8?q?=E3=81=AF=E6=B5=81=E3=81=97=E8=BE=BC=E3=82=81=E3=81=AA=E3=81=84?= =?UTF-8?q?=E3=81=8C=E3=81=8A=E7=9F=A5=E3=82=89=E3=81=9BLED=E3=81=AE?= =?UTF-8?q?=E6=A7=98=E3=81=AB=E3=83=86=E3=83=BC=E3=83=96=E3=83=AB=E3=81=8B?= =?UTF-8?q?=E3=82=89=E8=A3=9C=E5=AE=8C=E3=81=99=E3=82=8B=E3=82=88=E3=81=86?= =?UTF-8?q?=E3=81=AB=E5=A4=89=E6=9B=B4=E3=80=82=E3=82=B3=E3=83=BC=E3=83=89?= =?UTF-8?q?=E6=B5=81=E7=94=A8=E3=80=82=E4=BB=95=E6=A7=98=E5=A4=89=E6=9B=B4?= =?UTF-8?q?=20=E5=85=85=E9=9B=BB=E5=91=A8=E3=82=8A=E3=81=AE=E3=81=9F?= =?UTF-8?q?=E3=81=8F=E3=81=95=E3=82=93=E3=81=AE=E3=83=90=E3=82=B0=E3=82=92?= =?UTF-8?q?=E4=BF=AE=E6=AD=A3=20=E3=83=BB=E9=9B=BB=E6=B1=A0=E3=82=92?= =?UTF-8?q?=E6=8A=9C=E3=81=84=E3=81=A6=E3=82=82CE=E3=82=92=E3=82=A2?= =?UTF-8?q?=E3=82=B5=E3=83=BC=E3=83=88=E3=81=97=E3=81=A3=E3=81=B1=E3=81=AA?= =?UTF-8?q?=E3=81=97=E3=81=A0=E3=81=A3=E3=81=9F=E3=82=8A=E3=80=81=20?= =?UTF-8?q?=E3=83=BB=E9=81=8E=E6=94=BE=E9=9B=BB=E3=81=AE=E9=9B=BB=E6=B1=A0?= =?UTF-8?q?=E3=81=AB=E5=85=85=E9=9B=BB=E3=81=A7=E3=81=8D=E3=81=AA=E3=81=8B?= =?UTF-8?q?=E3=81=A3=E3=81=9F=E3=82=8A=20=E3=83=BB=E3=83=90=E3=83=83?= =?UTF-8?q?=E3=83=86=E3=83=AA=E3=83=91=E3=83=A9=E3=83=A1=E3=83=BC=E3=82=BF?= =?UTF-8?q?=E3=82=92=E9=80=81=E3=82=8A=E3=81=99=E3=81=8E=E3=81=9F=E3=82=8A?= =?UTF-8?q?=E9=80=81=E3=82=8A=E5=BF=98=E3=82=8C=E3=81=9F=E3=82=8A=20?= =?UTF-8?q?=E6=AD=A9=E6=95=B0=E8=A8=88=E3=81=AE=E5=A2=83=E7=95=8C=E5=88=86?= =?UTF-8?q?=E3=83=BB=E7=A7=92=E3=81=AE=E5=88=A4=E5=AE=9A=E3=82=92=E8=AA=A4?= =?UTF-8?q?=E3=81=A3=E3=81=A6=E3=81=84=E3=81=9F=E3=80=82=E4=BF=AE=E6=AD=A3?= =?UTF-8?q?=E3=83=BB=E3=83=AA=E3=83=95=E3=82=A1=E3=82=AF=E3=82=BF=E3=83=AA?= =?UTF-8?q?=E3=83=B3=E3=82=B0=20=E9=9B=BB=E6=B1=A0=E9=9B=BB=E5=9C=A7?= =?UTF-8?q?=E3=81=A7=E6=AE=8B=E9=87=8F=E3=82=92=E3=82=AD=E3=83=A3=E3=83=83?= =?UTF-8?q?=E3=83=97=E3=81=97=E3=81=9F=E3=82=8A=20=E3=80=80=E3=82=AD?= =?UTF-8?q?=E3=83=A3=E3=83=83=E3=83=97=E3=81=97=E3=81=9F=E3=81=A8=E3=81=8D?= =?UTF-8?q?=E3=81=ABLED=E3=81=8C=E8=B5=A4=E9=9D=92=E3=81=97=E3=81=AA?= =?UTF-8?q?=E3=81=84=E3=82=88=E3=81=86=E3=81=AB=E3=83=92=E3=82=B9=E3=83=86?= =?UTF-8?q?=E3=83=AA=E3=82=B7=E3=82=B9=E3=82=92=E5=85=A5=E3=82=8C=E3=81=9F?= =?UTF-8?q?=20=E6=B8=A9=E5=BA=A6=E3=81=A7=E5=85=85=E9=9B=BB=E5=81=9C?= =?UTF-8?q?=E6=AD=A2=E3=80=81=E3=83=81=E3=83=A3=E3=82=BF=E3=83=AA=E3=83=B3?= =?UTF-8?q?=E3=82=B0=E3=81=8C=E3=81=B2=E3=81=A9=E3=81=84=E3=81=AE=E3=81=A7?= =?UTF-8?q?=E4=B8=80=E8=88=AC=E7=9A=84=E3=81=AA=E3=83=81=E3=83=A3=E3=82=BF?= =?UTF-8?q?=E3=83=AA=E3=83=B3=E3=82=B0=E9=98=B2=E6=AD=A2=E3=82=92=E8=BF=BD?= =?UTF-8?q?=E5=8A=A0=20=E6=A9=9F=E7=A8=AE=E5=88=A4=E5=AE=9A=E3=81=AA?= =?UTF-8?q?=E3=81=A9=E3=81=8C=E3=82=82=E3=81=86=E3=82=81=E3=81=A1=E3=82=83?= =?UTF-8?q?=E3=82=81=E3=81=A1=E3=82=83=E3=81=A0=E3=81=A3=E3=81=9F=E3=81=AE?= =?UTF-8?q?=E3=81=A7=E3=83=AA=E3=83=95=E3=82=A1=E3=82=AF=E3=82=BF=E3=83=AA?= =?UTF-8?q?=E3=83=B3=E3=82=B0=20=E9=9B=BB=E6=BA=90OFF=E6=99=82=E3=80=81?= =?UTF-8?q?=E3=81=A8=E3=82=8A=E3=81=82=E3=81=88=E3=81=9ALCD=E7=B3=BB?= =?UTF-8?q?=E9=9B=BB=E6=BA=90=E3=82=92=E8=90=BD=E3=81=A8=E3=81=99=E3=81=8C?= =?UTF-8?q?=E3=82=A6=E3=82=A7=E3=82=A4=E3=83=88=E3=82=92=E8=AA=BF=E6=95=B4?= =?UTF-8?q?=20=E9=9B=BB=E6=B1=A0=E6=AE=8B=E9=87=8FIC=E3=81=8C=E9=9B=BB?= =?UTF-8?q?=E6=B1=A0=E6=AE=8B=E9=87=8F=EF=BC=90=E3=81=A8=E3=81=84=E3=81=A3?= =?UTF-8?q?=E3=81=A6=E3=82=82=E3=83=9E=E3=82=A4=E3=82=B3=E3=83=B3=E3=81=8B?= =?UTF-8?q?=E3=82=89=E3=81=AF=E9=9B=BB=E6=BA=90=E3=82=92=E8=90=BD=E3=81=A8?= =?UTF-8?q?=E3=81=95=E3=81=AA=E3=81=84=E3=80=823.1V=E3=81=BE=E3=81=A7?= =?UTF-8?q?=E3=81=AF=E5=8B=95=E3=81=8B=E3=81=99=E3=80=82=E4=BB=95=E6=A7=98?= =?UTF-8?q?=E5=A4=89=E6=9B=B4=20=E5=BC=B7=E5=88=B6=E9=9B=BB=E6=BA=90?= =?UTF-8?q?=E6=96=AD=E3=81=AE=E4=BB=95=E6=A7=98=E5=A4=89=E6=9B=B4=E3=80=82?= =?UTF-8?q?2sec=E6=8A=91=E3=81=88=E3=81=9F=E3=82=89=E5=95=8F=E7=AD=94?= =?UTF-8?q?=E7=84=A1=E7=94=A8=E3=81=A7=E3=81=95=E3=82=89=E3=81=AB4sec?= =?UTF-8?q?=E5=BE=8C=E3=81=ABoff=E2=86=926=E7=A7=92=E6=8A=BC=E3=81=95?= =?UTF-8?q?=E3=81=88=E7=B6=9A=E3=81=91=E3=81=9F=E3=82=890ff?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-05-23%20-%20ctr.7z%20+%20svn_v1.068.zip/ctr/svn/ctr_mcu@202 013db118-44a6-b54f-8bf7-843cb86687b1 --- trunk/adc.c | 142 ++- trunk/adc.h | 2 + trunk/batt_params.h | 74 +- trunk/bsr.hex | 1808 ++++++++++++++++++------------------ trunk/bsr.lmf | Bin 155996 -> 158016 bytes trunk/bsr_k0r.map | 584 ++++++------ trunk/bsr_system.h | 2 +- trunk/config.h | 2 +- trunk/hoge.bin | Bin 16387 -> 16387 bytes trunk/incs.h | 2 + trunk/led.c | 96 +- trunk/led.h | 2 +- trunk/main.c | 3 +- trunk/pedo_alg_thre_det2.c | 41 +- trunk/pm.c | 1275 ++++++++++++------------- trunk/pm.h | 16 +- trunk/rtc.c | 2 +- trunk/self_flash.c | 5 +- trunk/sw.c | 7 +- trunk/sw.h | 11 +- trunk/task_misc.c | 7 +- trunk/task_sys.c | 46 +- trunk/vreg_ctr.c | 33 +- trunk/vreg_ctr.h | 10 +- trunk/vreg_twl.c | 16 +- trunk/yav_mcu_bsr.plg | 38 +- trunk/yav_mcu_bsr.pri | 148 +-- trunk/yav_mcu_bsr.prj | 138 +-- trunk/yav_mcu_bsr.prk | 16 +- trunk/yav_mcu_bsr.sdb | 51 +- 30 files changed, 2307 insertions(+), 2270 deletions(-) diff --git a/trunk/adc.c b/trunk/adc.c index fe96b7f..0dc0c57 100644 --- a/trunk/adc.c +++ b/trunk/adc.c @@ -18,13 +18,12 @@ // ===================================================== // 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_written_ctr; - -bit vol_by_twl; typedef struct filter_work @@ -68,7 +67,7 @@ static u8 adc_scaling( u8 ); ・VOL 関係ありそうですが別のところで管理しています - ・PM_BT_DET,_P BT_init + ・PM_BT_DET,_P BT_chk ・8tics毎に呼ばれ、3チャンネル分取り込むとADCを停止します。  タスク起動時、レジスタには前回の取り込み値が入っています。 @@ -87,25 +86,27 @@ void tsk_adc( ) #if 0 // debug { - static u16 loop; - static u8 dat_old; static bit interval; -/* + // VOL書き頻度を半分にする interval++; if( !interval ) { return; } -*/ + } +#endif + +#if 0 + { + static u16 loop; + if( system_status.pwr_state == ON ) { loop++; if( loop == 499 ){ -// vol_written_ctr = 0; } else if( loop == 500 ){ - vol_written_ctr = 0; loop = 0; } else @@ -117,7 +118,7 @@ void tsk_adc( ) } //*/ #endif - + renge_task_immed_add( tski_vol_update ); // T = 2ms polling if( task_interval-- != 0 ) @@ -140,24 +141,14 @@ void tsk_adc( ) // Volume ///////////////////////////////////// { - static u8 vol_old; adc_filter( adc_scaling( adc_raw_vol ), &work_vr_vol ); // 結果は*work_vr_volから指されるvol_data_ctr 読みにくい... vol_data_ctr = vol_data_ctr_tmp / 4; - if(( vreg_ctr[ VREG_C_VOL_DIGITAL ] & REG_BIT_VOL_FORCE_REG ) != 0 ) - { - // レジスタから強制セット - vol_data_ctr = ( vreg_ctr[ VREG_C_VOL_DIGITAL ] & ~( REG_BIT_VOL_RESET | REG_BIT_VOL_FORCE_REG ) ); - } - if( vol_old != vol_data_ctr ) { + vol_changed_by_ctr = 1; vol_old = vol_data_ctr; - vol_by_twl = 0; - vreg_ctr[ VREG_C_SND_VOL ] = vol_data_ctr; // 64段 - vol_written_ctr = slider_to_codec[ vol_data_ctr ]; - vreg_twl[ REG_TWL_INT_ADRS_VOL ] = vol_data_ctr / 2; // renge_task_immed_add( tski_vol_update ); 2ms後でいいでしょう... } } @@ -181,6 +172,12 @@ void tsk_adc( ) +void vol_reset() +{ + vol_old = vol_data_ctr; + vreg_ctr[ VREG_C_SND_VOL ] = vol_data_ctr; // 64段 +} + /* ========================================================  Volを更新します。 @@ -191,41 +188,99 @@ void tsk_adc( ) ======================================================== */ task_status_immed tski_vol_update() { - u8 vol_scaled; - u8 temp; - u8 i; + static u8 sent_index, sent_index_slider, sent_index_twl; + static u8 sent_data; + static bit last_modifyer; // 0 = ctr - // SPIでかくテスト todo -// return( ERR_FINISED ); + if( system_status.pwr_state != ON ){ + return( ERR_FINISED ); + } - if( vol_by_twl ) + // どの音量にするの? // + if( vreg_ctr[ VREG_C_VOL_OPTION ] & REG_BIT_VOL_FORCE_SLIDER ) { - temp = slider_to_codec[ vreg_twl[ REG_TWL_INT_ADRS_VOL ] * 2 ]; + // 最優先 スライダに上書き + sent_index = vol_data_ctr; + } + else if( vol_changed_by_ctr ) + { + // スライダ + vol_changed_by_ctr = 0; + last_modifyer = 0; + if( vreg_ctr[ VREG_C_VOL_OPTION ] & REG_BIT_VOL_FORCE_REG ) + { + // レジスタから強制セット + sent_index_slider = vreg_ctr[ VREG_C_VOL_DIGITAL ]; + } + else + { + sent_index_slider = vol_data_ctr; // CTRスライダ + } + sent_index = sent_index_slider; + } + else if( vol_changed_by_twl ) + { + // TWLアプリ + vol_changed_by_twl = 0; + last_modifyer = 1; + if( vreg_twl[ REG_TWL_INT_ADRS_VOL ] == 0 ) + { + sent_index_twl = 0; + } + else + { + sent_index_twl = vreg_twl[ REG_TWL_INT_ADRS_VOL ] *2 +1; + } + sent_index = sent_index_twl; + set_irq( VREG_C_IRQ2, REG_BIT_TWL_SNDVOL_CHANGE ); } else { - temp = vol_written_ctr; + // force_sliderを0にしたとき & 書きまくるとき + // スライダかTWLの最後にセットした方をセット + if( last_modifyer == 0 ) + { + sent_index = sent_index_slider; + } + else + { + sent_index = sent_index_twl; + } } + // レジスタの更新 // + vreg_ctr[ VREG_C_SND_VOL ] = sent_index; + if( sent_index == 1 ) + { + vreg_twl[ REG_TWL_INT_ADRS_VOL ] = 1; + } + else + { + vreg_twl[ REG_TWL_INT_ADRS_VOL ] = sent_index/2 ; + } + + // CODECに書きに行く? + if( vreg_ctr[ VREG_C_VOL_OPTION ] & REG_BIT_VOL_BY_SPI ) + { + return( ERR_FINISED ); + } + // by SPI ならここまででおしまい // + // debug todo iic_mcu_read_a_byte( IIC_SLA_CODEC, CODEC_REG_VOL ); - + // codecに伝える - iic_mcu_write_a_byte( IIC_SLA_CODEC, CODEC_REG_VOL, temp ); + iic_mcu_write_a_byte( IIC_SLA_CODEC, CODEC_REG_VOL, slider_to_codec[ sent_index ] ); // debug todo iic_mcu_read_a_byte( IIC_SLA_CODEC, CODEC_REG_VOL ); -#ifndef _MODEL_CTR_ - iic_mcu_write_a_byte( IIC_SLA_DCP, 0, slider_to_codec[ ( 255 - vol_data ) / 4 ] ); -#endif // set_irq( VREG_C_IRQ0, REG_BIT_VR_SNDVOL_CHANGE ); // 割り込み廃止 - return( ERR_FINISED ); + return( ERR_FINISED ); } - /* ========================================================  過去3つのminでもMAXでもない値を返す  突発的なノイズを除く。 @@ -384,23 +439,24 @@ u8 get_adc( u8 ch ) /* ======================================================== VRの可動範囲を考えてスケーリング ======================================================== */ -#define ASOBI 10 +#define ASOBI_L 4 +#define ASOBI_H 16 static u8 adc_scaling( u8 orig_val ) { u16 temp; - if( orig_val > ( 255 - ASOBI )) + if( orig_val > ( 255 - ASOBI_H )) { return( 255 ); } - if( orig_val <= ASOBI ) + if( orig_val <= ASOBI_L ) { return( 0 ); } - orig_val -= ASOBI; - temp = (u16)( orig_val * 256 ) / ( 256 - ( 2 * ASOBI )); + orig_val -= ASOBI_L; + temp = (u16)( orig_val * 256 ) / ( 256 - ( ASOBI_L + ASOBI_H )); return( (u8)( temp & 0xFF ) ); } diff --git a/trunk/adc.h b/trunk/adc.h index e18bf83..88dde07 100644 --- a/trunk/adc.h +++ b/trunk/adc.h @@ -38,6 +38,8 @@ /////////////////////////////////////// u8 get_adc( u8 ch ); +void vol_reset(); + #endif diff --git a/trunk/batt_params.h b/trunk/batt_params.h index cb4b31e..59b20a4 100644 --- a/trunk/batt_params.h +++ b/trunk/batt_params.h @@ -7,43 +7,34 @@ const u8 BT_PARAM[][64] = { // ID = 0 GND マクセル { - 0xAD, 0x30, 0xAE, 0x70, 0xB0, 0x00, 0xB3, 0x00, - 0xB4, 0x70, 0xB5, 0xA0, 0xB7, 0x80, 0xBA, 0x00, - - 0xBB, 0x90, 0xBD, 0x00, 0xBE, 0x00, 0xBF, 0xF0, - 0xC3, 0x00, 0xC5, 0xC0, 0xC8, 0x00, 0xCA, 0xC0, - - 0x04, 0x00, 0x12, 0x00, 0x0C, 0x10, 0x24, 0x00, - 0x10, 0xD0, 0x1B, 0xF0, 0x0A, 0xF0, 0x08, 0xE0, - - 0x0C, 0xF0, 0x08, 0xC0, 0x08, 0xB0, 0x07, 0xF0, - 0x0B, 0x00, 0x05, 0xD0, 0x02, 0x00, 0x09, 0x00 + 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 }, { // ID = 1 120 ohm (ダミーでマクセル) - 0xAD, 0x30, 0xAE, 0x70, 0xB0, 0x00, 0xB3, 0x00, - 0xB4, 0x70, 0xB5, 0xA0, 0xB7, 0x80, 0xBA, 0x00, - - 0xBB, 0x90, 0xBD, 0x00, 0xBE, 0x00, 0xBF, 0xF0, - 0xC3, 0x00, 0xC5, 0xC0, 0xC8, 0x00, 0xCA, 0xC0, - - 0x04, 0x00, 0x12, 0x00, 0x0C, 0x10, 0x24, 0x00, - 0x10, 0xD0, 0x1B, 0xF0, 0x0A, 0xF0, 0x08, 0xE0, - - 0x0C, 0xF0, 0x08, 0xC0, 0x08, 0xB0, 0x07, 0xF0, - 0x0B, 0x00, 0x05, 0xD0, 0x02, 0x00, 0x09, 0x00 + 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 }, { // ID = 2 360 hom (ダミーでマクセル) - 0xAD, 0x30, 0xAE, 0x70, 0xB0, 0x00, 0xB3, 0x00, - 0xB4, 0x70, 0xB5, 0xA0, 0xB7, 0x80, 0xBA, 0x00, - - 0xBB, 0x90, 0xBD, 0x00, 0xBE, 0x00, 0xBF, 0xF0, - 0xC3, 0x00, 0xC5, 0xC0, 0xC8, 0x00, 0xCA, 0xC0, - - 0x04, 0x00, 0x12, 0x00, 0x0C, 0x10, 0x24, 0x00, - 0x10, 0xD0, 0x1B, 0xF0, 0x0A, 0xF0, 0x08, 0xE0, - - 0x0C, 0xF0, 0x08, 0xC0, 0x08, 0xB0, 0x07, 0xF0, - 0x0B, 0x00, 0x05, 0xD0, 0x02, 0x00, 0x09, 0x00 + 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 }, { // ID = 3 750 ohm (ダミーでパナ) 0x8C, 0x30, 0x9C, 0x10, 0xA5, 0xE0, 0xB0, 0x40, @@ -103,9 +94,9 @@ typedef struct _st_bt_comp // 電池残量補正パラメータ const st_bt_comp BT_COMP[] = { // rcomp R_co_up R_co_down - { 135, -256* 0.15, -256* 2.15 }, // maxell - { 135, -256* 0.15, -256* 2.15 }, // dummy(M ) - { 135, -256* 0.15, -256* 2.15 }, // dummy(M ) + { 92, -256* 0.79, -256* 4.35 }, // maxell + { 92, -256* 0.79, -256* 4.35 }, // dummy(M ) + { 92, -256* 0.79, -256* 4.35 }, // dummy(M ) { 171, -256* 1.00, -256* 2.60 }, // dummy( P) { 171, -256* 1.00, -256* 2.60 }, // dummy( P) { 171, -256* 1.00, -256* 2.60 }, // panasonic @@ -113,18 +104,23 @@ const st_bt_comp BT_COMP[] = { }; +const u16 BT_OCV[] = { + { 0xD800 }, { 0xD800 }, { 0xD800 }, // maxell, dummy, dummy, + { 0xDA20 }, { 0xDA20 }, { 0xDA20 }, { 0xDA20 } // dummy, dummy, panaso, dummy +}; + const u8 BT_VERIFY_H[] = { - 0x75, 0x75, 0x75, // maxell, dummy, dummy, + 0xEA, 0xEA, 0xEA, // maxell, dummy, dummy, 0x69, 0x69, 0x69, 0x69 // dummy, dummy, panaso, dummy }; const u8 BT_VERIFY_L[] = { - 0x74, 0x74, 0x74, // maxell, dummy, dummy, + 0xE8, 0xE8, 0xE8, // maxell, dummy, dummy, 0x67, 0x67, 0x67, 0x67 // dummy, dummy, panaso, dummy }; const u8 BT_RCOMP_SCALE[] = { - 1, 1, 1, // maxell, dummy, dummy, + 2, 2, 2, // maxell, dummy, dummy, 1, 1, 1, 1 // dummy, dummy, panaso, dummy }; diff --git a/trunk/bsr.hex b/trunk/bsr.hex index 0cec5e3..a311d3e 100644 --- a/trunk/bsr.hex +++ b/trunk/bsr.hex @@ -1,14 +1,14 @@ -:020000003B0CB7 +:020000000C0DE5 :02000200FFFFFE -:04001000F248F84872 -:02001C00B84AE0 -:02002400244B6B -:02002A00914BF8 -:08003400A14C5E4C9C4CD34D25 -:02004A00FA4872 -:02005A00354926 -:02006200544DFB -:0400C0007EFBFF853F +:0400100079497F4962 +:02001C003F4B58 +:02002400AB4BE4 +:02002A00184C70 +:08003400284DE54C234D5A4E06 +:02004A008149EA +:02005A00BC499F +:02006200DB4D74 +:0400C000FEFBFF85BF :0A00C400FFFFFFFFFFFFFFFFFFFF3C :0A00CE00FFFFFFFFFFFFFFFFFFFF32 :1000D800C7C1FBF8FFCEABACC736F00071F4C6DC85 @@ -19,13 +19,13 @@ :10012800EF01E6600D9B8C01318E12490021728C23 :1001380001318E04F64F14896142DF03F6EF01E6C0 :10014800600D9B615901EFB440F64FFF61F86159AA -:10015800008BD1DD06FDBE01FDF606CEABACC73681 -:10016800F00071F4C6DE0671301CF9EF2A8EA89CE7 +:10015800008BD1DD06FDBE01FDC707CEABACC736AF +:10016800F00071F4C6DE0671301EF9EF2A8EA89CE5 :10017800018C015C90D1DD118C015C10D161E871BA -:1001880010CEFB71301CF9EF0B8C015C01D161E8DA -:100198007120CEFBFDBE01FDB802EDDD00C0C6D763 +:1001880010D4FB71301EF9EF0B8C015C01D161E8D2 +:100198007120D4FBFDBE01FDB802EDDD00C0C6D75D :1001A800717BFACEA010CEA180E5F300CEA408F5AD -:1001B800AAFFF5A9FFD78F1CF931350ACD0003CD69 +:1001B800AAFFF5A9FFD78F1EF931350ACD0003CD67 :1001C8000307F40EEF07F400CD0306F40ECF110574 :1001D800FCF51005CF120511CE20FFCE23F0CE2E50 :1001E800FCCD01C0F402CD0408F405F406CD0740A7 @@ -41,36 +41,36 @@ :100288000105F55005F5BCFFF5BDFFD7C7C1C1FB9A :10029800F8FFCEABAC8C02D1DD12616902305C0391 :1002A800BBF6614900DDEE618900EFF51004C6D7A1 -:1002B800FD3E32FD043BFD4105717AFAFD3428F517 -:1002C8001AF98F1CF93135175003C15084FD4A03C0 -:1002D800C0625C01D161E8CF1AF902CFD7FB64FD97 -:1002E8001E33FD0103FDA946710222712BE7CEAB37 -:1002F800ACFD073B61EDEFF6D731020403F6EF01E1 -:10030800E660341CF9718C8971899931120403F6FD -:10031800EF01E660341CF9718C89719999D7D7C7B8 -:10032800F616FD4105717BFA31422005714220EF36 +:1002B800FDD005FD523BFD4105717AFAFD8524F517 +:1002C8001CF98F1EF93135175003C15084FD4A03BC +:1002D800C0625C01D161E8CF1CF902CFDDFB64FD8F +:1002E800F632FD0103FD3047713222712BE7CEABA8 +:1002F800ACFD553B61EDEFF6D731020403F6EF0193 +:10030800E660341EF9718C8971899931120403F6FB +:10031800EF01E660341EF9718C89719999D7D7C7B6 +:10032800F616FD4105717BFA31522005715220EF16 :100338000B717AFAA7F647DFECE2EF04717AFAF26A :10034800C6D7C7C1C1FBF8FF17A1C1E0C18C0A70AD -:10035800C18C0270FD74031006D2DF05F53FFBEF78 -:1003680004CF3FFB028C01721004C6D7C7C1FBF84B +:10035800C18C0270FD74031006D2DF05F541FBEF76 +:1003680004CF41FB028C01721004C6D7C7C1FBF849 :10037800FFFD2703D2DD03E2EF618B70FD9404D209 -:10038800DD077143205202EF528C0870FDA904FD6D +:10038800DD077153205202EF528C0870FDA904FD5D :10039800F5048B6C0170FDA904300400BF24013002 :1003A8001740BF1C01300400BF22018C0A91DF04F2 :1003B800F6BF2A01710BE2CE44FF3182E202EFFA66 :1003C800AC0C148E449961790C61690A8C0AD1DFEE -:1003D800DAFD1E05710BE2714320F2C0C6D7C7C112 +:1003D800DAFD1E05710BE2715320F2C0C6D7C7C102 :1003E800FBF8FFFD2703D2DD03E2EF25710AE68B58 -:1003F80070FD9404D2DD077143205202EF138C087C -:1004080070FDA9048C0A70FDA904FD1E0571432026 +:1003F80070FD9404D2DD077153205202EF138C086C +:1004080070FDA9048C0A70FDA904FD1E0571532016 :10041800F2C0C6D7C7C1FBF8FFFD2703D2DD03E250 :10042800EF67710AE6710BE28B70FD9404D2DD0769 -:100438007143205202EF52710BE231322039C73436 -:1004480038FBAC0C1652048B99A5A792DFF9C6317C -:1004580084BD02EFFA717ABDCEB144CBB438FB8CBF +:100438007153205202EF52710BE231422039C73416 +:100448003AFBAC0C1652048B99A5A792DFF9C6317A +:1004580084BD02EFFA717ABDCEB144CBB43AFB8CBD :100468000A318EBEB8CEBB48714BE1714BE5710ABB :10047800BD8C089E44EF11710BE68C089E448C0AD3 -:100488009F3EFBAC0CBF3CFBF2C0C6D7C716FDCDE8 +:100488009F40FBAC0CBF3EFBF2C0C6D7C716FDCDE4 :100498000417FDA904D2DD06FD1E05E2EF01F2C630 :1004A800D7C716710AE6710BE2669E443182E203F1 :1004B80000EFF9F6420401DD09AF0401BF0C01E2C7 @@ -81,184 +81,197 @@ :10050800BF2801FD2603AF2A01085CFB08BF2A01AA :10051800FD2603EDCD04300400BF2401F6BF2A01F7 :10052800300B0BBF2801FD2603300B0FBF2801FD40 -:100538002603300F0FBF2801D731542001D771424D +:100538002603300F0FBF2801D731642001D771522D :1005480020710BBD0000717BBD713A25713A236A99 :100558000E03713205713B25713203713B23500A3A :10056800FD94027120F000FD2603F6BF26015024F9 -:10057800BF1401CB440014300F0FBF280171332082 +:10057800BF1401CB440014300F0FBF280171432072 :10058800710BE2710AE6FDCD04CE44FF3182E2022E -:10059800EFFAFD1E05AF0401BF0C01714320715233 -:1005A80020D731442002EFFAFDF504713A25713A5B +:10059800EFFAFD1E05AF0401BF0C01715320716213 +:1005A80020D731542002EFFAFDF504713A25713A4B :1005B800235A0EFC713305713B25713303713B23BC -:1005C8007128F000715320D7C72006FBF8FFFDF60D -:1005D800085014C15008FD3608C0CC05048C054CE1 -:1005E80014DE0C8C05318EFD1D09615905EFEECC2A -:1005F80005048C054C1461C8EDA506CC04008C04D8 -:100608004C04DE6FC73641057184C6DC663020F9BC -:10061800BC02F6BB31B2D10EC73641057184C6DCC7 -:1006280005CEABACEFEE713BD1AC02148F4005990F -:1006380071505005617902617900F0E1614900DD8E -:1006480009C73641057184C6DECA5040C18C0531E0 -:100658008E31AD128C04318E318D03BDD831FFBD82 -:10066800DADADAADD8FDE90BC0D261E8EFFE6159FC -:1006780004EF8B715201711B227112028C05318EAD -:10068800FD2109D261E8EFFE711302715301C736EB -:1006980041057184C6DC06615905EDFA05716050A3 -:1006A80005CC0200CC03008C034C09DE248C0331FA -:1006B8008E1249F61F728C03318E04F64F1489612D -:1006C80042DF03F6EF01E6600E029C02615903EF78 -:1006D800D68C02D1DF08FDA70AFDB90BEF0C500834 -:1006E800C15013FD3608C0FDA60A1006C6D7C7209C -:1006F80004FBF8FF715B21CC0100F6BC02AC02449C -:100708000900DE3EAC0204F61F144100118972ACE8 -:10071800020C5114896142DF03F6EF01E6600E0115 -:100728009C01AC021249005172AC0204F67F148994 -:100738006142DF03F6EF01E6600E019C0161790278 -:10074800EFBB40F67FFF61F86159018C01D161F878 -:10075800ED0008CC0100717AFAFD410571130071B2 -:100768001B20710303710205E0C15003C15084FDD1 -:10077800E60310045013FD9402500FC1E0C15084E9 -:10078800FDE6031004CEABAC6159018C0191DD0686 -:100798008C014C03DF03E6EF01F66061FB71510148 -:1007A8008C014C0861F8CC010031320705A05EFCD1 -:1007B800EF03F55EFC405EFC11DC11F55EFCF0C158 -:1007C8005003C15084FDE6031004EF12E6BC02F6A4 -:1007D800614902DDB000000000617902EFF1CE3717 -:1007E80008CBE4FFFFCBE6FFF7CED4FFCF370008F6 -:1007F800F5120561FDF5ABFFFDF608D25008C150B2 -:1008080014FD3608C0D2FDA70AD2FDB90B1004C6E4 -:10081800D73184BD02EFFA717BBDCBE4FFFFCBE695 -:10082800FFFFCBD4FFFF717ABED7717BBED7C7C19C -:10083800200AFBF8FF8C0A318E31ADC1317B9DD483 -:10084800C0BC048DD49C068C129C098C12318E0479 -:100858000C00128C09318EBDD813FD780E61C8EDDD -:10086800F108CEABAC8C09318EFD1909D2DD098CAB -:1008780009318EFD1D09EFEDCC08008C084C04DE13 -:1008880056CEABACF6BC023020F9BBAC04148C06D7 -:100898009EFD118972AB146299AC04A1BC04617904 -:1008A80000617902F0E1614902DFE05040C18C0942 -:1008B800318E31AD128C08318E318D03BDD831FFA8 -:1008C800BDDADADAADD8FDE90BC0D2DD05FD3208B4 -:1008D800EFFE615908EFA48C09318EFD2109D26120 -:1008E800E8EFFE615909ED5308F2100CC6D7C7713D -:1008F8007B9D717BFAFD19083020F9FDCC09FD5765 -:1009080009C6D7FDF608FDB90BFDA60AFD3208F2A7 -:01091800D707 -:100919005208EF065203EF025206FEE600FE1B00E4 -:10092900DC16089F03088F0408089F040862FE2448 -:1009390000089F0408EEBF00EEBA00C1C514410EBD -:1009490011D9D0FF118FD1FF312E45C4C0D7F23153 -:10095900A2C401E2D79DE261DD4C09DF12717BFA85 -:10096900C18F06089F49FDC0CF060800EE27003158 -:10097900F2FA04CF0608004C00DF05D50008DD16A1 -:1009890061DD717BFAD50608DD0ACDE31F61CD6112 -:10099900CDEE160061CDFED40061FFFE9A00FCF891 -:1009A900FF0EFEB20061CDFED5004C09DF0EC18FEE -:1009B90006086F49FD9F0608C0EE0400CF0608002F -:1009C900F8E3D75200EF025202FE3700CF48FD008C -:1009D900CF060800BF0408C716629F00084100112E -:1009E9008F4E239B4100118F4F239F0108C6510051 -:1009F900FE62FFEF025205CF060800C1510CFE0A44 -:100A090000C0D7C1511DFE0200C0D761DD717BFA5C -:100A190070CEC0A59EC47CFF9EC4609EC461CDD724 -:100A290061DD717BFAC18EC45C1BFED6FFCF06085F -:100A390001FED7FFC061CDD731F2FA1AC1AEE4BFCA -:100A49003AFDAEE6BF3CFDAED4BF3EFD30FFFFBE72 -:100A5900E4BEE6BED4C0D731F2FA11C1AF3AFDBE49 -:100A6900E4AF3CFDBEE6AF3EFDBED4C0D7C1BF403A -:100A7900FD13BF42FD15BF44FD17BF46FDC0D7AFEB -:100A890040FDDB42FDEB44FDFB46FDD7534B3052A5 -:100A99005430324E323030475631323000FFC15077 -:100AA900FEFEAB0061DD717BFACF060800FE0A008D -:100AB900FEA4FF61CDF8E3EECF00C7FB0408BF3AFF -:100AC900FD8FC0009C05C5C337040600BF3CFD353A -:100AD900360B0B300000522BFE6600C2C4C630B97B -:100AE9000AB800300000B8022004AF3CFDB800305D -:100AF9000F00B802AF3AFD61FF520AFE3AFFECF867 -:100B0900FF0E717BFAC1C7FB04088C05C65C80FE29 -:100B19000200C0D761DD717BFA70CFC0FFA59FC00D -:100B2900007CFF9FC000609FC00061CDD7618BFE34 -:100B3900E2FF717BBE410011FB000017CEFC006192 -:100B4900CB089EFDF31161C999A58392DFF7D7FE02 -:100B5900B1FED548FDDF23C1CF0308035109FEF4D7 -:100B6900FDC0D2DF37FE3800A20408CF03080751C1 -:100B790009FEE1FDD2B20408DF22C7FB0408318374 -:100B890002C6D7C6510AFECCFD624C1FDF06CF480C -:100B9900FD01EF04CF48FD00C0EE5BFEC0EE55FE3F -:100BA900C7C1FB04088B31196C0161589BC0C6D7BA -:100BB900717BFAFE4DFEAF0408040600C114361D10 -:100BC9000B300000522DF3FE77FF8FC000FE2BFE85 -:100BD90061CF5C807C8073C0041900CEFC0F61CBAF -:100BE900C55404EF03C55417FE18FEC7360008BBE9 -:100BF900629C0288089C03D1DD334C41DE2F70F1E1 -:100C0900312DB161090033081C000851FF612A41E7 -:100C19000E118FD0FF613B118FD1FF6138DC0E8B34 -:100C29005C03DF0964C6C4FE2BFDEECAFDC6C4EE33 -:020C3900C3FDF9 -:100C3B0061CF5100718C7109FECBF800FEFCA8014D -:100C4B0000F6BF00F953C0F693935820FEDFF9412D -:100C5B0000361A2034FEFCEF05118B99A7A517441B -:100C6B005620DFF53602F930FEFCEF04CC0000A76E -:100C7B0047DFF94100365620343AFDEF05118B99C9 -:100C8B00A7A517445620DFF5363AFD303AFDEF04A1 -:100C9B00CC0000A747DFF9FCD80000EFFE61DD7147 -:100CAB007BFABEF0ADD8BEF200AEF661CDD7C36114 -:100CBB00DD717BFABEF0ADD8BEF200DBF6FFADDC2A -:100CCB00BEF000AEF6BDD8AEF40312ADDABEF20044 -:100CDB00AEF661CD03BDDAC2D7C3F33174D9088345 -:100CEB00C1F626D8BDD8C031750683C312F623C210 -:100CFB00FD060D93DF0312F623C2D7440000DD2659 -:100D0B0061DD717BFACFE80080BEF6F6BEF4BEF271 -:100D1B00ADD8BEF0CFE800818FE8003103FAAEF01A -:100D2B00F5E80061CDD7B1D7C3F33174D90883C1CE -:100D3B00F626D8BDD8C0317505C312F623C2FD54B3 -:100D4B000D93DF0312F623C2D7440000DD2761DDCC -:100D5B00717BFACFE80080BEF6F6BEF4BEF2ADD8DA -:100D6B00BEF0CFE800818FE8003103FAAFE000F569 -:100D7B00E80061CDD7ADD8D7C3F33174DB0F83C196 -:100D8B00F626D8BDD861317026DABDDAC031750DC3 -:100D9B0083C312F626DCBDDC61317023C2FDBC0DB2 -:100DAB0093DF0CF626D8BDD861317026DABDDAC2D6 -:100DBB00D7C161686BDC6BDDC0DD2F61DD717BFA48 -:100DCB00CFE80080BEF4ADDCBEF6ADD8BEF0ADDA38 -:100DDB00BEF2CFE800818FE8003103FAAEF0BDD848 -:100DEB00AEF2BDDAF5E80061CDD7F6BDD8BDDAD7E6 -:100DFB008292DD2B61DD717BFACFE80080BEF0F6CD -:100E0B00BEF2BEF46208BEF6CFE800818FE8003177 -:100E1B0003FAAFE0006072AEF0F5E80061CDD76089 -:100E2B0072F6B1D706DABDDAADDC06D8BDD861D81B -:100E3B00A6DAD7D1DD17C1C3DAD89DD8ADDA311C0C -:100E4B0061EEB4D8DFF8BDDA13BDD8C2C0D7D1DD9F -:100E5B001BC1C3DADA9DDAADD8311E33311E3371C3 -:100E6B00F9B4DADFF4BDD813BDDAC2C0D746D8DD8A -:100E7B000771FF7177D971C0D746DADF08C1ADDCD6 -:100E8B0046D8C0DD077177DB71FF71C0D75BDB9D87 -:100E9B00DB605BDA9DDAADDC5BD9085BD808BDD8CB -:100EAB00D7C3C7F3728EFDC162314C4100360020AF -:100EBB001161A072C09EFD62C6C2D7C3C7F3728E0A -:100ECB00FDC1625C0F0C000FFE00314C4100360A75 -:0F0EDB00201161800FFE0073C09EFD63C6C2D759 -:0A0FF60031393A31333A3039000046 +:1005C8007128F000716320D7C736F00071F4DC2978 +:1005D8007170F000CE9D08CE9EC0CE9F80F594FF2E +:1005E800F593FFF592FFE597FFE596FFCE9505CECB +:1005F8009810CE9C7F7100D4FB711BE3712BE371C3 +:100608001AE7712BE7717A9D710A9E31929E02EF6B +:10061800FA710B9E713321714321715321C6D7C7DB +:100628003132211E713221710A9E31929E02EFFAF7 +:100638003402FC3692FF52078B99A5A792DFF97115 +:100648000B9EC6D7C788061631422115714221C7AD +:1006580034CAFB3092FF1652078B99A5A792DFF98F +:10066800C666736718CAFBC6D7C7713321314421E0 +:100678001E714321710A9E31929E02EFFA3492FF55 +:1006880036CAFB52078B99A5A792DFF9710B9E31E9 +:10069800542113717B9E8F0AFC9E9A8F0BFC9E9BA4 +:1006A800714321717A9EC6D7C72006FBF8FFFDC7A4 +:1006B800095014C15008FD0709C0CC05048C054C2D +:1006C80014DE0C8C05318EFDEE09615905EFEECC78 +:1006D80005048C054C1461C8ED7607CC04008C0425 +:1006E8004C04DE6FC73641057184C6DC663022F9DA +:1006F800BC02F6BB31B2D10EC73641057184C6DCE7 +:1007080005CEABACEFEE713BD1AC02148F4005992E +:1007180071505005617902617900F0E1614900DDAD +:1007280009C73641057184C6DECA5040C18C0531FF +:100738008E31AD128C04318E318D03BDD831FFBDA1 +:10074800DADADAADD8FDBA0CC0D261E8EFFE615949 +:1007580004EF8B8C05318EFDF209D261E8EFFEC7FC +:100768003641057184C6DC06615905EDDA0671600B +:100778005005CC0200CC03008C034C09DE248C030A +:10078800318E1249F61F728C03318E04F64F14898C +:100798006142DF03F6EF01E6600E029C0261590335 +:1007A800EFD68C02D1DF08FD780BFD8A0CEF0C50D8 +:1007B80008C15013FD0709C0FD770B1006C6D7C73F +:1007C8002004FBF8FF715B21CC0100F6BC02AC02EF +:1007D800440900DE3EAC0204F61F14410011897280 +:1007E800AC020C5114896142DF03F6EF01E6600E9A +:1007F800019C01AC021249005172AC0204F67F144C +:10080800896142DF03F6EF01E6600E019C01617920 +:1008180002EFBB40F67FFF61F86159018C01D1619D +:10082800F8EDD108CC0100717AFAFD410571130089 +:10083800711B20710303710205E0C15003C150848C +:10084800FDE60310045013FD9402500FC1E0C1509F +:1008580084FDE6031004CEABAC6159018C0191DD37 +:10086800068C014C03DF03E6EF01F66061FB715172 +:10087800018C014C0861F8CC010031320705A066F3 +:10088800FCEF03F566FC4066FC11DC11F566FCF034 +:10089800C15003C15084FDE6031004EF12E6BC0208 +:1008A800F6614902DDB000000000617902EFF1CE87 +:1008B8003708CBE4FFFFCBE6FFF7CED4FFCF3700F6 +:1008C80008F5120561FDF5ABFFFDC709D25008C157 +:1008D8005014FD0709C0D2FD780BD2FD8A0C100414 +:1008E800C6D73184BD02EFFA717BBDCBE4FFFFCBE5 +:1008F800E6FFFFCBD4FFFF717ABED7717BBED7C7A7 +:10090800C1200AFBF8FF8C0A318E31ADC1317B9DC5 +:10091800D4C0BC048DD49C068C129C098C12318ED8 +:10092800040C00128C09318EBDD813FD490F61C823 +:10093800EDC209CEABAC8C09318EFDEA09D2DD09D6 +:100948008C09318EFDEE09EFEDCC08008C084C04C3 +:10095800DE56CEABACF6BC023022F9BBAC04148C2C +:10096800069EFD118972AB146299AC04A1BC0461A6 +:100978007900617902F0E1614902DFE05040C18C01 +:1009880009318E31AD128C08318E318D03BDD831CD +:10099800FFBDDADADAADD8FDBA0CC0D2DD05FD0349 +:1009A80009EFFE615908EFA48C09318EFDF209D2D6 +:1009B80061E8EFFE615909ED2409F2100CC6D7C7AA +:1009C800717B9D717BFAFDEA083022F9FD9D0AFDD5 +:1009D800280AC6D7FDC709FD8A0CFD770BFD030958 +:0209E800F2D744 +:1009EA005208EF065203EF025206FEE600FE1B0013 +:1009FA00DC16089F03088F0408089F040862FE2477 +:100A0A0000089F0408EEBF00EEBA00C1C514410EEB +:100A1A0011D9D0FF118FD1FF312E45C4C0D7F23181 +:100A2A00A2C401E2D79DE261DD4C09DF12717BFAB3 +:100A3A00C18F06089F51FDC0CF060800EE2700317E +:100A4A00F2FA04CF0608004C00DF05D50008DD16CF +:100A5A0061DD717BFAD50608DD0ACDE31F61CD6140 +:100A6A00CDEE160061CDFED40061FFFE9A00FCF8BF +:100A7A00FF0EFEB20061CDFED5004C09DF0EC18F1C +:100A8A0006086F51FD9F0608C0EE0400CF06080055 +:100A9A00F8E3D75200EF025202FE3700CF50FD00B2 +:100AAA00CF060800BF0408C716629F00084100115C +:100ABA008F6C239B4100118F6D239F0108C6510043 +:100ACA00FE62FFEF025205CF060800C1510CFE0A72 +:100ADA0000C0D7C1511DFE0200C0D761DD717BFA8B +:100AEA0070CEC0A59EC47CFF9EC4609EC461CDD753 +:100AFA0061DD717BFAC18EC45C1BFED6FFCF06088E +:100B0A0001FED7FFC061CDD731F2FA1AC1AEE4BFF8 +:100B1A0042FDAEE6BF44FDAED4BF46FD30FFFFBE88 +:100B2A00E4BEE6BED4C0D731F2FA11C1AF42FDBE6F +:100B3A00E4AF44FDBEE6AF46FDBED4C0D7C1BF4850 +:100B4A00FD13BF4AFD15BF4CFD17BF4EFDC0D7AF01 +:100B5A0048FDDB4AFDEB4CFDFB4EFDD7534B3052B3 +:100B6A005430324E323030475631323000FFC150A5 +:100B7A00FEFEAB0061DD717BFACF060800FE0A00BB +:100B8A00FEA4FF61CDF8E3EECF00C7FB0408BF4225 +:100B9A00FD8FC0009C05C5C337040600BF44FD3560 +:100BAA0036DC0B300000522BFE6600C2C4C6308A07 +:100BBA000BB800300000B8022004AF44FDB8003082 +:100BCA000F00B802AF42FD61FF520AFE3AFFECF88D +:100BDA00FF0E717BFAC1C7FB04088C05C65C80FE58 +:100BEA000200C0D761DD717BFA70CFC0FFA59FC03C +:100BFA00007CFF9FC000609FC00061CDD7618BFE63 +:100C0A00E2FF717BBE410011FB000017CEFC0061C0 +:100C1A00CB089EFDF31161C999A58392DFF7D7FE30 +:100C2A00B1FED550FDDF23C1CF0308035109FEF4FD +:100C3A00FDC0D2DF37FE3800A20408CF03080751EF +:100C4A0009FEE1FDD2B20408DF22C7FB04083183A2 +:100C5A0002C6D7C6510AFECCFD624C1FDF06CF5032 +:100C6A00FD01EF04CF50FD00C0EE5BFEC0EE55FE65 +:100C7A00C7C1FB04088B31196C0161589BC0C6D7E8 +:100C8A00717BFAFE4DFEAF0408040600C11436EE6D +:100C9A000B300000522DF3FE77FF8FC000FE2BFEB3 +:100CAA0061CF5C807C8073C0041900CEFC0F61CBDD +:100CBA00C55404EF03C55417FE18FEC7360008BB17 +:100CCA00629C0288089C03D1DD334C41DE2F70F10F +:100CDA00312DB161090033081C000851FF612A4116 +:100CEA000E118FD0FF613B118FD1FF6138DC0E8B63 +:100CFA005C03DF0964C6C4FE2BFDEECAFDC6C4EE62 +:020D0A00C3FD27 +:100D0C0061CF5100718C7109FECBF800FEFCA8017B +:100D1C0000F6BF00F953C0F693935820FEDFF9415B +:100D2C0000361A203406FDEF05118B99A7A5174440 +:100D3C005620DFF53602F93006FDEF04CC0000A793 +:100D4C0047DFF941003656203442FDEF05118B99EF +:100D5C00A7A517445620DFF53642FD3042FDEF04BF +:100D6C00CC0000A747DFF9FCD80000EFFE61DD7175 +:100D7C007BFABEF0ADD8BEF200AEF661CDD7C36142 +:100D8C00DD717BFABEF0ADD8BEF200DBF6FFADDC58 +:100D9C00BEF000AEF6BDD8AEF40312ADDABEF20072 +:100DAC00AEF661CD03BDDAC2D7C3F33174D9088373 +:100DBC00C1F626D8BDD8C031750683C312F623C23E +:100DCC00FDD70D93DF0312F623C2D7440000DD26B6 +:100DDC0061DD717BFACFE80080BEF6F6BEF4BEF2A0 +:100DEC00ADD8BEF0CFE800818FE8003103FAAEF049 +:100DFC00F5E80061CDD7B1D7C3F33174D90883C1FD +:100E0C00F626D8BDD8C0317505C312F623C2FD2510 +:100E1C000E93DF0312F623C2D7440000DD2761DDF9 +:100E2C00717BFACFE80080BEF6F6BEF4BEF2ADD808 +:100E3C00BEF0CFE800818FE8003103FAAFE000F597 +:100E4C00E80061CDD7ADD8D7C3F33174DB0F83C1C4 +:100E5C00F626D8BDD861317026DABDDAC031750DF1 +:100E6C0083C312F626DCBDDC61317023C2FD8D0E0E +:100E7C0093DF0CF626D8BDD861317026DABDDAC204 +:100E8C00D7C161686BDC6BDDC0DD2F61DD717BFA76 +:100E9C00CFE80080BEF4ADDCBEF6ADD8BEF0ADDA66 +:100EAC00BEF2CFE800818FE8003103FAAEF0BDD876 +:100EBC00AEF2BDDAF5E80061CDD7F6BDD8BDDAD714 +:100ECC008292DD2B61DD717BFACFE80080BEF0F6FB +:100EDC00BEF2BEF46208BEF6CFE800818FE80031A6 +:100EEC0003FAAFE0006072AEF0F5E80061CDD760B8 +:100EFC0072F6B1D706DABDDAADDC06D8BDD861D84A +:100F0C00A6DAD7D1DD17C1C3DAD89DD8ADDA311C3A +:100F1C0061EEB4D8DFF8BDDA13BDD8C2C0D7D1DDCD +:100F2C001BC1C3DADA9DDAADD8311E33311E3371F1 +:100F3C00F9B4DADFF4BDD813BDDAC2C0D746D8DDB8 +:100F4C000771FF7177D971C0D746DADF08C1ADDC04 +:100F5C0046D8C0DD077177DB71FF71C0D75BDB9DB5 +:100F6C00DB605BDA9DDAADDC5BD9085BD808BDD8F9 +:100F7C00D7C3C7F3728EFDC162314C4100360020DD +:100F8C001161A072C09EFD62C6C2D7C3C7F3728E38 +:100F9C00FDC1625C0F0C000FFE00314C4100360AA3 +:0F0FAC00201161800FFE0073C09EFD63C6C2D787 +:0A0FF60032303A34313A333600004D :0A20000000060C12181E242A3036C8 :10200A00001632486480961228446076920824406A -:10201A00FF000000555555550000D4FB000036FC62 -:10202A0000000000043EBB386727332EB52F33303B -:10203A007531FC3E6D48E13EE83EAD4000000000CF +:10201A00FF000000555555550000DAFB00003CFC56 +:10202A0000000000523E9D38B823192F6D30EB3066 +:10203A002D32603FF448453F4C3F1A4100000000F2 :0C204A000000983AF82A23301299000098 :08205600317503F7332312D7A3 -:0A21000031393A31333A303900002A -:10210A00AD30AE70B000B300B470B5A0B780BA00FD -:10211A00BB90BD00BE00BFF0C300C5C0C800CAC0A6 -:10212A00040012000C10240010D01BF00AF008E082 -:10213A000CF008C008B007F00B0005D00200090037 -:10214A00AD30AE70B000B300B470B5A0B780BA00BD -:10215A00BB90BD00BE00BFF0C300C5C0C800CAC066 -:10216A00040012000C10240010D01BF00AF008E042 -:10217A000CF008C008B007F00B0005D002000900F7 -:10218A00AD30AE70B000B300B470B5A0B780BA007D -:10219A00BB90BD00BE00BFF0C300C5C0C800CAC026 -:1021AA00040012000C10240010D01BF00AF008E002 -:1021BA000CF008C008B007F00B0005D002000900B7 +:0A21000032303A34313A3336000031 +:10210A00AEF0B430B740BA30BB50BBB0BC50BD1013 +:10211A00BD60BDB0BFE0C2B0C420C7B0CAE0CE1037 +:10212A0001F0141014200630639049006E00777095 +:10213A007B001900190017F01C601200120012002F +:10214A00AEF0B430B740BA30BB50BBB0BC50BD10D3 +:10215A00BD60BDB0BFE0C2B0C420C7B0CAE0CE10F7 +:10216A0001F0141014200630639049006E00777055 +:10217A007B001900190017F01C60120012001200EF +:10218A00AEF0B430B740BA30BB50BBB0BC50BD1093 +:10219A00BD60BDB0BFE0C2B0C420C7B0CAE0CE10B7 +:1021AA0001F0141014200630639049006E00777015 +:1021BA007B001900190017F01C60120012001200AF :1021CA008C309C10A5E0B040B1C0B200B250B31040 :1021DA00B490B620B860BA50BFA0C6B0CE90D02096 :1021EA0000200020002000207B30686020001700BB @@ -275,696 +288,705 @@ :10229A00B490B620B860BA50BFA0C6B0CE90D020D5 :1022AA0000200020002000207B30686020001700FA :1022BA00173012F00DE007F00700093001C001C025 -:1022CA008700DAFFDAFD8700DAFFDAFD8700DAFF36 -:1022DA00DAFDAB0000FF67FDAB0000FF67FDAB0056 -:1022EA0000FF67FDAB0000FF67FD757575696969D9 -:1022FA00697474746767676701010101010101006C -:10230A00000000007F7E7D7C7A797877767574721A -:10231A0071706F6E6D6C6A69686766656462616028 -:10232A005F5E5D5C5A5958575655535251504F4E3D -:10233A004D4B4A494948474645434241403F3E3D45 -:10234A003B3A3938080101020203030200FEFBF797 -:10235A00F3F0F0F3FA041225384D5F6E777A776E50 -:10236A005F4D38251204FAF3F0F0F3F7FBFE000292 -:10237A00030302020100000000001F003B005A0094 -:10238A0078009700B500D400F300110130014E0126 -:10239A00C75007C15002C15084FDE6031004501211 -:1023AA00FD9402500FC15002C15084FDE60310048F -:1023BA005003FD9402501FC15002C15084FDE60330 -:1023CA0010045016FD94025003C15084FD4A03C004 -:1023DA00625C01D1DD107170DBFB5002C15013FD4C -:1023EA002037C0E2EF01F2C6D7C75004C15084FDBE -:1023FA004A03C0625C03D1DD405014FD7B2434DB08 -:10240A00FB895C9F998A0C7CFF50FF5C14D1DD220A -:10241A008A0C7CFF5C147234DFFB89616A997162F1 -:10242A00075600316207058666D1DFF771630771C7 -:10243A006B2734EEFB895CEB995002C15084FD4A4C -:10244A0003C0D2DD225007C15002C15084FDE60309 -:10245A0010045033FD9402F0C15002C15084FDE6CD -:10246A000310047178DBFBE0C15013FD2037C0C6AE -:10247A00D7C7C12004FBF8FFCC02005004C1508426 -:10248A00FD4A03C0629C038C045C20D1DD0E8C03E0 -:10249A006C019C038C026C209C02EF138C045C1070 -:1024AA00D1DD0C8C035CFE9C038C026C109C028CAC -:1024BA00045C08D1DD0E8C036C029C038C026C0850 -:1024CA009C02EF138C045C04D1DD0C8C035CFD9C34 -:1024DA00038C026C049C028C03D1DD05501AFD9416 -:1024EA00028C0370C15004C15084FDE60310048FAE -:1024FA00DBFB5C9F728C03318E316D148C03318E41 -:10250A00314D616D08616C5C606162629FDBFB8FBB -:10251A00E7FB7CFF50FF5E02D1DD278FE7FB7CFFE4 -:10252A005E027234DFFB89616A99716207CC01002D -:10253A00316207086159018C01D1DFF471630771B7 -:10254A006B27F21006C6D7C7D9CFFBC15006C150B8 -:10255A0084FDE60310046276D9D0FBC15007C1504E -:10256A0084FDE60310046261666672C6D7FD5125D2 -:10257A00F2D7C72004FBF8FF711300711B20710307 -:10258A0003710205E0C15003C15084FDE603100443 -:10259A005013FD9402F0C15005C15084FDE60310AA -:1025AA0004500FC1E0C15084FDE6031004500AFD37 -:1025BA0094027103055008FD9402501FC1E0C150F6 -:1025CA0084FDE60310045012FD94025003C15084A6 -:1025DA00FD4A03C0625C01D1DF03E2EF3C5003C154 -:1025EA00C15084FDE6031004710203711A2050647D -:1025FA00FD9402C717A116F7490A239BA3A7510303 -:10260A00614ADFF4C617A1C15003C15010C150A4DA -:10261A00FD1C041006F50AF9F21004C6D75003C1CE -:10262A005084FD4A03C0625C01D1DD195014FD7B60 -:10263A0024FDF323503CFD9402E0C15003C15084B1 -:10264A00FDE6031004711300711B20710303F0C12E -:10265A005003C15084FDE6031004F2D7C72004FBDF -:10266A00F8FFCC02008F0AF99C035010C150A4FD58 -:10267A004A03C0629F0AF9D53FFBDD04F2ED442705 -:10268A008C037F0AF95C08D1DD108F0AF95C08D146 -:10269A00DF05CC0210EF03CC02208C037F0AF95C21 -:1026AA0004D1DD168F0AF95C04D1DF088C026C04B0 -:1026BA009C02EF068C026C089C028FDAFB5CF372B8 -:1026CA008F0AF95C0C6162629FDAFB8FE6FB7CFF82 -:1026DA0050FF5E029C02D1DD1F34DEFB896E029937 -:1026EA00716207CC0100316207086159018C01D17E -:1026FA00DFF4716307716B278F0AF95C40D1DD093A -:10270A005002C15012FD2037C08F0AF95C01D1DD99 -:10271A0008E0C15012FD2037C0717AFA8F0AF95CBD -:10272A0041D1DD15340AF9895CBE99D90AF9C1503B -:10273A0010C150A4FDE6031004F21004C6D7FD9A96 -:10274A0023F2D7FDF323F2D7C78FEEFB7617FD7B73 -:10275A0024664FEEFBDFF2F5EEFBF2C6D78FFFFCE5 -:10276A00B0FFFCD161E8ED3328CFFFFC807104078C -:10277A00E6613012F6712420611043DD32710407DC -:10278A00E661306061FB712120312420137130DB56 -:10279A00FB5002C15011FD2037C0CF0BF902EF0FD9 -:1027AA007138DBFBE0C15011FD2037C0F50BF94051 -:1027BA0002F94BDC164002F9B9DE10400CF928DEAA -:1027CA0005A00CF9EF27711220EF224002F93EDC36 -:1027DA00064002F9BDDC10400DF928DE05A00DF90E -:1027EA00EF0B711320EF06F50CF9F50DF9311420F2 -:1027FA000D3104200931020705713304EF037132E8 -:10280A0004311205097140DBFB714202EF0771487E -:10281A00DBFB714302D50BF9DD06B00BF9714202FD -:10282A00401AF90361F8FDE62AD7C72004FBF8FF2E -:10283A00716201717201E0FD94025008FDFD396276 -:10284A009F02F98FFEFC9C03FD7A288FFEFC4E0343 -:10285A00DD06FDD828FD272A40FEFC07DD0B7102A4 -:10286A002030272AFD563BEF037103201004C6D7F8 -:10287A00C75009FDFD3962767163017102204CEA85 -:10288A00DC06CFFEFC07EF44664CC6DC06CFFEFC36 -:10289A0006EF39664C9FDC06CFFEFC05EF2E664C30 -:1028AA007CDC06CFFEFC04EF23664C50DC06CFFE30 -:1028BA00FC03EF18664C22DC06CFFEFC02EF0D6625 -:1028CA004C06DC05E5FEFCEF03F5FEFCC6D7C72087 -:1028DA0008FBF8FF8FFEFC5006D604CA2214F750F4 -:1028EA000689A54804F9A390DFF7500AFD9402303F -:1028FA004000BB17C15002C15006C1506CFD1C04F8 -:10290A001006304A57BB17C15002C1503EC1506C25 -:10291A00FD1C041006D2DF217108DAFB40FEFC0719 -:10292A00DE05E51DF9EF324002F904DE06CF1DF996 -:10293A0003EF26CF1DF905EF207100DAFB4002F9FB -:10294A00F1DC06CF1DF902EF104002F904DE06CFD2 -:10295A001DF903EF04CF1DF904401DF90161E8EDEB -:10296A00232A17040300C15004C1500CC1506CFD46 -:10297A007403100630DA20BB17C15002C1500EC1D1 -:10298A00506CFD1C041006F690BB17C15002C150D2 -:10299A000CC1506CFD1C04100631442002EFFA7180 -:1029AA0032208FFEFCF0312E040A21C15040C1C1F1 -:1029BA00506CFD1C04100650A5FD940230DA20BBB1 -:1029CA0017C15002C1500EC1506CFD1C04100650B4 -:1029DA00A5FD94025004C1506CFD4A03C0629C07D5 -:1029EA00E9FEFC09FB224E0761C30AE9FEFC09F471 -:1029FA00224E0761D80017040300C15004C1500CCD -:102A0A00C1506CFD1C041006F6BB17C15002C15020 -:102A1A003EC1506CFD1C0410061008C6D7C7C1FB86 -:102A2A00F8FF8F0EF94F02F961F8EDE22A4010F92A -:102A3A0028DE06A010F9EDE22AF510F98F02F99FB7 -:102A4A000EF98F02F95070D61230735123048000A8 -:102A5A001231FF318E039F0FF99FD6FBF6BB8F0F02 -:102A6A00F97C804C95DC1B8F0FF9318F241400BD43 -:102A7A00D8AF06F9FDA80C1231FF318E03318FBB96 -:102A8A00EF198F0FF9318F241400BDD8AF08F9FD63 -:102A9A00A80C1231FF318E03318FBBD904F9F161D1 -:102AAA000900BB44010171FEDC0430EB00BB8C0160 -:102ABA0001DE02F6BBABABBF66FC17C15002C150C8 -:102ACA000CC1506CFD1C041006D2DF088F02F99F5E -:102ADA000EF9EF047100DAFBF2C0C6D7C72008FB73 -:102AEA00F8FF401DF902DF0BCFD7FB63CFD9FBC834 -:102AFA00ED372C401DF903DF2C17040600C15002E4 -:102B0A00C15004C1506CFD74031006D2DD06CFD744 -:102B1A00FB63EF0A8C069FD7FB8C079FD8FBCFD9A4 -:102B2A00FBC8ED372C17040600C15002C15004C17E -:102B3A00506CFD74031006D2DD117100DAFB7103CB -:102B4A0020F5D7FBE6BF1EF9ED0C2C8C06318E3131 -:102B5A008D080E07081C00BBD9FEFCF104022314E1 -:102B6A008972ABFDFB0DBB8C019C068B9C0717047D -:102B7A000400C15002C1C1506CFD74031006D26139 -:102B8A00E8ED0C2C8C049FD9FB8C04318E318D0816 -:102B9A000E05081C00BBBDD8F6BDDAD911F9BDDC9B -:102BAA00F6BDDEADD8C1ADDAC1C9D800A0F6BDDA2E -:102BBA00ADDEFD2F0EADD8BDDCADDABDDEC0BDDAAF -:102BCA00C0BDD8ADDEFD840E61D308CC0364F51117 -:102BDA00F9EF2FABBDD8F6BDDAC9DC819DFD840EB5 -:102BEA00DC09CC030ACF11F958EF17ABBDD8F6BDF3 -:102BFA00DAC9DC019BFD840EDC05CC0305EF03CCAE -:102C0A0003003134040D31120509CFD7FB64F5D81E -:102C1A00FBEF1A8C064E03DE0C8C069FD7FB8C0743 -:102C2A009FD8FBEF088C039FD7FBF5D8FB40D7FB57 -:102C3A000BDE064012F90BDE1640D7FB06DE064015 -:102C4A0012F906DE0AD5D7FBDF0ED512F9DD0950D7 -:102C5A0020C15011FD2037C0D5D7FBDF09D512F9A5 -:102C6A00DD04E6BF1EF98FD7FB9F12F9D51AF96169 -:102C7A00F8CF12F96440D7FB0BDE03E6EF01F6C189 -:102C8A005012C150A4FDE60310041008C6D7710003 -:102C9A00010571785005713AD5713BD1713ADD71F0 -:102CAA003BD98F10055CFC9F1005CF54054AE542BD -:102CBA000571104205710042057148500571305086 -:102CCA000571205005CF530505CF52050A713051C1 -:102CDA000571205105713BD5717050058F11055C46 -:102CEA00FC9F1105D77178500571080105D771400D -:102CFA00F00071783002713AE6713BE2713BEA7199 -:102D0A003BEE8F10055CFC9F1005CF34024AE5525A -:102D1A00FF711A52710A52714830027130300271D1 -:102D2A00203002CF330205CF32020A7130310271EC -:102D3A003BE6717030028F11055CFC9F11057160D2 -:102D4A003002D7717830027148F000D7C78806166A -:102D5A0066614FDD0967614EDE0396EF0186667292 -:102D6A00C6D7C7161714AA0412A943DD29AA041242 -:102D7A00A923FD5620C3AC02FD562013C2BDD813A9 -:102D8A00FD780EDE0C1714AA0212AA0403BA04EF85 -:102D9A00051714A9BA04AC041231FF319E03317F1E -:102DAA00087208C6D7C77100F200304400BFB601E6 -:102DBA00300188BF9001300984BF9E01BF9C01BFCA -:102DCA009A01BF9801BF9601BF9401BF9201F53CD9 -:102DDA00FF30FE00BFBE01F6BFBC01BFB80150EE16 -:102DEA00BFBA01A1BFB201C918FE00712012057154 -:102DFA00481CF9401DF902DD0B36100571A461C8A3 -:102E0A0071401CF9712812058F1CF9313507F5F547 -:102E1A00FBCB6CFF00717320C6D730EF00BFB40143 -:102E2A00F6BFBA017108F200D7710321D9F5FBF197 -:102E3A00E7240000DD1423DD1B23DD1323DD1A2321 -:102E4A00DD2823DD2D23DD33EF0AFDC22EEF2FFD12 -:102E5A004A2FEF2AFDC22EEF25F0C1AE6CFD562D8A -:102E6A00C0F313BE6C716320EF14F6BE6C7162205E -:102E7A00EF0CCB6CFF00716320EF03FDF42E8F1C67 -:102E8A00F9314508716420712104EF0671642071DB -:102E9A005101310421218F1CF9314510F6BE64BE5F -:102EAA006A3164200390EF01F6BE6ED731642004C4 -:102EBA00F690EF01F6BE6AD740D7FB06DE04FDF4B2 -:102ECA002ED740D7FB0BDE10F0C1AE6CFD562DC0DD -:102EDA00F313BE6C716220D7D9F4FBC1AE6CFD56F8 -:102EEA002DC0F313BE6C716320D7710221F0C1AEFD -:102EFA006CFD562DC0F313BE6CA0A4FB40A4FB408E -:102F0A00DC3DF5A4FBD9A5FBF1313F0402FD14D940 -:102F1A00A5FBF1BDD85008FD330D087208E6D2DDD5 -:102F2A00040192DFFC896158D1DD05716220EF034B -:102F3A00716320A0A5FB40A5FB2061C8F5A5FBD7BE -:102F4A00D5A6FBDD04B0A6FBD7CFA6FB04D9A7FB09 -:102F5A00F1F734020023DD0625DD0325DF1B40D708 -:102F6A00FB0BDE09F6BFA8FB716220EF1CD9F4FB4C -:102F7A00F1BFA8FB716320EF1040D7FB0BDE057190 -:102F8A006320EF05E6A1BFA8FBAE6C42A8FBDD10EB -:102F9A00AFA8FB426CFFDE05B26CFFEF03A26CFF29 -:102FAA00AE6C42A8FB61F8A0A7FBD78FAAFBB0AA18 -:102FBA00FBD1DF7431D4D107715BD1CFACFB02D521 -:102FCA00ACFBDD347140DAFBD9ABFBF1E73402002C -:102FDA0023DD0625DD0325DF05F6BE66EF06D9F4F7 -:102FEA00FBF1BE66A0ABFB40ABFB20DF06F5ABFBFB -:102FFA00B0ACFBCFAAFB16D7CFAAFB1E7148DAFBEF -:10300A00D5F6FBDF04F6BE66D7D9F4FBF14266FFBC -:10301A00DD16D9F4FBF112AE6643DE05A266FFEFB8 -:10302A0003B266FFCFAAFB03D731042101D7401AA6 -:10303A00F902DF19F6BE64BE6EBE6ABFB0FBBFB648 -:10304A00FBBFBCFBBFB4FBBFBAFBBFC0FB317420E4 -:10305A0003ED0831D5ADFB61E8ED03318F40FB9FED -:10306A00ADFB40AEFB1FDC1F7100FAFB4042FBFFC9 -:10307A00DD24D5AFFBDD05B0AFFBEF1A8F42FB9F16 -:10308A00AFFBF5AEFBEF0F7108FAFBD9AEFBF1A16E -:10309A00605C1F9FAEFBE9AEFB0944FB5080D6BFC4 -:1030AA00B0FBE9AEFB0964FB5080D6BFB6FBE9AEC4 -:1030BA00FB0984FB5080D6BFBCFBAFB0FB22B4FB3C -:1030CA0012D941FBF133BDD813FDE40CBFB2FBAFFB -:1030DA00B6FB22BAFB12D941FBF133BDD813FDE48A -:1030EA000CBFB8FBAFBCFB22C0FB12D941FBF133CA -:1030FA00BDD813FDE40CBFBEFBB0ADFBEF3DF6BF80 -:10310A00B0FBBFB6FBBFBCFBAFB4FB1231FF31AEA5 -:10311A0003316F12F623BFB2FBAFBAFB1231FF3194 -:10312A00AE03316F12F623BFB8FBAFC0FB1231FFFB -:10313A0031AE03316F12F623BFBEFB8F1CF9314546 -:10314A001F30BCFBFD6C2DF313BE6430B0FBFD6C6D -:10315A002DF313BE6E30B6FBFD6C2DF313BE6AD78A -:10316A0030BCFBFD6C2DF313BE6AD7C73112210B9D -:10317A00D5C2FBDD06B0C2FBED3C32711321D9F793 -:10318A00FBF1E7240000DD0F23DD1B23DD1123DD26 -:10319A005723DD2923DD3B5600F506FDED2832567F -:1031AA0001F506FDEF78D506FDDF075601E506FDB8 -:1031BA00EF055600F506FDCFC2FBFAEF61D506FD15 -:1031CA00DF0B5601E506FDCFC2FBFAEF51F5F7FB1F -:1031DA00EF4CD506FDDF0B5600E506FDCFC2FBFA24 -:1031EA00EF3CCFF7FB02EF36D927FCF1E7240000CA -:1031FA00DD0923DD2423DD0A23EF1E5600F506FD33 -:10320A00EF1CD506FDDF075601E506FDEF05560062 -:10321A00F506FDCFC2FBFAEF055601E506FD8F1C48 -:10322A00F93145086661FB715107EF066661FB716A -:10323A000101C6D7C736F00071F4DC297170F000BD -:10324A00CE9D08CE9EC0CE9F80F594FFF593FFF5E4 -:10325A0092FFE597FFE596FFCE9505CE9810CE9C96 -:10326A007F7100CEFB711BE3712BE3711AE7712B9F -:10327A00E7717A9D710A9E31929E02EFFA710B9E56 -:10328A00712321713321714321C6D7C73122211EEF -:10329A00712221710A9E31929E02EFFA34FCFB36AA -:1032AA0092FF52078B99A5A792DFF9710B9EC6D799 -:1032BA00C788061631322115713221C734C4FB3052 -:1032CA0092FF1652078B99A5A792DFF9C666736714 -:1032DA0018C4FBC6D7C77123213134211E7133218B -:1032EA00710A9E31929E02EFFA3492FF36C4FB5263 -:1032FA00078B99A5A792DFF9710B9E3144211371AF -:10330A007B9E8F04FC9E9A8F05FC9E9B71332171D4 -:10331A007A9EC6D7CFF4FBFFCFCFFB5CCFD0FB5F43 -:10332A00CFF0FB20D7C7CFCCFB10CFCDFB23CFF1FB -:10333A00FB20F5F5FBF5F6FBF5F7FBF5F8FB560078 -:10334A00664C64DE08723840FB0086EFF3C6D7C7C6 -:10335A0088061617F1E73402002361E3ED7036237D -:10336A0061F8ED3F34B12361E3ED46342403006193 -:10337A00F8ED553424070024070061D8ED7036248F -:10338A000B0061F8ED76342361F8EDBD342361F862 -:10339A00ED8A342361F8ED39362561F8ED59362482 -:1033AA00040061F8ED2635B124030061D8ED4A35F1 -:1033BA0024000061F8ED57352361F8ED70362523B6 -:1033CA0061E3ED67352361F8ED79352361F8ED8B1B -:1033DA00352361F8ED79352361F8ED9D352361F8E0 -:1033EA00EDAF352361F8EDBF352361F8EDC835231C -:1033FA0061F8EDD4352361F8EDE0352361F8EDE9A4 -:10340A0035252361E3ED70362561F8EDF235236148 -:10341A00F8EDFE3524030061F8ED0A36240A00614E -:10342A00F8ED163624120061F8ED33362361F8ED13 -:10343A002136ED7236679FCEFBED7C36307725FD5F -:10344A00563B66736718CCFBED7C3640D1FB6ADFCE -:10345A001440D2FB68DF0E674C6CDF0930A743FDCE -:10346A00563B713AD5679FD3FBED7C3667D1DD06B3 -:10347A0030693FFD563B34ECFB89616F99ED7C3630 -:10348A00675C02D1DD08304827FD563BEF0C675CCC -:10349A0001D1DD06304D27FD563B675C3CD1DD107E -:1034AA00305227FD563B675C3C7266736218CCFB50 -:1034BA00ED7C3667D1DD625C01D1DD05300800EFB5 -:1034CA0001F6609F23FC675C02D1DD03E6EF01F69B -:1034DA003423FC89616899675C04D1DD04E6A1EFB5 -:1034EA0001F63423FC89616899675C08D1DD0530EF -:1034FA002000EF01F63423FC89616899675C10D1DA -:10350A00DD05301000EF01F63423FC896168996704 -:10351A005C20D161E8716023FCED7C36D514F9DFBB -:10352A0009679FF5FBA014F9EF134014F905DE0DA6 -:10353A00D914F9F1B112674802FDA014F9ED7C36ED -:10354A00675C0F7266736218CCFBED7C364014F927 -:10355A0064DE0AE914F9671840FBA014F9675C7F76 -:10356A00318EC117F1243000FDBA32C0ED7C3667C6 -:10357A005C3F318EC117F1243000FDBA32C0ED7CB8 -:10358A0036675C07318EC117F1243000FDBA32C0AC -:10359A00ED7C36675C1F318EC117F1243000FDBA0D -:1035AA0032C0ED7C3667318EC117F1243000FDBA86 -:1035BA0032C0ED7C36679E999F03FCED7C367142E2 -:1035CA0021675C7F9F04FCED7C36714221675C3F7A -:1035DA009F05FCED7C36675C3F9F06FCED7C3667F9 -:1035EA005C1F9F07FCED7C3630903DFD563B679F84 -:1035FA000CFCEF7E304B3DFD563B679F0DFCEF7296 -:10360A00306D3DFD563B679F10FCEF66675C01D14C -:10361A0061E8FDA946EF5B401EFCC8DE55E91EFCC9 -:10362A00671870FAA01EFCEF49679F1EFCEF4367FC -:10363A00318E247200DD07240500DD0AEF0B300B02 -:10364A0009FD563BEF03F5ABFF679FEFFBEF2367DF -:10365A005CBF9FF1FB675C40D1DD17717321306954 -:10366A0039FD563BEF0CEF0A664C52DE05736718BC -:10367A00CCFBC6D7C716664C30DC094C37DE05FDD5 -:10368A009532EF67664C02DF1F8FCEFB5C03728FA9 -:10369A0025FC5C03318E316D08616A08128F25FCA6 -:1036AA005C80312A6162EF49664C4FDF05FDCD46E9 -:1036BA00EF3F664C61DF09E91EFC0970FA72EF31CF -:1036CA00664C3DDF0AAE90BF20FCF920FCEF226673 -:1036DA004C3EDF05F921FCEF18664C7FDF0D30ED1B -:1036EA003FFD563B713AD5524AEF06667309CCFB49 -:1036FA0072C6D7C71617F1241000240500DC072468 -:10370A004C00DD0DEF0E667238CCFB00715221EFD2 -:10371A0003A01EFCC6D7C7C1C1FBF8FF401AF903B4 -:10372A00DD06401AF904DF2F8C027309D4FB5E0A06 -:10373A00D1DF248C02318E04CCFB14896E0A997174 -:10374A006207CC0100316207086159018C01D1DF9F -:10375A00F4716307716B271004C6D7CF25FC03F5F4 -:10376A0023FCF527FCF529FCD7C788061617F1E7CD -:10377A0034020025DD5223DD2325DD3123DD052337 -:10378A00DD40EF50717221679F28FC306939FD5680 -:10379A003B5040C15012FD2037C0EF38675C03D15F -:1037AA0061F8715222675C839F25FCEF27675C03EF -:1037BA009F27FC675C034C0261F8711221FD753189 -:1037CA00EF12679F29FCEF0C6791DF08E0C15012E6 -:1037DA00FD2037C0C6D7C71617F1E7240000DD72EF -:1037EA0023DD61240300DD0C240200DD6024F900DE -:1037FA00DD67EF6840D7FB5BDC06CF26FC0FEF32B4 -:10380A0040D7FB4CDC06CF26FC0BEF2640D7FB3318 -:10381A00DC06CF26FC07EF1A40D7FB0BDC06CF26C7 -:10382A00FC03EF0E40D7FB06DC05E526FCEF03F5AB -:10383A0026FC31020705308000EF01F6086F26FCEE -:10384A007208EF1E8F23FCF523FC72EF15F928FC92 -:10385A00EF107142225235EF09F2EF066673092220 -:10386A00FC72C6D7C71617F1E7240000DD3824100A -:10387A0000DD1C23DD1C23DD30240E00DD1824119D -:10388A0000DD1B240F00DD12243000DD15EF1EE2DF -:10389A00EF1D5202EF195204EF155206EF115205AD -:1038AA00EF0D5207EF09F2EF065203EF0252FFC67D -:1038BA00D7C7306939FD563B8F10FDB010FDD16175 -:1038CA00E8ED6739CF10FD07316421777163214034 -:1038DA001AF903DF6E3608FDC7D933FCFD2E3A61AB -:1038EA008A70618AFD5D3AC0360CFDC7D932FCFD8B -:1038FA002E3A618A70618AFD5D3AC0D936FCF1318F -:10390A002F609F35FC8FF1FB5C80D1DD088FF1FBC6 -:10391A005C3F9F35FC8F3AFC4F35FCDD268F35FC2A -:10392A009F3AFC7173218F35FC9FD5FBE935FC0961 -:10393A000E239F34FCD935FCF11231FE03311F608E -:10394A009F28FC7150F000CE300BCF170006CE3105 -:10395A0006FD2603717A30710BE3710BE7C6D7C7F0 -:10396A002004FBF8FF3174210E8F28FC5002D61276 -:10397A00490E239C02EF058F34FC9C025013C15060 -:10398A00A4FD4A03C08C0270C15013C150A4FDE6C5 -:10399A000310045013C150A4FD4A03C0F21004C618 -:1039AA00D7C7168B728C01614ADE248B728C026136 -:1039BA004ADE188C01728C02614ADE068C01318E55 -:1039CA00EF048C02318E087208EF268B72EF228B7D -:1039DA00728C02614ADE048B72EF168C01728C02C1 -:1039EA006142DE068C01318EEF048C02318E087240 -:1039FA0008C6D7C716710AE7710BE37150F000CEFB -:103A0A00300BCF170006669E31FD2603717A30719E -:103A1A000BE33182E302EFFA8D1F7158F000710B4C -:103A2A00E772C6D7C7C1C1FBF8FF8C024CF6DC04AB -:103A3A0052FFEF1B8C024C0BDE03F2EF128C022CAE -:103A4A000A9C02318E318D52ECFDFB0DBB8B72103C -:103A5A0004C6D7C7C1C1FBF8FFAC0A14A914897000 -:103A6A008C026128706131FD56201344030071FEF7 -:103A7A00DC16AC0A14A9148C0299AC0A14CA020006 -:103A8A00AC0A14CA0310EF6EAC0A14A914894E02C8 -:103A9A00DE0AAC0A148A02819A02EF13AC0A14A94C -:103AAA0014894E0261D308AC0A148A02919A02ACB4 -:103ABA000A148A03919A03D1DF3CAC0A148A024C95 -:103ACA0010DF10A91489318EA112AC0A14A914624C -:103ADA0099EF17AC0A148A024CF0DF0EA914893147 -:103AEA008EB112AC0A14A9146299AC0A14CA020063 -:103AFA00AC0A14CA03101004C6D7ED413B717BFA15 -:103B0A00C7D546FC61F831042227710322D546FC49 -:103B1A0061E8B046FC717AFA5600664C0CDD127206 -:103B2A00F3311C7912FDCEFC0061CAFDA03B86EF81 -:103B3A00E9717AFAF2C6D7C75600664C0ADE0BF06C -:103B4A00317E12F67848FC86EFF0C6D7C7C1C1FBB2 -:103B5A00F8FFCC01008C014C0ADE36717BFA8C012D -:103B6A00F0317E0448FC14A96168DF09AC02B9711E -:103B7A007AFAF2EF1D8C01F0317E127948FC614924 -:103B8A0002DF06717AFAE2EF09717AFA615901EFF6 -:103B9A00C4E21004C6D7C72004FBF8FFF64248FC6B -:103BAA0061F8ED983C717BFA9C038C034C0ADE4F5A -:103BBA008C03F0317E0448FC14A96168DF05717A30 -:103BCA00FAEF3C8C03F0317E127948FCE743DF06BA -:103BDA00717AFA00EF21717AFA8C0372F3311C7947 -:103BEA0048FCCEFC0061CA629C02D1DF0A8C03F059 -:103BFA00317E12E67848FC717BFA615903EFABCC4F -:103C0A000200CC01018C02F0317E0448FC14A96147 -:103C1A0068DD7B8C02F0317E127948FCE743DF686D -:103C2A008C014C0ADE628C01F0317E127948FCE785 -:103C3A0043DD50717BFA8C01F0317E0448FC14A9F3 -:103C4A006168DF1B616901717BFA8C01F0317E12B8 -:103C5A00F67848FC717AFA8C024E01DCE7EF2F8C79 -:103C6A0001F0317E0448FC14A9128C02F0317E3333 -:103C7A007848FC8C01F0317E12E67848FC615902E2 -:103C8A00717AFA615901EF98615902ED0F3CCC0241 -:103C9A0000CC01008C014C0ADE1E8C01F0317E043E -:103CAA0048FC14A96168DF05CC0201EF068C02D139 -:103CBA0061E800615901EFDCF21004C6D7C720069B -:103CCA00FBF8FF3411FCC55006C150A8C15030FDA5 -:103CDA0074031006D2DD1DA05CFC405CFC08DE0308 -:103CEA00E2EF5A340CFC895CFC99FD903D7110DAC4 -:103CFA00FBF2EF49F55CFC8F0CFC5C01D1DD264040 -:103D0A001AF903DF205010C180FD2037C0C73610D2 -:103D1A000571D4C6DE0F17C15006C150A8C1503074 -:103D2A00FD74031006401AF901DD11401AF905DD88 -:103D3A000B8F0CFC5C02D161E8FDAC43F21006C6A5 -:103D4A00D7D90DFCC15030FD4A03C0629F10FC71E7 -:103D5A0030DDFB8FE5FB5C08D1DF06716307716B11 -:103D6A0027F2D7D910FCC1D90FFCC15030FDE603A8 -:103D7A0010047130DDFB8FE5FB5C08D1DF0671634F -:103D8A0007716B27F2D7C7200AFBF8FF500FC15003 -:103D9A0030FD4A03C0403FFB02DF077110DAFBF235 -:103DAA00EF547118DAFBCC0700CC0812CC09808FCB -:103DBA000CFC5C03D1DF08717AD5CC0607EF0671DB -:103DCA007BD5CC062F17040600C15004C150A0C1F0 -:103DDA005030FD1C041006C736100571D4C6DE1516 -:103DEA00401AF903DF0F17C15006C150A8C150305D -:103DFA00FD74031006F2100AC6D7C78F1AF9318F5D -:103E0A0024020061F8F560FC8F2AFDB02AFDD16119 -:103E1A00E8EDDF3ECF2AFD048F1AF9318FE723DD63 -:103E2A000B24020024030061C8EDDF3E4060FC025F -:103E3A00DF0AE0C15010FD2037C0EF134060FCFAE2 -:103E4A00DF0D5002C15010FD2037C0E6BF1EF93108 -:103E5A00340708712322F560FCEF1531242205F599 -:103E6A0060FCEF0CA060FCD560FC61F8CF60FCFF41 -:103E7A008F1DF9318FE723DD07B12361D30CEF12D0 -:103E8A0036100571C4713122EF0B710402713122AF -:103E9A00EF037132223132221A4061FC0361D8A049 -:103EAA0061FC4061FC02DF0E5004C15010FD203756 -:103EBA00C0EF03F561FC314207184062FC0361D888 -:103ECA00A062FC4062FC02DF0C5010C1FD2037C02A -:103EDA00EF03F562FCC6D7C7401AF902C6D7C72056 -:103EEA0004FBF8FF401AF90361E8401AF9041004C8 -:103EFA00C6D7C78F0CFC5C03D1DD1136100571D40F -:103F0A00DE0A30C73CFD563BD261F800401AF9037D -:103F1A00DF1B31220707306626FD563B003144225B -:103F2A000C7143225080C15012FD2037C0401AF94B -:103F3A0003DD05F6BD1AEF25D5F8FBDF09F6461AAB -:103F4A00DD1BB61AEF17D9F4FBF1461ADD0FD9F4C7 -:103F5A00FB12AD1A43DE04A61AEF02B61AC6D78FB1 -:103F6A00ECFB5C10D161E87162228FECFB5C0FD133 -:103F7A00DD6C8FECFB5C01D1DD05F51AF9EF5F8F83 -:103F8A00ECFB5C02D1DD15E0C15003C15084FDE6B3 -:103F9A00031004711300711B207103038FECFB5C87 -:103FAA0008D1DD05710303EF1C8FECFB5C04D1DD46 -:103FBA0014711300711B2031542203710303342539 -:103FCA00FC895CFC995005FD94027102035003C1FF -:103FDA00C15084FDE6031004711A20715322F5ECD6 -:103FEA00FBF2D7C7364105718461D8ED9C40364152 -:103FFA00057194DE0771405005CEABAC31B2D104E5 -:10400A00E2EDAB40713BD18F14F9A014F9318EE780 -:10401A00240000DD1723DD1C23DD2723DD2C23DD0F -:10402A003823DD4423DD4923DD4EEF668F1DF99FDA -:10403A004005EF58F0C15084FD4A03C0629F400515 -:10404A00EF4A8FFEFC9F4005EF425008C1506CFDBD -:10405A004A03C0629F4005EF335009C1506CFD4AC4 -:10406A0003C0629F4005EF248F66FC9F4005EF1C4A -:10407A008F02F99F4005EF14F171042061DC3119B8 -:10408A0070F171142061DC61689F4005CEABACE22F -:10409A00EF0F7160500571485005713BD5F514F961 -:1040AA00F2C6D7C78F1AF9318FE724000061F8EDFD -:1040BA004B4223DD1B2361F8ED5F412361F8EDE9F3 -:1040CA00412361F8ED26422361F8EDB242ED054342 -:1040DA00D51BF9DF28D560FCDD05F52FFDEF03A020 -:1040EA002FFD402FFD65DC09F51AF9710222ED0852 -:1040FA00434060FC0A61D8ED0843E51BF9712222AE -:10410A00F52FFDF5EFFBFD4105FD3428401DF904AF -:10411A00DF09710222F51AF9ED0843FDE62A40D9B2 -:10412A00FB9BDE09710222F51AF9ED0843FD7C2595 -:10413A00D2DD09710222F51AF9ED0843401BF90193 -:10414A00DF05F5F5FBEF04CFF5FB03CF1AF902FD06 -:10415A005125ED0843CF350002CF37001DCF120598 -:10416A0010FD982CFDF82C714A9DFD6537FD2F3303 -:10417A00F537FF712BE0F51BF9710222CBE43FEF13 -:10418A00CBE6F6F0FD4105713BD48F1CF931353091 -:10419A005004C15084FD4A03C0625C03318E315D14 -:1041AA0034DBFB896168995002C15084FD4A03C01F -:1041BA00D2DD067170DBFBEF047178DBFBFD34287E -:1041CA00FDAF2D71381CF9CF1AF9038FCEFB5C02B3 -:1041DA00D1DD095080C15010FD2037C0ED0843FDE4 -:1041EA000A4331A4E020712BE031020C05FD94430F -:1041FA00EF145027C15005C15084FDE6031004CFC7 -:10420A001AF9047102223164220CA02EFD402EFDFF -:10421A00FF61F8FD9443FD7743ED0843FD0A4331FE -:10422A00020C18F0C15005C15084FDE60310045079 -:10423A0005FD9402FD9443CF1AF903FD7743ED0877 -:10424A0043CFF5FB03F5F6FB717220F6426CFF6172 -:10425A00E8ED0843F5F8FBF6BF1EF9FD242EFDEF45 -:10426A002CFD4D2D714B9DF5DCFBF5DDFBF5DEFBE1 -:10427A00F5DFFB31442002EFFACE3708CBE4BFFF6B -:10428A00CBE6FFF1CED4FFCF370009F51205F6BE13 -:10429A00E0BEE2BED0716A27FD2726F52FFDCF1AB0 -:1042AA00F905712222F560FC31020714FD4105FD72 -:1042BA0034284060FC0ADC46E51BF9E51AF9EF3EB2 -:1042CA00F51BF971730171320431120502EFFA71AB -:1042DA00430231949E02EFFAFDAA05712AE7CEA4A1 -:1042EA0009F5F30061FD31040703712322E5F300A8 -:1042FA00CEA408712BE7E51AF9EF0300EFFDC6D744 -:10430A00D568FCDF1E310200195003C15084FD4AF2 -:10431A0003C0625C01D1DF07F51AF9710222D7E501 -:10432A0068FCD74068FCF0DF083104003FF568FC00 -:10433A00D74068FCC8DF0BF51AF9710222CF68FC76 -:10434A00F0D731020004A068FCD7F0C15004C15074 -:10435A0084FDE60310048FDBFB5C9F9FDBFB71107F -:10436A00ECFB30693FFD563BCF68FCF0D7F6421EA6 -:10437A00F9DD16A21EF98FF0FB5040D612AF1EF9D6 -:10438A0043DC06F51AF9710222D7716322F52EFD74 -:10439A00717207FD2603FD2603717307D7FDD00549 -:1043AA00F2D7C7200CFBF8FF8F12FCF0F911FCF3CF -:1043BA0003FD562013BC048F14FCF0F913FCF3031D -:1043CA00FD562013BC028F16FCF0F915FCF303FD11 -:1043DA00562013BBAC04BDD8F6BDDAAC04311EBD01 -:1043EA00DCF6BDDEFDB90CADD8BDDCADDABDDEACA8 -:1043FA0002BDD8F6BDDAAC02311EDADCC3DADEC39E -:10440A00BDDCF6BDDEFDB90CC0BDDEC0BDDCADDE77 -:10441A00FD2F0EADD8BDDCADDABDDEABBDD8F6BD25 -:10442A00DAAB311EDADCC3DADEC3BDDCF6BDDEFD93 -:10443A00B90CC0BDDEC0BDDCADDEFD2F0EDADAADD3 -:10444A00D8FDCC47C3C58FF6FC5C3FF0317E0476BD -:10445A00FC14C2C0B9A0F6FCF6BC08BC0A9C078CC6 -:10446A00074C2EDD3E8FF6FC0E0770F161DC605CB6 -:10447A003FF0317E127976FCBDD8F6BDDA8C07732F -:10448A00095023318FBDDC70BDDEFDB90CAC08BD0F -:10449A00DCAC0AFD2F0EADDABC0AADD8BC086159F6 -:1044AA0007EFBCAC08BDD8AC0ABDDAC9DC0004F61B -:1044BA00FD830DC9DCFFFFF6FD980EADD8BF70FC79 -:1044CA00AF6AFC4270FCDD12AF6CFCBF6EFCAF6AD7 -:1044DA00FCBF6CFCAF70FCBF6AFCAF6CFC426EFCAC -:1044EA00DC50AF6AFC426CFCDE48AF30FD426AFC2D -:1044FA00DE404072FC16DC1F4072FCA0DE168F7391 -:10450A00FC4F72FCDE0EAF6AFC2274FC4469106137 -:10451A00C8FD8545F572FCAF6AFC445146DC0BAF19 -:10452A006AFC241027BF32FDEF1930F82ABF32FD8A -:10453A00EF114072FCFFDD03E6EF01F63472FC89ED -:10454A00610899AF6EFC426CFCDC1BAF6CFC426AE2 -:10455A00FCDE13AF6AFC4232FDDE0BF573FCAF6A78 -:10456A00FCBF74FCEF114073FCFFDD03E6EF01F6BC -:10457A003473FC89610899100CC6D7C72008FBF868 -:10458A00FFA017FCD517FCDF1CA018FCD518FCDF10 -:10459A0014A019FCD519FCDF0CCF17FCFFCF18FCAF -:1045AA00FFCF19FCFF717BFA710A9E31929E02EFCE -:1045BA00FA8E98FDAC0E9C058E949F34FD8E969FC4 -:1045CA0035FD8E979F36FD8E939C048E929C03FD3B -:1045DA005E4713BC068F37FD4E05DF12AFF8FC614C -:1045EA004906DE41AC0622F8FCFD8146EF378C0510 -:1045FA00318EB112D937FDF143DF1F8C055C03916F -:10460A00DF03E6EF01F6046D01313D12010322F8E2 -:10461A00FC610906BBFD8146EF0B8F37FD4E05DEB7 -:10462A0004F6FD81468C059F37FDAC06BFF8FC8F6A -:10463A00F7FC9C028C044F1CFCDE138C034F1DFC00 -:10464A00DE0C6169028C024CA861C8CC02A78C02FC -:10465A00F0317E0420F914A944FFFFDF04E6B9EF24 -:10466A00128C02F0317E0420F914A944FEFFDD0306 -:10467A00A9A1B91008C6D7C7161744A90061C83638 -:10468A00A800A0F7FC40F7FCA861C8F5F7FCF9F709 -:10469A00FCF3311CF67820F9B7F647DFE5C6D7C731 -:1046AA0056A89666F0317E12F6B17820F966D1DF07 -:1046BA00F1F517FCF518FCF519FCF5F7FCC6D771EE -:1046CA007322D7C72004FBF8FFD914F9F1E72400B5 -:1046DA0000DD1123DD1C23DD2123DD2623DD2F232D -:1046EA00DD33EF388FF7FC9FFAFCA014F9F934FD9B -:1046FA00EF5EA014F9F935FDEF56A014F9F936FD6D -:10470A00EF4EA014F98F37FDFDC60E72EF42A014CA -:10471A00F95255EF3BA014F952AAEF34F9FAFCF317 -:10472A00311C7920F9BB317222058B9C03EF128C64 -:10473A00019C03D5FAFCDF06CFFAFCA7EF03B0FA17 -:10474A00FC718071772261DC61FB7171228C0372CA -:10475A001004C6D7C72006FBF8FF8E98FDAC0E9C46 -:10476A00038E97FDAC0E9C028E96FDAC0E9C018EBC -:10477A0094FDAC0E9B710B9E717AFA8C02F0317E1D -:10478A0012798023BC048C035C03D1DF158C024CA4 -:10479A0003DE0C8C024C02DF098C014C1D61F861AE -:1047AA0079048C01318EB1610904BC04313D1201D6 -:1047BA0003BC048C040D708C051C00BC041210068A -:1047CA00C6D7C7C3C12008FBF8FFF661490A61F8DA -:1047DA00614908DF07F7340000ED6948E6BC04F6D2 -:1047EA00BC06AC0ABC02AC08BBAC06614902AC040C -:1047FA0061F8614900DE28AC04BDD8AC06BDDAE137 -:10480A00FD3E0EADDABC06ADD8BC04ABBDD8AC02D9 -:10481A00BDDAE1FD590EADDABC02ADD8BBEFCAACC8 -:10482A0006BC02AC04BBAC08BDD8AC0ABDDAAC0409 -:10483A00BDDCAC06FDBC0DAC04BDDCAC06FD2F0E28 -:10484A00E1FD590EADDABC06ADD8BC04AC0661492F -:10485A0002AC0461F8614900DCC5AC0214AB121069 -:10486A000CC6D7C7D538FDDD05B038FDEF78CF388F -:10487A00FD02311407067110DBFBEF047118DBFB34 -:10488A008FDBFB7FFCFC76D1DD5C8FDBFB9FFCFCC6 -:10489A00401AF903DF22665C10D1DD1C8FDBFB5C5A -:1048AA0010D1DD0B5080C15011FD2037C0EF0950E7 -:1048BA0040C15011FD2037C0401AF903DD06401AE5 -:1048CA00F904DF22665C02D1DD1C8FDBFB5C02D1BE -:1048DA00DD0B5040C15010FD2037C0EF095020C1F8 -:0848EA005010FD2037C0C6D7B5 -:1048F200CF0BF90461FC61FCC1C3C5C7520C929293 -:1049020069D4FEC1DFF88EFD708EFCC1717AFA4067 -:104912001AF903DF06306626FD563BC09EFC609EF8 -:10492200FD34D4FE5206C0B9A5A592DFF9C6C4C2B1 -:10493200C061FC61DF520C929269D4FEC1DFF88E35 -:10494200FD708EFCC1717AFAC736410571A4C6DCCE -:1049520041F500FD71485005716050053154212622 -:10496200716207715321D5DCFBDF0FD5DDFBDF0A56 -:10497200D5DEFBDF05D5DFFBDD0C31620702EFFA86 -:10498200716307716B27FDC946FDDF32F514F9ED3E -:10499200A44AC73641057184C6DE0DF500FD714893 -:1049A2005005FDDF32EDA44AC73641057194C6DEDB -:1049B200154000FD03DD0C4000FD04DD064000FD56 -:1049C2000161F8F500FDD900FDF1E7240000DD08E2 -:1049D20023DD1323DD39EF6071405005E500FD71E1 -:1049E200505005EDA44A8F40059F15F99F18F9D93B -:1049F20015F9FD7E36629F17F94015F97FDD06CF66 -:104A020000FD02EF03F500FD71505005EDA44AC709 -:104A12003641057194C6DE1CC736410571C4C6DE37 -:104A220006CF00FD03EF11F500FD714850057160DE -:104A32005005EF6ECF00FD044000FD03DF0E8F171F -:104A4200F99F4005D915F9FDFD36EF108F40057627 -:104A5200C7D915F9FD5933C071505005D918F9F16C -:104A6200242900DD2D240400DD28242200DD232456 -:104A72001100DD0C240100DD19241E00DD14EF0CF1 -:104A82004015F960DF0CCF15F961EF06F514F9A0B6 -:104A920015F94000FD03DF0AD915F9FD7E36629F44 -:104AA20017F9C09EFC609EFD34D4FE5206C0B9A523 -:104AB200A592DFF961FCC1C3C5C7520C929269D4B9 -:104AC200FEC1DFF88EFD708EFCC1F616717AFA71A6 -:104AD2004AE5717BBD51405F0401D1DD05A7F64770 -:104AE200DFF3300400BF2401F6BF2A01300B0BBFF5 -:104AF2002801FD2603300B0FBF2801FD2603300FCE -:104B02000FBF2801710AE6714320C09EFC609EFD22 -:104B120034D4FE5206C0B9A5A592DFF9C6C4C2C0FC -:104B220061FCC1C3C5C7520C929269D4FEC1DFF8C1 -:104B32008EFD708EFCC1717AFAD53EFBDD0EEB3C28 -:104B4200FB899E44A23CFBB03EFBEF2B710AE63090 -:104B52000400BF2401F6BF2A01300B0BBF2801FD60 -:104B62002603300B0FBF2801FD2603300F0FBF288D -:104B720001713320714320C09EFC609EFD34D4FE3F -:104B82005206C0B9A5A592DFF9C6C4C2C061FC61D4 -:104B9200EF520C929269D4FEC1DFF88EFD708EFC4A -:104BA200C12008FBF8FF71503002CEABACCC010043 -:104BB200F6BC0231B2E210617902F6614902DFF31A -:104BC20071603002ED484C8E519B713BE28B5C026E -:104BD200D1DD1D8B5C08D1DF0971503002CC0100A0 -:104BE200EFCE8C0770FDE037629E50CC0102EFC021 -:104BF2008B5C03D1DF408E509C05715030028C01DA -:104C0200D1DF0E8C0570FD6E38629C07CC0101EF7E -:104C1200328C014C02DF0671603002EF29CF340280 -:104C22005A716030028C0570C18C0770FD7337C0F9 -:104C3200CF34024AEF108B5C01D1DD067160300285 -:104C4200EF0400EDB24B1008C09EFC609EFD34D410 -:104C5200FE5206C0B9A5A592DFF961FCC18F06FC20 -:104C62004F96FFDF328F07FC4F97FFDF2A8F08FC3A -:104C72004F98FFDF228FE5FB5C04D1DF1A7120DD44 -:104C8200FB716307716B27401AF905DD06401AF9BB -:104C92000161F8CF1BF902C061FCA046FC61FCC1B6 -:104CA200C3C5C7520C929269D4FEC1DFF88EFD7063 -:104CB2008EFCC1C1FBF8FF8D1F9C018E31318EE746 -:104CC200240600DD0823DD0F23DD25EF45717AFA86 -:104CD2008C019F33FCEF3B717AFA401DF902DF072A -:104CE2008C019F32FCEF2B51FF2E019F32FCEF22F1 -:104CF200717AFA8C019F02F98FDAFB5C01D1DF1223 -:104D0200401AF903DD06401AF904DF0630272AFDAE -:104D1200563B4031FF09DE08A031FF710BE3EF196A -:104D22007158F0007162214044FC02DF03F6EF0586 -:104D3200D944FCF1A1609F44FCC0C09EFC609EFD72 -:104D420034D4FE5206C0B9A5A592DFF9C6C4C2C0CA -:104D520061FC61FF520C929269D4FEC1DFF88EFDB4 -:104D6200708EFCC1717AFA8F0CFC5C03D1DD1940A4 -:104D72001AF903DD06401AF904DF0D36100571D465 -:104D8200DE0630C73CFD563BC09EFC609EFD34D41F -:104D9200FE5206C0B9A5A592DFF961FC61FC00EFE5 -:104DA200FD61FC61FC61FC61FC61FC61FC61FC6118 -:104DB200FC61FC61FC61FC61FC61FC61FC61FC6109 -:104DC200FC61FC61FC61FC61FC61FC61FC61FC61F9 -:074DD200FC61FC61FC61FCC7 -:0A4FF60031393A31333A3039000006 +:1022CA005C0036FFA7FB5C0036FFA7FB5C0036FF0D +:1022DA00A7FBAB0000FF67FDAB0000FF67FDAB008B +:1022EA0000FF67FDAB0000FF67FD00D800D800D8EB +:1022FA0020DA20DA20DA20DAEAEAEA69696969E8A2 +:10230A00E8E867676767020202010101010000004D +:10231A0000000817263544536271807162534435B0 +:10232A0026177F7E7D7C7A797877767574727170DC +:10233A006F6E6D6C6A6968676665646261605F5E2C +:10234A005D5C5A5958575655535251504F4E4D4B42 +:10235A004A494948474645434241403F3E3D3B3A48 +:10236A003938080101020203030200FEFBF7F3F009 +:10237A00F0F3FA041225384D5F6E777A776E5F4D67 +:10238A0038251204FAF3F0F0F3F7FBFE0002030318 +:10239A0002020100000000001F003B005A00780002 +:0E23AA009700B500D400F300110130014E0180 +:1023B8008F07FDB007FDD161E8ED8424CF07FD80CC +:1023C800710407E6613012F6712420611043DD3292 +:1023D800710407E661306061FB712120312420130C +:1023E8007130E1FB5002C15011FDF536C0CF0BF939 +:1023F80002EF0F7138E1FBE0C15011FDF536C0F571 +:102408000BF94002F94BDC164002F9B9DE10400C1A +:10241800F928DE05A00CF9EF27711320EF224002FE +:10242800F93EDC064002F9BDDC10400DF928DE0556 +:10243800A00DF9EF0B711220EF06F50CF9F50DF967 +:102448003112200D3104200931020705713304EFE0 +:1024580003713204311205097140E1FB714202EF48 +:10246800077148E1FB714302D50BF9DD06B00BF9A2 +:10247800714202401CF90361F8FDC727D7C78F06D0 +:10248800FD76FDC124401FF901DD05710320EF270A +:10249800664F06FD61F831342014713320FD410583 +:1024A800664C07DD038161F8FD5B25FD802571021F +:1024B80020300927FDA43BC6D7C77162017172019C +:1024C800E0FD94025008FD4B3A629F02F95009FD65 +:1024D8004B3A62767163014002F9F1DC06CF1FF9CD +:1024E80002EF0F4002F904DE06CF1FF903EF03E500 +:1024F8001FF9664CEADC06CF06FD07EF44664CC6BA +:10250800DC06CF06FD06EF39664C9FDC06CF06FDDC +:1025180005EF2E664C7CDC06CF06FD04EF23664CE7 +:1025280050DC06CF06FD03EF18664C22DC06CF060A +:10253800FD02EF0D664C06DC05E506FDEF03F5062A +:10254800FD4006FD07DF0A401FF90161F8CF1FF9BA +:1025580004C6D7C7C1FBF8FF500AFD9402304000FB +:10256800BB17C15002C15006C1506CFD1C041006B7 +:102578005096FD9402C0C6D7C72008FBF8FF8F0607 +:10258800FD5006D604CA2214F7500689A54804F956 +:10259800A390DFF7401FF90161E8ED0527304A579E +:1025A800BB17C15002C1503EC1506CFD1C0410063F +:1025B800D2DD077100E0FBED05277108E0FB170489 +:1025C8000300C15004C1500CC1506CFD74031006C7 +:1025D800D906FDF10104F42214A9318D12A9318E16 +:1025E800616B08616A08BB17C15002C1500EC15027 +:1025F8006CFD1C041006F690BB17C15002C1500CAC +:10260800C1506CFD1C04100631542002EFFA7142CF +:10261800208F06FDF0312E040A21C15010C1504010 +:10262800C1506CFD1C04100631542002EFFA7142AF +:10263800208F06FDF0312E041A21C15010C15050D0 +:10264800C1506CFD1C04100631542002EFFA71428F +:10265800208F06FDF0312E042A21C15010C1506090 +:10266800C1506CFD1C04100631542002EFFA71426F +:10267800208F06FDF0312E043A21C15010C1507050 +:10268800C1506CFD1C04100650A5FD9402D906FD2E +:10269800F10104F42214A9318D12A9318E616B085D +:1026A800616A08BB17C15002C1500EC1506CFD1CB5 +:1026B80004100650A5FD94025004C1506CFD4A0355 +:1026C800C0629C07E906FD0909234E0761C30AE9B0 +:1026D80006FD0902234E0761D80017040300C15004 +:1026E80004C1500CC1506CFD1C041006F6BB17C188 +:1026F8005002C1503EC1506CFD1C0410061008C6A3 +:10270800D7C7C1FBF8FF8F0EF94F02F961F8EDC387 +:10271800274010F928DE06A010F9EDC327F510F9B7 +:102728008F02F99F0EF98F02F95070D6123073514B +:10273800230480001231FF318E039F0FF99FDCFBC9 +:10274800F6BB8F0FF97C804C95DC1B8F0FF9318F0E +:10275800241400BDD8AF06F9FD790D1231FF318E72 +:1027680003318FBBEF198F0FF9318F241400BDD8B7 +:10277800AF08F9FD790D1231FF318E03318FBBD9C6 +:1027880004F9F1610900BB44000171FEDC03F69015 +:10279800BB8C0101DE02F6BBABABBF6EFC17C150B0 +:1027A80002C1500CC1506CFD1C041006D2DF088F0A +:1027B80002F99F0EF9EF047100E0FBF2C0C6D7C71B +:1027C8002008FBF8FF401FF902DF0BCFDDFB63CFCA +:1027D800DFFBC8ED3829401FF903DF2C170406007A +:1027E800C15002C15004C1506CFD74031006D2DD03 +:1027F80006CFDDFB63EF0A8C069FDDFB8C079FDEAF +:10280800FBCFDFFBC8ED382917040600C15002C111 +:102818005004C1506CFD74031006D2DD107100E045 +:10282800FB710320F5DDFBE520F9ED0D298C063160 +:102838008E318D080E07081C00BBD906FDF1041067 +:1028480023148972ABFDCC0EBB8C019C068B9C07B4 +:1028580017040400C15002C1C1506CFD7403100676 +:10286800D261E8ED0D298C049FDFFB8C04318E3199 +:102878008D080E05081C00BBBDD8F6BDDAC9DC0101 +:10288800A5FD550FDC09CC0364F6BF12F9EF76AB52 +:10289800BDD8F6BDDAAF12F9BDDCF6BDDEADD8C1E4 +:1028A800ADDAC1C9D800A0F6BDDAADDEFD000FADC6 +:1028B800D8BDDCADDABDDEC0BDDAC0BDD8ADDEFD49 +:1028C800550F61D309CC031EF6BF12F9EF37ABBD24 +:1028D800D8F6BDDAC9DC819DFD550FDC0BCC030AA7 +:1028E80030F401BF12F9EF1DABBDD8F6BDDAC9DC73 +:1028F800019BFD550FDC0BCC030530F401BF12F929 +:10290800EF03E520F93134040D31120509CFDDFB61 +:1029180064F5DEFBEF1A8C064E03DE0C8C069FDD99 +:10292800FB8C079FDEFBEF088C039FDDFBF5DEFBCE +:1029380040DDFB0BDE064014F90BDE1640DDFB061E +:10294800DE064014F906DE0AD5DDFBDF0ED514F9E4 +:10295800DD095020C15011FDF536C08FDDFB9F14F5 +:10296800F9D51CF961F8CF14F964401CF90361E842 +:10297800F515F940DDFB0BDE03E6EF01F6609C057B +:102988008F15F94E05DD138C059F15F98C0570C15F +:102998005012C150A4FDE60310041008C6D7C75052 +:1029A80007C15002C15084FDE60310045012FD9483 +:1029B80002500FC15002C15084FDE60310045003B9 +:1029C800FD9402501FC15002C15084FDE60310045B +:1029D8005016FD94025003C15084FD4A03C0625C46 +:1029E80001D1DD107170E1FB5002C15013FDF536C5 +:1029F800C0E2EF01F2C6D7C75004C15084FD4A03B4 +:102A0800C0625C03D1DD405014FD872A34E1FB89A4 +:102A18005C9F998A0C7CFF50FF5C14D1DD228A0CE4 +:102A28007CFF5C147234E5FB89616A997162075610 +:102A380000316207058666D1DFF7716307716B277E +:102A480034F4FB895CEB995002C15084FD4A03C001 +:102A5800D2DD225007C15002C15084FDE6031004A4 +:102A68005033FD9402F0C15002C15084FDE60310BA +:102A7800047178E1FBE0C15013FDF536C0C6D7C735 +:102A8800C12004FBF8FFCC02005004C15084FD4A69 +:102A980003C0629C038C045C20D1DD0E8C036C01A6 +:102AA8009C038C026C209C02EF138C045C10D1DD1B +:102AB8000C8C035CFE9C038C026C109C028C045CE6 +:102AC80008D1DD0E8C036C029C038C026C089C02FE +:102AD800EF138C045C04D1DD0C8C035CFD9C038C2F +:102AE800026C049C028C03D1DD05501AFD94028C03 +:102AF8000370C15004C15084FDE60310048FE1FB4C +:102B08005C9F728C03318E316D148C03318E314D84 +:102B1800616D08616C5C606162629FE1FB8FEDFB37 +:102B28007CFF50FF5E02D1DD278FEDFB7CFF5E024C +:102B38007234E5FB89616A99716207CC01003162E0 +:102B480007086159018C01D1DFF4716307716B27A4 +:102B5800F21006C6D7C7D9D5FBC15006C15084FDAF +:102B6800E60310046276D9D6FBC15007C15084FD34 +:102B7800E60310046261666672C6D7FD5D2BF2D764 +:102B8800C72004FBF8FF711300711B207103037148 +:102B98000205E0C15003C15084FDE6031004501340 +:102BA800FD9402F0C15005C15084FDE603100450A5 +:102BB8000FC1E0C15084FDE6031004500AFD9402E1 +:102BC8007103055008FD9402501FC1E0C15084FDF7 +:102BD800E60310045012FD94025003C15084FD4ACC +:102BE80003C0625C01D1DF03E2EF3C5003C1C15076 +:102BF80084FDE6031004710203711A20C717A11699 +:102C0800F74918239BA3A75103614ADFF4C6506410 +:102C1800FD940217A1C15003C15010C150A4FD1C5E +:102C2800041006F50AF9F21004C6D75003C15084FF +:102C3800FD4A03C0625C01D1DD195014FD872AFDED +:102C4800FF295014FD9402E0C15003C15084FDE6F1 +:102C5800031004711300711B20710303F0C1E0C15C +:102C68005084FDE6031004F0C15003C15084FDE612 +:102C7800031004F2D7C72004FBF8FFCC02008F0A28 +:102C8800F99C035010C150A4FD4A03C0629F0AF981 +:102C9800D541FBDD04F2ED5B2D8C037F0AF95C085E +:102CA800D1DD108F0AF95C08D1DF05CC0210EF03E3 +:102CB800CC02208C037F0AF95C04D1DD168F0AF957 +:102CC8005C04D1DF088C026C049C02EF068C026C59 +:102CD800089C028FE0FB5CF3728F0AF95C0C61625E +:102CE800629FE0FB8FECFB7CFF50FF5E029C02D1F1 +:102CF800DD1F34E4FB896E0299716207CC01003153 +:102D08006207086159018C01D1DFF4716307716BA7 +:102D1800278F0AF95C40D1DD095002C15012FDF538 +:102D280036C08F0AF95C01D1DD08E0C15012FDF50B +:102D380036C0717AFA8F0AF95C41D1DD15340AF987 +:102D4800895CBE99D90AF9C15010C150A4FDE603A7 +:102D58001004F21004C6D7FDA629F2D7FDFF29F208 +:102D6800D7C78FF4FB7617FD872A664FF4FBDFF28F +:102D7800F5F4FBF2C6D77100010571785005713A78 +:102D8800D5713BD1713ADD713BD98F10055CFC9F41 +:102D98001005CF54054AE5420571104205710042FD +:102DA80005714850057130500571205005CF530505 +:102DB80005CF52050A7130510571205105713BD577 +:102DC800717050058F11055CFC9F1105D771785003 +:102DD8000571080105D77140F00071783002713A29 +:102DE800E6713BE2713BEA713BEE8F10055CFC9F9C +:102DF8001005CF34024AE552FF711A52710A527116 +:102E08004830027130300271203002CF330205CFD2 +:102E180032020A71303102713BE6717030028F1153 +:102E2800055CFC9F110571603002D7717830027122 +:102E380048F000D7C788061666614FDD0967614EFE +:102E4800DE0396EF01866672C6D7C7161714AA0462 +:102E580012A943DD29AA0412A923FD5620C3AC02F6 +:102E6800FD562013C2BDD813FD490FDE0C1714AA56 +:102E78000212AA0403BA04EF051714A9BA04AC0491 +:102E88001231FF319E03317F087208C6D7C771001F +:102E9800F200304400BFB601300188BF900130090C +:102EA80084BF9E01BF9C01BF9A01BF9801BF9601D4 +:102EB800BF9401BF9201F53CFF30FE00BFBE01F692 +:102EC800BFBC01BFB80150EEBFBA01A1BFB201C972 +:102ED80018FE007120120571481EF9401FF902DD25 +:102EE8000B36100571A461C871401EF971281205CE +:102EF8008F1EF9313507F5FBFBCB6CFF0071032101 +:102F0800C6D730EF00BFB401F6BFBA017108F200AE +:102F1800D7711321D9FBFBF1E7240000DD1423DD71 +:102F28001B23DD1323DD1A23DD2823DD2D23DD33C9 +:102F3800EF0AFDA82FEF2FFD3030EF2AFDA82FEF65 +:102F480025F0C1AE6CFD3C2EC0F313BE6C7173202E +:102F5800EF14F6BE6C717220EF0CCB6CFF0071732E +:102F680020EF03FDDA2F8F1EF931450871742071A7 +:102F78002104EF06717420715101311421218F1E33 +:102F8800F9314510F6BE64BE6A3174200390EF0132 +:102F9800F6BE6ED731742004F690EF01F6BE6AD7FC +:102FA80040DDFB06DE04FDDA2FD740DDFB0BDE102B +:102FB800F0C1AE6CFD3C2EC0F313BE6C717220D70D +:102FC800D9FAFBC1AE6CFD3C2EC0F313BE6C717315 +:102FD80020D7711221F0C1AE6CFD3C2EC0F313BE98 +:102FE8006CA0A6FB40A6FB40DC3DF5A6FBD9A7FBE1 +:102FF800F1313F040AFD14D9A7FBF1BDD85008FDF3 +:10300800040E087208E6D2DD040192DFFC896158DB +:10301800D1DD05717220EF03717320A0A7FB40A7D3 +:10302800FB2061C8F5A7FBD7E9A9FB091C23508041 +:10303800D6BFAAFB22AEFB1231FF319E03317FBF00 +:10304800ACFB30AAFBFD522EF313BE6CB0A8FBD527 +:10305800A8FBDF10CFA8FB80A0A9FB40A9FB0F614C +:10306800C8F5A9FBD78FB0FBB0B0FBD1DF7431D462 +:10307800D107715BD1CFB2FB02D5B2FBDD34714011 +:10308800E0FBD9B1FBF1E734020023DD0625DD03BF +:1030980025DF05F6BE66EF06D9FAFBF1BE66A0B1DC +:1030A800FB40B1FB20DF06F5B1FBB0B2FBCFB0FBB4 +:1030B80016D7CFB0FB1E7148E0FBD5FCFBDF04F64A +:1030C800BE66D7D9FAFBF14266FFDD16D9FAFBF1E5 +:1030D80012AE6643DE05A266FFEF03B266FFCFB00D +:1030E800FB03D731142101D7401CF902DF19F6BEC2 +:1030F80064BE6EBE6ABFB6FBBFBCFBBFC2FBBFBA35 +:10310800FBBFC0FBBFC6FB31042103EDC031D5B303 +:10311800FB61E8EDBB318F42FB9FB3FB40B4FB1F63 +:10312800DC1F710000FC4044FBFFDD24D5B5FBDD4E +:1031380005B0B5FBEF1A8F44FB9FB5FBF5B4FBEF69 +:103148000F710800FCD9B4FBF1A1605C1F9FB4FBB0 +:10315800E9B4FB0946FB5080D6BFB6FBE9B4FB09CE +:1031680066FB5080D6BFBCFBE9B4FB0986FB5080E8 +:10317800D6BFC2FBAFB6FB22BAFB12D943FBF13371 +:10318800BDD813FDB50DBFB8FBAFBCFB22C0FB1209 +:10319800D943FBF133BDD813FDB50DBFBEFBAFC29C +:1031A800FB22C6FB12D943FBF133BDD813FDB50D85 +:1031B800BFC4FBB0B3FBEF3DF6BFB6FBBFBCFBBF64 +:1031C800C2FBAFBAFB1231FF31AE03316F12F623E7 +:1031D800BFB8FBAFC0FB1231FF31AE03316F12F63F +:1031E80023BFBEFBAFC6FB1231FF31AE03316F12F6 +:1031F800F623BFC4FB8F1EF931451F30C2FBFD52B9 +:103208002EF313BE6430B6FBFD522EF313BE6E30A0 +:10321800BCFBFD522EF313BE6AD730C2FBFD522E03 +:10322800F313BE6AD7C73122210BD5C8FBDD06B020 +:10323800C8FBEDF432712321D9FDFBF1E72400002E +:10324800DD0F23DD1B23DD1123DD5723DD2923DDDE +:103258003B5600F50EFDEDE0325601F50EFDEF7818 +:10326800D50EFDDF075601E50EFDEF055600F50EFC +:10327800FDCFC8FBFAEF61D50EFDDF0B5601E50E59 +:10328800FDCFC8FBFAEF51F5FDFBEF4CD50EFDDF86 +:103298000B5600E50EFDCFC8FBFAEF3CCFFDFB0255 +:1032A800EF36D92DFCF1E7240000DD0923DD2423C6 +:1032B800DD0A23EF1E5600F50EFDEF1CD50EFDDFCF +:1032C800075601E50EFDEF055600F50EFDCFC8FBCC +:1032D800FAEF055601E50EFD8F1EF93145086661C6 +:1032E800FB715107EF066661FB710101C6D7CFFA82 +:1032F800FBFFCFD5FB5CCFD6FB5FCFF6FB32D7C742 +:10330800CFD2FB10CFD3FB27CFF7FB20F5FBFBF584 +:10331800FCFBF5FDFBF5FEFB5600664C64DE08720F +:103328003842FB0086EFF3C6D7C788061617F1E7C1 +:103338003403002361E3ED45362361F8ED1534B11C +:103348002361E3ED1C342561F8ED2B3424070024B8 +:10335800070061D8ED4536240B0061F8ED4C3423A5 +:1033680061F8ED93342361F8ED60342361F8ED0FD3 +:10337800362561F8ED2F362561F8EDFC34B125616D +:10338800D8ED203524000061F8ED2D352361F8EDE6 +:1033980045362402002361E3ED3D352361F8ED4F06 +:1033A800352361F8ED61352361F8ED4F352361F878 +:1033B800ED73352361F8ED85352361F8ED953523F7 +:1033C80061F8ED9E352361F8EDAA352361F8EDB675 +:1033D800352361F8EDBF352402002361E3ED45365E +:1033E80024020061F8EDC8352361F8EDD435256174 +:1033F800F8EDE035240A0061F8EDEC35241200619F +:10340800F8ED09362361F8EDF735ED4736679FD4B7 +:10341800FBED513630832BFDA43B66736718D2FB56 +:10342800ED513640D7FB6ADF1440D8FB68DF0E67E2 +:103438004C6CDF09301A44FDA43B713AD5679FD91B +:10344800FBED513667D1DD0630CD3FFDA43B34F2AC +:10345800FB89616F99ED5136675C02D1DD08305FF9 +:103468002DFDA43BEF0C675C01D1DD0630642DFD1A +:10347800A43B675C3CD1DD1030692DFDA43B675C43 +:103488003C7266736218D2FBED513667D1DD625C1F +:1034980001D1DD05300800EF01F6609F29FC675C6B +:1034A80002D1DD03E6EF01F63429FC8961689967EA +:1034B8005C04D1DD04E6A1EF01F63429FC896168DA +:1034C80099675C08D1DD05302000EF01F63429FC4E +:1034D80089616899675C10D1DD05301000EF01F64D +:1034E8003429FC89616899675C20D161E871602999 +:1034F800FCED5136D516F9DF09679FFBFBA016F9DD +:10350800EF134016F905DE0DD916F9F1B112674827 +:103518000AFDA016F9ED5136675C0F7266736218E2 +:10352800D2FBED51364016F964DE0AE916F9671840 +:1035380042FBA016F9675C7F318EC117F124300079 +:10354800FD4C06C0ED5136675C3F318EC117F12442 +:103558003000FD4C06C0ED5136675C07318EC1174F +:10356800F1243000FD4C06C0ED5136675C1F318EEA +:10357800C117F1243000FD4C06C0ED513667318E7D +:10358800C117F1243000FD4C06C0ED5136679E99F5 +:103598009F09FCED5136715221675C7F9F0AFCED53 +:1035A8005136715221675C3F9F0BFCED5136675CC9 +:1035B8003F9F0CFCED5136675C1F9F0DFCED5136AB +:1035C80030DE3DFDA43B679F12FCEF7D30993DFD49 +:1035D800A43B679F13FCEF7130BB3DFDA43B679F85 +:1035E80016FCEF65675C01D161E8FD3047EF5A4092 +:1035F80024FCC8DE54E924FC671872FAA024FCEF06 +:1036080048679F24FCEF4267318E247200DD07244F +:103618000500DD0AEF0B30DC09FDA43BEF03F5AB39 +:10362800FF679FF5FBEF228FF8FB617F5C02D1DD1E +:1036380006302839FDA43B679FF8FBEF0CEF0A66BC +:103648004C52DE05736718D2FBC6D7C716664C30D6 +:10365800DC094C37DE05FD2706EF67664C02DF1FE5 +:103668008FD4FB5C03728F2BFC5C03318E316D08A9 +:10367800616A08128F2BFC5C80312A6162EF49660F +:103688004C3DDF0AAE90BF26FCF926FCEF3A664CAB +:103698003EDF05F927FCEF30664C4FDF05FD544748 +:1036A800EF26664C61DF09E924FC0972FA72EF180B +:1036B800664C7FDF0D305A40FDA43B713AD5524A23 +:1036C800EF06667309D2FB72C6D7C71617F1241026 +:1036D80000240500DC07244C00DD0DEF0E6672386F +:1036E800D2FB00716221EF03A024FCC6D7C7C1C179 +:1036F800FBF8FF401CF903DD06401CF904DF2F8CA2 +:10370800027309DAFB5E0AD1DF248C02318E04D2FF +:10371800FB14896E0A99716207CC010031620708AF +:103728006159018C01D1DFF4716307716B271004B3 +:10373800C6D7CF2BFC03F529FCF52DFCF52FFCD7BC +:10374800C788061617F1E734020025DD4923DD1A7C +:1037580025DD2823DD0523DD37EF47711222679F1A +:103768002EFC302839FDA43BEF38675C03D161F8A3 +:10377800710223675C839F2BFCEF27675C039F2DF7 +:10378800FC675C034C0261F8712221FD2D32EF12B7 +:10379800679F2FFCEF0C6791DF08E0C15012FDF521 +:1037A80036C0C6D7C71617F1E724000061F8ED3E0A +:1037B8003823DD61240300DD0C240200DD6024F9D8 +:1037C80000DD7AEF7B40DDFB5BDC06CF2CFC0FEFE6 +:1037D8003240DDFB4CDC06CF2CFC0BEF2640DDFB3A +:1037E80033DC06CF2CFC07EF1A40DDFB0BDC06CFE1 +:1037F8002CFC03EF0E40DDFB06DC05E52CFCEF039B +:10380800F52CFC31020705308000EF01F6086F2C1B +:10381800FC7208EF318F29FCF529FC72EF2840DB98 +:10382800FB01DD0FD9DBFBF11231FE03311F0872FA +:1038380008EF13E2EF107172225235EF09F2EF062A +:1038480066730928FC72C6D7C71617F1E72400006B +:10385800DD38241000DD1C23DD1C23DD30240E00A0 +:10386800DD18241100DD1B240F00DD12243000DDDB +:1038780015EF1EE2EF1D5202EF195204EF15520622 +:10388800EF115205EF0D5207EF09F2EF065203EF61 +:103898000252FFC6D7C7302839FDA43B8F18FDB0A8 +:1038A80018FDD1DF6CCF18FD073174214A717321DF +:1038B800401CF903DF413610FDC7D93AFCFD7C3ABC +:1038C800618A70618AFDAB3AC03614FDC7D939FCEC +:1038D800FD7C3A618A70618AFDAB3AC0D93CFCF143 +:1038E800312F609F3BFC8F38FC4F3BFCDD09710298 +:1038F800228F3BFC9F38FC7150F000CE300BCF1765 +:103908000006CE3106FD2603717A30710BE3710B88 +:10391800E7C6D78F3BFC9F38FC8F3BFC9FDBFBD770 +:10392800401CF903DD02F2D78FF8FB5C02D1DD08F9 +:103938008F3BFC9F40FCEF6A310422247103227103 +:1039480023228FF8FB5C04D1DD088FF7FB9F41FC35 +:10395800EF068F3BFC9F41FC8F41FC9F40FCEF42F0 +:103968003114222C711322712222D52EFCDF05F589 +:1039780042FCEF0B8F2EFC5002D6A1609F42FC8FB9 +:1039880042FC9F40FC5040C15012FDF536C0EF127A +:10399800312222088F41FC9F40FCEF068F42FC9F9A +:1039A80040FC8F40FC9FDBFB4040FC01DF05E52E1F +:1039B800FCEF0ED940FCF11231FE03311F609F2E3F +:1039C800FC8FF8FB5C01D1DD02F2D75013C150A483 +:1039D800FD4A03C0E940FC092C2370C15013C150B3 +:1039E800A4FDE60310045013C150A4FD4A03C0F21D +:1039F800D7C7168B728C01614ADE248B728C0261E8 +:103A08004ADE188C01728C02614ADE068C01318E06 +:103A1800EF048C02318E087208EF268B72EF228B2E +:103A2800728C02614ADE048B72EF168C01728C0272 +:103A38006142DE068C01318EEF048C02318E0872F1 +:103A480008C6D7C716710AE7710BE37150F000CEAC +:103A5800300BCF170006669E31FD2603717A307150 +:103A68000BE33182E302EFFA8D1F7158F000710BFE +:103A7800E772C6D7C7C1C1FBF8FF8C024CF0DC0463 +:103A880052FFEF1B8C024C05DE03F2EF128C022C66 +:103A9800049C02318E318D52ECFDCC0EBB8B721022 +:103AA80004C6D7C7C1C1FBF8FFAC0A14A9148970B2 +:103AB8008C026128706131FD56201344030071FEA9 +:103AC800DC16AC0A14A9148C0299AC0A14CA0200B8 +:103AD800AC0A14CA0310EF6EAC0A14A914894E027A +:103AE800DE0AAC0A148A02819A02EF13AC0A14A9FE +:103AF80014894E0261D308AC0A148A02919A02AC66 +:103B08000A148A03919A03D1DF3CAC0A148A024C46 +:103B180010DF10A91489318EA112AC0A14A91462FD +:103B280099EF17AC0A148A024CF0DF0EA9148931F8 +:103B38008EB112AC0A14A9146299AC0A14CA020014 +:103B4800AC0A14CA03101004C6D7ED8F3B717BFA78 +:103B5800C7D54EFC61F831342227713322D54EFC8B +:103B680061E8B04EFC717AFA5600664C0CDD1272B0 +:103B7800F3311C791AFDCEFC0061CAFDEE3B86EFDD +:103B8800E9717AFAF2C6D7C75600664C0ADE0BF01E +:103B9800317E12F67850FC86EFF0C6D7C7C1C1FB5C +:103BA800F8FFCC01008C014C0ADE36717BFA8C01DF +:103BB800F0317E0450FC14A96168DF09AC02B971C8 +:103BC8007AFAF2EF1D8C01F0317E127950FC6149CE +:103BD80002DF06717AFAE2EF09717AFA615901EFA8 +:103BE800C4E21004C6D7C72004FBF8FFF64250FC15 +:103BF80061F8EDE63C717BFA9C038C034C0ADE4FBE +:103C08008C03F0317E0450FC14A96168DF05717AD9 +:103C1800FAEF3C8C03F0317E127950FCE743DF0663 +:103C2800717AFA00EF21717AFA8C0372F3311C79F8 +:103C380050FCCEFC0061CA629C02D1DF0A8C03F002 +:103C4800317E12E67850FC717BFA615903EFABCCF8 +:103C58000200CC01018C02F0317E0450FC14A961F1 +:103C680068DD7B8C02F0317E127950FCE743DF6817 +:103C78008C014C0ADE628C01F0317E127950FCE72F +:103C880043DD50717BFA8C01F0317E0450FC14A99D +:103C98006168DF1B616901717BFA8C01F0317E126A +:103CA800F67850FC717AFA8C024E01DCE7EF2F8C23 +:103CB80001F0317E0450FC14A9128C02F0317E33DD +:103CC8007850FC8C01F0317E12E67850FC61590284 +:103CD800717AFA615901EF98615902ED5D3CCC02A5 +:103CE80000CC01008C014C0ADE1E8C01F0317E04F0 +:103CF80050FC14A96168DF05CC0201EF068C02D1E3 +:103D080061E800615901EFDCF21004C6D7C720064C +:103D1800FBF8FF3417FCC55006C150A8C15030FD50 +:103D280074031006D2DD1DA064FC4064FC08DE03A9 +:103D3800E2EF5A3412FC895CFC99FDDE3D7110E01B +:103D4800FBF2EF49F564FC8F12FC5C01D1DD2640E3 +:103D58001CF903DF205010C180FDF536C0C73610AE +:103D68000571D4C6DE0F17C15006C150A8C1503026 +:103D7800FD74031006401CF901DD11401CF905DD36 +:103D88000B8F12FC5C02D161E8FD1F44F21006C6DD +:103D9800D7D913FCC15030FD4A03C0629F16FC718D +:103DA80030E3FB8FEBFB5C08D1DF06716307716BB7 +:103DB80027F2D7D916FCC1D915FCC15030FDE6034E +:103DC80010047130E3FB8FEBFB5C08D1DF067163F5 +:103DD80007716B27F2D7C7200AFBF8FF500FC150B5 +:103DE80030FD4A03C04041FB02DF077110E0FBF2DF +:103DF800EF547118E0FBCC0700CC0812CC09808F77 +:103E080012FC5C03D1DF08717AD5CC0607EF067186 +:103E18007BD5CC062F17040600C15004C150A0C1A1 +:103E28005030FD1C041006C736100571D4C6DE15C7 +:103E3800401CF903DF0F17C15006C150A8C150300C +:103E4800FD74031006F2100AC6D7C78F1CF9318F0C +:103E5800240200DF04F6BF68FC8F32FDB032FDD1CA +:103E680061E8ED433FCF32FD048F1CF9318FE72322 +:103E7800DD0B24020024030061C8ED433FE6A142A4 +:103E880068FCDF0AE0C15010FDF536C0EF2430F4BD +:103E9800004268FCDF0B5002C15010FDF536C0EF40 +:103EA800118FF6FB5005D604F4004268FC61D8E592 +:103EB80020F931340709715322F6BF68FCEF173136 +:103EC800542206F6BF68FCEF0DA268FCF64268FCB7 +:103ED800DF0490BF68FC8F1FF9318FE723DD07B13E +:103EE8002361D30CEF1236100571C4716122EF0BF8 +:103EF800710402716122EF037162223162221A4059 +:103F08006AFC0361D8A06AFC406AFC02DF0E500418 +:103F1800C15010FDF536C0EF03F56AFC31420718B1 +:103F2800406BFC0361D8A06BFC406BFC02DF0C50BB +:103F380010C1FDF536C0EF03F56BFCC6D7C7401CB2 +:103F4800F902C6D7C72004FBF8FF401CF90361E853 +:103F5800401CF9041004C6D7C78F12FC5C03D1DDDE +:103F68001136100571D4DE0A30153DFDA43BD2612F +:103F7800F800401CF903DF1B31220707307D2CFDB8 +:103F8800A43B003174220C7173225080C15012FD81 +:103F9800F536C0401CF903DD05F6BD1AEF25D5FE40 +:103FA800FBDF09F6461ADD1BB61AEF17D9FAFBF143 +:103FB800461ADD0FD9FAFB12AD1A43DE04A61AEF32 +:103FC80002B61AC6D78FF2FB5C10D161E8711223D2 +:103FD8008FF2FB5C0FD1DD758FF2FB5C01D1DD0543 +:103FE800F51CF9EF688FF2FB5C02D1DD15E0C150DA +:103FF80003C15084FDE6031004711300711B207186 +:1040080003038FF2FB5C08D1DD05710303EF1C8FFE +:10401800F2FB5C04D1DD14711300711B2031042301 +:1040280003710303342BFC895CFC995005FD940251 +:104038007102035003C1C15084FDE6031004711AD4 +:1040480020FD1B39302839FDA43B710323F5F2FB11 +:10405800F2D7C7364105718461D8ED09413641056B +:104068007194DE0771405005CEABAC31B2D104E299 +:10407800ED1841713BD18F16F9A016F9318EE7245E +:104088000000DD1723DD1C23DD2723DD2C23DD388D +:1040980023DD4423DD4923DD4EEF668F1FF99F4062 +:1040A80005EF58F0C15084FD4A03C0629F4005EFF8 +:1040B8004A8F06FD9F4005EF425008C1506CFD4AEB +:1040C80003C0629F4005EF335009C1506CFD4A039D +:1040D800C0629F4005EF248F6EFC9F4005EF1C8F48 +:1040E80002F99F4005EF14711420E6613012710443 +:1040F8002061DC31196162629F4005CEABACE2EF12 +:104108000F7160500571485005713BD5F516F9F2ED +:10411800C6D7C78F1CF9318FE724000061F8EDBEC0 +:104128004223DD1B2361F8EDD2412361F8ED5C42A7 +:104138002361F8ED99422361F8ED2843ED8943D5D1 +:104148001DF9DF2BF64268FCDD05F537FDEF03A00E +:1041580037FD4037FD65DC09F51CF9713222ED8C1D +:1041680043AF68FC440A0061D8ED8C43E51DF97142 +:104178005222F537FDF5F5FBFD4105713320FD852C +:1041880024401FF904DF09713222F51CF9ED8C4334 +:10419800FDC72740DFFB9BDE09713222F51CF9EDD4 +:1041A8008C43FD882BD2DD09713222F51CF9ED8C88 +:1041B80043401DF901DF05F5FBFBEF04CFFBFB03D3 +:1041C800CF1CF902FD5D2BED8C43CF350002CF37B4 +:1041D800001DCF120510FD7E2DFDDE2D714A9DFDBF +:1041E8003A37FD0733F537FF712BE0F51DF97132CA +:1041F80022CBE43FEFCBE6F6F0FD4105713BD48FCF +:104208001EF93135305004C15084FD4A03C0625C48 +:1042180003318E315D34E1FB896168995002C150E8 +:1042280084FD4A03C0D2DD067170E1FBEF047178AA +:10423800E1FBFD8524FD952E71381EF9CF1CF9038D +:104248008FD4FB5C02D1DD095080C15010FDF536DA +:10425800C0ED8C43FD8E4331A4E020712BE0310288 +:104268000C05FD0744EF145027C15005C15084FDCB +:10427800E6031004CF1CF9047132223114230CA078 +:1042880036FD4036FDFF61F8FD0744FDFB43ED8C2C +:1042980043FD8E4331020C18F0C15005C15084FD16 +:1042A800E60310045005FD9402FD0744CF1CF903F2 +:1042B800FDFB43ED8C43CFFBFB03F5FCFB710221B7 +:1042C800F6426CFF61E8ED8C43F5FEFBF520F9FD45 +:1042D8000A2FFDD52DFD332E714B9DF5E2FBF5E33D +:1042E800FBF5E4FBF5E5FB31542002EFFACE370885 +:1042F800CBE4BFFFCBE6FFF1CED4FFCF370009F503 +:104308001205F6BEE0BEE2BED0716A27FD332CFD71 +:10431800AA05F537FDCF1CF905715222F6BF68FCD6 +:104328003102071CFD8524AF68FC440A00DC06E561 +:104338001DF9E51CF9401FF901DD49FDAA05EF4407 +:10434800F51DF9FDAA0571730171320431120502D8 +:10435800EFFA71430271032071322031949E02EF0B +:10436800FA712AE7CEA409F5F30061FD31040703C9 +:10437800715322E5F300CEA408712BE7E51CF9EF91 +:104388000300EFFDC6D7D570FCDF1E3102001950BF +:1043980003C15084FD4A03C0625C01D1DF07F51CEC +:1043A800F9713222D7E570FCD74070FCF0DF083194 +:1043B80004003FF570FCD74070FCC8DF0BF51CF912 +:1043C800713222CF70FCF0D731020004A070FCD704 +:1043D800F0C15004C15084FDE60310048FE1FB5C7A +:1043E8009F9FE1FB7110F2FB30CD3FFDA43BCF70E6 +:1043F800FCF0D7D520F9DD06F51CF9713222D7710A +:104408001323F536FD717207FD2603FD260371732C +:1044180007D7FDB006F2D7C7200CFBF8FF8F18FCB2 +:10442800F0F917FCF303FD562013BC048F1AFCF0B7 +:10443800F919FCF303FD562013BC028F1CFCF0F99C +:104448001BFCF303FD562013BBAC04BDD8F6BDDA44 +:10445800AC04311EBDDCF6BDDEFD8A0DADD8BDDC79 +:10446800ADDABDDEAC02BDD8F6BDDAAC02311EDA7B +:10447800DCC3DADEC3BDDCF6BDDEFD8A0DC0BDDE01 +:10448800C0BDDCADDEFD000FADD8BDDCADDABDDEF4 +:10449800ABBDD8F6BDDAAB311EDADCC3DADEC3BD9C +:1044A800DCF6BDDEFD8A0DC0BDDEC0BDDCADDEFDC7 +:1044B800000FDADAADD8FD5348C3C58FFEFC5C3F68 +:1044C800F0317E047EFC14C2C0B9A0FEFCF6BC0824 +:1044D800BC0A9C078C074C2EDD3E8FFEFC0E077035 +:1044E800F161DC605C3FF0317E12797EFCBDD8F66C +:1044F800BDDA8C0773096E23318FBDDC70BDDEFD1C +:104508008A0DAC08BDDCAC0AFD000FADDABC0AAD03 +:10451800D8BC08615907EFBCAC08BDD8AC0ABDDAF5 +:10452800C9DC0004F6FD540EC9DCFFFFF6FD690F77 +:10453800ADD8BF78FCAF72FC4278FCDD12AF74FCDA +:10454800BF76FCAF72FCBF74FCAF78FCBF72FCAFE7 +:1045580074FC4276FCDC50AF72FC4274FCDE48AF5F +:1045680038FD4272FCDE40407AFC16DC1F407AFCC3 +:10457800A0DE168F7BFC4F7AFCDE0EAF72FC227C2D +:10458800FC44691061C8FDF845F57AFCAF72FC443B +:104598005146DC0BAF72FC241027BF3AFDEF1930EF +:1045A800F82ABF3AFDEF11407AFCFFDD03E6EF0180 +:1045B800F6347AFC89610899AF76FC4274FCDC1BFE +:1045C800AF74FC4272FCDE13AF72FC423AFDDE0BA4 +:1045D800F57BFCAF72FCBF7CFCEF11407BFCFFDD80 +:1045E80003E6EF01F6347BFC89610899100CC6D705 +:1045F800C72008FBF8FFA01DFCD51DFCDF1CA01E72 +:10460800FCD51EFCDF14A01FFCD51FFCDF0CCF1D42 +:10461800FCFFCF1EFCFFCF1FFCFF717BFA710A9EC7 +:1046280031929E02EFFA8E98FD7D0F9C058E949F25 +:104638003CFD8E969F3DFD8E979F3EFD8E939C047C +:104648008E929C03FDE54713BC068F22FC4E04DCCA +:104658000E8C044F22FCDF0C8C034F23FCDC05CCB2 +:104668000201EF03CC02008F3FFD4E05DF218C06CF +:104678000E02708C071C0012AF00FD43DE4E8C0644 +:104688000E02708C071C002200FDFD0847EF3D8CD0 +:1046980005318EB112D93FFDF143DF258C055C034E +:1046A80091DF03E6EF01F6046D01313D12010322AB +:1046B80000FD610906080E02081C00BBFD0847EF53 +:1046C8000B8F3FFD4E05DE04F6FD08478C059F3F26 +:1046D800FD8C060E02708C071C00BF00FDD9FFFC84 +:1046E800F1010422F9BB14A944FFFFDF04E6B9EF86 +:1046F8000BAB14A944FEFFDD03A9A1B91008C6D766 +:10470800C7161744A90061C836A800A0FFFC40FFDF +:10471800FCA861C8F5FFFCF9FFFCF3311CF6782210 +:10472800F9B7F647DFE5C6D7C756A89666F0317ED3 +:1047380012F6B17822F966D1DFF1F51DFCF51EFC01 +:10474800F51FFCF5FFFCC6D7712323D7C72004FB50 +:10475800F8FFD916F9F1E7240000DD1123DD1C2349 +:10476800DD2123DD2623DD2F23DD33EF388FFFFC0A +:104778009F02FDA016F9F93CFDEF5EA016F9F93D80 +:10478800FDEF56A016F9F93EFDEF4EA016F98F3F42 +:10479800FDFD970F72EF42A016F95255EF3BA01698 +:1047A800F952AAEF34F902FDF3311C7922F9BB3131 +:1047B8002223058B9C03EF128C019C03D502FDDF9D +:1047C80006CF02FDA7EF03B002FD718071272361B8 +:1047D800DC61FB7121238C03721004C6D7C7200645 +:1047E800FBF8FF8E98FD7D0F9C038E97FD7D0F9C37 +:1047F800028E96FD7D0F9C018E94FD7D0F9B710BA3 +:104808009E717AFA8C02F0317E12799E23BC048C58 +:10481800035C03D1DF158C024C03DE0C8C024C02C6 +:10482800DF098C014C1D61F86179048C01318EB16E +:10483800610904BC04313D120103BC048C040D70F1 +:104848008C051C00BC04121006C6D7C7C3C12008BB +:10485800FBF8FFF661490A61F8614908DF07F73498 +:104868000000EDF048E6BC04F6BC06AC0ABC02AC9D +:1048780008BBAC06614902AC0461F8614900DE2856 +:10488800AC04BDD8AC06BDDAE1FD0F0FADDABC064D +:10489800ADD8BC04ABBDD8AC02BDDAE1FD2A0FAD82 +:1048A800DABC02ADD8BBEFCAAC06BC02AC04BBACE8 +:1048B80008BDD8AC0ABDDAAC04BDDCAC06FD8D0E73 +:1048C800AC04BDDCAC06FD000FE1FD2A0FADDABC7F +:1048D80006ADD8BC04AC06614902AC0461F8614974 +:1048E80000DCC5AC0214AB12100CC6D7C7D540FD0E +:1048F800DD05B040FDEF78CF40FD023114070671A9 +:1049080010E1FBEF047118E1FB8FE1FB7F04FD76FA +:10491800D1DD5C8FE1FB9F04FD401CF903DF2266BB +:104928005C10D1DD1C8FE1FB5C10D1DD0B5080C128 +:104938005011FDF536C0EF095040C15011FDF53654 +:10494800C0401CF903DD06401CF904DF22665C0246 +:10495800D1DD1C8FE1FB5C02D1DD0B5040C1501052 +:10496800FDF536C0EF095020C15010FDF536C0C620 +:01497800D767 +:10497900CF0BF90461FC61FCC1C3C5C7520C92920B +:1049890069D4FEC1DFF88EFD708EFCC1717AFA40E0 +:104999001CF903DF06307D2CFDA43BC09EFC609E04 +:1049A900FD34D4FE5206C0B9A5A592DFF9C6C4C22A +:1049B900C061FC61DF520C929269D4FEC1DFF88EAE +:1049C900FD708EFCC1717AFAC736410571A4C6DC47 +:1049D90041F508FD71485005716050053164212683 +:1049E900716207716321D5E2FBDF0FD5E3FBDF0AB3 +:1049F900D5E4FBDF05D5E5FBDD0C31620702EFFAF3 +:104A0900716307716B27FD5047FD7106F516F9EDC6 +:104A19002B4BC73641057184C6DE0DF508FD71487B +:104A29005005FD7106ED2B4BC73641057194C6DE65 +:104A3900154008FD03DD0C4008FD04DD064008FDB6 +:104A49000161F8F508FDD908FDF1E7240000DD084A +:104A590023DD1323DD39EF6071405005E508FD7151 +:104A6900505005ED2B4B8F40059F17F99F1AF9D927 +:104A790017F9FD5336629F19F94017F97FDD06CF03 +:104A890008FD02EF03F508FD71505005ED2B4BC7EA +:104A99003641057194C6DE1CC736410571C4C6DEB0 +:104AA90006CF08FD03EF11F508FD71485005716047 +:104AB9005005EF6ECF08FD044008FD03DF0E8F1986 +:104AC900F99F4005D917F9FDD236EF108F400576C9 +:104AD900C7D917F9FD3133C071505005D91AF9F109 +:104AE900242900DD2D240400DD28242200DD2324CF +:104AF9001100DD0C240100DD19241E00DD14EF0C6A +:104B09004017F960DF0CCF17F961EF06F516F9A028 +:104B190017F94008FD03DF0AD917F9FD5336629FDB +:104B290019F9C09EFC609EFD34D4FE5206C0B9A599 +:104B3900A592DFF961FCC1C3C5C7520C929269D431 +:104B4900FEC1DFF88EFD708EFCC1F616717AFA711E +:104B59004AE5717BBD51405F0401D1DD05A7F647E8 +:104B6900DFF3300400BF2401F6BF2A01300B0BBF6D +:104B79002801FD2603300B0FBF2801FD2603300F46 +:104B89000FBF2801710AE6715320C09EFC609EFD8B +:104B990034D4FE5206C0B9A5A592DFF9C6C4C2C075 +:104BA90061FCC1C3C5C7520C929269D4FEC1DFF83A +:104BB9008EFD708EFCC1717AFAD540FBDD0EEB3E9D +:104BC900FB899E44A23EFBB040FBEF2B710AE63005 +:104BD9000400BF2401F6BF2A01300B0BBF2801FDD9 +:104BE9002603300B0FBF2801FD2603300F0FBF2806 +:104BF90001714320715320C09EFC609EFD34D4FE98 +:104C09005206C0B9A5A592DFF9C6C4C2C061FC614C +:104C1900EF520C929269D4FEC1DFF88EFD708EFCC2 +:104C2900C12008FBF8FF71503002CEABACCC0100BB +:104C3900F6BC0231B2E210617902F6614902DFF392 +:104C490071603002EDCF4C8E519B713BE28B5C025F +:104C5900D1DD1D8B5C08D1DF0971503002CC010018 +:104C6900EFCE8C0770FDAC37629E50CC0102EFC0CD +:104C79008B5C03D1DF408E509C05715030028C0152 +:104C8900D1DF0E8C0570FD5038629C07CC0101EF15 +:104C9900328C014C02DF0671603002EF29CF3402F9 +:104CA9005A716030028C0570C18C0770FD4837C09D +:104CB900CF34024AEF108B5C01D1DD0671603002FE +:104CC900EF0400ED394C1008C09EFC609EFD34D401 +:104CD900FE5206C0B9A5A592DFF961FCC18F0CFC93 +:104CE9004F96FFDF328F0DFC4F97FFDF2A8F0EFCA7 +:104CF9004F98FFDF228FEBFB5C04D1DF1A7120E3B1 +:104D0900FB716307716B27401CF905DD06401CF92F +:104D19000161F8CF1DF902C061FCA04EFC61FCC124 +:104D2900C3C5C7520C929269D4FEC1DFF88EFD70DB +:104D39008EFCC1C1FBF8FF8D1F9C018E31318EE7BE +:104D4900240600DD0823DD0F23DD25EF45717AFAFE +:104D59008C019F3AFCEF3B717AFA401FF902DF0799 +:104D69008C019F39FCEF2B51FF2E019F39FCEF225B +:104D7900717AFA8C019F02F98FE0FB5C01D1DF1295 +:104D8900401CF903DD06401CF904DF06300927FD44 +:104D9900A43B4031FF09DE08A031FF710BE3EF1995 +:104DA9007158F000717221404DFC02DF03F6EF05E6 +:104DB900D94DFCF1A1609F4DFCC0C09EFC609EFDD9 +:104DC90034D4FE5206C0B9A5A592DFF9C6C4C2C043 +:104DD90061FC61FF520C929269D4FEC1DFF88EFD2D +:104DE900708EFCC1717AFA8F12FC5C03D1DD194017 +:104DF9001CF903DD06401CF904DF0D36100571D4DA +:104E0900DE0630153DFDA43BC09EFC609EFD34D4FA +:104E1900FE5206C0B9A5A592DFF961FC61FC00EF5D +:104E2900FD61FC61FC61FC61FC61FC61FC61FC6190 +:104E3900FC61FC61FC61FC61FC61FC61FC61FC6181 +:104E4900FC61FC61FC61FC61FC61FC61FC61FC6171 +:074E5900FC61FC61FC61FC3F +:0A4FF60032303A34313A333600000D :00000001FF  \ No newline at end of file diff --git a/trunk/bsr.lmf b/trunk/bsr.lmf index 37035e25b55aa4f03c261c4362e413b46ff3e602..4b78cbf8dfde949ab4f7d2cbd8e143e6c801d982 100644 GIT binary patch literal 158016 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 diff --git a/trunk/bsr_k0r.map b/trunk/bsr_k0r.map index eb8095b..ebfe101 100644 --- a/trunk/bsr_k0r.map +++ b/trunk/bsr_k0r.map @@ -1,20 +1,20 @@ -78K0R Linker W1.31 Date: 7 Jul 2010 Page: 1 +78K0R Linker W1.31 Date:13 Jul 2010 Page: 1 Command: -yC:\Program Files\NEC Electronics Tools\DEV -_msgoff -obsr.l mf ..\..\..\Program Files\NEC Electronics Tools\CC78K0R\W2.10 \lib78k0r\s0rm.rel -go85h,0FC00h,1024 -gi0FFFFFFFFFFFFFFFFFFF - Fh -pbsr_k0r.map -nkd -gb7EFBFFh -bC:\Program Files\NEC Elect - ronics Tools\FSL78K0R_Type02ES\V1.20\lib78k0r\fsl.lib -bcl0rd - m.lib -bcl0rm.lib -bcl0rmf.lib -iC:\Program Files\NEC Electro - nics Tools\CC78K0R\W2.10\lib78k0r -dbsr_mcu.dr -s -w0 loader. - rel pm.rel i2c_ctr.rel main.rel magic.rel WDT.rel i2c_mcu.rel - i2c_twl.rel led.rel rtc.rel vreg_ctr.rel vreg_twl.rel adc.re - l renge.rel accero.rel self_flash.rel sw.rel task_debug.rel t - ask_misc.rel task_sys.rel pedo_alg_thre_det2.rel ini_VECT.rel - task_status.rel + Fh -pbsr_k0r.map -nkd -gb0FEFBFFh -bC:\Program Files\NEC Elec + tronics Tools\FSL78K0R_Type02ES\V1.20\lib78k0r\fsl.lib -bcl0r + dm.lib -bcl0rm.lib -bcl0rmf.lib -iC:\Program Files\NEC Electr + onics Tools\CC78K0R\W2.10\lib78k0r -dbsr_mcu.dr -s -w0 loader + .rel pm.rel i2c_ctr.rel main.rel magic.rel WDT.rel i2c_mcu.re + l i2c_twl.rel led.rel rtc.rel vreg_ctr.rel vreg_twl.rel adc.r + el 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.re + l task_status.rel Para-file: Out-file: bsr.lmf Map-file: bsr_k0r.map @@ -24,8 +24,8 @@ Direc-file:bsr_mcu.dr *** Link information *** 66 output segment(s) - 3B91H byte(s) real data - 5392 symbol(s) defined + 3CE9H byte(s) real data + 5453 symbol(s) defined *** Memory map *** @@ -48,6 +48,8 @@ Direc-file:bsr_mcu.dr LDR_CNSL WDT 00002H 00000H LDR_CNSL 00002H 00000H CSEG PAGE64KP LDR_CNSL i2c_mcu 00002H 00000H + LDR_CNSL 00002H 00000H CSEG PAGE64KP + LDR_CNSL rtc 00002H 00000H LDR_CNSL 00002H 00000H CSEG PAGE64KP LDR_CNSL self_flash 00002H 00000H @@ -86,55 +88,57 @@ Direc-file:bsr_mcu.dr LDR_CODL main 000C4H 00000H LDR_CODL WDT 000C4H 00000H LDR_CODL i2c_mcu 000C4H 00000H + LDR_CODL rtc 000C4H 00000H LDR_CODL self_flash 000C4H 00000H ?CSEGSI 000C4H 0000AH CSEG ?OCDSTAD 000CEH 0000AH CSEG - LDR_CODE 000D8H 00841H CSEG + LDR_CODE 000D8H 00912H CSEG LDR_CODE loader 000D8H 001E0H LDR_CODE main 002B8H 0006EH LDR_CODE WDT 00326H 00000H LDR_CODE i2c_mcu 00326H 002AAH + LDR_CODE rtc 005D0H 000E0H LDR_CODE self_flash - 005D0H 00349H - FSL_CODE 00919H 00322H CSEG + 006B0H 0033AH + FSL_CODE 009EAH 00322H CSEG FSL_CODE fsl_block_cmd - 00919H 0002BH + 009EAH 0002BH FSL_CODE fsl_block_check - 00944H 00013H + 00A15H 00013H FSL_CODE fsl_common - 00957H 0014FH + 00A28H 0014FH FSL_CODE fsl_reset - 00AA6H 00001H + 00B77H 00001H FSL_CODE fsl_si_ibf - 00AA7H 00064H + 00B78H 00064H FSL_CODE fsl_phySwap - 00B0BH 0004DH + 00BDCH 0004DH FSL_CODE fsl_si_common - 00B58H 00061H - FSL_CODE fsl_swap 00BB9H 00030H + 00C29H 00061H + FSL_CODE fsl_swap 00C8AH 00030H FSL_CODE fsl_write - 00BE9H 00052H - @@LCODE 00C3BH 002AFH CSEG - @@LCODE @cstart 00C3BH 0006DH - @@LCODE @imul 00CA8H 00011H - @@LCODE @lumul 00CB9H 0002BH - @@LCODE @isdiv 00CE4H 00022H - @@LCODE @iudiv 00D06H 0002DH - @@LCODE @isrem 00D33H 00021H - @@LCODE @iurem 00D54H 0002FH - @@LCODE @lsdiv 00D83H 00039H - @@LCODE @ludiv 00DBCH 0003FH - @@LCODE @divuw 00DFBH 00034H - @@LCODE @ladd 00E2FH 0000FH - @@LCODE @llsh 00E3EH 0001BH - @@LCODE @lursh 00E59H 0001FH - @@LCODE @iscmp 00E78H 0000CH - @@LCODE @lscmp 00E84H 00014H - @@LCODE @lband 00E98H 00014H - @@LCODE @bcdtob 00EACH 0001AH - @@LCODE @bbcd 00EC6H 00024H -* gap * 00EEAH 0010CH + 00CBAH 00052H + @@LCODE 00D0CH 002AFH CSEG + @@LCODE @cstart 00D0CH 0006DH + @@LCODE @imul 00D79H 00011H + @@LCODE @lumul 00D8AH 0002BH + @@LCODE @isdiv 00DB5H 00022H + @@LCODE @iudiv 00DD7H 0002DH + @@LCODE @isrem 00E04H 00021H + @@LCODE @iurem 00E25H 0002FH + @@LCODE @lsdiv 00E54H 00039H + @@LCODE @ludiv 00E8DH 0003FH + @@LCODE @divuw 00ECCH 00034H + @@LCODE @ladd 00F00H 0000FH + @@LCODE @llsh 00F0FH 0001BH + @@LCODE @lursh 00F2AH 0001FH + @@LCODE @iscmp 00F49H 0000CH + @@LCODE @lscmp 00F55H 00014H + @@LCODE @lband 00F69H 00014H + @@LCODE @bcdtob 00F7DH 0001AH + @@LCODE @bbcd 00F97H 00024H +* gap * 00FBBH 0003BH MGC_LOAD 00FF6H 0000AH CSEG AT MGC_LOAD magic 00FF6H 0000AH @@ -152,8 +156,6 @@ Direc-file:bsr_mcu.dr @@CNSTL i2c_twl 02000H 00000H @@CNSTL 02000H 00000H CSEG PAGE64KP @@CNSTL led 02000H 00000H - @@CNSTL 02000H 00000H CSEG PAGE64KP - @@CNSTL rtc 02000H 00000H @@CNSTL 02000H 00000H CSEG PAGE64KP @@CNSTL vreg_ctr 02000H 00000H @@CNSTL 02000H 00000H CSEG PAGE64KP @@ -314,7 +316,6 @@ Direc-file:bsr_mcu.dr @@CODEL magic 02056H 00000H @@CODEL i2c_twl 02056H 00000H @@CODEL led 02056H 00000H - @@CODEL rtc 02056H 00000H @@CODEL vreg_ctr 02056H 00000H @@CODEL vreg_twl 02056H 00000H @@CODEL adc 02056H 00000H @@ -336,87 +337,86 @@ Direc-file:bsr_mcu.dr * gap * 0205EH 000A2H MGC_MIMI 02100H 0000AH CSEG AT MGC_MIMI magic 02100H 0000AH - @@CNST 0210AH 00290H CSEG + @@CNST 0210AH 002AEH CSEG @@CNST @cstart 0210AH 00000H @@CNST loader 0210AH 00000H - @@CNST pm 0210AH 00204H - @@CNST i2c_ctr 0230EH 00000H - @@CNST main 0230EH 00000H - @@CNST magic 0230EH 00000H - @@CNST WDT 0230EH 00000H - @@CNST i2c_mcu 0230EH 00000H - @@CNST i2c_twl 0230EH 00000H - @@CNST led 0230EH 00000H - @@CNST rtc 0230EH 00000H - @@CNST vreg_ctr 0230EH 00000H - @@CNST vreg_twl 0230EH 00000H - @@CNST adc 0230EH 00040H - @@CNST renge 0234EH 00000H - @@CNST accero 0234EH 00000H + @@CNST pm 0210AH 00212H + @@CNST i2c_ctr 0231CH 00000H + @@CNST main 0231CH 00000H + @@CNST magic 0231CH 00000H + @@CNST WDT 0231CH 00000H + @@CNST i2c_mcu 0231CH 00000H + @@CNST i2c_twl 0231CH 00000H + @@CNST led 0231CH 00010H + @@CNST rtc 0232CH 00000H + @@CNST vreg_ctr 0232CH 00000H + @@CNST vreg_twl 0232CH 00000H + @@CNST adc 0232CH 00040H + @@CNST renge 0236CH 00000H + @@CNST accero 0236CH 00000H @@CNST self_flash - 0234EH 00002H - @@CNST sw 02350H 00000H + 0236CH 00002H + @@CNST sw 0236EH 00000H @@CNST task_debug - 02350H 00000H + 0236EH 00000H @@CNST task_misc - 02350H 00000H - @@CNST task_sys 02350H 00000H + 0236EH 00000H + @@CNST task_sys 0236EH 00000H @@CNST pedo_alg_thre_det2 - 02350H 0004AH - @@CNST ini_VECT 0239AH 00000H + 0236EH 0004AH + @@CNST ini_VECT 023B8H 00000H @@CNST task_status - 0239AH 00000H - ROM_CODE 0239AH 02558H CSEG - ROM_CODE pm 0239AH 008FEH - ROM_CODE i2c_ctr 02C98H 00060H - ROM_CODE i2c_twl 02CF8H 0005EH - ROM_CODE led 02D56H 004E8H - ROM_CODE rtc 0323EH 000E0H - ROM_CODE vreg_ctr 0331EH 00447H - ROM_CODE vreg_twl 03765H 00156H - ROM_CODE adc 038BBH 00249H - ROM_CODE renge 03B04H 001C3H - ROM_CODE accero 03CC7H 0013DH - ROM_CODE sw 03E04H 000DDH + 023B8H 00000H + ROM_CODE 023B8H 025C1H CSEG + ROM_CODE pm 023B8H 009C6H + ROM_CODE i2c_ctr 02D7EH 00060H + ROM_CODE i2c_twl 02DDEH 0005EH + ROM_CODE led 02E3CH 004BAH + ROM_CODE vreg_ctr 032F6H 00444H + ROM_CODE vreg_twl 0373AH 00163H + ROM_CODE adc 0389DH 002B5H + ROM_CODE renge 03B52H 001C3H + ROM_CODE accero 03D15H 0013DH + ROM_CODE sw 03E52H 000F3H ROM_CODE task_debug - 03EE1H 0001BH + 03F45H 0001BH ROM_CODE task_misc - 03EFCH 001B1H - ROM_CODE task_sys 040ADH 002FFH + 03F60H 001BAH + ROM_CODE task_sys 0411AH 00305H ROM_CODE pedo_alg_thre_det2 - 043ACH 004C1H + 0441FH 004D5H ROM_CODE task_status - 0486DH 00085H - @@BASE 048F2H 004E7H CSEG BASE - @@BASE loader 048F2H 00000H - @@BASE pm 048F2H 00043H - @@BASE i2c_ctr 04935H 00183H - @@BASE main 04AB8H 00000H - @@BASE magic 04AB8H 00000H - @@BASE WDT 04AB8H 00000H - @@BASE i2c_mcu 04AB8H 000D9H - @@BASE i2c_twl 04B91H 000CDH - @@BASE led 04C5EH 00000H - @@BASE rtc 04C5EH 00043H - @@BASE vreg_ctr 04CA1H 00000H - @@BASE vreg_twl 04CA1H 00000H - @@BASE adc 04CA1H 000B3H - @@BASE renge 04D54H 00000H - @@BASE accero 04D54H 0004AH + 048F4H 00085H + @@BASE 04979H 004E7H CSEG BASE + @@BASE loader 04979H 00000H + @@BASE pm 04979H 00043H + @@BASE i2c_ctr 049BCH 00183H + @@BASE main 04B3FH 00000H + @@BASE magic 04B3FH 00000H + @@BASE WDT 04B3FH 00000H + @@BASE i2c_mcu 04B3FH 000D9H + @@BASE i2c_twl 04C18H 000CDH + @@BASE led 04CE5H 00000H + @@BASE rtc 04CE5H 00043H + @@BASE vreg_ctr 04D28H 00000H + @@BASE vreg_twl 04D28H 00000H + @@BASE adc 04D28H 000B3H + @@BASE renge 04DDBH 00000H + @@BASE accero 04DDBH 0004AH @@BASE self_flash - 04D9EH 00000H - @@BASE sw 04D9EH 00000H + 04E25H 00000H + @@BASE sw 04E25H 00000H @@BASE task_debug - 04D9EH 00000H + 04E25H 00000H @@BASE task_misc - 04D9EH 00000H - @@BASE task_sys 04D9EH 00000H + 04E25H 00000H + @@BASE task_sys 04E25H 00000H @@BASE pedo_alg_thre_det2 - 04D9EH 00000H - @@BASE ini_VECT 04D9EH 0003BH + 04E25H 00000H + @@BASE ini_VECT 04E25H 0003BH @@BASE task_status - 04DD9H 00000H -* gap * 04DD9H 0021DH + 04E60H 00000H +* gap * 04E60H 00196H MGC_TAIL 04FF6H 0000AH CSEG AT MGC_TAIL magic 04FF6H 0000AH @@ -424,230 +424,230 @@ Direc-file:bsr_mcu.dr BASE ADDRESS=FF900H SIZE=00500H OUTPUT INPUT INPUT BASE SIZE SEGMENT SEGMENT MODULE ADDRESS - @@DATA FF900H 003FEH DSEG BASEP + @@DATA FF900H 00406H DSEG BASEP @@DATA @cstart FF900H 00002H @@DATA loader FF902H 00000H - @@DATA pm FF902H 00012H - @@DATA i2c_ctr FF914H 00006H - @@DATA main FF91AH 0021EH - @@DATA magic FFB38H 00000H - @@DATA WDT FFB38H 00000H - @@DATA i2c_mcu FFB38H 00008H - @@DATA i2c_twl FFB40H 00000H - @@DATA led FFB40H 00084H - @@DATA rtc FFBC4H 00008H - @@DATA vreg_ctr FFBCCH 00056H - @@DATA vreg_twl FFC22H 00010H - @@DATA adc FFC32H 00014H - @@DATA renge FFC46H 00016H - @@DATA accero FFC5CH 00002H + @@DATA pm FF902H 00014H + @@DATA i2c_ctr FF916H 00006H + @@DATA main FF91CH 0021EH + @@DATA magic FFB3AH 00000H + @@DATA WDT FFB3AH 00000H + @@DATA i2c_mcu FFB3AH 00008H + @@DATA i2c_twl FFB42H 00000H + @@DATA led FFB42H 00088H + @@DATA rtc FFBCAH 00008H + @@DATA vreg_ctr FFBD2H 00056H + @@DATA vreg_twl FFC28H 00010H + @@DATA adc FFC38H 00016H + @@DATA renge FFC4EH 00016H + @@DATA accero FFC64H 00002H @@DATA self_flash - FFC5EH 00002H - @@DATA sw FFC60H 00004H - @@DATA task_debug - FFC64H 00002H - @@DATA task_misc FFC66H 00002H - @@DATA task_sys FFC68H 00002H + @@DATA sw FFC68H 00004H + @@DATA task_debug + FFC6CH 00002H + @@DATA task_misc + FFC6EH 00002H + @@DATA task_sys FFC70H 00002H @@DATA pedo_alg_thre_det2 - FFC6AH 00092H - @@DATA ini_VECT FFCFCH 00000H + FFC72H 00092H + @@DATA ini_VECT FFD04H 00000H @@DATA task_status - FFCFCH 00002H - @@DATA @rom FFCFEH 00000H - @@INIT FFCFEH 0003CH DSEG BASEP - @@INIT @cstart FFCFEH 00000H - @@INIT loader FFCFEH 00000H - @@INIT pm FFCFEH 00002H - @@INIT i2c_ctr FFD00H 00002H - @@INIT main FFD02H 00000H - @@INIT magic FFD02H 00000H - @@INIT WDT FFD02H 00000H - @@INIT i2c_mcu FFD02H 00000H - @@INIT i2c_twl FFD02H 00000H - @@INIT led FFD02H 00006H - @@INIT rtc FFD08H 00000H - @@INIT vreg_ctr FFD08H 00000H - @@INIT vreg_twl FFD08H 00000H - @@INIT adc FFD08H 0000AH - @@INIT renge FFD12H 00018H - @@INIT accero FFD2AH 00000H + FFD04H 00002H + @@DATA @rom FFD06H 00000H + @@INIT FFD06H 0003CH DSEG BASEP + @@INIT @cstart FFD06H 00000H + @@INIT loader FFD06H 00000H + @@INIT pm FFD06H 00002H + @@INIT i2c_ctr FFD08H 00002H + @@INIT main FFD0AH 00000H + @@INIT magic FFD0AH 00000H + @@INIT WDT FFD0AH 00000H + @@INIT i2c_mcu FFD0AH 00000H + @@INIT i2c_twl FFD0AH 00000H + @@INIT led FFD0AH 00006H + @@INIT rtc FFD10H 00000H + @@INIT vreg_ctr FFD10H 00000H + @@INIT vreg_twl FFD10H 00000H + @@INIT adc FFD10H 0000AH + @@INIT renge FFD1AH 00018H + @@INIT accero FFD32H 00000H @@INIT self_flash - FFD2AH 00000H - @@INIT sw FFD2AH 00002H + FFD32H 00000H + @@INIT sw FFD32H 00002H @@INIT task_debug - FFD2CH 00002H + FFD34H 00002H @@INIT task_misc - FFD2EH 00000H - @@INIT task_sys FFD2EH 00002H + FFD36H 00000H + @@INIT task_sys FFD36H 00002H @@INIT pedo_alg_thre_det2 - FFD30H 00008H - @@INIT ini_VECT FFD38H 00000H + FFD38H 00008H + @@INIT ini_VECT FFD40H 00000H @@INIT task_status - FFD38H 00002H - @@INIT @rom FFD3AH 00000H - @@INIS FFD3AH 00000H DSEG UNITP - @@INIS @cstart FFD3AH 00000H - @@INIS loader FFD3AH 00000H - @@INIS pm FFD3AH 00000H - @@INIS i2c_ctr FFD3AH 00000H - @@INIS main FFD3AH 00000H - @@INIS magic FFD3AH 00000H - @@INIS WDT FFD3AH 00000H - @@INIS i2c_mcu FFD3AH 00000H - @@INIS i2c_twl FFD3AH 00000H - @@INIS led FFD3AH 00000H - @@INIS rtc FFD3AH 00000H - @@INIS vreg_ctr FFD3AH 00000H - @@INIS vreg_twl FFD3AH 00000H - @@INIS adc FFD3AH 00000H - @@INIS renge FFD3AH 00000H - @@INIS accero FFD3AH 00000H + FFD40H 00002H + @@INIT @rom FFD42H 00000H + @@INIS FFD42H 00000H DSEG UNITP + @@INIS @cstart FFD42H 00000H + @@INIS loader FFD42H 00000H + @@INIS pm FFD42H 00000H + @@INIS i2c_ctr FFD42H 00000H + @@INIS main FFD42H 00000H + @@INIS magic FFD42H 00000H + @@INIS WDT FFD42H 00000H + @@INIS i2c_mcu FFD42H 00000H + @@INIS i2c_twl FFD42H 00000H + @@INIS led FFD42H 00000H + @@INIS rtc FFD42H 00000H + @@INIS vreg_ctr FFD42H 00000H + @@INIS vreg_twl FFD42H 00000H + @@INIS adc FFD42H 00000H + @@INIS renge FFD42H 00000H + @@INIS accero FFD42H 00000H @@INIS self_flash - FFD3AH 00000H - @@INIS sw FFD3AH 00000H + FFD42H 00000H + @@INIS sw FFD42H 00000H @@INIS task_debug - FFD3AH 00000H + FFD42H 00000H @@INIS task_misc - FFD3AH 00000H - @@INIS task_sys FFD3AH 00000H + FFD42H 00000H + @@INIS task_sys FFD42H 00000H @@INIS pedo_alg_thre_det2 - FFD3AH 00000H - @@INIS ini_VECT FFD3AH 00000H + FFD42H 00000H + @@INIS ini_VECT FFD42H 00000H @@INIS task_status - FFD3AH 00000H - @@INIS @rom FFD3AH 00000H - @@DATS FFD3AH 00000H DSEG UNITP - @@DATS @cstart FFD3AH 00000H - @@DATS loader FFD3AH 00000H - @@DATS pm FFD3AH 00000H - @@DATS i2c_ctr FFD3AH 00000H - @@DATS main FFD3AH 00000H - @@DATS magic FFD3AH 00000H - @@DATS WDT FFD3AH 00000H - @@DATS i2c_mcu FFD3AH 00000H - @@DATS i2c_twl FFD3AH 00000H - @@DATS led FFD3AH 00000H - @@DATS rtc FFD3AH 00000H - @@DATS vreg_ctr FFD3AH 00000H - @@DATS vreg_twl FFD3AH 00000H - @@DATS adc FFD3AH 00000H - @@DATS renge FFD3AH 00000H - @@DATS accero FFD3AH 00000H + FFD42H 00000H + @@INIS @rom FFD42H 00000H + @@DATS FFD42H 00000H DSEG UNITP + @@DATS @cstart FFD42H 00000H + @@DATS loader FFD42H 00000H + @@DATS pm FFD42H 00000H + @@DATS i2c_ctr FFD42H 00000H + @@DATS main FFD42H 00000H + @@DATS magic FFD42H 00000H + @@DATS WDT FFD42H 00000H + @@DATS i2c_mcu FFD42H 00000H + @@DATS i2c_twl FFD42H 00000H + @@DATS led FFD42H 00000H + @@DATS rtc FFD42H 00000H + @@DATS vreg_ctr FFD42H 00000H + @@DATS vreg_twl FFD42H 00000H + @@DATS adc FFD42H 00000H + @@DATS renge FFD42H 00000H + @@DATS accero FFD42H 00000H @@DATS self_flash - FFD3AH 00000H - @@DATS sw FFD3AH 00000H + FFD42H 00000H + @@DATS sw FFD42H 00000H @@DATS task_debug - FFD3AH 00000H + FFD42H 00000H @@DATS task_misc - FFD3AH 00000H - @@DATS task_sys FFD3AH 00000H + FFD42H 00000H + @@DATS task_sys FFD42H 00000H @@DATS pedo_alg_thre_det2 - FFD3AH 00000H - @@DATS ini_VECT FFD3AH 00000H + FFD42H 00000H + @@DATS ini_VECT FFD42H 00000H @@DATS task_status - FFD3AH 00000H - @@DATS @rom FFD3AH 00000H - FSL_DATA FFD3AH 00010H DSEG UNITP + FFD42H 00000H + @@DATS @rom FFD42H 00000H + FSL_DATA FFD42H 00010H DSEG UNITP FSL_DATA fsl_common - FFD3AH 00010H - @@INITL FFD4AH 00000H DSEG UNIT64KP - @@INITL loader FFD4AH 00000H - @@INITL pm FFD4AH 00000H - @@INITL i2c_ctr FFD4AH 00000H - @@INITL main FFD4AH 00000H - @@INITL magic FFD4AH 00000H - @@INITL WDT FFD4AH 00000H - @@INITL i2c_mcu FFD4AH 00000H - @@INITL i2c_twl FFD4AH 00000H - @@INITL led FFD4AH 00000H - @@INITL rtc FFD4AH 00000H - @@INITL vreg_ctr FFD4AH 00000H - @@INITL vreg_twl FFD4AH 00000H - @@INITL adc FFD4AH 00000H - @@INITL renge FFD4AH 00000H - @@INITL accero FFD4AH 00000H + FFD42H 00010H + @@INITL FFD52H 00000H DSEG UNIT64KP + @@INITL loader FFD52H 00000H + @@INITL pm FFD52H 00000H + @@INITL i2c_ctr FFD52H 00000H + @@INITL main FFD52H 00000H + @@INITL magic FFD52H 00000H + @@INITL WDT FFD52H 00000H + @@INITL i2c_mcu FFD52H 00000H + @@INITL i2c_twl FFD52H 00000H + @@INITL led FFD52H 00000H + @@INITL rtc FFD52H 00000H + @@INITL vreg_ctr FFD52H 00000H + @@INITL vreg_twl FFD52H 00000H + @@INITL adc FFD52H 00000H + @@INITL renge FFD52H 00000H + @@INITL accero FFD52H 00000H @@INITL self_flash - FFD4AH 00000H - @@INITL sw FFD4AH 00000H + FFD52H 00000H + @@INITL sw FFD52H 00000H @@INITL task_debug - FFD4AH 00000H + FFD52H 00000H @@INITL task_misc - FFD4AH 00000H - @@INITL task_sys FFD4AH 00000H + FFD52H 00000H + @@INITL task_sys FFD52H 00000H @@INITL pedo_alg_thre_det2 - FFD4AH 00000H - @@INITL ini_VECT FFD4AH 00000H + FFD52H 00000H + @@INITL ini_VECT FFD52H 00000H @@INITL task_status - FFD4AH 00000H - @@INITL @rom FFD4AH 00000H - @@DATAL FFD4AH 00000H DSEG UNIT64KP - @@DATAL loader FFD4AH 00000H - @@DATAL pm FFD4AH 00000H - @@DATAL i2c_ctr FFD4AH 00000H - @@DATAL main FFD4AH 00000H - @@DATAL magic FFD4AH 00000H - @@DATAL WDT FFD4AH 00000H - @@DATAL i2c_mcu FFD4AH 00000H - @@DATAL i2c_twl FFD4AH 00000H - @@DATAL led FFD4AH 00000H - @@DATAL rtc FFD4AH 00000H - @@DATAL vreg_ctr FFD4AH 00000H - @@DATAL vreg_twl FFD4AH 00000H - @@DATAL adc FFD4AH 00000H - @@DATAL renge FFD4AH 00000H - @@DATAL accero FFD4AH 00000H + FFD52H 00000H + @@INITL @rom FFD52H 00000H + @@DATAL FFD52H 00000H DSEG UNIT64KP + @@DATAL loader FFD52H 00000H + @@DATAL pm FFD52H 00000H + @@DATAL i2c_ctr FFD52H 00000H + @@DATAL main FFD52H 00000H + @@DATAL magic FFD52H 00000H + @@DATAL WDT FFD52H 00000H + @@DATAL i2c_mcu FFD52H 00000H + @@DATAL i2c_twl FFD52H 00000H + @@DATAL led FFD52H 00000H + @@DATAL rtc FFD52H 00000H + @@DATAL vreg_ctr FFD52H 00000H + @@DATAL vreg_twl FFD52H 00000H + @@DATAL adc FFD52H 00000H + @@DATAL renge FFD52H 00000H + @@DATAL accero FFD52H 00000H @@DATAL self_flash - FFD4AH 00000H - @@DATAL sw FFD4AH 00000H + FFD52H 00000H + @@DATAL sw FFD52H 00000H @@DATAL task_debug - FFD4AH 00000H + FFD52H 00000H @@DATAL task_misc - FFD4AH 00000H - @@DATAL task_sys FFD4AH 00000H + FFD52H 00000H + @@DATAL task_sys FFD52H 00000H @@DATAL pedo_alg_thre_det2 - FFD4AH 00000H - @@DATAL ini_VECT FFD4AH 00000H + FFD52H 00000H + @@DATAL ini_VECT FFD52H 00000H @@DATAL task_status - FFD4AH 00000H - @@DATAL @rom FFD4AH 00000H -* gap * FFD4AH 000B6H + FFD52H 00000H + @@DATAL @rom FFD52H 00000H +* gap * FFD52H 000AEH MEMORY=RAM2 BASE ADDRESS=FFE20H SIZE=000C0H OUTPUT INPUT INPUT BASE SIZE SEGMENT SEGMENT MODULE ADDRESS - @@BITS FFE20H 00003H BSEG + @@BITS FFE20H 00004H BSEG @@BITS @cstart FFE20H.0 00000H.0 @@BITS loader FFE20H.0 00000H.0 - @@BITS pm FFE20H.0 00000H.3 - @@BITS i2c_ctr FFE20H.3 00000H.0 - @@BITS main FFE20H.3 00000H.0 - @@BITS magic FFE20H.3 00000H.0 - @@BITS WDT FFE20H.3 00000H.0 - @@BITS i2c_mcu FFE20H.3 00000H.3 - @@BITS i2c_twl FFE20H.6 00000H.0 - @@BITS led FFE20H.6 00000H.4 - @@BITS rtc FFE21H.2 00000H.3 - @@BITS vreg_ctr FFE21H.5 00000H.1 - @@BITS vreg_twl FFE21H.6 00000H.0 - @@BITS adc FFE21H.6 00000H.2 - @@BITS renge FFE22H.0 00000H.2 - @@BITS accero FFE22H.2 00000H.0 + @@BITS pm FFE20H.0 00000H.4 + @@BITS i2c_ctr FFE20H.4 00000H.0 + @@BITS main FFE20H.4 00000H.0 + @@BITS magic FFE20H.4 00000H.0 + @@BITS WDT FFE20H.4 00000H.0 + @@BITS i2c_mcu FFE20H.4 00000H.3 + @@BITS i2c_twl FFE20H.7 00000H.0 + @@BITS led FFE20H.7 00000H.4 + @@BITS rtc FFE21H.3 00000H.3 + @@BITS vreg_ctr FFE21H.6 00000H.1 + @@BITS vreg_twl FFE21H.7 00000H.0 + @@BITS adc FFE21H.7 00000H.4 + @@BITS renge FFE22H.3 00000H.2 + @@BITS accero FFE22H.5 00000H.0 @@BITS self_flash - FFE22H.2 00000H.0 - @@BITS sw FFE22H.2 00000H.2 + FFE22H.5 00000H.0 + @@BITS sw FFE22H.5 00000H.2 @@BITS task_debug - FFE22H.4 00000H.0 + FFE22H.7 00000H.0 @@BITS task_misc - FFE22H.4 00000H.3 - @@BITS task_sys FFE22H.7 00000H.0 + FFE22H.7 00000H.3 + @@BITS task_sys FFE23H.2 00000H.0 @@BITS pedo_alg_thre_det2 - FFE22H.7 00000H.1 - @@BITS ini_VECT FFE23H.0 00000H.0 + FFE23H.2 00000H.1 + @@BITS ini_VECT FFE23H.3 00000H.0 @@BITS task_status - FFE23H.0 00000H.0 -* gap * FFE23H 000B1H + FFE23H.3 00000H.0 +* gap * FFE24H 000B0H @@SEGREG FFED4H 00004H DSEG AT @@SEGREG @SEGREG FFED4H 00004H @@RTARG0 FFED8H 00008H DSEG AT diff --git a/trunk/bsr_system.h b/trunk/bsr_system.h index 5f42aaf..429bce2 100644 --- a/trunk/bsr_system.h +++ b/trunk/bsr_system.h @@ -46,7 +46,7 @@ typedef struct _system_status_ unsigned char reboot:1; unsigned char info_fullcolor:1; enum model_ model; - unsigned short cnt_force_off; + unsigned char force_off; // bitできないんだそうな }system_status_; diff --git a/trunk/config.h b/trunk/config.h index 4e8c36b..59f923d 100644 --- a/trunk/config.h +++ b/trunk/config.h @@ -12,7 +12,7 @@ #define MCU_VER_MAJOR 0x00 -#define MCU_VER_MINOR 0x23 +#define MCU_VER_MINOR 0x27 //#define PM_CCIC_TIM diff --git a/trunk/hoge.bin b/trunk/hoge.bin index 7419e5aeff1da6695eafba176191d80b11f8d254..d9bcfb7b5216df1a66a7e7c39fb4b80f7a775b08 100644 GIT binary patch delta 9805 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 delta 9360 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 diff --git a/trunk/incs.h b/trunk/incs.h index 0c8ad20..0dec58e 100644 --- a/trunk/incs.h +++ b/trunk/incs.h @@ -36,6 +36,8 @@ #include "sw.h" +#include "adc.h" + #include "wdt.h" //========================================================= diff --git a/trunk/led.c b/trunk/led.c index 1f4de59..55408f3 100644 --- a/trunk/led.c +++ b/trunk/led.c @@ -26,7 +26,7 @@ // ======================================================== static void led_pow_normal( ); -static void led_pow_hotaru( ); +static void led_pow_sleep( ); static void led_pow_bt_empty(); @@ -40,6 +40,19 @@ uni_info_LED info_LED; st_led_red_batt_empty led_red_batt_empty = { 0x55, 0x55, 0x55, 0x55 }; +// スリープ中明滅のテーブル。マジか。 +//const u8 LED_PTN_SLEEP[] = { 8,10,16,25, 36,47,56,62, 64,62,56,47, 36,25,16,10 }; +//const u8 LED_PTN_SLEEP[] = { 8,12,24,42,64,86,104,116,120,116,104,86,64,42,24,12 }; +//const u8 LED_PTN_SLEEP[] = { 0,5,18,39,64,89,109,123,128,123,109,89,64,39,18,5 }; +const u8 LED_PTN_SLEEP[] = { 8,23,38,53,68,83,98,113,128,113,98,83,68,53,38,23 }; + + + +#define LED_SLEEP_FRAME_LEN 128 +#define LED_SLEEP_DIM_LEN 128 +#define LED_SLEEP_FRAME_NUM 16 + + // フルカラーとの自動判別のため、一時領域としてもっておく bit LED_pow_red_Mirror; @@ -198,7 +211,7 @@ void LED_stop( ) enum LED_ILUM_MODE{ LED_POW_ILM_AUTO, LED_POW_ILM_ON, - LED_POW_ILM_HOTARU, + LED_POW_ILM_SLEEP, LED_POW_ILM_CEOFF }; ======================================================== */ @@ -211,8 +224,8 @@ void tsk_led_pow( ) led_pow_normal( ); break; - case ( LED_POW_ILM_HOTARU ): - led_pow_hotaru( ); + case ( LED_POW_ILM_SLEEP ): + led_pow_sleep( ); break; case ( LED_POW_ILM_ON ): @@ -327,71 +340,32 @@ static void led_pow_bt_empty() /* ======================================================== ホタルパターン + 電池残量で赤→赤点滅にする ======================================================== */ -static void led_pow_hotaru( ) +static void led_pow_sleep( ) { - static u8 delay; - static u8 state; - static u16 blue_to; + static u8 time_to_next_frame; + static u8 frame; + static st_LED_dim_status LED_dim_status; - if( delay != 0 ) + LED_dim_status.to = LED_PTN_SLEEP[frame] * 128; + + // グラデーションのデルタを計算 + LED_dim_status.delta = (( LED_dim_status.to - LED_dim_status.now ) ) / LED_SLEEP_DIM_LEN; + led_fade_to2( LED_duty_pow_blu, &LED_dim_status ); + + // 次のフレームに進める? + time_to_next_frame -= 1; + if( time_to_next_frame == 0 ) { - delay -= 1; - return; - } + time_to_next_frame = LED_SLEEP_FRAME_LEN; - delay = 4; - - switch ( state ) - { - // フェードイン - case ( 0 ): - case ( 2 ): - case ( 4 ): - if( vreg_ctr[VREG_C_BT_REMAIN] <= BATT_TH_LO ) + frame += 1; + if( frame >= LED_SLEEP_FRAME_NUM -1 ) { - blue_to = 0; - LED_pow_red_Mirror = 1; - } - else - { - blue_to = vreg_ctr[VREG_C_LED_BRIGHT]; - LED_pow_red_Mirror = 0; - } - break; - - default: - // フェードアウト - if( vreg_ctr[VREG_C_BT_REMAIN] <= BATT_TH_LO ) - { - LED_pow_red_Mirror = 0; - } - else - { - blue_to = 2; - } - break; - } - - // LED更新 - if( LED_duty_pow_blu != blue_to ) - { - if( LED_duty_pow_blu > blue_to ) - { - LED_duty_pow_blu -= 1; - } - else - { - LED_duty_pow_blu += 1; + frame = 0; } } - - if( LED_duty_pow_blu == blue_to ) - { - state += 1; - } - - return; } diff --git a/trunk/led.h b/trunk/led.h index 4b3cc39..96abc91 100644 --- a/trunk/led.h +++ b/trunk/led.h @@ -53,7 +53,7 @@ enum LED_ILUM_MODE { LED_POW_ILM_AUTO = 0, LED_POW_ILM_ON, - LED_POW_ILM_HOTARU, + LED_POW_ILM_SLEEP, LED_POW_ILM_OFF, LED_POW_ILM_ONLY_RED, LED_POW_ILM_ONLY_BLUE, diff --git a/trunk/main.c b/trunk/main.c index 0dbc329..c35c855 100644 --- a/trunk/main.c +++ b/trunk/main.c @@ -27,6 +27,7 @@ system_status_ system_status; uni_pool pool; + /* ======================================================== 本当のエントリ関数は loader.c にあります ======================================================== */ @@ -41,7 +42,7 @@ void main_loop( void ) iic_mcu_start( ); EI( ); - BT_init( ); // 実機やバッテリの判定、電池残量ICの設定 + BT_chk(); system_status.pwr_state = OFF_TRIG; if( system_status.reboot ) diff --git a/trunk/pedo_alg_thre_det2.c b/trunk/pedo_alg_thre_det2.c index 36cc66d..f005c7a 100644 --- a/trunk/pedo_alg_thre_det2.c +++ b/trunk/pedo_alg_thre_det2.c @@ -218,6 +218,7 @@ static void hosu_increment() u8 now_year; u8 now_min; u8 now_sec; + u8 after_boundary; // 時計を止める必要が有るので↓は一気に行って下さい DI(); @@ -233,18 +234,30 @@ static void hosu_increment() // RWAIT = 0; ↑で行っています // EI(); 〃 + if( ( now_min > vreg_ctr[ VREG_C_ACC_HOSU_HOUR_BOUNDARY ] ) + || ( ( now_min == vreg_ctr[ VREG_C_ACC_HOSU_HOUR_BOUNDARY ] ) + && ( now_sec >= vreg_ctr[ VREG_C_ACC_HOSU_HOUR_BOUNDARY_SEC ] )) + ) + { + after_boundary = 1; + } + else + { + after_boundary = 0; + } + // 歩数計が止まっていた時間を考慮して必要なら進める // if( last_year == now_year ) { - if( now_hour > last_hour_fny ) + if( ( now_hour + after_boundary ) > last_hour_fny ) // 右辺に足してるのは負の数が困るので { - fill_hosu_hist_hours( now_hour - last_hour_fny ); + fill_hosu_hist_hours( now_hour + after_boundary - last_hour_fny ); } } else if( last_year == ( now_year -1 ) ) { // 年をまたいでいるとき - u16 temp_hours = ( ( 365 + (( now_year & 0x03 ) == 1 ? 1: 0 )) * 24 ) - last_hour_fny + now_hour; + u16 temp_hours = ( ( 365 + (( now_year & 0x03 ) == 1 ? 1: 0 )) * 24 ) - last_hour_fny + now_hour + after_boundary; fill_hosu_hist_hours( temp_hours ); } else if( last_year < now_year ) @@ -258,29 +271,19 @@ static void hosu_increment() // ノーケアでよい } last_year = now_year; - last_hour_fny = now_hour; + last_hour_fny = now_hour + after_boundary; // 実際にインクリメント { - u8 temp; + u16* p_pedo_data = &pool.vreg_c_ext.pedo_log[ p_record ]; - temp = p_record; - if(( now_min < vreg_ctr[ VREG_C_ACC_HOSU_HOUR_BOUNDARY ] ) && - ( now_sec < vreg_ctr[ VREG_C_ACC_HOSU_HOUR_BOUNDARY_SEC ] )) + if( *p_pedo_data == HOSU_NODATA ) { - temp -= 1; - if( PEDOMETER_LOG_SIZE <= temp ) - { - temp = PEDOMETER_LOG_SIZE -1; - } + *p_pedo_data = 1; } - if( pool.vreg_c_ext.pedo_log[ temp ] == HOSU_NODATA ) + else if( *p_pedo_data != HOSU_MAX ) { - pool.vreg_c_ext.pedo_log[ temp ] = 1; - } - else if( pool.vreg_c_ext.pedo_log[ temp ] != HOSU_MAX ) - { - pool.vreg_c_ext.pedo_log[ temp ] += 1; + *p_pedo_data += 1; } } } diff --git a/trunk/pm.c b/trunk/pm.c index 687576c..9f308dc 100644 --- a/trunk/pm.c +++ b/trunk/pm.c @@ -23,16 +23,18 @@ u8 raw_adc_temperature; BT_VENDER battery_manufacturer = BT_VENDER_NOT_CHECKED; st_bt_comp bt_comp; // バッテリパラメータ構造体 -u8 reg_shadow; // NTR PMIC レジスタミラー +u8 reg_shadow; // NTR PMIC レジスタミラー bit bt_chg_ready; // バッテリパラメータ送信済。充電開始許可 -u8 chg_led_override; // アダプタ差したとき、充電するしないに関わらずしばらく点灯させる +u8 chg_led_override; // アダプタ差したとき、充電するしないに関わらずしばらく点灯させる // ======================================================== -static void BT_maker_detect(); +static void BT_model_detect(); +static void BT_mgic_quick_start(); static void BT_mgic_init(); + // ======================================================== #ifdef _PMIC_TWL_ u8 blset; @@ -40,6 +42,599 @@ u8 blset; +#define swap_endian_16( x ) (unsigned int)(( x << 8 ) | ( x >> 8 )) + + + + +/* ======================================================== + 電池の管理 + + 以下のピンは主にここで操作・監視されます。 + ・PM_BT_AUTH 現状、GPI in + ・PM_CHARGE_n CCIC /CHG in + ・PM_CHARGE_ERR_n /FLT in + ・PM_EXTDC_n /DOK INTP4 in + ・PM_CHARGE_EN_n /CEN out + + 以下の物は関係ありそうですが別のところで主に監視されています。 + ・LED_Pow R, B, Charge tsk_LED + ・BT_TEMP,_P tsk_ADC + + PM_EXTDCは割り込みメインにするかも + ======================================================== */ +#define INTERVAL_TSK_BATT 250 + +bit temp_zone_charge_disable; // 温度で充電停止する時にヒステリシスを付けるため +void tsk_batt( ) +{ + static u8 task_interval = 0; + static bit pm_extdc_old; + static u8 heikinka_h,heikinka_l; + + if( task_interval-- != 0 ) + { + return; + } + else + { + task_interval = (u8)( INTERVAL_TSK_BATT / SYS_INTERVAL_TICK ); + } + + + // アダプタステータス更新 ///////// + if( pm_extdc_old != !PM_EXTDC_n ) + { + pm_extdc_old = !PM_EXTDC_n; + if( pm_extdc_old ) + { + 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)( 1000 / INTERVAL_TSK_BATT / SYS_INTERVAL_TICK ); + } + else + { + set_bit( 0, vreg_ctr[VREG_C_STATUS], REG_BIT_POW_SUPPLY ); + set_irq( VREG_C_IRQ1, REG_BIT_BT_DC_DISC ); + chg_led_override = 0; + } + } + + // 充電 /////////////////////////// + // 温度付きヒステリシス + if(( 75 <= raw_adc_temperature ) + && ( raw_adc_temperature <= 184 )) + { + if( heikinka_h < 40 ) + { + heikinka_h++; + } + else + { + temp_zone_charge_disable = 0; // 充電許可 + } + } + else if(( raw_adc_temperature <= 61 ) + || ( 189 <= raw_adc_temperature )) + { + if( heikinka_l < 40 ) + { + heikinka_l++; + } + else + { + temp_zone_charge_disable = 1; // 充電禁止 + } + } + else + { + // temp_zone_charge_disable そのまま + heikinka_h = 0; + heikinka_l = 0; + } + +#ifndef _MODEL_WM0_ + // WM0ではCHG_ENABLEピンは /WL_RST に配線されており、充電制御しない + if( !temp_zone_charge_disable && bt_chg_ready && !PM_EXTDC_n ) + { + BT_CHG_ENABLE(); // 温度範囲OKで充電再開 + } + else + { + BT_CHG_DISABLE(); // 温度危険! 充電停止 + } +#endif + + + // 充電 // + // →割り込み。miscの中でよろしくやってくれている。 + if( !BT_CHG_n ) + { + set_bit( 1, vreg_ctr[VREG_C_STATUS], REG_BIT_BATT_CHARGE ); + LED_CHARGE = 1; + } + else + { + set_bit( 0, vreg_ctr[VREG_C_STATUS], REG_BIT_BATT_CHARGE ); + LED_CHARGE = 0; + } + + if( chg_led_override != 0 ){ // 気がつく人いるかな…? + chg_led_override -= 1; + LED_CHARGE = 1; + } + + // 電池残量 // + if( system_status.pwr_state == ON ) + { + BT_get_left(); + } +} + + + +/******************************************************** +電池関係の初期化 + +   ゲージ  | 有り     | 無し +  ーーーーーーーーーーーーーーーーーーーーーーー +   電池 有り| 実機     | ? +  ーーーーーーーーーーーーーーーーーーーーーーー +      無し| 白箱     | TS +        | 実機電池無し | +  ーーーーーーーーーーーーーーーーーーーーーーー + +  ゲージ有り、電池無し の白箱/実機判別は、 + 電池温度で判定する + + 返値: 電池無し 0xFF + 電池変わってない 0 + 電池変わった 1 + +***********************************************************/ +bit bt_force_update; + +void BT_chk() +{ + BT_VENDER battery_manufacturer_old; + + battery_manufacturer_old = battery_manufacturer; + + BT_model_detect(); + if( system_status.model != MODEL_JIKKI ) + { + bt_chg_ready = 0; + return; + // おしまい + } + + if(( battery_manufacturer_old != battery_manufacturer ) || + bt_force_update ) + { + bt_force_update = 0; + iic_mcu_start( ); // 中で初期化フラグをもってるので呼びまくって良い こんなところに…orz + if(( battery_manufacturer_old == BT_VENDER_OPEN ) || + ( battery_manufacturer_old == BT_VENDER_NOT_CHECKED )) + { + BT_mgic_quick_start(); + } + BT_mgic_init(); // 機種判定も行います + } + bt_chg_ready = 1; + renge_task_immed_add( tski_BT_temp_update ); // 電池温度監視スタート +} + + + + +void BT_model_detect() +{ + u8 temp; + + BT_DET_P = 1; + BT_TEMP_P = 1; + wait_ms(1); // 電圧が上がるのに時間が掛かる + + raw_adc_temperature = get_adc( ADC_SEL_BATT_TEMP ); + temp = get_adc( ADC_SEL_BATT_DET ); + BT_DET_P = 0; + + // プラットフォーム判定 // + if( raw_adc_temperature > 0xF0 ) + { + // TS // + system_status.model = MODEL_TS_BOARD; + } + else if( raw_adc_temperature < 4 ) + { + // 白箱 // + system_status.model = MODEL_SHIROBAKO; + } + else + { + // 実機、残量IC NACK( バッテリ無しまたは残量IC故障 ) + system_status.model = MODEL_JIKKI; + } + + // 電池メーカーの識別 // + if( temp > 233 ) + battery_manufacturer = BT_VENDER_OPEN; + else if( temp > 197 ) + battery_manufacturer = BT_VENDER_6; + else if( temp > 158 ) + battery_manufacturer = BT_VENDER_PANA; + else if( temp > 123 ) + battery_manufacturer = BT_VENDER_4; + else if( temp > 79 ) + battery_manufacturer = BT_VENDER_3; + else if( temp > 33 ) + battery_manufacturer = BT_VENDER_2; + else if( temp > 5 ) + battery_manufacturer = BT_VENDER_1; + else + battery_manufacturer = BT_VENDER_MAXELL; + + + if( ( battery_manufacturer == BT_VENDER_OPEN ) && + ( system_status.model == MODEL_JIKKI ) ) + { + system_status.model = MODEL_JIKKI_NOBATT; + } +} + + + +static void BT_mgic_quick_start() +{ + union{ + u16 _u16; // endian 注意 + struct{ + u8 lsb; + u8 msb; + }chars; + }dat_16; + + wait_ms( 10 ); // MGICの起動に掛かる + + dat_16._u16 = swap_endian_16( 0x4000 ); + // 0. バッテリ残量IC クイックスタート + iic_mcu_write( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_MODE, 2, &dat_16 ); + + wait_ms( 150 ); +} + + + +static void BT_mgic_init() +{ + u8 temp; + u8 origParam[4]; + union{ + u16 _u16; // endian 注意 + struct{ + u8 lsb; + u8 msb; + }chars; + }dat_16; + + bt_comp = BT_COMP[ battery_manufacturer ]; // バッテリパラメータ変更 + + /* + // -1. リセットをかけてみる + dat_16._u16 = swap_endian_16( 0x5400 ); // reset + iic_mcu_write( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_COMMAND, 2, &dat_16 ); // こいつはNACKを返す + */ + + if( system_status.model != MODEL_JIKKI ) + { + return; + // おしまい + } + + // 1. ロック解除 + dat_16._u16 = swap_endian_16( 0x4A57 ); // unlock key + if( iic_mcu_write( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_LOCK, 2, &dat_16 ) != ERR_SUCCESS ) + { + // 残量IC NACK + vreg_ctr[ VREG_C_STATUS_1 ] |= REG_BIT_GASGAUGE_ERR; + return; + // おしまい + } + + vreg_ctr[ VREG_C_STATUS_1 ] &= ~REG_BIT_GASGAUGE_ERR; + + // wait_ms( 5 + 1 ); 前にウェイト入れてるので不要 + + // 2. 初期パラメータを一時保存 + iic_mcu_read( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_RCOMP, 4, origParam ); + + // 3. 一時的にOCVを変更 + dat_16._u16 = swap_endian_16( BT_OCV[ battery_manufacturer ] ); // マジックナンバー的なもの。メーカー指定 + iic_mcu_write( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_OCV, 2, &dat_16 ); + + // 4. 一時的にRCOMPを変更 + dat_16._u16 = swap_endian_16( 0xFF00 ); + iic_mcu_write( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_RCOMP, 2, &dat_16 ); + + // 5.メーカー別パラメータのロード + { + iic_mcu_set_wo_dma( ); + iic_mcu_write( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_BT_PARAM, 16, &BT_PARAM[ battery_manufacturer ] ); + iic_mcu_set_wo_dma( ); + iic_mcu_write( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_BT_PARAM +16, 16, &BT_PARAM[ battery_manufacturer ][16] ); + iic_mcu_set_wo_dma( ); + iic_mcu_write( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_BT_PARAM +32, 16, &BT_PARAM[ battery_manufacturer ][32] ); + iic_mcu_set_wo_dma( ); + iic_mcu_write( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_BT_PARAM +48, 16, &BT_PARAM[ battery_manufacturer ][48] ); + } + + // 6. 150ms以上待つ + wait_ms( 150 + 15 ); + + // 7. OCVに「とある値」を書く + dat_16._u16 = swap_endian_16( BT_OCV[ battery_manufacturer ] ); // マジックナンバー的なもの。メーカー指定 + iic_mcu_write( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_OCV, 2, &dat_16 ); + + // 8. 150〜600ms待つ。600msは厳守 + wait_ms( 150 + 15 ); + + // 9. SOCを読む。ベリファイのため。 + temp = iic_mcu_read_a_byte( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_SOC ); + + if(( BT_VERIFY_L[ battery_manufacturer ] <= temp ) && ( temp <= BT_VERIFY_H[ battery_manufacturer ] )) + { + // カスタムモデル書き込みOK! + }else{ + // 失敗だったらリトライするのか? + NOP(); + } + + // 10.元のRCOMPとOCVを書き戻す + iic_mcu_write( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_RCOMP, 4, origParam ); + + // 11. ロック + dat_16._u16 = swap_endian_16( 0x0000 ); // lock key + iic_mcu_write( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_LOCK, 2, &dat_16 ); +} + + + + + +extern u16 _dbg_rcomp; +/* ======================================================== + raw_adc_temperatureに入っている値を℃に変換するとともに、 + ・レジスタにセット + ・残量ICにセット + ======================================================== */ +task_status_immed tski_BT_temp_update( ) +{ + static u8 rawdat_old; + static s8 temperature; + s16 newrcomp; + static u8 heikinka; + +/* + サーミスタ - 10kΩ分圧点の時、 + 常用温度では分圧比のカーブがほぼリニアで、 + 村田 T[℃] = 81.48 - 111.97 x ratio + TDK T = 81.406 - 111.81 x ratio +*/ + + if( rawdat_old != raw_adc_temperature ) + { + if( heikinka < 40 ) + { + heikinka++; + } + else + { + heikinka = 0; + rawdat_old = raw_adc_temperature; + // temperature = 81.45 - 111.9 * raw_adc_temperature/256.0; + // それぞれ256倍してある + temperature = ( 20851 - 112 * raw_adc_temperature + (256/2) ) /256; + vreg_ctr[VREG_C_BT_TEMP] = (u8)temperature; + + newrcomp = 0; + if( temperature > 20 ) + { + newrcomp = ( ( temperature - 20 ) * bt_comp.temp_co_up )/256; + } + else + { + newrcomp = ( ( temperature - 20 ) * bt_comp.temp_co_dn )/256; + } + newrcomp = bt_comp.rcomp + newrcomp; + + if( newrcomp > 255 ) + { + newrcomp = 255; + } + if( newrcomp < 0 ) + { + newrcomp = 0; + } + newrcomp = newrcomp; + _dbg_rcomp = newrcomp; + + if( iic_mcu_write( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_RCOMP, 2, &newrcomp ) == ERR_SUCCESS ) + { + rawdat_old = raw_adc_temperature; + } + else + { + vreg_ctr[ VREG_C_STATUS_1 ] |= REG_BIT_GASGAUGE_ERR; + } + } + } + return ( ERR_FINISED ); +} + + + +/********************************************************** + 電池残量ICから残量を取得し、レジスタに書き込む。 +  電池残量ICが無い・故障などの時はとりあえず残量99%とする。 +         ↑は status_1で確認可能。電源投入時にチェックしています。 +  BT_chk()が実行されている必要があります。 +**********************************************************/ +void BT_get_left(){ + u8 temp_fuel[2]; + static u16 hysteresis; + +#ifdef _DEBUG_BT_IRQ_ + if( vreg_ctr[ VREG_C_COMMAND3 ] == 'd' ) + { + vreg_ctr[ VREG_C_BT_REMAIN ] = vreg_ctr[ VREG_C_DBG01 ]; + } + else +#endif + { + if( system_status.model == MODEL_TS_BOARD ) + { + // TS // + vreg_ctr[ VREG_C_BT_REMAIN ] = 99; + vreg_ctr[ VREG_C_BT_VOLTAGE ] = 200; + } + else if( system_status.model == MODEL_SHIROBAKO ) + { + // 白箱 // + if( iic_mcu_read( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_SOC, 2, 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]; + } + vreg_ctr[ VREG_C_BT_VOLTAGE ] = 200; + } + else + { + // 実機 // + u8 temp_v[2]; + u8 temp_force_fule_left; + u16 temp16; + + // 残量リード + if( iic_mcu_read( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_SOC, 2, temp_fuel ) != ERR_SUCCESS ) + { + // 残量ICがNACK + vreg_ctr[ VREG_C_STATUS_1 ] |= REG_BIT_GASGAUGE_ERR; + bt_chg_ready = 0; + vreg_ctr[ VREG_C_BT_REMAIN ] = 0; + system_status.force_off = 1; // 強制電源断フラグ(カウンタ) + } + else + { + // バッテリパラメータの関係でビットシフトが必要 + temp16 = ( temp_fuel[0] << 8 ) + temp_fuel[1]; + temp16 /= BT_RCOMP_SCALE[ battery_manufacturer ]; + temp_fuel[0] = ( temp16 >> 8 ) & 0xFF; + temp_fuel[1] = temp16 & 0xFF; + + // 電圧でキャップ + if( iic_mcu_read( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_VCELL, 2, temp_v ) == ERR_SUCCESS ) + { + vreg_ctr[ VREG_C_BT_VOLTAGE ] = temp_v[0]; + + temp16 = ( temp_v[0] << 8 ) + temp_v[1]; + + if( temp16 > V_TH_30 ) + { + temp_force_fule_left = 100; + hysteresis = 0; + } + else if( temp16 > V_TH_LO + hysteresis ) + { + temp_force_fule_left = 30; + hysteresis = 0; + } + else if( temp16 > V_TH_EMPTY ) + { + temp_force_fule_left = BATT_TH_LO; // ここから赤 + hysteresis = 500; + } + else if( temp16 > V_TH_ZERO ) + { + temp_force_fule_left = BATT_TH_EMPTY; + hysteresis = 500; + } + else + { +// temp_force_fule_left = 0; + system_status.force_off = 1; // 強制電源断フラグ(カウンタ) + } + } + } + + // 充電許可(=アダプタも刺さってる)のに充電してない = 充電完了 + if( BT_CHG_Ena && !BT_CHG_n ){ + vreg_ctr[ VREG_C_BT_REMAIN ] = 100; + vreg_ctr[ VREG_C_BT_REMAIN_FINE ] = 0; + } + else + { // 少ない方にキャップ + if( temp_force_fule_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_fule_left; + vreg_ctr[ VREG_C_BT_REMAIN_FINE ] = 0; + } + } + } + } + + + // 残量で割り込み。急激に減ると飛ぶことがある // + { + static u8 bt_remain_old; + + if( (( vreg_ctr[ VREG_C_BT_REMAIN ] <= BATT_TH_LO ) && ( BATT_TH_LO < bt_remain_old ))|| + (( vreg_ctr[ VREG_C_BT_REMAIN ] <= BATT_TH_EMPTY ) && ( BATT_TH_EMPTY < bt_remain_old ))|| + (( vreg_ctr[ VREG_C_BT_REMAIN ] == 0 ) && ( bt_remain_old != 0 )) ) + { + set_irq( VREG_C_IRQ1, REG_BIT_BT_REMAIN ); + } + bt_remain_old = vreg_ctr[ VREG_C_BT_REMAIN ]; + + if( system_status.pwr_state == OFF_TRIG ) + { + bt_remain_old = 100; + } + } + + // PMIC-NTRに電池残量を教えてあげる + { + static u8 bt_remain_old; + u8 flag; + + if( system_status.pwr_state != ON ) + { + bt_remain_old = 0; + } + + flag = (( vreg_ctr[ VREG_C_BT_REMAIN ] <= BATT_TH_LO )? 1 : 0 ); // 1で電池切れ + + if( bt_remain_old != flag ) + { + bt_remain_old = flag; + iic_mcu_write_a_byte( IIC_SLA_CODEC, CODEC_REG_BT, flag ); + } + } +} + + + + + /* ======================================================== 液晶系の電源制御  ステータスフラグはすぐに立ててしまう。 @@ -245,7 +840,6 @@ task_status_immed tski_vcom_set( ) err PM_sys_pow_on( ) { // 電源順次立ち上げ -#ifdef _PMIC_CTR_ // PM_reset_ast( ); 不要 PM_LDSW_onまかせ RESET2_ast; FCRAM_RST_ast; @@ -267,63 +861,20 @@ err PM_sys_pow_on( ) wait_ms( DELAY_PM_TW_PWUP ); // 無事電源が起動したかチェック。 -# ifdef _PMIC_CTR_ if( !PM_chk_LDSW() ) { return ( ERR_ERR ); // reset1はほっといて良い } + PM_reset_neg(); -# else - RESET1_neg; - if( !RESET1_n ) - { - RESET1_ast; - return ( ERR_ERR ); // reset1はほっといて良い - } -# endif FCRAM_RST_neg; RESET2_neg; - wait_ms( 100 ); -#else - // TWL PMIC // - u8 temp; - - // 電源投入 - PM_reset_ast(); - RESET2_ast; - FCRAM_RST_ast; - - PM_TEG_PWSW = 1; - wait_ms( 160 ); - PM_TEG_PWSW = 0; - - - // 残量確認 - temp = 99; - if( temp < 5 ) { - return ( ERR_ERR ); - } - vreg_ctr[VREG_C_BT_REMAIN] = temp; - FCRAM_RST_neg; - PM_reset_neg(); - RESET2_neg; - wait_ms( 100 ); - if( !RESET1_n ) - { - // 起動失敗 - PM_reset_ast(); - RESET2_ast; - FCRAM_RST_ast; - return ( ERR_ERR ); - } - -#endif - - { - // CODEC 不定レジスタ初期化 u8 codec_reg_init[3] = { 0,0,0 }; + + wait_ms( 100 ); + // CODEC 不定レジスタ初期化 iic_mcu_write( IIC_SLA_CODEC, CODEC_REG_PM, 3, codec_reg_init ); reg_shadow = 0; // こんなところで... @@ -340,42 +891,23 @@ err PM_sys_pow_on( ) ======================================================== */ err PM_sys_pow_off( ) { -#ifdef _PMIC_CTR_ // if( RESET1_n ) - if( PM_chk_LDSW() ) - { - // 異常時は呼ばない - PM_BL_set( REG_BIT_CMD_BL_U_OFF | REG_BIT_CMD_BL_L_OFF ); - PM_LCD_off( ); // TCOM,VCS OFF も消してきます。 - wait_ms( 50 + 10 ); + if( PM_chk_LDSW() ) + { + // 異常時は呼ばない + PM_BL_set( REG_BIT_CMD_BL_U_OFF | REG_BIT_CMD_BL_L_OFF ); + PM_LCD_off(); // TCOM,VCS OFF も消してきます。 + wait_ms( 20 ); - PM_reset_ast( ); - } + PM_reset_ast(); + } RESET2_ast; FCRAM_RST_ast; -// PM_off( ); ↓まとめて落としてしまえ + PM_off( ); PM_LDSW_off( ); -#else - - if( RESET1_n ) - { - PM_reset_ast(); - RESET2_ast; - FCRAM_RST_ast; - PM_TEG_PWSW = 1; - wait_ms( 250 ); - wait_ms( 250 ); - wait_ms( 250 ); - PM_TEG_PWSW = 0; - } - PM_reset_ast(); - RESET2_ast; - FCRAM_RST_ast; - -#endif return ( ERR_SUCCESS ); } @@ -569,588 +1101,3 @@ task_status_immed tski_PM_BL_set() return( ERR_FINISED ); } - - - - - -/* ======================================================== - 電池の管理 - - 以下のピンは主にここで操作・監視されます。 - ・PM_BT_AUTH 現状、GPI in - ・PM_CHARGE_n CCIC /CHG in - ・PM_CHARGE_ERR_n /FLT in - ・PM_EXTDC_n /DOK INTP4 in - ・PM_CHARGE_EN_n /CEN out - - 以下の物は関係ありそうですが別のところで主に監視されています。 - ・LED_Pow R, B, Charge tsk_LED - ・BT_TEMP,_P tsk_ADC - - PM_EXTDCは割り込みメインにするかも - ======================================================== */ -#define INTERVAL_TSK_BATT 250 - -bit temp_zone_charge_enable; // 温度で充電停止する時にヒステリシスを付けるため -void tsk_batt( ) -{ - static u8 task_interval = 0; - static bit pm_extdc_old; - static u8 heikinka_h,heikinka_l; - - if( task_interval-- != 0 ) - { - return; - } - else - { - task_interval = (u8)( INTERVAL_TSK_BATT / SYS_INTERVAL_TICK ); - } - - - // アダプタステータス更新 ///////// - if( pm_extdc_old != !PM_EXTDC_n ) - { - pm_extdc_old = !PM_EXTDC_n; - if( pm_extdc_old ) - { - 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)( 1000 / INTERVAL_TSK_BATT / SYS_INTERVAL_TICK ); - } - else - { - set_bit( 0, vreg_ctr[VREG_C_STATUS], REG_BIT_POW_SUPPLY ); - set_irq( VREG_C_IRQ1, REG_BIT_BT_DC_DISC ); - chg_led_override = 0; - } - } - - // 充電 /////////////////////////// - // 温度付きヒステリシス - if(( 75 <= raw_adc_temperature ) - && ( raw_adc_temperature <= 184 )) - { - if( heikinka_h < 40 ) - { - heikinka_h++; - } - else - { - temp_zone_charge_enable = 1; // 充電許可 - } - } - else if(( raw_adc_temperature <= 61 ) - || ( 189 <= raw_adc_temperature )) - { - if( heikinka_l < 40 ) - { - heikinka_l++; - } - else - { - temp_zone_charge_enable = 0; // 充電禁止 - } - } - else - { - // temp_zone_charge_enable そのまま - heikinka_h = 0; - heikinka_l = 0; - } - -#ifndef _MODEL_WM0_ - // WM0ではCHG_ENABLEピンは /WL_RST に配線されており、充電制御しない - if( temp_zone_charge_enable && bt_chg_ready && !PM_EXTDC_n ) - { - BT_CHG_ENABLE(); // 温度範囲OKで充電再開 - } - else - { - BT_CHG_DISABLE(); // 温度危険! 充電停止 - } -#endif - - - // 充電 // - // →割り込み。miscの中でよろしくやってくれている。 - if( !BT_CHG_n ) - { - set_bit( 1, vreg_ctr[VREG_C_STATUS], REG_BIT_BATT_CHARGE ); - LED_CHARGE = 1; - } - else - { - set_bit( 0, vreg_ctr[VREG_C_STATUS], REG_BIT_BATT_CHARGE ); - LED_CHARGE = 0; - } - - if( chg_led_override != 0 ){ // 気がつく人いるかな…? - chg_led_override -= 1; - LED_CHARGE = 1; - } - - - // 電池残量 // - if( system_status.pwr_state == ON ) - { - BT_get_left(); - } -} - - - -/******************************************************** -電池関係の初期化 - -   ゲージ  | 有り     | 無し -  ーーーーーーーーーーーーーーーーーーーーーーー -   電池 有り| 実機     | ? -  ーーーーーーーーーーーーーーーーーーーーーーー -      無し| 白箱     | TS -        | 実機電池無し | -  ーーーーーーーーーーーーーーーーーーーーーーー - -  ゲージ有り、電池無し の白箱/実機判別は、 - 電池温度で判定する - -***********************************************************/ -#define swap_endian_16( x ) (unsigned int)(( x << 8 ) | ( x >> 8 )) - -void BT_init( ) -{ - BT_VENDER battery_manufacturer_old; - union{ - u16 _u16; // endian 注意 - struct{ - u8 lsb; - u8 msb; - }chars; - }dat_16; - - BT_DET_P = 1; - BT_TEMP_P = 1; - wait_ms(1); // 電圧が上がるのに時間が掛かる - - // 電池温度測定 // - // TS,白箱判定も兼ねるのでこっちが先でないとダメ - raw_adc_temperature = get_adc( ADC_SEL_BATT_TEMP ); - - battery_manufacturer_old = battery_manufacturer; - BT_maker_detect(); -/* ↑BT_maker_detect()に内包 - if( battery_manufacturer != BT_VENDER_OPEN ) - { - bt_chg_ready = 0; - } -*/ - - if( - ( battery_manufacturer != battery_manufacturer_old ) - ) - { - // バッテリが変わった // - BT_mgic_init(); - tski_BT_temp_update( ); // 温度のtemp。 残量ICに行きます - } - - if( battery_manufacturer != BT_VENDER_OPEN ) - { - bt_chg_ready = 1; - // 電池温度監視スタート - renge_task_immed_add( tski_BT_temp_update ); - } - else - { - bt_chg_ready = 0; - } - -} - - - - -void BT_maker_detect() -{ - u8 temp; - - // 電池メーカーの識別 - temp = get_adc( ADC_SEL_BATT_DET ); - BT_DET_P = 0; - - bt_chg_ready = 1; - if( temp > 233 ) - battery_manufacturer = BT_VENDER_OPEN; - else if( temp > 197 ) - battery_manufacturer = BT_VENDER_6; - else if( temp > 158 ) - battery_manufacturer = BT_VENDER_PANA; - else if( temp > 123 ) - battery_manufacturer = BT_VENDER_4; - else if( temp > 79 ) - battery_manufacturer = BT_VENDER_3; - else if( temp > 33 ) - battery_manufacturer = BT_VENDER_2; - else if( temp > 5 ) - battery_manufacturer = BT_VENDER_1; - else - battery_manufacturer = BT_VENDER_MAXELL; -} - - - -void BT_mgic_init() -{ - u8 temp; - u8 origParam[4]; - union{ - u16 _u16; // endian 注意 - struct{ - u8 lsb; - u8 msb; - }chars; - }dat_16; - - bt_comp = BT_COMP[ battery_manufacturer ]; // バッテリパラメータ変更 - - wait_ms( 10 ); // MGICの起動に掛かる - - // 0. バッテリ残量IC クイックスタート - dat_16._u16 = swap_endian_16( 0x4000 ); // quick start - iic_mcu_write( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_MODE, 2, &dat_16 ); - - /* - // PMIC バージョン読み出し - temp = iic_mcu_read_a_byte( IIC_SLA_PMIC, PM_REG_ADRS_VER ); - vreg_ctr[ VREG_C_PM_INFO ] = temp; - // デバッグ用は別にまとめた - */ - - /* - // -1. リセットをかけてみる - dat_16._u16 = swap_endian_16( 0x5400 ); // reset - iic_mcu_write( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_COMMAND, 2, &dat_16 ); // こいつはNACKを返す - */ - - - // 1. ロック解除 - dat_16._u16 = swap_endian_16( 0x4A57 ); // unlock key - if( iic_mcu_write( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_LOCK, 2, &dat_16 ) == ERR_SUCCESS ) - { - vreg_ctr[ VREG_C_STATUS_1 ] &= ~REG_BIT_GASGAUGE_ERR; - // 残量IC有り // - if( battery_manufacturer < BT_VENDER_OPEN ) - { - // 電池何かしらあり // - system_status.model = MODEL_JIKKI; - } - else - { - // 電池無し // - if( raw_adc_temperature < 4 ) - { - // 白箱 // - system_status.model = MODEL_SHIROBAKO; - } - else - { - // 実機、バッテリ無し - system_status.model = MODEL_UNKNOWN; - } - } - } - else - { - vreg_ctr[ VREG_C_STATUS_1 ] |= REG_BIT_GASGAUGE_ERR; - // 残量IC NACK - if( raw_adc_temperature > 0xF0 ) - { - // TS // - system_status.model = MODEL_TS_BOARD; - } - else if( raw_adc_temperature < 4 ) - { - // 白箱 // - system_status.model = MODEL_SHIROBAKO; - } - else - { - // 実機、残量IC NACK( バッテリ無しまたは残量IC故障 ) -#ifdef _ALLOW_NOBATT_ - system_status.model = MODEL_JIKKI; -#else - system_status.model = MODEL_JIKKI_NOBATT; // 起動させない -#endif - } - } - - if( system_status.model == MODEL_JIKKI ) - { - // wait_ms( 5 + 1 ); 前にウェイト入れてるので不要 - - // 2. 初期パラメータを一時保存 - iic_mcu_read( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_RCOMP, 4, origParam ); - - // 3. 一時的にOCVを変更 - dat_16._u16 = swap_endian_16( 0xDA20 ); // マジックナンバー的なもの。メーカー指定 - iic_mcu_write( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_OCV, 2, &dat_16 ); - - // 4. 一時的にRCOMPを変更 - dat_16._u16 = swap_endian_16( 0xFF00 ); - iic_mcu_write( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_RCOMP, 2, &dat_16 ); - - // 5.メーカー別パラメータのロード - { - iic_mcu_set_wo_dma( ); - iic_mcu_write( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_BT_PARAM, 64, &BT_PARAM[ battery_manufacturer ] ); - } - - // 6. 150ms以上待つ - wait_ms( 150 + 15 ); - - // 7. OCVに「とある値」を書く - dat_16._u16 = swap_endian_16( 0xDA20 ); - iic_mcu_write( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_OCV, 2, &dat_16 ); - - // 8. 150〜600ms待つ。600msは厳守 - wait_ms( 150 + 15 ); - - // 9. SOCを読む。ベリファイのため。 - temp = iic_mcu_read_a_byte( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_SOC ); - - if(( BT_VERIFY_L[ battery_manufacturer ] <= temp ) && ( temp <= BT_VERIFY_H[ battery_manufacturer ] )) - { - // カスタムモデル書き込みOK! - }else{ - // 失敗だったらリトライするのか? - NOP(); - } - - // 10.元のRCOMPとOCVを書き戻す - iic_mcu_write( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_RCOMP, 4, origParam ); - - // 11. ロック - dat_16._u16 = swap_endian_16( 0x0000 ); // lock key - iic_mcu_write( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_LOCK, 2, &dat_16 ); - - // おしまい // - } -} - - - - - -extern u16 _dbg_rcomp; -/* ======================================================== - raw_adc_temperatureに入っている値を℃に変換するとともに、 - ・レジスタにセット - ・残量ICにセット - ======================================================== */ -task_status_immed tski_BT_temp_update( ) -{ - static u8 rawdat_old; - static s8 temperature; - s16 newrcomp; - static u8 heikinka; - -/* - サーミスタ - 10kΩ分圧点の時、 - 常用温度では分圧比のカーブがほぼリニアで、 - 村田 T[℃] = 81.48 - 111.97 x ratio - TDK T = 81.406 - 111.81 x ratio -*/ - - if( rawdat_old != raw_adc_temperature ) - { - if( heikinka < 40 ) - { - heikinka++; - } - else - { - heikinka = 0; - rawdat_old = raw_adc_temperature; - // temperature = 81.45 - 111.9 * raw_adc_temperature/256.0; - // それぞれ256倍してある - temperature = ( 20851 - 112 * raw_adc_temperature + (256/2) ) /256; - vreg_ctr[VREG_C_BT_TEMP] = (u8)temperature; - - newrcomp = 0; - if( temperature > 20 ) - { - newrcomp = ( ( temperature - 20 ) * bt_comp.temp_co_up )/256; - } - else - { - newrcomp = ( ( temperature - 20 ) * bt_comp.temp_co_dn )/256; - } - newrcomp = bt_comp.rcomp + newrcomp; - - if( newrcomp > 256 ) - { - newrcomp = 235; - } - if( newrcomp < 0 ) - { - newrcomp = 0; - } - newrcomp = newrcomp; - _dbg_rcomp = newrcomp; - - if( iic_mcu_write( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_RCOMP, 2, &newrcomp ) == ERR_SUCCESS ) - { - rawdat_old = raw_adc_temperature; - } - else - { - vreg_ctr[ VREG_C_STATUS_1 ] |= REG_BIT_GASGAUGE_ERR; - } - } - } - return ( ERR_FINISED ); -} - - - -/********************************************************** - 電池残量ICから残量を取得し、レジスタに書き込む。 -  電池残量ICが無い・故障などの時はとりあえず残量99%とする。 -         ↑は status_1で確認可能。電源投入時にチェックしています。 -  BT_init()が実行されている必要があります。 -**********************************************************/ -void BT_get_left(){ - u8 temp_fuel[2]; - static u8 hysteresis; - -#ifdef _DEBUG_BT_IRQ_ - if( vreg_ctr[ VREG_C_COMMAND3 ] == 'd' ) - { - vreg_ctr[ VREG_C_BT_REMAIN ] = vreg_ctr[ VREG_C_DBG01 ]; - } - else -#endif - { - if( system_status.model == MODEL_TS_BOARD ) - { - // TS // - vreg_ctr[ VREG_C_BT_REMAIN ] = 99; - vreg_ctr[ VREG_C_BT_VOLTAGE ] = 200; - } - else if( system_status.model == MODEL_SHIROBAKO ) - { - // 白箱 // - if( iic_mcu_read( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_SOC, 2, 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]; - } - vreg_ctr[ VREG_C_BT_VOLTAGE ] = 200; - } - else - { - u8 temp_v[2]; - u8 temp_force_fule_left; - u16 temp16; - - // 実機 // - // 残量リード - if( iic_mcu_read( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_SOC, 2, temp_fuel ) != ERR_SUCCESS ) - { - // 残量ICがNACK - vreg_ctr[ VREG_C_STATUS_1 ] |= REG_BIT_GASGAUGE_ERR; - bt_chg_ready = 0; - vreg_ctr[ VREG_C_BT_REMAIN ] = 0; - system_status.cnt_force_off = 1; // 強制電源断フラグ - } - else - { - // バッテリパラメータの関係でビットシフトが必要 - temp16 = ( temp_fuel[0] << 8 ) + temp_fuel[1]; - temp16 /= BT_RCOMP_SCALE[ battery_manufacturer ]; - temp_fuel[0] = ( temp16 >> 8 ) & 0xFF; - temp_fuel[1] = temp16 & 0xFF; - - // 電圧でキャップ - if( iic_mcu_read( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_VCELL, 2, temp_v ) == ERR_SUCCESS ) - { - vreg_ctr[ VREG_C_BT_VOLTAGE ] = temp_v[0]; - - temp16 = ( temp_v[0] << 8 ) + temp_v[1]; - - if( temp16 > V_TH_LO + hysteresis ) - { - temp_force_fule_left = 100; - hysteresis = 0; - } - else if( temp16 > V_TH_EMPTY ) - { - temp_force_fule_left = 10; - hysteresis = 600; // 1280; // 100mV - } - else if( temp16 > V_TH_ZERO ) - { - temp_force_fule_left = 5; - } - else - { - temp_force_fule_left = 0; - } - } - } - - if( BT_CHG_Ena && !BT_CHG_n ){ - vreg_ctr[ VREG_C_BT_REMAIN ] = 100; - vreg_ctr[ VREG_C_BT_REMAIN_FINE ] = 0; - } - else - { - if( temp_force_fule_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_fule_left; - vreg_ctr[ VREG_C_BT_REMAIN_FINE ] = 0; - } - } - } - } - - - // 残量で割り込み。急激に減ると飛ぶことがある // - { - static u8 bt_remain_old; - - if( (( vreg_ctr[ VREG_C_BT_REMAIN ] <= BATT_TH_LO ) && ( BATT_TH_LO < bt_remain_old ))|| - (( vreg_ctr[ VREG_C_BT_REMAIN ] <= BATT_TH_EMPTY ) && ( BATT_TH_EMPTY < bt_remain_old ))|| - (( vreg_ctr[ VREG_C_BT_REMAIN ] == 0 ) && ( bt_remain_old != 0 )) ) - { - set_irq( VREG_C_IRQ1, REG_BIT_BT_REMAIN ); - } - if(( vreg_ctr[ VREG_C_BT_REMAIN ] == 0 ) && ( bt_remain_old != 0 )) - { - system_status.cnt_force_off = 1; // 強制電源断フラグ - } - bt_remain_old = vreg_ctr[ VREG_C_BT_REMAIN ]; - - if( system_status.pwr_state == OFF_TRIG ) - { - bt_remain_old = 100; - } - } - - // PMIC-NTRに電池残量を教えてあげる - iic_mcu_write_a_byte( IIC_SLA_CODEC, CODEC_REG_BT, - ( vreg_ctr[ VREG_C_BT_REMAIN ] <= BATT_TH_LO )? 1 : 0 ); // 1で電池切れ -} - - diff --git a/trunk/pm.h b/trunk/pm.h index 5a83fe4..d107e63 100644 --- a/trunk/pm.h +++ b/trunk/pm.h @@ -15,15 +15,12 @@ #define BATT_TH_LO 10 #define BATT_TH_EMPTY 5 -/* -#define V_K 16 / 1.25 -#define V_TH_LO (u16)( 3200 * V_K ) -#define V_TH_EMPTY (u16)( 3150 * V_K ) -#define V_TH_ZERO (u16)( 3100 * V_K ) -*/ +#define V_TH_30 42240 #define V_TH_LO 40960 #define V_TH_EMPTY 40320 #define V_TH_ZERO 39680 +// 上から順に 3300, 3200, 3150, 3100[mV] + //========================================================= #define LED_CHARGE P2.4 @@ -125,6 +122,8 @@ typedef enum BT_VENDER //========================================================= extern u8 raw_adc_temperature; extern BT_VENDER battery_manufacturer; +extern bit bt_force_update; + //========================================================= @@ -138,10 +137,11 @@ void PM_LCD_off( ); err PM_BL_set( u8 ); -void BT_init(); +void BT_chk(); void BT_get_left(); + task_status_immed tski_BT_temp_update( ); task_status_immed tski_vcom_set( ); task_status_immed tski_PM_LCD_on(); @@ -149,7 +149,7 @@ task_status_immed tski_PM_LCD_off(); task_status_immed tski_PM_BL_set(); -#define PM_Chg_Stop() { BT_TEMP_P = 0; BT_CHG_DISABLE(); while( !BT_CHG_n ){;}; LED_CHARGE = 0; } +#define PM_Chg_Stop() { BT_TEMP_P = 0; BT_CHG_DISABLE(); while( !BT_CHG_n ){;}; LED_CHARGE = 0; bt_chg_ready = 0; } //  これを呼ぶ前に、現在温度を教えておく必要があります。 diff --git a/trunk/rtc.c b/trunk/rtc.c index 340daa2..e88ef4a 100644 --- a/trunk/rtc.c +++ b/trunk/rtc.c @@ -5,7 +5,7 @@ #pragma inline -#include "incs.h" +#include "incs_loader.h" diff --git a/trunk/self_flash.c b/trunk/self_flash.c index 93df57f..cf1f2bd 100644 --- a/trunk/self_flash.c +++ b/trunk/self_flash.c @@ -183,9 +183,10 @@ void firm_update( ) } // 1ブロック書き込み完了。内部ベリファイを行う +#ifdef _DBG_LED_PRINT_ P1.5 = 1; DBG_LED_on; - +#endif if( FSL_IVerify( target_block ) != FSL_OK ){ while(1){} // 再度消去→書き込み ベリファイを繰り返すだけじゃダメでした... todo…? @@ -194,8 +195,10 @@ void firm_update( ) FSL_ForceReset(); // 戻ってこない // } +#ifdef _DBG_LED_PRINT_ DBG_LED_off; P1.5 = 0; +#endif if( SPD ) { diff --git a/trunk/sw.c b/trunk/sw.c index 2fc261d..9cef192 100644 --- a/trunk/sw.c +++ b/trunk/sw.c @@ -24,7 +24,7 @@ */ //========================================================= -u8 SW_pow_count; +u16 SW_pow_count; bit SW_pow_mask; u8 SW_home_count, SW_wifi_count; @@ -115,7 +115,10 @@ void tsk_sw( ) #else set_irq( VREG_C_IRQ0, REG_BIT_SW_HOME_HOLD ); #endif - system_status.cnt_force_off = 1; + } + else if( SW_pow_count > ( HOLD_THREASHOLD + vreg_ctr[ VREG_C_OFF_DELAY ] *5 )) + { + system_status.force_off = 1; } count_sw_n( SW_POW_n, SW_pow_count, SW_pow_mask ); // ボタン押し時間のカウント diff --git a/trunk/sw.h b/trunk/sw.h index eb5120b..f0703e9 100644 --- a/trunk/sw.h +++ b/trunk/sw.h @@ -3,18 +3,13 @@ #include "config.h" -extern u8 SW_pow_count; +extern u16 SW_pow_count; extern bit SW_pow_mask; #define INTERVAL_TSK_SW 8 #define CLICK_THRESHOLD 2 -#ifdef _FORCE_OFF_1SEC_ -#define HOLD_THREASHOLD (u8)( 800 / INTERVAL_TSK_SW ) -#define FORCEOFF_THREASHOLD (u8)( 1200 / SYS_INTERVAL_TICK /64 ) -#else -#define HOLD_THREASHOLD (u8)( 2000 / INTERVAL_TSK_SW ) -#define FORCEOFF_THREASHOLD (u8)( 4000 / SYS_INTERVAL_TICK /64 ) -#endif +#define HOLD_THREASHOLD (u8)( 2000 /1.024 /INTERVAL_TSK_SW ) +#define FORCEOFF_THREASHOLD 50 #endif diff --git a/trunk/task_misc.c b/trunk/task_misc.c index be1c774..6c32b08 100644 --- a/trunk/task_misc.c +++ b/trunk/task_misc.c @@ -203,6 +203,9 @@ task_status_immed do_command0( ) PM_reset_neg(); RESET2_neg; + vol_reset(); + renge_task_immed_add( tski_vol_update ); + twl_ntr_mode = 0; // 起動時以外はリセット不要 /* @@ -235,7 +238,7 @@ extern u8 raw_adc_temperature; extern u8 iic_burst_state; -extern bit temp_zone_charge_enable; +extern bit temp_zone_charge_disable; extern bit bt_chg_ready; /* ======================================================== @@ -295,7 +298,7 @@ task_status_immed tski_mcu_info_read() break; case( 7 ): - IICA = ( temp_zone_charge_enable | ( bt_chg_ready << 1 ) ); + IICA = ( !temp_zone_charge_disable | ( bt_chg_ready << 1 ) ); break; default: diff --git a/trunk/task_sys.c b/trunk/task_sys.c index bf9c739..fddf85a 100644 --- a/trunk/task_sys.c +++ b/trunk/task_sys.c @@ -29,6 +29,7 @@ static void send_getup_to_soc(); //========================================================= extern bit info_led_off; extern bit going_to_sleep; +extern bit bt_chg_ready; static u8 timeout_sleep = 0; @@ -92,17 +93,21 @@ void tsk_sys( ) // 電源投入 // iic_mcu_start( ); - BT_init(); // 実機やバッテリの判定、電池残量ICの設定 + bt_force_update = 0; + BT_chk(); // 実機やバッテリの判定、電池残量ICの設定 + +#ifndef _ALLOW_NOBATT_ if( system_status.model == MODEL_JIKKI_NOBATT ) { renge_task_interval_run_force = 1; system_status.pwr_state = OFF_TRIG; return; } +#endif // 残量チェック - BT_get_left(); // 先に、BT_init()が実行されている必要があります。 + BT_get_left(); // 先に、BT_chk()が実行されている必要があります。 if( // ( vreg_ctr[VREG_C_BT_REMAIN] < 1 ) && ( vreg_ctr[VREG_C_BT_VOLTAGE] < ( V_TH_ZERO / 256 ) ) @@ -188,10 +193,10 @@ void tsk_sys( ) vreg_ctr[ VREG_C_STATUS ] |= (( bl_status_temp & 0x03 ) << 5 ); set_bit( ( iic_mcu_read_a_byte( IIC_SLA_PMIC, PM_REG_ADRS_VDD_LCD ) != 0 ), vreg_ctr[ VREG_C_STATUS ], REG_BIT_LCD_POW ); - BT_init(); + BT_chk(); } - LED_init( ); // reboot時の↑BT_Chk,BT_init後に行いたい + LED_init( ); // reboot時の↑BT_Chk,BT_chk後に行いたい system_status.reboot = 0; system_status.pwr_state = ON; @@ -218,7 +223,7 @@ void tsk_sys( ) send_getup_to_soc(); } else - { + { PM_VDD_ecoMode(); system_status.pwr_state = SLEEP; renge_task_interval_run_force = 1; @@ -241,7 +246,7 @@ void tsk_sys( ) case SLEEP: //------------------------------------------ chk_emergencyExit(); // スリープから復帰 - if( !SLP_REQ ){ + if( !SLP_REQ ){ PM_VDD_normMode(); wait_ms( 5 ); // tdly_sw send_getup_to_soc(); @@ -261,7 +266,7 @@ void tsk_sys( ) return; } vreg_ctr[ VREG_C_LED_TUNE ] = LED_TUNE_ILM_OFF; - system_status.cnt_force_off = 0; + system_status.force_off = 0; LED_stop( ); IIC_ctr_Stop( ); @@ -304,21 +309,23 @@ void tsk_sys( ) PM_sys_pow_off( ); + iic_mcu_stop( ); + timeout = 0; system_status.pwr_state = BT_CHARGE; SW_pow_mask = 1; SW_pow_count = 0; + // no break // case BT_CHARGE: if( !PM_EXTDC_n ) { // アダプタが刺さってるときはこのブロックを繰り返す。 - /// ↓は中で初期化フラグをもってるので呼びまくって良い - iic_mcu_start( ); - BT_init(); + BT_chk(); // 要ポーリング(電池抜かれ検出のため) + // ↑の中で必要だったらI2C_m_init呼んでます // アダプタ有り:充電温度監視 if( SW_pow_count >= 10 ) // 電源スイッチが押されるのを待つ @@ -327,19 +334,24 @@ void tsk_sys( ) system_status.poweron_reason = PWSW; system_status.pwr_state = OFF; } + if( system_status.model != MODEL_JIKKI ) + { + iic_mcu_stop( ); + } + } else { // 省電力へ移行 system_status.poweron_reason = NONE; + iic_mcu_stop( ); PM_Chg_Stop(); + bt_force_update = 1; while( RWST ) {;} - iic_mcu_stop( ); - // 割り込み待ちで寝る // RTCIMK = 1; @@ -456,14 +468,10 @@ static void chk_emergencyExit(){ ======================================================== */ static void force_off_check() { - if( system_status.cnt_force_off != 0 ) + if( system_status.force_off ) { - system_status.cnt_force_off += 1; - if( system_status.cnt_force_off >= ( vreg_ctr[ VREG_C_OFF_DELAY ] * 64 ) ) - { - system_status.pwr_state = OFF_TRIG; - renge_task_interval_run_force = 1; - } + system_status.pwr_state = OFF_TRIG; + renge_task_interval_run_force = 1; } } diff --git a/trunk/vreg_ctr.c b/trunk/vreg_ctr.c index fe5378b..429b23f 100644 --- a/trunk/vreg_ctr.c +++ b/trunk/vreg_ctr.c @@ -20,7 +20,6 @@ extern u8 mcu_info_read(); // task_misc.c extern u8 iic_burst_state; -extern bit vol_by_twl; // ******************************************************** @@ -297,16 +296,19 @@ void vreg_ctr_write( u8 adrs, u8 data ) vreg_ctr[ VREG_C_COMMAND3 ] = data; break; - case ( VREG_C_VOL_DIGITAL ): - vreg_ctr[ VREG_C_VOL_DIGITAL ] = ( data & ~REG_BIT_VOL_RESET) ; // コマンドビットが混ざってる【使用時に】マスクせよ - if(( data & REG_BIT_VOL_RESET ) != 0 ) + case ( VREG_C_VOL_OPTION ): + if(( vreg_ctr[ VREG_C_VOL_OPTION ] ^ data ) & REG_BIT_VOL_FORCE_SLIDER ) { - vol_by_twl = 0; renge_task_immed_add( tski_vol_update ); } + vreg_ctr[ VREG_C_VOL_OPTION ] = data; break; + #define REG_BIT_VOL_FORCE_REG ( 1 << 2 ) +#define REG_BIT_VOL_FORCE_SLIDER ( 1 << 1 ) + + // read only // case ( VREG_C_MCU_VER_MAJOR ): case ( VREG_C_MCU_VER_MINOR ): // VREG_C_TUNE = 0x08, @@ -327,9 +329,9 @@ void vreg_ctr_write( u8 adrs, u8 data ) case ( VREG_C_RTC_SEC_FINE_H ): // VREG_C_ACC_RESERVE, // VREG_C_ACC_HOSU_HIST = 0x4F, - // read only // break; + // ただ値を更新するだけ // default: /* case ( VREG_C_IRQ_MASK0 ): @@ -348,6 +350,7 @@ void vreg_ctr_write( u8 adrs, u8 data ) case ( VREG_C_RTC_ALARM_YEAR ): case ( VREG_C_ACC_W_ADRS ): case ( VREG_C_OFF_DELAY ): + case ( VREG_C_VOL_DIGITAL ): */ if( adrs < VREG_C_ENDMARK_ ) { @@ -385,6 +388,15 @@ u8 vreg_ctr_read( u8 adrs ) ( ( vreg_twl[ REG_TWL_INT_ADRS_MODE ] & 0x03 ) << 6 ) | // sys_mode ( ( vreg_twl[ REG_TWL_INT_ADRS_MODE ] & 0x80 ) >> 2 )); // vol32 } + else if( adrs == VREG_C_RTC_SEC_FINE_L ) + { + rsub_temp = RSUBC; + return( (u8)( rsub_temp & 0xFF ) ); + } + else if( adrs == VREG_C_RTC_SEC_FINE_H ) + { + return( (u8)( ( rsub_temp >> 8 ) & 0xFF ) ); + } else if( adrs == VREG_C_ACC_HOSU_HIST ) { return( hosu_read() ); @@ -395,15 +407,6 @@ u8 vreg_ctr_read( u8 adrs ) // vreg_free_adrs += 1; // ここで加算してしまうとインデックスがずれる return( temp ); } - else if( adrs == VREG_C_RTC_SEC_FINE_L ) - { - rsub_temp = RSUBC; - return( (u8)( rsub_temp & 0xFF ) ); - } - else if( adrs == VREG_C_RTC_SEC_FINE_H ) - { - return( (u8)( ( rsub_temp >> 8 ) & 0xFF ) ); - } else if( adrs == VREG_CX_INFO ) { // I2C_mを使うので、ここからでは割り込みが使えなくて困る diff --git a/trunk/vreg_ctr.h b/trunk/vreg_ctr.h index a315e89..49acd68 100644 --- a/trunk/vreg_ctr.h +++ b/trunk/vreg_ctr.h @@ -112,10 +112,11 @@ #define REG_BIT_TWL_IRQ_BT_EMPTY 0x10 #define REG_BIT_TWL_IRQ_VOL_CHANGE 0x40 -// VOL(0x25) -#define REG_BIT_VOL_RESET ( 1 << 6 ) -#define REG_BIT_VOL_FORCE_REG ( 1 << 7 ) - +// VOL option (0x26) +#define REG_BIT_VOL_FORCE_REG ( 1 << 2 ) +#define REG_BIT_VOL_FORCE_SLIDER ( 1 << 1 ) +#define REG_BIT_VOL_BY_SPI ( 1 << 0 ) +// FORCE_REGの方が弱い // CODEC上のPMIC NTR の代理レジスタ #define REG_BIT_TWL_REQ_OFF ( 1 << 6 ) @@ -189,6 +190,7 @@ enum VREG_C_ADRS VREG_C_OFF_DELAY = 0x24, VREG_C_VOL_DIGITAL = 0x25, + VREG_C_VOL_OPTION, VREG_C_LED_BRIGHT = 0x28, VREG_C_LED_POW, diff --git a/trunk/vreg_twl.c b/trunk/vreg_twl.c index b0aae56..988d39b 100644 --- a/trunk/vreg_twl.c +++ b/trunk/vreg_twl.c @@ -21,7 +21,10 @@ u8 vreg_twl[_REG_TWL_INT_ADRS_ENDMARK]; extern bit twl_ver_read; extern bit cam_led_update; extern bit twl_ntr_mode; -extern bit vol_by_twl; + + +extern bit vol_changed_by_twl; + /* ======================================================== 仮想レジスタの初期化 @@ -44,10 +47,9 @@ void vreg_twl_write( u8 adrs, u8 data ) { case ( REG_TWL_INT_ADRS_VOL ): { - vol_by_twl = 1; + vol_changed_by_twl = 1; vreg_twl[ REG_TWL_INT_ADRS_VOL ] = data; renge_task_immed_add( tski_vol_update ); - set_irq( VREG_C_IRQ2, REG_BIT_TWL_SNDVOL_CHANGE ); break; } @@ -130,7 +132,13 @@ u8 vreg_twl_read( u8 phy_adrs ) return( temp ); case( REG_TWL_INT_ADRS_VOL ): - return( vreg_twl[ REG_TWL_INT_ADRS_VOL ] ); + if( vreg_ctr[ VREG_C_SND_VOL ] != 1 ){ + return( vreg_ctr[ VREG_C_SND_VOL ] /2 ); + } + else + { + return( 1 ); + } case( REG_TWL_INT_ADRS_VER_INFO ): // set_irq( VREG_C_IRQ2, REG_BIT_TWL_VER_READ ); // 速度的に無理なので diff --git a/trunk/yav_mcu_bsr.plg b/trunk/yav_mcu_bsr.plg index c172543..3580c34 100644 --- a/trunk/yav_mcu_bsr.plg +++ b/trunk/yav_mcu_bsr.plg @@ -1,36 +1,16 @@ C:\WINDOWS\system32\cmd.exe /c touch magic.c -"C:\Program Files\NEC Electronics Tools\CC78K0R\W2.10\bin\cc78k0r.exe" -c9F0104 -y"C:\Program Files\NEC Electronics Tools\DEV" -_msgoff -irenge -i"C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r" -ms -qvjl2w -sainter_asm -zpb -no pm.c -pm.c(67) : CC78K0R warning W0401: Conversion may lose significant digits -pm.c(105) : CC78K0R warning W0401: Conversion may lose significant digits -pm.c(189) : CC78K0R warning W0401: Conversion may lose significant digits -pm.c(197) : CC78K0R warning W0401: Conversion may lose significant digits -pm.c(415) : CC78K0R warning W0510: Pointer mismatch in function 'renge_task_immed_add' -pm.c(482) : CC78K0R warning W0401: Conversion may lose significant digits -pm.c(485) : CC78K0R warning W0401: Conversion may lose significant digits -pm.c(762) : CC78K0R warning W0510: Pointer mismatch in function 'renge_task_immed_add' -pm.c(977) : CC78K0R warning W0401: Conversion may lose significant digits -pm.c(1077) : CC78K0R warning W0401: Conversion may lose significant digits -pm.c(1078) : CC78K0R warning W0401: Conversion may lose significant digits -pm.c(1153) : CC78K0R warning W0401: Conversion may lose significant digits -batt_params.h(106) : CC78K0R warning W0401: Conversion may lose significant digits -batt_params.h(106) : CC78K0R warning W0401: Conversion may lose significant digits -batt_params.h(107) : CC78K0R warning W0401: Conversion may lose significant digits -batt_params.h(107) : CC78K0R warning W0401: Conversion may lose significant digits -batt_params.h(108) : CC78K0R warning W0401: Conversion may lose significant digits -batt_params.h(108) : CC78K0R warning W0401: Conversion may lose significant digits -batt_params.h(109) : CC78K0R warning W0401: Conversion may lose significant digits -batt_params.h(110) : CC78K0R warning W0401: Conversion may lose significant digits -batt_params.h(111) : CC78K0R warning W0401: Conversion may lose significant digits -batt_params.h(112) : CC78K0R warning W0401: Conversion may lose significant digits -pm.c(1095) : CC78K0R warning W0401: Conversion may lose significant digits -Compilation complete, 0 error(s) and 23 warning(s) found. -"C:\Program Files\NEC Electronics Tools\RA78K0R\W1.31\bin\ra78k0r.exe" -c9F0104 -y"C:\Program Files\NEC Electronics Tools\DEV" -_msgoff inter_asm\pm.asm -Assembly complete, 0 error(s) and 0 warning(s) found. "C:\Program Files\NEC Electronics Tools\CC78K0R\W2.10\bin\cc78k0r.exe" -c9F0104 -y"C:\Program Files\NEC Electronics Tools\DEV" -_msgoff -irenge -i"C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r" -ms -qvjl2w -sainter_asm -zpb -no magic.c Compilation complete, 0 error(s) and 0 warning(s) found. "C:\Program Files\NEC Electronics Tools\RA78K0R\W1.31\bin\ra78k0r.exe" -c9F0104 -y"C:\Program Files\NEC Electronics Tools\DEV" -_msgoff inter_asm\magic.asm Assembly complete, 0 error(s) and 0 warning(s) found. -"C:\Program Files\NEC Electronics Tools\RA78K0R\W1.31\bin\lk78k0r.exe" -y"C:\Program Files\NEC Electronics Tools\DEV" -_msgoff -obsr.lmf "..\..\..\Program Files\NEC Electronics Tools\CC78K0R\W2.10\lib78k0r\s0rm.rel" -go85h,0FC00h,1024 -gi0FFFFFFFFFFFFFFFFFFFFh -pbsr_k0r.map -nkd -gb7EFBFFh -b"C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\lib78k0r\fsl.lib" -bcl0rdm.lib -bcl0rm.lib -bcl0rmf.lib -i"C:\Program Files\NEC Electronics Tools\CC78K0R\W2.10\lib78k0r" -dbsr_mcu.dr -s -w0 loader.rel pm.rel i2c_ctr.rel main.rel magic.rel WDT.rel i2c_mcu.rel i2c_twl.rel 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 +"C:\Program Files\NEC Electronics Tools\CC78K0R\W2.10\bin\cc78k0r.exe" -c9F0104 -y"C:\Program Files\NEC Electronics Tools\DEV" -_msgoff -irenge -i"C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r" -ms -qvjl2w -sainter_asm -zpb -no task_sys.c +task_sys.c(193) : CC78K0R warning W0401: Conversion may lose significant digits +task_sys.c(452) : CC78K0R warning W0401: Conversion may lose significant digits +task_sys.c(454) : CC78K0R warning W0510: Pointer mismatch in function 'renge_task_immed_add' +Compilation complete, 0 error(s) and 3 warning(s) found. +"C:\Program Files\NEC Electronics Tools\RA78K0R\W1.31\bin\ra78k0r.exe" -c9F0104 -y"C:\Program Files\NEC Electronics Tools\DEV" -_msgoff inter_asm\task_sys.asm +Assembly complete, 0 error(s) and 0 warning(s) found. +"C:\Program Files\NEC Electronics Tools\RA78K0R\W1.31\bin\lk78k0r.exe" -y"C:\Program Files\NEC Electronics Tools\DEV" -_msgoff -obsr.lmf "..\..\..\Program Files\NEC Electronics Tools\CC78K0R\W2.10\lib78k0r\s0rm.rel" -go85h,0FC00h,1024 -gi0FFFFFFFFFFFFFFFFFFFFh -pbsr_k0r.map -nkd -gb0FEFBFFh -b"C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\lib78k0r\fsl.lib" -bcl0rdm.lib -bcl0rm.lib -bcl0rmf.lib -i"C:\Program Files\NEC Electronics Tools\CC78K0R\W2.10\lib78k0r" -dbsr_mcu.dr -s -w0 loader.rel pm.rel i2c_ctr.rel main.rel magic.rel WDT.rel i2c_mcu.rel i2c_twl.rel 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. "C:\Program Files\NEC Electronics Tools\RA78K0R\W1.31\bin\oc78k0r.exe" -y"C:\Program Files\NEC Electronics Tools\DEV" -_msgoff -o.\bsr.hex -nu -ki bsr.lmf Object Conversion Complete, 0 error(s) and 0 warning(s) found. @@ -40,4 +20,4 @@ intel-HEX to bsr bin converter file converted! -Build Total error(s) : 0 Total warning(s) : 23 +Build Total error(s) : 0 Total warning(s) : 3 diff --git a/trunk/yav_mcu_bsr.pri b/trunk/yav_mcu_bsr.pri index 96619a8..38ba7ea 100644 --- a/trunk/yav_mcu_bsr.pri +++ b/trunk/yav_mcu_bsr.pri @@ -23,7 +23,7 @@ SubClock=None Count=0 [Main] Geometry=-1211, 40, 1200, 882 -Window=Max +Window=Normal MDI_MAX=OFF Button=ON Mode=Auto @@ -78,10 +78,10 @@ Symbol Type=OFF Language=C Kanji=SJIS [Source] -Geometry=56, 72, 844, 790 +Geometry=86, 109, 754, 790 Window=Normal -DispStart=975 -CaretPos=988,0 +DispStart=83 +CaretPos=114,20 Mode=Normal DispFile= Address1= @@ -140,17 +140,33 @@ SaveStart= SaveEnd= Accumulative=ON [Source1] -Geometry=0, 0, 844, 790 +Geometry=0, 0, 754, 790 Window=Normal -DispStart=952 -CaretPos=727,2 +DispStart=331 +CaretPos=356,0 +Mode=Normal +DispFile=led.c +Accumulative=ON +[Source2] +Geometry=0, 0, 754, 790 +Window=Normal +DispStart=379 +CaretPos=433,0 +Mode=Normal +DispFile=adc.c +Accumulative=ON +[Source3] +Geometry=25, 25, 754, 790 +Window=Normal +DispStart=97 +CaretPos=217,0 Mode=Normal DispFile=pm.c Accumulative=ON [Assemble] Geometry=282, 92, 968, 626 Window=Hide -DispStart=864531456 +DispStart=864505856 CaretPos=0,0 Address1= Address2= @@ -194,17 +210,17 @@ SaveStart= SaveEnd= [Memory] Geometry=224, 254, 968, 626 -Window=Normal -Boundary=163 +Window=Hide +Boundary=0 Format=Hex Mode=Byte -Endian=Little +Endian= Ascii=OFF Idtag=OFF Address= -DispStart=00007DC0 -CaretPosData=0, 2012 -CaretPosAscii=3, 2012 +DispStart=FFFFFFFF +CaretPosData=0, 0 +CaretPosAscii=0, 0 Address1= Address2= Address3= @@ -259,9 +275,9 @@ Destination=0 [I/O Port] Line=0 [Stack] -Geometry=0, 0, 400, 300 -Window=Hide -Boundary=0 +Geometry=498, 620, 400, 300 +Window=Normal +Boundary=13762687 Mode=Proper [Sfr] Geometry=255, 105, 596, 915 @@ -968,63 +984,69 @@ Count=0 Geometry=854, -3, 441, 595 Window=Normal Boundary=18088086 -0=+iic_send_work,P,N,A,-,1 -1=.hysteresis,P,N,A,+,1 -2=.vreg_ctr[11],D,N,A,+,1 -3=.system_status,.,N,A,+,1 -4=.vreg_ctr[13],H,N,A,+,1 -5=.P4.2,P,S,A,+,1 -6=.hoge,P,N,A,+,1 -7=.work,P,N,A,+,1 -8=.new_val,P,N,A,+,1 -9=.raw_adc_temperature,D,N,A,+,1 -10=.bt_chg_ready,P,N,A,+,1 -11=.pu20,P,S,A,+,1 -12=.temp_zone_charge_enable,P,N,A,+,1 -13=.bt_remain_old,P,N,A,+,1 -14=.vreg_ctr,P,N,A,+,1 -15=.system_status,.,N,A,+,1 -16=.battery_manufacturer,P,N,A,+,1 -17=.bt_comp,.,N,A,+,1 -18=.per0,P,S,A,+,1 -19=.pu20,P,S,A,+,1 -20=.rtcc0,P,S,A,+,1 -21=.vol_data,P,N,A,+,1 -Line=22 +0=.p4.3,P,S,A,+,1 +1=.P2.4,P,S,A,+,1 +2=.bt_chg_ready,P,N,A,+,1 +3=.temp_zone_charge_enable,P,N,A,+,1 +4=.P5.1,P,S,A,+,1 +5=.vreg_ctr,P,N,A,+,1 +6=.P5.3,P,S,A,+,1 +7=.heikinka_h,P,N,A,+,1 +8=.system_status,.,N,A,+,1 +9=.battery_manufacturer,P,N,A,+,1 +10=.bt_comp,.,N,A,+,1 +11=.raw_adc_temperature,P,N,A,+,1 +12=.P1,B,S,A,+,1 +13=.bt_checked,P,N,A,+,1 +14=.TDR06,P,S,A,+,1 +15=.LED_dim_status,P,N,A,+,1 +Line=16 [Quick Watch] -0=p4.3,P,A,1 -1=work,P,A,1 -2=new_val,P,A,1 -3=vol_data,P,A,1 -4=hoge,P,A,1 -5=P4.2,P,A,1 -6=vreg_ctr[13],P,A,1 -7=vreg_ctr[11],P,A,1 -8=system_status,P,A,1 -9=hysteresis,P,A,1 -10=pre0,P,A,1 -11=per0,P,A,1 -12=per1,P,A,1 -13=rtcc0,P,A,1 -14=pu20,P,A,1 -15=iic_send_work,P,A,1 +0=temp16,P,A,1 +1=SW_pow_count,P,A,1 +2=bt_checked,P,A,1 +3=P1,B,A,1 +4=PM1,B,A,1 +5=bt_param_sent,P,A,1 +6=P5.3,P,A,1 +7=bt_chg_ready,P,A,1 +8=temp_zone_charge_enable,P,A,1 +9=heikinka_h,P,A,1 +10=P2.4,P,A,1 +11=P5.1,P,A,1 +12=raw_adc_temperature,P,A,1 +13=LED_dim_status,P,A,1 +14=LED_duty_pow_blu,P,A,1 +15=TDR06,P,A,1 [Software Break] Geometry=792, 551, 445, 260 Window=Normal Width=150 30 200 100 -Name0=Swb00001 -Address0=pm.c#_BT_get_left+0xfe +Name0=Swb00002 +Address0=pm.c#_BT_get_left+0x129 Window0=ASM Status0=ON -Name1=Swb00004 -Address1=pm.c#_BT_get_left+0x141 +Name1=Swb00005 +Address1=pm.c#_BT_get_left+0xd0 Window1=ASM Status1=ON -Name2=Swb00005 -Address2=pm.c#_tski_BT_temp_update+0x8a +Name2=Swb00007 +Address2=pm.c#_BT_get_left+0x10f Window2=ASM Status2=ON -Count=3 +Name3=Swb00001 +Address3=task_sys.c#_tsk_sys+0x222 +Window3=ASM +Status3=ON +Name4=Swb00003 +Address4=led.c#_led_pow_sleep+0x24 +Window4=ASM +Status4=ON +Name5=Swb00006 +Address5=pm.c#_tsk_batt+0x69 +Window5=ASM +Status5=ON +Count=6 [Reset] Debugger=ON Symbol=OFF diff --git a/trunk/yav_mcu_bsr.prj b/trunk/yav_mcu_bsr.prj index 081e26f..2f8d6a1 100644 --- a/trunk/yav_mcu_bsr.prj +++ b/trunk/yav_mcu_bsr.prj @@ -686,6 +686,74 @@ VfiFileBoot0= VfiFileBoot1=boot.vfi VF78K0Rchk=0 VF78K0Rvs= +[ToolSet] +ToolSetName=(変更)78K0R Software Package V1.10 +Tool1=CC78K0R|W2.10 +Tool2=RA78K0R|W1.31 +Tool3=ID78K0R-QB|V3.60 +[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 +[IncFile] +Include1=incs_loader.h +Include2=jhl_defs.h +Include3=config.h +Include4=user_define.h +Include5=bsr_system.h +Include6=renge\renge.h +Include7=renge\renge_defs.h +Include8=renge\renge_task_immediate.h +Include9=vreg_ctr.h +Include10=vreg_twl.h +Include11=loader.h +Include12=i2c_mcu.h +Include13=WDT.h +Include14=fsl_user.h +Include15=i2c_ctr.h +Include16=pm.h +Include17=rtc.h +Include18=reboot.h +Include19=incs.h +Include20=accero.h +Include21=pedometer.h +Include22=adc.h +Include23=led.h +Include24=batt_params.h +Include25=i2c_twl_defs.h +Include26=renge\renge_task_intval.h +Include27=i2c_twl.h +Include28=sw.h +Include29=self_flash.h +Include30=pool.h +Include31=pedo_lpf_coeff.h +Include32=..\..\..\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r\fsl.h +Include33=..\..\..\Program Files\NEC Electronics Tools\CC78K0R\W2.10\inc78k0r\math.h +Include34=voltable.h +Include35=magic.h +[BuildBefore-AfterCmd] +Before1=touch magic.c +After1=ruby nec_s_2_bsrbin2.rb bsr.hex [Options.LK78K0R 0] Version=100 O0=bsr_k0r.lmf @@ -785,7 +853,7 @@ P2=flash.map P3=a.map MI=0 GB=1 -GBValue=7EFBFF +GBValue=FEFBFF KM=1 KD=0 KP=0 @@ -978,71 +1046,3 @@ DefaultMode2=1 DefaultMode3=1 DefaultMode4=1 DefaultMode5=1 -[ToolSet] -ToolSetName=(変更)78K0R Software Package V1.10 -Tool1=CC78K0R|W2.10 -Tool2=RA78K0R|W1.31 -Tool3=ID78K0R-QB|V3.60 -[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 -[IncFile] -Include1=incs_loader.h -Include2=jhl_defs.h -Include3=config.h -Include4=user_define.h -Include5=bsr_system.h -Include6=renge\renge.h -Include7=renge\renge_defs.h -Include8=renge\renge_task_immediate.h -Include9=vreg_ctr.h -Include10=vreg_twl.h -Include11=loader.h -Include12=i2c_mcu.h -Include13=WDT.h -Include14=fsl_user.h -Include15=i2c_ctr.h -Include16=pm.h -Include17=rtc.h -Include18=reboot.h -Include19=incs.h -Include20=accero.h -Include21=pedometer.h -Include22=adc.h -Include23=led.h -Include24=batt_params.h -Include25=i2c_twl_defs.h -Include26=renge\renge_task_intval.h -Include27=i2c_twl.h -Include28=sw.h -Include29=self_flash.h -Include30=pool.h -Include31=pedo_lpf_coeff.h -Include32=..\..\..\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r\fsl.h -Include33=..\..\..\Program Files\NEC Electronics Tools\CC78K0R\W2.10\inc78k0r\math.h -Include34=voltable.h -Include35=magic.h -[BuildBefore-AfterCmd] -Before1=touch magic.c -After1=ruby nec_s_2_bsrbin2.rb bsr.hex diff --git a/trunk/yav_mcu_bsr.prk b/trunk/yav_mcu_bsr.prk index 649ce1f..36b73db 100644 --- a/trunk/yav_mcu_bsr.prk +++ b/trunk/yav_mcu_bsr.prk @@ -1,15 +1,21 @@ [ProjectManager] FrameMax=1 -FrameX=168 -FrameY=127 +FrameX=0 +FrameY=0 FrameCX=1299 FrameCY=1044 OpenFile1=ProjectWindow PrjPos=0,2,754,3,253 -OpenFile2=adc.c,0,330,330,1574,1087,18,267,18,0 -OpenFile3=OutputWindow +OpenFile2=config.h,0,294,66,1538,823,18,42,29,0 +OpenFile3=main.c,0,125,195,1104,832,35,73,34,0 +OpenFile4=task_sys.c,0,220,220,1464,977,0,137,31,0 +OpenFile5=self_flash.c,0,176,176,1144,801,8,348,13,0 +OpenFile6=task_misc.c,0,198,198,1166,823,48,91,48,0 +OpenFile7=pedo_alg_thre_det2.c,0,220,220,1188,845,0,58,0,0 +OpenFile8=pm.c,0,6,96,1250,853,26,208,0,0 +OpenFile9=led.c,0,242,242,1210,867,0,348,0,0 +OpenFile10=OutputWindow OutputPos=0,36,981,694,1556 -OpenFile4=config.h,0,308,308,1552,1065,0,3,0,0 ActivePRJ=yav_mcu_bsr.prj [ProjectWindow] ProjectWindowDispType=0 diff --git a/trunk/yav_mcu_bsr.sdb b/trunk/yav_mcu_bsr.sdb index 8904d07..b89f877 100644 --- a/trunk/yav_mcu_bsr.sdb +++ b/trunk/yav_mcu_bsr.sdb @@ -12,7 +12,7 @@ T=4c3198b9 8=reboot.h 9=magic.h [pm.c] -T=4c3318e4 +T=4c3c0c4e 1=incs.h 2=adc.h 3=led.h @@ -26,7 +26,7 @@ T=4c072cf1 1=config.h 2=incs.h [main.c] -T=4c32d86f +T=4c3c0229 1=incs_loader.h 2=WDT.h 3=rtc.h @@ -36,7 +36,7 @@ T=4c32d86f 7=adc.h 8=pool.h [magic.c] -T=4c331888 +T=4c3c2c86 1=config.h [WDT.c] T=4bf0d1e1 @@ -52,14 +52,14 @@ T=4c29c700 3=i2c_twl_defs.h 4=i2c_twl.h [led.c] -T=4c31a042 +T=4c3c31b3 1=incs.h 2=led.h [rtc.c] -T=4c0cd30b -1=incs.h +T=4c3c10bc +1=incs_loader.h [vreg_ctr.c] -T=4c319dfc +T=4c3afe1f 1=incs.h 2=vreg_ctr.h 3=rtc.h @@ -70,14 +70,14 @@ T=4c319dfc 8=..\..\..\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r\fsl.h 9=fsl_user.h [vreg_twl.c] -T=4c2c3fca +T=4c3af447 1=incs.h 2=jhl_defs.h 3=led.h 4=vreg_twl.h 5=vreg_ctr.h [adc.c] -T=4c32ed7a +T=4c3b0f6d 1=incs.h 2=adc.h 3=pm.h @@ -98,7 +98,7 @@ T=4c2aacdb 2=incs.h 3=..\..\..\Program Files\NEC Electronics Tools\CC78K0R\W2.10\inc78k0r\math.h [self_flash.c] -T=4c319f1f +T=4c356ee9 1=incs_loader.h 2=..\..\..\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r\fsl.h 3=fsl_user.h @@ -107,7 +107,7 @@ T=4c319f1f 6=magic.h 7=pm.h [sw.c] -T=4c2d5d86 +T=4c3ad20e 1=incs.h 2=i2c_twl.h 3=i2c_ctr.h @@ -121,7 +121,7 @@ T=4c2aacdb 2=renge\renge.h 3=pm.h [task_misc.c] -T=4c2aacdb +T=4c3aede4 1=incs.h 2=renge\renge.h 3=pm.h @@ -130,7 +130,7 @@ T=4c2aacdb 6=i2c_mcu.h 7=led.h [task_sys.c] -T=4c330ab7 +T=4c3c0229 1=incs.h 2=i2c_twl.h 3=i2c_ctr.h @@ -142,7 +142,7 @@ T=4c330ab7 9=adc.h 10=self_flash.h [pedo_alg_thre_det2.c] -T=4c2aacdb +T=4c36811e 1=incs.h 2=..\..\..\Program Files\NEC Electronics Tools\CC78K0R\W2.10\inc78k0r\math.h 3=accero.h @@ -175,11 +175,11 @@ T=4c119cde T=4c075832 1=config.h [config.h] -T=4c32adb6 +T=4c3ae216 [user_define.h] T=4c2856fa [bsr_system.h] -T=4c22c0cc +T=4c3ac965 [renge\renge.h] T=4c318e0f 1=renge\renge_defs.h @@ -190,7 +190,7 @@ T=4c073c5a T=4c284e89 1=renge\renge_defs.h [vreg_ctr.h] -T=4c2d8983 +T=4c3af447 1=config.h [vreg_twl.h] T=4c072cf1 @@ -205,13 +205,13 @@ T=4bf0d1e0 [i2c_ctr.h] T=4bf0d1e1 [pm.h] -T=4c32fa1a +T=4c3c0229 [rtc.h] T=4bf0d1e1 [reboot.h] T=4bf0d1e1 [incs.h] -T=4c318e3d +T=4c36dec8 1=jhl_defs.h 2=user_define.h 3=bsr_system.h @@ -225,7 +225,8 @@ T=4c318e3d 11=accero.h 12=pm.h 13=sw.h -14=WDT.h +14=adc.h +15=WDT.h [accero.h] T=4bf0d1e1 1=jhl_defs.h @@ -233,12 +234,12 @@ T=4bf0d1e1 [pedometer.h] T=4bfd1372 [adc.h] -T=4bf0d1e1 +T=4c3b0190 1=jhl_defs.h [led.h] -T=4c31d05a +T=4c3c1235 [batt_params.h] -T=4c2c4bd3 +T=4c36b4fc [i2c_twl_defs.h] T=4bf0d1e1 [renge\renge_task_intval.h] @@ -247,7 +248,7 @@ T=4c072cf1 [i2c_twl.h] T=4bf4e29e [sw.h] -T=4c070c1a +T=4c3ad191 1=config.h [self_flash.h] T=4bf0d1e0 @@ -263,4 +264,4 @@ T=45f12258 [voltable.h] T=4c31be66 [magic.h] -T=4c316840 +T=4c356d89