From 3da96fcad8edd3f2e4802a441be76e5ee18daaab Mon Sep 17 00:00:00 2001 From: N2232 Date: Tue, 6 Jul 2010 09:01:09 +0000 Subject: [PATCH] =?UTF-8?q?0.23=20Vol=E3=82=92TWL=E3=81=8B=E3=82=89?= =?UTF-8?q?=E3=82=82=E6=9B=B8=E3=81=91=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB?= =?UTF-8?q?=20=E3=80=80=E3=82=B9=E3=83=A9=E3=82=A4=E3=83=80=E3=81=A8?= =?UTF-8?q?=E3=81=AE=E5=BE=8C=E7=9D=80=E5=84=AA=E5=85=88=E3=81=AB=E3=81=AA?= =?UTF-8?q?=E3=82=8B=20Codec=E3=81=AE=E3=80=8C=E6=9B=B8=E3=81=84=E3=81=9FV?= =?UTF-8?q?ol=E3=81=A8=E9=81=95=E3=81=86=E5=80=A4=E3=81=AB=E3=82=BB?= =?UTF-8?q?=E3=83=83=E3=83=88=E3=81=95=E3=82=8C=E3=82=8B(MAX=3F)=E3=80=8D?= =?UTF-8?q?=E3=83=90=E3=82=B0=E3=83=AF=E3=83=BC=E3=82=AF=E3=82=A2=E3=83=A9?= =?UTF-8?q?=E3=82=A6=E3=83=B3=E3=83=89=E3=81=AE=E3=81=9F=E3=82=81=E3=80=81?= =?UTF-8?q?=E3=83=9D=E3=83=BC=E3=83=AA=E3=83=B3=E3=82=B0=E3=81=99=E3=82=8B?= =?UTF-8?q?=E3=82=88=E3=81=86=E3=81=AB=E5=86=8D=E5=BA=A6=E5=A4=89=E6=9B=B4?= =?UTF-8?q?=20=E3=80=80TWL=E3=81=8B=E3=82=89=E3=82=82=E6=9B=B8=E3=81=91?= =?UTF-8?q?=E3=82=8B=E3=81=AE=E3=81=A8=E4=BD=B5=E3=81=9B=E3=80=81=E3=81=9D?= =?UTF-8?q?=E3=81=AE=E3=81=A4=E3=82=82=E3=82=8A=E3=81=A7=E4=BD=9C=E3=81=A3?= =?UTF-8?q?=E3=81=A6=E3=81=84=E3=81=9F=E3=81=8B=E3=81=A3=E3=81=9F=E3=81=AE?= =?UTF-8?q?=E3=81=A7=E4=BF=AE=E6=AD=A3=E7=AE=87=E6=89=80=E3=81=8C=E5=A4=9A?= =?UTF-8?q?=E3=81=84=20=E3=82=B9=E3=83=A9=E3=82=A4=E3=83=80=E3=81=AE?= =?UTF-8?q?=E3=83=AC=E3=82=B8=E3=82=B9=E3=82=BF=E3=81=AE=E5=80=A4=E3=82=92?= =?UTF-8?q?=E8=AA=AD=E3=81=BF=E5=87=BA=E3=81=95=E3=82=8C=E3=82=8B=E3=81=AE?= =?UTF-8?q?=E3=81=A7=E3=82=B9=E3=83=A9=E3=82=A4=E3=83=80=E3=81=AE=E3=82=A2?= =?UTF-8?q?=E3=82=BD=E3=83=93=E3=82=92=E8=80=83=E3=81=88=E3=81=A6=E3=82=B9?= =?UTF-8?q?=E3=82=B1=E3=83=BC=E3=83=AA=E3=83=B3=E3=82=B0=E3=81=99=E3=82=8B?= =?UTF-8?q?=E3=82=88=E3=81=86=E5=A4=89=E6=9B=B4=20=E3=80=80=E3=83=86?= =?UTF-8?q?=E3=83=BC=E3=83=96=E3=83=AB=E5=BC=95=E3=81=8D=E3=81=AE=E3=83=86?= =?UTF-8?q?=E3=83=BC=E3=83=96=E3=83=AB=E3=82=92=E3=81=84=E3=81=98=E3=82=8B?= =?UTF-8?q?=E3=81=AE=E3=81=A7=E3=81=AF=E5=AF=BE=E5=BF=9C=E5=87=BA=E6=9D=A5?= =?UTF-8?q?=E3=81=AA=E3=81=84=20ADC=E3=81=AE=E3=83=95=E3=82=A3=E3=83=AB?= =?UTF-8?q?=E3=82=BF=E3=81=AE=E8=AA=A4=E3=82=8A=E3=80=82=E9=96=BE=E5=80=A4?= =?UTF-8?q?=E4=BB=98=E8=BF=91=E3=81=A7=E3=81=B5=E3=82=89=E3=81=B5=E3=82=89?= =?UTF-8?q?=E3=81=97=E3=81=A6=E3=81=97=E3=81=BE=E3=81=A3=E3=81=A6=E3=81=84?= =?UTF-8?q?=E3=81=9F=E3=80=82=E3=83=95=E3=82=A3=E3=83=AB=E3=82=BF=E3=81=AE?= =?UTF-8?q?=E6=84=8F=E5=91=B3=E3=81=AA=E3=81=97=20=E9=9B=BB=E6=B1=A0?= =?UTF-8?q?=E6=AE=8B=E9=87=8F=EF=BC=90=E6=99=82=E3=81=AE=E3=83=87=E3=83=95?= =?UTF-8?q?=E3=82=A9=E3=83=AB=E3=83=88=E3=83=91=E3=82=BF=E3=83=BC=E3=83=B3?= =?UTF-8?q?=E3=82=92=E8=A8=AD=E5=AE=9A=E3=80=82=20=E3=80=80=E3=81=BB?= =?UTF-8?q?=E3=81=BC=E3=81=99=E3=81=A3=E3=81=8B=E3=82=89=E3=81=8B=E3=82=93?= =?UTF-8?q?=E3=81=AA=E9=9B=BB=E6=B1=A0=E3=82=92=E3=82=BB=E3=83=83=E3=83=88?= =?UTF-8?q?=E3=81=95=E3=82=8C=E3=81=9F=E3=81=A8=E3=81=8D=E3=81=AA=E3=81=A9?= =?UTF-8?q?=E3=81=A7SoC=E3=81=8B=E3=82=89=E4=BD=95=E3=82=82=E6=9B=B8?= =?UTF-8?q?=E3=81=8B=E3=82=8C=E3=81=A6=E3=81=AA=E3=81=84=E7=8A=B6=E6=85=8B?= =?UTF-8?q?=E3=81=AE=E6=99=82=E3=80=81=E6=B6=88=E7=81=AF=E3=81=A7=E4=B8=8D?= =?UTF-8?q?=E4=BE=BF=E3=81=AA=E3=81=9F=E3=82=81=20=E9=9B=BB=E6=BA=90LED=20?= =?UTF-8?q?auto=E3=81=A7=E3=83=9B=E3=82=BF=E3=83=AB=E3=81=AB=E3=81=97?= =?UTF-8?q?=E3=81=AA=E3=81=84=E7=94=A8=E3=81=AB=E3=81=97=E3=81=9F=E3=80=82?= =?UTF-8?q?=20=E3=80=80=E3=83=9B=E3=82=BF=E3=83=AB=E6=B6=88=E3=81=9D?= =?UTF-8?q?=E3=81=86=E3=81=8B=E2=80=A6=20=E3=83=95=E3=82=A1=E3=83=BC?= =?UTF-8?q?=E3=83=A0=E3=81=8C=E5=A3=8A=E3=82=8C=E3=80=81=E3=83=90=E3=83=83?= =?UTF-8?q?=E3=82=AF=E3=82=A2=E3=83=83=E3=83=97=E3=81=8B=E3=82=89=E3=82=82?= =?UTF-8?q?=E5=BE=A9=E5=B8=B0=E3=81=A7=E3=81=8D=E3=81=AA=E3=81=84=E3=81=A8?= =?UTF-8?q?=E3=81=8D=E3=81=AB=E8=B5=A4LED=E3=82=92=20=E3=81=B4=E3=81=B4?= =?UTF-8?q?=E3=81=A3=E3=80=81=E3=81=B4=E3=81=B4=E3=81=A3=20=E3=81=A8?= =?UTF-8?q?=E7=82=B9=E6=BB=85=E3=81=95=E3=81=9B=E3=82=8B=E3=82=88=E3=81=86?= =?UTF-8?q?=E3=81=AB=E5=A4=89=E6=9B=B4=20=E3=80=80=E3=83=95=E3=82=A1?= =?UTF-8?q?=E3=83=BC=E3=83=A0=E3=83=90=E3=83=83=E3=82=AF=E3=82=A2=E3=83=83?= =?UTF-8?q?=E3=83=97=E5=BE=8C=E3=80=81=E6=96=B0=E3=83=95=E3=82=A1=E3=83=BC?= =?UTF-8?q?=E3=83=A0=E6=9B=B8=E3=81=8D=E8=BE=BC=E3=81=BF=E4=B8=AD=E3=81=AE?= =?UTF-8?q?=E3=81=82=E3=82=8B=E6=9C=9F=E9=96=93=E3=81=A7=E9=9B=BB=E6=BA=90?= =?UTF-8?q?=E3=82=92=E8=90=BD=E3=81=A8=E3=81=99=E3=81=A8=E3=83=90=E3=83=83?= =?UTF-8?q?=E3=82=AF=E3=82=A2=E3=83=83=E3=83=97=E3=81=8C=E6=B6=88=E3=81=88?= =?UTF-8?q?=E3=82=8B=3F=20=E3=80=80todo:=E3=83=87=E3=83=90=E3=83=83?= =?UTF-8?q?=E3=82=B0=E3=82=B3=E3=83=BC=E3=83=89=E3=81=8C=E6=AE=8B=E3=81=A3?= =?UTF-8?q?=E3=81=A6=E3=81=84=E3=82=8B=20MGIC=E3=81=AB=E3=83=90=E3=83=83?= =?UTF-8?q?=E3=83=86=E3=83=AA=E3=83=BC=E3=83=91=E3=83=A9=E3=83=A1=E3=83=BC?= =?UTF-8?q?=E3=82=BF=E3=82=92=E6=9B=B8=E3=81=8F=E3=82=BF=E3=82=A4=E3=83=9F?= =?UTF-8?q?=E3=83=B3=E3=82=B0=E3=82=92=E5=A4=89=E6=9B=B4=EF=BC=88=E3=83=91?= =?UTF-8?q?=E3=83=A9=E3=83=A1=E3=83=BC=E3=82=BF=E8=BB=A2=E9=80=81=EF=BD=9E?= =?UTF-8?q?=E3=81=AB=E6=99=82=E9=96=93=E3=81=8C=E6=8E=9B=E3=81=8B=E3=82=8B?= =?UTF-8?q?=E3=81=9F=E3=82=81=EF=BC=89=20=E3=80=80=EF=BC=91=EF=BC=89?= =?UTF-8?q?=E9=9B=BB=E6=B1=A0=E4=BA=A4=E6=8F=9B=E3=82=92=E6=A4=9C=E5=87=BA?= =?UTF-8?q?=E3=81=97=E3=81=9F=E3=81=A8=E3=81=8D=20=E3=80=80=EF=BC=92?= =?UTF-8?q?=EF=BC=89=E9=9B=BB=E6=BA=90=E3=82=92=E5=85=A5=E3=82=8C=E3=82=88?= =?UTF-8?q?=E3=81=86=E3=81=A8=E3=81=97=E3=81=9F=E3=81=A8=E3=81=8D=E3=81=AB?= =?UTF-8?q?=E4=B8=87=E3=81=8C=E4=B8=80=E9=9B=BB=E6=B1=A0=E3=81=8C=E3=81=99?= =?UTF-8?q?=E3=82=8A=E6=9B=BF=E3=82=8F=E3=81=A3=E3=81=A6=E3=81=9F=E3=81=A8?= =?UTF-8?q?=E3=81=8D=20=E9=9B=BB=E5=9C=A7=E3=81=A7=E9=9B=BB=E6=B1=A0?= =?UTF-8?q?=E6=AE=8B=E9=87=8F=E3=82=92=E3=82=AD=E3=83=A3=E3=83=83=E3=83=97?= =?UTF-8?q?=E3=81=99=E3=82=8B=20=E3=80=80=E5=88=86=E8=A7=A3=E8=83=BD20mV?= =?UTF-8?q?=E3=81=A7=E3=81=AF=E3=81=82=E3=81=BE=E3=82=8A=E3=82=88=E3=82=8D?= =?UTF-8?q?=E3=81=97=E3=81=84=E7=B5=90=E6=9E=9C=E3=81=8C=E5=BE=97=E3=82=89?= =?UTF-8?q?=E3=82=8C=E3=81=AA=E3=81=8B=E3=81=A3=E3=81=9F=E3=81=AE=E3=81=A7?= =?UTF-8?q?MGIC=E3=82=88=E3=82=8A=E4=B8=8B=E4=BD=8D=E3=83=90=E3=82=A4?= =?UTF-8?q?=E3=83=88=E3=82=82=E5=8F=96=E5=BE=97=E3=81=99=E3=82=8B=E3=82=88?= =?UTF-8?q?=E3=81=86=E3=81=AB=E5=A4=89=E6=9B=B4=20=E3=80=80=E6=AF=94?= =?UTF-8?q?=E8=BC=83=E9=83=A8=E3=82=92=E3=83=AA=E3=83=95=E3=82=A1=E3=82=AF?= =?UTF-8?q?=E3=82=BF=E3=83=AA=E3=83=B3=E3=82=B0=20wait=5Fms=E3=82=92?= =?UTF-8?q?=E9=81=95=E3=81=86=E3=83=A2=E3=82=B8=E3=83=A5=E3=83=BC=E3=83=AB?= =?UTF-8?q?=E3=81=AB=20=E3=80=80ROM=E4=B8=8A=E3=81=AEboot=E3=83=96?= =?UTF-8?q?=E3=83=AD=E3=83=83=E3=82=AF=E3=81=AB=E7=BD=AE=E3=81=8D=E3=81=9F?= =?UTF-8?q?=E3=81=8B=E3=81=A3=E3=81=9F=E3=81=9F=E3=82=81=20Vol=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E3=82=B3=E3=83=9E=E3=83=B3=E3=83=89=E3=80=80=E3=83=93?= =?UTF-8?q?=E3=83=83=E3=83=88=E3=81=AE=E8=87=AA=E5=8B=95=E3=82=AF=E3=83=AA?= =?UTF-8?q?=E3=82=A2=E3=82=92=E5=BF=98=E3=82=8C=E3=81=A6=E3=81=84=E3=81=9F?= =?UTF-8?q?=20=E3=83=90=E3=83=83=E3=83=86=E3=83=AA=E6=AE=8B=E9=87=8F?= =?UTF-8?q?=E3=83=91=E3=83=A9=E3=83=A1=E3=83=BC=E3=82=BF=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=20=E3=80=80=E3=83=93=E3=83=83=E3=83=88=E3=82=B7=E3=83=95?= =?UTF-8?q?=E3=83=88=E3=81=8C=E5=BF=85=E8=A6=81=E3=81=AB=E3=81=AA=E3=81=A3?= =?UTF-8?q?=E3=81=9F=E3=81=AE=E3=81=A7=E5=AF=BE=E5=BF=9C=E3=80=80=E6=AE=8B?= =?UTF-8?q?=E5=BF=B5=E3=81=AA=E3=82=B3=E3=83=BC=E3=83=89=E3=81=AB=20?= =?UTF-8?q?=E9=9B=BB=E6=BA=90LED=E8=B5=A4=E3=81=A8=E3=82=AB=E3=83=A1?= =?UTF-8?q?=E3=83=A9LED=E3=81=8C=E3=81=B2=E3=81=A3=E3=81=8F=E3=82=8A?= =?UTF-8?q?=E8=BF=94=E3=81=A3=E3=81=A6=E3=81=84=E3=81=9F=20VOL=E3=83=86?= =?UTF-8?q?=E3=83=BC=E3=83=96=E3=83=AB=E3=82=92-10db=E3=81=AB=E6=9B=B4?= =?UTF-8?q?=E6=96=B0?= 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@200 013db118-44a6-b54f-8bf7-843cb86687b1 --- trunk/WDT.h | 2 +- trunk/adc.c | 141 +++- trunk/batt_params.h | 62 +- trunk/bsr.hex | 1821 +++++++++++++++++++++-------------------- trunk/bsr.lmf | Bin 152872 -> 156696 bytes trunk/bsr_k0r.map | 739 +++++++++-------- trunk/bsr_mcu.dr | 2 +- trunk/config.h | 5 +- trunk/hoge.bin | Bin 16387 -> 16387 bytes trunk/incs.h | 1 + trunk/ini_VECT.c | 3 +- trunk/led.c | 17 +- trunk/led.h | 4 +- trunk/loader.c | 121 +-- trunk/loader.h | 7 + trunk/magic.c | 2 + trunk/main.c | 3 +- trunk/pm.c | 231 +++--- trunk/pm.h | 14 +- trunk/renge/renge.c | 20 - trunk/renge/renge.h | 2 - trunk/self_flash.c | 207 ++++- trunk/sw.c | 5 - trunk/task_sys.c | 10 +- trunk/voltable.h | 13 + trunk/vreg_ctr.c | 11 +- trunk/vreg_ctr.h | 5 +- trunk/vreg_twl.c | 11 +- trunk/yav_mcu_bsr.plg | 17 +- trunk/yav_mcu_bsr.pri | 105 +-- trunk/yav_mcu_bsr.prj | 651 +++++++-------- trunk/yav_mcu_bsr.prk | 10 +- trunk/yav_mcu_bsr.sdb | 83 +- 33 files changed, 2320 insertions(+), 2005 deletions(-) diff --git a/trunk/WDT.h b/trunk/WDT.h index b61970a..2e28e9d 100644 --- a/trunk/WDT.h +++ b/trunk/WDT.h @@ -14,7 +14,7 @@ #define WDT_Restart() WDTE = WDT_RESTART_MAGIC // 規定値以外を書くと例外でリセットがかかる -#define mcu_reset WDTE = 0xFF +#define mcu_wdt_reset WDTE = 0x0 #endif diff --git a/trunk/adc.c b/trunk/adc.c index f3496c2..fe96b7f 100644 --- a/trunk/adc.c +++ b/trunk/adc.c @@ -22,6 +22,9 @@ bit adc_updated; u8 adc_raw_vol; u8 adc_raw_dep; +u8 vol_written_ctr; + +bit vol_by_twl; typedef struct filter_work @@ -38,17 +41,16 @@ filter_work work_vr_3d = { u8 vol_data_ctr; +u8 vol_data_ctr_tmp; filter_work work_vr_vol = { - &vol_data_ctr + &vol_data_ctr_tmp }; -u8 vol_data; - - // ===================================================== // extern void nop8(); static void adc_filter( u8 new_val, filter_work* work ); +static u8 adc_scaling( u8 ); @@ -82,12 +84,41 @@ void tsk_adc( ) static u8 sndvol_codec; static u8 bt_temp_old; -#ifdef _DEBUG_PM_BOMB_VOL_ - if( system_status.pwr_state == ON ) +#if 0 +// debug { + static u16 loop; + static u8 dat_old; + static bit interval; +/* +// VOL書き頻度を半分にする + interval++; + if( !interval ) + { + return; + } +*/ + 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 + { + vol_written_ctr = slider_to_codec[ vol_data_ctr ]; + } + } renge_task_immed_add( tski_vol_update ); } +//*/ #endif + + renge_task_immed_add( tski_vol_update ); // T = 2ms polling if( task_interval-- != 0 ) { @@ -105,24 +136,29 @@ void tsk_adc( ) if( system_status.pwr_state == ON ) { // 3D ///////////////////////////////////////// - adc_filter( adc_raw_dep, &work_vr_3d ); + adc_filter( adc_scaling( adc_raw_dep ), &work_vr_3d ); // Volume ///////////////////////////////////// - if(( vreg_ctr[ VREG_C_VOL_DIGITAL ] & 0x80 ) != 0 ) - { - // レジスタから強制セット - adc_raw_vol = ( vreg_ctr[ VREG_C_VOL_DIGITAL ] * 4 ); - } - { static u8 vol_old; - adc_filter( adc_raw_vol, &work_vr_vol ); + 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_old = vol_data_ctr; - vol_data = vol_data_ctr; - renge_task_immed_add( tski_vol_update ); + 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後でいいでしょう... } } @@ -157,22 +193,28 @@ task_status_immed tski_vol_update() { u8 vol_scaled; u8 temp; + u8 i; - vol_scaled = ( vol_data / 4 ) & 0x3F; - // レジスタ更新 - vreg_twl[ REG_TWL_INT_ADRS_VOL ] = vol_data / ( 256 / 32 ); // ←adc値でよい - vreg_ctr[ VREG_C_SND_VOL ] = vol_scaled; // 64段 + // SPIでかくテスト todo +// return( ERR_FINISED ); - // codecに伝える - temp = slider_to_codec[ vol_scaled ]; - iic_mcu_write_a_byte( IIC_SLA_CODEC, CODEC_REG_VOL, temp ); - // ベリファイ - if( iic_mcu_read_a_byte( IIC_SLA_CODEC, CODEC_REG_VOL ) != temp ) + if( vol_by_twl ) { - iic_mcu_write_a_byte( IIC_SLA_CODEC, CODEC_REG_VOL, temp ); - NOP(); + temp = slider_to_codec[ vreg_twl[ REG_TWL_INT_ADRS_VOL ] * 2 ]; + } + else + { + temp = vol_written_ctr; } + // 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 ); + + // 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 ] ); @@ -338,6 +380,36 @@ u8 get_adc( u8 ch ) + +/* ======================================================== + VRの可動範囲を考えてスケーリング +======================================================== */ +#define ASOBI 10 +static u8 adc_scaling( u8 orig_val ) +{ + u16 temp; + + if( orig_val > ( 255 - ASOBI )) + { + return( 255 ); + } + + if( orig_val <= ASOBI ) + { + return( 0 ); + } + + orig_val -= ASOBI; + temp = (u16)( orig_val * 256 ) / ( 256 - ( 2 * ASOBI )); + + return( (u8)( temp & 0xFF ) ); +} + + + + + + /* ======================================================== 似非ヒステリシス V2 四捨五入的な動きします @@ -346,10 +418,7 @@ u8 get_adc( u8 ch ) static void adc_filter( u8 new_val, filter_work *work ) { u8 temp; - volatile u8 hoge; - -// if( abs( new_val - *( work -> value_used )) >= 2 ) if( abs( new_val - *( work -> value_used )) > 2 ) { // 大きく離れた @@ -371,16 +440,18 @@ static void adc_filter( u8 new_val, filter_work *work ) if( --( work -> kikan ) == 0 ) { - if( work -> diffs > (s8)( KIKAN * 0.8 ) ) + if( ( work -> diffs ) == KIKAN ) +// if( ( work -> diffs ) > (s8)( KIKAN * 0.8 ) ) { - *( work -> value_used ) += 1; + *( work -> value_used ) = *( work -> value_used ) + 1; } - else if( work -> diffs < (s8)( -1 * KIKAN * 0.8 ) ) + else if( ( work -> diffs ) == ( -1 * KIKAN ) ) +// else if( ( work -> diffs ) < (s8)( -1 * KIKAN * 0.8 ) ) { - *( work -> value_used ) -= 1; + *( work -> value_used ) = *( work -> value_used ) - 1; } - work -> kikan = KIKAN; work -> diffs = 0; + work -> kikan = KIKAN; } } } diff --git a/trunk/batt_params.h b/trunk/batt_params.h index cd67e7d..a00905b 100644 --- a/trunk/batt_params.h +++ b/trunk/batt_params.h @@ -7,43 +7,43 @@ const u8 BT_PARAM[][64] = { // ID = 0 GND マクセル { - 0xAD, 0x30, 0xAE, 0x70, 0xB0, 0x00, 0xB3, 0x00, - 0xB4, 0x70, 0xB5, 0xA0, 0xB7, 0x80, 0xBA, 0x00, + 0x9E, 0x00, 0xAB, 0xD0, 0xB8, 0x20, 0xB8, 0xC0, + 0xB9, 0x50, 0xB9, 0xE0, 0xBB, 0x60, 0xBE, 0x30, - 0xBB, 0x90, 0xBD, 0x00, 0xBE, 0x00, 0xBF, 0xF0, - 0xC3, 0x00, 0xC5, 0xC0, 0xC8, 0x00, 0xCA, 0xC0, + 0xBF, 0x20, 0xBF, 0xE0, 0xC0, 0x30, 0xC2, 0x20, + 0xC4, 0x50, 0xC9, 0x50, 0xCB, 0x00, 0xD0, 0xC0, - 0x04, 0x00, 0x12, 0x00, 0x0C, 0x10, 0x24, 0x00, - 0x10, 0xD0, 0x1B, 0xF0, 0x0A, 0xF0, 0x08, 0xE0, + 0x01, 0x40, 0x00, 0xA0, 0x5B, 0xC0, 0x6A, 0x80, + 0x34, 0x20, 0x10, 0x00, 0x32, 0x20, 0x54, 0x60, - 0x0C, 0xF0, 0x08, 0xC0, 0x08, 0xB0, 0x07, 0xF0, - 0x0B, 0x00, 0x05, 0xD0, 0x02, 0x00, 0x09, 0x00 + 0x03, 0x60, 0x5F, 0xC0, 0x1B, 0xC0, 0x15, 0x80, + 0x17, 0xA0, 0x02, 0x60, 0x15, 0xE0, 0x15, 0xE0, }, { // ID = 1 120 ohm (ダミーでマクセル) - 0xAD, 0x30, 0xAE, 0x70, 0xB0, 0x00, 0xB3, 0x00, - 0xB4, 0x70, 0xB5, 0xA0, 0xB7, 0x80, 0xBA, 0x00, + 0x9E, 0x00, 0xAB, 0xD0, 0xB8, 0x20, 0xB8, 0xC0, + 0xB9, 0x50, 0xB9, 0xE0, 0xBB, 0x60, 0xBE, 0x30, - 0xBB, 0x90, 0xBD, 0x00, 0xBE, 0x00, 0xBF, 0xF0, - 0xC3, 0x00, 0xC5, 0xC0, 0xC8, 0x00, 0xCA, 0xC0, + 0xBF, 0x20, 0xBF, 0xE0, 0xC0, 0x30, 0xC2, 0x20, + 0xC4, 0x50, 0xC9, 0x50, 0xCB, 0x00, 0xD0, 0xC0, - 0x04, 0x00, 0x12, 0x00, 0x0C, 0x10, 0x24, 0x00, - 0x10, 0xD0, 0x1B, 0xF0, 0x0A, 0xF0, 0x08, 0xE0, + 0x01, 0x40, 0x00, 0xA0, 0x5B, 0xC0, 0x6A, 0x80, + 0x34, 0x20, 0x10, 0x00, 0x32, 0x20, 0x54, 0x60, - 0x0C, 0xF0, 0x08, 0xC0, 0x08, 0xB0, 0x07, 0xF0, - 0x0B, 0x00, 0x05, 0xD0, 0x02, 0x00, 0x09, 0x00 + 0x03, 0x60, 0x5F, 0xC0, 0x1B, 0xC0, 0x15, 0x80, + 0x17, 0xA0, 0x02, 0x60, 0x15, 0xE0, 0x15, 0xE0, }, { // ID = 2 360 hom (ダミーでマクセル) - 0xAD, 0x30, 0xAE, 0x70, 0xB0, 0x00, 0xB3, 0x00, - 0xB4, 0x70, 0xB5, 0xA0, 0xB7, 0x80, 0xBA, 0x00, + 0x9E, 0x00, 0xAB, 0xD0, 0xB8, 0x20, 0xB8, 0xC0, + 0xB9, 0x50, 0xB9, 0xE0, 0xBB, 0x60, 0xBE, 0x30, - 0xBB, 0x90, 0xBD, 0x00, 0xBE, 0x00, 0xBF, 0xF0, - 0xC3, 0x00, 0xC5, 0xC0, 0xC8, 0x00, 0xCA, 0xC0, + 0xBF, 0x20, 0xBF, 0xE0, 0xC0, 0x30, 0xC2, 0x20, + 0xC4, 0x50, 0xC9, 0x50, 0xCB, 0x00, 0xD0, 0xC0, - 0x04, 0x00, 0x12, 0x00, 0x0C, 0x10, 0x24, 0x00, - 0x10, 0xD0, 0x1B, 0xF0, 0x0A, 0xF0, 0x08, 0xE0, + 0x01, 0x40, 0x00, 0xA0, 0x5B, 0xC0, 0x6A, 0x80, + 0x34, 0x20, 0x10, 0x00, 0x32, 0x20, 0x54, 0x60, - 0x0C, 0xF0, 0x08, 0xC0, 0x08, 0xB0, 0x07, 0xF0, - 0x0B, 0x00, 0x05, 0xD0, 0x02, 0x00, 0x09, 0x00 + 0x03, 0x60, 0x5F, 0xC0, 0x1B, 0xC0, 0x15, 0x80, + 0x17, 0xA0, 0x02, 0x60, 0x15, 0xE0, 0x15, 0xE0, }, { // ID = 3 750 ohm (ダミーでパナ) 0x8C, 0x30, 0x9C, 0x10, 0xA5, 0xE0, 0xB0, 0x40, @@ -115,9 +115,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 ) + { 85, -256* 1.15, -256* 4.35 }, // maxell + { 85, -256* 1.15, -256* 4.35 }, // dummy(M ) + { 85, -256* 1.15, -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 @@ -134,4 +134,12 @@ const u8 BT_VERIFY_L[] = { 0xFC, 0xFC, 0xFC, // maxell, dummy, dummy, 0x67, 0x67, 0x67, 0x67 // dummy, dummy, panaso, dummy }; + +const u8 BT_RCOMP_SCALE[] = { + 2, 2, 2, // maxell, dummy, dummy, + 1, 1, 1, 1 // dummy, dummy, panaso, dummy +}; + + + #endif diff --git a/trunk/bsr.hex b/trunk/bsr.hex index b9c1e42..ce6f1fb 100644 --- a/trunk/bsr.hex +++ b/trunk/bsr.hex @@ -1,253 +1,259 @@ -:02000000C8072F +:02000000B00C42 :02000200FFFFFE -:040010008A48904842 -:02001C00504A48 -:02002400BC4AD4 -:02002A00294B60 -:08003400394CF64B344C744DBD -:02004A009248DA -:02005A00CD488F -:02006200F84C58 +:04001000B448BA48EE +:02001C007A4A1E +:02002400E64AAA +:02002A00534B36 +:08003400634C204C5E4C954D1D +:02004A00BC48B0 +:02005A00F74865 +:02006200164D39 :0400C0007EFBFF853F :0A00C400FFFFFFFFFFFFFFFFFFFF3C :0A00CE00FFFFFFFFFFFFFFFFFFFF32 -:1000D800C72004FBF8FFCEABACC736F00071F4C6FE -:1000E800DE0671301CF9EF358EA89C038C035C90FA -:1000F800D1DD118C035C10D161E87110CEFB713039 -:100108001CF9EF16CC0200CC0100615902615901BB -:100118008C01D1DFF88C02D1DFF0FD8D01CC02001B -:10012800CC03008C034C09DE2B8C03318E04F60FB4 -:10013800C1317B9EFDC41189728C03318E04F64F48 -:1001480014896142DF03F6EF01E6600E029C02614A -:100158005903EFCF40F64FFF61F86159028C02D185 -:1001680061E8FDBB06FD6302EDDE001004C6D77131 -:100178007BFACEA010CEA180E5F300CEA408F5AAA4 -:10018800FFF5A9FFD78F1CF931350ACD0003CD0340 -:1001980007F40EEF07F400CD0306F40ECF1105FCAB -:1001A800F51005CF120511CE20FFCE23F0CE2EFC80 -:1001B800CD01C0F402CD0408F405F406CD0740F4DF -:1001C8000CF40FF521FFCE22E9CE24F3CE25F2CE92 -:1001D80026FCCE275FCE2CFFCE2FFFF53000F53161 -:1001E80000F53300F53400CF350002CF370019F59C -:1001F8003C00F53E00CF530006F55700F6BEE0BEC2 -:10020800E2BED0CBE4FFFFCBE6FFFFCBD4FFFFCEAF -:100218003831CE3970CF38050AF53905F537FF7111 -:1002280008F20090BFB401F5A5FFF5A6FF7158F0DC -:1002380000F530FF7128F0005087BF1801BF1A0180 -:10024800BF1C01BF1E017148F000F53002710801A2 -:1002580005F55005F5BCFFF5BDFFD7FDDC31FD3FC9 -:100268003AFDFA04717AFAFD1A28F51AF98F1CF981 -:100278003135135003C15084FDF102C0625C01D1D5 -:1002880061E8CF1AF902FDBC32FDA802FD414671B2 -:100298007221712BE7CEABACFD423A61EDEFF6D798 -:1002A80031020403F6EF01E660341CF9718C8971A0 -:1002B800899931120403F6EF01E660341CF9718C58 -:1002C80089719999D7D7C7F616FDFA04717BFA3167 -:1002D800422005714220EF0B717AFAA7F647DFEC4E -:1002E800E2EF04717AFAF2C6D7C7C1C1FBF8FF176B -:1002F800A1C1E0C18C0A70C18C0270FD1B031006FD -:10030800D2DF05F53FFBEF04CF3FFB028C017210F3 -:1003180004C6D7C7C1FBF8FFFDCE02D2DD03E2EF6A -:10032800618B70FD4D04D2DD077143205202EF52FC -:100338008C0870FD6204FDAE048B6C0170FD6204D4 -:10034800300400BF2401301740BF1C01300400BF37 -:1003580022018C0A91DF04F6BF2A01710BE2CE4418 -:10036800FF3182E202EFFAAC0C148E449961790CE9 -:1003780061690A8C0AD1DFDAFDD704710BE2714397 -:1003880020F2C0C6D7C7C1FBF8FFFDCE02D2DD03FD -:10039800E2EF37710AE68B70FD4D04D2DD07714339 -:1003A800205202EF258C0870FD62048C0A70FD62F1 -:1003B80004FDD7048B4CA4DF0D8C084C13DF078C8D -:1003C8000A4C2C61D800714320F2C0C6D7C7C1FBC4 -:1003D800F8FFFDCE02D2DD03E2EF67710AE6710B8A -:1003E800E28B70FD4D04D2DD077143205202EF52BB -:1003F800710BE231322039C73438FBAC0C16520489 -:100408008B99A5A792DFF9C63184BD02EFFA717AFC -:10041800BDCEB144CBB438FB8C0A318EBEB8CEBB4E -:1004280048714BE1714BE5710ABD8C089E44EF1190 -:10043800710BE68C089E448C0A9F3EFBAC0CBF3CBB -:10044800FBF2C0C6D7C716FD860417FD6204D2DDCD -:1004580006FDD704E2EF01F2C6D7C716710AE671A6 -:100468000BE2669E443182E20300EFF9F642040192 -:10047800DD09AF0401BF0C01E2EF01F2C6D7AF28D6 -:1004880001085CFB08BF2801FDCD02AF28015CFB19 -:10049800BF2801300400BF2A01301780BF1C01307B -:1004A8000400BF2201D7AF2401086C0408BF24014F -:1004B800AF28016C0F086C0B08BF2801FDCD02AFF7 -:1004C8002A01085CFB08BF2A01FDCD02ED86043035 -:1004D8000400BF2401F6BF2A01300B0BBF2801FD21 -:1004E800CD02300B0FBF2801FDCD02300F0FBF2802 -:1004F80001D731542001D7714220710BBD00007122 -:100508007BBD713A25713A236A0E03713205713B3E -:1005180025713203713B23500AFD083C7120F0001D -:10052800FDCD02F6BF26015024BF1401CB440014B0 -:10053800300F0FBF2801713320710BE2710AE6FDFD -:100548008604CE44FF3182E202EFFAFDD704AF04FD -:1005580001BF0C01714320715220D731442002EFB2 -:10056800FAFDAE04713A25713A235A0EFC7133052F -:10057800713B25713303713B237128F000715320BF -:10058800D7C72006FBF8FFFDA6075014C15008FD89 -:10059800EA06C0CC05048C054C14DE0C8C05318EA3 -:1005A800FD520B615905EFEECC05048C054C146126 -:1005B800C8ED6A068C05318EFD520BCC04008C0404 -:1005C8004C04DE79C73641057184C6DC703020F9E9 -:1005D800BC02F6BB31B2D10EC73641057184C6DC08 -:1005E80005CEABACEFEE713BD1AC02148F40059950 -:1005F80071505005617902617900F0E1614900DDCF -:1006080009C73641057184C6DECA5040C18C053120 -:100618008E31AD128C04318E318D03BDD831FFBDC2 -:10062800DADADAADD8FD1E0EC0D2DD0C5008C150A2 -:1006380014FDEA06C0FDDB0C615904EF818C05311D -:100648008EFD560BD2DD0C5008C15014FDEA06C0D1 -:10065800FDDB0CC73641057184C6DC06615905ED22 -:10066800B30571605005CC0200CC03008C034C0923 -:10067800DE248C03318E1249F61F728C03318E04EE -:10068800F64F14896142DF03F6EF01E6600E029C23 -:1006980002615903EFD68C02D1DF08FDDC0CFDEEB8 -:1006A8000DEF0C5008C15013FDEA06C0FDDB0C101D -:1006B80006C6D7FDA6075008C15014FDEA06C0FDBE -:1006C800DC0CEDEE0D3184BD02EFFA717BBDCBE49D -:1006D800FFFFCBE6FFFFCBD4FFFF717ABED7717B5C -:1006E800BED7C7C1200AFBF8FF8C0A318E31ADC1D5 -:1006F800317B9DD4C0BC048DD49C068C129C098C83 -:1007080012318E040C00128C09318EBDD813FDD124 -:100718000961C8EDA107CEABAC8C09318EFD4E0B3B -:10072800D2DD098C09318EFD520BEFEDCC08008C1F -:10073800084C04DE54F6BC023020F9BBAC04148C1F -:10074800069EFD118972AB146299AC04A1BC0461C8 -:100758007900617902F0E1614902DFE05040C18C23 -:1007680009318E31AD128C08318E318D03BDD831EF -:10077800FFBDDADADAADD8FD1E0EC0D2DD06FDE621 -:1007880006E2EF16615908EFA68C09318EFD560B6B -:10079800D2DFF6615909ED0707F2100CC6D7717B55 -:1007A8009D717BFAFDCD063020F9FD010CFD8C0B07 -:1007B800F2D7FDA607FDEE0DFDDB0CFDE606F2D730 -:1007C80061CF5100718C7109FECBF800FEFC7701F6 -:1007D80000F6BF00F953C0F693935820FEDFF941A5 -:1007E80000367A4D34FAFCEF05118B99A7A517440A -:1007F800B64DDFF53602F930FAFCEF04CC0000A75D -:1008080047DFF9410036E8203436FDEF05118B99B2 -:10081800A7A51744E820DFF53636FD3036FDEF048E -:10082800CC0000A747DFF9FCD80000EFFE61DD71BE -:100838007BFABEF0ADD8BEF200AEF661CDD7C3618B -:10084800DD717BFABEF0ADD8BEF200DBF6FFADDCA1 -:10085800BEF000AEF6BDD8AEF40312ADDABEF200BB -:10086800AEF661CD03BDDAC2D7C3F33174D90883BC -:10087800C1F626D8BDD8C031750683C312F623C287 -:10088800FD930893DF0312F623C2D7440000DD2648 -:1008980061DD717BFACFE80080BEF6F6BEF4BEF2E9 -:1008A800ADD8BEF0CFE800818FE8003103FAAEF092 -:1008B800F5E80061CDD7B1D7C3F33174D90883C146 -:1008C800F626D8BDD8C0317505C312F623C2FDE19E -:1008D8000893DF0312F623C2D7440000DD2761DD49 -:1008E800717BFACFE80080BEF6F6BEF4BEF2ADD852 -:1008F800BEF0CFE800818FE8003103FAAFE000F5E1 -:10090800E80061CDD7ADD8D7C3F33174DB0F83C10D -:10091800F626D8BDD861317026DABDDAC031750D3A -:1009280083C312F626DCBDDC61317023C2FD4909A0 -:1009380093DF0CF626D8BDD861317026DABDDAC24D -:10094800D7C161686BDC6BDDC0DD2F61DD717BFABF -:10095800CFE80080BEF4ADDCBEF6ADD8BEF0ADDAAF -:10096800BEF2CFE800818FE8003103FAAEF0BDD8BF -:10097800AEF2BDDAF5E80061CDD7F6BDD8BDDAD75D -:1009880006DABDDAADDC06D8BDD861D8A6DAD7D18B -:10099800DD17C1C3DAD89DD8ADDA311C61EEB4D801 -:1009A800DFF8BDDA13BDD8C2C0D7D1DD1BC1C3DAA9 -:1009B800DA9DDAADD8311E33311E3371F9B4DADF7E -:1009C800F4BDD813BDDAC2C0D746D8DD0771FF71B0 -:1009D80077D971C0D75BDB9DDB605BDA9DDAADDC74 -:1009E8005BD9085BD808BDD8D7C3C7F3728EFDC1E1 -:1009F80062314C41003600201161A072C09EFD6238 -:100A0800C6C2D7C3C7F3728EFDC1625C0F0C000F5C -:100A1800FE00314C4100360A201161800FFE007340 -:100A2800C09EFD63C6C2D7DF1D06DC44807FDF168B -:100A38007152DEEF32DF0F06D844807FDF08315471 -:100A4800DE3C3172DE3CC9DE0504FDA20AEF46C574 -:100A580014ADDEC1657BDB5C809DDEADDA71FB35F4 -:100A680071FB44807FDEC03544807FDEC86BD96B64 -:100A7800D86BDD6BDC0561C8DD1BADDA71FB317449 -:100A8800DE077174DBF181EF0C45ADD861F846DC07 -:100A980061E87177DBC0BDDEC4D78EFC708EFDC106 -:100AA800C5C3ADDE315E041A20320000C3C1D8DEF2 -:100AB800F1C1AEF8FCCC0A00C0C0C0C2C4C09EFDE3 -:100AC800609EFCD71489728A049EFDAA02141189BB -:100AD8004C40DD0E624C0430020061C8300100BF9A -:100AE80000F9D7C5C3C1ADDADAD831750914F623D0 -:100AF80012F661D8B125ED0A0BC5C3C1ADDADAD853 -:100B0800F4DB0361C8DD3B23559E31730A9501313F -:100B18001C61D8A13175F6618A4C80618ADC11DFCD -:100B28000633718C33DE0983DF0604010061D88542 -:100B38007174DB3561FB9DDB6571F99DDA63706467 -:060B4800BDD8C0C2C4D7F5 -:100B4E005208EF065203EF025206FEE600FE1B00AD -:100B5E00DC16089F03088F0408089F040862FE2411 -:100B6E0000089F0408EEBF00EEBA00C1C514410E86 -:100B7E0011D9D0FF118FD1FF312E45C4C0D7F2311C -:100B8E00A2C401E2D79DE261DD4C09DF12717BFA4E -:100B9E00C18F06089F45FDC0CF060800EE27003125 -:100BAE00F2FA04CF0608004C00DF05D50008DD166A -:100BBE0061DD717BFAD50608DD0ACDE31F61CD61DB -:100BCE00CDEE160061CDFED40061FFFE9A00FCF85A -:100BDE00FF0EFEB20061CDFED5004C09DF0EC18FB7 -:100BEE0006086F45FD9F0608C0EE0400CF060800FC -:100BFE00F8E3D75200EF025202FE3700CF44FD0059 -:100C0E00CF060800BF0408C716629F0008410011F6 -:100C1E008F4E239B4100118F4F239F0108C6510019 -:100C2E00FE62FFEF025205CF060800C1510CFE0A0C -:100C3E0000C0D7C1511DFE0200C0D761DD717BFA25 -:100C4E0070CEC0A59EC47CFF9EC4609EC461CDD7ED -:100C5E0061DD717BFAC18EC45C1BFED6FFCF060828 -:100C6E0001FED7FFC061CDD731F2FA1AC1AEE4BF93 -:100C7E0036FDAEE6BF38FDAED4BF3AFD30FFFFBE47 -:100C8E00E4BEE6BED4C0D731F2FA11C1AF36FDBE16 -:100C9E00E4AF38FDBEE6AF3AFDBED4C0D7C1BF3C0F -:100CAE00FD13BF3EFD15BF40FD17BF42FDC0D7AFC0 -:100CBE003CFDDB3EFDEB40FDFB42FDD7534B30527E -:100CCE005430324E323030475631323000FFC15040 -:100CDE00FEFEAB0061DD717BFACF060800FE0A0056 -:100CEE00FEA4FF61CDF8E3EECF00C7FB0408BF36CC -:100CFE00FD8FC0009C05C5C337040600BF38FD3507 -:100D0E0036400D300000522BFE6600C2C4C630EED7 -:100D1E000CB800300000B8022004AF38FDB8003027 -:100D2E000F00B802AF36FD61FF520AFE3AFFECF833 -:100D3E00FF0E717BFAC1C7FB04088C05C65C80FEF2 -:100D4E000200C0D761DD717BFA70CFC0FFA59FC0D6 -:100D5E00007CFF9FC000609FC00061CDD7618BFEFD -:100D6E00E2FF717BBE410011FB000017CEFC00615B -:100D7E00CB089EFDF31161C999A58392DFF7D7FECB -:100D8E00B1FED544FDDF23C1CF0308035109FEF4A4 -:100D9E00FDC0D2DF37FE3800A20408CF030807518A -:100DAE0009FEE1FDD2B20408DF22C7FB040831833D -:100DBE0002C6D7C6510AFECCFD624C1FDF06CF44D9 -:100DCE00FD01EF04CF44FD00C0EE5BFEC0EE55FE0C -:100DDE00C7C1FB04088B31196C0161589BC0C6D783 -:100DEE00717BFAFE4DFEAF0408040600C1143652A4 -:100DFE000D300000522DF3FE77FF8FC000FE2BFE4C -:100E0E0061CF5C807C8073C0041900CEFC0F61CB77 -:100E1E00C55404EF03C55417FE18FEC7360008BBB1 -:100E2E00629C0288089C03D1DD334C41DE2F70F1A9 -:100E3E00312DB161090033081C000851FF612A41B0 -:100E4E000E118FD0FF613B118FD1FF6138DC0E8BFD -:100E5E005C03DF0964C6C4FE2BFDEECAFDC6C4EEFC -:020E6E00C3FDC2 -:0A0FF60031333A34333A3230000050 +:1000D800C7C1FBF8FFCEABACC736F00071F4C6DC85 +:1000E80015CC0100CC00006159016159008BD1DFAA +:1000F800F98C01D1DFF1CC0000CC01008C014C0956 +:10010800DE468C01318E04F60FC1317B9EFDC41191 +:1001180089728C01318E04F64F14896142DF03F62F +:10012800EF01E6600D9B8C01318E12490021728C23 +:1001380001318E04F64F14896142DF03F6EF01E6C0 +:10014800600D9B615901EFB440F64FFF61F86159AA +:10015800008BD1DD06FDBE01FDF606CEABACC73681 +:10016800F00071F4C6DE0671301CF9EF2A8EA89CE7 +:10017800018C015C90D1DD118C015C10D161E871BA +:1001880010CEFB71301CF9EF0B8C015C01D161E8DA +:100198007120CEFBFDBE01FDB802EDDD00C0C6D763 +:1001A800717BFACEA010CEA180E5F300CEA408F5AD +:1001B800AAFFF5A9FFD78F1CF931350ACD0003CD69 +:1001C8000307F40EEF07F400CD0306F40ECF110574 +:1001D800FCF51005CF120511CE20FFCE23F0CE2E50 +:1001E800FCCD01C0F402CD0408F405F406CD0740A7 +:1001F800F40CF40FF521FFCE22E9CE24F3CE25F23C +:10020800CE26FCCE275FCE2CFFCE2FFFF53000F593 +:100218003100F53300F53400CF350002CF3700192F +:10022800F53C00F53E00CF530006F55700F6BEE05A +:10023800BEE2BED0CBE4FFFFCBE6FFFFCBD4FFFF8F +:10024800CE3831CE3970CF38050AF53905F537FF84 +:100258007108F20090BFB401F5A5FFF5A6FF71582B +:10026800F000F530FF7128F0005087BF1801BF1A61 +:1002780001BF1C01BF1E017148F000F53002710872 +:100288000105F55005F5BCFFF5BDFFD7C7C1C1FB9A +:10029800F8FFCEABAC8C02D1DD12616902305C0391 +:1002A800BBF6614900DDEE618900EFF51004C6D7A1 +:1002B800FDDF31FDA53AFD4105717AFAFD1628F5F5 +:1002C8001AF98F1CF93135175003C15084FD4A03C0 +:1002D800C0625C01D161E8CF1AF902CFD7FB64FD97 +:1002E800BF32FD0103FD6B46710222712BE7CEABD5 +:1002F800ACFDA83A61EDEFF6D731020403F6EF0141 +:10030800E660341CF9718C8971899931120403F6FD +:10031800EF01E660341CF9718C89719999D7D7C7B8 +:10032800F616FD4105717BFA31422005714220EF36 +:100338000B717AFAA7F647DFECE2EF04717AFAF26A +:10034800C6D7C7C1C1FBF8FF17A1C1E0C18C0A70AD +:10035800C18C0270FD74031006D2DF05F53FFBEF78 +:1003680004CF3FFB028C01721004C6D7C7C1FBF84B +:10037800FFFD2703D2DD03E2EF618B70FD9404D209 +:10038800DD077143205202EF528C0870FDA904FD6D +:10039800F5048B6C0170FDA904300400BF24013002 +:1003A8001740BF1C01300400BF22018C0A91DF04F2 +:1003B800F6BF2A01710BE2CE44FF3182E202EFFA66 +:1003C800AC0C148E449961790C61690A8C0AD1DFEE +:1003D800DAFD1E05710BE2714320F2C0C6D7C7C112 +:1003E800FBF8FFFD2703D2DD03E2EF25710AE68B58 +:1003F80070FD9404D2DD077143205202EF138C087C +:1004080070FDA9048C0A70FDA904FD1E0571432026 +:10041800F2C0C6D7C7C1FBF8FFFD2703D2DD03E250 +:10042800EF67710AE6710BE28B70FD9404D2DD0769 +:100438007143205202EF52710BE231322039C73436 +:1004480038FBAC0C1652048B99A5A792DFF9C6317C +:1004580084BD02EFFA717ABDCEB144CBB438FB8CBF +:100468000A318EBEB8CEBB48714BE1714BE5710ABB +:10047800BD8C089E44EF11710BE68C089E448C0AD3 +:100488009F3EFBAC0CBF3CFBF2C0C6D7C716FDCDE8 +:100498000417FDA904D2DD06FD1E05E2EF01F2C630 +:1004A800D7C716710AE6710BE2669E443182E203F1 +:1004B80000EFF9F6420401DD09AF0401BF0C01E2C7 +:1004C800EF01F2C6D7AF2801085CFB08BF2801FD81 +:1004D8002603AF28015CFBBF2801300400BF2A01B6 +:1004E800301780BF1C01300400BF2201D7AF2401A0 +:1004F800086C0408BF2401AF28016C0F086C0B08B6 +:10050800BF2801FD2603AF2A01085CFB08BF2A01AA +:10051800FD2603EDCD04300400BF2401F6BF2A01F7 +:10052800300B0BBF2801FD2603300B0FBF2801FD40 +:100538002603300F0FBF2801D731542001D771424D +:1005480020710BBD0000717BBD713A25713A236A99 +:100558000E03713205713B25713203713B23500A3A +:10056800FD94027120F000FD2603F6BF26015024F9 +:10057800BF1401CB440014300F0FBF280171332082 +:10058800710BE2710AE6FDCD04CE44FF3182E2022E +:10059800EFFAFD1E05AF0401BF0C01714320715233 +:1005A80020D731442002EFFAFDF504713A25713A5B +:1005B800235A0EFC713305713B25713303713B23BC +:1005C8007128F000715320D7C72006FBF8FFFD2CD7 +:1005D800095014C15008FD4A08C0CC05048C054CCC +:1005E80014DE0C8C05318EFD9209615905EFEECCB5 +:1005F80005048C054C1461C8EDA506CC04008C04D8 +:100608004C04DE6FC73641057184C6DC663020F9BC +:10061800BC02F6BB31B2D10EC73641057184C6DCC7 +:1006280005CEABACEFEE713BD1AC02148F4005990F +:1006380071505005617902617900F0E1614900DD8E +:1006480009C73641057184C6DECA5040C18C0531E0 +:100658008E31AD128C04318E318D03BDD831FFBD82 +:10066800DADADAADD8FD5E0CC0D261E8EFFE615986 +:1006780004EF8B715201711B227112028C05318EAD +:10068800FD9609D261E8EFFE711302715301C73676 +:1006980041057184C6DC06615905EDFA05716050A3 +:1006A80005CC0200CC03008C034C09DE248C0331FA +:1006B8008E1249F61F728C03318E04F64F1489612D +:1006C80042DF03F6EF01E6600E029C02615903EF78 +:1006D800D68C02D1DF08FD1C0BFD2E0CEF0C500848 +:1006E800C15013FD4A08C0FD1B0B1006C6D7C72012 +:1006F80004FBF8FF715B21CC0100F6BC02AC02449C +:100708000900DE3EAC0204F61F144100118972ACE8 +:10071800020C5114896142DF03F6EF01E6600E0115 +:100728009C01AC021249005172AC0204F67F148994 +:100738006142DF03F6EF01E6600E019C0161790278 +:10074800EFBB40F67FFF61F86159018C01D161F878 +:10075800ED0008CC0100717AFAFD410571130071B2 +:100768001B20710303710205E0C15003C15084FDD1 +:10077800E60310045013FD9402500FC1E0C15084E9 +:10078800FDE6031004CEABAC6159018C0191DD0686 +:100798008C014C03DF03E6EF01F66061FB71510148 +:1007A8008C014C0861F8CC010031320705A05EFCD1 +:1007B800EF03F55EFC405EFC11DC11F55EFCF0C158 +:1007C8005003C15084FDE6031004EF12E6BC02F6A4 +:1007D800614902DDB000000000617902EFF1CE3717 +:1007E80008CBE4FFFFCBE6FFF7CED4FFCF370008F6 +:1007F800F5120561FDF5ABFFFD2C09D2DD04E0FD26 +:100808004F095008C15014FD4A08C0D2DD055002F6 +:10081800FD4F09FD1C0BD2DD055003FD4F09FD2ED0 +:100828000C1004C6D73184BD02EFFA717BBDCBE44E +:10083800FFFFCBE6FFFFCBD4FFFF717ABED7717BFA +:10084800BED7C7C1200AFBF8FF8C0A318E31ADC173 +:10085800317B9DD4C0BC048DD49C06E0FD71098C0D +:10086800129C098C12318E040C00128C09318EBD39 +:10087800D813FDED0E61C8ED27095002FD7109CEB0 +:10088800ABAC8C09318EFD8E09D2DD0E5003FD71A3 +:10089800098C09318EFD9209EFE85004FD7109CCED +:1008A80008008C084C04DE5BCEABACF6BC023020F2 +:1008B800F9BBAC04148C069EFD118972AB146299C5 +:1008C800AC04A1BC04617900617902F0E1614902DC +:1008D800DFE05040C18C09318E31AD128C08318E69 +:1008E800318D03BDD831FFBDDADADAADD8FD5E0C43 +:1008F800C0D2DD0AFD46085005FD7109EFFE6159B9 +:1009080008EF9F5006FD71098C09318EFD9609D2BA +:10091800DD075007FD7109EFFE615909ED6B08F21B +:10092800100CC6D7C7717B9D717BFAFD2D0830204E +:10093800F9FD410AFDCC09C6D7FD2C09FD2E0CFD99 +:100948001B0BFD4608F2D7C716CEABAC7152015748 +:100958000067614EDE0C711B22711202711302874F +:10096800EFEF715301EFE2C6D7C716711B22711260 +:1009780002570067614EDE0971520171530187EF1A +:06098800F2711302C6D754 +:10098E005208EF065203EF025206FEE600FE1B006F +:10099E00DC16089F03088F0408089F040862FE24D3 +:1009AE0000089F0408EEBF00EEBA00C1C514410E48 +:1009BE0011D9D0FF118FD1FF312E45C4C0D7F231DE +:1009CE00A2C401E2D79DE261DD4C09DF12717BFA10 +:1009DE00C18F06089F49FDC0CF060800EE270031E3 +:1009EE00F2FA04CF0608004C00DF05D50008DD162C +:1009FE0061DD717BFAD50608DD0ACDE31F61CD619D +:100A0E00CDEE160061CDFED40061FFFE9A00FCF81B +:100A1E00FF0EFEB20061CDFED5004C09DF0EC18F78 +:100A2E0006086F49FD9F0608C0EE0400CF060800B9 +:100A3E00F8E3D75200EF025202FE3700CF48FD0016 +:100A4E00CF060800BF0408C716629F0008410011B8 +:100A5E008F4E239B4100118F4F239F0108C65100DB +:100A6E00FE62FFEF025205CF060800C1510CFE0ACE +:100A7E0000C0D7C1511DFE0200C0D761DD717BFAE7 +:100A8E0070CEC0A59EC47CFF9EC4609EC461CDD7AF +:100A9E0061DD717BFAC18EC45C1BFED6FFCF0608EA +:100AAE0001FED7FFC061CDD731F2FA1AC1AEE4BF55 +:100ABE003AFDAEE6BF3CFDAED4BF3EFD30FFFFBEFD +:100ACE00E4BEE6BED4C0D731F2FA11C1AF3AFDBED4 +:100ADE00E4AF3CFDBEE6AF3EFDBED4C0D7C1BF40C5 +:100AEE00FD13BF42FD15BF44FD17BF46FDC0D7AF76 +:100AFE0040FDDB42FDEB44FDFB46FDD7534B305230 +:100B0E005430324E323030475631323000FFC15001 +:100B1E00FEFEAB0061DD717BFACF060800FE0A0017 +:100B2E00FEA4FF61CDF8E3EECF00C7FB0408BF3A89 +:100B3E00FD8FC0009C05C5C337040600BF3CFD35C4 +:100B4E0036800B300000522BFE6600C2C4C6302E1B +:100B5E000BB800300000B8022004AF3CFDB80030E6 +:100B6E000F00B802AF3AFD61FF520AFE3AFFECF8F1 +:100B7E00FF0E717BFAC1C7FB04088C05C65C80FEB4 +:100B8E000200C0D761DD717BFA70CFC0FFA59FC098 +:100B9E00007CFF9FC000609FC00061CDD7618BFEBF +:100BAE00E2FF717BBE410011FB000017CEFC00611D +:100BBE00CB089EFDF31161C999A58392DFF7D7FE8D +:100BCE00B1FED548FDDF23C1CF0308035109FEF462 +:100BDE00FDC0D2DF37FE3800A20408CF030807514C +:100BEE0009FEE1FDD2B20408DF22C7FB04083183FF +:100BFE0002C6D7C6510AFECCFD624C1FDF06CF4897 +:100C0E00FD01EF04CF48FD00C0EE5BFEC0EE55FEC9 +:100C1E00C7C1FB04088B31196C0161589BC0C6D744 +:100C2E00717BFAFE4DFEAF0408040600C114369225 +:100C3E000B300000522DF3FE77FF8FC000FE2BFE0F +:100C4E0061CF5C807C8073C0041900CEFC0F61CB39 +:100C5E00C55404EF03C55417FE18FEC7360008BB73 +:100C6E00629C0288089C03D1DD334C41DE2F70F16B +:100C7E00312DB161090033081C000851FF612A4172 +:100C8E000E118FD0FF613B118FD1FF6138DC0E8BBF +:100C9E005C03DF0964C6C4FE2BFDEECAFDC6C4EEBE +:020CAE00C3FD84 +:100CB00061CF5100718C7109FECBF800FEFCA801D8 +:100CC00000F6BF00F953C0F693935820FEDFF941B8 +:100CD00000361A2034FEFCEF05118B99A7A51744A6 +:100CE0005620DFF53602F930FEFCEF04CC0000A7F9 +:100CF00047DFF94100365620343AFDEF05118B9954 +:100D0000A7A517445620DFF5363AFD303AFDEF042B +:100D1000CC0000A747DFF9FCD80000EFFE61DD71D1 +:100D20007BFABEF0ADD8BEF200AEF661CDD7C3619E +:100D3000DD717BFABEF0ADD8BEF200DBF6FFADDCB4 +:100D4000BEF000AEF6BDD8AEF40312ADDABEF200CE +:100D5000AEF661CD03BDDAC2D7C3F33174D90883CF +:100D6000C1F626D8BDD8C031750683C312F623C29A +:100D7000FD7B0D93DF0312F623C2D7440000DD266E +:100D800061DD717BFACFE80080BEF6F6BEF4BEF2FC +:100D9000ADD8BEF0CFE800818FE8003103FAAEF0A5 +:100DA000F5E80061CDD7B1D7C3F33174D90883C159 +:100DB000F626D8BDD8C0317505C312F623C2FDC9C9 +:100DC0000D93DF0312F623C2D7440000DD2761DD57 +:100DD000717BFACFE80080BEF6F6BEF4BEF2ADD865 +:100DE000BEF0CFE800818FE8003103FAAFE000F5F4 +:100DF000E80061CDD7ADD8D7C3F33174DB0F83C121 +:100E0000F626D8BDD861317026DABDDAC031750D4D +:100E100083C312F626DCBDDC61317023C2FD310EC6 +:100E200093DF0CF626D8BDD861317026DABDDAC260 +:100E3000D7C161686BDC6BDDC0DD2F61DD717BFAD2 +:100E4000CFE80080BEF4ADDCBEF6ADD8BEF0ADDAC2 +:100E5000BEF2CFE800818FE8003103FAAEF0BDD8D2 +:100E6000AEF2BDDAF5E80061CDD7F6BDD8BDDAD770 +:100E70008292DD2B61DD717BFACFE80080BEF0F657 +:100E8000BEF2BEF46208BEF6CFE800818FE8003102 +:100E900003FAAFE0006072AEF0F5E80061CDD76014 +:100EA00072F6B1D706DABDDAADDC06D8BDD861D8A6 +:100EB000A6DAD7D1DD17C1C3DAD89DD8ADDA311C97 +:100EC00061EEB4D8DFF8BDDA13BDD8C2C0D7D1DD2A +:100ED0001BC1C3DADA9DDAADD8311E33311E33714E +:100EE000F9B4DADFF4BDD813BDDAC2C0D746D8DD15 +:100EF0000771FF7177D971C0D746DADF08C1ADDC61 +:100F000046D8C0DD077177DB71FF71C0D75BDB9D11 +:100F1000DB605BDA9DDAADDC5BD9085BD808BDD855 +:100F2000D7C3C7F3728EFDC162314C410036002039 +:100F30001161A072C09EFD62C6C2D7C3C7F3728E94 +:100F4000FDC1625C0F0C000FFE00314C4100360AFF +:0F0F5000201161800FFE0073C09EFD63C6C2D7E3 +:0A0FF60031373A34363A3533000043 :0A20000000060C12181E242A3036C8 :10200A00001632486480961228446076920824406A -:10201A004040666D756C0000404066646976000059 -:10202A004040666164640000404066737562000067 -:10203A00404066636D70000061636F7300000000CA -:10204A006173696E000000006174616E0000000037 -:10205A006174616E32000000636F7300000000005B -:10206A0073696E000000000074616E0000000000D9 -:10207A00636F73680000000073696E6800000000F7 -:10208A0074616E680000000065787000000000004E -:10209A0066726578700000006C64657870000000F4 -:1020AA006C6F6700000000006C6F67313000000041 -:1020BA006D6F646600000000706F7700000000001A -:1020CA0073717274000000006365696C000000009F -:0E20DA00666C6F6F72000000666D6F64000030 -:0820E800317503F7332312D711 -:0A21000031333A34333A3230000034 +:10201A00FF000000555555550000D4FB000036FC62 +:10202A0000000000A53D5C386727D42D562FD42F19 +:10203A0016319D3E2F48823E893E4E4000000000E8 +:0C204A000000983AF82A23301299000098 +:08205600317503F7332312D7A3 +:0A21000031373A34363A3533000027 :10210A009E00ABD0B820B8C0B950B9E0BB60BE30B1 :10211A00BF20BFE0C030C220C450C950CB00D0C0DD :10212A00014000A05BC06A80342010003220546055 @@ -280,689 +286,688 @@ :1022DA00A7FBAB0000FF67FDAB0000FF67FDAB008B :1022EA0000FF67FDAB0000FF67FDFFFFFF6969693B :1022FA0069FCFCFC676767670202020101010100D1 -:10230A00000000007F7F7F7F7E7D7B7A79787675FB -:10231A00747371706F6E6C6B6A696766656462610B -:10232A00605F5D5C5B5A58575655535251504E4D3B -:10233A004C4B4948484746444342403F3E3D3B3A5E -:10234A0039383737080101020203030200FEFBF79E +:10230A00000000007F7E7D7C7A797877767574721A +:10231A0071706F6E6D6C6A69686766656462616028 +:10232A005F5E5D5C5A5958575655535251504F4E3D +:10233A004D4B4A494948474645434241403F3E3D45 +:10234A003B3A3938080101020203030200FEFBF797 :10235A00F3F0F0F3FA041225384D5F6E777A776E50 :10236A005F4D38251204FAF3F0F0F3F7FBFE000292 :10237A00030302020100000000001F003B005A0094 :10238A0078009700B500D400F300110130014E0126 -:10239A00C75007C15002C15084FD8D03100450126A -:1023AA00FD083C500FC15002C15084FD8D0310043A -:1023BA005003FD083C501FC15002C15084FD8D03DB -:1023CA0010045016FD083C5003C15084FDF102C0B0 +:10239A00C75007C15002C15084FDE6031004501211 +:1023AA00FD9402500FC15002C15084FDE60310048F +:1023BA005003FD9402501FC15002C15084FDE60330 +:1023CA0010045016FD94025003C15084FD4A03C004 :1023DA00625C01D1DD107170DBFB5002C15013FD4C -:1023EA00BB36C0E2EF01F2C6D7C75004C15084FD24 -:1023FA00F102C0625C03D1DD405014FD7B2434DB62 +:1023EA00C136C0E2EF01F2C6D7C75004C15084FD1E +:1023FA004A03C0625C03D1DD405014FD7B2434DB08 :10240A00FB895C9F998A0C7CFF50FF5C14D1DD220A :10241A008A0C7CFF5C147234DFFB89616A997162F1 :10242A00075600316207058666D1DFF771630771C7 -:10243A006B2734EEFB895CEB995002C15084FDF1A5 -:10244A0002C0D2DD225007C15002C15084FD8D0363 -:10245A0010045033FD083CF0C15002C15084FD8D78 -:10246A000310047178DBFBE0C15013FDBB36C0C614 +:10243A006B2734EEFB895CEB995002C15084FD4A4C +:10244A0003C0D2DD225007C15002C15084FDE60309 +:10245A0010045033FD9402F0C15002C15084FDE6CD +:10246A000310047178DBFBE0C15013FDC136C0C60E :10247A00D7C7C12004FBF8FFCC02005004C1508426 -:10248A00FDF102C0629C038C045C20D1DD0E8C033A +:10248A00FD4A03C0629C038C045C20D1DD0E8C03E0 :10249A006C019C038C026C209C02EF138C045C1070 :1024AA00D1DD0C8C035CFE9C038C026C109C028CAC :1024BA00045C08D1DD0E8C036C029C038C026C0850 :1024CA009C02EF138C045C04D1DD0C8C035CFD9C34 -:1024DA00038C026C049C028C03D1DD05501AFD08A2 -:1024EA003C8C0370C15004C15084FD8D0310048FCD +:1024DA00038C026C049C028C03D1DD05501AFD9416 +:1024EA00028C0370C15004C15084FDE60310048FAE :1024FA00DBFB5C9F728C03318E316D148C03318E41 :10250A00314D616D08616C5C606162629FDBFB8FBB :10251A00E7FB7CFF50FF5E02D1DD278FE7FB7CFFE4 :10252A005E027234DFFB89616A99716207CC01002D :10253A00316207086159018C01D1DFF471630771B7 :10254A006B27F21006C6D7C7D9CFFBC15006C150B8 -:10255A0084FD8D0310046276D9D0FBC15007C150A7 -:10256A0084FD8D0310046261666672C6D7FD51252B +:10255A0084FDE60310046276D9D0FBC15007C1504E +:10256A0084FDE60310046261666672C6D7FD5125D2 :10257A00F2D7C72004FBF8FF711300711B20710307 -:10258A0003710205E0C15003C15084FD8D0310049C -:10259A00E0FD083C5012FD083CF0C15005C15084D2 -:1025AA00FD8D031004500FC1E0C15084FD8D03104E -:1025BA0004500AFD083C7103055008FD083C501FF1 -:1025CA00C1E0C15084FD8D0310045012FD083C5037 -:1025DA0003C15084FDF102C0625C01D1DF03E2EF66 -:1025EA003C5003C1C15084FD8D0310047102037174 -:1025FA001A205064FD083CC717A116F7490A239B05 -:10260A00A3A75103614ADFF4C617A1C15003C15001 -:10261A0010C150A4FDD5031006F50AF9F21004C63C -:10262A00D75003C15084FDF102C0625C01D1DD19AB -:10263A005014FD7B24FDF323503CFD083CE0C150BF -:10264A0003C15084FD8D031004711300711B2071A6 -:10265A000303F0C15003C15084FD8D031004F2D767 -:10266A00C72004FBF8FFCC02008F0AF99C03501024 -:10267A00C150A4FDF102C0629F0AF9D53FFBDD04F7 -:10268A00F2ED48278C037F0AF95C08D1DD108F0A26 -:10269A00F95C08D1DF05CC0210EF03CC02208C03D1 -:1026AA007F0AF95C04D1DD168F0AF95C04D1DF08D0 -:1026BA008C026C049C02EF068C026C089C028FDA76 -:1026CA00FB5CF3728F0AF95C0C6162629FDAFB8F22 -:1026DA00E6FB7CFF50FF5E029C02D1DD1F34DEFB6D -:1026EA00896E0299716207CC01003162070861594B -:1026FA00018C01D1DFF4716307716B278F0AF95CD2 -:10270A0040D1DD095002C15012FDBB36C08F0AF913 -:10271A005C01D1DD08E0C15012FDBB36C0717AFA06 -:10272A008F0AF95C41D1DD15340AF9895CBE99D961 -:10273A000AF9C15010C150A4FD8D031004F210040F -:10274A00C6D7FD9A23F2D7FDF323F2D7C78FEEFB44 -:10275A007617FD7B24664FEEFBDFF2F5EEFBF2C641 -:10276A00D78FFBFCB0FBFCD161E8ED1928CFFBFC4D -:10277A0080710407E6613012F6712420611043DD8E -:10278A0032710407E661306061FB71212031242037 -:10279A00137130DBFB5002C15011FDBB36C0CF0BA9 -:1027AA00F902EF0F7138DBFBE0C15011FDBB36C0F7 -:1027BA00F50BF94002F94BDC0B4002F9B9DE057161 -:1027CA001220EF0F4002F93EDC064002F9BD61C853 -:1027DA007113203114200D310420093102070571CB -:1027EA003304EF03713204311205097140DBFB71C6 -:1027FA004202EF077148DBFB714302D50BF9DD0694 -:10280A00B00BF9714202401AF90361F8FDA82AD700 -:10281A00C72006FBF8FF716201717201E0FD083CF6 -:10282A008FFAFC9C015009FD7539629C05716301A0 -:10283A008C054CEADC06CFFAFC07EF4A8C054CC63D -:10284A00DC06CFFAFC06EF3E8C054C9FDC06CFFA7D -:10285A00FC05EF328C054C7CDC06CFFAFC04EF2633 -:10286A008C054C50DC06CFFAFC03EF1A8C054C227F -:10287A00DC06CFFAFC02EF0E8C054C06DC05E5FA05 -:10288A00FCEF03F5FAFC8FFAFC4E01DD4040FAFC3E -:10289A0007DE378FFAFC5006D604CA2214F7500610 -:1028AA0089A54804F9A390DFF7500AFD083C304097 -:1028BA0000BC0217040200C15002C15006C1506C8C -:1028CA00FDD5031006710220EF03710320300B2A95 -:1028DA00FD973A1006C6D7C72008FBF8FF5008FD37 -:1028EA007539629F02F9304A57BB17C15002C1506D -:1028FA003EC1506CFDD5031006D2DF217108DAFB08 -:10290A0040FAFC07DE05E51DF9EF324002F904DE64 -:10291A0006CF1DF903EF26CF1DF905EF207100DA66 -:10292A00FB4002F9F1DC06CF1DF902EF104002F973 -:10293A0004DE06CF1DF903EF04CF1DF904401DF98B -:10294A000161E8ED072A17040300C15004C1500CC5 -:10295A00C1506CFD1B03100630DA20BB17C15002B0 -:10296A00C1500EC1506CFDD5031006F690BB17C1BD -:10297A005002C1500CC1506CFDD5031006314420E1 -:10298A0002EFFA7132208FFAFCF0312E040A21C1CB -:10299A005040C1C1506CFDD503100650A5FD083C3E -:1029AA0030DA20BB17C15002C1500EC1506CFDD5A0 -:1029BA0003100650A5FD083C5004C1506CFDF102FD -:1029CA00C0629C07E9FAFC09FB224E0761C308E9C9 -:1029DA00FAFC09F4224E0717040300C15004C1503F -:1029EA000CC1506CFDD5031006F6BB17C15002C1CD -:1029FA00503EC1506CFDD5031006FD0B2A1008C6C7 -:102A0A00D7C7C1FBF8FF8F0CF94F02F961F8EDA4A3 -:102A1A002A8F02F99F0CF98F02F95070D61230737F -:102A2A0051230480001231FF318E039F0DF99FD686 -:102A3A00FBF6BB8F0DF97C804C95DC1B8F0DF931B1 -:102A4A008F241400BDD8AF06F9FD35081231FF31C5 -:102A5A008E03318FBBEF198F0DF9318F241400BD0E -:102A6A00D8AF08F9FD35081231FF318E03318FBB1B -:102A7A00D904F9F1610900BBBBBF62FC17C150025E -:102A8A00C1500CC1506CFDD5031006D2DF088F026D -:102A9A00F99F0CF9EF047100DAFBF2C0C6D7C72020 -:102AAA0004FBF8FF401DF902DF07CFD7FB63ED9A5D -:102ABA002B401DF903DF2817040200C15002C15040 -:102ACA0004C1506CFD1B031006D2DD06CFD7FB6391 -:102ADA00EF0A8C029FD7FB8C039FD8FBED9A2B8FB2 -:102AEA00DAFB5C01D161E8ED9A2B5002C1506CFD12 -:102AFA00F102C0629C02D53FFBDD117100DAFB7165 -:102B0A000320F5D7FBE6BF1EF9ED9A2B8C029FD95D -:102B1A00FB17040200C15002C15004C1506CFD1BD6 -:102B2A0003100640FAFC07DE2B8C02318E318D0829 -:102B3A000E03081C0012D9FAFCF10402231489318D -:102B4A008E33BDD813FD7108BB8C019FD7FB8B9FB9 -:102B5A00D8FBEF01003134040A31120506CFD7FB46 -:102B6A0064EF2D40D9FB9ADE05F5D7FBEF2240D959 -:102B7A00FB9CDE0C40D7FB06DC06CFD7FB05EF102B -:102B8A0040D9FBA0DE0A40D7FB0B61C8CFD7FB0AAE -:102B9A0040D7FB0BDE06400EF90BDE1640D7FB06CC -:102BAA00DE06400EF906DE0AD5D7FBDF0ED50EF992 -:102BBA00DD095020C15011FDBB36C0D5D7FBDF0956 -:102BCA00D50EF9DD04E6BF1EF98FD7FB9F0EF9D5A6 -:102BDA001AF961F8CF0EF96440D7FB0BDE03E6EF72 -:102BEA0001F6C15012C150A4FD8D0310041004C691 -:102BFA00D7303B10BF10F9300E00BF12F9D7F6429A -:102C0A0012F961F84210F9DD0EF64210F9B210F924 -:102C1A0061F8B212F9F2D7E2D77100010571785062 -:102C2A0005713AD5713BD1713ADD713BD98F1005E7 -:102C3A005CFC9F1005CF54054AE542057110420518 -:102C4A0071004205714850057130500571205005D8 -:102C5A00CF530505CF52050A713051057120510530 -:102C6A00713BD5717050058F11055CFC9F1105D71A -:102C7A007178500571080105D77140F000717830FC -:102C8A0002713AE6713BE2713BEA713BEE8F100545 -:102C9A005CFC9F1005CF34024AE552FF711A52714B -:102CAA000A52714830027130300271203002CF333B -:102CBA000205CF32020A71303102713BE67170307F -:102CCA00028F11055CFC9F110571603002D7717883 -:102CDA0030027148F000D7C788061666614FDD09D1 -:102CEA0067614EDE0396EF01866672C6D7C716176E -:102CFA0014AA0412A943DD29AA0412A923FDE82073 -:102D0A00C3AC02FDE82013C2BDD813FDD109DE0C05 -:102D1A001714AA0212AA0403BA04EF051714A9BACF -:102D2A0004AC041231FF319E03317F087208C6D702 -:102D3A00C77100F200304400BFB601300188BF906D -:102D4A0001300984BF9E01BF9C01BF9A01BF98014F -:102D5A00BF9601BF9401BF9201F53CFF30FE00BF50 -:102D6A00BE01F6BFBC01BFB80150EEBFBA01A1BF98 -:102D7A00B201C918FE007120120571481CF9401DE4 -:102D8A00F902DD0B36100571A461C871401CF97196 -:102D9A002812058F1CF9313507F5F5FBCB6CFF00BE -:102DAA00717320C6D730EF00BFB401F6BFBA017104 -:102DBA0008F200D7710321D9F5FBF1E7240000DD01 -:102DCA001423DD2E23DD2623DD2D23DD3B23DD40E9 -:102DDA0023DD46EF1D8F1AF9318FE7240300DD0842 -:102DEA0023DF39FDE82EEF34FD602EEF2FFDE82EAC -:102DFA00EF2AFD602EEF25F0C1AE6CFDE12CC0F389 -:102E0A0013BE6C716320EF14F6BE6C716220EF0C76 -:102E1A00CB6CFF00716320EF03FD922E8F1CF931FA -:102E2A004508716420715107EF06716420715101E0 -:102E3A00310421218F1CF9314510F6BE64BE6A3176 -:102E4A0064200390EF01F6BE6ED731642004F69039 -:102E5A00EF01F6BE6AD740D7FB06DE04FD922ED7F5 -:102E6A0040D7FB0BDE10F0C1AE6CFDE12CC0F313B2 -:102E7A00BE6C716220D7D9F4FBC1AE6CFDE12CC0E7 -:102E8A00F313BE6C716320D7710221F0C1AE6CFDE1 -:102E9A00E12CC0F313BE6CA0A4FB40A4FB40DC3DB4 -:102EAA00F5A4FBD9A5FBF1313F04FEFC14D9A5FB1F -:102EBA00F1BDD85008FDC008087208E6D2DD040149 -:102ECA0092DFFC896158D1DD05716220EF037163DD -:102EDA0020A0A5FB40A5FB2061C8F5A5FBD7D5A678 -:102EEA00FBDD04B0A6FBD7CFA6FB04D9A7FBF1F7FD -:102EFA0034020023DD0625DD0325DF1B40D7FB0B4B -:102F0A00DE09F6BFA8FB716220EF1CD9F4FBF1BF02 -:102F1A00A8FB716320EF1040D7FB0BDE057163201D -:102F2A00EF05E6A1BFA8FBAE6C42A8FBDD10AFA877 -:102F3A00FB426CFFDE05B26CFFEF03A26CFFAE6CC6 -:102F4A0042A8FB61F8A0A7FBD78FAAFBB0AAFBD1C6 -:102F5A00DF7431D4D107715BD1CFACFB02D5ACFBA6 -:102F6A00DD347140DAFBD9ABFBF1E734020023DD33 -:102F7A000625DD0325DF05F6BE66EF06D9F4FBF16B -:102F8A00BE66A0ABFB40ABFB20DF06F5ABFBB0ACEB -:102F9A00FBCFAAFB16D7CFAAFB1E7148DAFBD5F6E0 -:102FAA00FBDF04F6BE66D7D9F4FBF14266FFDD16F5 -:102FBA00D9F4FBF112AE6643DE05A266FFEF03B257 -:102FCA0066FFCFAAFB03D731042101D7401AF902C1 -:102FDA00DF19F6BE64BE6EBE6ABFB0FBBFB6FBBFEA -:102FEA00BCFBBFB4FBBFBAFBBFC0FB31742003ED0F -:102FFA00A630D5ADFB61E8EDA1308F40FB9FADFB5C -:10300A0040AEFB1FDC1F7100FAFB4042FBFFDD24D0 -:10301A00D5AFFBDD05B0AFFBEF1A8F42FB9FAFFBCD -:10302A00F5AEFBEF0F7108FAFBD9AEFBF1A1605CBC -:10303A001F9FAEFBE9AEFB0944FB5080D6BFB0FB35 -:10304A00E9AEFB0964FB5080D6BFB6FBE9AEFB09CB -:10305A0084FB5080D6BFBCFBAFB0FB22B4FB12D9B5 -:10306A0041FBF133BDD813FD7108BFB2FBAFB6FB0C -:10307A0022BAFB12D941FBF133BDD813FD7108BF47 -:10308A00B8FBAFBCFB22C0FB12D941FBF133BDD860 -:10309A0013FD7108BFBEFBB0ADFBEF3DF6BFB0FB41 -:1030AA00BFB6FBBFBCFBAFB4FB1231FF31AE03317D -:1030BA006F12F623BFB2FBAFBAFB1231FF31AE0378 -:1030CA00316F12F623BFB8FBAFC0FB1231FF31AE2E -:1030DA0003316F12F623BFBEFB8F1CF931451F3037 -:1030EA00BCFBFDF72CF313BE6430B0FBFDF72CF3E9 -:1030FA0013BE6E30B6FBFDF72CF313BE6AD730BC95 -:10310A00FBFDF72CF313BE6AD7C73112210BD5C2C8 -:10311A00FBDD06B0C2FBEDDA31711321D9F7FBF101 -:10312A00E7240000DD0F23DD1B23DD1123DD5723F8 -:10313A00DD2923DD3B5600F502FDEDC6315601F5CA -:10314A0002FDEF78D502FDDF075601E502FDEF0526 -:10315A005600F502FDCFC2FBFAEF61D502FDDF0B87 -:10316A005601E502FDCFC2FBFAEF51F5F7FBEF4C32 -:10317A00D502FDDF0B5600E502FDCFC2FBFAEF3C9C -:10318A00CFF7FB02EF36D927FCF1E7240000DD096F -:10319A0023DD2423DD0A23EF1E5600F502FDEF1C72 -:1031AA00D502FDDF075601E502FDEF055600F502DF -:1031BA00FDCFC2FBFAEF055601E502FD8F1CF9317E -:1031CA0045086661FB712104EF066661FB71010126 -:1031DA00C6D7C736F00071F4DC297170F000CE9DB5 -:1031EA0008CE9EC0CE9F80F594FFF593FFF592FF1F -:1031FA00E597FFE596FFCE9505CE9810CE9C7F7198 -:10320A0000CEFB711BE3712BE3711AE7712BE77197 -:10321A007A9D710A9E31929E02EFFA710B9E71237A -:10322A0021713321714321C6D7C73122211E712250 -:10323A0021710A9E31929E02EFFA34FCFB3692FF0C -:10324A0052078B99A5A792DFF9710B9EC6D7C7883B -:10325A00061631322115713221C734C4FB3092FF70 -:10326A001652078B99A5A792DFF9C666736718C429 -:10327A00FBC6D7C77123213134211E713321710A4C -:10328A009E31929E02EFFA3492FF36C4FB52078BAC -:10329A0099A5A792DFF9710B9E31442113717B9E88 -:1032AA008F04FC9E9A8F05FC9E9B713321717A9E36 -:1032BA00C6D7CFF4FBFFCFCFFB5CCFD0FB5FCFF0FD -:1032CA00FB20D7C7CFCCFB10CFCDFB20CFF1FB2003 -:1032DA00F5F5FBF5F6FBF5F7FBF5F8FB5600664C42 -:1032EA0064DE08723840FB0086EFF3C6D7C788064B -:1032FA001617F1E73402002361E3ED0B362361F878 -:10330A00EDDD33B12361E3EDE43324030061F8ED2D -:10331A00F33324070024070061D8ED0B36240B0091 -:10332A0061F8ED14342361F8ED5B342361F8ED287C -:10333A00342361F8EDD7352561F8EDF7352404001B -:10334A0061F8EDC434B124030061D8EDE8342400F7 -:10335A000061F8EDF5342361F8ED0B36252361E3BE -:10336A00ED05352361F8ED17352361F8ED2935238D -:10337A0061F8ED17352361F8ED3B352361F8ED4D22 -:10338A00352361F8ED5D352361F8ED66352361F883 -:10339A00ED72352361F8ED7E352361F8ED87352529 -:1033AA002361E3ED0B362561F8ED90352361F8EDE5 -:1033BA009C3524030061F8EDA835240A0061F8ED74 -:1033CA00B43524120061F8EDD1352361F8EDBF352B -:1033DA00ED0D36679FCEFBED1736307725FD973A10 -:1033EA0066736718CCFBED173640D1FB6ADF1440D1 -:1033FA00D2FB68DF0E674C6CDF09303F43FD973A1A -:10340A00713AD5679FD3FBED173667D1DD0630CE0B -:10341A003EFD973A34ECFB89616F99ED1736675C8C -:10342A0002D1DD08304C27FD973AEF0C675C01D1D9 -:10343A00DD06305127FD973A675C3CD1DD103056E6 -:10344A0027FD973A675C3C7266736218CCFBED17EE -:10345A003667D1DD625C01D1DD05300800EF01F687 -:10346A00609F23FC675C02D1DD03E6EF01F634239B -:10347A00FC89616899675C04D1DD04E6A1EF01F675 -:10348A003423FC89616899675C08D1DD0530200026 -:10349A00EF01F63423FC89616899675C10D1DD0578 -:1034AA00301000EF01F63423FC89616899675C20CB -:1034BA00D161E8716023FCED1736D514F9DF09678D -:1034CA009FF5FBA014F9EF134014F905DE0DD9148A -:1034DA00F9F1B1126748FEFCA014F9ED1736675CE2 -:1034EA000F7266736218CCFBED17364014F964DE6E -:1034FA000AE914F9671840FBA014F9675C7F318E5A -:10350A00C117F1243000FD5832C0ED1736675C3F11 -:10351A00318EC117F1243000FD5832C0ED173667DD -:10352A005C07318EC117F1243000FD5832C0ED1707 -:10353A0036675C1F318EC117F1243000FD5832C046 -:10354A00ED173667318EC117F1243000FD5832C0AD -:10355A00ED1736679E999F03FCED17367142216776 -:10356A005C7F9F04FCED1736714221675C3F9F0523 -:10357A00FCED1736675C3F9F06FCED1736675C1F4C -:10358A009F07FCED173630F53CFD973A679F0CFC18 -:10359A00EF7B30B03CFD973A679F0DFCEF6F30D25E -:1035AA003CFD973A679F10FCEF63675C01D161E8C5 -:1035BA00FD4146EF58401EFCC8DE52E91EFC671862 -:1035CA0070FAA01EFCEF46679F1EFCEF4067318E23 -:1035DA00247200DD07240500DD0AEF0B30BA07FD6F -:1035EA00973AEF03CEABAA679FEFFBEF20675CBF6A -:1035FA009FF1FB675C40D1DD1430DA38FD973AEF72 -:10360A000CEF0A664C52DE05736718CCFBC6D7C7A7 -:10361A0016664C30DC094C37DE05FD3332EF67663F -:10362A004C02DF1F8FCEFB5C03728F25FC5C0331DB -:10363A008E316D08616A08128F25FC5C80312A611F -:10364A0062EF49664C4FDF05FD6546EF3F664C6108 -:10365A00DF09E91EFC0970FA72EF31664C3DDF0A98 -:10366A00AE90BF20FCF920FCEF22664C3EDF05F944 -:10367A0021FCEF18664C7FDF0D30523FFD973A71FF -:10368A003AD5524AEF06667309CCFB72C6D7C716FB -:10369A0017F1241000240500DC07244C00DD0DEF8F -:1036AA000E667238CCFB00715221EF03A01EFCC6D5 -:1036BA00D7C7C1C1FBF8FF401AF903DD06401AF962 -:1036CA0004DF2F8C027309D4FB5E0AD1DF248C023B -:1036DA00318E04CCFB14896E0A99716207CC010001 -:1036EA00316207086159018C01D1DFF471630771F6 -:1036FA006B271004C6D7CF25FC03F523FCF527FC5E -:10370A00F529FCD7C788061617F1E734020025DD2C -:10371A005123DD2225DD3023DD0523DD3FEF4F5028 -:10372A0040C15012FDBB36C06731399F35FC30DAD3 -:10373A0038FD973AEF38675C03D161F87142226726 -:10374A005C839F25FCEF27675C039F27FC675C036C -:10375A004C0261F8711221FD1331EF12679F29FCA7 -:10376A00EF0C6791DF08E0C15012FDBB36C0C6D727 -:10377A00C71617F1E7240000DD7223DD6124030078 -:10378A00DD0C240200DD6024F900DD67EF6840D714 -:10379A00FB5BDC06CF26FC0FEF3240D7FB4CDC0686 -:1037AA00CF26FC0BEF2640D7FB33DC06CF26FC07DF -:1037BA00EF1A40D7FB0BDC06CF26FC03EF0E40D7EF -:1037CA00FB06DC05E526FCEF03F526FC31020705BE -:1037DA00308000EF01F6086F26FC7208EF1E8F2377 -:1037EA00FCF523FC72EF15F928FCEF107132225216 -:1037FA0035EF09F2EF0666730922FC72C6D7C716BF -:10380A0017F1E7240000DD38241000DD1C23DD1C3D -:10381A0023DD30240E00DD18241100DD1B240F00E7 -:10382A00DD12243000DD15EF1EE2EF1D5202EF1902 -:10383A005204EF155206EF115205EF0D5207EF0928 -:10384A00F2EF065203EF0252FFC6D7C7401AF90336 -:10385A00DF0630DA38FD973A8F0CFDB00CFDD1DF68 -:10386A006DCF0CFD073164214B716321401AF903B6 -:10387A00DF423604FDC7D933FCFDA639C08FF1FB00 -:10388A005C80D1DD0A8FF1FB5004D6609F32FC3692 -:10389A0008FDC7D932FCFDA639C08F39FC4F34FC6C -:1038AA00DD128F34FC9F39FC8F34FC9F35FC30DAF3 -:1038BA0038FD973A7150F000CE300BCF170006CE84 -:1038CA003106FDCD02717A30710BE3710BE7C6D771 -:1038DA00C7D935FCF112312F605C3F771331FF31C4 -:1038EA00DE03313F609F28FC679FD5FB73090E23D7 -:1038FA0076C75013C150A4FD8D0310045013C15054 -:10390A00A4FDF102C062614EDD0CC75013C150A480 -:10391A00FD8D03100400F2C6D7C7168B728C0161A5 -:10392A004ADE248B728C02614ADE188C01728C0288 -:10393A00614ADE068C01318EEF048C02318E0872E8 -:10394A0008EF268B72EF228B728C02614ADE048B9F -:10395A0072EF168C01728C026142DE068C01318E86 -:10396A00EF048C02318E087208C6D7C716710AE7AF -:10397A00710BE37150F000CE300BCF170006669E34 -:10398A0031FDCD02717A30710BE33182E302EFFA35 -:10399A008D1F7158F000710BE772C6D7C7C1C1FB02 -:1039AA00F8FFAC0A14A91489708C0261287061317D -:1039BA00FDE8201344020071FEDC16AC0A14A914B7 -:1039CA008C0299AC0A14CA0200AC0A14CA0310EF9A -:1039DA0060AC0A14A914894E02DE0AAC0A148A02DF -:1039EA00819A02EF13AC0A14A914894E0261D30812 -:1039FA00AC0A148A02919A02AC0A148A03919A03B5 -:103A0A00D1DF2EAC0A148A027C804C8DDC07A91403 -:103A1A00898199EF10AC0A148A027C804C74DE0505 -:103A2A00A914899199AC0A14CA0310AC0A14CA02DF -:103A3A00001004C6D7ED823A717BFAC7D544FC61FF -:103A4A00F83174212D717321717BFA717AFAD54498 -:103A5A00FC61E8B044FC717AFA5600664C0CDD123F -:103A6A0072F3311C790EFDCEFC0061CAFDE13A8683 -:103A7A00EFE9717AFAF2C6D7C75600664C0ADE0B2E -:103A8A00F0317E12F67846FC86EFF0C6D7C7C1C180 -:103A9A00FBF8FFCC01008C014C0ADE36717BFA8CF4 -:103AAA0001F0317E0446FC14A96168DF09AC02B951 -:103ABA00717AFAF2EF1D8C01F0317E127946FC61BF -:103ACA004902DF06717AFAE2EF09717AFA6159015D -:103ADA00EFC4E21004C6D7C72004FBF8FFF642463B -:103AEA00FC61F8EDD93B717BFA9C038C034C0ADE2E -:103AFA004F8C03F0317E0446FC14A96168DF05711E -:103B0A007AFAEF3C8C03F0317E127946FCE743DF08 -:103B1A0006717AFA00EF21717AFA8C0372F3311C7A -:103B2A007946FCCEFC0061CA629C02D1DF0A8C0392 -:103B3A00F0317E12E67846FC717BFA615903EFABED -:103B4A00CC0200CC01018C02F0317E0446FC14A99F -:103B5A006168DD7B8C02F0317E127946FCE743DF37 -:103B6A00688C014C0ADE628C01F0317E127946FCC7 -:103B7A00E743DD50717BFA8C01F0317E0446FC1478 -:103B8A00A96168DF1B616901717BFA8C01F0317EE2 -:103B9A0012F67846FC717AFA8C024E01DCE7EF2FB6 -:103BAA008C01F0317E0446FC14A9128C02F0317E9D -:103BBA00337846FC8C01F0317E12E67846FC615976 -:103BCA0002717AFA615901EF98615902ED503BCCC2 -:103BDA000200CC01008C014C0ADE1E8C01F0317E01 -:103BEA000446FC14A96168DF05CC0201EF068C02C9 -:103BFA00D161E800615901EFDCF21004C6D7C7C1F0 -:103C0A00C1FBF8FFCEABAC8C02D1DD126169023088 -:103C1A005C03BBF6614900DDEE618900EFF5100433 -:103C2A00C6D7C72006FBF8FF3411FCC55006C150A1 -:103C3A00A8C15030FD1B031006D2DD1DA05AFC405E -:103C4A005AFC08DE03E2EF5A340CFC895CFC99FD4D -:103C5A00F53C7110DAFBF2EF49F55AFC8F0CFC5C6B -:103C6A0001D1DD26401AF903DF205010C180FDBBC7 -:103C7A0036C0C736100571D4C6DE0F17C15006C14B -:103C8A0050A8C15030FD1B031006401AF901DD117E -:103C9A00401AF905DD0B8F0CFC5C02D161E8FD448A -:103CAA0043F21006C6D7D90DFCC15030FDF102C04F -:103CBA00629F10FC7130DDFB8FE5FB5C08D1DF06EB -:103CCA00716307716B27F2D7D910FCC1D90FFCC1F8 -:103CDA005030FD8D0310047130DDFB8FE5FB5C086D -:103CEA00D1DF06716307716B27F2D7C7200AFBF889 -:103CFA00FF500FC15030FDF102C0403FFB02DF0709 -:103D0A007110DAFBF2EF547118DAFBCC0700CC0819 -:103D1A0012CC09808F0CFC5C03D1DF08717AD5CCF8 -:103D2A000607EF06717BD5CC062F17040600C15093 -:103D3A0004C150A0C15030FDD5031006C736100586 -:103D4A0071D4C6DE15401AF903DF0F17C15006C138 -:103D5A0050A8C15030FD1B031006F2100AC6D7C77F -:103D6A008F1AF9318F24020061F8F55CFC8F26FD69 -:103D7A00B026FDD161E8ED443ECF26FD048F1AF945 -:103D8A00318FE723DD0B24020024030061C8ED44D0 -:103D9A003E405CFC02DF0AE0C15010FDBB36C0EFBA -:103DAA0013405CFCFADF0D5002C15010FDBB36C057 -:103DBA00E6BF1EF931340708711322F55CFCEF15D2 -:103DCA0031142205F55CFCEF0CA05CFCD55CFC61AF -:103DDA00F8CF5CFCFF8F1DF9318FE723DD07B12394 -:103DEA0061D30CEF1236100571C4712122EF0B71E9 -:103DFA000402712122EF037122223122221A405D2C -:103E0A00FC0361D8A05DFC405DFC02DF0E5004C1DA -:103E1A005010FDBB36C0EF03F55DFC314207184078 -:103E2A005EFC0361D8A05EFC405EFC02DF0C501011 -:103E3A00C1FDBB36C0EF03F55EFCC6D7C7401AF911 -:103E4A0002C6D7C72004FBF8FF401AF90361E8400D -:103E5A001AF9041004C6D7C78F0CFC5C03D1DD1114 -:103E6A0036100571D4DE0A302C3CFD973AD261F83F -:103E7A0000401AF903DF1B31220707306A26FD9733 -:103E8A003A003134220C7133225080C15012FDBBEA -:103E9A0036C0401AF903DD05F6BD1AEF25D5F8FB41 -:103EAA00DF09F6461ADD1BB61AEF17D9F4FBF146FD -:103EBA001ADD0FD9F4FB12AD1A43DE04A61AEF027B -:103ECA00B61AC6D78FECFB5C10D161E87152228F0B -:103EDA00ECFB5C0FD1DD6C8FECFB5C01D1DD05F5F1 -:103EEA001AF9EF5F8FECFB5C02D1DD15E0C15003DC -:103EFA00C15084FD8D031004711300711B207103DE -:103F0A00038FECFB5C08D1DD05710303EF1C8FEC1A -:103F1A00FB5C04D1DD14711300711B2031442203B0 -:103F2A007103033425FC895CFC995005FD083C713A -:103F3A0002035003C1C15084FD8D031004711A207D -:103F4A00714322F5ECFBF2D7C7364105718461D87B -:103F5A00ED01403641057194DE0771405005CEAB44 -:103F6A00AC31B2D104E2ED1040713BD18F14F9A00B -:103F7A0014F9318EE7240000DD1723DD1C23DD2729 -:103F8A0023DD2C23DD3823DD4423DD4923DD4EEFF9 -:103F9A00668F1DF99F4005EF58F0C15084FDF1026C -:103FAA00C0629F4005EF4A8FFAFC9F4005EF4250DE -:103FBA0008C1506CFDF102C0629F4005EF33500901 -:103FCA00C1506CFDF102C0629F4005EF248F62FC74 -:103FDA009F4005EF1C8F02F99F4005EF14F1710411 -:103FEA002061DC311970F171142061DC61689F4035 -:103FFA0005CEABACE2EF0F71605005714850057108 -:10400A003BD5F514F9F2C6D7C78F1AF9318FE724D1 -:10401A00000061F8EDD34123DD1B2361F8EDE44094 -:10402A002361F8ED71412361F8EDAE412361F8EDAA -:10403A003D42ED9D42D51BF9DF28D55CFCDD05F537 -:10404A002BFDEF03A02BFD402BFD65DC09F51AF9CA -:10405A00717221EDA042405CFC0A61D8EDA042E5F4 -:10406A001BF9711222F52BFDCFD1FB80F5EFFBFD79 -:10407A00FA04FD1A28FDE128401DF904DF097172CE -:10408A0021F51AF9EDA042FDA82AD5D7FBDF238F27 -:10409A00D9FB318EF7BDD813BDDAFDEB0AC9DCCDE9 -:1040AA00CC301C43FD570ADE09717221F51AF9ED6D -:1040BA00A042FD7C25D2DD09717221F51AF9EDA025 -:1040CA0042401BF901DF05F5F5FBEF04CFF5FB03D1 -:1040DA00CF1AF902FD5125EDA042CF350002CF37A4 -:1040EA00001DCF120510FD232CFD832C714A9DFD66 -:1040FA000037FDCD32F537FF712BE0F51BF97172F0 -:10410A0021CBE43FEFCBE6F6F0FDFA04713BD48F06 -:10411A001CF93135335004C15084FDF102C0625C90 -:10412A0003318E315D34DBFB896168995002C150DD -:10413A0084FDF102C0D2DD067170DBFBEF047178F9 -:10414A00DBFBFD1A28FDE128FD3A2D71381CF9CF59 -:10415A001AF9038FCEFB5C02D1DD095080C15010E1 -:10416A00FDBB36C0EDA042FDA24231A4E020712B76 -:10417A00E031020C05FD2C43EF145027C15005C154 -:10418A005084FD8D031004CF1AF904717221315441 -:10419A00220CA02AFD402AFDFF61F8FD2C43FD0FE9 -:1041AA0043EDA042FDA24231020C18F0C15005C1F4 -:1041BA005084FD8D0310045005FD083CFD2C43CFAF -:1041CA001AF903FD0F43EDA042CFF5FB03F5F6FB09 -:1041DA00717220F6426CFF61E8EDA042F5F8FBF639 -:1041EA00BF1EF9FDAF2DFD7A2CFDD82C714B9DF524 -:1041FA00DCFBF5DDFBF5DEFBF5DFFB31442002EFEE -:10420A00FACE3708CBE4BFFFCBE6FFF1CED4FFCF1F -:10421A00370009F51205F6BEE0BEE2BED0716A2784 -:10422A00FD2B26FDFB2BF52BFDCF1AF9057112226A -:10423A00F55CFC31040706FD082CD2DF1BFDFA04ED -:10424A00FD1A28405CFC0ADC06E51BF9E51AF9317F -:10425A00020743FDFB2BEF3EF51BF9717301713227 -:10426A000431120502EFFA71430231949E02EFFA09 -:10427A00FD6305712AE7CEA409F5F30061FD310457 -:10428A000703711322E5F300CEA408712BE7E51AA0 -:10429A00F9EF0300EFFDC6D7D564FCDF1E3102003B -:1042AA00195003C15084FDF102C0625C01D1DF07DD -:1042BA00F51AF9717221D7E564FCD74064FCF0DF86 -:1042CA00083104003FF564FCD74064FCC8DF0BF5F5 -:1042DA001AF9717221CF64FCF0D731020004A0648C -:1042EA00FCD7F0C15004C15084FD8D0310048FDB4C -:1042FA00FB5C9F9FDBFB7110ECFB30CE3EFD973AD7 -:10430A00CF64FCF0D7F6421EF9DD16A21EF98FF033 -:10431A00FB5040D612AF1EF943DC06F51AF971724A -:10432A0021D7715322F52AFD717207FDCD02FDCD09 -:10433A0002717307D7FD8905F2D7C7200CFBF8FF76 -:10434A008F12FCF0F911FCF303FDE82013BC048F73 -:10435A0014FCF0F913FCF303FDE82013BC028F16DA -:10436A00FCF0F915FCF303FDE82013BBAC04BDD83F -:10437A00F6BDDAAC04311EBDDCF6BDDEFD4608AD85 -:10438A00D8BDDCADDABDDEAC02BDD8F6BDDAAC0212 -:10439A00311EDADCC3DADEC3BDDCF6BDDEFD46085B -:1043AA00C0BDDEC0BDDCADDEFD8809ADD8BDDCAD6B -:1043BA00DABDDEABBDD8F6BDDAAB311EDADCC3DA64 -:1043CA00DEC3BDDCF6BDDEFD4608C0BDDEC0BDDC19 -:1043DA00ADDEFD8809DADAADD8FD6447C3C58FF2D0 -:1043EA00FC5C3FF0317E0472FC14C2C0B9A0F2FC3E -:1043FA00F6BC08BC0A9C078C074C2EDD3E8FF2FCEB -:10440A000E0770F161DC605C3FF0317E127972FC5C -:10441A00BDD8F6BDDA8C0773095023318FBDDC7025 -:10442A00BDDEFD4608AC08BDDCAC0AFD8809ADDA84 -:10443A00BC0AADD8BC08615907EFBCAC08BDD8AC02 -:10444A000ABDDAC9DC0004F6FD1009C9DCFFFFF673 -:10445A00FDDD09ADD8BF6CFCAF66FC426CFCDD1219 -:10446A00AF68FCBF6AFCAF66FCBF68FCAF6CFCBF00 -:10447A0066FCAF68FC426AFCDC50AF66FC4268FC32 -:10448A00DE48AF2CFD4266FCDE40406EFC16DC1FA7 -:10449A00406EFCA0DE168F6FFC4F6EFCDE0EAF6620 -:1044AA00FC2270FC44691061C8FD1D45F56EFCAF25 -:1044BA0066FC445146DC0BAF66FC241027BF2EFD78 -:1044CA00EF1930F82ABF2EFDEF11406EFCFFDD0315 -:1044DA00E6EF01F6346EFC89610899AF6AFC42681E -:1044EA00FCDC1BAF68FC4266FCDE13AF66FC422EA6 -:1044FA00FDDE0BF56FFCAF66FCBF70FCEF11406F81 -:10450A00FCFFDD03E6EF01F6346FFC8961089910C0 -:10451A000CC6D7C72008FBF8FFA017FCD517FCDF8D -:10452A001CA018FCD518FCDF14A019FCD519FCDF57 -:10453A000CCF17FCFFCF18FCFFCF19FCFF717BFAD9 -:10454A00710A9E31929E02EFFA8E98FDF1099C053E -:10455A008E949F30FD8E969F31FD8E979F32FD8EF1 -:10456A00939C048E929C03FDF64613BC068F33FD82 -:10457A004E05DF12AFF4FC614906DE41AC0622F4B7 -:10458A00FCFD1946EF378C05318EB112D933FDF196 -:10459A0043DF1F8C055C0391DF03E6EF01F6046D30 -:1045AA0001313D12010322F4FC610906BBFD1946E3 -:1045BA00EF0B8F33FD4E05DE04F6FD19468C059F81 -:1045CA0033FDAC06BFF4FC8FF3FC9C028C044F1C39 -:1045DA00FCDE138C034F1DFCDE0C6169028C024C5D -:1045EA00A861C8CC02A78C02F0317E0420F914A974 -:1045FA0044FFFFDF04E6B9EF128C02F0317E04209B -:10460A00F914A944FEFFDD03A9A1B91008C6D7C74A -:10461A00161744A90061C836A800A0F3FC40F3FCB1 -:10462A00A861C8F5F3FCF9F3FCF3311CF67820F91C -:10463A00B7F647DFE5C6D7C756A89666F0317E12A9 -:10464A00F6B17820F966D1DFF1F517FCF518FCF51B -:10465A0019FCF5F3FCC6D7716322D7C72004FBF80F -:10466A00FFD914F9F1E7240000DD1123DD1C23DD55 -:10467A002123DD2623DD2F23DD33EF388FF3FC9F43 -:10468A00F6FCA014F9F930FDEF5EA014F9F931FD3A -:10469A00EF56A014F9F932FDEF4EA014F98F33FD4D -:1046AA00FD0B0A72EF42A014F95255EF3BA014F920 -:1046BA0052AAEF34F9F6FCF3311C7920F9BB3162C6 -:1046CA0022058B9C03EF128C019C03D5F6FCDF06B6 -:1046DA00CFF6FCA7EF03B0F6FC718071672261DCAC -:1046EA0061FB7161228C03721004C6D7C72006FBD6 -:1046FA00F8FF8E98FDF1099C038E97FDF1099C0243 -:10470A008E96FDF1099C018E94FDF1099B710B9E19 -:10471A00717AFA8C02F0317E12798023BC048C0300 -:10472A005C03D1DF158C024C03DE0C8C024C02DFD9 -:10473A00098C014C1D61F86179048C01318EB161DB -:10474A000904BC04313D120103BC048C040D708CB5 -:10475A00051C00BC04121006C6D7C7C3C12008FB3B -:10476A00F8FFF661490A61F8614908DF07F7340082 -:10477A0000ED0148E6BC04F6BC06AC0ABC02AC0873 -:10478A00BBAC06614902AC0461F8614900DE28ACA1 -:10479A0004BDD8AC06BDDAE1FD9709ADDABC06ADB9 -:1047AA00D8BC04ABBDD8AC02BDDAE1FDB209ADDAC2 -:1047BA00BC02ADD8BBEFCAAC06BC02AC04BBAC08A9 -:1047CA00BDD8AC0ABDDAAC04BDDCAC06FD4909AC07 -:1047DA0004BDDCAC06FD8809E1FDB209ADDABC0610 -:1047EA00ADD8BC04AC06614902AC0461F861490069 -:1047FA00DCC5AC0214AB12100CC6D7C7D534FDDD2C -:10480A0005B034FDEF78CF34FD023114070671107C -:10481A00DBFBEF047118DBFB8FDBFB7FF8FC76D147 -:10482A00DD5C8FDBFB9FF8FC401AF903DF22665C34 -:10483A0010D1DD1C8FDBFB5C10D1DD0B5080C15029 -:10484A0011FDBB36C0EF095040C15011FDBB36C047 -:10485A00401AF903DD06401AF904DF22665C02D128 -:10486A00DD1C8FDBFB5C02D1DD0B5040C15010FD1B -:10487A00BB36C0EF095020C15010FDBB36C0C6D7A9 -:10488A00CF0BF90461FC61FCC1C3C5C7520C9292FB -:10489A0069D4FEC1DFF88EFD708EFCC1717AFA40D0 -:1048AA001AF903DF06306A26FD973AC09EFC609E1D -:1048BA00FD34D4FE5206C0B9A5A592DFF9C6C4C21A -:1048CA00C061FC61DF520C929269D4FEC1DFF88E9E -:1048DA00FD708EFCC1717AFAC736410571A4C6DC37 -:1048EA0041F5FCFC71485005716050053154212690 -:1048FA00716207715321D5DCFBDF0FD5DDFBDF0ABF -:10490A00D5DEFBDF05D5DFFBDD0C31620702EFFAEE -:10491A00716307716B27FD6146FD7D32F514F9ED70 -:10492A003C4AC73641057184C6DE0DF5FCFC714868 -:10493A005005FD7D32ED3C4AC73641057194C6DE0D -:10494A001540FCFC03DD0C40FCFC04DD0640FCFCCD -:10495A000161F8F5FCFCD9FCFCF1E7240000DD0854 -:10496A0023DD1323DD39EF6071405005E5FCFC714E -:10497A00505005ED3C4A8F40059F15F99F18F9D90B -:10498A0015F9FD1936629F17F94015F97FDD06CF33 -:10499A00FCFC02EF03F5FCFC71505005ED3C4AC7E4 -:1049AA003641057194C6DE1CC736410571C4C6DEA0 -:1049BA0006CFFCFC03EF11F5FCFC71485005716051 -:1049CA005005EF6ECFFCFC0440FCFC03DF0E8F1792 -:1049DA00F99F4005D915F9FD9836EF108F400576F5 -:1049EA00C7D915F9FDF732C071505005D918F9F138 -:1049FA00242900DD2D240400DD28242200DD2324BF -:104A0A001100DD0C240100DD19241E00DD14EF0C59 -:104A1A004015F960DF0CCF15F961EF06F514F9A01E -:104A2A0015F940FCFC03DF0AD915F9FD1936629F16 -:104A3A0017F9C09EFC609EFD34D4FE5206C0B9A58B -:104A4A00A592DFF961FCC1C3C5C7520C929269D421 -:104A5A00FEC1DFF88EFD708EFCC1F616717AFA710E -:104A6A004AE5717BBD51405F0401D1DD05A7F647D8 -:104A7A00DFF3300400BF2401F6BF2A01300B0BBF5D -:104A8A002801FDCD02300B0FBF2801FDCD02300FEA -:104A9A000FBF2801710AE6714320C09EFC609EFD8B -:104AAA0034D4FE5206C0B9A5A592DFF9C6C4C2C065 -:104ABA0061FCC1C3C5C7520C929269D4FEC1DFF82A -:104ACA008EFD708EFCC1717AFAD53EFBDD0EEB3C91 -:104ADA00FB899E44A23CFBB03EFBEF2B710AE630F9 -:104AEA000400BF2401F6BF2A01300B0BBF2801FDC9 -:104AFA00CD02300B0FBF2801FDCD02300F0FBF28AA -:104B0A0001713320714320C09EFC609EFD34D4FEA7 -:104B1A005206C0B9A5A592DFF9C6C4C2C061FC613C -:104B2A00EF520C929269D4FEC1DFF88EFD708EFCB2 -:104B3A00C12008FBF8FF71503002CEABACCC0100AB -:104B4A00F6BC0231B2E210617902F6614902DFF382 -:104B5A0071603002EDE04B8E519B713BE28B5C023F -:104B6A00D1DD1D8B5C08D1DF0971503002CC010008 -:104B7A00EFCE8C0770FD7A37629E50CC0102EFC0EF -:104B8A008B5C03D1DF408E509C05715030028C0142 -:104B9A00D1DF0E8C0570FD0838629C07CC0101EF4D -:104BAA00328C014C02DF0671603002EF29CF3402E9 -:104BBA005A716030028C0570C18C0770FD0E37C0C7 -:104BCA00CF34024AEF108B5C01D1DD0671603002EE -:104BDA00EF0400ED4A4B1008C09EFC609EFD34D4E1 -:104BEA00FE5206C0B9A5A592DFF961FCC18F06FC89 -:104BFA004F96FFDF328F07FC4F97FFDF2A8F08FCA3 -:104C0A004F98FFDF228FE5FB5C04D1DF1A7120DDAC -:104C1A00FB716307716B27401AF905DD06401AF923 -:104C2A000161F8CF1BF902C061FCA044FC61FCC120 -:104C3A00C3C5C7520C929269D4FEC1DFF88EFD70CB -:104C4A008EFCC1C1FBF8FF8D1F9C018E31318EE7AE -:104C5A00240600DD0823DD0F23DD25EF51717AFAE2 -:104C6A008C019F33FCEF47717AFA401DF902DF0786 -:104C7A008C019F32FCEF3751FF2E019F32FCEF2E41 -:104C8A00717AFA8C019F02F940EFFB74DF068FD12B -:104C9A00FB9F02F98FDAFB5C01D1DF12401AF9039C -:104CAA00DD06401AF904DF06300B2AFD973A403137 -:104CBA00FF09DE08A031FF710BE3EF197158F0000C -:104CCA007162214043FC02DF03F6EF05D943FCF190 -:104CDA00A1609F43FCC0C09EFC609EFD34D4FE527E -:104CEA0006C0B9A5A592DFF9C6C4C2C061FC61FFBE -:104CFA00520C929269D4FEC1DFF88EFD708EFCC10F -:104D0A00717AFA8F0CFC5C03D1DD19401AF903DDC4 -:104D1A0006401AF904DF0D36100571D4DE06302C70 -:104D2A003CFD973AC09EFC609EFD34D4FE5206C0FC -:104D3A00B9A5A592DFF961FC61FC61FC61FC61FC2B -:104D4A0061FC61FC61FC61FC61FC61FC61FC61FC71 -:104D5A0061FC61FC61FC61FC61FC61FC61FC61FC61 -:104D6A0061FC61FC61FC61FC61FC61FC61FC61FC51 -:104D7A00FF000000AAAAAAAA0000D4FB000034FC83 -:104D8A0000000000693D55386B27BE2D532FD12FE7 -:104D9A001331613E0548463E4D3E12400000000078 -:0C4DAA000000983AF82A2330129900000B -:0A4FF60031333A34333A3230000010 +:10258A0003710205E0C15003C15084FDE603100443 +:10259A005013FD9402F0C15005C15084FDE60310AA +:1025AA0004500FC1E0C15084FDE6031004500AFD37 +:1025BA0094027103055008FD9402501FC1E0C150F6 +:1025CA0084FDE60310045012FD94025003C15084A6 +:1025DA00FD4A03C0625C01D1DF03E2EF3C5003C154 +:1025EA00C15084FDE6031004710203711A2050647D +:1025FA00FD9402C717A116F7490A239BA3A7510303 +:10260A00614ADFF4C617A1C15003C15010C150A4DA +:10261A00FD1C041006F50AF9F21004C6D75003C1CE +:10262A005084FD4A03C0625C01D1DD195014FD7B60 +:10263A0024FDF323503CFD9402E0C15003C15084B1 +:10264A00FDE6031004711300711B20710303F0C12E +:10265A005003C15084FDE6031004F2D7C72004FBDF +:10266A00F8FFCC02008F0AF99C035010C150A4FD58 +:10267A004A03C0629F0AF9D53FFBDD04F2ED442705 +:10268A008C037F0AF95C08D1DD108F0AF95C08D146 +:10269A00DF05CC0210EF03CC02208C037F0AF95C21 +:1026AA0004D1DD168F0AF95C04D1DF088C026C04B0 +:1026BA009C02EF068C026C089C028FDAFB5CF372B8 +:1026CA008F0AF95C0C6162629FDAFB8FE6FB7CFF82 +:1026DA0050FF5E029C02D1DD1F34DEFB896E029937 +:1026EA00716207CC0100316207086159018C01D17E +:1026FA00DFF4716307716B278F0AF95C40D1DD093A +:10270A005002C15012FDC136C08F0AF95C01D1DDF9 +:10271A0008E0C15012FDC136C0717AFA8F0AF95C1D +:10272A0041D1DD15340AF9895CBE99D90AF9C1503B +:10273A0010C150A4FDE6031004F21004C6D7FD9A96 +:10274A0023F2D7FDF323F2D7C78FEEFB7617FD7B73 +:10275A0024664FEEFBDFF2F5EEFBF2C6D78FFFFCE5 +:10276A00B0FFFCD161E8ED1528CFFFFC80710407AA +:10277A00E6613012F6712420611043DD32710407DC +:10278A00E661306061FB712120312420137130DB56 +:10279A00FB5002C15011FDC136C0CF0BF902EF0F39 +:1027AA007138DBFBE0C15011FDC136C0F50BF940B1 +:1027BA0002F94BDC0B4002F9B9DE05711220EF0F6A +:1027CA004002F93EDC064002F9BD61C871132031AE +:1027DA0014200D3104200931020705713304EF0377 +:1027EA00713204311205097140DBFB714202EF07B5 +:1027FA007148DBFB714302D50BF9DD06B00BF971A9 +:10280A004202401AF90361F8FD982AD7C72004FB4F +:10281A00F8FF716201717201E0FD94025008FD9E99 +:10282A0039629F02F98FFEFC9C03FD51288FFEFC42 +:10283A004E03DD09FDAC28FDFB2971022030FB297E +:10284A00FDF73A1004C6D7C75009FD9E3962767162 +:10285A0063014CEADC06CFFEFC07EF44664CC6DC9B +:10286A0006CFFEFC06EF39664C9FDC06CFFEFC0560 +:10287A00EF2E664C7CDC06CFFEFC04EF23664C5040 +:10288A00DC06CFFEFC03EF18664C22DC06CFFEFC0A +:10289A0002EF0D664C06DC05E5FEFCEF03F5FEFCD7 +:1028AA00C6D7C72008FBF8FF8FFEFC5006D604CA1D +:1028BA002214F7500689A54804F9A390DFF7500AB5 +:1028CA00FD9402304000BB17C15002C15006C150EE +:1028DA006CFD1C041006304A57BB17C15002C15088 +:1028EA003EC1506CFD1C041006D2DF217108DAFBD0 +:1028FA0040FEFC07DE05E51DF9EF324002F904DE71 +:10290A0006CF1DF903EF26CF1DF905EF207100DA76 +:10291A00FB4002F9F1DC06CF1DF902EF104002F983 +:10292A0004DE06CF1DF903EF04CF1DF904401DF99B +:10293A000161E8EDF72917040300C15004C1500CE6 +:10294A00C1506CFD7403100630DA20BB17C1500267 +:10295A00C1500EC1506CFD1C041006F690BB17C185 +:10296A005002C1500CC1506CFD1C041006314420A9 +:10297A0002EFFA7132208FFEFCF0312E040A21C1D7 +:10298A005040C1C1506CFD1C04100650A5FD9402B4 +:10299A0030DA20BB17C15002C1500EC1506CFD1C69 +:1029AA0004100650A5FD94025004C1506CFD4A0360 +:1029BA00C0629C07E9FEFC09FB224E0761C30AE9D3 +:1029CA00FEFC09F4224E0761D80017040300C15027 +:1029DA0004C1500CC1506CFD1C041006F6BB17C193 +:1029EA005002C1503EC1506CFD1C0410061008C6AE +:1029FA00D7C7C1FBF8FF8F0CF94F02F961F8ED94C4 +:102A0A002A8F02F99F0CF98F02F95070D61230738F +:102A1A0051230480001231FF318E039F0DF99FD696 +:102A2A00FBF6BB8F0DF97C804C95DC1B8F0DF931C1 +:102A3A008F241400BDD8AF06F9FD1D0D1231FF31E8 +:102A4A008E03318FBBEF198F0DF9318F241400BD1E +:102A5A00D8AF08F9FD1D0D1231FF318E03318FBB3E +:102A6A00D904F9F1610900BBBBBF66FC17C150026A +:102A7A00C1500CC1506CFD1C041006D2DF088F0235 +:102A8A00F99F0CF9EF047100DAFBF2C0C6D7C72030 +:102A9A0008FBF8FF401DF902DF07CFD7FB63EDB053 +:102AAA002B401DF903DF2817040600C15002C1504C +:102ABA0004C1506CFD74031006D2DD06CFD7FB6348 +:102ACA00EF0A8C069FD7FB8C079FD8FBEDB02B171C +:102ADA00040600C15002C15004C1506CFD740310B9 +:102AEA0006D2DD117100DAFB710320F5D7FBE6BFD0 +:102AFA001EF9ED852B8C06318E318D080E07081CC8 +:102B0A0000BBD9FEFCF1040223148972ABFD700EDE +:102B1A00BB8C019C068B9C0717040400C15002C1A0 +:102B2A00C1506CFD74031006D2DF508C049FD9FB90 +:102B3A008C04318E318D080E05081C00BBBDD8F6F9 +:102B4A00BDDAC9DC01A0FDF90EDC05CC0364EF2B6C +:102B5A00ABBDD8F6BDDAC9DC819DFDF90EDC05CC2A +:102B6A00030AEF17ABBDD8F6BDDAC9DC019BFDF944 +:102B7A000EDC05CC0305EF03CC03003134040D3120 +:102B8A00120509CFD7FB64F5D8FBEF1A8C064E0362 +:102B9A00DE0C8C069FD7FB8C079FD8FBEF088C03B3 +:102BAA009FD7FBF5D8FB40D7FB0BDE06400EF90B8F +:102BBA00DE1640D7FB06DE06400EF906DE0AD5D73A +:102BCA00FBDF0ED50EF9DD095020C15011FDC136CB +:102BDA00C0D5D7FBDF09D50EF9DD04E6BF1EF98F94 +:102BEA00D7FB9F0EF9D51AF961F8CF0EF96440D7D1 +:102BFA00FB0BDE03E6EF01F6C15012C150A4FDE65D +:102C0A000310041008C6D7303B10BF10F9300E006D +:102C1A00BF12F9D7F64212F961F84210F9DD0EF641 +:102C2A004210F9B210F961F8B212F9F2D7E2D7718B +:102C3A0000010571785005713AD5713BD1713ADDC1 +:102C4A00713BD98F10055CFC9F1005CF54054AE5EE +:102C5A0042057110420571004205714850057130F4 +:102C6A00500571205005CF530505CF52050A713022 +:102C7A00510571205105713BD5717050058F1105B1 +:102C8A005CFC9F1105D77178500571080105D77151 +:102C9A0040F00071783002713AE6713BE2713BEA2A +:102CAA00713BEE8F10055CFC9F1005CF34024AE59C +:102CBA0052FF711A52710A52714830027130300251 +:102CCA0071203002CF330205CF32020A713031024D +:102CDA00713BE6717030028F11055CFC9F11057122 +:102CEA00603002D7717830027148F000D7C7880681 +:102CFA001666614FDD0967614EDE0396EF0186664F +:102D0A0072C6D7C7161714AA0412A943DD29AA0442 +:102D1A0012A923FD5620C3AC02FD562013C2BDD80A +:102D2A0013FDED0EDE0C1714AA0212AA0403BA044C +:102D3A00EF051714A9BA04AC041231FF319E03310E +:102D4A007F087208C6D7C77100F200304400BFB6C8 +:102D5A0001300188BF9001300984BF9E01BF9C01E8 +:102D6A00BF9A01BF9801BF9601BF9401BF9201F5B6 +:102D7A003CFF30FE00BFBE01F6BFBC01BFB8015028 +:102D8A00EEBFBA01A1BFB201C918FE007120120537 +:102D9A0071481CF9401DF902DD0B36100571A4615A +:102DAA00C871401CF9712812058F1CF9313507F5D5 +:102DBA00F5FBCB6CFF00717320C6D730EF00BFB4B0 +:102DCA0001F6BFBA017108F200D7710321D9F5FBE8 +:102DDA00F1E7240000DD1423DD1B23DD1323DD1AB4 +:102DEA0023DD2823DD2D23DD33EF0AFD632EEF2FAC +:102DFA00FDEB2EEF2AFD632EEF25F0C1AE6CFDF739 +:102E0A002CC0F313BE6C716320EF14F6BE6C7162B2 +:102E1A0020EF0CCB6CFF00716320EF03FD952E8F22 +:102E2A001CF9314508716420712104EF0671642090 +:102E3A00715101310421218F1CF9314510F6BE640C +:102E4A00BE6A3164200390EF01F6BE6ED73164206A +:102E5A0004F690EF01F6BE6AD740D7FB06DE04FD02 +:102E6A00952ED740D7FB0BDE10F0C1AE6CFDF72CC8 +:102E7A00C0F313BE6C716220D7D9F4FBC1AE6CFDEE +:102E8A00F72CC0F313BE6C716320D7710221F0C115 +:102E9A00AE6CFDF72CC0F313BE6CA0A4FB40A4FBE0 +:102EAA0040DC3DF5A4FBD9A5FBF1313F0402FD143A +:102EBA00D9A5FBF1BDD85008FDA80D087208E6D2C5 +:102ECA00DD040192DFFC896158D1DD05716220EFD2 +:102EDA0003716320A0A5FB40A5FB2061C8F5A5FBF3 +:102EEA00D7D5A6FBDD04B0A6FBD7CFA6FB04D9A78E +:102EFA00FBF1F734020023DD0625DD0325DF1B4045 +:102F0A00D7FB0BDE09F6BFA8FB716220EF1CD9F4D0 +:102F1A00FBF1BFA8FB716320EF1040D7FB0BDE0566 +:102F2A00716320EF05E6A1BFA8FBAE6C42A8FBDDEA +:102F3A0010AFA8FB426CFFDE05B26CFFEF03A26C78 +:102F4A00FFAE6C42A8FB61F8A0A7FBD78FAAFBB023 +:102F5A00AAFBD1DF7431D4D107715BD1CFACFB02AC +:102F6A00D5ACFBDD347140DAFBD9ABFBF1E73402B7 +:102F7A000023DD0625DD0325DF05F6BE66EF06D94B +:102F8A00F4FBF1BE66A0ABFB40ABFB20DF06F5AB62 +:102F9A00FBB0ACFBCFAAFB16D7CFAAFB1E7148DA4F +:102FAA00FBD5F6FBDF04F6BE66D7D9F4FBF1426621 +:102FBA00FFDD16D9F4FBF112AE6643DE05A266FF09 +:102FCA00EF03B266FFCFAAFB03D731042101D74032 +:102FDA001AF902DF19F6BE64BE6EBE6ABFB0FBBF45 +:102FEA00B6FBBFBCFBBFB4FBBFBAFBBFC0FB3174AF +:102FFA002003EDA930D5ADFB61E8EDA4308F40FB8D +:10300A009FADFB40AEFB1FDC1F7100FAFB4042FB89 +:10301A00FFDD24D5AFFBDD05B0AFFBEF1A8F42FB16 +:10302A009FAFFBF5AEFBEF0F7108FAFBD9AEFBF1D0 +:10303A00A1605C1F9FAEFBE9AEFB0944FB5080D642 +:10304A00BFB0FBE9AEFB0964FB5080D6BFB6FBE913 +:10305A00AEFB0984FB5080D6BFBCFBAFB0FB22B4E9 +:10306A00FB12D941FBF133BDD813FD590DBFB2FB99 +:10307A00AFB6FB22BAFB12D941FBF133BDD813FD1F +:10308A00590DBFB8FBAFBCFB22C0FB12D941FBF103 +:10309A0033BDD813FD590DBFBEFBB0ADFBEF3DF6F6 +:1030AA00BFB0FBBFB6FBBFBCFBAFB4FB1231FF31F5 +:1030BA00AE03316F12F623BFB2FBAFBAFB1231FF78 +:1030CA0031AE03316F12F623BFB8FBAFC0FB12312A +:1030DA00FF31AE03316F12F623BFBEFB8F1CF931ED +:1030EA00451F30BCFBFD0D2DF313BE6430B0FBFD54 +:1030FA000D2DF313BE6E30B6FBFD0D2DF313BE6A14 +:10310A00D730BCFBFD0D2DF313BE6AD7C731122190 +:10311A000BD5C2FBDD06B0C2FBEDDD31711321D93F +:10312A00F7FBF1E7240000DD0F23DD1B23DD11236C +:10313A00DD5723DD2923DD3B5600F506FDEDC931B8 +:10314A005601F506FDEF78D506FDDF075601E506BF +:10315A00FDEF055600F506FDCFC2FBFAEF61D50675 +:10316A00FDDF0B5601E506FDCFC2FBFAEF51F5F77D +:10317A00FBEF4CD506FDDF0B5600E506FDCFC2FB83 +:10318A00FAEF3CCFF7FB02EF36D927FCF1E7240030 +:10319A0000DD0923DD2423DD0A23EF1E5600F50690 +:1031AA00FDEF1CD506FDDF075601E506FDEF0556C6 +:1031BA0000F506FDCFC2FBFAEF055601E506FD8FC5 +:1031CA001CF93145086661FB715107EF066661FB20 +:1031DA00710101C6D7C736F00071F4DC297170F0AD +:1031EA0000CE9D08CE9EC0CE9F80F594FFF593FF3A +:1031FA00F592FFE597FFE596FFCE9505CE9810CE9E +:10320A009C7F7100CEFB711BE3712BE3711AE7718E +:10321A002BE7717A9D710A9E31929E02EFFA710B29 +:10322A009E712321713321714321C6D7C7312221CF +:10323A001E712221710A9E31929E02EFFA34FCFB22 +:10324A003692FF52078B99A5A792DFF9710B9EC69A +:10325A00D7C788061631322115713221C734C4FB0B +:10326A003092FF1652078B99A5A792DFF9C66673AB +:10327A006718C4FBC6D7C77123213134211E7133A5 +:10328A0021710A9E31929E02EFFA3492FF36C4FBF4 +:10329A0052078B99A5A792DFF9710B9E314421132E +:1032AA00717B9E8F04FC9E9A8F05FC9E9B71332135 +:1032BA00717A9EC6D7CFF4FBFFCFCFFB5CCFD0FB92 +:1032CA005FCFF0FB20D7C7CFCCFB10CFCDFB23CFEE +:1032DA00F1FB20F5F5FBF5F6FBF5F7FBF5F8FB56E8 +:1032EA0000664C64DE08723840FB0086EFF3C6D7EE +:1032FA00C788061617F1E73402002361E3ED113699 +:10330A002361F8EDE033B12361E3EDE733240300F1 +:10331A0061F8EDF63324070024070061D8ED113671 +:10332A00240B0061F8ED17342361F8ED5E34236154 +:10333A00F8ED2B342361F8EDDA352561F8EDFA352D +:10334A0024040061F8EDC734B124030061D8EDEB21 +:10335A003424000061F8EDF8342361F8ED113625C4 +:10336A002361E3ED08352361F8ED1A352361F8EDA1 +:10337A002C352361F8ED1A352361F8ED3E352361CA +:10338A00F8ED50352361F8ED60352361F8ED6935C4 +:10339A002361F8ED75352361F8ED81352361F8ED88 +:1033AA008A35252361E3ED11362561F8ED9335233E +:1033BA0061F8ED9F3524030061F8EDAB35240A006E +:1033CA0061F8EDB73524120061F8EDD4352361F8C0 +:1033DA00EDC235ED1336679FCEFBED1D36307725EE +:1033EA00FDF73A66736718CCFBED1D3640D1FB6AD0 +:1033FA00DF1440D2FB68DF0E674C6CDF093069438B +:10340A00FDF73A713AD5679FD3FBED1D3667D1DDDB +:10341A0006300A3FFDF73A34ECFB89616F99ED1DDE +:10342A0036675C02D1DD08304827FDF73AEF0C67B2 +:10343A005C01D1DD06304D27FDF73A675C3CD1DDF2 +:10344A0010305227FDF73A675C3C7266736218CCFB +:10345A00FBED1D3667D1DD625C01D1DD0530080068 +:10346A00EF01F6609F23FC675C02D1DD03E6EF0102 +:10347A00F63423FC89616899675C04D1DD04E6A10E +:10348A00EF01F63423FC89616899675C08D1DD0590 +:10349A00302000EF01F63423FC89616899675C10DB +:1034AA00D1DD05301000EF01F63423FC89616899FB +:1034BA00675C20D161E8716023FCED1D36D514F9F3 +:1034CA00DF09679FF5FBA014F9EF134014F905DE35 +:1034DA000DD914F9F1B112674802FDA014F9ED1DD6 +:1034EA0036675C0F7266736218CCFBED1D364014AA +:1034FA00F964DE0AE914F9671840FBA014F9675C5D +:10350A007F318EC117F1243000FD5B32C0ED1D36CC +:10351A00675C3F318EC117F1243000FD5B32C0ED8C +:10352A001D36675C07318EC117F1243000FD5B320E +:10353A00C0ED1D36675C1F318EC117F1243000FDC6 +:10354A005B32C0ED1D3667318EC117F1243000FDA4 +:10355A005B32C0ED1D36679E999F03FCED1D3671E7 +:10356A004221675C7F9F04FCED1D36714221675C36 +:10357A003F9F05FCED1D36675C3F9F06FCED1D363F +:10358A00675C1F9F07FCED1D3630313DFDF73A673A +:10359A009F0CFCEF7E30EC3CFDF73A679F0DFCEF89 +:1035AA0072300E3DFDF73A679F10FCEF66675C01CB +:1035BA00D161E8FD6B46EF5B401EFCC8DE55E91E93 +:1035CA00FC671870FAA01EFCEF49679F1EFCEF43C8 +:1035DA0067318E247200DD07240500DD0AEF0B3007 +:1035EA004109FDF73AEF03F5ABFF679FEFFBEF23C6 +:1035FA00675CBF9FF1FB675C40D1DD1771732130B7 +:10360A000A39FDF73AEF0CEF0A664C52DE0573678A +:10361A0018CCFBC6D7C716664C30DC094C37DE051A +:10362A00FD3632EF67664C02DF1F8FCEFB5C0372FA +:10363A008F25FC5C03318E316D08616A08128F2573 +:10364A00FC5C80312A6162EF49664C4FDF05FD8FD1 +:10365A0046EF3F664C61DF09E91EFC0970FA72EF1A +:10366A0031664C3DDF0AAE90BF20FCF920FCEF2208 +:10367A00664C3EDF05F921FCEF18664C7FDF0D3002 +:10368A008E3FFDF73A713AD5524AEF06667309CC76 +:10369A00FB72C6D7C71617F1241000240500DC07F1 +:1036AA00244C00DD0DEF0E667238CCFB00715221FE +:1036BA00EF03A01EFCC6D7C7C1C1FBF8FF401AF929 +:1036CA0003DD06401AF904DF2F8C027309D4FB5E6E +:1036DA000AD1DF248C02318E04CCFB14896E0A993C +:1036EA00716207CC0100316207086159018C01D16E +:1036FA00DFF4716307716B271004C6D7CF25FC036B +:10370A00F523FCF527FCF529FCD7C788061617F11F +:10371A00E734020025DD5223DD2325DD3123DD05D3 +:10372A0023DD40EF50717221679F28FC300A39FD72 +:10373A00F73A5040C15012FDC136C0EF38675C03FA +:10374A00D161F8715222675C839F25FCEF27675C81 +:10375A00039F27FC675C034C0261F8711221FD1676 +:10376A0031EF12679F29FCEF0C6791DF08E0C15027 +:10377A0012FDC136C0C6D7C71617F1E7240000DD0F +:10378A007223DD61240300DD0C240200DD6024F9CC +:10379A0000DD67EF6840D7FB5BDC06CF26FC0FEF46 +:1037AA003240D7FB4CDC06CF26FC0BEF2640D7FB7A +:1037BA0033DC06CF26FC07EF1A40D7FB0BDC06CF1B +:1037CA0026FC03EF0E40D7FB06DC05E526FCEF03DB +:1037DA00F526FC31020705308000EF01F6086F2656 +:1037EA00FC7208EF1E8F23FCF523FC72EF15F928F3 +:1037FA00FCEF107142225235EF09F2EF06667309A7 +:10380A0022FC72C6D7C71617F1E7240000DD382458 +:10381A001000DD1C23DD1C23DD30240E00DD1824FE +:10382A001100DD1B240F00DD12243000DD15EF1E10 +:10383A00E2EF1D5202EF195204EF155206EF115230 +:10384A0005EF0D5207EF09F2EF065203EF0252FF9E +:10385A00C6D7C7300A39FDF73A8F10FDB010FDD12F +:10386A0061E8ED0839CF10FD0731642177716321D2 +:10387A00401AF903DF6E3608FDC7D933FCFDCF398C +:10388A00618A70618AFDFE39C0360CFDC7D932FCE7 +:10389A00FDCF39618A70618AFDFE39C0D936FCF1E3 +:1038AA00312F609F35FC8FF1FB5C80D1DD088FF1F1 +:1038BA00FB5C3F9F35FC8F3AFC4F35FCDD268F358C +:1038CA00FC9F3AFC7173218F35FC9FD5FBE935FCCF +:1038DA00090E239F34FCD935FCF11231FE03311F46 +:1038EA00609F28FC7150F000CE300BCF170006CE37 +:1038FA003106FD2603717A30710BE3710BE7C6D7E7 +:10390A00C72004FBF8FF3174210E8F28FC5002D621 +:10391A0012490E239C02EF058F34FC9C025013C1FE +:10392A0050A4FD4A03C08C0270C15013C150A4FDBB +:10393A00E60310045013C150A4FD4A03C0F2100458 +:10394A00C6D7C7168B728C01614ADE248B728C0231 +:10395A00614ADE188C01728C02614ADE068C0131E2 +:10396A008EEF048C02318E087208EF268B72EF22DA +:10397A008B728C02614ADE048B72EF168C01728C98 +:10398A00026142DE068C01318EEF048C02318E0810 +:10399A007208C6D7C716710AE7710BE37150F000B7 +:1039AA00CE300BCF170006669E31FD2603717A30A2 +:1039BA00710BE33182E302EFFA8D1F7158F0007147 +:1039CA000BE772C6D7C7C1C1FBF8FF8C024CF6DC05 +:1039DA000452FFEF1B8C024C0BDE03F2EF128C0237 +:1039EA002C0A9C02318E318D52ECFD700EBB8B720B +:1039FA001004C6D7C7C1C1FBF8FFAC0A14A91489C1 +:103A0A00708C026128706131FD56201344030071E5 +:103A1A00FEDC16AC0A14A9148C0299AC0A14CA0268 +:103A2A0000AC0A14CA0310EF6EAC0A14A914894E2A +:103A3A0002DE0AAC0A148A02819A02EF13AC0A1453 +:103A4A00A914894E0261D308AC0A148A02919A0217 +:103A5A00AC0A148A03919A03D1DF3CAC0A148A0295 +:103A6A004C10DF10A91489318EA112AC0A14A914C2 +:103A7A006299EF17AC0A148A024CF0DF0EA9148976 +:103A8A00318EB112AC0A14A9146299AC0A14CA0292 +:103A9A0000AC0A14CA03101004C6D7EDE23A717BCF +:103AAA00FAC7D546FC61F831042227710322D546AC +:103ABA00FC61E8B046FC717AFA5600664C0CDD12DD +:103ACA0072F3311C7912FDCEFC0061CAFD413B86BE +:103ADA00EFE9717AFAF2C6D7C75600664C0ADE0BCE +:103AEA00F0317E12F67848FC86EFF0C6D7C7C1C11E +:103AFA00FBF8FFCC01008C014C0ADE36717BFA8C94 +:103B0A0001F0317E0448FC14A96168DF09AC02B9EE +:103B1A00717AFAF2EF1D8C01F0317E127948FC615C +:103B2A004902DF06717AFAE2EF09717AFA615901FC +:103B3A00EFC4E21004C6D7C72004FBF8FFF64248D8 +:103B4A00FC61F8ED393C717BFA9C038C034C0ADE6C +:103B5A004F8C03F0317E0448FC14A96168DF0571BB +:103B6A007AFAEF3C8C03F0317E127948FCE743DFA6 +:103B7A0006717AFA00EF21717AFA8C0372F3311C1A +:103B8A007948FCCEFC0061CA629C02D1DF0A8C0330 +:103B9A00F0317E12E67848FC717BFA615903EFAB8B +:103BAA00CC0200CC01018C02F0317E0448FC14A93D +:103BBA006168DD7B8C02F0317E127948FCE743DFD5 +:103BCA00688C014C0ADE628C01F0317E127948FC65 +:103BDA00E743DD50717BFA8C01F0317E0448FC1416 +:103BEA00A96168DF1B616901717BFA8C01F0317E82 +:103BFA0012F67848FC717AFA8C024E01DCE7EF2F54 +:103C0A008C01F0317E0448FC14A9128C02F0317E3A +:103C1A00337848FC8C01F0317E12E67848FC615911 +:103C2A0002717AFA615901EF98615902EDB03BCC01 +:103C3A000200CC01008C014C0ADE1E8C01F0317EA0 +:103C4A000448FC14A96168DF05CC0201EF068C0266 +:103C5A00D161E800615901EFDCF21004C6D7C72030 +:103C6A0006FBF8FF3411FCC55006C150A8C15030FC +:103C7A00FD74031006D2DD1DA05CFC405CFC08DE6E +:103C8A0003E2EF5A340CFC895CFC99FD313D71105A +:103C9A00DAFBF2EF49F55CFC8F0CFC5C01D1DD2606 +:103CAA00401AF903DF205010C180FDC136C0C73663 +:103CBA00100571D4C6DE0F17C15006C150A8C150F5 +:103CCA0030FD74031006401AF901DD11401AF90596 +:103CDA00DD0B8F0CFC5C02D161E8FD6E43F210062D +:103CEA00C6D7D90DFCC15030FD4A03C0629F10FCF3 +:103CFA007130DDFB8FE5FB5C08D1DF06716307716C +:103D0A006B27F2D7D910FCC1D90FFCC15030FDE6A0 +:103D1A000310047130DDFB8FE5FB5C08D1DF06710F +:103D2A006307716B27F2D7C7200AFBF8FF500FC150 +:103D3A005030FD4A03C0403FFB02DF077110DAFB37 +:103D4A00F2EF547118DAFBCC0700CC0812CC0980C8 +:103D5A008F0CFC5C03D1DF08717AD5CC0607EF061D +:103D6A00717BD5CC062F17040600C15004C150A0A0 +:103D7A00C15030FD1C041006C736100571D4C6DECA +:103D8A0015401AF903DF0F17C15006C150A8C150D8 +:103D9A0030FD74031006F2100AC6D7C78F1AF9311C +:103DAA008F24020061F8F560FC8F2AFDB02AFDD14C +:103DBA0061E8ED803ECF2AFD048F1AF9318FE7239F +:103DCA00DD0B24020024030061C8ED803E4060FC44 +:103DDA0002DF0AE0C15010FDC136C0EF134060FC9B +:103DEA00FADF0D5002C15010FDC136C0E6BF1EF900 +:103DFA0031340708712322F560FCEF1531242205BE +:103E0A00F560FCEF0CA060FCD560FC61F8CF60FCAB +:103E1A00FF8F1DF9318FE723DD07B12361D30CEF43 +:103E2A001236100571C4713122EF0B71040271311F +:103E3A0022EF037132223132221A4061FC0361D827 +:103E4A00A061FC4061FC02DF0E5004C15010FDC1AC +:103E5A0036C0EF03F561FC314207184062FC03618A +:103E6A00D8A062FC4062FC02DF0C5010C1FDC136D2 +:103E7A00C0EF03F562FCC6D7C7401AF902C6D7C716 +:103E8A002004FBF8FF401AF90361E8401AF904100C +:103E9A0004C6D7C78F0CFC5C03D1DD11361005713F +:103EAA00D4DE0A30683CFDF73AD261F800401AF9CC +:103EBA0003DF1B31220707306626FDF73A0031443B +:103ECA00220C7143225080C15012FDC136C0401AE3 +:103EDA00F903DD05F6BD1AEF25D5F8FBDF09F6462D +:103EEA001ADD1BB61AEF17D9F4FBF1461ADD0FD902 +:103EFA00F4FB12AD1A43DE04A61AEF02B61AC6D7AD +:103F0A008FECFB5C10D161E87162228FECFB5C0FD5 +:103F1A00D1DD6C8FECFB5C01D1DD05F51AF9EF5FA1 +:103F2A008FECFB5C02D1DD15E0C15003C15084FD6A +:103F3A00E6031004711300711B207103038FECFB5D +:103F4A005C08D1DD05710303EF1C8FECFB5C04D127 +:103F5A00DD14711300711B203154220371030334E1 +:103F6A0025FC895CFC995005FD94027102035003FB +:103F7A00C1C15084FDE6031004711A20715322F561 +:103F8A00ECFBF2D7C7364105718461D8ED3D403666 +:103F9A0041057194DE0771405005CEABAC31B2D108 +:103FAA0004E2ED4C40713BD18F14F9A014F9318E23 +:103FBA00E7240000DD1723DD1C23DD2723DD2C2366 +:103FCA00DD3823DD4423DD4923DD4EEF668F1DF9FD +:103FDA009F4005EF58F0C15084FD4A03C0629F40DC +:103FEA0005EF4A8FFEFC9F4005EF425008C1506C16 +:103FFA00FD4A03C0629F4005EF335009C1506CFD72 +:10400A004A03C0629F4005EF248F66FC9F4005EF7C +:10401A001C8F02F99F4005EF14F171042061DC3115 +:10402A001970F171142061DC61689F4005CEABAC58 +:10403A00E2EF0F7160500571485005713BD5F514D8 +:10404A00F9F2C6D7C78F1AF9318FE724000061F851 +:10405A00EDFD4123DD1B2361F8ED11412361F8EDEC +:10406A009B412361F8EDD8412361F8ED6742EDC722 +:10407A0042D51BF9DF28D560FCDD05F52FFDEF03DE +:10408A00A02FFD402FFD65DC09F51AF9710222ED1A +:10409A00CA424060FC0A61D8EDCA42E51BF97122A6 +:1040AA0022F52FFDF5EFFBFD4105FD1628401DF910 +:1040BA0004DF09710222F51AF9EDCA42FD982AD5E0 +:1040CA00D7FBDF1BD9D9FBF1BDD8F6BDDAC9DC00B5 +:1040DA009BFDF90EDE09710222F51AF9EDCA42FDBD +:1040EA007C25D2DD09710222F51AF9EDCA42401B7C +:1040FA00F901DF05F5F5FBEF04CFF5FB03CF1AF95C +:10410A0002FD5125EDCA42CF350002CF37001DCF3F +:10411A00120510FD392CFD992C714A9DFD0637FDBB +:10412A00D032F537FF712BE0F51BF9710222CBE48F +:10413A003FEFCBE6F6F0FD4105713BD48F1CF93118 +:10414A0035305004C15084FD4A03C0625C03318E8D +:10415A00315D34DBFB896168995002C15084FD4AA4 +:10416A0003C0D2DD067170DBFBEF047178DBFBFD67 +:10417A001628FD502D71381CF9CF1AF9038FCEFB82 +:10418A005C02D1DD095080C15010FDC136C0EDCAB4 +:10419A0042FDCC4231A4E020712BE031020C05FD36 +:1041AA005643EF145027C15005C15084FDE6031051 +:1041BA0004CF1AF9047102223164220CA02EFD40A8 +:1041CA002EFDFF61F8FD5643FD3943EDCA42FDCC91 +:1041DA004231020C18F0C15005C15084FDE60310AB +:1041EA00045005FD9402FD5643CF1AF903FD3943E5 +:1041FA00EDCA42CFF5FB03F5F6FB717220F6426C6D +:10420A00FF61E8EDCA42F5F8FBF6BF1EF9FDC52DC0 +:10421A00FD902CFDEE2C714B9DF5DCFBF5DDFBF5DD +:10422A00DEFBF5DFFB31442002EFFACE3708CBE4A0 +:10423A00BFFFCBE6FFF1CED4FFCF370009F5120559 +:10424A00F6BEE0BEE2BED0716A27FD2726FD112C1C +:10425A00F52FFDCF1AF905712222F560FC3104070A +:10426A0006FD1E2CD2DF1BFD4105FD16284060FC11 +:10427A000ADC06E51BF9E51AF931020743FD112CA0 +:10428A00EF3EF51BF971730171320431120502EF29 +:10429A00FA71430231949E02EFFAFDAA05712AE7E8 +:1042AA00CEA409F5F30061FD31040703712322E569 +:1042BA00F300CEA408712BE7E51AF9EF0300EFFD2E +:1042CA00C6D7D568FCDF1E310200195003C15084DD +:1042DA00FD4A03C0625C01D1DF07F51AF9710222B7 +:1042EA00D7E568FCD74068FCF0DF083104003FF5E9 +:1042FA0068FCD74068FCC8DF0BF51AF9710222CFB7 +:10430A0068FCF0D731020004A068FCD7F0C1500461 +:10431A00C15084FDE60310048FDBFB5C9F9FDBFB2F +:10432A007110ECFB300A3FFDF73ACF68FCF0D7F684 +:10433A00421EF9DD16A21EF98FF0FB5040D612AFCD +:10434A001EF943DC06F51AF9710222D7716322F5C8 +:10435A002EFD717207FD2603FD2603717307D7FD33 +:10436A00D005F2D7C7200CFBF8FF8F12FCF0F91129 +:10437A00FCF303FD562013BC048F14FCF0F913FC64 +:10438A00F303FD562013BC028F16FCF0F915FCF35B +:10439A0003FD562013BBAC04BDD8F6BDDAAC04311C +:1043AA001EBDDCF6BDDEFD2E0DADD8BDDCADDABD21 +:1043BA00DEAC02BDD8F6BDDAAC02311EDADCC3DAF5 +:1043CA00DEC3BDDCF6BDDEFD2E0DC0BDDEC0BDDC2C +:1043DA00ADDEFDA40EADD8BDDCADDABDDEABBDD819 +:1043EA00F6BDDAAB311EDADCC3DADEC3BDDCF6BDFC +:1043FA00DEFD2E0DC0BDDEC0BDDCADDEFDA40EDAD5 +:10440A00DAADD8FD8E47C3C58FF6FC5C3FF0317E2E +:10441A000476FC14C2C0B9A0F6FCF6BC08BC0A9C1F +:10442A00078C074C2EDD3E8FF6FC0E0770F161DC1F +:10443A00605C3FF0317E127976FCBDD8F6BDDA8C2D +:10444A000773095023318FBDDC70BDDEFD2E0DAC24 +:10445A0008BDDCAC0AFDA40EADDABC0AADD8BC08B6 +:10446A00615907EFBCAC08BDD8AC0ABDDAC9DC009B +:10447A0004F6FDF80DC9DCFFFFF6FD0D0FADD8BF40 +:10448A0070FCAF6AFC4270FCDD12AF6CFCBF6EFCC4 +:10449A00AF6AFCBF6CFCAF70FCBF6AFCAF6CFC423D +:1044AA006EFCDC50AF6AFC426CFCDE48AF30FD4269 +:1044BA006AFCDE404072FC16DC1F4072FCA0DE166D +:1044CA008F73FC4F72FCDE0EAF6AFC2274FC4469E7 +:1044DA001061C8FD4745F572FCAF6AFC445146DCE1 +:1044EA000BAF6AFC241027BF32FDEF1930F82ABF40 +:1044FA0032FDEF114072FCFFDD03E6EF01F6347284 +:10450A00FC89610899AF6EFC426CFCDC1BAF6CFC49 +:10451A00426AFCDE13AF6AFC4232FDDE0BF573FC25 +:10452A00AF6AFCBF74FCEF114073FCFFDD03E6EFDA +:10453A0001F63473FC89610899100CC6D7C72008A4 +:10454A00FBF8FFA017FCD517FCDF1CA018FCD51838 +:10455A00FCDF14A019FCD519FCDF0CCF17FCFFCF28 +:10456A0018FCFFCF19FCFF717BFA710A9E31929EEB +:10457A0002EFFA8E98FD210F9C058E949F34FD8ED2 +:10458A00969F35FD8E979F36FD8E939C048E929C46 +:10459A0003FD204713BC068F37FD4E05DF12AFF827 +:1045AA00FC614906DE41AC0622F8FCFD4346EF37C2 +:1045BA008C05318EB112D937FDF143DF1F8C055CB2 +:1045CA000391DF03E6EF01F6046D01313D120103A9 +:1045DA0022F8FC610906BBFD4346EF0B8F37FD4EFF +:1045EA0005DE04F6FD43468C059F37FDAC06BFF891 +:1045FA00FC8FF7FC9C028C044F1CFCDE138C034FCF +:10460A001DFCDE0C6169028C024CA861C8CC02A7B1 +:10461A008C02F0317E0420F914A944FFFFDF04E67E +:10462A00B9EF128C02F0317E0420F914A944FEFF7E +:10463A00DD03A9A1B91008C6D7C7161744A9006196 +:10464A00C836A800A0F7FC40F7FCA861C8F5F7FC3B +:10465A00F9F7FCF3311CF67820F9B7F647DFE5C61F +:10466A00D7C756A89666F0317E12F6B17820F96659 +:10467A00D1DFF1F517FCF518FCF519FCF5F7FCC6C6 +:10468A00D7717322D7C72004FBF8FFD914F9F1E7D1 +:10469A00240000DD1123DD1C23DD2123DD2623DD9B +:1046AA002F23DD33EF388FF7FC9FFAFCA014F9F9BA +:1046BA0034FDEF5EA014F9F935FDEF56A014F9F9AF +:1046CA0036FDEF4EA014F98F37FDFD3B0F72EF4216 +:1046DA00A014F95255EF3BA014F952AAEF34F9FA93 +:1046EA00FCF3311C7920F9BB317222058B9C03EF54 +:1046FA00128C019C03D5FAFCDF06CFFAFCA7EF0364 +:10470A00B0FAFC718071772261DC61FB7171228CD5 +:10471A0003721004C6D7C72006FBF8FF8E98FD2146 +:10472A000F9C038E97FD210F9C028E96FD210F9CF4 +:10473A00018E94FD210F9B710B9E717AFA8C02F007 +:10474A00317E12798023BC048C035C03D1DF158C83 +:10475A00024C03DE0C8C024C02DF098C014C1D61F9 +:10476A00F86179048C01318EB1610904BC04313DD0 +:10477A00120103BC048C040D708C051C00BC0412CD +:10478A001006C6D7C7C3C12008FBF8FFF661490A5D +:10479A0061F8614908DF07F7340000ED2B48E6BCF1 +:1047AA0004F6BC06AC0ABC02AC08BBAC0661490202 +:1047BA00AC0461F8614900DE28AC04BDD8AC06BD82 +:1047CA00DAE1FDB30EADDABC06ADD8BC04ABBDD898 +:1047DA00AC02BDDAE1FDCE0EADDABC02ADD8BBEF5C +:1047EA00CAAC06BC02AC04BBAC08BDD8AC0ABDDA84 +:1047FA00AC04BDDCAC06FD310EAC04BDDCAC06FD80 +:10480A00A40EE1FDCE0EADDABC06ADD8BC04AC06F2 +:10481A00614902AC0461F8614900DCC5AC0214AB21 +:10482A0012100CC6D7C7D538FDDD05B038FDEF78B4 +:10483A00CF38FD02311407067110DBFBEF04711843 +:10484A00DBFB8FDBFB7FFCFC76D1DD5C8FDBFB9F28 +:10485A00FCFC401AF903DF22665C10D1DD1C8FDBF9 +:10486A00FB5C10D1DD0B5080C15011FDC136C0EF89 +:10487A00095040C15011FDC136C0401AF903DD0686 +:10488A00401AF904DF22665C02D1DD1C8FDBFB5C77 +:10489A0002D1DD0B5040C15010FDC136C0EF0950A6 +:0A48AA0020C15010FDC136C0C6D772 +:1048B400CF0BF90461FC61FCC1C3C5C7520C9292D1 +:1048C40069D4FEC1DFF88EFD708EFCC1717AFA40A6 +:1048D4001AF903DF06306626FDF73AC09EFC609E97 +:1048E400FD34D4FE5206C0B9A5A592DFF9C6C4C2F0 +:1048F400C061FC61DF520C929269D4FEC1DFF88E74 +:10490400FD708EFCC1717AFAC736410571A4C6DC0C +:1049140041F500FD71485005716050053154212660 +:10492400716207715321D5DCFBDF0FD5DDFBDF0A94 +:10493400D5DEFBDF05D5DFFBDD0C31620702EFFAC4 +:10494400716307716B27FD8B46FD8032F514F9ED19 +:10495400664AC73641057184C6DE0DF500FD71480F +:104964005005FD8032ED664AC73641057194C6DEB6 +:10497400154000FD03DD0C4000FD04DD064000FD94 +:104984000161F8F500FDD900FDF1E7240000DD0820 +:1049940023DD1323DD39EF6071405005E500FD711F +:1049A400505005ED664A8F40059F15F99F18F9D9B7 +:1049B40015F9FD1F36629F17F94015F97FDD06CF03 +:1049C40000FD02EF03F500FD71505005ED664AC786 +:1049D4003641057194C6DE1CC736410571C4C6DE76 +:1049E40006CF00FD03EF11F500FD7148500571601D +:1049F4005005EF6ECF00FD044000FD03DF0E8F175E +:104A0400F99F4005D915F9FD9E36EF108F400576C4 +:104A1400C7D915F9FDFA32C071505005D918F9F10A +:104A2400242900DD2D240400DD28242200DD232494 +:104A34001100DD0C240100DD19241E00DD14EF0C2F +:104A44004015F960DF0CCF15F961EF06F514F9A0F4 +:104A540015F94000FD03DF0AD915F9FD1F36629FE1 +:104A640017F9C09EFC609EFD34D4FE5206C0B9A561 +:104A7400A592DFF961FCC1C3C5C7520C929269D4F7 +:104A8400FEC1DFF88EFD708EFCC1F616717AFA71E4 +:104A94004AE5717BBD51405F0401D1DD05A7F647AE +:104AA400DFF3300400BF2401F6BF2A01300B0BBF33 +:104AB4002801FD2603300B0FBF2801FD2603300F0C +:104AC4000FBF2801710AE6714320C09EFC609EFD61 +:104AD40034D4FE5206C0B9A5A592DFF9C6C4C2C03B +:104AE40061FCC1C3C5C7520C929269D4FEC1DFF800 +:104AF4008EFD708EFCC1717AFAD53EFBDD0EEB3C67 +:104B0400FB899E44A23CFBB03EFBEF2B710AE630CE +:104B14000400BF2401F6BF2A01300B0BBF2801FD9E +:104B24002603300B0FBF2801FD2603300F0FBF28CB +:104B340001713320714320C09EFC609EFD34D4FE7D +:104B44005206C0B9A5A592DFF9C6C4C2C061FC6112 +:104B5400EF520C929269D4FEC1DFF88EFD708EFC88 +:104B6400C12008FBF8FF71503002CEABACCC010081 +:104B7400F6BC0231B2E210617902F6614902DFF358 +:104B840071603002ED0A4C8E519B713BE28B5C02EA +:104B9400D1DD1D8B5C08D1DF0971503002CC0100DE +:104BA400EFCE8C0770FD8137629E50CC0102EFC0BE +:104BB4008B5C03D1DF408E509C05715030028C0118 +:104BC400D1DF0E8C0570FD0F38629C07CC0101EF1C +:104BD400328C014C02DF0671603002EF29CF3402BF +:104BE4005A716030028C0570C18C0770FD1437C097 +:104BF400CF34024AEF108B5C01D1DD0671603002C4 +:104C0400EF0400ED744B1008C09EFC609EFD34D48C +:104C1400FE5206C0B9A5A592DFF961FCC18F06FC5E +:104C24004F96FFDF328F07FC4F97FFDF2A8F08FC78 +:104C34004F98FFDF228FE5FB5C04D1DF1A7120DD82 +:104C4400FB716307716B27401AF905DD06401AF9F9 +:104C54000161F8CF1BF902C061FCA046FC61FCC1F4 +:104C6400C3C5C7520C929269D4FEC1DFF88EFD70A1 +:104C74008EFCC1C1FBF8FF8D1F9C018E31318EE784 +:104C8400240600DD0823DD0F23DD25EF45717AFAC4 +:104C94008C019F33FCEF3B717AFA401DF902DF0768 +:104CA4008C019F32FCEF2B51FF2E019F32FCEF222F +:104CB400717AFA8C019F02F98FDAFB5C01D1DF1261 +:104CC400401AF903DD06401AF904DF0630FB29FD1A +:104CD400F73A4031FF09DE08A031FF710BE3EF1909 +:104CE4007158F0007162214044FC02DF03F6EF05C5 +:104CF400D944FCF1A1609F44FCC0C09EFC609EFDB1 +:104D040034D4FE5206C0B9A5A592DFF9C6C4C2C008 +:104D140061FC61FF520C929269D4FEC1DFF88EFDF2 +:104D2400708EFCC1717AFA8F0CFC5C03D1DD1940E2 +:104D34001AF903DD06401AF904DF0D36100571D4A3 +:104D4400DE0630683CFDF73AC09EFC609EFD34D41C +:104D5400FE5206C0B9A5A592DFF961FC61FC00EF23 +:104D6400FD61FC61FC61FC61FC61FC61FC61FC6156 +:104D7400FC61FC61FC61FC61FC61FC61FC61FC6147 +:104D8400FC61FC61FC61FC61FC61FC61FC61FC6137 +:074D9400FC61FC61FC61FC05 +:0A4FF60031373A34363A3533000003 :00000001FF  \ No newline at end of file diff --git a/trunk/bsr.lmf b/trunk/bsr.lmf index 09c46993a695930d79313d442caefb489a08983a..b8c1a589c564904a3d9d7192a3f6c344de255024 100644 GIT binary patch literal 156696 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 diff --git a/trunk/bsr_k0r.map b/trunk/bsr_k0r.map index dba1e71..1955671 100644 --- a/trunk/bsr_k0r.map +++ b/trunk/bsr_k0r.map @@ -1,7 +1,7 @@ -78K0R Linker W1.31 Date:30 Jun 2010 Page: 1 +78K0R Linker W1.31 Date: 6 Jul 2010 Page: 1 Command: -yC:\Program Files\NEC Electronics Tools\DEV -_msgoff -obsr.l mf ..\..\..\Program Files\NEC Electronics Tools\CC78K0R\W2.10 @@ -23,9 +23,9 @@ Direc-file:bsr_mcu.dr *** Link information *** - 67 output segment(s) - 3B86H byte(s) real data - 5270 symbol(s) defined + 66 output segment(s) + 3BC8H byte(s) real data + 5417 symbol(s) defined *** Memory map *** @@ -90,54 +90,51 @@ Direc-file:bsr_mcu.dr 000C4H 00000H ?CSEGSI 000C4H 0000AH CSEG ?OCDSTAD 000CEH 0000AH CSEG - LDR_CODE 000D8H 006F0H CSEG - LDR_CODE loader 000D8H 0018BH - LDR_CODE main 00263H 0006AH - LDR_CODE WDT 002CDH 00000H - LDR_CODE i2c_mcu 002CDH 002BCH + LDR_CODE 000D8H 008B6H CSEG + LDR_CODE loader 000D8H 001E0H + LDR_CODE main 002B8H 0006EH + LDR_CODE WDT 00326H 00000H + LDR_CODE i2c_mcu 00326H 002AAH LDR_CODE self_flash - 00589H 0023FH - @@LCODE 007C8H 00386H CSEG - @@LCODE @cstart 007C8H 0006DH - @@LCODE @imul 00835H 00011H - @@LCODE @lumul 00846H 0002BH - @@LCODE @isdiv 00871H 00022H - @@LCODE @iudiv 00893H 0002DH - @@LCODE @isrem 008C0H 00021H - @@LCODE @iurem 008E1H 0002FH - @@LCODE @lsdiv 00910H 00039H - @@LCODE @ludiv 00949H 0003FH - @@LCODE @ladd 00988H 0000FH - @@LCODE @llsh 00997H 0001BH - @@LCODE @lursh 009B2H 0001FH - @@LCODE @iscmp 009D1H 0000CH - @@LCODE @lband 009DDH 00014H - @@LCODE @bcdtob 009F1H 0001AH - @@LCODE @bbcd 00A0BH 00024H - @@LCODE m_fcmp 00A2FH 00073H - @@LCODE m_fcom5 00AA2H 0002AH - @@LCODE m_fcom6 00ACCH 0001FH - @@LCODE m_lstof 00AEBH 00016H - @@LCODE m_lutof 00B01H 0004DH - FSL_CODE 00B4EH 00322H CSEG + 005D0H 003BEH + FSL_CODE 0098EH 00322H CSEG FSL_CODE fsl_block_cmd - 00B4EH 0002BH + 0098EH 0002BH FSL_CODE fsl_block_check - 00B79H 00013H + 009B9H 00013H FSL_CODE fsl_common - 00B8CH 0014FH + 009CCH 0014FH FSL_CODE fsl_reset - 00CDBH 00001H + 00B1BH 00001H FSL_CODE fsl_si_ibf - 00CDCH 00064H + 00B1CH 00064H FSL_CODE fsl_phySwap - 00D40H 0004DH + 00B80H 0004DH FSL_CODE fsl_si_common - 00D8DH 00061H - FSL_CODE fsl_swap 00DEEH 00030H + 00BCDH 00061H + FSL_CODE fsl_swap 00C2EH 00030H FSL_CODE fsl_write - 00E1EH 00052H -* gap * 00E70H 00186H + 00C5EH 00052H + @@LCODE 00CB0H 002AFH CSEG + @@LCODE @cstart 00CB0H 0006DH + @@LCODE @imul 00D1DH 00011H + @@LCODE @lumul 00D2EH 0002BH + @@LCODE @isdiv 00D59H 00022H + @@LCODE @iudiv 00D7BH 0002DH + @@LCODE @isrem 00DA8H 00021H + @@LCODE @iurem 00DC9H 0002FH + @@LCODE @lsdiv 00DF8H 00039H + @@LCODE @ludiv 00E31H 0003FH + @@LCODE @divuw 00E70H 00034H + @@LCODE @ladd 00EA4H 0000FH + @@LCODE @llsh 00EB3H 0001BH + @@LCODE @lursh 00ECEH 0001FH + @@LCODE @iscmp 00EEDH 0000CH + @@LCODE @lscmp 00EF9H 00014H + @@LCODE @lband 00F0DH 00014H + @@LCODE @bcdtob 00F21H 0001AH + @@LCODE @bbcd 00F3BH 00024H +* gap * 00F5FH 00097H MGC_LOAD 00FF6H 0000AH CSEG AT MGC_LOAD magic 00FF6H 0000AH @@ -189,125 +186,154 @@ Direc-file:bsr_mcu.dr @@CNSTL @bcdtob 02000H 0000AH @@CNSTL 0200AH 00010H CSEG PAGE64KP @@CNSTL @bbcd 0200AH 00010H - @@CNSTL 0201AH 000CEH CSEG PAGE64KP - @@CNSTL m_fcom5 0201AH 000CEH - @@R_INIS 020E8H 00000H CSEG UNIT64KP - @@R_INIS @cstart 020E8H 00000H - @@R_INIS loader 020E8H 00000H - @@R_INIS pm 020E8H 00000H - @@R_INIS i2c_ctr 020E8H 00000H - @@R_INIS main 020E8H 00000H - @@R_INIS magic 020E8H 00000H - @@R_INIS WDT 020E8H 00000H - @@R_INIS i2c_mcu 020E8H 00000H - @@R_INIS i2c_twl 020E8H 00000H - @@R_INIS led 020E8H 00000H - @@R_INIS rtc 020E8H 00000H - @@R_INIS vreg_ctr 020E8H 00000H - @@R_INIS vreg_twl 020E8H 00000H - @@R_INIS adc 020E8H 00000H - @@R_INIS renge 020E8H 00000H - @@R_INIS accero 020E8H 00000H + @@R_INIT 0201AH 0003CH CSEG UNIT64KP + @@R_INIT @cstart 0201AH 00000H + @@R_INIT loader 0201AH 00000H + @@R_INIT pm 0201AH 00002H + @@R_INIT i2c_ctr 0201CH 00002H + @@R_INIT main 0201EH 00000H + @@R_INIT magic 0201EH 00000H + @@R_INIT WDT 0201EH 00000H + @@R_INIT i2c_mcu 0201EH 00000H + @@R_INIT i2c_twl 0201EH 00000H + @@R_INIT led 0201EH 00006H + @@R_INIT rtc 02024H 00000H + @@R_INIT vreg_ctr 02024H 00000H + @@R_INIT vreg_twl 02024H 00000H + @@R_INIT adc 02024H 0000AH + @@R_INIT renge 0202EH 00018H + @@R_INIT accero 02046H 00000H + @@R_INIT self_flash + 02046H 00000H + @@R_INIT sw 02046H 00002H + @@R_INIT task_debug + 02048H 00002H + @@R_INIT task_misc + 0204AH 00000H + @@R_INIT task_sys 0204AH 00002H + @@R_INIT pedo_alg_thre_det2 + 0204CH 00008H + @@R_INIT ini_VECT 02054H 00000H + @@R_INIT task_status + 02054H 00002H + @@R_INIT @rom 02056H 00000H + @@R_INIS 02056H 00000H CSEG UNIT64KP + @@R_INIS @cstart 02056H 00000H + @@R_INIS loader 02056H 00000H + @@R_INIS pm 02056H 00000H + @@R_INIS i2c_ctr 02056H 00000H + @@R_INIS main 02056H 00000H + @@R_INIS magic 02056H 00000H + @@R_INIS WDT 02056H 00000H + @@R_INIS i2c_mcu 02056H 00000H + @@R_INIS i2c_twl 02056H 00000H + @@R_INIS led 02056H 00000H + @@R_INIS rtc 02056H 00000H + @@R_INIS vreg_ctr 02056H 00000H + @@R_INIS vreg_twl 02056H 00000H + @@R_INIS adc 02056H 00000H + @@R_INIS renge 02056H 00000H + @@R_INIS accero 02056H 00000H @@R_INIS self_flash - 020E8H 00000H - @@R_INIS sw 020E8H 00000H + 02056H 00000H + @@R_INIS sw 02056H 00000H @@R_INIS task_debug - 020E8H 00000H + 02056H 00000H @@R_INIS task_misc - 020E8H 00000H - @@R_INIS task_sys 020E8H 00000H + 02056H 00000H + @@R_INIS task_sys 02056H 00000H @@R_INIS pedo_alg_thre_det2 - 020E8H 00000H - @@R_INIS ini_VECT 020E8H 00000H + 02056H 00000H + @@R_INIS ini_VECT 02056H 00000H @@R_INIS task_status - 020E8H 00000H - @@R_INIS @rom 020E8H 00000H - @@CALT 020E8H 00000H CSEG - @@CALT @cstart 020E8H 00000H - @@CALT loader 020E8H 00000H - @@CALT pm 020E8H 00000H - @@CALT i2c_ctr 020E8H 00000H - @@CALT main 020E8H 00000H - @@CALT magic 020E8H 00000H - @@CALT WDT 020E8H 00000H - @@CALT i2c_mcu 020E8H 00000H - @@CALT i2c_twl 020E8H 00000H - @@CALT led 020E8H 00000H - @@CALT rtc 020E8H 00000H - @@CALT vreg_ctr 020E8H 00000H - @@CALT vreg_twl 020E8H 00000H - @@CALT adc 020E8H 00000H - @@CALT renge 020E8H 00000H - @@CALT accero 020E8H 00000H + 02056H 00000H + @@R_INIS @rom 02056H 00000H + @@CALT 02056H 00000H CSEG + @@CALT @cstart 02056H 00000H + @@CALT loader 02056H 00000H + @@CALT pm 02056H 00000H + @@CALT i2c_ctr 02056H 00000H + @@CALT main 02056H 00000H + @@CALT magic 02056H 00000H + @@CALT WDT 02056H 00000H + @@CALT i2c_mcu 02056H 00000H + @@CALT i2c_twl 02056H 00000H + @@CALT led 02056H 00000H + @@CALT rtc 02056H 00000H + @@CALT vreg_ctr 02056H 00000H + @@CALT vreg_twl 02056H 00000H + @@CALT adc 02056H 00000H + @@CALT renge 02056H 00000H + @@CALT accero 02056H 00000H @@CALT self_flash - 020E8H 00000H - @@CALT sw 020E8H 00000H + 02056H 00000H + @@CALT sw 02056H 00000H @@CALT task_debug - 020E8H 00000H + 02056H 00000H @@CALT task_misc - 020E8H 00000H - @@CALT task_sys 020E8H 00000H + 02056H 00000H + @@CALT task_sys 02056H 00000H @@CALT pedo_alg_thre_det2 - 020E8H 00000H - @@CALT ini_VECT 020E8H 00000H + 02056H 00000H + @@CALT ini_VECT 02056H 00000H @@CALT task_status - 020E8H 00000H - @@RLINIT 020E8H 00000H CSEG UNIT64KP - @@RLINIT loader 020E8H 00000H - @@RLINIT pm 020E8H 00000H - @@RLINIT i2c_ctr 020E8H 00000H - @@RLINIT main 020E8H 00000H - @@RLINIT magic 020E8H 00000H - @@RLINIT WDT 020E8H 00000H - @@RLINIT i2c_mcu 020E8H 00000H - @@RLINIT i2c_twl 020E8H 00000H - @@RLINIT led 020E8H 00000H - @@RLINIT rtc 020E8H 00000H - @@RLINIT vreg_ctr 020E8H 00000H - @@RLINIT vreg_twl 020E8H 00000H - @@RLINIT adc 020E8H 00000H - @@RLINIT renge 020E8H 00000H - @@RLINIT accero 020E8H 00000H + 02056H 00000H + @@RLINIT 02056H 00000H CSEG UNIT64KP + @@RLINIT loader 02056H 00000H + @@RLINIT pm 02056H 00000H + @@RLINIT i2c_ctr 02056H 00000H + @@RLINIT main 02056H 00000H + @@RLINIT magic 02056H 00000H + @@RLINIT WDT 02056H 00000H + @@RLINIT i2c_mcu 02056H 00000H + @@RLINIT i2c_twl 02056H 00000H + @@RLINIT led 02056H 00000H + @@RLINIT rtc 02056H 00000H + @@RLINIT vreg_ctr 02056H 00000H + @@RLINIT vreg_twl 02056H 00000H + @@RLINIT adc 02056H 00000H + @@RLINIT renge 02056H 00000H + @@RLINIT accero 02056H 00000H @@RLINIT self_flash - 020E8H 00000H - @@RLINIT sw 020E8H 00000H + 02056H 00000H + @@RLINIT sw 02056H 00000H @@RLINIT task_debug - 020E8H 00000H + 02056H 00000H @@RLINIT task_misc - 020E8H 00000H - @@RLINIT task_sys 020E8H 00000H + 02056H 00000H + @@RLINIT task_sys 02056H 00000H @@RLINIT pedo_alg_thre_det2 - 020E8H 00000H - @@RLINIT ini_VECT 020E8H 00000H + 02056H 00000H + @@RLINIT ini_VECT 02056H 00000H @@RLINIT task_status - 020E8H 00000H - @@RLINIT @rom 020E8H 00000H - @@CODEL 020E8H 00000H CSEG - @@CODEL pm 020E8H 00000H - @@CODEL i2c_ctr 020E8H 00000H - @@CODEL magic 020E8H 00000H - @@CODEL i2c_twl 020E8H 00000H - @@CODEL led 020E8H 00000H - @@CODEL rtc 020E8H 00000H - @@CODEL vreg_ctr 020E8H 00000H - @@CODEL vreg_twl 020E8H 00000H - @@CODEL adc 020E8H 00000H - @@CODEL renge 020E8H 00000H - @@CODEL accero 020E8H 00000H - @@CODEL sw 020E8H 00000H + 02056H 00000H + @@RLINIT @rom 02056H 00000H + @@CODEL 02056H 00000H CSEG + @@CODEL pm 02056H 00000H + @@CODEL i2c_ctr 02056H 00000H + @@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 + @@CODEL renge 02056H 00000H + @@CODEL accero 02056H 00000H + @@CODEL sw 02056H 00000H @@CODEL task_debug - 020E8H 00000H + 02056H 00000H @@CODEL task_misc - 020E8H 00000H - @@CODEL task_sys 020E8H 00000H + 02056H 00000H + @@CODEL task_sys 02056H 00000H @@CODEL pedo_alg_thre_det2 - 020E8H 00000H - @@CODEL ini_VECT 020E8H 00000H + 02056H 00000H + @@CODEL ini_VECT 02056H 00000H @@CODEL task_status - 020E8H 00000H - @@LCODEL 020E8H 00008H CSEG - @@LCODEL abs 020E8H 00008H -* gap * 020F0H 00010H + 02056H 00000H + @@LCODEL 02056H 00008H CSEG + @@LCODEL abs 02056H 00008H +* gap * 0205EH 000A2H MGC_MIMI 02100H 0000AH CSEG AT MGC_MIMI magic 02100H 0000AH @@CNST 0210AH 00290H CSEG @@ -340,88 +366,57 @@ Direc-file:bsr_mcu.dr @@CNST ini_VECT 0239AH 00000H @@CNST task_status 0239AH 00000H - ROM_CODE 0239AH 024F0H CSEG - ROM_CODE pm 0239AH 00889H - ROM_CODE i2c_ctr 02C23H 00060H - ROM_CODE i2c_twl 02C83H 0005EH - ROM_CODE led 02CE1H 004FBH - ROM_CODE rtc 031DCH 000E0H - ROM_CODE vreg_ctr 032BCH 00444H - ROM_CODE vreg_twl 03700H 00155H - ROM_CODE adc 03855H 001EAH - ROM_CODE renge 03A3FH 001EDH - ROM_CODE accero 03C2CH 0013DH - ROM_CODE sw 03D69H 000DDH + ROM_CODE 0239AH 0251AH CSEG + ROM_CODE pm 0239AH 0089FH + ROM_CODE i2c_ctr 02C39H 00060H + ROM_CODE i2c_twl 02C99H 0005EH + ROM_CODE led 02CF7H 004E8H + ROM_CODE rtc 031DFH 000E0H + ROM_CODE vreg_ctr 032BFH 00447H + ROM_CODE vreg_twl 03706H 00156H + ROM_CODE adc 0385CH 00249H + ROM_CODE renge 03AA5H 001C3H + ROM_CODE accero 03C68H 0013DH + ROM_CODE sw 03DA5H 000DDH ROM_CODE task_debug - 03E46H 0001BH + 03E82H 0001BH ROM_CODE task_misc - 03E61H 001B1H - ROM_CODE task_sys 04012H 00332H + 03E9DH 001B1H + ROM_CODE task_sys 0404EH 00320H ROM_CODE pedo_alg_thre_det2 - 04344H 004C1H + 0436EH 004C1H ROM_CODE task_status - 04805H 00085H - @@BASE 0488AH 004F0H CSEG BASE - @@BASE loader 0488AH 00000H - @@BASE pm 0488AH 00043H - @@BASE i2c_ctr 048CDH 00183H - @@BASE main 04A50H 00000H - @@BASE magic 04A50H 00000H - @@BASE WDT 04A50H 00000H - @@BASE i2c_mcu 04A50H 000D9H - @@BASE i2c_twl 04B29H 000CDH - @@BASE led 04BF6H 00000H - @@BASE rtc 04BF6H 00043H - @@BASE vreg_ctr 04C39H 00000H - @@BASE vreg_twl 04C39H 00000H - @@BASE adc 04C39H 000BFH - @@BASE renge 04CF8H 00000H - @@BASE accero 04CF8H 0004AH + 0482FH 00085H + @@BASE 048B4H 004E7H CSEG BASE + @@BASE loader 048B4H 00000H + @@BASE pm 048B4H 00043H + @@BASE i2c_ctr 048F7H 00183H + @@BASE main 04A7AH 00000H + @@BASE magic 04A7AH 00000H + @@BASE WDT 04A7AH 00000H + @@BASE i2c_mcu 04A7AH 000D9H + @@BASE i2c_twl 04B53H 000CDH + @@BASE led 04C20H 00000H + @@BASE rtc 04C20H 00043H + @@BASE vreg_ctr 04C63H 00000H + @@BASE vreg_twl 04C63H 00000H + @@BASE adc 04C63H 000B3H + @@BASE renge 04D16H 00000H + @@BASE accero 04D16H 0004AH @@BASE self_flash - 04D42H 00000H - @@BASE sw 04D42H 00000H + 04D60H 00000H + @@BASE sw 04D60H 00000H @@BASE task_debug - 04D42H 00000H + 04D60H 00000H @@BASE task_misc - 04D42H 00000H - @@BASE task_sys 04D42H 00000H + 04D60H 00000H + @@BASE task_sys 04D60H 00000H @@BASE pedo_alg_thre_det2 - 04D42H 00000H - @@BASE ini_VECT 04D42H 00038H + 04D60H 00000H + @@BASE ini_VECT 04D60H 0003BH @@BASE task_status - 04D7AH 00000H - @@R_INIT 04D7AH 0003CH CSEG UNIT64KP - @@R_INIT @cstart 04D7AH 00000H - @@R_INIT loader 04D7AH 00000H - @@R_INIT pm 04D7AH 00002H - @@R_INIT i2c_ctr 04D7CH 00002H - @@R_INIT main 04D7EH 00000H - @@R_INIT magic 04D7EH 00000H - @@R_INIT WDT 04D7EH 00000H - @@R_INIT i2c_mcu 04D7EH 00000H - @@R_INIT i2c_twl 04D7EH 00000H - @@R_INIT led 04D7EH 00006H - @@R_INIT rtc 04D84H 00000H - @@R_INIT vreg_ctr 04D84H 00000H - @@R_INIT vreg_twl 04D84H 00000H - @@R_INIT adc 04D84H 0000AH - @@R_INIT renge 04D8EH 00018H - @@R_INIT accero 04DA6H 00000H - @@R_INIT self_flash - 04DA6H 00000H - @@R_INIT sw 04DA6H 00002H - @@R_INIT task_debug - 04DA8H 00002H - @@R_INIT task_misc - 04DAAH 00000H - @@R_INIT task_sys 04DAAH 00002H - @@R_INIT pedo_alg_thre_det2 - 04DACH 00008H - @@R_INIT ini_VECT 04DB4H 00000H - @@R_INIT task_status - 04DB4H 00002H - @@R_INIT @rom 04DB6H 00000H -* gap * 04DB6H 00240H + 04D9BH 00000H +* gap * 04D9BH 0025BH MGC_TAIL 04FF6H 0000AH CSEG AT MGC_TAIL magic 04FF6H 0000AH @@ -429,7 +424,7 @@ Direc-file:bsr_mcu.dr BASE ADDRESS=FF900H SIZE=00500H OUTPUT INPUT INPUT BASE SIZE SEGMENT SEGMENT MODULE ADDRESS - @@DATA FF900H 003FAH DSEG BASEP + @@DATA FF900H 003FEH DSEG BASEP @@DATA @cstart FF900H 00002H @@DATA loader FF902H 00000H @@DATA pm FF902H 00012H @@ -443,180 +438,180 @@ Direc-file:bsr_mcu.dr @@DATA rtc FFBC4H 00008H @@DATA vreg_ctr FFBCCH 00056H @@DATA vreg_twl FFC22H 00010H - @@DATA adc FFC32H 00012H - @@DATA renge FFC44H 00016H - @@DATA accero FFC5AH 00002H + @@DATA adc FFC32H 00014H + @@DATA renge FFC46H 00016H + @@DATA accero FFC5CH 00002H @@DATA self_flash - FFC5CH 00000H - @@DATA sw FFC5CH 00004H + FFC5EH 00002H + @@DATA sw FFC60H 00004H @@DATA task_debug - FFC60H 00002H + FFC64H 00002H @@DATA task_misc - FFC62H 00002H - @@DATA task_sys FFC64H 00002H + FFC66H 00002H + @@DATA task_sys FFC68H 00002H @@DATA pedo_alg_thre_det2 - FFC66H 00092H - @@DATA ini_VECT FFCF8H 00000H + FFC6AH 00092H + @@DATA ini_VECT FFCFCH 00000H @@DATA task_status - FFCF8H 00002H - @@DATA @rom FFCFAH 00000H - @@INIT FFCFAH 0003CH DSEG BASEP - @@INIT @cstart FFCFAH 00000H - @@INIT loader FFCFAH 00000H - @@INIT pm FFCFAH 00002H - @@INIT i2c_ctr FFCFCH 00002H - @@INIT main FFCFEH 00000H - @@INIT magic FFCFEH 00000H - @@INIT WDT FFCFEH 00000H - @@INIT i2c_mcu FFCFEH 00000H - @@INIT i2c_twl FFCFEH 00000H - @@INIT led FFCFEH 00006H - @@INIT rtc FFD04H 00000H - @@INIT vreg_ctr FFD04H 00000H - @@INIT vreg_twl FFD04H 00000H - @@INIT adc FFD04H 0000AH - @@INIT renge FFD0EH 00018H - @@INIT accero FFD26H 00000H + 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 @@INIT self_flash - FFD26H 00000H - @@INIT sw FFD26H 00002H - @@INIT task_debug - FFD28H 00002H - @@INIT task_misc FFD2AH 00000H - @@INIT task_sys FFD2AH 00002H + @@INIT sw FFD2AH 00002H + @@INIT task_debug + FFD2CH 00002H + @@INIT task_misc + FFD2EH 00000H + @@INIT task_sys FFD2EH 00002H @@INIT pedo_alg_thre_det2 - FFD2CH 00008H - @@INIT ini_VECT FFD34H 00000H + FFD30H 00008H + @@INIT ini_VECT FFD38H 00000H @@INIT task_status - FFD34H 00002H - @@INIT @rom FFD36H 00000H - @@INIS FFD36H 00000H DSEG UNITP - @@INIS @cstart FFD36H 00000H - @@INIS loader FFD36H 00000H - @@INIS pm FFD36H 00000H - @@INIS i2c_ctr FFD36H 00000H - @@INIS main FFD36H 00000H - @@INIS magic FFD36H 00000H - @@INIS WDT FFD36H 00000H - @@INIS i2c_mcu FFD36H 00000H - @@INIS i2c_twl FFD36H 00000H - @@INIS led FFD36H 00000H - @@INIS rtc FFD36H 00000H - @@INIS vreg_ctr FFD36H 00000H - @@INIS vreg_twl FFD36H 00000H - @@INIS adc FFD36H 00000H - @@INIS renge FFD36H 00000H - @@INIS accero FFD36H 00000H + 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 @@INIS self_flash - FFD36H 00000H - @@INIS sw FFD36H 00000H + FFD3AH 00000H + @@INIS sw FFD3AH 00000H @@INIS task_debug - FFD36H 00000H + FFD3AH 00000H @@INIS task_misc - FFD36H 00000H - @@INIS task_sys FFD36H 00000H + FFD3AH 00000H + @@INIS task_sys FFD3AH 00000H @@INIS pedo_alg_thre_det2 - FFD36H 00000H - @@INIS ini_VECT FFD36H 00000H + FFD3AH 00000H + @@INIS ini_VECT FFD3AH 00000H @@INIS task_status - FFD36H 00000H - @@INIS @rom FFD36H 00000H - @@DATS FFD36H 00000H DSEG UNITP - @@DATS @cstart FFD36H 00000H - @@DATS loader FFD36H 00000H - @@DATS pm FFD36H 00000H - @@DATS i2c_ctr FFD36H 00000H - @@DATS main FFD36H 00000H - @@DATS magic FFD36H 00000H - @@DATS WDT FFD36H 00000H - @@DATS i2c_mcu FFD36H 00000H - @@DATS i2c_twl FFD36H 00000H - @@DATS led FFD36H 00000H - @@DATS rtc FFD36H 00000H - @@DATS vreg_ctr FFD36H 00000H - @@DATS vreg_twl FFD36H 00000H - @@DATS adc FFD36H 00000H - @@DATS renge FFD36H 00000H - @@DATS accero FFD36H 00000H + 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 @@DATS self_flash - FFD36H 00000H - @@DATS sw FFD36H 00000H + FFD3AH 00000H + @@DATS sw FFD3AH 00000H @@DATS task_debug - FFD36H 00000H + FFD3AH 00000H @@DATS task_misc - FFD36H 00000H - @@DATS task_sys FFD36H 00000H + FFD3AH 00000H + @@DATS task_sys FFD3AH 00000H @@DATS pedo_alg_thre_det2 - FFD36H 00000H - @@DATS ini_VECT FFD36H 00000H + FFD3AH 00000H + @@DATS ini_VECT FFD3AH 00000H @@DATS task_status - FFD36H 00000H - @@DATS @rom FFD36H 00000H - FSL_DATA FFD36H 00010H DSEG UNITP + FFD3AH 00000H + @@DATS @rom FFD3AH 00000H + FSL_DATA FFD3AH 00010H DSEG UNITP FSL_DATA fsl_common - FFD36H 00010H - @@INITL FFD46H 00000H DSEG UNIT64KP - @@INITL loader FFD46H 00000H - @@INITL pm FFD46H 00000H - @@INITL i2c_ctr FFD46H 00000H - @@INITL main FFD46H 00000H - @@INITL magic FFD46H 00000H - @@INITL WDT FFD46H 00000H - @@INITL i2c_mcu FFD46H 00000H - @@INITL i2c_twl FFD46H 00000H - @@INITL led FFD46H 00000H - @@INITL rtc FFD46H 00000H - @@INITL vreg_ctr FFD46H 00000H - @@INITL vreg_twl FFD46H 00000H - @@INITL adc FFD46H 00000H - @@INITL renge FFD46H 00000H - @@INITL accero FFD46H 00000H + 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 @@INITL self_flash - FFD46H 00000H - @@INITL sw FFD46H 00000H + FFD4AH 00000H + @@INITL sw FFD4AH 00000H @@INITL task_debug - FFD46H 00000H + FFD4AH 00000H @@INITL task_misc - FFD46H 00000H - @@INITL task_sys FFD46H 00000H + FFD4AH 00000H + @@INITL task_sys FFD4AH 00000H @@INITL pedo_alg_thre_det2 - FFD46H 00000H - @@INITL ini_VECT FFD46H 00000H + FFD4AH 00000H + @@INITL ini_VECT FFD4AH 00000H @@INITL task_status - FFD46H 00000H - @@INITL @rom FFD46H 00000H - @@DATAL FFD46H 00000H DSEG UNIT64KP - @@DATAL loader FFD46H 00000H - @@DATAL pm FFD46H 00000H - @@DATAL i2c_ctr FFD46H 00000H - @@DATAL main FFD46H 00000H - @@DATAL magic FFD46H 00000H - @@DATAL WDT FFD46H 00000H - @@DATAL i2c_mcu FFD46H 00000H - @@DATAL i2c_twl FFD46H 00000H - @@DATAL led FFD46H 00000H - @@DATAL rtc FFD46H 00000H - @@DATAL vreg_ctr FFD46H 00000H - @@DATAL vreg_twl FFD46H 00000H - @@DATAL adc FFD46H 00000H - @@DATAL renge FFD46H 00000H - @@DATAL accero FFD46H 00000H + 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 @@DATAL self_flash - FFD46H 00000H - @@DATAL sw FFD46H 00000H + FFD4AH 00000H + @@DATAL sw FFD4AH 00000H @@DATAL task_debug - FFD46H 00000H + FFD4AH 00000H @@DATAL task_misc - FFD46H 00000H - @@DATAL task_sys FFD46H 00000H + FFD4AH 00000H + @@DATAL task_sys FFD4AH 00000H @@DATAL pedo_alg_thre_det2 - FFD46H 00000H - @@DATAL ini_VECT FFD46H 00000H + FFD4AH 00000H + @@DATAL ini_VECT FFD4AH 00000H @@DATAL task_status - FFD46H 00000H - @@DATAL @rom FFD46H 00000H -* gap * FFD46H 000BAH + FFD4AH 00000H + @@DATAL @rom FFD4AH 00000H +* gap * FFD4AH 000B6H MEMORY=RAM2 BASE ADDRESS=FFE20H SIZE=000C0H @@ -636,22 +631,22 @@ Direc-file:bsr_mcu.dr @@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.1 - @@BITS renge FFE21H.7 00000H.2 - @@BITS accero FFE22H.1 00000H.0 + @@BITS adc FFE21H.6 00000H.2 + @@BITS renge FFE22H.0 00000H.2 + @@BITS accero FFE22H.2 00000H.0 @@BITS self_flash - FFE22H.1 00000H.0 - @@BITS sw FFE22H.1 00000H.2 + FFE22H.2 00000H.0 + @@BITS sw FFE22H.2 00000H.2 @@BITS task_debug - FFE22H.3 00000H.0 + FFE22H.4 00000H.0 @@BITS task_misc - FFE22H.3 00000H.3 - @@BITS task_sys FFE22H.6 00000H.0 + FFE22H.4 00000H.3 + @@BITS task_sys FFE22H.7 00000H.0 @@BITS pedo_alg_thre_det2 - FFE22H.6 00000H.1 - @@BITS ini_VECT FFE22H.7 00000H.0 + FFE22H.7 00000H.1 + @@BITS ini_VECT FFE23H.0 00000H.0 @@BITS task_status - FFE22H.7 00000H.0 + FFE23H.0 00000H.0 * gap * FFE23H 000B1H @@SEGREG FFED4H 00004H DSEG AT @@SEGREG @SEGREG FFED4H 00004H diff --git a/trunk/bsr_mcu.dr b/trunk/bsr_mcu.dr index f45329b..bd8099c 100644 --- a/trunk/bsr_mcu.dr +++ b/trunk/bsr_mcu.dr @@ -11,8 +11,8 @@ MEMORY ROM : (02000H, 03000H ) ; ブートブロック0に割り当てる MERGE LDR_CODE : =BCL0 MERGE LDR_CODL : =BCL0 -MERGE @@LCODE : =BCL0 ; スタートアップルーチン MERGE FSL_CODE : =BCL0 ; =FSL ; 謹製フラッシュライブラリ +MERGE @@LCODE : =BCL0 ; スタートアップルーチン ;MERGE @@LCODEL : =BCL0 ;MERGE LDR_RINT:=BCL0 diff --git a/trunk/config.h b/trunk/config.h index ccd5086..388e187 100644 --- a/trunk/config.h +++ b/trunk/config.h @@ -6,13 +6,12 @@ //#define _ALLOW_NOBATT_ //#define _FORCE_INFO_LED_FULLCOLOR_ //#define _DEBUG_BT_IRQ_ -#define _DEBUG_BT_TEMP_ +//#define _DEBUG_BT_TEMP_ //#define _DBG_PEDO_AUTO_ENABLE_ -#define _DEBUG_PM_BOMB_VOL_ #define MCU_VER_MAJOR 0x00 -#define MCU_VER_MINOR 0x21 +#define MCU_VER_MINOR 0x23 //#define PM_CCIC_TIM diff --git a/trunk/hoge.bin b/trunk/hoge.bin index cc4f5b5d3a381cb857da7772cd9897003db140d8..4e6482ed61cfb37351b5777035734d22a9f50b90 100644 GIT binary patch delta 7962 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 delta 7883 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 UP-dFdcz___CkQ*G{k|Ok|IfgaQ2+n{ diff --git a/trunk/incs.h b/trunk/incs.h index 8cdc0dc..0c8ad20 100644 --- a/trunk/incs.h +++ b/trunk/incs.h @@ -20,6 +20,7 @@ #include "bsr_system.h" #include "renge\renge.h" +#include "loader.h" #include "vreg_ctr.h" #include "vreg_twl.h" diff --git a/trunk/ini_VECT.c b/trunk/ini_VECT.c index 5478f6d..cca0012 100644 --- a/trunk/ini_VECT.c +++ b/trunk/ini_VECT.c @@ -92,14 +92,13 @@ __interrupt void fn_intwdti( ) } #endif } + __interrupt void fn_intlvi( ) { -#ifdef _irq_debug_ while( 1 ) { NOP(); } -#endif } __interrupt void fn_intp0(){ diff --git a/trunk/led.c b/trunk/led.c index c55879b..1f4de59 100644 --- a/trunk/led.c +++ b/trunk/led.c @@ -37,7 +37,7 @@ uni_info_LED info_LED; // 赤LEDの電池残量LEDの点滅パターン -st_led_red_batt_empty led_red_batt_empty = { 0xAA, 0xAA, 0xAA, 0xAA }; +st_led_red_batt_empty led_red_batt_empty = { 0x55, 0x55, 0x55, 0x55 }; // フルカラーとの自動判別のため、一時領域としてもっておく @@ -147,7 +147,6 @@ void LED_init( ) if( system_status.model == MODEL_TS_BOARD ) { #ifdef _FORCE_INFO_LED_FULLCOLOR_ - // todo debug // system_status.info_fullcolor = 1; #endif } @@ -209,19 +208,7 @@ void tsk_led_pow( ) switch ( vreg_ctr[VREG_C_LED_POW] ) { case ( LED_POW_ILM_AUTO ): - switch ( system_status.pwr_state ) - { - case SLEEP: - led_pow_hotaru( ); - break; - - case ON: - led_pow_normal( ); - break; - - default: - break; - } + led_pow_normal( ); break; case ( LED_POW_ILM_HOTARU ): diff --git a/trunk/led.h b/trunk/led.h index 4b5d429..4b3cc39 100644 --- a/trunk/led.h +++ b/trunk/led.h @@ -17,8 +17,8 @@ #define LED_duty_notify_blu TDR02 // これらはduty変えられません -#define LED_pow_red P7.5 -#define LED_CAM P4.2 +#define LED_pow_red P4.2 +#define LED_CAM P7.5 // 旧仕様 ///////////////////////////// diff --git a/trunk/loader.c b/trunk/loader.c index 45df7e6..94ba68a 100644 --- a/trunk/loader.c +++ b/trunk/loader.c @@ -28,6 +28,7 @@ #include "reboot.h" +#include "magic.h" // ======================================================== #if (FSL_DATA_BUFFER_SIZE>0) @@ -47,12 +48,6 @@ static fsl_u08 fsl_MK2H_bak_u08; /* } -// magic.c の記述と違わないように注意! -#define MGC_LOAD 0x0FF6 -#define MGC_FOOT 0x4FF6 - - - // ======================================================== void FSL_Open( void ); void FSL_Close( void ); @@ -68,6 +63,54 @@ void main( ) { while( 1 ) { + WDT_Restart( ); + + if( !RTCEN ) // これは書き替えたときにしか使えない + { + // 通常の電源投入 + u8 pwup_delay0 = 0; + u8 pwup_delay1 = 0; + + do + { // 電池接続時、16ms待ってみる(チャタリング対策) + pwup_delay0 += 1; + do + { + pwup_delay1 += 1; + } + while( pwup_delay1 != 0 ); // u16にするとコンパイラが怒るんだが…。 + } + while( pwup_delay0 != 0 ); + } + + + // ファームの整合性チェック // + { + u8 i; + u8 comp = 0; + + // ローダーと本体は同じバージョンか? + /// 次へのアップデートの途中で終わってないか? + for( i = 0; i < sizeof( __TIME__ ); i++ ) // sizeof( __TIME__ ) = 8 らし + { + comp += ( *( __far u8 * )( MGC_LOAD + i ) == *( u8 * )( MGC_FOOT + i ) ) ? 0 : 1; + comp += ( *( u8 * )( MGC_HEAD + i ) == *( u8 * )( MGC_FOOT + i ) ) ? 0 : 1; + } + + if( *( u8 * )( MGC_FOOT ) == 0xFF ) // 消去済のまま + { + comp += 1; + } + + if( comp != 0 ) + { + hdwinit2( ); + // ファームリストアを試みる + firm_restore( ); + // 帰ってこない。リセットをかける。 + } + } + WDT_Restart( ); if( RTCEN ) // これは書き替えたときにしか使えない { @@ -93,51 +136,13 @@ void main( ) } system_status.reboot = 1; } - else + else if(( my_resf & 0x01 ) != 0 ) { - // 通常の電源投入 - u8 pwup_delay0 = 0; - u8 pwup_delay1 = 0; - - do - { // 電池接続時、16ms待ってみる(チャタリング対策) - pwup_delay0 += 1; - do - { - pwup_delay1 += 1; - } - while( pwup_delay1 != 0 ); // u16にするとコンパイラが怒るんだが…。 - } - while( pwup_delay0 != 0 ); + vreg_ctr[ VREG_C_MCU_STATUS ] |= ( 1 << 2 ); } hdwinit2( ); } - - // ファームの整合性チェック // - { - u8 i; - u8 comp = 0; - - // ローダーと本体は同じバージョンか? - /// 次へのアップデートの途中で終わってないか? - for( i = 0; i < sizeof( __TIME__ ); i++ ) // sizeof( __TIME__ ) = 8 らし - { - comp += ( *( __far u8 * )( MGC_LOAD + i ) == *( u8 * )( MGC_FOOT + i ) ) ? 0 : 1; - } - - if( *( u8 * )( MGC_FOOT ) == 0xFF ) // 消去済のまま - { - comp += 1; - } - - if( comp != 0 ) - { - // ファームリストアを試みる - firm_restore( ); - // 帰ってこない。リセットをかける。 - } - } - + // 通常運転 main_loop( ); } @@ -379,3 +384,25 @@ void hdwinit2( ) DRC0 = 0b00000000; /* DMAチャネル0の動作禁止 */ DRC1 = 0b00000000; /* DMAチャネル1の動作禁止 */ } + + + +/****************************************************************************** + 単位は ms + NOPを回すだけ、指定時間CPUを *占有します* 。 + 割り込みとか入るとその分遅れます。 + 少し誤差あります。 + *****************************************************************************/ +void wait_ms( u8 ms ){ + u16 fine; + + WDT_Restart(); + // まだ適当です! + while( ms != 0 ){ + ms--; + fine = 860; + while( fine != 0 ){ + fine -= 1; + } + } +} diff --git a/trunk/loader.h b/trunk/loader.h index e69de29..3b9faa6 100644 --- a/trunk/loader.h +++ b/trunk/loader.h @@ -0,0 +1,7 @@ +#ifndef _loader_h_ +#define _loader_h_ + +void wait_ms( u8 ); + +#endif + diff --git a/trunk/magic.c b/trunk/magic.c index 6faa3f7..d914adf 100644 --- a/trunk/magic.c +++ b/trunk/magic.c @@ -9,9 +9,11 @@ #pragma section @@CNSTL MGC_LOAD AT 0x0FF6 __far const unsigned char MGC_LOAD[] = __TIME__; + #pragma section @@CNST MGC_MIMI AT 0x2100 const unsigned char MGC_HEAD[] = __TIME__; + #pragma section @@CNST MGC_TAIL AT 0x4FF6 const unsigned char MGC_TAIL[] = __TIME__; diff --git a/trunk/main.c b/trunk/main.c index 71beee0..0dbc329 100644 --- a/trunk/main.c +++ b/trunk/main.c @@ -41,7 +41,7 @@ void main_loop( void ) iic_mcu_start( ); EI( ); - BT_chk( ); // 実機やバッテリの判定、電池残量ICの設定 + BT_init( ); // 実機やバッテリの判定、電池残量ICの設定 system_status.pwr_state = OFF_TRIG; if( system_status.reboot ) @@ -55,6 +55,7 @@ void main_loop( void ) { system_status.pwr_state = ON_TRIG; } + vreg_ctr[VREG_C_BT_REMAIN] = 100; } vreg_ctr_init( ); diff --git a/trunk/pm.c b/trunk/pm.c index 30525f9..f0d76d1 100644 --- a/trunk/pm.c +++ b/trunk/pm.c @@ -28,11 +28,18 @@ bit bt_chg_ready; // u8 chg_led_override; // アダプタ差したとき、充電するしないに関わらずしばらく点灯させる +// ======================================================== +static void BT_maker_detect(); +static void BT_mgic_init(); + + // ======================================================== #ifdef _PMIC_TWL_ u8 blset; #endif + + /* ======================================================== 液晶系の電源制御  ステータスフラグはすぐに立ててしまう。 @@ -59,14 +66,14 @@ err PM_LCD_on( ) rv = PM_chk_LDSW( ); - if( rv != 0 ) + if( rv != 0 ) { // 電源起動エラーなら電源も切れてしまう。ここではケアしない vreg_ctr[VREG_C_STATUS] |= REG_BIT_LCD_POW; set_irq( VREG_C_IRQ3, REG_BIT_LCD_ON ); SND_DEPOP_SND_ENABLE; - return ( ERR_ERR ); + return ( ERR_ERR ); } #ifdef _PMIC_TWL_ @@ -246,9 +253,7 @@ err PM_sys_pow_on( ) PM_LDSW_on( ); - wait_ms( 1 ); - - wait_ms( DELAY_PM_TW_PWUP ); + wait_ms( 1 + DELAY_PM_TW_PWUP ); PM_VDD_normMode(); PM_VDD_on( ); @@ -696,9 +701,9 @@ void tsk_batt( ) ***********************************************************/ #define swap_endian_16( x ) (unsigned int)(( x << 8 ) | ( x >> 8 )) -void BT_chk( ) +void BT_init( ) { - u8 temp; + BT_VENDER battery_manufacturer_old; union{ u16 _u16; // endian 注意 struct{ @@ -709,51 +714,21 @@ void BT_chk( ) BT_DET_P = 1; BT_TEMP_P = 1; - wait_ms(1); // チャージに時間が掛かる + wait_ms(1); // 電圧が上がるのに時間が掛かる + // 電池温度測定 // + // TS,白箱判定も兼ねるのでこっちが先でないとダメ + raw_adc_temperature = get_adc( ADC_SEL_BATT_TEMP ); + + battery_manufacturer_old = battery_manufacturer; + BT_maker_detect(); + + if( battery_manufacturer != battery_manufacturer_old ) { - BT_VENDER battery_manufacturer_old = battery_manufacturer; - - // 電池メーカーの識別 - temp = get_adc( ADC_SEL_BATT_DET ); - BT_DET_P = 0; - 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 != battery_manufacturer_old ) - { - if( battery_manufacturer < BT_VENDER_OPEN ) - { - // バッテリが変わった // - bt_comp = BT_COMP[ battery_manufacturer ]; // バッテリパラメータ変更 - - wait_ms( 10 ); - // 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 ); - - bt_chg_ready = 1; - } - else - { - // 電池が外された - bt_chg_ready = 0; - } - } + // バッテリが変わった // + BT_mgic_init(); // battery_manufacturer == BT_VENDER_OPEN 時は来ないのだ! + tski_BT_temp_update( ); // 温度のtemp。 残量ICに行きます + bt_chg_ready = 1; } // 電池温度監視スタート @@ -763,8 +738,34 @@ void BT_chk( ) +void BT_maker_detect() +{ + u8 temp; -void BT_init( ) + // 電池メーカーの識別 + temp = get_adc( ADC_SEL_BATT_DET ); + BT_DET_P = 0; + 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]; @@ -776,20 +777,26 @@ void BT_init( ) }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; - /// デバッグ用は別にまとめた + 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を返す - */ - - // 電池温度測定(TS,白箱判定も兼ねる) // - raw_adc_temperature = get_adc( ADC_SEL_BATT_TEMP ); + */ // 1. ロック解除 @@ -845,7 +852,7 @@ void BT_init( ) if( system_status.model == MODEL_JIKKI ) { - // wait_ms( 5 + 1 ); I2C_mの初期化時にウェイト入れてるので不要 + // wait_ms( 5 + 1 ); 前にウェイト入れてるので不要 // 2. 初期パラメータを一時保存 iic_mcu_read( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_RCOMP, 4, origParam ); @@ -882,6 +889,7 @@ void BT_init( ) // カスタムモデル書き込みOK! }else{ // 失敗だったらリトライするのか? + NOP(); } // 10.元のRCOMPとOCVを書き戻す @@ -892,7 +900,6 @@ void BT_init( ) iic_mcu_write( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_LOCK, 2, &dat_16 ); // おしまい // - tski_BT_temp_update( ); // 温度のtemp。 残量ICに行きます } } @@ -962,9 +969,7 @@ task_status_immed tski_BT_temp_update( )  BT_init()が実行されている必要があります。 **********************************************************/ void BT_get_left(){ - u8 temp[2]; - - // 電池残量更新 // + u8 temp_fuel[2]; #ifdef _DEBUG_BT_IRQ_ if( vreg_ctr[ VREG_C_COMMAND3 ] == 'd' ) @@ -976,76 +981,94 @@ void BT_get_left(){ { if( system_status.model == MODEL_TS_BOARD ) { + // TS // vreg_ctr[ VREG_C_BT_REMAIN ] = 99; } else if( system_status.model == MODEL_SHIROBAKO ) { - if( iic_mcu_read( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_SOC, 2, temp ) != ERR_SUCCESS ) + // 白箱 // + 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[0]; - vreg_ctr[ VREG_C_BT_REMAIN_FINE ] = temp[1]; + vreg_ctr[ VREG_C_BT_REMAIN ] = temp_fuel[0]; + vreg_ctr[ VREG_C_BT_REMAIN_FINE ] = temp_fuel[1]; } } else - { // 実機 - if(( vreg_ctr[ VREG_C_STATUS_1 ] & REG_BIT_GASGAUGE_ERR ) == 0 ) + { + 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 ) { - temp[0] = iic_mcu_read_a_byte( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_VCELL ); - if( iic_mcu_result != 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_STATUS_1 ] |= REG_BIT_GASGAUGE_ERR; - bt_chg_ready = 0; - vreg_ctr[ VREG_C_BT_REMAIN ] = 0; - system_status.cnt_force_off = 1; // 強制電源断フラグ - } - else - { // 通常パス - vreg_ctr[ VREG_C_BT_VOLTAGE ] = temp[0]; + vreg_ctr[ VREG_C_BT_VOLTAGE ] = temp_v[0]; - if( iic_mcu_read( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_SOC, 2, temp ) == ERR_SUCCESS ) - { - vreg_ctr[ VREG_C_BT_REMAIN ] = temp[0]; - vreg_ctr[ VREG_C_BT_REMAIN_FINE ] = temp[1]; - if( battery_manufacturer > BT_VENDER_6 ) - { - // 来ないはずだが - NOP(); - vreg_ctr[ VREG_C_BT_REMAIN ] = 0; - vreg_ctr[ VREG_C_BT_REMAIN_FINE ] = 0; - } - } + temp16 = ( temp_v[0] << 8 ) + temp_v[1]; - if( BT_CHG_Ena && !BT_CHG_n ){ - vreg_ctr[ VREG_C_BT_REMAIN ] = 100; - } - // モデルゲージと実際との乖離が大きい/電圧がPMICの限界を超えそう - else if( vreg_ctr[ VREG_C_BT_VOLTAGE ] < V_TH_ZERO ) + if( temp16 > V_TH_LO ) { - // 電圧が規定値になってしまったので強制off - vreg_ctr[ VREG_C_BT_REMAIN ] = 0; + temp_force_fule_left = 100; } - else if(( vreg_ctr[ VREG_C_BT_VOLTAGE ] < V_TH_EMPTY ) && ( vreg_ctr[ VREG_C_BT_REMAIN ] > BATT_TH_EMPTY )) + else if( temp16 > V_TH_EMPTY ) { - vreg_ctr[ VREG_C_BT_REMAIN ] = BATT_TH_EMPTY; + temp_force_fule_left = 10; } - else if(( vreg_ctr[ VREG_C_BT_VOLTAGE ] < V_TH_LO ) && ( vreg_ctr[ VREG_C_BT_REMAIN ] > BATT_TH_LO )) + else if( temp16 > V_TH_ZERO ) { - vreg_ctr[ VREG_C_BT_REMAIN ] = BATT_TH_LO; + 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; diff --git a/trunk/pm.h b/trunk/pm.h index ec0fcfd..334c4d7 100644 --- a/trunk/pm.h +++ b/trunk/pm.h @@ -15,12 +15,15 @@ #define BATT_TH_LO 10 #define BATT_TH_EMPTY 5 - +/* #define V_K 16 / 1.25 -#define V_TH_LO (u8)( 3200 / V_K ) -#define V_TH_EMPTY (u8)( 3150 / V_K ) -#define V_TH_ZERO (u8)( 3100 / V_K ) - +#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_LO 40960 +#define V_TH_EMPTY 40320 +#define V_TH_ZERO 39680 //========================================================= #define LED_CHARGE P2.4 @@ -135,7 +138,6 @@ void PM_LCD_off( ); err PM_BL_set( u8 ); -void BT_chk(); void BT_init(); void BT_get_left(); diff --git a/trunk/renge/renge.c b/trunk/renge/renge.c index 1c5a5de..b42acfc 100644 --- a/trunk/renge/renge.c +++ b/trunk/renge/renge.c @@ -299,23 +299,3 @@ imm_list_sort_fin: } - -/****************************************************************************** - 単位は ms - NOPを回すだけ、指定時間CPUを *占有します* 。 - 割り込みとか入るとその分遅れます。 - 少し誤差あります。 - *****************************************************************************/ -void wait_ms( u8 ms ){ - u16 fine; - - WDT_Restart(); - // まだ適当です! - while( ms != 0 ){ - ms--; - fine = 860; - while( fine != 0 ){ - fine -= 1; - } - } -} diff --git a/trunk/renge/renge.h b/trunk/renge/renge.h index 58bf013..bd7c5ae 100644 --- a/trunk/renge/renge.h +++ b/trunk/renge/renge.h @@ -17,8 +17,6 @@ err renge_task_immed_run(); err renge_task_immed_add( task_status_immed* ); // static err renge_task_immed_del( u8 ); -void wait_ms( u8 ); - //****************************************************************************** diff --git a/trunk/self_flash.c b/trunk/self_flash.c index 9e09753..69d5385 100644 --- a/trunk/self_flash.c +++ b/trunk/self_flash.c @@ -16,7 +16,9 @@ #include "i2c_ctr.h" #include "pool.h" +#include "magic.h" +#include "pm.h" // ======================================================== const u8 fsl_fx_MHz_u08 = 8; @@ -74,6 +76,9 @@ void firm_restore( ); static err my_FSL_Init(); static err firm_duplicate( u8 block_src, u8 block_dest ); +void alert( u8 ); +void led_print( u8 ); + // ======================================================== @@ -126,9 +131,10 @@ void firm_update( ) target_block <= UPDATE_BLOCK_LAST; target_block += 1 ) { - // 新ファーム領域削除 - FSL_Erase( target_block ); - +/* すでに消してある。でないと中断されたとき終了してるか判別出来ない +// // 新ファーム領域削除 +// FSL_Erase( target_block ); +*/ // 分割書き込み for( split_write_count = 0; ( ( split_write_count < SELF_UPDATE_SPLIT_WRITE_NUM ) @@ -164,22 +170,28 @@ void firm_update( ) != FSL_OK ) { // 書き込み後のチェックエラー + while(1){} // リストア - firm_duplicate( UPDATE_BLOCK_LAST +1, - FIRM_TOP ); + firm_duplicate( UPDATE_BLOCK_LAST +1, FIRM_TOP ); FSL_ForceReset(); // 戻ってこない // } } // 1ブロック書き込み完了。内部ベリファイを行う + P1.5 = 1; + DBG_LED_on; + if( FSL_IVerify( target_block ) != FSL_OK ){ + while(1){} // 再度消去→書き込み ベリファイを繰り返すだけじゃダメでした... todo…? // リストア firm_duplicate( UPDATE_BLOCK_LAST +1, FIRM_TOP ); FSL_ForceReset(); // 戻ってこない // } + DBG_LED_off; + P1.5 = 0; if( SPD ) { @@ -210,8 +222,7 @@ void firm_update( ) { // データ(マジックナンバーしか見てない)エラー // リストア - firm_duplicate( UPDATE_BLOCK_LAST, - FIRM_TOP ); + firm_duplicate( UPDATE_BLOCK_LAST, FIRM_TOP ); FSL_ForceReset(); // リセット // 戻ってこない // } @@ -229,24 +240,129 @@ void firm_update( ) ======================================================== */ void firm_restore( ) { - my_FSL_Init(); + PM1.5 = 0; + + // バックアップは正常? // + { + u16 i; + u8 comp = 0; + + for( i = 0; i < sizeof( __TIME__ ); i++ ) // sizeof( __TIME__ ) = 8 らし + { + comp += ( *( __far u8 * )( MGC_LOAD_BKUP + i ) == *( u8 * )( MGC_HEAD_BKUP + i ) ) ? 0 : 1; + comp += ( *( u8 * )( MGC_HEAD_BKUP + i ) == *( u8 * )( MGC_FOOT_BKUP + i ) ) ? 0 : 1; + } + if( *( u8 * )( MGC_FOOT_BKUP ) == 0xFF ) + { + comp += 1; + } + + if( comp != 0 ) + { + // バックアップ領域も壊れた... + comp = 0; + + // 3.3Vが上がらないと困る + EI( ); + iic_mcu_start( ); + RESET2_ast; + FCRAM_RST_ast; + GYRO_DISABLE(); + PM_LDSW_on(); + wait_ms( 1 + DELAY_PM_TW_PWUP ); + PM_VDD_on( ); + + while(1) + { + WDT_Restart(); + + { + // 赤LED ピコピコ + comp++; + P1.5 = ( comp == 1 || comp == 3 )? 1: 0; + if( comp == 8 ) + { + comp = 0; + } + } + + { + // 電源ボタンで電源off + static u8 sw_hold_count; + + if( !SW_POW_n ) + { + sw_hold_count++; + } + else + { + sw_hold_count = 0; + } + + if( sw_hold_count > 16 ) + { + sw_hold_count = 0; + // 電源off + PM_LDSW_off( ); + break; + } + } + + // ウェイト + for( i = 1; i != 0; i++ ) + { + NOP(); + NOP(); + NOP(); + NOP(); + } + } + { + // ど、どうしよう…。 + + KRM = ( KR_SW_POW ); // Mask ではなく、Modeなのだそうだ。紛らわしい + MK0 = 0xFFFF; + MK1 = ~( INT_MSK1_KR ); + MK2L = 0xFF; + + // PU5 そのまま + PU7 = 0b00001000; // PWSWI + PU20 = 0x00; // SW_HOME 停止 + + STOP( ); + + mcu_wdt_reset; + } + } + } + + + if( my_FSL_Init() != ERR_SUCCESS ){ + alert(1); + } /* ファームのリストア 0x4800 - 0x7FFF (ブロック 18 - 27) から 0x2000 - 0x47FF (ブロック 8 - 17) へコピー */ - firm_duplicate( UPDATE_BLOCK_LAST +1, FIRM_TOP ); + if( firm_duplicate( UPDATE_BLOCK_LAST +1, FIRM_TOP ) != ERR_SUCCESS ) + { + alert(2); + } + // todo //  リストア失敗したら、LEDちかちかとかさせて、サービス送りにしてもらう? // リブート - FSL_InvertBootFlag( ); + if( FSL_InvertBootFlag() != ERR_SUCCESS ) + { + alert(3); + } FSL_SwapBootCluster(); } - // ======================================================== static void FSL_Open( void ) { @@ -272,7 +388,11 @@ static void FSL_Open( void ) MK0 = 0xFFFF; MK1 = 0xFFFF; MK2 = 0xFFFF; - +/* + LVIM = 0b00000010; + LVIS = 0x08; + LVIM = 0b10000010; +*/ FSL_FLMD0_HIGH; // フラッシュ書き替え許可 } @@ -315,18 +435,23 @@ static err firm_duplicate( u8 block_src, u8 split_write_count; // ブロックへちまちま書き込むカウンタ __far u8* p_src = ( __far u8* )( block_src * 0x400 ); + led_print(1); + // 書き込み先ブロックの数だけ繰り返す for( target_block = block_dest; - target_block < block_dest + FIRM_SIZE; + target_block < ( block_dest + FIRM_SIZE ); target_block += 1 ) { + led_print(2); WDT_Restart( ); // ブロック消去 while( FSL_BlankCheck( target_block ) != FSL_OK ) { + led_print(3); FSL_Erase( target_block ); } + led_print(4); // 分割書き込み分繰り返す for( split_write_count = 0; split_write_count < SELF_UPDATE_SPLIT_WRITE_NUM; @@ -335,6 +460,8 @@ static err firm_duplicate( u8 block_src, u16 buff_written_size; u8* p_buff; + WDT_Restart( ); + // 書き込みデータをバッファにためる buff_written_size = 0; p_buff = &pool.self_update_work[0]; @@ -353,16 +480,22 @@ static err firm_duplicate( u8 block_src, ( fsl_u08 ) ( SELF_UPDATE_BUFF_SIZE / SAM_WORD_SIZE ) ) != FSL_OK ) { - // todo リカバリ? // + // リカバリはリブート時 todo // FSL_Close( ); + led_print(5); + while(1){} return ( ERR_ERR ); } } + led_print(6); // 1ブロック書き込み完了。内部電圧チェックを行う - while( FSL_IVerify( target_block ) != FSL_OK ){ - // todo 失敗時? - ; + while( FSL_IVerify( target_block ) != FSL_OK ) + { + // リカバリはリブート時 todo // + led_print(7); + while(1){} + return ( ERR_ERR ); } } return( ERR_SUCCESS ); @@ -375,6 +508,8 @@ static err firm_duplicate( u8 block_src, ======================================================== */ static err my_FSL_Init() { + u8 rv; + RTCE = 0; // 書き替え前準備 // @@ -382,9 +517,9 @@ static err my_FSL_Init() FSL_Open( ); // 割り込み禁止など FSL_Init( &pool.self_update_work[0] ); // ライブラリ初期化。割り込み中断考慮せず - FSL_ModeCheck( ); // ライトプロテクトチェック。失敗することを考慮せず + rv = FSL_ModeCheck( ); // ライトプロテクトチェック。失敗することを考慮せず - return( ERR_SUCCESS ); + return( (err)rv ); } @@ -398,6 +533,38 @@ task_status_immed tski_mcu_reset() FSL_Close( ); // 保険? // -// WDTE = 0xAA; // WDTで再起動(テスト向け) +// mcu_wdt_reset; // WDTで再起動(テスト向け) return( ERR_SUCCESS ); // no reach } + + +void alert( u8 num ) +{ + u8 i; + + while(1) + { + WDT_Restart(); + P1.5 = 1; + for( i = 0; i < num; i++ ) + { + DBG_LED_on; + DBG_LED_off; + } + P1.5 = 0; + } +} + + +void led_print( u8 num ) +{ + u8 i; + + DBG_LED_on; + for( i = 0; i < num; i++ ) + { + P1.5 = 1; + P1.5 = 0; + } + DBG_LED_off; +} diff --git a/trunk/sw.c b/trunk/sw.c index cdbf993..2fc261d 100644 --- a/trunk/sw.c +++ b/trunk/sw.c @@ -19,13 +19,8 @@ #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)( 1000 / INTERVAL_TSK_SW ) -#else #define HOLD_THREASHOLD (u8)( 2000 / INTERVAL_TSK_SW ) #define FORCEOFF_THREASHOLD (u8)( 4000 / INTERVAL_TSK_SW ) -#endif */ //========================================================= diff --git a/trunk/task_sys.c b/trunk/task_sys.c index e6c6cda..d0b3dc0 100644 --- a/trunk/task_sys.c +++ b/trunk/task_sys.c @@ -83,16 +83,15 @@ void tsk_sys( ) // todo debug #ifdef _DEBUG_BT_IRQ_ - vreg_ctr[ VREG_C_DBG01 ] = 99; // todo (仮) + vreg_ctr[ VREG_C_DBG01 ] = 99; #endif #ifdef _DEBUG_BT_TEMP_ - vreg_ctr[ VREG_C_DBG01 ] = 0x80; // todo (仮) + vreg_ctr[ VREG_C_DBG01 ] = 0x80; #endif vreg_ctr[ VREG_C_COMMAND3 ] = 0; // 電源投入 // iic_mcu_start( ); - BT_chk(); BT_init(); // 実機やバッテリの判定、電池残量ICの設定 if( system_status.model == MODEL_JIKKI_NOBATT ) @@ -105,7 +104,7 @@ void tsk_sys( ) // 残量チェック BT_get_left(); // 先に、BT_init()が実行されている必要があります。 if(( vreg_ctr[VREG_C_BT_REMAIN] < 1 ) && - ( vreg_ctr[VREG_C_BT_VOLTAGE] < ( 3150 / 16 / 1.25 ) )) + ( vreg_ctr[VREG_C_BT_VOLTAGE] < ( V_TH_ZERO / 256 ) )) { // 電池が少ないので起動させない(電圧チェックもされてる) renge_task_interval_run_force = 1; @@ -187,7 +186,6 @@ 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_chk(); BT_init(); } @@ -319,7 +317,7 @@ void tsk_sys( ) // アダプタが刺さってるときはこのブロックを繰り返す。 /// ↓は中で初期化フラグをもってるので呼びまくって良い iic_mcu_start( ); - BT_chk( ); + BT_init(); // アダプタ有り:充電温度監視 if( SW_pow_count >= 10 ) // 電源スイッチが押されるのを待つ diff --git a/trunk/voltable.h b/trunk/voltable.h index d1d08d5..6ff34ab 100644 --- a/trunk/voltable.h +++ b/trunk/voltable.h @@ -1,5 +1,6 @@ #ifdef _10db_ // max -10db +/* const u8 slider_to_codec[64] = { 127, 127, 127, 127, 126, 125, 123, 122, @@ -11,6 +12,18 @@ const u8 slider_to_codec[64] = 72, 71, 70, 68, 67, 66, 64, 63, 62, 61, 59, 58, 57, 56, 55, 55 }; +*/ +const u8 slider_to_codec[64] = +{ + 127, 126, 125, 124, 122, 121, 120, 119, + 118, 117, 116, 114, 113, 112, 111, 110, + 109, 108, 106, 105, 104, 103, 102, 101, + 100, 98, 97, 96, 95, 94, 93, 92, + 90, 89, 88, 87, 86, 85, 83, 82, + 81, 80, 79, 78, 77, 75, 74, 73, + 73, 72, 71, 70, 69, 67, 66, 65, + 64, 63, 62, 61, 59, 58, 57, 56 + }; #endif #ifdef _15db_ diff --git a/trunk/vreg_ctr.c b/trunk/vreg_ctr.c index 2e094f5..fe5378b 100644 --- a/trunk/vreg_ctr.c +++ b/trunk/vreg_ctr.c @@ -15,9 +15,13 @@ CTR MCU I2C #include "fsl_user.h" + extern u8 mcu_info_read(); // task_misc.c + extern u8 iic_burst_state; +extern bit vol_by_twl; + // ******************************************************** #ifdef _DBG_PEDO_AUTO_ENABLE_ @@ -287,16 +291,17 @@ void vreg_ctr_write( u8 adrs, u8 data ) case ( 'w' ): // WDTで再起動(テスト向け) - WDTE = 0xAA; + mcu_wdt_reset; break; } vreg_ctr[ VREG_C_COMMAND3 ] = data; break; case ( VREG_C_VOL_DIGITAL ): - vreg_ctr[ VREG_C_VOL_DIGITAL ] = ( data & ~0x40 ); // force vol update bit - if(( data & 0x40 ) != 0 ) + vreg_ctr[ VREG_C_VOL_DIGITAL ] = ( data & ~REG_BIT_VOL_RESET) ; // コマンドビットが混ざってる【使用時に】マスクせよ + if(( data & REG_BIT_VOL_RESET ) != 0 ) { + vol_by_twl = 0; renge_task_immed_add( tski_vol_update ); } break; diff --git a/trunk/vreg_ctr.h b/trunk/vreg_ctr.h index 297668f..a315e89 100644 --- a/trunk/vreg_ctr.h +++ b/trunk/vreg_ctr.h @@ -30,7 +30,6 @@ #define REG_BIT_GASGAUGE_ERR ( 1 << 0 ) // VREG_C_IRQ0 -#define REG_BIT_VR_SNDVOL_CHANGE ( 1 << 7 ) #define REG_BIT_IRQ_WDT_RESET ( 1 << 7 ) #define REG_BIT_SHELL_OPEN ( 1 << 6 ) #define REG_BIT_SHELL_CLOSE ( 1 << 5 ) @@ -113,6 +112,10 @@ #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 ) + // CODEC上のPMIC NTR の代理レジスタ #define REG_BIT_TWL_REQ_OFF ( 1 << 6 ) diff --git a/trunk/vreg_twl.c b/trunk/vreg_twl.c index 0838f05..b0aae56 100644 --- a/trunk/vreg_twl.c +++ b/trunk/vreg_twl.c @@ -21,10 +21,7 @@ u8 vreg_twl[_REG_TWL_INT_ADRS_ENDMARK]; extern bit twl_ver_read; extern bit cam_led_update; extern bit twl_ntr_mode; -extern u8 vol_data; - - - +extern bit vol_by_twl; /* ======================================================== 仮想レジスタの初期化 @@ -37,7 +34,6 @@ void vreg_twl_init( ) vreg_twl[ REG_TWL_INT_ADRS_TEMP0 ] = 0; } - // ======================================================== // I2C仮想レジスタに書く・何かアクションする // 引数 adrs は内部アドレス @@ -48,9 +44,10 @@ void vreg_twl_write( u8 adrs, u8 data ) { case ( REG_TWL_INT_ADRS_VOL ): { - set_irq( VREG_C_IRQ2, REG_BIT_TWL_SNDVOL_CHANGE ); - vol_data = data * 8; + vol_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; } diff --git a/trunk/yav_mcu_bsr.plg b/trunk/yav_mcu_bsr.plg index 1300209..db1acd7 100644 --- a/trunk/yav_mcu_bsr.plg +++ b/trunk/yav_mcu_bsr.plg @@ -3,6 +3,21 @@ C:\WINDOWS\system32\cmd.exe /c touch 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\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 adc.c +adc.c(121) : CC78K0R warning W0510: Pointer mismatch in function 'renge_task_immed_add' +adc.c(146) : CC78K0R warning W0401: Conversion may lose significant digits +adc.c(151) : CC78K0R warning W0401: Conversion may lose significant digits +adc.c(160) : CC78K0R warning W0401: Conversion may lose significant digits +adc.c(301) : CC78K0R warning W0401: Conversion may lose significant digits +adc.c(325) : CC78K0R warning W0510: Pointer mismatch in function 'renge_task_immed_add' +adc.c(345) : CC78K0R warning W0401: Conversion may lose significant digits +adc.c(422) : CC78K0R warning W0745: Expected function prototype +adc.c(446) : CC78K0R warning W0401: Conversion may lose significant digits +adc.c(451) : CC78K0R warning W0401: Conversion may lose significant digits +adc.c(151) : CC78K0R warning W0401: Conversion may lose significant digits +Compilation complete, 0 error(s) and 11 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\adc.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 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 @@ -13,4 +28,4 @@ intel-HEX to bsr bin converter file converted! -Build Total error(s) : 0 Total warning(s) : 0 +Build Total error(s) : 0 Total warning(s) : 11 diff --git a/trunk/yav_mcu_bsr.pri b/trunk/yav_mcu_bsr.pri index f990220..04e122a 100644 --- a/trunk/yav_mcu_bsr.pri +++ b/trunk/yav_mcu_bsr.pri @@ -78,10 +78,10 @@ Symbol Type=OFF Language=C Kanji=SJIS [Source] -Geometry=83, 74, 844, 790 +Geometry=114, 70, 844, 790 Window=Normal -DispStart=269 -CaretPos=321,0 +DispStart=247 +CaretPos=281,0 Mode=Normal DispFile= Address1= @@ -142,7 +142,7 @@ Accumulative=ON [Assemble] Geometry=282, 92, 968, 626 Window=Hide -DispStart=864505856 +DispStart=864338944 CaretPos=0,0 Address1= Address2= @@ -185,18 +185,18 @@ SaveRange=Screen SaveStart= SaveEnd= [Memory] -Geometry=218, 29, 968, 626 -Window=Hide -Boundary=0 +Geometry=224, 254, 968, 626 +Window=Normal +Boundary=163 Format=Hex Mode=Byte -Endian= +Endian=Little Ascii=OFF Idtag=OFF Address= -DispStart=FFFFFFFF -CaretPosData=0, 0 -CaretPosAscii=0, 0 +DispStart=00007DC0 +CaretPosData=0, 2012 +CaretPosAscii=3, 2012 Address1= Address2= Address3= @@ -867,14 +867,14 @@ SaveStart= SaveEnd= [Register] Geometry=975, 515, 272, 397 -Window=Hide +Window=Normal Mode=Hex Boundary=174 Pickup=OFF Name=Functional Register Bank=0 RP0=1 -RP1=1 +RP1=5 RP2=1 RP3=1 PC=1 @@ -957,52 +957,57 @@ Detail=OFF Last Name= Count=0 [Variable] -Geometry=1137, 11, 441, 595 +Geometry=854, -3, 441, 595 Window=Normal Boundary=18088086 -0=.P4.2,P,S,A,+,1 -1=.hoge,P,N,A,+,1 -2=.work,P,N,A,+,1 -3=.new_val,P,N,A,+,1 -4=.raw_adc_temperature,D,N,A,+,1 -5=.vreg_ctr[5],D,N,A,+,1 -6=.vreg_ctr[35],P,N,A,+,1 -7=.bt_chg_ready,P,N,A,+,1 -8=.pu20,P,S,A,+,1 -9=.temp_zone_charge_enable,P,N,A,+,1 -10=.bt_remain_old,P,N,A,+,1 -11=.vreg_ctr,P,N,A,+,1 -12=.system_status,.,N,A,+,1 -13=.battery_manufacturer,P,N,A,+,1 -14=.bt_comp,.,N,A,+,1 -15=.vol_data,P,N,A,+,1 -Line=16 +0=.vreg_ctr[11],D,N,A,+,1 +1=.system_status,.,N,A,+,1 +2=.vreg_ctr[13],H,N,A,+,1 +3=.P4.2,P,S,A,+,1 +4=.hoge,P,N,A,+,1 +5=.work,P,N,A,+,1 +6=.new_val,P,N,A,+,1 +7=.raw_adc_temperature,D,N,A,+,1 +8=.bt_chg_ready,P,N,A,+,1 +9=.pu20,P,S,A,+,1 +10=.temp_zone_charge_enable,P,N,A,+,1 +11=.bt_remain_old,P,N,A,+,1 +12=.vreg_ctr,P,N,A,+,1 +13=.system_status,.,N,A,+,1 +14=.battery_manufacturer,P,N,A,+,1 +15=.bt_comp,.,N,A,+,1 +16=.vol_data,P,N,A,+,1 +Line=17 [Quick Watch] -0=TDR02,P,A,1 -1=TDR03,P,A,1 -2=TDR04,P,A,1 -3=tdr07,P,A,1 -4=tdr08,P,A,1 -5=toe0,B,A,1 -6=vreg_ctr[35],P,A,1 -7=vreg_ctr[5],P,A,1 -8=raw_adc_temperature,P,A,1 -9=bt_chg_ready,P,A,1 -10=p4.3,P,A,1 -11=work,P,A,1 -12=new_val,P,A,1 -13=vol_data,P,A,1 -14=hoge,P,A,1 -15=P4.2,P,A,1 +0=tdr07,P,A,1 +1=tdr08,P,A,1 +2=toe0,B,A,1 +3=vreg_ctr[35],P,A,1 +4=vreg_ctr[5],P,A,1 +5=raw_adc_temperature,P,A,1 +6=bt_chg_ready,P,A,1 +7=p4.3,P,A,1 +8=work,P,A,1 +9=new_val,P,A,1 +10=vol_data,P,A,1 +11=hoge,P,A,1 +12=P4.2,P,A,1 +13=vreg_ctr[13],P,A,1 +14=vreg_ctr[11],P,A,1 +15=system_status,P,A,1 [Software Break] -Geometry=547, 524, 756, 532 +Geometry=775, 797, 445, 260 Window=Normal Width=150 30 200 100 Name0=Swb00001 -Address0=i2c_mcu.c#_iic_mcu_write_a_byte+0x40 +Address0=pm.c#_BT_mgic_init+0x127 Window0=ASM Status0=ON -Count=1 +Name1=Swb00002 +Address1=pm.c#_BT_init+0x0 +Window1=ASM +Status1=ON +Count=2 [Reset] Debugger=ON Symbol=OFF diff --git a/trunk/yav_mcu_bsr.prj b/trunk/yav_mcu_bsr.prj index 26a100f..081e26f 100644 --- a/trunk/yav_mcu_bsr.prj +++ b/trunk/yav_mcu_bsr.prj @@ -6,7 +6,7 @@ Series=78K0R.PM Device=uPD79F0104 DeviceVer=E1.00b DebugMode=1 -Target=bsr.lmf +Target=C:\78k_data\yav-mcu-basara\trunk\bsr.lmf [BuildMode0] BuildModeName=Debug Build TargetFile=0 @@ -112,296 +112,6 @@ ZF=0 S=1 E=0 CommandFile=0 -[Options.LCNV78K0R 0] -Version=100 -LCNV_GO=0 -E=0 -CommandFile=0 -[Options.LCNV78K0R 1] -Version=100 -LCNV_GO=0 -E=0 -CommandFile=0 -[Options.LCNV78K0R 2] -Version=100 -LCNV_GO=0 -O0=inter_asm -E=0 -CommandFile=0 -[Options.LCNV78K0R 3] -Version=100 -LCNV_GO=0 -E=0 -CommandFile=0 -[Options.LCNV78K0R 4] -Version=100 -LCNV_GO=0 -E=0 -CommandFile=0 -[Options.LCNV78K0R 5] -Version=100 -LCNV_GO=0 -E=0 -CommandFile=0 -[Options.LK78K0R 0] -Version=100 -O0=bsr_k0r.lmf -O1=bsr.lmf -O2=flash.lmf -O3=a.lmf -G=1 -E=0 -E0=flash.elk -E1=a.elk -GO=1 -GOValue=85 -GOStart=FC00 -GOSizeValue=1024 -GI=1 -GIValue=FFFFFFFFFFFFFFFFFFFF -CCZA=0 -MemInfoCheck=1 -P=1 -P0=bsr_k0r.map -P1=bsr.map -P2=flash.map -P3=a.map -MI=0 -GB=1 -GBValue=6EFBFF -KM=1 -KD=0 -KP=1 -KL=0 -LF=0 -LL=0 -B0=C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\lib78k0r\fsl.lib -D0=bsr_mcu.dr -D1=user_area.dr -S=1 -W=0 -SELFCheck=1 -SELF=0 -ZB= -Etcetera0= -Etcetera1=boot.lmf -CommandFile=0 -[Options.LK78K0R 1] -Version=100 -O0=a.lmf -G=0 -E=0 -E0=a.elk -GO=0 -GOValue= -GOStart=FC00 -GOSizeValue=1024 -GI=0 -GIValue=FFFFFFFFFFFFFFFFFFFF -CCZA=1 -MemInfoCheck=0 -P=1 -P0=a.map -MI=0 -GB=0 -GBValue= -KM=1 -KD=1 -KP=0 -KL=0 -LF=0 -LL=0 -S=0 -W=1 -SELFCheck=0 -SELF=0 -ZB= -CommandFile=0 -[Options.LK78K0R 2] -Version=100 -O0=bsr.lmf -O1=bsr_k0r.lmf -O2=flash.lmf -O3=a.lmf -G=1 -E=0 -E0=flash.elk -E1=a.elk -GO=1 -GOValue=85 -GOStart=FC00 -GOSizeValue=1024 -GI=1 -GIValue=FFFFFFFFFFFFFFFFFFFF -CCZA=0 -MemInfoCheck=1 -P=1 -P0=bsr_k0r.map -P1=bsr.map -P2=flash.map -P3=a.map -MI=0 -GB=1 -GBValue=7EFBFF -KM=1 -KD=0 -KP=0 -KL=0 -LF=0 -LL=0 -B0=C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\lib78k0r\fsl.lib -D0=bsr_mcu.dr -D1=user_area.dr -S=1 -W=0 -SELFCheck=0 -SELF=0 -ZB= -Etcetera0= -Etcetera1=boot.lmf -CommandFile=0 -OFILE=C:\78k_data\yav-mcu-basara\trunk\bsr.lmf -[Options.LK78K0R 3] -Version=100 -O0=bsr_bsr.lmf -O1=bsr_k0r.lmf -O2=bsr.lmf -O3=flash.lmf -O4=a.lmf -G=1 -E=0 -E0=flash.elk -E1=a.elk -GO=1 -GOValue=85 -GOStart=FC00 -GOSizeValue=1024 -GI=1 -GIValue=FFFFFFFFFFFFFFFFFFFF -CCZA=0 -MemInfoCheck=1 -P=1 -P0=bsr_bsr.map -P1=bsr_k0r.map -P2=bsr.map -P3=flash.map -P4=a.map -MI=0 -GB=1 -GBValue=6EFBFF -KM=1 -KD=0 -KP=1 -KL=0 -LF=0 -LL=0 -B0=C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\lib78k0r\fsl.lib -D0=bsr_mcu.dr -D1=user_area.dr -S=1 -W=2 -SELFCheck=0 -SELF=0 -ZB= -Etcetera0= -Etcetera1=boot.lmf -CommandFile=0 -[Options.LK78K0R 4] -Version=100 -O0=bsr_k0r.lmf -O1=bsr.lmf -O2=flash.lmf -O3=a.lmf -G=1 -E=0 -E0=flash.elk -E1=a.elk -GO=1 -GOValue=85 -GOStart=FC00 -GOSizeValue=1024 -GI=1 -GIValue=FFFFFFFFFFFFFFFFFFFF -CCZA=0 -MemInfoCheck=1 -P=1 -P0=bsr_k0r.map -P1=bsr.map -P2=flash.map -P3=a.map -MI=0 -GB=1 -GBValue=6EFBFF -KM=1 -KD=0 -KP=1 -KL=0 -LF=0 -LL=0 -B0=C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\lib78k0r\fsl.lib -D0=bsr_mcu.dr -D1=user_area.dr -S=1 -W=0 -SELFCheck=1 -SELF=0 -ZB= -Etcetera0= -Etcetera1=boot.lmf -CommandFile=0 -[Options.LK78K0R 5] -Version=100 -O0=bsr_bsr.lmf -O1=bsr_k0r.lmf -O2=bsr.lmf -O3=flash.lmf -O4=a.lmf -G=1 -E=0 -E0=flash.elk -E1=a.elk -GO=1 -GOValue=85 -GOStart=FC00 -GOSizeValue=1024 -GI=1 -GIValue=FFFFFFFFFFFFFFFFFFFF -CCZA=0 -MemInfoCheck=1 -P=1 -P0=bsr_bsr.map -P1=bsr_k0r.map -P2=bsr.map -P3=flash.map -P4=a.map -MI=0 -GB=1 -GBValue=6EFBFF -KM=1 -KD=0 -KP=1 -KL=0 -LF=0 -LL=0 -B0=C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\lib78k0r\fsl.lib -D0=bsr_mcu.dr -D1=user_area.dr -S=1 -W=2 -SELFCheck=0 -SELF=0 -ZB= -Etcetera0= -Etcetera1=boot.lmf -CommandFile=0 -[BuildBefore-AfterCmd] -Before1=touch magic.c -After1=ruby nec_s_2_bsrbin2.rb bsr.hex -[ToolSet] -ToolSetName=(変更)78K0R Software Package V1.10 -Tool1=CC78K0R|W2.10 -Tool2=RA78K0R|W1.31 -Tool3=ID78K0R-QB|V3.60 [Options.RA78K0R 0] Version=100 G=1 @@ -510,40 +220,6 @@ LT=8 Z=0 CommandFile=0 RA_OPT= -[Options.78K0R] -BuildMode=2 -BuildMode2=K0R_dbg -BuildMode3=BSR_dbg -BuildMode4=BSR_rel -BuildMode5=BSR_WM0 -DefaultMode2=1 -DefaultMode3=1 -DefaultMode4=1 -DefaultMode5=1 -[SrcFile] -Source1=loader.c -Source2=pm.c -Source3=i2c_ctr.c -Source4=main.c -Source5=magic.c -Source6=WDT.c -Source7=i2c_mcu.c -Source8=i2c_twl.c -Source9=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 [Options.CC78K0R 0] Version=210 Include0=renge,C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r @@ -1010,6 +686,327 @@ VfiFileBoot0= VfiFileBoot1=boot.vfi VF78K0Rchk=0 VF78K0Rvs= +[Options.LK78K0R 0] +Version=100 +O0=bsr_k0r.lmf +O1=bsr.lmf +O2=flash.lmf +O3=a.lmf +G=1 +E=0 +E0=flash.elk +E1=a.elk +GO=1 +GOValue=85 +GOStart=FC00 +GOSizeValue=1024 +GI=1 +GIValue=FFFFFFFFFFFFFFFFFFFF +CCZA=0 +MemInfoCheck=1 +P=1 +P0=bsr_k0r.map +P1=bsr.map +P2=flash.map +P3=a.map +MI=0 +GB=1 +GBValue=6EFBFF +KM=1 +KD=0 +KP=1 +KL=0 +LF=0 +LL=0 +B0=C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\lib78k0r\fsl.lib +D0=bsr_mcu.dr +D1=user_area.dr +S=1 +W=0 +SELFCheck=1 +SELF=0 +ZB= +Etcetera0= +Etcetera1=boot.lmf +CommandFile=0 +[Options.LK78K0R 1] +Version=100 +O0=a.lmf +G=0 +E=0 +E0=a.elk +GO=0 +GOValue= +GOStart=FC00 +GOSizeValue=1024 +GI=0 +GIValue=FFFFFFFFFFFFFFFFFFFF +CCZA=1 +MemInfoCheck=0 +P=1 +P0=a.map +MI=0 +GB=0 +GBValue= +KM=1 +KD=1 +KP=0 +KL=0 +LF=0 +LL=0 +S=0 +W=1 +SELFCheck=0 +SELF=0 +ZB= +CommandFile=0 +[Options.LK78K0R 2] +Version=100 +O0=bsr.lmf +O1=bsr_k0r.lmf +O2=flash.lmf +O3=a.lmf +G=1 +E=0 +E0=flash.elk +E1=a.elk +GO=1 +GOValue=85 +GOStart=FC00 +GOSizeValue=1024 +GI=1 +GIValue=FFFFFFFFFFFFFFFFFFFF +CCZA=0 +MemInfoCheck=1 +P=1 +P0=bsr_k0r.map +P1=bsr.map +P2=flash.map +P3=a.map +MI=0 +GB=1 +GBValue=7EFBFF +KM=1 +KD=0 +KP=0 +KL=0 +LF=0 +LL=0 +B0=C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\lib78k0r\fsl.lib +D0=bsr_mcu.dr +D1=user_area.dr +S=1 +W=0 +SELFCheck=0 +SELF=0 +ZB= +Etcetera0= +Etcetera1=boot.lmf +CommandFile=0 +OFILE=C:\78k_data\yav-mcu-basara\trunk\bsr.lmf +[Options.LK78K0R 3] +Version=100 +O0=bsr_bsr.lmf +O1=bsr_k0r.lmf +O2=bsr.lmf +O3=flash.lmf +O4=a.lmf +G=1 +E=0 +E0=flash.elk +E1=a.elk +GO=1 +GOValue=85 +GOStart=FC00 +GOSizeValue=1024 +GI=1 +GIValue=FFFFFFFFFFFFFFFFFFFF +CCZA=0 +MemInfoCheck=1 +P=1 +P0=bsr_bsr.map +P1=bsr_k0r.map +P2=bsr.map +P3=flash.map +P4=a.map +MI=0 +GB=1 +GBValue=6EFBFF +KM=1 +KD=0 +KP=1 +KL=0 +LF=0 +LL=0 +B0=C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\lib78k0r\fsl.lib +D0=bsr_mcu.dr +D1=user_area.dr +S=1 +W=2 +SELFCheck=0 +SELF=0 +ZB= +Etcetera0= +Etcetera1=boot.lmf +CommandFile=0 +[Options.LK78K0R 4] +Version=100 +O0=bsr_k0r.lmf +O1=bsr.lmf +O2=flash.lmf +O3=a.lmf +G=1 +E=0 +E0=flash.elk +E1=a.elk +GO=1 +GOValue=85 +GOStart=FC00 +GOSizeValue=1024 +GI=1 +GIValue=FFFFFFFFFFFFFFFFFFFF +CCZA=0 +MemInfoCheck=1 +P=1 +P0=bsr_k0r.map +P1=bsr.map +P2=flash.map +P3=a.map +MI=0 +GB=1 +GBValue=6EFBFF +KM=1 +KD=0 +KP=1 +KL=0 +LF=0 +LL=0 +B0=C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\lib78k0r\fsl.lib +D0=bsr_mcu.dr +D1=user_area.dr +S=1 +W=0 +SELFCheck=1 +SELF=0 +ZB= +Etcetera0= +Etcetera1=boot.lmf +CommandFile=0 +[Options.LK78K0R 5] +Version=100 +O0=bsr_bsr.lmf +O1=bsr_k0r.lmf +O2=bsr.lmf +O3=flash.lmf +O4=a.lmf +G=1 +E=0 +E0=flash.elk +E1=a.elk +GO=1 +GOValue=85 +GOStart=FC00 +GOSizeValue=1024 +GI=1 +GIValue=FFFFFFFFFFFFFFFFFFFF +CCZA=0 +MemInfoCheck=1 +P=1 +P0=bsr_bsr.map +P1=bsr_k0r.map +P2=bsr.map +P3=flash.map +P4=a.map +MI=0 +GB=1 +GBValue=6EFBFF +KM=1 +KD=0 +KP=1 +KL=0 +LF=0 +LL=0 +B0=C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\lib78k0r\fsl.lib +D0=bsr_mcu.dr +D1=user_area.dr +S=1 +W=2 +SELFCheck=0 +SELF=0 +ZB= +Etcetera0= +Etcetera1=boot.lmf +CommandFile=0 +[Options.LCNV78K0R 0] +Version=100 +LCNV_GO=0 +E=0 +CommandFile=0 +[Options.LCNV78K0R 1] +Version=100 +LCNV_GO=0 +E=0 +CommandFile=0 +[Options.LCNV78K0R 2] +Version=100 +LCNV_GO=0 +O0=inter_asm +E=0 +CommandFile=0 +[Options.LCNV78K0R 3] +Version=100 +LCNV_GO=0 +E=0 +CommandFile=0 +[Options.LCNV78K0R 4] +Version=100 +LCNV_GO=0 +E=0 +CommandFile=0 +[Options.LCNV78K0R 5] +Version=100 +LCNV_GO=0 +E=0 +CommandFile=0 +[Options.78K0R] +BuildMode=2 +BuildMode2=K0R_dbg +BuildMode3=BSR_dbg +BuildMode4=BSR_rel +BuildMode5=BSR_WM0 +DefaultMode2=1 +DefaultMode3=1 +DefaultMode4=1 +DefaultMode5=1 +[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 @@ -1045,3 +1042,7 @@ 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 6d78014..6565494 100644 --- a/trunk/yav_mcu_bsr.prk +++ b/trunk/yav_mcu_bsr.prk @@ -4,11 +4,13 @@ FrameX=168 FrameY=127 FrameCX=1299 FrameCY=1044 -OpenFile1=ProjectWindow -PrjPos=0,2,754,3,253 -OpenFile2=config.h,0,286,286,1530,1043,0,9,0,0 -OpenFile3=OutputWindow +OpenFile1=self_flash.c,0,110,110,1354,867,19,275,0,0 +OpenFile2=incs.h,0,132,132,1376,889,0,24,0,0 +OpenFile3=adc.c,0,330,330,1574,1087,0,380,0,0 +OpenFile4=OutputWindow OutputPos=0,36,981,694,1556 +OpenFile5=ProjectWindow +PrjPos=0,2,754,3,253 ActivePRJ=yav_mcu_bsr.prj [ProjectWindow] ProjectWindowDispType=0 diff --git a/trunk/yav_mcu_bsr.sdb b/trunk/yav_mcu_bsr.sdb index 2d51a39..9d88b14 100644 --- a/trunk/yav_mcu_bsr.sdb +++ b/trunk/yav_mcu_bsr.sdb @@ -1,7 +1,7 @@ [SdbInfo] Ver=5 [loader.c] -T=4c298f6e +T=4c3198b9 1=incs_loader.h 2=..\..\..\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r\fsl.h 3=fsl_user.h @@ -10,8 +10,9 @@ T=4c298f6e 6=pm.h 7=rtc.h 8=reboot.h +9=magic.h [pm.c] -T=4c298f94 +T=4c318dab 1=incs.h 2=adc.h 3=led.h @@ -25,7 +26,7 @@ T=4c072cf1 1=config.h 2=incs.h [main.c] -T=4c0cd4a6 +T=4c2dbbde 1=incs_loader.h 2=WDT.h 3=rtc.h @@ -35,13 +36,13 @@ T=4c0cd4a6 7=adc.h 8=pool.h [magic.c] -T=4c29c894 +T=4c31d176 1=config.h [WDT.c] T=4bf0d1e1 1=incs_loader.h [i2c_mcu.c] -T=4c285d96 +T=4c2acd5a 1=incs_loader.h 2=i2c_mcu.h [i2c_twl.c] @@ -51,14 +52,14 @@ T=4c29c700 3=i2c_twl_defs.h 4=i2c_twl.h [led.c] -T=4c284f59 +T=4c31a042 1=incs.h 2=led.h [rtc.c] T=4c0cd30b 1=incs.h [vreg_ctr.c] -T=4c285516 +T=4c319dfc 1=incs.h 2=vreg_ctr.h 3=rtc.h @@ -69,20 +70,21 @@ T=4c285516 8=..\..\..\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r\fsl.h 9=fsl_user.h [vreg_twl.c] -T=4c2347c6 +T=4c2c3fca 1=incs.h 2=jhl_defs.h 3=led.h 4=vreg_twl.h 5=vreg_ctr.h [adc.c] -T=4c29948b +T=4c31d076 1=incs.h 2=adc.h 3=pm.h 4=led.h +5=voltable.h [renge\renge.c] -T=4c232c3f +T=4c318e0f 1=renge\renge.h 2=renge\renge_task_intval.h 3=renge\renge_task_immediate.h @@ -91,19 +93,21 @@ T=4c232c3f 6=user_define.h 7=bsr_system.h [accero.c] -T=4c27e7a0 +T=4c2aacdb 1=config.h 2=incs.h 3=..\..\..\Program Files\NEC Electronics Tools\CC78K0R\W2.10\inc78k0r\math.h [self_flash.c] -T=4bfb28ce +T=4c319f1f 1=incs_loader.h 2=..\..\..\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r\fsl.h 3=fsl_user.h 4=i2c_ctr.h 5=pool.h +6=magic.h +7=pm.h [sw.c] -T=4c04be89 +T=4c2d5d86 1=incs.h 2=i2c_twl.h 3=i2c_ctr.h @@ -112,12 +116,12 @@ T=4c04be89 6=rtc.h 7=sw.h [task_debug.c] -T=4c29ca1c +T=4c2aacdb 1=incs.h 2=renge\renge.h 3=pm.h [task_misc.c] -T=4c29948b +T=4c2aacdb 1=incs.h 2=renge\renge.h 3=pm.h @@ -126,7 +130,7 @@ T=4c29948b 6=i2c_mcu.h 7=led.h [task_sys.c] -T=4c29948b +T=4c2d5d27 1=incs.h 2=i2c_twl.h 3=i2c_ctr.h @@ -138,7 +142,7 @@ T=4c29948b 9=adc.h 10=self_flash.h [pedo_alg_thre_det2.c] -T=4c28555c +T=4c2aacdb 1=incs.h 2=..\..\..\Program Files\NEC Electronics Tools\CC78K0R\W2.10\inc78k0r\math.h 3=accero.h @@ -146,10 +150,10 @@ T=4c28555c 5=pedo_lpf_coeff.h 6=pool.h [ini_VECT.c] -T=4bf0d1e1 +T=4c312edd 1=config.h [task_status.c] -T=4c29948b +T=4c2aacdb 1=incs.h 2=renge\renge.h 3=pm.h @@ -171,13 +175,13 @@ T=4c119cde T=4c075832 1=config.h [config.h] -T=4c29c890 +T=4c2db56f [user_define.h] T=4c2856fa [bsr_system.h] T=4c22c0cc [renge\renge.h] -T=4c0758e3 +T=4c318e0f 1=renge\renge_defs.h 2=renge\renge_task_immediate.h [renge\renge_defs.h] @@ -186,16 +190,16 @@ T=4c073c5a T=4c284e89 1=renge\renge_defs.h [vreg_ctr.h] -T=4c28383c +T=4c2d8983 1=config.h [vreg_twl.h] T=4c072cf1 [loader.h] -T=4bf0d1e0 +T=4c318e0f [i2c_mcu.h] -T=4c0769e1 +T=4c2aacdb [WDT.h] -T=4bf0d1e1 +T=4c319dfc [fsl_user.h] T=4bf0d1e0 [i2c_ctr.h] @@ -207,20 +211,21 @@ T=4bf0d1e1 [reboot.h] T=4bf0d1e1 [incs.h] -T=4c072fc8 +T=4c318e3d 1=jhl_defs.h 2=user_define.h 3=bsr_system.h 4=renge\renge.h -5=vreg_ctr.h -6=vreg_twl.h -7=i2c_mcu.h -8=i2c_twl.h -9=rtc.h -10=accero.h -11=pm.h -12=sw.h -13=WDT.h +5=loader.h +6=vreg_ctr.h +7=vreg_twl.h +8=i2c_mcu.h +9=i2c_twl.h +10=rtc.h +11=accero.h +12=pm.h +13=sw.h +14=WDT.h [accero.h] T=4bf0d1e1 1=jhl_defs.h @@ -231,9 +236,9 @@ T=4bfd1372 T=4bf0d1e1 1=jhl_defs.h [led.h] -T=4c21e17d +T=4c31d05a [batt_params.h] -T=4c298f3c +T=4c2c4bd3 [i2c_twl_defs.h] T=4bf0d1e1 [renge\renge_task_intval.h] @@ -255,3 +260,7 @@ T=4bf0d1e1 T=49a3bd4e [..\..\..\Program Files\NEC Electronics Tools\CC78K0R\W2.10\inc78k0r\math.h] T=45f12258 +[voltable.h] +T=4c31be66 +[magic.h] +T=4c316840