From 028b80d16ccadda3ea9a8fe775fc5dce781092a1 Mon Sep 17 00:00:00 2001 From: n2232 Date: Fri, 2 Mar 2018 02:00:37 +0000 Subject: [PATCH] =?UTF-8?q?3.41=E3=81=8B=E3=82=89=E6=B4=BE=E7=94=9F?= 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@627 013db118-44a6-b54f-8bf7-843cb86687b1 --- snake_branches/3.50_2dsll_lguide/OMakefile | 159 ++ snake_branches/3.50_2dsll_lguide/OMakeroot | 4 + .../VCProj/Debug/BuildLog.htm | Bin 0 -> 3992 bytes .../VCProj/Debug/bsr_trunk.lastbuildstate | 2 + .../VCProj/Debug/bsr_trunk.log | 105 ++ .../VCProj/Debug/bsr_trunk.unsuccessfulbuild | 0 .../_UpgradeReport_Files/UpgradeReport.css | 207 +++ .../_UpgradeReport_Files/UpgradeReport.xslt | 232 +++ .../UpgradeReport_Minus.gif | Bin 0 -> 69 bytes .../UpgradeReport_Plus.gif | Bin 0 -> 71 bytes .../3.50_2dsll_lguide/VCProj/bsr_trunk.ncb | Bin 0 -> 912384 bytes .../VCProj/bsr_trunk.opensdf | Bin 0 -> 30 bytes .../3.50_2dsll_lguide/VCProj/bsr_trunk.sdf | Bin 0 -> 1069056 bytes .../3.50_2dsll_lguide/VCProj/bsr_trunk.sln | 20 + .../VCProj/bsr_trunk.sln.old | 20 + .../3.50_2dsll_lguide/VCProj/bsr_trunk.suo | Bin 0 -> 85504 bytes .../VCProj/bsr_trunk.suo.old | Bin 0 -> 45056 bytes .../3.50_2dsll_lguide/VCProj/bsr_trunk.vcproj | 594 +++++++ .../VCProj/bsr_trunk.vcproj.NCL.N2232.user | 65 + .../VCProj/bsr_trunk.vcxproj | 162 ++ .../VCProj/bsr_trunk.vcxproj.filters | 258 +++ .../VCProj/bsr_trunk.vcxproj.user | 3 + snake_branches/3.50_2dsll_lguide/WDT.c | 12 + snake_branches/3.50_2dsll_lguide/WDT.h | 20 + snake_branches/3.50_2dsll_lguide/accero.c | 274 +++ snake_branches/3.50_2dsll_lguide/accero.h | 14 + snake_branches/3.50_2dsll_lguide/adc.c | 475 +++++ snake_branches/3.50_2dsll_lguide/adc.h | 48 + .../3.50_2dsll_lguide/batt_params.c | 130 ++ .../3.50_2dsll_lguide/batt_params.h | 64 + snake_branches/3.50_2dsll_lguide/bsr.hex | 1023 +++++++++++ snake_branches/3.50_2dsll_lguide/bsr.lmf | Bin 0 -> 184000 bytes snake_branches/3.50_2dsll_lguide/bsr_k0r.map | 897 ++++++++++ snake_branches/3.50_2dsll_lguide/bsr_mcu.dr | 46 + snake_branches/3.50_2dsll_lguide/bsr_system.h | 73 + snake_branches/3.50_2dsll_lguide/config.h | 113 ++ snake_branches/3.50_2dsll_lguide/fsl.h | 362 ++++ snake_branches/3.50_2dsll_lguide/fsl_user.h | 113 ++ snake_branches/3.50_2dsll_lguide/get_ei.asm | 26 + snake_branches/3.50_2dsll_lguide/hal.c | 182 ++ snake_branches/3.50_2dsll_lguide/hal.h | 16 + snake_branches/3.50_2dsll_lguide/hoge.bin | Bin 0 -> 16387 bytes snake_branches/3.50_2dsll_lguide/i2c_ctr.c | 312 ++++ snake_branches/3.50_2dsll_lguide/i2c_ctr.h | 210 +++ .../3.50_2dsll_lguide/i2c_mcu-sub.c | 124 ++ snake_branches/3.50_2dsll_lguide/i2c_mcu.c | 660 +++++++ snake_branches/3.50_2dsll_lguide/i2c_mcu.h | 40 + .../3.50_2dsll_lguide/i2c_mcu_sub.h | 9 + snake_branches/3.50_2dsll_lguide/i2c_twl.c | 246 +++ snake_branches/3.50_2dsll_lguide/i2c_twl.h | 7 + .../3.50_2dsll_lguide/i2c_twl_defs.h | 196 +++ snake_branches/3.50_2dsll_lguide/incs.h | 44 + .../3.50_2dsll_lguide/incs_loader.h | 49 + snake_branches/3.50_2dsll_lguide/ini_VECT.c | 347 ++++ snake_branches/3.50_2dsll_lguide/jhl_defs.h | 25 + snake_branches/3.50_2dsll_lguide/kanaria.asm | 12 + snake_branches/3.50_2dsll_lguide/kanaria_c.c | 18 + snake_branches/3.50_2dsll_lguide/led.c | 399 +++++ snake_branches/3.50_2dsll_lguide/led.h | 142 ++ snake_branches/3.50_2dsll_lguide/led_cam.c | 156 ++ snake_branches/3.50_2dsll_lguide/led_pow.c | 296 ++++ snake_branches/3.50_2dsll_lguide/loader.c | 418 +++++ snake_branches/3.50_2dsll_lguide/loader.h | 6 + snake_branches/3.50_2dsll_lguide/magic.c | 33 + snake_branches/3.50_2dsll_lguide/magic.h | 24 + snake_branches/3.50_2dsll_lguide/main.c | 100 ++ .../3.50_2dsll_lguide/nec_s_2_bsrbin2.rb | 82 + .../3.50_2dsll_lguide/pedo_alg_thre_det2.c | 567 ++++++ .../3.50_2dsll_lguide/pedo_lpf_coeff.c | 87 + .../3.50_2dsll_lguide/pedo_lpf_coeff.h | 84 + snake_branches/3.50_2dsll_lguide/pedometer.h | 36 + snake_branches/3.50_2dsll_lguide/pm.c | 1554 +++++++++++++++++ snake_branches/3.50_2dsll_lguide/pm.h | 222 +++ snake_branches/3.50_2dsll_lguide/pool.h | 24 + snake_branches/3.50_2dsll_lguide/readme.txt | 16 + snake_branches/3.50_2dsll_lguide/reboot.c | 23 + snake_branches/3.50_2dsll_lguide/reboot.h | 6 + .../3.50_2dsll_lguide/renge/renge.c | 313 ++++ .../3.50_2dsll_lguide/renge/renge.h | 26 + .../3.50_2dsll_lguide/renge/renge_defs.h | 55 + .../renge/renge_task_config.rb | 59 + .../renge/renge_task_immediate.h | 25 + .../renge/renge_task_intval.h | 37 + .../3.50_2dsll_lguide/renge/renge_tasks.txt | 11 + snake_branches/3.50_2dsll_lguide/rtc.c | 182 ++ snake_branches/3.50_2dsll_lguide/rtc.h | 24 + snake_branches/3.50_2dsll_lguide/self_flash.c | 635 +++++++ snake_branches/3.50_2dsll_lguide/self_flash.h | 9 + snake_branches/3.50_2dsll_lguide/sw.c | 215 +++ snake_branches/3.50_2dsll_lguide/sw.h | 20 + snake_branches/3.50_2dsll_lguide/task_debug.c | 122 ++ snake_branches/3.50_2dsll_lguide/task_misc.c | 429 +++++ .../3.50_2dsll_lguide/task_status.c | 89 + snake_branches/3.50_2dsll_lguide/task_sys.c | 685 ++++++++ .../3.50_2dsll_lguide/user_define.h | 214 +++ snake_branches/3.50_2dsll_lguide/util_funcs.c | 65 + snake_branches/3.50_2dsll_lguide/util_funcs.h | 16 + snake_branches/3.50_2dsll_lguide/voltable.c | 64 + snake_branches/3.50_2dsll_lguide/voltable.h | 57 + snake_branches/3.50_2dsll_lguide/vreg_ctr.c | 638 +++++++ snake_branches/3.50_2dsll_lguide/vreg_ctr.h | 327 ++++ snake_branches/3.50_2dsll_lguide/vreg_twl.c | 169 ++ snake_branches/3.50_2dsll_lguide/vreg_twl.h | 127 ++ .../3.50_2dsll_lguide/yav_mcu_bsr.plg | 209 +++ .../3.50_2dsll_lguide/yav_mcu_bsr.pri | 1031 +++++++++++ .../3.50_2dsll_lguide/yav_mcu_bsr.prj | 1408 +++++++++++++++ .../3.50_2dsll_lguide/yav_mcu_bsr.prk | 17 + .../3.50_2dsll_lguide/yav_mcu_bsr.prw | 8 + .../3.50_2dsll_lguide/yav_mcu_bsr.sdb | 325 ++++ .../3.50_2dsll_lguide/ベースからの変更.xls | Bin 0 -> 26624 bytes 110 files changed, 19904 insertions(+) create mode 100644 snake_branches/3.50_2dsll_lguide/OMakefile create mode 100644 snake_branches/3.50_2dsll_lguide/OMakeroot create mode 100644 snake_branches/3.50_2dsll_lguide/VCProj/Debug/BuildLog.htm create mode 100644 snake_branches/3.50_2dsll_lguide/VCProj/Debug/bsr_trunk.lastbuildstate create mode 100644 snake_branches/3.50_2dsll_lguide/VCProj/Debug/bsr_trunk.log create mode 100644 snake_branches/3.50_2dsll_lguide/VCProj/Debug/bsr_trunk.unsuccessfulbuild create mode 100644 snake_branches/3.50_2dsll_lguide/VCProj/_UpgradeReport_Files/UpgradeReport.css create mode 100644 snake_branches/3.50_2dsll_lguide/VCProj/_UpgradeReport_Files/UpgradeReport.xslt create mode 100644 snake_branches/3.50_2dsll_lguide/VCProj/_UpgradeReport_Files/UpgradeReport_Minus.gif create mode 100644 snake_branches/3.50_2dsll_lguide/VCProj/_UpgradeReport_Files/UpgradeReport_Plus.gif create mode 100644 snake_branches/3.50_2dsll_lguide/VCProj/bsr_trunk.ncb create mode 100644 snake_branches/3.50_2dsll_lguide/VCProj/bsr_trunk.opensdf create mode 100644 snake_branches/3.50_2dsll_lguide/VCProj/bsr_trunk.sdf create mode 100644 snake_branches/3.50_2dsll_lguide/VCProj/bsr_trunk.sln create mode 100644 snake_branches/3.50_2dsll_lguide/VCProj/bsr_trunk.sln.old create mode 100644 snake_branches/3.50_2dsll_lguide/VCProj/bsr_trunk.suo create mode 100644 snake_branches/3.50_2dsll_lguide/VCProj/bsr_trunk.suo.old create mode 100644 snake_branches/3.50_2dsll_lguide/VCProj/bsr_trunk.vcproj create mode 100644 snake_branches/3.50_2dsll_lguide/VCProj/bsr_trunk.vcproj.NCL.N2232.user create mode 100644 snake_branches/3.50_2dsll_lguide/VCProj/bsr_trunk.vcxproj create mode 100644 snake_branches/3.50_2dsll_lguide/VCProj/bsr_trunk.vcxproj.filters create mode 100644 snake_branches/3.50_2dsll_lguide/VCProj/bsr_trunk.vcxproj.user create mode 100644 snake_branches/3.50_2dsll_lguide/WDT.c create mode 100644 snake_branches/3.50_2dsll_lguide/WDT.h create mode 100644 snake_branches/3.50_2dsll_lguide/accero.c create mode 100644 snake_branches/3.50_2dsll_lguide/accero.h create mode 100644 snake_branches/3.50_2dsll_lguide/adc.c create mode 100644 snake_branches/3.50_2dsll_lguide/adc.h create mode 100644 snake_branches/3.50_2dsll_lguide/batt_params.c create mode 100644 snake_branches/3.50_2dsll_lguide/batt_params.h create mode 100644 snake_branches/3.50_2dsll_lguide/bsr.hex create mode 100644 snake_branches/3.50_2dsll_lguide/bsr.lmf create mode 100644 snake_branches/3.50_2dsll_lguide/bsr_k0r.map create mode 100644 snake_branches/3.50_2dsll_lguide/bsr_mcu.dr create mode 100644 snake_branches/3.50_2dsll_lguide/bsr_system.h create mode 100644 snake_branches/3.50_2dsll_lguide/config.h create mode 100644 snake_branches/3.50_2dsll_lguide/fsl.h create mode 100644 snake_branches/3.50_2dsll_lguide/fsl_user.h create mode 100644 snake_branches/3.50_2dsll_lguide/get_ei.asm create mode 100644 snake_branches/3.50_2dsll_lguide/hal.c create mode 100644 snake_branches/3.50_2dsll_lguide/hal.h create mode 100644 snake_branches/3.50_2dsll_lguide/hoge.bin create mode 100644 snake_branches/3.50_2dsll_lguide/i2c_ctr.c create mode 100644 snake_branches/3.50_2dsll_lguide/i2c_ctr.h create mode 100644 snake_branches/3.50_2dsll_lguide/i2c_mcu-sub.c create mode 100644 snake_branches/3.50_2dsll_lguide/i2c_mcu.c create mode 100644 snake_branches/3.50_2dsll_lguide/i2c_mcu.h create mode 100644 snake_branches/3.50_2dsll_lguide/i2c_mcu_sub.h create mode 100644 snake_branches/3.50_2dsll_lguide/i2c_twl.c create mode 100644 snake_branches/3.50_2dsll_lguide/i2c_twl.h create mode 100644 snake_branches/3.50_2dsll_lguide/i2c_twl_defs.h create mode 100644 snake_branches/3.50_2dsll_lguide/incs.h create mode 100644 snake_branches/3.50_2dsll_lguide/incs_loader.h create mode 100644 snake_branches/3.50_2dsll_lguide/ini_VECT.c create mode 100644 snake_branches/3.50_2dsll_lguide/jhl_defs.h create mode 100644 snake_branches/3.50_2dsll_lguide/kanaria.asm create mode 100644 snake_branches/3.50_2dsll_lguide/kanaria_c.c create mode 100644 snake_branches/3.50_2dsll_lguide/led.c create mode 100644 snake_branches/3.50_2dsll_lguide/led.h create mode 100644 snake_branches/3.50_2dsll_lguide/led_cam.c create mode 100644 snake_branches/3.50_2dsll_lguide/led_pow.c create mode 100644 snake_branches/3.50_2dsll_lguide/loader.c create mode 100644 snake_branches/3.50_2dsll_lguide/loader.h create mode 100644 snake_branches/3.50_2dsll_lguide/magic.c create mode 100644 snake_branches/3.50_2dsll_lguide/magic.h create mode 100644 snake_branches/3.50_2dsll_lguide/main.c create mode 100755 snake_branches/3.50_2dsll_lguide/nec_s_2_bsrbin2.rb create mode 100644 snake_branches/3.50_2dsll_lguide/pedo_alg_thre_det2.c create mode 100644 snake_branches/3.50_2dsll_lguide/pedo_lpf_coeff.c create mode 100644 snake_branches/3.50_2dsll_lguide/pedo_lpf_coeff.h create mode 100644 snake_branches/3.50_2dsll_lguide/pedometer.h create mode 100644 snake_branches/3.50_2dsll_lguide/pm.c create mode 100644 snake_branches/3.50_2dsll_lguide/pm.h create mode 100644 snake_branches/3.50_2dsll_lguide/pool.h create mode 100644 snake_branches/3.50_2dsll_lguide/readme.txt create mode 100644 snake_branches/3.50_2dsll_lguide/reboot.c create mode 100644 snake_branches/3.50_2dsll_lguide/reboot.h create mode 100644 snake_branches/3.50_2dsll_lguide/renge/renge.c create mode 100644 snake_branches/3.50_2dsll_lguide/renge/renge.h create mode 100644 snake_branches/3.50_2dsll_lguide/renge/renge_defs.h create mode 100644 snake_branches/3.50_2dsll_lguide/renge/renge_task_config.rb create mode 100644 snake_branches/3.50_2dsll_lguide/renge/renge_task_immediate.h create mode 100644 snake_branches/3.50_2dsll_lguide/renge/renge_task_intval.h create mode 100644 snake_branches/3.50_2dsll_lguide/renge/renge_tasks.txt create mode 100644 snake_branches/3.50_2dsll_lguide/rtc.c create mode 100644 snake_branches/3.50_2dsll_lguide/rtc.h create mode 100644 snake_branches/3.50_2dsll_lguide/self_flash.c create mode 100644 snake_branches/3.50_2dsll_lguide/self_flash.h create mode 100644 snake_branches/3.50_2dsll_lguide/sw.c create mode 100644 snake_branches/3.50_2dsll_lguide/sw.h create mode 100644 snake_branches/3.50_2dsll_lguide/task_debug.c create mode 100644 snake_branches/3.50_2dsll_lguide/task_misc.c create mode 100644 snake_branches/3.50_2dsll_lguide/task_status.c create mode 100644 snake_branches/3.50_2dsll_lguide/task_sys.c create mode 100644 snake_branches/3.50_2dsll_lguide/user_define.h create mode 100644 snake_branches/3.50_2dsll_lguide/util_funcs.c create mode 100644 snake_branches/3.50_2dsll_lguide/util_funcs.h create mode 100644 snake_branches/3.50_2dsll_lguide/voltable.c create mode 100644 snake_branches/3.50_2dsll_lguide/voltable.h create mode 100644 snake_branches/3.50_2dsll_lguide/vreg_ctr.c create mode 100644 snake_branches/3.50_2dsll_lguide/vreg_ctr.h create mode 100644 snake_branches/3.50_2dsll_lguide/vreg_twl.c create mode 100644 snake_branches/3.50_2dsll_lguide/vreg_twl.h create mode 100644 snake_branches/3.50_2dsll_lguide/yav_mcu_bsr.plg create mode 100644 snake_branches/3.50_2dsll_lguide/yav_mcu_bsr.pri create mode 100644 snake_branches/3.50_2dsll_lguide/yav_mcu_bsr.prj create mode 100644 snake_branches/3.50_2dsll_lguide/yav_mcu_bsr.prk create mode 100644 snake_branches/3.50_2dsll_lguide/yav_mcu_bsr.prw create mode 100644 snake_branches/3.50_2dsll_lguide/yav_mcu_bsr.sdb create mode 100644 snake_branches/3.50_2dsll_lguide/ベースからの変更.xls diff --git a/snake_branches/3.50_2dsll_lguide/OMakefile b/snake_branches/3.50_2dsll_lguide/OMakefile new file mode 100644 index 0000000..42baad6 --- /dev/null +++ b/snake_branches/3.50_2dsll_lguide/OMakefile @@ -0,0 +1,159 @@ +############################################################ +# 環境設定 +############################################################ + +# マイコン開発環境のインストール先を環境変数で指定する +NECEL_ROOT = + if $(defined-env NECEL_ROOT) + value $(absname $"$(getenv NECEL_ROOT)") + else + value "C:\Program Files (x86)\NEC Electronics Tools" + +# cygwinのインストール先を環境変数で指定する +CYGWIN_ROOT = + if $(defined-env CYGWIN_ROOT) + value $(absname $"$(getenv CYGWIN_ROOT)") + else + value "C:\cygwin" + +# GCCバージョンを環境変数で指定する +CYGWIN_GCC = + if $(defined-env CYGWIN_GCC) + value $(CYGWIN_ROOT)/bin/$"$(getenv CYGWIN_GCC)" + else + value $(CYGWIN_ROOT)/bin/gcc-4 + +#デバイスファイルは NECEL_ROOT/dev に置くこと +#自己アップデート用ライブラリは CC_LIBS_ROOT/以下に置くこと + +SUBDIR_INTER_ASM = $(dir inter_asm) + +CC_ROOT = $(NECEL_ROOT)/CC78K0R +CC_VER = W2.13 +CC = $(CC_ROOT)/$(CC_VER)/bin/cc78k0r.exe +RA = $(NECEL_ROOT)/RA78K0R/W1.33/bin/ra78k0r.exe +LK = $(NECEL_ROOT)/RA78K0R/W1.33/bin/lk78k0r.exe +OC = $(NECEL_ROOT)/RA78K0R/W1.33/bin/oc78k0r.exe +LCNV = $(NECEL_ROOT)/RA78K0R/W1.33/bin/lc78k0r.exe +DEVFILE_ROOT = $(NECEL_ROOT)/dev + +CC_LIBS_ROOT = $(CC_ROOT)/$(CC_VER)/lib78k0r +CC_INCLUDES_ROOT = $(CC_ROOT)/$(CC_VER)/inc78k0r +S0RM = s0rm.rel + +# セキュリティID +GIVALUE = 1B339499E033F240BFAAh + +# ユーザオプションバイト +GBValue = 7EFBFFh + +DEVICE_NAME = 9F0104 + +FSL_LIB = fsl.lib + +TARGET_NAME = bsr +TARGET_LMF = $(TARGET_NAME).lmf +TARGET_HEX = $(TARGET_NAME).hex + +# ここまで +############################################################ + +############################################################ +# ソースを追加したら編集する箇所 +############################################################ + +SRC_FILES[] = + loader + pm + i2c_ctr + main + magic + WDT + i2c_mcu + i2c_twl + led + rtc + vreg_ctr + vreg_twl + adc + renge\renge + accero + self_flash + sw + task_debug + task_misc + task_sys + pedo_alg_thre_det2 + ini_VECT + task_status + led_cam + led_pow + hal + batt_params + voltable + pedo_lpf_coeff + +INCLUDES[] = + ./ + renge + +# ここまで +############################################################ + +.PHONY: clean BeforeBuild + +AddRel(files) = + file_names = $(addsuffix .rel, $(files)) + return $(file_names) + +# *.cからinter_asm/*.asmを作るための関数 +AsmProgram(files) = + foreach(filename, $(files)) + asm_name = $(addprefix $(SUBDIR_INTER_ASM)/, $(addsuffix .asm, $(basename $(filename)))) + c_name = $(addsuffix .c, $(filename)) + + .SCANNER: $(asm_name): $(c_name) + $(CYGWIN_GCC) -MM -w -I$(CC_INCLUDES_ROOT) $(c_name) | sed 's/$(filename)\.o/$(SUBDIR_INTER_ASM)\/$(filename)\.asm/g' + + $(asm_name): $(c_name) + $(CC) -c$(DEVICE_NAME) -y$(DEVFILE_ROOT) -_msgoff -irenge -i$(CC_INCLUDES_ROOT) -ms -qvjl2w -sa$(SUBDIR_INTER_ASM) -zpb -no $(c_name) + + return $(addsuffix .c, $(files)) + +# inter_asm/*.asm から *.relを作るための関数 +RelProgram(files) = + foreach(filename, $(files)) + rel_name = $(addsuffix .rel, $(basename $(filename))) + asm_name = $(addprefix $(SUBDIR_INTER_ASM)/, $(addsuffix .asm, $(basename $(filename)))) + asm_win_name = $(addprefix $(SUBDIR_INTER_ASM)\\, $(addsuffix .asm, $(basename $(filename)))) + c_name = $(addsuffix .c, $(filename)) + + .SCANNER: $(rel_name): $(asm_win_name) + $(CYGWIN_GCC) -MM -w -I$(CC_INCLUDES_ROOT) $(c_name) | sed 's/\.o/\.rel/g' + + $(rel_name): $(asm_name) + $(RA) -c$(DEVICE_NAME) -y$(DEVFILE_ROOT) -_msgoff $(asm_win_name) + + return $(addsuffix .rel, $(basename $(files))) + +$(TARGET_LMF): $(RelProgram $(SRC_FILES)) $(AsmProgram $(SRC_FILES)) + $(LK) -y$(DEVFILE_ROOT) -_msgoff -o$(TARGET_LMF) $(CC_LIBS_ROOT)/$(S0RM) -gi$(GIVALUE) -pbsr_k0r.map -nkd -gb$(GBValue) -b$(CC_LIBS_ROOT)/$(FSL_LIB) -bcl0rdm.lib -bcl0rm.lib -bcl0rmf.lib -i$(CC_LIBS_ROOT) -dbsr_mcu.dr -s -w0 $(AddRel $(basename $(SRC_FILES))) + +$(TARGET_HEX) : $(TARGET_LMF) + $(OC) -y$(DEVFILE_ROOT) -_msgoff -o.\\$(TARGET_HEX) -nu -ki $(TARGET_LMF) + +BeforeBuild: +# ビルド前に必ず実行したい処理 +# OMakeがタイムスタンプではなくMD5でファイルの状態を管理しているので +# 残念ながら cleanしてからビルドしなおす必要がある + C:\Windows\system32\cmd.exe /c $(CYGWIN_ROOT)\bin\touch magic.c + if $(not $(file-exists $(SUBDIR_INTER_ASM))) + mkdir $(SUBDIR_INTER_ASM) + +hoge.bin: BeforeBuild $(TARGET_HEX) + C:\Windows\system32\cmd.exe /c ruby nec_s_2_bsrbin2.rb $(TARGET_HEX) + +clean: + rm -rf *.prn *.rel $(SUBDIR_INTER_ASM)/*.asm *.omc .omakedb .omakedb.lock + +.DEFAULT: hoge.bin diff --git a/snake_branches/3.50_2dsll_lguide/OMakeroot b/snake_branches/3.50_2dsll_lguide/OMakeroot new file mode 100644 index 0000000..16f4b11 --- /dev/null +++ b/snake_branches/3.50_2dsll_lguide/OMakeroot @@ -0,0 +1,4 @@ +# +# Include the OMakefile in this directory. +# +.SUBDIRS: . diff --git a/snake_branches/3.50_2dsll_lguide/VCProj/Debug/BuildLog.htm b/snake_branches/3.50_2dsll_lguide/VCProj/Debug/BuildLog.htm new file mode 100644 index 0000000000000000000000000000000000000000..826ce7ce8cbd63fbd1c0dfd05436b1b710c41607 GIT binary patch literal 3992 zcmeH~&u>&!6vvM)o0#w?ywm`Sna*ho0xdNH9U{=uANGf2#xygX9~~K(Ix|H}(4C1| z6O$TOni!)&cbKrzy$cCTC9X7aNeC-;#;Bij-n*R{+dzvUVbQ$2_wJ8#&#!yV_n!OD z-^XN0T5?fp@{&9wJ!1Wm~u>=ZAg>Z7F<{OmXXviFR~`+W^1~&E5N^qyg;!G zkJ3i31YI=i#4bG&B!769Aia;f8;IminYp# zRS~T`>r1RO?W=riP&8>>@zED#Fwy2`y{k7hl6(4{#-2`Z@G&`QBn53_xuMss`vLfy z#2QZ%Kb!n2p0A*TcFfsKk*7V^w#KX~Lfh#RTf5mC85w1_NAZbyV;^z~E_FE3*gUd* zZl~ZAo}F+z;8MExcF8>(yt?-3t@A@z@T=a_@AVtKu0N^uP1}Yn_%5!X{RMeSZ&mjc zY;F`U7KpTpT$OqE)1VBvT`}*lOF{1T_vk_KWxlkxJHBEcnlE<}TLVdK-O%6lzDL&` z{hC(LJn%BUyYXc)zjd^B$CsQtQNFET;>o+@tKr*_s7q6;1Wr?_NII0=`UFJ1p>gTO6+HzTQ z*f!0~veUJ&Fsz9=byH^0r(XU0ki@$!M!3BC5F-<28@|Rr+(D zp;pIOZ5PQ=FwL;84}?=W%sCm4Sf2EN1a&ZE6)9EF#VX1O4NkfSn{|tvzLB7g;bbhO zk5v)aYL!jY!K>-L5+}K#h9OxIJxuO7>^UxH!L1k%tQxZ_%GP%x%&b>@htS$kqm2>! zAA+a*p&rw<4~lwLKLmNQ`U&`Ll3zuR*&OTf_z7ePbv7laC#f?|fb{f10+t z)ynp2>+WhLu7K@UQTJ-4Og7nxKZHlqWVh8Whvf)W!~%H}=SMDy`&3d#q`Y2fGHW=I zBeolyt5z-N{G1Q*o$IKXtqxjoSw$Hm7b@gJe3!JU=Ysw=@mh9PKT6K)IBPan<5t&1 z63+Pns`K*NnVATT2~n}V7&heSyv?*LaJw-ER2l&Rw!Y_Vee3&wRr$kWI*r%E?bT@8 HH}QV~c8B5A literal 0 HcmV?d00001 diff --git a/snake_branches/3.50_2dsll_lguide/VCProj/Debug/bsr_trunk.lastbuildstate b/snake_branches/3.50_2dsll_lguide/VCProj/Debug/bsr_trunk.lastbuildstate new file mode 100644 index 0000000..ed27c09 --- /dev/null +++ b/snake_branches/3.50_2dsll_lguide/VCProj/Debug/bsr_trunk.lastbuildstate @@ -0,0 +1,2 @@ +#v4.0:v100 +Debug|Win32|C:\78k_data\yav-mcu-basara\trunk\VCProj\| diff --git a/snake_branches/3.50_2dsll_lguide/VCProj/Debug/bsr_trunk.log b/snake_branches/3.50_2dsll_lguide/VCProj/Debug/bsr_trunk.log new file mode 100644 index 0000000..22fa9b7 --- /dev/null +++ b/snake_branches/3.50_2dsll_lguide/VCProj/Debug/bsr_trunk.log @@ -0,0 +1,105 @@ +2016/09/06 9:50:08 にビルドを開始しました。 + 1>ノード 2 上のプロジェクト "C:\78k_data\yav-mcu-basara\snake_branches\3.40_jane\VCProj\bsr_trunk.vcxproj" (build ターゲット)。 + 1>InitializeBuildStatus: + "AlwaysCreate" が指定されたため "Debug\arr_trunk.unsuccessfulbuild" を作成しています。 + ClCompile: + c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\CL.exe /c /Zi /nologo /W1 /WX- /O2 /Oy- /D _MBCS /D _MBCS /Gm- /EHsc /MD /GS /fp:precise /Zc:wchar_t /Zc:forScope /Fo"Debug\\" /Fd"Debug\vc100.pdb" /Gd /TC /analyze- /errorReport:prompt ..\accero.c ..\adc.c ..\batt_params.c ..\hal.c ..\i2c_ctr.c "..\i2c_mcu-sub.c" ..\i2c_mcu.c ..\i2c_twl.c ..\ini_VECT.c ..\kanaria_c.c ..\led.c ..\led_cam.c ..\led_pow.c ..\loader.c ..\magic.c ..\main.c ..\my_led.c ..\pedo_alg_thre_det2.c ..\pedo_lpf_coeff.c ..\pm.c ..\reboot.c ..\renge\renge.c ..\rtc.c ..\self_flash.c ..\sim\simFixture.c ..\sim\sim_interrupt_decrare.c ..\sw.c ..\task_debug.c ..\task_misc.c ..\task_status.c ..\task_sys.c ..\util_funcs.c ..\voltable.c ..\vreg_ctr.c ..\vreg_twl.c ..\WDT.c + accero.c + 1>c:\78k_data\yav-mcu-basara\snake_branches\3.40_jane\incs.h(17): fatal error C1083: include ファイルを開けません。'sim/simOnWin.h': No such file or directory + adc.c + 1>c:\78k_data\yav-mcu-basara\snake_branches\3.40_jane\incs.h(17): fatal error C1083: include ファイルを開けません。'sim/simOnWin.h': No such file or directory + batt_params.c + 1>c:\78k_data\yav-mcu-basara\snake_branches\3.40_jane\batt_params.h(30): error C2059: 構文エラー : '定数' + hal.c + 1>c:\78k_data\yav-mcu-basara\snake_branches\3.40_jane\incs_loader.h(28): fatal error C1083: include ファイルを開けません。'sim/simOnWin.h': No such file or directory + i2c_ctr.c + 1>c:\78k_data\yav-mcu-basara\snake_branches\3.40_jane\incs.h(17): fatal error C1083: include ファイルを開けません。'sim/simOnWin.h': No such file or directory + i2c_mcu-sub.c + 1>c:\78k_data\yav-mcu-basara\snake_branches\3.40_jane\incs.h(17): fatal error C1083: include ファイルを開けません。'sim/simOnWin.h': No such file or directory + i2c_mcu.c + 1>c:\78k_data\yav-mcu-basara\snake_branches\3.40_jane\incs_loader.h(28): fatal error C1083: include ファイルを開けません。'sim/simOnWin.h': No such file or directory + i2c_twl.c + 1>c:\78k_data\yav-mcu-basara\snake_branches\3.40_jane\incs_loader.h(28): fatal error C1083: include ファイルを開けません。'sim/simOnWin.h': No such file or directory + ini_VECT.c + 1>..\ini_VECT.c(344): fatal error C1083: include ファイルを開けません。'sim/sim_interrupt_decrare.c': No such file or directory + kanaria_c.c + 1>c:\78k_data\yav-mcu-basara\snake_branches\3.40_jane\incs.h(17): fatal error C1083: include ファイルを開けません。'sim/simOnWin.h': No such file or directory + led.c + 1>c:\78k_data\yav-mcu-basara\snake_branches\3.40_jane\incs.h(17): fatal error C1083: include ファイルを開けません。'sim/simOnWin.h': No such file or directory + led_cam.c + 1>c:\78k_data\yav-mcu-basara\snake_branches\3.40_jane\incs.h(17): fatal error C1083: include ファイルを開けません。'sim/simOnWin.h': No such file or directory + led_pow.c + 1>c:\78k_data\yav-mcu-basara\snake_branches\3.40_jane\incs.h(17): fatal error C1083: include ファイルを開けません。'sim/simOnWin.h': No such file or directory + loader.c + 1>c:\78k_data\yav-mcu-basara\snake_branches\3.40_jane\incs_loader.h(28): fatal error C1083: include ファイルを開けません。'sim/simOnWin.h': No such file or directory + magic.c + main.c + 1>c:\78k_data\yav-mcu-basara\snake_branches\3.40_jane\incs.h(17): fatal error C1083: include ファイルを開けません。'sim/simOnWin.h': No such file or directory + my_led.c + 1>c1 : fatal error C1083: ソース ファイルを開けません。'..\my_led.c': No such file or directory + pedo_alg_thre_det2.c + 1>c:\78k_data\yav-mcu-basara\snake_branches\3.40_jane\incs.h(17): fatal error C1083: include ファイルを開けません。'sim/simOnWin.h': No such file or directory + pedo_lpf_coeff.c + 1>c:\78k_data\yav-mcu-basara\snake_branches\3.40_jane\incs.h(17): fatal error C1083: include ファイルを開けません。'sim/simOnWin.h': No such file or directory + pm.c + 1>c:\78k_data\yav-mcu-basara\snake_branches\3.40_jane\incs.h(17): fatal error C1083: include ファイルを開けません。'sim/simOnWin.h': No such file or directory + コードを生成中... + コンパイル中... + reboot.c + 1>..\reboot.c(8): warning C4068: 不明なプラグマがありました。 + 1>c:\78k_data\yav-mcu-basara\snake_branches\3.40_jane\incs_loader.h(28): fatal error C1083: include ファイルを開けません。'sim/simOnWin.h': No such file or directory + renge.c + 1>c:\78k_data\yav-mcu-basara\snake_branches\3.40_jane\renge\renge.h(16): error C2054: '__callt' の後に '(' が必要です。 + 1>c:\78k_data\yav-mcu-basara\snake_branches\3.40_jane\renge\renge.h(16): error C2085: 'renge_task_immed_run' : 仮パラメーター リスト内にありません。 + 1>c:\78k_data\yav-mcu-basara\snake_branches\3.40_jane\renge\renge.h(17): error C2061: 構文エラー : 識別子 '__callt' + 1>c:\78k_data\yav-mcu-basara\snake_branches\3.40_jane\renge\renge.h(22): error C2054: '__callt' の後に '(' が必要です。 + 1>c:\78k_data\yav-mcu-basara\snake_branches\3.40_jane\renge\renge.h(22): error C2085: 'renge_task_interval_run' : 仮パラメーター リスト内にありません。 + 1>c:\78k_data\yav-mcu-basara\snake_branches\3.40_jane\renge\renge.h(23): error C2085: 'renge_flg_interval' : 仮パラメーター リスト内にありません。 + 1>c:\78k_data\yav-mcu-basara\snake_branches\3.40_jane\renge\renge.h(24): error C2085: 'renge_task_interval_run_force' : 仮パラメーター リスト内にありません。 + 1>c:\78k_data\yav-mcu-basara\snake_branches\3.40_jane\renge\renge_task_intval.h(13): error C2085: 'tsk_sw' : 仮パラメーター リスト内にありません。 + 1>c:\78k_data\yav-mcu-basara\snake_branches\3.40_jane\renge\renge_task_intval.h(14): error C2085: 'tsk_adc' : 仮パラメーター リスト内にありません。 + 1>c:\78k_data\yav-mcu-basara\snake_branches\3.40_jane\renge\renge_task_intval.h(15): error C2085: 'tsk_batt' : 仮パラメーター リスト内にありません。 + 1>c:\78k_data\yav-mcu-basara\snake_branches\3.40_jane\renge\renge_task_intval.h(16): error C2085: 'tsk_led_pow' : 仮パラメーター リスト内にありません。 + 1>c:\78k_data\yav-mcu-basara\snake_branches\3.40_jane\renge\renge_task_intval.h(17): error C2085: 'tsk_led_wifi' : 仮パラメーター リスト内にありません。 + 1>c:\78k_data\yav-mcu-basara\snake_branches\3.40_jane\renge\renge_task_intval.h(18): error C2085: 'tsk_led_notify' : 仮パラメーター リスト内にありません。 + 1>c:\78k_data\yav-mcu-basara\snake_branches\3.40_jane\renge\renge_task_intval.h(19): error C2085: 'tsk_led_cam' : 仮パラメーター リスト内にありません。 + 1>c:\78k_data\yav-mcu-basara\snake_branches\3.40_jane\renge\renge_task_intval.h(20): error C2085: 'tsk_misc' : 仮パラメーター リスト内にありません。 + 1>c:\78k_data\yav-mcu-basara\snake_branches\3.40_jane\renge\renge_task_intval.h(21): error C2085: 'tsk_status' : 仮パラメーター リスト内にありません。 + 1>c:\78k_data\yav-mcu-basara\snake_branches\3.40_jane\renge\renge_task_intval.h(22): error C2085: 'tsk_sys' : 仮パラメーター リスト内にありません。 + 1>c:\78k_data\yav-mcu-basara\snake_branches\3.40_jane\renge\renge_task_intval.h(24): error C2085: 'tasks' : 仮パラメーター リスト内にありません。 + 1>c:\78k_data\yav-mcu-basara\snake_branches\3.40_jane\renge\renge_task_intval.h(24): error C2143: 構文エラー : ';' が '=' の前にありません。 + 1>..\renge\renge.c(33): fatal error C1083: include ファイルを開けません。'../sim/simOnWin.h': No such file or directory + rtc.c + 1>c:\78k_data\yav-mcu-basara\snake_branches\3.40_jane\incs.h(17): fatal error C1083: include ファイルを開けません。'sim/simOnWin.h': No such file or directory + self_flash.c + 1>c:\78k_data\yav-mcu-basara\snake_branches\3.40_jane\incs_loader.h(28): fatal error C1083: include ファイルを開けません。'sim/simOnWin.h': No such file or directory + simFixture.c + 1>c1 : fatal error C1083: ソース ファイルを開けません。'..\sim\simFixture.c': No such file or directory + sim_interrupt_decrare.c + 1>c1 : fatal error C1083: ソース ファイルを開けません。'..\sim\sim_interrupt_decrare.c': No such file or directory + sw.c + 1>c:\78k_data\yav-mcu-basara\snake_branches\3.40_jane\incs.h(17): fatal error C1083: include ファイルを開けません。'sim/simOnWin.h': No such file or directory + task_debug.c + 1>c:\78k_data\yav-mcu-basara\snake_branches\3.40_jane\incs_loader.h(28): fatal error C1083: include ファイルを開けません。'sim/simOnWin.h': No such file or directory + task_misc.c + 1>c:\78k_data\yav-mcu-basara\snake_branches\3.40_jane\incs.h(17): fatal error C1083: include ファイルを開けません。'sim/simOnWin.h': No such file or directory + task_status.c + 1>c:\78k_data\yav-mcu-basara\snake_branches\3.40_jane\incs_loader.h(28): fatal error C1083: include ファイルを開けません。'sim/simOnWin.h': No such file or directory + task_sys.c + 1>c:\78k_data\yav-mcu-basara\snake_branches\3.40_jane\incs.h(17): fatal error C1083: include ファイルを開けません。'sim/simOnWin.h': No such file or directory + util_funcs.c + 1>c:\78k_data\yav-mcu-basara\snake_branches\3.40_jane\incs_loader.h(28): fatal error C1083: include ファイルを開けません。'sim/simOnWin.h': No such file or directory + voltable.c + 1>c:\78k_data\yav-mcu-basara\snake_branches\3.40_jane\incs.h(17): fatal error C1083: include ファイルを開けません。'sim/simOnWin.h': No such file or directory + vreg_ctr.c + 1>c:\78k_data\yav-mcu-basara\snake_branches\3.40_jane\incs.h(17): fatal error C1083: include ファイルを開けません。'sim/simOnWin.h': No such file or directory + vreg_twl.c + 1>c:\78k_data\yav-mcu-basara\snake_branches\3.40_jane\incs.h(17): fatal error C1083: include ファイルを開けません。'sim/simOnWin.h': No such file or directory + WDT.c + 1>c:\78k_data\yav-mcu-basara\snake_branches\3.40_jane\incs_loader.h(28): fatal error C1083: include ファイルを開けません。'sim/simOnWin.h': No such file or directory + コードを生成中... + 1>プロジェクト "C:\78k_data\yav-mcu-basara\snake_branches\3.40_jane\VCProj\bsr_trunk.vcxproj" (build ターゲット) のビルドが終了しました -- 失敗。 + +ビルドに失敗しました。 + +経過時間 00:00:04.73 diff --git a/snake_branches/3.50_2dsll_lguide/VCProj/Debug/bsr_trunk.unsuccessfulbuild b/snake_branches/3.50_2dsll_lguide/VCProj/Debug/bsr_trunk.unsuccessfulbuild new file mode 100644 index 0000000..e69de29 diff --git a/snake_branches/3.50_2dsll_lguide/VCProj/_UpgradeReport_Files/UpgradeReport.css b/snake_branches/3.50_2dsll_lguide/VCProj/_UpgradeReport_Files/UpgradeReport.css new file mode 100644 index 0000000..3411f63 --- /dev/null +++ b/snake_branches/3.50_2dsll_lguide/VCProj/_UpgradeReport_Files/UpgradeReport.css @@ -0,0 +1,207 @@ +BODY +{ + BACKGROUND-COLOR: white; + FONT-FAMILY: "Verdana", sans-serif; + FONT-SIZE: 100%; + MARGIN-LEFT: 0px; + MARGIN-TOP: 0px +} +P +{ + FONT-FAMILY: "Verdana", sans-serif; + FONT-SIZE: 70%; + LINE-HEIGHT: 12pt; + MARGIN-BOTTOM: 0px; + MARGIN-LEFT: 10px; + MARGIN-TOP: 10px +} +.note +{ + BACKGROUND-COLOR: #ffffff; + COLOR: #336699; + FONT-FAMILY: "Verdana", sans-serif; + FONT-SIZE: 100%; + MARGIN-BOTTOM: 0px; + MARGIN-LEFT: 0px; + MARGIN-TOP: 0px; + PADDING-RIGHT: 10px +} +.infotable +{ + BACKGROUND-COLOR: #f0f0e0; + BORDER-BOTTOM: #ffffff 0px solid; + BORDER-COLLAPSE: collapse; + BORDER-LEFT: #ffffff 0px solid; + BORDER-RIGHT: #ffffff 0px solid; + BORDER-TOP: #ffffff 0px solid; + FONT-SIZE: 70%; + MARGIN-LEFT: 10px +} +.issuetable +{ + BACKGROUND-COLOR: #ffffe8; + BORDER-COLLAPSE: collapse; + COLOR: #000000; + FONT-SIZE: 100%; + MARGIN-BOTTOM: 10px; + MARGIN-LEFT: 13px; + MARGIN-TOP: 0px +} +.issuetitle +{ + BACKGROUND-COLOR: #ffffff; + BORDER-BOTTOM: #dcdcdc 1px solid; + BORDER-TOP: #dcdcdc 1px; + COLOR: #003366; + FONT-WEIGHT: normal +} +.header +{ + BACKGROUND-COLOR: #cecf9c; + BORDER-BOTTOM: #ffffff 1px solid; + BORDER-LEFT: #ffffff 1px solid; + BORDER-RIGHT: #ffffff 1px solid; + BORDER-TOP: #ffffff 1px solid; + COLOR: #000000; + FONT-WEIGHT: bold +} +.issuehdr +{ + BACKGROUND-COLOR: #E0EBF5; + BORDER-BOTTOM: #dcdcdc 1px solid; + BORDER-TOP: #dcdcdc 1px solid; + COLOR: #000000; + FONT-WEIGHT: normal +} +.issuenone +{ + BACKGROUND-COLOR: #ffffff; + BORDER-BOTTOM: 0px; + BORDER-LEFT: 0px; + BORDER-RIGHT: 0px; + BORDER-TOP: 0px; + COLOR: #000000; + FONT-WEIGHT: normal +} +.content +{ + BACKGROUND-COLOR: #e7e7ce; + BORDER-BOTTOM: #ffffff 1px solid; + BORDER-LEFT: #ffffff 1px solid; + BORDER-RIGHT: #ffffff 1px solid; + BORDER-TOP: #ffffff 1px solid; + PADDING-LEFT: 3px +} +.issuecontent +{ + BACKGROUND-COLOR: #ffffff; + BORDER-BOTTOM: #dcdcdc 1px solid; + BORDER-TOP: #dcdcdc 1px solid; + PADDING-LEFT: 3px +} +A:link +{ + COLOR: #cc6633; + TEXT-DECORATION: underline +} +A:visited +{ + COLOR: #cc6633; +} +A:active +{ + COLOR: #cc6633; +} +A:hover +{ + COLOR: #cc3300; + TEXT-DECORATION: underline +} +H1 +{ + BACKGROUND-COLOR: #003366; + BORDER-BOTTOM: #336699 6px solid; + COLOR: #ffffff; + FONT-SIZE: 130%; + FONT-WEIGHT: normal; + MARGIN: 0em 0em 0em -20px; + PADDING-BOTTOM: 8px; + PADDING-LEFT: 30px; + PADDING-TOP: 16px +} +H2 +{ + COLOR: #000000; + FONT-SIZE: 80%; + FONT-WEIGHT: bold; + MARGIN-BOTTOM: 3px; + MARGIN-LEFT: 10px; + MARGIN-TOP: 20px; + PADDING-LEFT: 0px +} +H3 +{ + COLOR: #000000; + FONT-SIZE: 80%; + FONT-WEIGHT: bold; + MARGIN-BOTTOM: -5px; + MARGIN-LEFT: 10px; + MARGIN-TOP: 20px +} +H4 +{ + COLOR: #000000; + FONT-SIZE: 70%; + FONT-WEIGHT: bold; + MARGIN-BOTTOM: 0px; + MARGIN-TOP: 15px; + PADDING-BOTTOM: 0px +} +UL +{ + COLOR: #000000; + FONT-SIZE: 70%; + LIST-STYLE: square; + MARGIN-BOTTOM: 0pt; + MARGIN-TOP: 0pt +} +OL +{ + COLOR: #000000; + FONT-SIZE: 70%; + LIST-STYLE: square; + MARGIN-BOTTOM: 0pt; + MARGIN-TOP: 0pt +} +LI +{ + LIST-STYLE: square; + MARGIN-LEFT: 0px +} +.expandable +{ + CURSOR: hand +} +.expanded +{ + color: black +} +.collapsed +{ + DISPLAY: none +} +.foot +{ +BACKGROUND-COLOR: #ffffff; +BORDER-BOTTOM: #cecf9c 1px solid; +BORDER-TOP: #cecf9c 2px solid +} +.settings +{ +MARGIN-LEFT: 25PX; +} +.help +{ +TEXT-ALIGN: right; +margin-right: 10px; +} diff --git a/snake_branches/3.50_2dsll_lguide/VCProj/_UpgradeReport_Files/UpgradeReport.xslt b/snake_branches/3.50_2dsll_lguide/VCProj/_UpgradeReport_Files/UpgradeReport.xslt new file mode 100644 index 0000000..8277446 --- /dev/null +++ b/snake_branches/3.50_2dsll_lguide/VCProj/_UpgradeReport_Files/UpgradeReport.xslt @@ -0,0 +1,232 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+ ソリューション: + プロジェクト: + + + + + + + +

+ + + + + + + + + + + + + + + + + + + + + + + + src + + + + + + + + + + + + +
ファイル名状態エラー警告
+ javascript:document.images[''].click()src + + + + 変換済み + + + + 変換済み + +
+ + ファイル + + + 1 ファイル + + + 変換済み:
+ 変換されませんでした。: +
+
+
+ + + + : + + + + + + + + + 変換レポート + <xsl:if test="Properties/Property[@Name='LogNumber']"> + <xsl:value-of select="Properties/Property[@Name='LogNumber']/@Value"/> + </xsl:if> + + + + +

変換レポート -

+ +

+ 変換時間:
+

+ + + + + + + + + + + + + + + + + + + + + + + + +

+ + + + + +
+ 変換の設定 +

+ + +
+
diff --git a/snake_branches/3.50_2dsll_lguide/VCProj/_UpgradeReport_Files/UpgradeReport_Minus.gif b/snake_branches/3.50_2dsll_lguide/VCProj/_UpgradeReport_Files/UpgradeReport_Minus.gif new file mode 100644 index 0000000000000000000000000000000000000000..17751cb2fd5c284dfe984adc4c769982f73a0a66 GIT binary patch literal 69 zcmZ?wbhEHb23ky~TYXIqG7FYlP literal 0 HcmV?d00001 diff --git a/snake_branches/3.50_2dsll_lguide/VCProj/bsr_trunk.ncb b/snake_branches/3.50_2dsll_lguide/VCProj/bsr_trunk.ncb new file mode 100644 index 0000000000000000000000000000000000000000..c3df73580a39448b36d235699ff9a4453c3fcdab GIT binary patch literal 912384 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℞nLY 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
wTg`ZFRO^ELFVrKO7g{37O%!P~hTrty{vBwlY!! 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 z zXk-~vk^7Ihodd@9k755w>tnHr_i+9&WAM(>Q~qOkIOcfxq95!ql>W|$&B%y{d`{h5 z#v0__9d0(9jn_vFW>M!aTnW$3zd}C;M)hM(M)C{eVohutw%cK3aef-^tw)6M^vIJ6 zkKBh${&`P3{CxG>;dexz^St~QV5OT%Gg3Y_m6gqU44SEQ$cMOGYvllIw##^MkK>y8 zeT>(|dxX&#MtWEkNO8G%YY}uYh|j7xe=DLeK~Dqyl;V6E& z4sNbzjp#Y7dC;U_JwKJ7wFq?g&;=oWt>Uad5M>Iw7ud2D=lM`BgIB=QD$e_gmLFOr zlmo>x2oK|}{@62dJsE|+9K4MDUCi_1{mCSJ7W7kyqlWy^eaj+zCVCmDffUasJdCS4 zRq-6cpADWx{t=4j6h0A}FzC@0M`sZK!Z@sT70)C5>ELPPFR3{Dc!+`pof^ur;`xP# zaa)h{NL+tG;ZFunBL4=(iwJ)LS^&$Mt$1#~N@V7v`H^r|PJ}MXm z{-)xUg^z@04{_QQuPS^5^p&umC|+IoaEubLo|fV@g%1mcftOXhw(v)w`Gi-I;&p|G zaczIQFLC|#g+CNLg#3pUze)H|=ui(IT4`_NK&7?*dW;&%)06ZAp;`HHs_-W$4RJV(Vl2oK}<4pO|6@LoYLi_RDvn2ufA>NE4O;^;MfC=%BK!;E1n*J2xA1O3H{{=_ zIGQ~C3*!ebRU8c%{)O>_Ur`)`O8g7s2TxQS-6{MF;|C8@98D(vbqYEK_*8K;V))lF z=m_3G@u9*y1RcQ3D~{$7|Jn!b!Luv=i12nnJMcfcCho&<;ccOLgyl!^5yIO9ZNNWL ze3bCJp{s;`TJh1sTL-PdpHh6B@K&%u;Qdwnap5hY^@MM{;!g^{E4T~1rs5NXw}6i# zw26v8E&R^lPVh{MPZWL!EaA|TqR{yGo9)PR!fy|52S23vB;n0rE5X`ricb-K8*J)` zW1;v9!fy?31)rt(RN>8Fg@>Q6;?spU4Vr@Ar}zxvO<=c2A6xNR!W##T!OJN=NBAwU z>L9MI;;#yCgjuV2uN9vs{N~_h@Y9_W_hG*9hR}~#);`4-3U3fJ0RKes*M;ANnP6C% zO7TU)>j(A0UsU`p;q_pDLd-_R7YnZoKRwHOK=CEQ>jZVc+bOB_zK}QgPPzO6kjd;2H3fl=x|3EnPQ?L~& zzCn0Z*xj&>rQ#n7uL7MG;>|0*NqFU;GWbZvKN3zY7~-re{;_cSSmFLC{)zC4@O?x* zsrYBYD+Cq5t1G@$czIaSEUS>>UkEP;`yobw@dRcPYM8 zco|qC5i>>c-NH-5PZQ-w@jb#z1*O2}E528FN!T-{cs|&85l>q2bHek&0~Wn*#eWr^C&&XnQSsk} zC&5~b_}q&BAv`x`hFVrX#V-iY732bMr??EMteluj3JZzij?Dvdz~celY>Iorvj^G1 zvnd`3&lY3@ztACZ9~iF~J+vSz_;JP42+sna3dD+3Je}~&@V2n5b&7Lc2($=6Ch*r3 zXPjj85D>ctR#(Nd3eSM3Ht3HjokX4D_&6eHNiFD85F1I9!B?w&x8BfK5;*b3P<1` z@Y9MH6Aq;V_(8?56&^#ZAIsXNcuCkpm-_aP}PF3R-AFIG2%nqAoTMUFDsmj zAtP3k;^l=~0XFLi#VZQ`3x10juPI(h_yt5KLcc4y+kl7E2gMgS-ir+2y zk0Z_z>RZLz3P0u_1HVr3cEZ1hzX2kLDBfQ9QN&C_?V)%_;Ya)<;I88L2tN#aJUr0a zCZ0=I;fG+UM?ItXeZs%y@;TJ`dsn;!uR-lz#moo0pZ^wmKWA3R(z1~-H0fF`bzP^!gu+*z?&;R zMEFj`AV58@_(Q_K!Q4Q+FN!}b{A>Sf@G6QA6TSnp3Go~iA0hlJc-KLz*CuiQM+x7I z$Tsj6Qhc=VP5vhE+TfA?YK-uWm~jJr6wV* z2jCy6{ErJ?k9no=OH}*`;p_Z$;Iq|vo)W&+Ukg4#<>$IRmbJ!T13paUe@6KG{`=q+ zRQ`#=-}B!CFRJ*n!dLsN!E>wgOcK5dGhorWDLzH`N`EDIDs`Ucg|C248TLcPUl6_= zk;yPl#2`PqpHqdu>%R+r3>-qnQ`3dN1MM{47sY1?U*<0Z|5)*v!k1#MF7Bt|FAHDd zF9Dyc_#EMHL;sEV_KLqMd@=ms(4PU1u5+&NxBR!jhblf#_?ytAqhGB!*GGaEufGWV z9>o_3f5U$R{7%Ie3V$7bp{U0ce@*yn{%hbh6@Oj$Ld;HvpNrye2w&hY057dL*Tq21 zfO-FDJ;5R5KEEmagV+Z#%u0p1CHlQ@315R4Je?+8EZo&~={ooA)+)9z{TCmJU5zbE_@>>=oXR!{IX!cW345?bGS3I2ib6R@D* zzST|ejlzF&e*%BAT7qvD{-gUNc&i%|{1f5F-Q(Z`iYEA0;m0t$8RJAK4Ws+;h4Am) z@4?5`Nbs+OA91-(!3*m8zY%^I{^e+YZ%E|dCH#{ zqkd4o>pS85-Tgejy3V7*_rjwTdP~KR3*Y1J0dJ>%?~lU2b-x8Kpw53n_%6)ChyGdd zlfrkpT(9D^I{#_m-(c<)^hGNFS>Zceu9NYX%70GySMFEf#})ro_;zh|349sp4WRvbMTg!S7Yvarj<*hPj*QXDaRq{{#{KpodZ17rw>i`Xc=l zj|=}8bIvdjT9VzgGBLh(-au zR^`NXmJt4?`zH8%igR5!)c=?lfbyewDdBIpT*qj%;-!VZ?sDCu8x=1joUwT@%2WJ0 z;S1aa;5%Xb@bPWbLzWdjAMt!(PEq;G3!m%G1z)7{R}lV+%XOiKz<3ayhwFPHaxNmE zT2=?euNOYm<+@o76|W-v1@{H;@`_gz{=Ca|x$-JrL--WLAVNPuajtg<4L@RkU=(mm z;(BTdpWsda|5Wi>!k{jf9VN$AXtqys_{x@O^|{Lh+`;N4ulJPr-N--RE0{k8($Wf1!AD;Uf{T3BOD6 zJA{vLM}SXOyoK=L?r`t{inkQb=uddx6>lw^7IE~e6>lT_A@?Ehyo$FIKGYowZYkbD z_=E0);D>Kc{H{*I2fKs8w{)q6l zZd>FZt@v=^Z7};2dJM%!3J=#~Y+E*Q{zrwkc3UI=b&8J>-pXwS9#edr@Rsn1M?d7c z#CaYQZq{{F{0ZSL+!o0Hq~cEr=e%)@;}m~dc(@K^eZ?mVzumnZ`HLz3tnhGs$h3+- zC;V3TR^)$EJ(o$s8@LU?XDB{dcpdosqZ}$eMR;wuHh53PpBG-;tqy*t;#|j&b8@SJ z*HV0{@NgZ--zz2V+ce>o-O9-Swc^u-U+-QIUPzs1hVTmTsZIEuuw9rbyga;Zp_gco zIRDGS%em#icPl{2j#)2=`nM{29f+6OJG+-~$yu zEZlOjS?v`+D*P`8e%Mw+#g7TU;9P*Lr1%fQ|3n0Dv^$FbB>Xq$H^_5!6VLZ&;lDb+ zLhe)il<@P27>jX`;%9`PbIw7&ruZ+y&mfXH)*?`x$72NNoQ52!IIjae7Q`Ay6e-33 z5FV~8+eP&!`Fr5mj_Ao4FDuU9Z&^P${M{ARd3e9z+wJgvFDaV%y}ZA$AUFrX3#t6J z@O_BK1Aj2Z9pQW7zl!y)>m<&@=Z7~P(c3XfQuQaFH)=e@QOCEa{45{zSlk8vx#BEO z=xIAFk4qJ2`NL|3i1i6Owc;$tmi3jx@;+MeG{Uzdsu1p{;(UJ)(F-29XfG7!dx$GR z#COb2S3HyOa6R54it|0kc-Hw0`7|wuXrt9M+3BE6#c! zH8Y}fV+|n1iwl1rGxSg%6lc4F5gELi(caZc{9d+C80jO%6JpgXUPkyThxPhO#o7MR z2YChfEXCQ5;tn{=!N)3IQTV$K+mpVEvzn(q)IQud1C~(-`Zcx0Q@YkK!!QWE+CgHC+ zY`3Q<-ca}ghwc0b#TyBqkC_=5hbrD!_&j)=qg_zEsqnd2ZvlEs#cvfJt_z)A@#ey3 zJF}7BR{Rd(FFWkloKSkm7Q$yav%t42&VDL-dWZprevaa;g}>;$2tHqN_M15yXFB*4 z#oGy==CHpuOz{rFpLd=I@1b}n;ZraV7k)~LcNRX`nGD`Q@vg!rIqaWSQoNh+XPjri zvnYPA@TVR2m#Q9{wFV(x1mfo?&hao>d_Mu~D5bYKIgo;xSf}W?- z9sF&@CkXHAbOoQS_%p)0I9Rs31uot@6$LlvJS{2u2X@NSAzk7HRKoDSf3DgJ`+ za9#8Uicb^X&S{7I)fInHcw5Y8$9-1(CE=}|*5KI{pC!DN(+WILe75kGPD}9LmHzw{ z;o*Ah-zz>>_#Mt2$iGYR`ND5^ZU_HF@rA;hJI%q@EB?Ch+nn3L-%P~g=Vv4U2Ud^cnKCpD+dshh$*O@P^_uARaE}M=CwW8sU|kO5m9kUnjhx zQxQB+-}`~^3Qh&^^Gg5xq44rfdGPN_C9Y?a@N$Uyi1u3XkA#Vr3yNPO>B;YBcK6a77v|8wDaoIKzI75_qbl9L49S@CVc zb2>S}?@;_p;W-eu660dUw+qkiWCtI9ZQ^>q5}w7$0zOCet9J;`gxRJTN2~LEEj*)> z5&Wa#iSz6fp3X@J{*vOmg{MV?Qp}A}-@8Y6Dkl|qImP!0zs9)+Je}ePgvXsY_z89X z?}Wq62mElc#Pu8&?l~U#`-&eG?m8~`bj6Pe$0A?g4=etIaD-tG{Dr+$@!y1> zwP`o2qxc`f&)8?cb18m7_$m7o_)n^Susqh!CouyM^ClE`g#V1yt}N?i#XaFCY})-E zQrs8*qfI;E9g4?=|6uOZ6te#AZk-dOPr!VlYr z!HX)MN%$fA5V)s!7UAF7w2SVkn7IGhgdebJM_r;1=QU*z|+gs(54J%P`v>?VY-B&4kal=|8eZ*&mw=pJ&tGKD6h7Cc zf67$FTMB>Gra#NWir+2#75f$NHj1|s&e*@OJ1gE^_$aNWoPUt z{3ZJ(@Xr+QBz%TF1AMXK_XvLx5i4OISG=?E>GpK+A&PeqKFyv6-bV3m!k@S4e^gBI zdxcN3CxQQ>^ilT-f6jgme7)k`g+FW4ABwT`qW83i@TU>S0c*J{-c$H^dp!7H#d`@K zhu9C8AE)^J!p9<>86tu!-dp$>n|@~n74IW_6e6IZzod9y;Un#l;KxbOI-*3~Oai-!Ug!i(0fe%r9l<=N*Pw+O1j~3p;?g3t2@v*}1 zv+o1Xp!j&zW#w0Vw(u5q3-EKwp7@IJJMBBcHz+<=cyp``0`CIF=L^5h zz74#u;tPe}YTpXpO!3!+H?y08S5kbD@Fs|Nj`~XRw}dyg8-vFbe_MDXyAk*aWyf49 z{AT-R@NX1)G|d$1485@Va(g@Ii{N z6<)`#172V8^}=h~HNkT$zCrj6Sa}e=K4tgZD7=PU1N<|^Hw&+BR|lV^_{YMl+Eu}a zD*lP^Ds~m{I~D&-cxAgXcxA;u7k<5cJ$O#VzYt#DE)VW1zD;;JyBzpIHBS6ecxk&d z_{WNG7hVdHMA5z|zC(CX#N&Z}Uh!{)7qN?gk5hb?@WOUs@Ii`yE4&aQ`=CBle6R5Q zc7E{d72hvBpPdi9fZ_**=e6^K+ln6&p2yAueoT#{j|k6g=LX-Q`1itdVI4@=H55NC zJg1!#{58dY6rKYsN5Vf!@t=ifwX=fXrTA&#S?ny}H5C6vcxF2@cs9j<6`sk?1b$YH zyZ;cL&Q1ruQSrZor?u09zoEDjL&w-kW2XThsd!9yYCAP}PsIb_nDznQTJdXy`?e3> zQ1R5lV|EO@n&N4Nd$tE&Sn>42ZTv&Krg%o-Rv5BD@yx>iLZmxb%~bz6tMCh46U5r1 zcy{5xTfc*Us(4P}zgfS5zo&R^;lEnHf-hD)kMQ$|IEVg;;`xN1woZe0SG<7mQ`RZ) zMv4~_e$qM#US9Dc!hg1Y2KN;&Cj3XlvcmX9^{cNH{)6=c_*TVB2|p@pY%f>*I^jpG zBgp@P;^l=Owhn_oq3cPL(2_yOwxctypl3g2(-2QRF6b>aK0ec(A1zd`t3 zL@h+WMfLM<6u#Tq4gR&_wT17pc7d-_ysq$_)=uzwiq{wZjr9%qQ;Odt{7bCugY}^l zZylqi zC00*`-b3;B!dF-;z^_rfqwwVt`}q&0x4B0+Bb&jxs(2USjE;?ZN%3yN-@;0*m>;V6 zeZt?A^|ksa-b45zYZ3C_tavZsugRJ!B^2*1e4(`v`BN+2SNH;J0r-iciSbB(;q$He z;9n~~K=^EHHuz@69}xbs^)mQ0#Rm$XVa)(%)LkEvdWk{8U$kDt-`6NUSoi~60M0s9 zB$59?;k~S0;77pInez-0ejj2dV>}Ms)Q>rE9Fm_C;~b=tMmB=b0*=PL6UPowln+B z8Tk?9S+k!dPnfR)WCOE5#>fqjz4L~j&ogqrk^GK4`4ZpJ%IrUBKaH z67%&o@+l+vJs+ukALAS5t8Qc;$T?;|6~=D-tdEgnjhq1)u?2?x3|SImPv&o9~~X)c}A(frhD8l|2M^$Cs(b+cU3m~w<*Rv zUDV$L&Hkf`G0znB_gu5T1d{h~qmes}JZj_xBeT>F^A&-tYxWx&+0MuTMvgXe2IRX) z@0q`M7ccfHxpu<6`jMN0FB~n+Uen^iXJ&80G=?kQ6-fCZ?0%$Un8G4@^i=wNQG_+^K~}z zMI*m5GH4KfUeCw}jeNt%T}Bpe80PC@hqKt>Jmv8~M7C=Z&m$Tlo1i zM(#DTMDvgjFmkPtX>SjC3nOP3dECg#cZ8o0H*%AaS?>&aM^OKH*$}WWxIx-4>R%;BlC9)c|Rl98kzpykasZhO(Xv_^5*-(&j%a%s*#@?`MZ%N zx`+8%8ac|y*Nxn1q~9aVcb$=UK~6>5jr21T<4fj8x&vtp5}(Z%M&{`i{@umM*Ni-6 zWaazA&mS~$g^^b8kk>bItdX0HOw%X)yqS>`jQrHd9DT#jI~qCH$RCW%+AsY41|vHe zImXCEM(!|@5n}nf^7jvA10#DG`LvOXA%8-;b^zi-Aay``2#Lq8F_ME}{$0<=M~(c@ zNN-^Hc`YLc8@a^DAB-$ID9qQ!$iYTF4Y?5MTO_V)k!dh|AdqfEYJoHWX&%x}q+$=E z&yGYn2#MFV+DK=JxlSWT8~L%38HR?RH#hQGBX<~?>!I-T)<(WynWSgOM*8 zdCTI2x%PBTS$kIvX93Y9_az3(MZoA@wYB9a+{H-j7ibAVB|(4zccbrBa1&Co~N0S1C4ya$PbJ>Ze*q>!u*wtY-i*sBj*{p*~lYC+E0eZ zF=9n~m&c5;BO4mo$H?a(qj!3p+W$fAXPlDAQy%-g{+31#F><<*D~#M@!hE+G`H+!w zjr`Qe-;FFhJAlRoY7YJNx!2EO1eEgFTLyoumGI$O4Zp9o@D<~#x*Oq>wgrA{TV-|K zZE}Uj;J5e#d>v1~Kk_7eD$l?V^A}v>@9_8h6F#Cg{7PN;q6Y9^y#_w7{55;rn%>La zS01CD^IPWzw0Co_yv@iLG3?E^m%ACgmk`ZAXM5PaLCzy0T)u!78Rq;*Y-!y4L9E=| zD`hjD#%%1pDA&IeK7+gAXSf%>iTmNt_#J#855sTrKe^_N@CPme-{^Air>+1W>`L(4 zt_ol8>hKT00Y2r8ohI=3?~GXjT`{wu2WBJm!VHGKnDx+K*4!M7c^401uEryn-!T$% zLY~Hal)0GWGavJUUc+3XH=IS7nY0+QnU-J%)Vr89wE{D(R%3P+S5{kxSzsSv=GbP; zHv1Se)IM{zV!qp#m?QTU=GE=QT)ZDJpU}k|%^2o&#xWN(73Pno#hlahn5UZA&4O94 z*)UT!CuY~?#*Ey&n8lkPGk=R)j!II_VG}GFL$VE@7zK!tgBVqak%$?vL^{A#-)4LH{9c*>6-Gr?Hwno@)!PXR8Gi=SV-Hz>L zSp#A&R)JXPz2PnL7JF}d%e;3`&bS`LE^m*w*E`@H^bUJRykp*RkFm_M;=0EB8xa$Z zD_d{{vtx*d_p_`Kd>Rq|N+LRHX+&(Tf~dkHgWCA5{B@~=5-4Z9GefN>tZ!p)2PHa( zccCVtF!v4U9mssMY{sYId$+;O<1xk<%kcJsK@9?+)E+`mcG4(>ha(vN|A zxonOwc~l-h40QRD=u4< zPe30P=BZ*cN*B+O5wW@I;l0Dd`yY94vPcQtgPEuMFkAII=X>{NtkkjJ<7^1N>zUvy zQ3(DdRUFQ1;}y+u2DpsP#b16hHs7BeFcKs``PI)K&})gmps}5=S(s-%qWf%c^Wlgz z;D=**{Gxtozp`J`ukSzazv#c@&+_N^NAWc9;H=)>5bsg%aqmfQg7>udjQ6bfoHxmv z>`n2W$9lBWup;e?-VD?|v!qPDf|W()dh?}Ry)Gr|Eh$?|rF0$b8eU7A;AE|EZ?(f{ zGyGl8+Vfo--?84~x(U4EnE@kGrN>?o%#SFAITgA_spsr>Yh&HgZ#>RFV*V};Bi!*W z%<|XzuLQI&lW({f5v(@iEu3~()w{e~JB9g+28{L3BZmd_rsUoT`#4HXI_$Bw zFN+$HH6Lp^)>N!rw!5W0&Xr^CF%G>1xVKy4bMR?4x7)ejnrHroGu36h1m-B^PPh$P z5bS*`wZ`{SN1S!($IPqy(%J|Ak##oXpfLXc_xXFmy~;ty+TpKR=ZtXax53X(O60Q= z*ke6;5_7drV}AEJ%nAP$^T_|i-1EO2>#FO?pWLP>35PvKqvJDj5QFY(pKCqvuW_=v zD?NjF1(|Kep2APP;u}`vl2%2xDN);TrFP>=Z2-&3dN;R6&puvHBb%{O{~z|=1I&t| z+xzYAy=V3e49qa(Gz@vjFytgr5ECc}A|N87B1jZe6af`c!K@%bf`SSvB7%q@K`^0W z&H*FlfS3j5{{Ge7&}@6R=bY!>=Y02j-X0cJyTYnfYpn`hUA0Pd{*Fb}yo63dNFsw7 z#bvccX-3DiFI{Q&vK!?&TcxktXKF@1|t>sw+!63e7bzYs6g*^PU|Db>~W?RI3TQS}{xeMa3{pu8g! zvKOJyvRM83i@qft|2iyVJ%%-{$Facm*GQKimvf88H3^++Q@&Fi?IV+~g8g7O7sD^k z*w}in&mECij2?=)C% z357pwEbhv8Fnu7(B)+AZMSL4Ofl=_Yxb{jY$0}o8TsWIz^ZtT__Pi+k1#{X(wI0MA zPCJbiI>weQ9)*s?!qqbuxS>}iv~yGO$J(-yB|hJ5uZSIt&5m!4KhBu19J{ayCyTX8 z_d~kwdXewegsiMxh)=V#P0TE}Gpl@-8RaXSv3QGf93L=K`-EBAUS??DF{9kaZ1Oi| zk_T;@Ib?$QV+l@QmFL9YiJTtn%iTx=IR!bCdDjSfp3%&=CNS5!gdXS$=2+J-$GU^l z!wWf~yo^)O_c7Ocka^Z4%&|5wzuL^)YCH3)=a^INWbE)^Rg76*v!+!dPKj{~W zm{X-OpDM;&Dx3bHEOV$z%%7?;cdEm@sUg;13Yjmp#k$S*SjG4S=$=L(of6Oq0-Y|< z$pf8A(1``vI}tA`#k3P!zEQTmkIJ{)uHD)7t#xX5b$u^8CA+&kRXjb4}QQKE+TSsT0RPID( z@UpKfYCcGpg(ijewg<(Ap5%s}9hd!S#UDu52|MZhi&myHB&Pcul==j2qtO{PwaHcN zd^$iI(-|?v4dE?D_9Tnp56w>I#;rMI)1ZP!i>bFjP9ig|2tL`tHC{L zwc@qob>ju`dhrJQHHtTmH;Ffk7si{%+w-SgWx}_~+_NO#O^FuNQJCjgH(LYa+CQl9 zPmE9OpHRN{jio1*GM)1st+09b4w|a;8q&>n8#YHQ2-pyC$Ut7GZR1)qz{o~5wsZTH1kt+?(PQQF>#>%AGp zeq$3?oY1^{Swbfnlwz1In_CKR#ZL6TFp6fe5p}oZl``h}+3p+1yA2Yb(gw?^?@w-?W{~fKV&rKR_xSga!LRR#Z!%oOv zZ5}?&%ueBCdtXk&58wp-Ku+Bc;iUdhPWPvJ``;Vu!8^o9@%dd`YIizU#bgJy68N;z zqSXqmOf)o@)!y&G#)U?Atp{k%Dv9Y`eit@fYs7WOoTyrv&}kX@&a(TVMbg`|<0Ind z$0x?M4_Ptao1Kv+wK+p94((!87!;FbJ@KxQJuIfv9ZJ*7mR%5qE_24mbf#SC3mx6! zF3Vqv$-};)cEKwBGscdBeCIlkB3rekWxR3ejb%kbwvR;9EKY!Z?_3bmT~oq0nwzjD zCu9jhIfpv3@gdA}oeN_F&UNz);MSyJ+^nYaG)mRq)=o?HhvTgY)pqK%U&MC-O(Uv79Y2`v3PSAR&thMS?3;S`G0#A@0-~1tS)>Smu*s&c|}ZCCPm9JoV_|D zR_9cAPI9MN(YOnH{LiQBwn^PYDf_~rZgZ?mTsG@TYE4g{fvx(lS39u;g;{Ocidc$>WBbd~U_*!Oc_0aa+~#j2S2LhHx@Bd!5FuU;VieYyh`~ zoz6{S16kiXgB!>Oaa)@12R)bD+Ro>Ow+qmN(cC1b`_sp<0ycqL_oi@D-{s7TuHZ(% z>D(fCrTM#-`w*{B%;t8*8xl7r>YVM;tu-p0El|DpnA?2htC9GmiyObonHBp4t&^U$ z=O(GHP&6i?Q^%6(d+1IUZ;BO}O>VYzM~b)>OQa{N;g$s0ue}|IC(Yn^V=dzs$OxDD z86NkZ(H8>Y(tY(cS^VF2&5`t?fgJ$+@&5KK-~GNk;x6JhjoG9Z-V9PbL0-|538rl8 z2};nf3|enVPzrp2utq>?Yw5)JZYS)x){N|H}s6%?9bJ?Vuie-DC=U>h-fRL8zu zh7KGtvEC3&?~Rx+;@qL*CX5(2cH%`trwk2*@aybLFB&m?*tns?hZfj&y?j6QKa-|N zIAO%lkz*zg8$I%zp%Iy<4E-;a5t8V?hJWn1i-v{}aU?ic>5znOP%x3QnktW-H0GkA zm;94EVF`i=A~PpP1~Urr@TgLQk-?0?@cf`4gAu_DM_1t=^8aUaF!PZr{3GMhQNc_{ z>h_OJM@I!Sx#a&N!;#=%Vxe)RX{bQ6CA(s@kE7dv1}%s&{MO`fw>{UqEjhfHc@Lb) zFm*JZ;%0QtD5h{H(7(9-#bb{pr!Q&ppS>YDeU4efIem3<`ch_&J@aXI4T^qB=CF8j z;+5%`CIrIWekvoLh37Vf2fHhQaP?=*hK#-U*^j$@ zt?*Dqo-2)=?Rx|1)h|*K@12a6JCEQOpP11aJDl0zNmnZ9&oSY>oqMUsZvi~HCcK{0 zitxRG@G>U6rc;;jw*%qjOn6nNI^nzFr;opa3BTJeOZeJ*kA!P}t=Y*!bYW>Ayow2* zZR_5c8w25aCVZN)Com*XZoUccZBHhB??5u%9ImUdx1kV10~xaUi^o34h6) zUt1IiXE5WL!P-81MgrlQX|T)Ix`h8{1;Uvs@-(nc;QvlX^kIBs6JFV>j9V`d&Z{O* zCG);<^%1^}Z)(CTnptG!9f$d*=^;-A{`f+Cq}=g^CcM0v0oMtH^Af^Sjz9F_NV(g1 zspDZnhaPr3q7U1cPV>0-ArBs*XIpC%?%DzSAQ0ZhguC`J*3pPx0ET()1!(TO9<#;8k?gid>4n>O{rvuKxjle;0<`&YqPYY#$!-22XD?|e@^5DT z@YeH|Rj`x_?sE4B=uVvDh|}0!iYPMBlbQ4c`&Cq2`FF*nXDZ`lYk*zbDMhbXoL@Vc zS4?8HGT*7gckZgJOh3x49e+U&|DdNKD~BDRsylQ&6?>wT+gF@x{c1NcU&o)I$*If_ zth?>1PEEdaT^o}IWfN8&ORBFrue1L6w(~CEtv}?e;3s?)-0M`24T`Bh5*8 z$q(gv*7=prRH^3KcRTCRJNZZO4Qx_bmy=z<{J6c1Rirmr#m?l7Y_#)Z>{pNf-#Y85 zp)ifJ^1!LwXE|p(XCepDJI$Vr^_BDBuhQ(X&s*&JCdbwgps+cyrqC(c`m*wHHY?#x zcepWoop%WpmLIGPY(@;kt6%3>+pKTxcRfCS5PO#?vcg|Q2GwH~Yr46I*`HDtm9Uyw zEv>e^ZLi`D?JwTVY~IT>&o0FNh5JtSob#14G}P6nACp{#ZYhO#Tk&R+*<UWYe$T`nZ|05bVI^Q@|cz--C zc6MxXO#2*^Mt#vnrw26`ZN+(`XoyvZCLT{>#*%}|NVhIQCQ5Urb(X26O|wbkcQtlS ztl`F*-LdWHlW2Q}Ju|DIQ?&QD##pnh`|XkF=PFMJUb8Mh+QK!L6`(KelFmfxuTr|l z9`)M%WA@|rer6O39Ta=itI;0o0lSRzftTh5bgT+IP?@LF5;U?1>mWvy{(PJL;7+%W zr#Pp<3BO-mY_Df6b{F4YKC)$BK_&cReF43yjaF6euohX%tlAzA4qCN$xTz{wH+mfZ z&?)J~{$`!*`3{&7RoJH48ly$keEV)&-jZq z?$zwwxo)THe}Nw3R`fwB7FnlybPS4J7IW*EV>h=)*ngwrnWX4!4Yn?_9_3Fh^H$!~ zHTn_Bh}X@0n^BvWoIar4|IN3ibSIndOu0@YPs&}avuMYgtwxk2o}Nr^Gm&2A`|2(Y zEv*Zwjp|s!ZfalXwch!ByZXcVp0d&ZhfrBytbhJMRO*V@ta-G`3>d zoh6=bY@r9*169IVAvTnfMbTE;Ks;s!Z58C6= zT?#~>XIl?h`#j9Mok|`RJ*^9@1s=Bdo#CE7H;mom^*Re;pV4~@?{~59VkgoE3!B=~ za_dB|U5v4^=DXo)x5eWpdX#K*?08w^q8x5-dWVO@E0QTyJ{|nlGtzu{Eyvql!DGZ1HOJrgI3NsMlCF z3v}X2uHDn)&$*6fX^L-PRdZ(5bW3b+W!io1KAvo@b8hzfu9F$5Uh&%7Lx##+=g-)s z<6Nv8ol8Ag+!MPL+Er4Om@KzR`o2CpUcK8|4FbHp)A|;EtGAO)y(2x-15hM9t*s#* z#iN}e-ZZEw3OQm%lnie1mHZ#TA|G~Y~LGha>L;k)Svj?L&h ziodP&Zg0dspkCVVbuW2@VTN-rPCmYJw7bgq8d(G3`_+sWk0YNdc4za=^fS8w>)(?3 zlV;zWjls%vF1fv)`;@kFmt0Q#URu6tuaRIGecQdBT;6r+fL>+&8PmL!%2Ae9eJ|#l zaD`YszS7h+gWp%^ zeLy9DXWfLnAdvbUXZ7Rr&DFFKjYEt1DtI5QWgUNdD^lv-&O5XNaa;S}{)$!L?bG4c zZm7KzJn|2w->N`*m3FE#$(h35L0R5W_ACkL2^Vn3g2=*FuHQ2g=`es>~%jZ+1)CA6rR*Ds#5Ektl|5nDwOfm0b@ODd#in z${gv9N;g|y(~gw-jMz%A^mXQKERC>A)>Z66`q_Ee+`%MF!}(hLjlGukDh+IG@8lM~ zx8X^UBWuwWNywc=xP8T1Pxs$;Cfw_eb_1=m!S*<7+*_^B?63Kvq<3Laa=SeN{z*4? z((`}oWYYInWe#*Iv!MRWgN8E`x;R$&l$*LsOlu6vml3b*$>KIk?}w^E1#7S4j#{77 zE>!!GwD-@csbZHisy@Pqn(mxKiHhCsq{m+JXnox&QQhVIai&$wg#juj+kOj9%4gaA zy^-QIYc3e1gV&q3`(Uh-mu99@1gn(#$Jkcz$=A%<>b08Ab{Bh^SN18?P4CB|tTJD3 z&ND0Zn&+gk%P7xoXZ~c5t2I8W1IaK*1shJs6|4b1dG)6gaI9R*uB6or9+gl z)>!MAWNzm(+lw@;x0w`u!iKExY5u=k2dtQ#!G@_^yBymssG!`YV}@M}~R(j+B^UZaee8}P&Y)}ff|=)D%2-~D%r0WQ>~ zE}Od+`6%*0p-Dw~5>x|8J}(c|`IUjHWKqvdSXIMvmt2HPi#z#*)S(;c2bUkFn_Gw4 zZlp==wqCK`q@Ex0Dd1!4Q$EUkO+61$(==*Xi8>ZA&1uFYuOmj|j-!Ty_#kw#m}^ak z#2UCgfpc6LDco)|c}IFXJR01abRT-s(9_$%2t{=VuBY}*x^x@ReR#XUt=o(mdd{$m zh7G=S*yKhR4xiNM>|qm!O&B)#q6w46j2hg(Tb~JIFBoh!>ea2?;BNg+ZC2R4Rcm<$ zA2)2mITsI`Frwdxi5E>AJbc)NBPI+RI^vRXLr0H1d+^9H!$(g#XT;%bgO3|KVdRvt zWBwT-R9((FXXKcPgHIfJ;mC_doFnW*`*uGeGHv&h`t&?8JS7C5H(}U?`8`IC9x-w7 zNh60(7&~$7xfkX4A31T-u+jN_FPe1D$g%lt8#kqLN0;&6$~o+!(HEXO{J(~P+Dsfg zVC0x{#$G&e@Z?sFn|2xeKhAiVwOx84y#c*W?%sPq-y_v*eDbmV2KS);BQ730VbtKs zg^imwZrQYTVQZ^V7s>E{Qb#2EKgq3Z|H6Kf)G!m5-Du>gXl6I79sNUVI+Rh?P&9fN z1J^J@F6IBpw4Dp->?h%#&F_i81QUA^?j-t?QKak-jz0Vz%cOiT7>EDAjuE8vh}+!t zzkjaVx$A%Kx}CrN=DYs-+5cB-bseFNkI6?KekX+-i3{`n13_4#$S}(L&pO?I*6IHL zvrhMa)7qSxZ+^_3ljY-Q8fewcI%sAsIU4?piipLN%jBm5lR5We5kY3!`k1wiSJOB2 z(>k7nn&Ak#0yiE^I}t}SLeu}@)#RcI)4S$CIAs|3WDdABjEPMSfvGe{Mk z$26&yRlr(7V}7w-MxfTo>Hp0@a6!Ru{v1o$^imt+(_ox()0jo2Gsj9mc?N|vW_p{+ z^s^W`e0HO#pXCv%6hV#$mp1qxN;7zae!iq_D2+pghSsg%PwrbIZZj`HY0q`5ZFOn$Hr`eV7D% z&{~b5!Y7gM8`fLQG&RrEM#pc#$O{Z_&ovPxZ!F+N#&&ubNe%)i51ZPUJ%O%Fm0eFu z^kgAx04wmbbZhlF_waQ42$SM)o}@6R6>M@qRz8H^!(nz;B-e|y=Kw#I{41!ygur1< z>@z`80TgOdioBr-yfJqH7L{cHx5L$-OKa^P!u^Fnhpy577HsvSrJ z1paG|*Q5wB=vwlBEzmUr3JuCipw#=((dg!aPK*#pYm(5ZDa5E^aT2K1rc|^U&=M$w zZ*@Rji?-_+c^!><8>m$?9HX-nN*~qu2{pW{&Hu$fU&kao8bwJMcRq}mLfT(|Z{GVy z!xs;7DW?h06lexC0%1#_z*N3C6pE)6p;AI{i%`v0u_&~LcON}3qtNTAqfNv-xbfiP zCwnN|aJW=TIp_Y9b=t=y5GVVm=&Dscu6*Ju~)6#b2@9$kJTfR zSta?fvlaE$%{BGQb4%@2b&gZGSB%nR(}@h67@40W;D$x%xIO-CZj_}7pa`p2bTQ|Gi0o@8B*%k`J-3?Lqq-*WZE5`-AhFr>G z#Y}3YXT%nvb59t2jl1`u_=yUqh+I&rlX7TerD^0@w2(5;>_2MyovagiySbFLfJa!G zNf>=m{2b6KrO46n;dc*=yh5wm#rP8wazR}{;-(~S1{5NVTChdwh(7#02g;tXNgPm@ zy7j`p{Vvr{s?u74v?}efC6Ei+MnEA@0P3cu*C}}zwa92h51_}{#^-!$T7dsu;H5tf z_c~>vM0~cP)G^%R2anox255h=ezQv2Il^Xru#II2+*1MF_Ry-zAwwku(vavr5=nxJHUF3OKdAY?Z2gZK z{ZH5bwm#stZ}jp1(DlE=6CG+P5+!UYU!GZj)Gzm0_>9{;)L+xPhh>xYG(=-s0tK|8 zJUYhU^F1ieAV6y@Yk`3N`XviRBb2NVXowEyp~bb}_w6U=m8Ol)q z(hy(U^dltVQ4!5(J9<6^Z5H&X$JUF?oUh#J5)u$vB`r?0h;50l4t-!PP&EV;Pw?Sq z%5(0UTP;HFC*!Z*97a`#r0E1Zlv4t_icw~9e02?F8id?OZ0y7u?}==2dfqOkW^Szk zt@tGnjsTm5mJm~+I);4xa-UYuv!4#H*7hrd_xg&5*<5g#nhbc836ETQ>cOl00H4H< zYRvz7FqiLZoyMB~XhyrWbogai*Y02sw=ZI5v(etlbnQiZH}jgeI0pL%-#`;imsmGd z#u^M68K_4Bzxv5%Y93yM7a2;TS{4{JJ({2KU2dG>CHX+b>yuTYDQ|G%2|SI-riP(z zemv0N>%(Gb;APX7gXCuj+4QlY3!uAEb{8BTV;ho9+}G%p524kQ^hpFBw2CozDG*Us z&I_(CiGO2&>$V(L)kdIF*_v21hKlMiM-vMvtJJnRKK~Kgu~gw=CK-BKfmS?~E{dGR zpZ;omhaabSJvYDT>XFhG0x#`3{DRN~G%8ipY0Be2DzywF zsNU61lHos|9iXX?TL*X)_`I*nFM8LepmDX`MWd>frh+;|P$p18a+&8RP^tZ@nC`%R zyAQv7HUpIi^(hLXBKWAM+Dop`#dh5?vm@?mJp3sHO)-L#+3vSQ37|PjRvMnQ2s9+I zc?#dSuCcDQmU0{?i&?75Jb|J_u~?*jbP&>@uL#To+V_}dI#S$t-C0*i?#G=KcGN4a@Ivv!>PvLI2 z!U`8-0?oKJXcSc5l&=Iwo`Ga5$4{*eYy=J+>F?W+O`LB_RXV`h_OP-dq}nuvIQ>_e z;Rp$MgkE3Zwa**WnoHW2n>P3sUiN`QAfud3HNH#xVn2W1r}%(h^^;6?V* zzU$mf3NflU7OI*%t({kPxaDWs8!1OLZL*{o4k)kx5QSP43aZWEs z`)$OL2Uu8XYPUdkmvcVhdTg@oMg|`lJ!#||gKe>UoHb4dkDBuK0Z%&jIR}uAWZ#Va zEtU9aUebA*epYf`?;J~6!p^b*JH8w6*P6esh7!@z-Ra5SafXs!P8!s^TBN!hV|BKU z_3Av$N~1Qy`J}ahlEs}FP_)6T?;Ln|v8Sh*EXmZtj>ky2t#s1*l^*A-*%dfV{WZUY z>rH3mVf^*Tt&VE6eFgQu*`CX7mUr802~o3aj-1C&{njxy3G-sUD9T~B2>5Zeq6!QyJ{s%bIJlU4{2;^v@NtW1hq7q zHL9ACtc9iJ--M+es)JbyVMT_eoKjW-4CO7Y>}HtdsciEiP}5A78ktE+6U*7A;Z!rR zhL#p>GtClX2}^GpHOwZL%4Sq*Wj=4%)=addilqr(14}(~J8K)cikoc})hrD>tu4JP z<(nn)G)pVD#VqX$$unOrB*_lTsO8<%0{9jv&+j*JZQLK0vX>Np7H&nLG4S^i&fNlU z16}#u8#o`3-NjxG(<$7~fnmVx6f}90x}L~iCknLF{|U+*3~0YqA#UG$Ij^yua~-(XlIJp@ z^8)w>oB*5wj0C0tf7}C&xQl@MfM&p2;7MQ?upeDK?g^~t(Bjnho&o5-pjD~tI7eU{EbRl(I+DeWE0oy2)F_@Wa8BY_^&|2ZZR zlWu}`;4&Z&S{p%EYhctI@~($oU?s2)aIPT_(Dw#bv~GkK!1?r2YUA2jITd#YpdLW| zZ$skLzwX1Ij(aNZZfF{bt5GbM9^nqc*TBb8cVLeJzj{55LDvy~4}Oh+dLT)2j`6nn z)q?3LPo_I%Cww3x=4r+sV;A8iaS1Ogq939oPF{C5Sy5f$kh@P{r0!ZS>GLs~K)3IgGHN#BS+J`DxJ z={5*&%pca=&@Z3<;wHR_Sy}7?Qqe(u`zbt!9;*iKy*GMU_*)sQ!ut&2o}O=``4MiL z5fmeM=y)8^WLGQH2_OT|3|^loivxQ1(yMSbkOR0MW*s=@z-0#s=u@V?Md|~hUYQ-F zs4ssG(${A?2d#Mx8a@Gj1`Yxxs7Ny86ZRzyt}bpppaCEmHUWHly2-zTX{p*#X=QtN z6=6DCXPbKKRGWN_jf~_gZi)NyWg2~yuZq!d`KlS-xqXIhC!INkB zuXx@Uy>d!elA*#fOikn~W6pWVSJ!Bwe5H-<$(L)Xwa8c1=$%T5lTx#Dg*LK2^n49W zyH!|q>t!#jo~8M&!djTtqTD(3QEDLyEo*J_dP`F3z~JZQEy9^jfMA$G@FdUc#tS9bS;630w zpg3U%aqHq%1iAq&0nNL22p6EUg$wAsR{=U3x(oPpJ2V4t0>6;HkEKhJcEDHF8$w*+1Ot%$S#EkW*U|3bs(|3JluL8sap!Aa2Er?w@Y?2^$OnP&Dki)Z?~lwy1K~6&9(R7U zIS{UK6>a5@ejpHDO~Ky$Xh|SE--NsKBmdmFzdtsW+nfI21$yAF#pvhg8|MR2<6&}~ zersGE1fH{i*T}z=_F0`~QHsW6L(@p>6j&nPN=qli6Zm>tLs&zf!&laa`OK_dmd=`w z8dtG?wfyi%ny}T+D5edc#ztVLM}3G|+)Qh(dEbzqIhw5zm!X+cM6!@NDcdb?lj(m{ z@=Qx7s$FWNBl0!0T0#vK=a9sDjt*?%;DC-te9UoyA1s}rwyn>>dk*8nYVs@uE(Wdx z&IP19(yP+|;gn8FZ=@sA2g&{tgj)kllAmNNc}ezVnAA5QyasM;0euuOj&dGm9J-Y8 zZxQ3j&A=n1(fLT7zI+OJ9k`nCDJ!t?0M{mwNB3h)BhM84(}3;#p3Uz~xHECnaCKf% zt4}&bAG?b_coAd4{k-!5Z2+w`O#sdZ8UZzc{y;m@)&!~mS~bW9>I0dA47Rl(9G$2c z3dmN3?0Dz|xz73MT+>#RSm$fc2RZ{fxvo>jItiuq@eA5%qj6R%)dnWKX{ubb=LB7?1?r*7wyB-*DAGQI33xTS@ zCqP}GDbN<^3cL+m2`mHV01p6{0P}#yfbGDGz&F6JfQ6nF2h#D!kjJ^((L2ho2|qSb z=I96MTh`DvR?`OX&jcQM06yY=gS!McAE?Uj=Wr(jbAWe%3J;@ez*`%c&kxgTzyZEn1|DDpa6K>?7vQ*`gT_B4*Eyn#+i)$wCmS^{Wp;JM*14uS8-oi$9QuM zedhxDH~NOlfFZR1vh?ro(I5A-G`C^hfpFRPlRZIM_tUC@)*`fGptUuvyXkFT>tMT{ zW}fjBa{|iv3;2?9uA+ZmMZcCtfAc8*?LdFZs7dQkCK!+?D$V$!kG1oqotQ_dn zv~0%60!U9lmLbjpWRpP_PNoC0=+Fiz0Ce*AU_P_}Zvj()>w$&95aK!lRe{y~o{GB= z*oHq1+_DBFI~yMYUjwfLvQMD1_e=51mX2&2$X?5tfNYU;0BQqI13K$o2^!9Ol(7XF zYVFX1r{4p*XKozOc#^xer}e-(;7uUcR?G`(XSws?ADC_~18xUow?Zf4XW^IK1)Y+9 zt2px%peN~NU7-lS>=npbi7eRYeE4o)6L2}{ZQ{SnhGyK+{FWUCol$=RSN4SN!@V77 z39hsG{RMuTyp@68fNV(ZBJ6bX9}7H3nqI&>{8s|ofro(6fGowxij=I%$TG-a%IyNw z1AYciHtwZ>?0lRD&$r{3RirzC*8F}8x3^?Lc{52f4k!oSk0|d`@?VXP?JkR+mZSd% zs+6Zq;BEru11|tgfi4wjQ@Fk2}}p(={ND806*X_Rf(}|BkOI* zTsB<3*#_>djHCR10e@HAs(@@P%hJp;K(?g*xQO{m74#F(`_!Gd1Aw96IvKY=?pWND zaQo7(*4VOGL>zbqoPuukfiFNO;0$0aa5*p=(CrWlaJK@h@t+L5h5uvVIQ%1kefa0% zz6tyQ=;jpJ=>HTrM4T-8UI~;2Y5-e+OMxyxbKpC`7iowbg=^UU-29MPZ!W8fd8xy!jo0# zJ-YOt^+DQJssH`;!C|EtTXX3{fmOgl;9X!2a077{1K;3(0=PYgc>+T?qA|CmJk zT|_?(oN@-Q z@oyXij{x1~R|2?YJa}yUi5(f1n@!tAQ!_H{gB_tib;gP-ZIf0sg?BPreg?iNIpu8DKnd3xGeN z>lxgg)0kfYKjN=^1#2eIJ|5_fzut8Edte;?`M|aK9|NAo{{v8oeBFStz@5N?v*~Zo zf#0|<;jSLeSOs*)zw2D)2e`w}11J6*{5RrG!YxnOi=?ZM|3Sj;!tF`eG5CKYd>rnX zgdM=ujbVkvHN?M}xUX<^Q=D$xn1=f}uI%;S48-tfj%F;zeFFEIQM@A({xohM!pYch3PesoTsE@D*2f_;qv3 ze!@?}J(I8(ao6*^IR26Nuf+WWHwNf74c!~li?By=C*ppAyC2@Q$G;4JlOdEhl=<2q z=9a)z^t|K*bcgU$ft5g)v#0}UbjM8&{vNmsfX4V=CtP>h9KzKdel-Y_9dq64xgS^e zdz=WI2k7>Udw@M>B2SdNB`!enX+_8l1 zBYrOKg@lzO?0DR7`Mrhk82$(G>vkyJg0dA?_m!SWm~Lp9jysUBL%8j6-@(;gW4br2 zAO5$9md@CCT$5>|n*zPOdh{|tEc z3yCBWk?(Ie7lkWM%I^(E{h{67J$@E=E>JYY>b%BHO4-I+V%{tgVq-=in*I6yJV z*G&>n11$-!Lf9q12f%5>bp}QQx*@F+@soie#BBv?5`HD&9|OAir3qm-0Q&&lmQl6` zb9~@$V9&9%Tioq{?iTri^gRiC0N8+EH%(j$yhA?S=XL?sFvV{!hB_e%h7(6zECVJV5uPY$ROw%8dthQf3M2 z@F)J7xVrU5w>s%w%il?N8sX~!-F31OunB*G@Y;mU1U>^cb!My}Y(6jx|2|+C{+6Vl zM|$09a~ffzaGwTh<6j58uab8e{t~2}3XI49F3<~q3uq}r{u!kI5a>vFPuxdJiZ*p0Fmn^~f(KL3@)J5Pk5a0<-jt+k0sC3#N`vd4(LbtX@u_sWSqMt zpnH=GTfj>|w?gZ7KHc#618JuamP?rK5_=cWt*J56=McUWXhWRtRMf3MZ;)O$()|Kl z%x~SMf(0RK^f>ec{+ekD$~Z+%1D znZ#`-ycXf}fz`wvPux!8suQPsk3Irw5q=$Eqj7Z~fQtBezoqTp8|bt(aEhqGs4ya7XderMt6A~LwphWrV{@ndOMxCew5h* zI0r~4&H2D$(hVlfUf^`n=$4f`fd{~|l6c(9+Ew z_@4pJ#jl(3bi3C_fbQ|rCd?awI{1G9=MwTyhK43UKl11{(i_Pa!@V2mihm|?y2qym z`PKm^lJ`@>N8^vWg9p;qF?ZQRtNe4%2>&Japgm#F z0tv!;1AhX#2RD;GSa*MZO`5vIp9ky*+7dSdc!}@?zk33&1G+zH2yj1nHW2qHVY-R& zHry4s3((hlfm?~ch4_02-$3|fxbtwoyoj-#I_Zw4x?8%$|yy=>b-DfP>@l5=f z>X+a2^^ep4EMN5Lr7PnX@0q^k@0aEe_~^6shqm|6_~wQ32kLw>X3O^vZavWH$<2S{ z9vD*p@}D<6@a4%1`yMJP`n$=?MMcLHeOYv{=$Rs(tq12#-E+ksTMrf$P5b%jq8~pd zV%ql)U%I5-)X9IXnqTy6+oA?1A6oMF_Z=4$EoyS;^KYKq^xm|aem*d5(~dujmLGHJ zfl<|Z4H?#M=hXeD*Z$+xvG?Ep`&B>pK4;&@)nBSqq0ff+Q(vBTQm31)eyIB8MfDy^ z9BQ)g%} z%MJEW-FABU%iAvAJMWVrz5aap)xkf_>(stU zu|pMK`Qo-uyM5Ak+wV^gnOF4sw?&DUFIhL_yH4W|wtcne<)uA)?i%0nvWoj3xwfd& zq}iWW{;H_xr$4f?my9WT=FpN_MZJFhduab56NZld?S^Sfrp=%B^YefIacJvbWB+<> z&+k?L8uZbRiw{+8`t`9t4m-5#A>4( z9IALjQR_c`8nyZEJV`hCjq|?Md&O5ZH$^N0Q96Dk0(&ZO9-nsZcca_nt!ck>bj|d{qziw_ zy{*lim+kzi+N!qmGw-bVWqeN68lTSXes1=_-+sy;-K)-db9y$e_xHP3w$1o{d7C>2 z6&$F0b?Yjpm3;2yd3Rp%&4u?4oq5ONyT^~M@_13=qN!6RptCCh_sO6$kuQhQ-?FXz zocw%tbz<_@JkuGvt+?wC{GUS#J&x6RI$3FZ{MWtI^n5VTDd&SJo{7(WNX0Azpi#Nc zKQR*C*^B(&a+1oYCSEQ7I|Oxx5!30*&EJ0`qYV@P7atCX{x=B7h%cp@hou=xcjx5L zenGe{yUoFc~b1CNKlcQtu?o-IF z@k;EoZWAc8jn$;T+r)f)USiI1(q?9O&Cd(;)0E`58c<&rdW2S9l$T zMeASd^5ugc=Y%*s=kj?o#ebq z(}mh3I9&fr3R&rZxz=ct^Qz9}JpIx8R9O5Dk1p-wQoJ6~SPoDmnAfH}8KAYOe zIMTbF!|^}v$y?t_)K~bprL~e`7X3^cYF8XNCO92YiE|Mx3A-r;JtaJP^ldtHM_}DLrHa~wFsagWJMCi5N)5CB-<<(o?1H$6VdOEa%dZ*G|S(*=vD}de_ zDP&O$SuBj8_iV#+{_`Hc&#jKuRAx-8MtvWRplN9Y?sLHztgFw*I5@>g?O_PU`*M&G zG4(BaKM#xVYIylfq6_>`yfohZ-!ZPn|VYs)OI(3d+LJj;jtjefwR_)y0)u#W=q6O!f5m9}tz5|8f zD`WI&RGRjagvHC!q|4YJuebWr1 z>jba=*P2RLd>6x~c?qrehQ+Vw%0tX+EJnJHdFLh8BkRt*k*Q_>&EPzKm#dEDspGIOg%^mo^g7 zNUgQEV7WeB+YIlroO?+VtlyEjo@yxVDzKVxnpS&{f_QxTn|t(Yf3f2AxMk>n>8x~T z?Ak3U=-BGfp>_5kexJ^Do(x}4A){lE(c~1o%Yk?Lt{R3n*T`k1v3^k8qgk|T9xu9G z>TNKHk5%D=YaX{HCoz7U5sveCPhYhL8dl~OQ&-m4Qt(n{k`j!?T008Pr}R!Inp~>X z-V3c#EC7Y||C-n6dq-ILk9xekIR(FRsqIH8Xn)e9{Uz`VxBnc`w>UgvO)o{=WYkr4 z(|7AI+Ddut2+}+Yb;Drf;I}@f1AO>F_E8+5 zc_)m#>zi+UVfi01{C+y2{gJ_Vzt3uC_|?+vdkn_AWv~uz;@$5UVewCRJV~cfrs9eA z;DqHp&eJ9B0SSxOXrXs~-My^$S9kO<>@fck%!7R=`X$?FO;vu^0W|YNLFpY-1HK>t zEY#Ci@U;tQWxbI?PGymk_Lv6g@p&byaB8>u78H#4d9~5-BFi}|LiakP(19-KfX?Fj zZB{r{t^>8jDYF!Gw*vHyIIQe7Uc1sB)?mC(yG+lC_VE$4>04AVuV1gnO}*Z@P7h+zFc)EkphS6{e6h+6rN>dm*sSz4As$p{QlNm!E4AphSBlblO4t*T?LS^R@vI~ z5Ej4MlYhpY;eBIybVp|h!}8XkovWqyh@h<|e9^bpu>6mCeb@YmHX-{1!MuKZvduZ* z0&7wVz3hfwo}5INKR*ypwOZs{cr`muh!nV6*iiV z$ST9ue(bQa)4X~;m7=ZmL{{2E6PEW;uU^{w78bwC(?jj~4vUX_WnYnkr)lu?Uh0h+ zoA#-?<@4v@Ca85bR_L^1l+G_1yw!@4-gU~FFGhN=txYdb02W;UbL87fb2Im9!?&V# z*60*GuL~ZX#Zen~dpWnQt8Dkq9$5~}#oA6gO1QAG?5>q|Gw6kd!BePib{|ir%(G zQA0woFi5}Oj?3G$mpzO>-MzN(Rtni1hir5%DlBhZuZ`_*!X~pXa>Y(g8RkJGE+T$3Of2F4G>KOU9vUY(# zte=!TWM?9n*OiIt@6xTk=wb1)-=%(5=iwEvCn!(b$a5SQtfVemd)mTq7x#4O^@zOM zFB_Kkeos$IT@_xgzNZ~b!OP>}<=d3$*GF~o=fpCZUWxuewmHJeE#~n{=MKZ-Ya3ax zM=YsMe!md|_v{qBwhga4avQR%CvHm;b?&2?iOoDBjlM$r9K*_g#PGDEIp?dkE?KE; z;gTMx=gFiFrO>rp{DszU>Dp5qhU-4V<19zEAj9Hyt%-DA_7N1XC#V~&2J`pCn$oAc zGE!XdIRQE7>}DA5S{@(of>&WWE%`2wh?8B%AYQ+%G^TGTL(i*oh{1T5ZoP}Sb<+Or zu=smDz0-Nqu=tuD-32M?d?Iz$-q5hTYmDr6CVIoqusUnaQ)h+3^7i(|hm8?D*-f3p z@JfcKQ>NZS{dR!YJhH{73*Q{ZDP3`+eS2Z$clC10Hk#kZ`MO6I!gA?LJMe!8V}CQ4 z#!aWyo~n%5u8l{X_5xR-nUy4q{!emnNvVpcwX>^D!LnXgxPkEJ-qs8yuQ3LkVhV%z5Ze4rWt*+t#T2# z&!^6*bWvw(!|--9?e-C?aYTJ8N0iwe9SAG44LqtAk*`HWc{(>0M(a{fwlyR0E=nQO zKFIXC6uf=N8w&~|@a|lFG)=zT5~dwBv}A)KjAmV@Dt&1bfxCYM4^K}Kr#4U+fm1fH zg7odl)Kz%>M{g8*+?^BUtRWFJ={#tVCSN|kdGD68zZQ)5 z>l^cEzAl2U$w@L$UY{KTbtI&W+$nmn0ecv=uip?r5DKkym#Q99=JWPq8j;)}L(J1>=2w%AR&U^LW`& z2*&$mck$Yb&I*Uc|77Hq!>4W3|LzfP_V^H#N z!FXRD3v74oWhT0yc>nR&1xg^VQUuEGU|9ZiZ$6~6kYVvFJ-*jPU&8u?d~n+X-8j({ zeEOo_vbh+<>&wLQcrN>x!FiVY3}HFOaK8<0YhU_`2)^AC(FSC{DTrG<5pM1FO_()Z z_pEr3KA*4iJ-+H5jbOY_f12T26>EM(`CljLg7WIo?i<-53F7t3?QGgthTR^%Nf(pf zwPWOs(LNpCUmf&uZ3J(=_jJk>%74C2xV!a`TjOvV?l&^ea+XHa?WYuS>v&jhzo&1G zplwEqwp!81rj@Y^5XPT7ja;&v8Uw?1t{*ygz^k{fk3MfZc-+)E*)ZH0o~}P1LHB3g zIOF5?d8;eMi!+sF}l7r1AMN$ltIX}ZrVQ??AkXqsp0+bXd=LKd=7cC?{#ElD(X;vO9Tw{Ra_w%Ts6N^&kKHn9jZA(Z+O^I}GuLpCz{-z#P4C;_iUz~Df6W5osn@{Vu`i`XAsSEkzJ;CFdpU*G9 zz0rMEawB-wlDs~CP?`Qh{bf6oS1SsfAxV$`(ZlMNFg)L$D2gcioo?av&Zf-L z)H{qPqDMBf_4VBEC*_J)b&*s(zL_H2YyJJ%D zqYfM>p#HLgUpv4L**^&4^Yw9s*G>*Z@&nmK(u>W5koGU$+T0FQ16Q`f!^+QxTFF=T zZ8Q%0eW~Ojo!^YSiZiqE=Qpy=9i|7hsdruKtuMN@0`)#ELQbC~$w?Zec2L&HDHl1l zw5t9~y>-Wx==R&8_M8bv8&6J>Mg#Etj^2mW|8}oGxH3h18$f%j0S)>#>Fd7M|D^l1 zptKHk*15}?UY*@N+t@2Y9)24aZQ`r=X`9=lB$N79DR?fL{O9O4fX$L5-ubf8yry0f zUwqnhCPM8`wl2czyWG>a5fQk{{R>^|s9RV+p}pA4Q?&bzUc1+QWI=i9ySL=k+Hkil zk}3c?T9u(eW%zRSd1Qk}ceI7+U`^zq+rRW3zeYd@Wm7cB3-M89x>vTgGB)Xh@qXK^ z2Bre*m-Ld|!|R(34&Afn%ULw~I^4>uk80ByOaAHsKFLOESY2A0y11uKWCtpY*4w;xv^+&SI-PcO?7#3qc3;DA zmp1(Y-}|9Y@&4oU(Vu7QZoe?Ss7`%rQr|k%H$PC{*CY5kD;qTzJA>Ch?1rz-5Y;x6B@~LMv>Q~$7e^b6rwE=yd@AEs;Wz#ndPp&859Vv8YAi6V*I!ibG$GwkU zV}*J=#LgvllY+30F=t+Nzb@21Pv zau^Mr4^znU3}h)AG{Lg`{Pc>+-iF~Sf^6}>=Im$(?FZ~D}`}XmB2od&bfD#ZNuiK;4<)aV3dco1z|~ybATuT71PoJ-$zB zZ@wNhHoR+UJ&k?`>*>=`Kv}US;XGYzbTrGkJB5y^rs7khh@)1|x!+3CLJFg>e?d@3WKYRIQTKtASP zNN94~ll#APMYp=9dHr#Xi1K7VF08I+8$M+@J0kg=7mSvtL#yR(Q%j2Ro>@P z^k2W4?@uKY8zN}Y{Z0Pd!)?p%m&zPy$cBaMFWI!i)ZNhr+r=+qsg!lUPi-suFSYcoc7$%OH~JiM=n4p#+_ z_L}>BrED37(KXDY`Y#Q$ml3` zF)7oRn{XtLqq~!MrF!X6dwM-0u62{}au=DlGb$#VltH?Dz0NXv*UH>s6O8xuw!WuN zx`QK(S6Uq}53ef2t15em>S3%hnLn_5R+0;wor|yncZR;QAXD#ceNPg8ab|=H= zPME$e%a%>xu=t-ndFZaCAf0aCpf*^G@4wQaTE^CM7>+rfj_PjWFy6SQOq#+K+2T5) zM}=M=Bf0AFb-?|8;@Te#EAK2*UiFyn8VZZA=gCTUCi-=9@w>^gYka;A3fbjK#$`6$Cr~o=aoI>u>1?X@k+Mu{rr9# zkbW0W0(_E<^DsJR8-2=h?u?)# z=U;fBJ4M29A7f;Io$Cl)I4P+e`0K`QJ7{X%6+xHoFbU&9DR@vC9+Za%d`D}Daa zCfxOwx`*4ua{E&BA&lqQ@Lcz|h1IjRk>xwaHgH({P{ZS{PNje0qwduX%iq!CW7@cI z+B7cc9)hsE>820F=4b>Tbq`D!A9LVbE_^HpAF~5|yapag2mQxCSFdj}*_5Y~V!97D ztpBNVnAcg>H`F(X$6rHBSWOs9s`G!ob!~(^WN$yL&et1$H;UK(7k)2Ao?)`q``HgE zWYNKs#f=ek={|U!ukrf|xxA{to3e1HDf1HPq{f676Xz%Czn@3nRGKjEGyzwTM!&CA z{!$V8Fv`R0_Zfb_SKIKvk#&DW-DPh+jIRs4K5cG9-OasSA$2cFjdP&6q^CzsNmC($ z{=eaWu-<+>q%UnEcv2$?r_V3VGi7%^tX{RezIaj!p4IYrc2`8bb!S8v?(2*$a$f>8 zi*}zLxtgbzfG^qbMe>yW@h}``8XQ?py`;MNJW>1a62X%v*0^{{W*%S1w0@!0k{$mN ze?<~sRIbJ_S-&L8T2KCij(A>OIMS zbh=khp6P*P8KW6}R|9kBK#;GZ&!xX4{4Z&}m_)zNSB=55lIrf~t>Ni}?)(el_IcCZ z^b;Me_abngLjBe6Dvx9$Zi=79sd;hgkYV&f-%RvXx23f%f|tuu=+1o8W^H4KJ)BPW zU9n>XpLNGcSl(-mULJ5hN~+@#`8Tkhh@e?_)CBSRyp7XV)n4a$yoV*`ak-;+F3tY( ztglj*TWHlvl8cYKn2}3WYhenxRyQ(eWIYu@_b}uZq}!KyG3e4hq3WjQ8u6X6l_`>%N$< z_&ZHMQ91EPM7=+csCRY*&0j_2yEX;C5{6$fbN_jeUcbJ1UVXodzo2rD!)*jUE+Pi>OR(jM{&q>k|Uyf-;N8CHc!sm%sWT|i+x9^}dJn27r7-ng*5 zS9^JXO~L2NhR?OE%@K4}i>Qz8j1A+Z>;%fjg{)kNm%2YNjK0S`{W&h8ZmlDDeK1A6 zDtYxfDFUzVfeoW+qoJv{t^1~f@zPthnTiH?GpiAN3C8_!!X=e zdAc|>fd$uW*Dy?Gdh)JpB6#)$4Pj78Hpy{B^HMF3{M6lBKSNqA}$Xm zgz-V+_xVgV*;=jNs2X5%ts^o?&>e^klNnlc%pARNg#kaG+6A-Tl6$tf_mU zby|u#edX!k9_kd7jbDb^#uM;Odno;|60A(9UFj5tT88eq(LQ3`rXySHvIy3m7~Sz0 zR-Ze(K4eS;FQ!KD@XH8VTPN{BG>g_Uh7V2iXGP#0o`OeTdOUJ4=B|FgfBdy&*Ctv6 z_GPy*_t=KjdA+9_QzGh|4t}k<_;~$tT&R@MxoFIi64BwqMB zQQGjLs`VmrRen7#pL_|s`xtMD;MG+T_0WBUVRQ}j^mt+lKJWGTtUH0j@~`uFxG;jQ zr4eyAM$oK#>%+=yYx)K5985v;7aq-t@u}O-iU^ukM#P=eBDbM z#)I1okIsxu^knPjNnStHozP+Vry1GqOw@!YT|FCtw|M37{xaRnt961+GqgPF(-dfCy&8e*t%x|? zBOFHKtwxq(<0mE6&)3WHe1&*F0`GIkL3s5@R_>qHF5GqRzDam}c}n*_j=$=v{r&hF=WL}7d63mKa%k!^Dx(cjAN&Gk> z--hPS`efYdW2YMVotyq$1l{kX;MX3*uX_^C+9-aNG52|gm3^}(W8K#s7XOIHm;Dj6 zbxq=#-yGg-y4HAfWhLQ0!tXlPU(lSHczvjP3*JE! ziA1r4?hF^t-?KIk*VkNbUQTpQ=r(Bi``CkHx;ztrNwWHKO3Jp;{PG;J>aV< z*0u3jC414k^b&f9BoKN_g+LlRg(9#Mk^q5(KoXjQ3MvYUy;m&Qdv73!9{Umd5es&% zU_}wT-}B7O+Ix0L&bjyg|KIP+o7rpDGrhg@&O5W#Qm)zFMvvb!r|X;IG;5=^**eSO zmzx;l({=(rT|wLTA|XTBs+@$y$`SHTggxz)nzY<02X z?E7ZucJd zUiW_Y0rx?dUqxU}Ztz|$Re4YM)_G4)Qub@@E1jnoC?7`xXG2(S1;1Z_z62cv{TJwY z>v`)1(3{Si&R}=2%dey}&OR2;bntvcjN8mjbSJu#K$9h1n5t56oYfA$K2QG@)=8Pl zcD0kD^L2qYWD&Ij_@2Et&kK2Hdx<)47uri5J|D)`_|snLbf2!mp6qnjv0U!(+;=~? zKjb{*JPdjS^eE^t(Bq(H$X9bv3s6f?D^P3Dco1vu8d-POyZ>}wbN9KgyKlH}x(EBJ zbjsyd5t;98-Z}jhcAtE!EBnv`-b3Ca9>1T?yx%K!3Co`4@S8cz?_PV8!*}h{ez$k8 zmp)b5`#EPh=`&PZu%RC?^m~C10tW)FmtL$~I(oyk|Gv&lfb8eLxCd! z%Nyto^2Q`8-_;hs49|Ryx5wltTdg|=q1Zd$4SW_j9QZL{d)8!?ha2r`hu;}zh)Vm% zg(?rjy?8IvEBAgZRef`s7xYf{K7itj{^nUbvXyP0a~>)@0PI@P)&9($>OAlCaQXdq zmbJqA*y4E_y2rRElH15_?2dEKTcq6Qc;|Y2&pUfrQ>&@f4AdOd0@Mc77Ss-O0_bwx z53aT^cZzh2U*%*Vb*6NInB!(FQF&VCjUT5<+s;n1Kd^T?C%F9TI&(hX9?0=*a5A9x=v@?qeoz|p|Zfn%UwK)(n62>clcfOjR5o*=O5dIBD+f?uRbdyiBW|v);K4{EDT2 zPkuq3=sN3k`+nUk?y|3Nu0o%oj{^a&?dih}+!H8Stk7aF6FrV-HB#qkN%|daQCGq| zJAo~My8{K_vBZB5@LQ%V+xNn?x>@@y>h*%S|1svyz*m7E(2H%)@mw#)YvwigT6itJ zR$gnbjn~EN>UHzFdp*2Zucw#pP4%XE8Qyen2Kr}~m+j@CmRZlNY1TDsoAu2aKhaz0 zm3XDzB5$#`1ig8wx6G^XD!t{X+ZEnQuNu7XB=qa`-Uja!?^N$J@bOKO&i1x=TfKA8 zKeu`3c^+z>rMTVlFt%8_5%wHsuH&JmiLbEv_DR}4vU$FM<8!o|;Z6t5kW}D4Q>1FE zjn~n82)(v5{9Gq)6gT0k;dh8T#a-YU_lf((1L869ICjRK1P^&y>=t{(bK)Q3CGoO& zMZ79Lvmer9@I>n&J<2N43wVNr={Iq&)!ewR#kU!=ecrLpb$G&w_D0}(*J4c5Z>q;L zvTT!M&Mfyy_d7RdfO2_S^h6F>&RTIQMpjQ9XLqaTIHk>MY&WqJ?TPkUd!7A`{jQzh zjBws}Mz~F;sdN&YbDbs_OGrx04^#%8klgCCz~_N40{;d23Uml`81!}Eo4~h$?*iY0 zegGW-fBH#}ueM%0?*y;C*8#QG$?L2~+CXqT@;uUDZ-_V48|Dr75E0Q7thPnXb0t?`6)oU4=6-Qci5ew7&z$0= zpe-sqo^)Zq8*8Omh0dcGZ48-ZKdMLCDfVgLTVOnpv)%&l+ArQ0ABY3uWATajRLUuo zQNG4b>i6OYaYXzmei6Tl-^B0YFYz}bvnTC70+S#X-t6Z${%F9&m&H|?>N2!?8EvUDPy=v4|JKXKDo{@a{JL`LEmOb0P z+P=oV%f8!w%HC-=avD1wolefnPH(q5M}@xKxx=~BsV-J2boThP7`2%3R~7-!)EK8>_vRF3xn?7b~p2 z_cz8iNB!;SqrY2u&I@DIY7i@y(?$! zpRA+Se0za?gMFiYzx{x{$9~5C)BekD?zC{aIo+LCoxbi)J%ifbX2ig_DScD&rWTUv zwh7!H*j%j2-vu19pSM}}&8-;Emv~ir?5wrdPF1-X7? zT8F35$Un!pS#CBcN776;2+EUG=+1KAMLV&^UU9ag$Iw=3ZO5iHZ5LQubYI$_d9RhK=gC=CDnd5`zS%n4`r0mcE_beQu5_+)QjwoNzz;YF zoXR#XqVk3!md-#y@d<{oqpyQ!rr{mGC! zs=cAQ4wibObT92;jnd`VZ1q4nSfcILe-$fRtjALy#3ooj=z5KJ&T)P~%TRLvB5)A% z+oBwequPRUTV8s`+v1-3dwjwWA^SV{uShTnc*E=DL{Am?9V|6d8v27i1rDKDOF@`rC8-0DFCg@l+FI*&TC>Zrxj~N1PT|jqP*K*S+Co z=X^*LY~AgF-GQ6E>3Reo4&>=NJfzSSddvGuJk{rS$fy4Q1M$Q9u+ zJ=Yaj{DK;D_OgAp!#6lFKfl_?vXrgdy&bJU?Bl=#0~N=64>L?ZRyHEV#j|;3;o{r@W6rK}W!0j#+jW_GH3dg&<+O9!WB%&`&KB$Rb^1GlouN)VB*)RtI49ZJ?R0ecr6|_J9o}Tr zBYV`P)}4+64aaltZQ$d%4E(2W-x&m~yls2!iuLWHPxpF&3W@{8gAza^KzWk#9a4d$Lg;4;omrA*JES?1=0aC6*EvzrJcl%2 z(gKH6A*s?KEtgc~kXA~nc1SgnY8}#QNoyR^T1o35bFFhumb4zao%PNJNvAlZ(`?vT!uv>7_Z&Co-V&X%;*A)O=XT&&~Ib+$>mTuM%qohUtB<-7!X8T2aXHPAlL z>mcfd-v+${dKdH_Xg}zEP%pQa+Z)su)E_heG!R5R@=(w)&~Q*ZC;>DA)GyF4FcdTz zGzpXjdNA-1r0qunj|ScWy$gCzYU=hwQ%7ChhtQxN2z(6s6!aPBbE$jyBJic8gOH{U z8X5@dAgG0)9^yM_AgF`*5&AxA{31HPUjwAyB>f@ve}4x424M+AMoz{84Hk7+F&_UK zftrAtf|^UM7WG=xY_)=Jt2MM+ZLnUUj)Phb>N%+Cpsu4MRxzER@8}He7xiD%fKdn5 z16r_H=)rnI<4B!jAFnT{KWG5R*Dwr`IuU9`s23UT#Yu{XPB$JJ66#1sdZR$2LDV@Y zt;6`R-eD5-kCVK~l6?I`s+a1efzqWWVk&fS)WT5@M@<}can#0TL#sl)%1kd0ln-i1 zGdEvqLl<~OpkmNMsjDl2u8!I|>g%Ynqt1?6yJgVYQEx}h9d&oq-cf&79oA>8@z!{2 zLF=SW?btAs1tH ze+g)>mNPH5_Ks6B%0TZL!7;Ww!$UA}8?a~@u( zB)}nP8@2>nAp>Q8xKzcO=3O^U*^-^bkcYYcz1h0i+5x%+bSvmK(CwhbdhJtWFV@oW zwSgA{cX}&yUS^|AEA*=NG;dBn74NlTj+UOk4)oHi@+HtH_tGUi-Rd<-2rOE}1&{za zXK=ot7K8Hy*QuNzI5%)!pk{;f!5+whoCi1ukpGkSlkbz~Q$x5Pvf&5VA2{k1xR1Nv zxV<3tBSZhc?$z`vQYCEcwL=M5;}>AP*A8n4t_z-Yo^p0N_d*t@%S>y&^O#;gon}1- z`JU(}fo9%g#VVHW-eY<-w9eb8S3m3Qjd}%jyS>)gs8?No1(s_0|A<(s*9@g@jh5e& zY@XTbir8BP?u8zZ`!=6R9Vqpm)Ojk6r@z1OOF(G|6QIc)1O4_Uuck!hDAAjzS7moW zuKf!dvUz&7afQ`aOU}1=EwDmid0!Td?0HTHo!^`68i!}$DP2Ds(_yi)E$}*EF+psz z_c3}P>tHH$;xFpHa-(<=wMXwjRO`+f~>-tJMAL zo4{&4R=V1JKN;f@n8ElCI@Si- zJwxuziYI`xx`ZEUqvc(Tki&F+ZdWVY1C)N*?EvnZkVEK`*C}NvsI7rE!M@F zca+-eu_|ZkUx@Wu8#WtKb{baGL?>Bkx_xi39&nntSGcdZ!_X3Rd&e18q-;$*9;+nw zH(zrpTX!*Je4%^HI!EZX?dg3rUir+okMvdA&I(Z}R)`Jaba4iF<~DJj_|-Y0+u<+q zzV@GIzmHmEo0q$_?kVogy8aege7>6a7_5*AoNZ`f=HwM?+f-#6>|8cO+0Jn;L;JLZ z>kj7==Tm5XzHq*T-scGp%^bK@X!#2Ijv!%sr0g9n~J6WMhh}+_mm{&^hQ!S3tXQJ@(}8fF|i-_Yr84 zz6J-6fv=kbHwT^#-0t1(@oS%qyM=XBbN3yA=K}Y5AL;sCjv?2CK z>8k#FK-RktXh*pBm1`TWYq+N2dWLHmu4ATPk8~7P;A61{ACG#-!byQI-1~Izn(ExA z=Z{U^mAapNDHiI{xmzr(Q0ZUj@m=xEe-A6xO0?%guFco}KNb19U(Lb_E??)fqn(d> zVU7LhW8eM&E9w@|*LSh{Va@pqYMtfJ^B&Z; zT<@CxD&G6B=C|$H&NaFv)_P?awdfK;?dNhAiX7PAfBIeSIdNCl-`AyN7QOq#on9q( zsl6ud+DtKaY1EF)zuR@8^l`r2QBwOYH+b2acdc}?(YsiO>|3gjXY1bg6nNgV4!=Ff z(zdf=2P)euqK%%zR$9O7c8`T@e?3}=z4keg2`;w;b;r9;p@4YSTB0?hv#pg=R8M)- zKH1?ncWwB2%iikD)jcm@^+rD+Isz*Io~oq1J=PQ_fFm)+gOHZncqc4XcNqxF4xqHL4BX#p!GjhGiwIbJvTqAOQ z$h9HI)6Y(!`-JXL);DJY`HhPl%OU37N`vg~KP9h)uM*RhP(WZEZzo3s9phyZri-mp&6a?91$N#NG);6j}d^*_|6@Lzc$H$7m8jdk)=ONbu(P~_=&MZoC{}EL2fBLS z>-p?9>oKPl&Pu)E`p@*9>TYs3gSNTv>GDsr-kYN0dCI;~bFsP5Kb^Bsjnsj1|2Z9N zmrL}hnrm&)Jb8zeu3M>t%_oL9UM50kH^&(cob}imJI2HH-2PQy%ygB~ddJf3*v+y~ z`vLgmd8S9?Nv6jge%Xoj+r>I`qH;~cI{4kdAh~yZ2s{qmMEL97uO)x`MxI+yCs%$6 z_-jyq&FQZ#{q-XEpVbcZ#PIsgKUv|g%lvhizrOOW71snD zEAKh+?vI*71iTOQ=!k>HVF!9kSA@)jcAA!9^*J9m9U_#PDgtBsa-T2Bm<~KSQ}?J-+(o+27D4O12%MDs^9qZzA?HIi zBbMRR&Gn!s!K5{p(ZpWh^wd1G#`^=MVcPS( zdoV@P*35cT_aU4XNLBsbg&y*>B4uw0d8rSi4f_39^wFU#>u;2&88B+%6CitXJX1r! znG>rBbj1K&WjJ+Z3=8yG-m`B}qZW|-^Zk)q?15-)hV{=F7Xl67$+~t=)gP97feiQe z-(n8a0>=VDMlx{nXuRbPBm~!qzJJyg&a{DW0>HpIqOej0VTLtuavba@f`quoz!@L+ z41dAzbq4N9{Fpd~E7vQ2x{W0Mv-la;^9{VQ#E*)jxNahj1W~S)O(o8KDV**z@a7Wd zo)u&f1LrD*C-lC@Z<&F&miTw#J6vZG$CdTgM&jS%{S!h^QuWhif8;Lj*ZAf7$;aDE z{IEETD^DQ!ct?pJ5{GadVZ`4_;$MlcaBYN{knPb{*nDL?xYx7Tw-aJ{RyaRJ#9QLa z39sXNQ&7EEwT-Y(>mu>z#q+qn1iUS-z&Eo0v=lFbFkc#YH;Hq95al%R?h@yop%DLt z(dg%gcw6i`?#8uqo=UeP(v6ik_aO0|Y2Zv3_{N?R-zj$DI@`c|Nu2wYI8|xjy(P{) zO!Pw|UE(K*d&EPyo(uo2aqWh5`%3(N?1$ogI65BS8~aK8LGd82dyROAcMvz@93pst zjwcrJKv)ERD+rRCjtBV0ffDCFEKWWf@euEX53+B^wQ0V}PjAFCSmM`+Yj7O~ye+Q4 zH-bID|MejBXCofsUBvm~GF+$Yc={n8h(*9J0tvB3#{+!haEV_kF2!}85fAb1&?=mR z>m@p#fruww;+w^0T=(dBfNxBY_!hAR*N+T*gv7Ust+=Kd@e@zP8OPIbZC0Sli?2AI zhAABQVi3+u0cUxEZ^R@Hd?^Te6$1wg2fj@1>*pCbSS|1hkPwRve5}MPp*6vbYv2$o z;eR;@gxgadTe+@{8 z;RZfM;z(-ezG_j*9is=K?m`#2Z8Syc!tC`Kw|~1j)6~?_$g8f zI?upoNc>csrN!Kq9pM|qXW(U*MY!Gy{~W(*=s#d-z^8$Pct*zqd?SJaCqegS;OLUT zGC@KdGH|d=;8`HdZU#P6;@N`nwVkc%f$@XY!G8`2=kN?XPvW_P@nsk|h6w!61fhQ# zIJyk*pgiAwx`Cr9faig5KFPq5HQ@Om%$o)dEARr4`sOmn5%W1m;)R0o@msY%4gnPY zXUS8yy$t+BiO&{{kKd>C{m+y59Krbb9Yi0WFY&p8@oh5j1rk3|Fut1&JS6dXg7NX& zLVi3&5}z*^AHP%M`!*24ypnR?fbz|VmB+h4!g!l`c&i79~ z7?kI5g!sY0D<%H9_#D@d4V-*1h$odl!}T2lCm#&TGd*}Z%fMGi{1cua6jvGeN{N3g zKF0MN11BF0%5y@fHv_Mc_($R+T&oP6d@v|J1PL+Mz{v-L&}@Ey>tq98EpeVl5+csP z*GQaam7v)*@U;@>IVK_UQU89ut&_O=J|lIEK2ClY#5+JJk2ErH^1C2b742~S4ot=O zzd_=B-jRK?9n1+Z?O{5=K%$~_LkUDcO5hBS9X=cKnEJLcMlME(EzpB7>)Ut&!p3ZF zW6f`4mbUTb4I4SJ@nstu=Q3@4UChRp<7~+AHs0G{<9(ktG<7z1CT%esCJrVZCIMyy z%t)9-7{1SEG|U*7u`uIc#=}g2nFuopW-`nam?W5Fm=u^)m~@z_Fw}fGLET1v49F4$NGb6Jh4VEPx5Y6u~TnDS;^!2T#D-u08fH zV2WY3z}yG(0ZgL~(EGvUzzjvD^EzB#Kd{2hk< z7j6C%X1e?Kn2wRSPB84mO*f{~8JKTI!k(>-@7KTnJDh&}IR0y&lJ z`ea=ezGzlp}y5Trm~?};Hg?t_A-6jVsAJsI+t2w46(`5Z`*=QU-&2D zF*?KHKh>fBzHz|4Ob-Sc=oJ_F!%EIZCE73o`ExowrLR zPpAL)s11pl-u`1k&m2kE$!TWMW&$Pc5Jd@8{&V@wH^*_;X z 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%0D(6gCyK>?5sueXqnc&nY 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 BV|V}n literal 0 HcmV?d00001 diff --git a/snake_branches/3.50_2dsll_lguide/VCProj/bsr_trunk.opensdf b/snake_branches/3.50_2dsll_lguide/VCProj/bsr_trunk.opensdf new file mode 100644 index 0000000000000000000000000000000000000000..cdfe0d51c461f46c4d9794132cbb050a8794f64b GIT binary patch literal 30 bcmc~}FaknjAZB0)VsK?}VF+MwhKm6JIJg6E literal 0 HcmV?d00001 diff --git a/snake_branches/3.50_2dsll_lguide/VCProj/bsr_trunk.sdf b/snake_branches/3.50_2dsll_lguide/VCProj/bsr_trunk.sdf new file mode 100644 index 0000000000000000000000000000000000000000..4ba14039cb32b6af611cb7a8363c5be9bd60d7d7 GIT binary patch literal 1069056 zcmeFa2YegHnKnMV=pX?C?41CqY84Yymo1A>mnGYTdy!2-6lGBqDT1VI$wda-EjPkl zZX#q^?y=yS>JYi)l8cjzkX-7e5V;hmeE(1QaxGV)|NG2hfn9J(ON!+j4 z>)I6T?CcuYIk!{3LV%EwxYp^Y&!8XJ#X&|TfzHMb(12ehE zDyWPpHjLv2Zx5*`>A;J4$kdV86ZXC0i5G#xvKw#ACfM&(S0BN0N~YM&cv$ z|G4VyHQyGNlG#H)tk>WeugR&^&d!~ETf48FyG_0#Zb<`asyxEH8{1p zv2}3A+-)2Xt0dcwTRN`#fs@O2(f#Cg#4R1K|K}F2LowaUwG;N^OW&WT!!}t51rO3nDPvz>{`NHF zKXmG$-^4A`sp~*Jsl)@nK?)@vQ1WryQtpWDPl8DsW3j=+^FR&oz0kd1^gZcVBn=bzPl9R6w(LkSj4#iCa3J z`Nn@{OX%eJacWv@-zJxg+#TdfT2$edj%$B(32!$(e0;zBluAWUurD~!9c-uJwc-|% zB|YQ~%vo#;FCS>nCT}xNtsmdfwPkK6hn(yh+|u!B+nw36DUWzzKfb*>b=lh>ThV{j zLI53S8NSJ7qyL(`6r5T+MPl1KgS|ZM(ha0a+{^pVdwZ_Q_T!Utf9g8)@4Q~pf#2kG zkjKo^`rqJv=t^>0Lcc}uLdW<#IJL2KrfKMuuZa7%bFJdm^R42~&!g)%E#hy#VG%dq zXBB_kV-+u@-`Brx6*vCYBEI(8^C}=cU-91*^_Qq4z}Wh6 znXHdSoF0qLfX={Qkb&iS^?X#X=YPT6&_(ME=nUu#=nUu#=nUu#{O@Go7iWFvaj&t1 zMdVGaQLF$+>s~*l`KRf~8ve|8FU{9ihq;sRd&}rLZh3#s((rxn$hq9|m7JyNOBKx< z*+GitD>+NcYYxZJRm|#i0*i`(E*H@41{N0sOG<#HrNFW>V0k&Pq5@c139PCDR#yXS zYJj!1z`8nMeLb+D0qF4%X4Ge1FRU7wYc;br3BV~LaH;_~%?O-s0?sf4XIg+~Sb?)_ zz}a@-oC4t7Lg1MWV6zkGD+0E-fb-nI`NhBmCBTKHz(r-i#pS>y6~LvHz_Y4=XIBH4 z)d0__1um}xw$>BM$?!M8YJ~^5(hFSG2wW{R6Rr_~YYo74M&NoA@LV%+g9W(J3OvsS zJl_typa9rb2n;xY7dn9#6#*}H0WWa_FD(XMRsy`d6nI4$@XB)FRTaQZmB6d3fY($5 z+iQRwwS;mqf_1RkTo3GQ0B-RByS%`yjlgT0fZL`3yM-{}b`jWP0PZjXdriPTGjOK` z*lz`fY`_6KaIgS4R0!PV0AA+=US9;y`18*n>-dF;>sT6o~8E|ho@RkZ-xROv# zMx+W>w^jphs{!6#3%sKacxOHEt_I-U9^gG*;J!xSy=<89J^^^Y2zui+phyaX>z&8xQ zH;urzOu)Czz;`Ubcdfur+kl_313y~;{9GaM^A6w_oWS>rfM0Y0N8N;SG7`nG`cet- zZ%Tn*E(3n09Qd~tz^_&Uzg7kOyK3OqYk=?90>4oQ{ANAy?;C*M@&J!|fyqYTx7ks` z?+Czu5P{z{0KaDhe%}QAff@Ki3-Cu);6K`cKehvZQULsEA@FAo;Fyz8PDZK-RzG(E z|H%#fMKSP~CBR>m0)Jfw{Gc58n+o7>D}leO0{*@l_t)Y%X09J^=N&~RU2&^^%Ys|n}3$V@#thWIh>_ATep_~kFA*>o5z$PbfN)d3X z3pmXUoL&r^Q39M<3Ou6>IIA2uy8<|;5;(UCcxE-Qxd!N~1-8@y=hXw}HvkuSfD66A zMUBA4O~55nfJ+4r;aMW^Yy)ta5qORXxZDhEwGhh5@LOTE!UkMv2d*jrt}Xs`Qe-M|gSz>Ouq^Gbo|mjN#*2ewrJ1C_uFtAH0(123)tUQ!FZv<`S#J@E1d z;1wR=m0sXgjlfM!z^jE;!fQley8+l?B$Sg8G{I`K8Q5t7Zm|NpY{0E{;I#$7ZH2&Y z2XMO+*i!`D;R5!$fqlimoh88jQedbII8Y88tN;#G0(Vsbud4=LUjy7-3*1u&yrCX= zV*~Ie5AbF$aBm~<7NLzWEE3Aeh!|jXs}Xpc33$61c!vderxkdY4S2U5cuxUvUm@^b z2k<^8@cts;11{i$Zs2e+Fj@k9s1*2c8Ss&E;G-45$0~u3R{@`>2JWu`K3NNVst)*c zJ@A(6UbmaC<31|01p{~&zpdU&A=Bdz!$B+mu$e7?Z8(GfUgz; zUvmIILHYKBjJVBml}b8!$t_dEC9bE0{_+k{HhW7H52gf%)qZ(fbUy@->?C{ zX$Ss&0q|Rez@rXe(h2-_5%4=M;6J#5-z^4yuLSu0Qs58DfIln;{-^@@kCnh5R{?)g z4g6^h@MpEau{uII8L4_${k#GAPafbeyue>J0)N#6{Izg|@BU}*$Y;EtNqjo^Y2nkc zcm40C-if^9eJAmD@NMDk*jxU$Qg24y^uC#RBlw2!Ml9}+r;bF9c#kAr556wE-u$WL zYoXWNuf<;tyqbO``ik$Bz6 zbjW=u{#@X>^ug%C(O57h#9|}L(8KPB;|~QMN=KtnUo<%! z8g>uI9}GO0ejxgQ?}6m~q5IwU$L|Z=m%cZ8ukYUEzR*7RzW6<3cSr8_-krEBc$aWj z>`woksXHQfc<)Hu9=u(+J$9S_w$!bWTfMg?BEg6diG}^))Gd))ytgFw2KNekV>kP6 z?!U=>Q~bujjp-YrH~4Ny?g{O2?}_gY>`q@Fz20|y^19Ga0=v>f(IMYZaxgUL z9*hqJ2GXHu$QMfXv;Npl|ISojq|e)z=neJ?y|Eqs9jTs3kGChWJ-A)i9_#jZr?y45 zdAB954PGl;8{6vNn(B&ldAkx@f?I|=y`728!Ogd4jJs}q}on}kiVtNd4`u8dsiy)tn{@CxCI*yaAqQ1$qk_mBj@_h zO|6ft_pVQ@3$7E^#n$@Qrq)E(c-JIW2UiQLW2^kDQY#}Xy(<$df-8g-F~8rRYK^pd zTNBHJ%Z265=OmYfmbsV3&kmfOJ}Y{b@2up~&{Fr(_>#bq^y27Z-{Rz=&?5Ju_`<-# z^n&OD--6`)(0up&_`JZpbW5~l)ED##zF4!rIdx{_Oz)YAxxu-@+}IrdoYd^dZ13#E ztl%tRR_qM_8L63(nckU+8NnICjM#Ml^whM-H1D*wsp%=vDZVMmrcjf+Dc%@pOnakV zpEv0VdEB0OL!cpDAFcP*C+k9W?z(twpf+6-t?|_)t3%c9>Uh;yWu($unWzX>2oR?$E4?K@eIg+v9Kk4UDv>1_s%|F^W5g<=6UnbG-TY2;r`&z zww0&wxc{Xq+Xi-S--M@{hX!`_^~@dIvQ-hWGu*jzOILe0J^DP@-n(;4^CWJIS{A@n zKXe9k26P5=26P5=26P5=26P5=26P5=26P5=1{4fL#{{u<*d(%1K@2;-@&f}s|9?HL z1>lh14Ko{=pH&%|$2hWrwHVnl+Q9!P4*9(jkMSs8ulUH1%p>JPVvaUk0?q#8l3^1flnv{sO$QnGoUk|GoUk|GoUk|GoUk| zGw_#W;H77`e%VOR{|{u8FkHNX-(fibyXrQ2-yPR!cz~Z7SBIQ-=S|LjXOpwVIn}a? zU)MRk&Zs~K%Qy#|d&wEr)!bTg#H;fQGaij}KXam31X_A%&Ukdw{Zt6c2{CoFvZ;HW zqH~`!N+JlkkYci)zK@h!K$dpr{){yv>sfobzx@=AtZ5NhuV!LK;cBOs($YeKyv_jK zEu{N?XLTkD^0e2vkgSpP3BB?Nr1X}u6|5o`xW#!`E3h+4wwa_U0+&(XWm59Iq{M!O zlS>`%1WNIETQbxa6VdjGh^B<)bkp#Z(K_cM$67+Mt{$(ti>#*}aNaX6Ts8y8xloK` zrx6w9yR5eslNp_OTKlOi1e{)83W_M4Z!Z;!Y&oFlWwq_(Sd(K-8Hen}0Waf{z{P09 zN^vWN8z}weY+AWKS&FmP6b5BkbT;LMt|8GCl6FeZvSxK~mNZj3E9Kj$P@BisjBNQ; zIgxaQnJZgP;jIela>Pq&sTfcdvuX-iCn-1H(^ThyY!+0K#|28A4P;R`zJ4lnhC(V2 zdAt=;47sLh!upxZ4ylqlDA+8eCQex7Q({+FIgy&2DCuJ-9ne@DcJAl#R#VO^YP?8} z`>7DNIBk@6c$C^GfnxKbR-@3PHCac_0cSstLnOzU>nKcrrYx6Jq~1(klYhA&l)+jy zRKbvGu6QgKh*(EaA0nyya#YdXY#z6ya3#ViQ*WYhGsx3K+L_6Ho>DslSoVFEkjlLc~0s%^;A{TU@32!{%b-WDSTspMN>y^rTNx@=Ht&v0R;hRvO8YLIlL zmJ^GzP{5hvMH$GtW;Ur5&8Q^8LQamL^Yf!jW!B0XS`r+ znbhs07&0Re1)F8$G`?pLiN9)2l-zw)k-sYKwxgV!DyoUpCOSc`9Htl!a`Gx+(C%L< z;G|4>H7xQQyi&5HqMD1o1imsBL@DY!l}ujXEYxCZ_cuy0X7WV@XUA(is1=r!L7Z>2 z9?B49bDZ7#q@>M6NyA%dx90FNr_bWt(6~3MPR`mVU--f>89*uk<^!eDQLvMRtPrnv@C4x6tUWh#JJCuxhN8ASz z&%~b=p7K2zdm{Z<=#j)jfvEQZ_x=9+eD@~q@!c7@-F=%k61~N{H$m@!#CP}a3JwJZ z{h{>ERBv)eVtc$her;k)yfYSzc0{jH2k?@3>1M#KV0=gXFzA*e>MZC>-wQHpfjK| zpfjK|pfjK|pfjK|@Rwv@|B<(EGt>M3=VX*H(7eAk{BPVe4LElE_;JN&Yiuyl-vXZa z@<7-Tu4L-7z5Sv+gBNVxPTwUNWc>p>`@05)y1NDuG5=suxS{pQ?qAS|RzspgHv?VQ!{A6~e9y?%1V} zcKrDAKQLzH;t4DgpR#e{D`f*e7)h(A&%4nX_A%*HNbB!u&zahJLN%-)2DuwPeth(J zSjeU}tCqGN7RvQJ1~S^Tu)WzcC!cAGmZjx#ZdFFyRo6Vl_8iWaohLElj0LN3=04{m zyc||q1^0T1Xe%Y*1P>~>WlVjl3vO_LJ_(msYG>q1E&ZcrS3X_LNu_e)QfmztG4)9w zMdU)HE7zQ7TwV=vXcyY>q_Q0Jl?ml3%bK)$6p2(la#_bUqT(z`%4LLP&oOKbmoW7y zOB&p^b6`j+rSO_5lBx<)eDW2<8m?yi49{lLDa%87lnBjSc?nh9C=^lEjS`-i3Bg7M zD=+z!aHuht-H<&eR)mFRQspaSt1{9yokYEmUw}f;oIVrQ3*j+|U;9bbi#n!0RrMnK z$1UwW-F;got{?O{E>WSPlvaT^y%V+Su5l$PUs(4R9*ME<2?Z$}NE03`({c47Bv!^}J zs-1|Y+N5C%%`z2PRe$8KD`iree<{$YKayfg*`3)lPu@f-w92vP$Ul|3q|73%xBt$ zSdf!CY2}#}G-+L*F zxxSFQ-A!L^v+i`!IJ(8EIM_1 zxmc~n_k`&^`vI%?T_oCQ=c`9tDiKB-(F%7>#ise zV~^X!rHh^7oV6D5bJHy12D3#>K5r32k66Y37;=b$(IP(noLQXpH)ioOjTW&jWfgxK zcZfe9GmE>9QqHwm#A|04?zR{^X!@!?Jc8s6530xy z0y4?!Ab;p0O3&rcb3pvr5w#%Qq%)v1pfjK|pfjK|pfjK|pfjK|pfjK|pfjK|aM~DX zHjNniX&q$yk>*}2J^x>qktDCKhDp4gkQ0`n5ZC0( zQ706Y?n!4rXW$dgz(>_?e8Q8dtEV%dGoUk|GoUk|GoUk|Gw=y!plkWY_ieQQKQ~Xu z?3}cp_W$>-eD?{@TMu1x^@ekLTfXp{w}pJm1!S2Qfo{|p&>7Gf&>7Gf&>7Gf&>7Gf z&>7Gf&>7Gf&>8pyFfbyv(S}s%-q-u=wEzEFMk9HTYTaqx|36*vpKf9cKEnO~vq;&c z^utv@bOv+={%13Qx~?BO13Cjb13Cjb13Cjb13Cjb1Aj>deii@BU;*v_-;t+8c1}wF zNwYdE2>c?7{9-Whi_yq0CKJDy&HQ4q@Qc;TFE$&$*zNpMP{1#Rh5X`h@Qc&QFGWTC z;&Sne+s!Y<#r#rI!Y`$z{8CoNFXiR@Qc=M#m6iNbRmCsW)%;RZ!!Nb9{8CrPFZK2O z($K&!9uL2Gz5LSH$S+Mz{4!+ zXAZy2oy#w0p2;uG&HUo?@k>h!zs#G*FZ1W~%Yp^`vTz~4ELy}bix>0Dk|q4IbSb}N z^C&OxbfeCI&VbH<&VbH<&VbH<&VbH<&VbH<&cG*^fumI&RmUpBm9EN>isp*Z^0xA^ zvVQvW@!?WW>5-DwlB2~P#mC%Xx63`^YIcnlwH1xgrzDwk*x_*;DQqn~TF_B&%pSJ8 z>?5{j+o-k8I%es&Fw3ynV?JVPH61l}7>^mk2A5$(Y!*j_HernQ6CIHY@9Zt4{r~n1 zHS+%d`qRAsf4bs7-8o!L`~UKPBmTLvWUl4wpBtYZUS~jOKxaT_KxaT_KxaT_KxaT_ zKxaT_Kxbeg2JWp`T<)O#|DAarvUAd5?Eg!SS-U*Hx>099XFz8_XFz8_XFz8_XFz8_ zXFz8_XFz8_XW)~|z)@0d{m`!SoHYNxAy3WhTp#oQkkf8iWO>rj;P5yXT2?u$`Dgw_ z%ahI*={`%h<|(no-g~ z@BP=af6G_drm)B^4Y2TXSWg3t9Y20t`kFmV!g`n(bD#LX2!tJB`nv?CKytEQN0h{5vMt1!`mnLq z21v@!L+*=GR?F0aiB>b^2s?R#o6_W%~Nd8VOffNmHo?R z>6#0z)Fs!RhVwYR;6yluC?%&&jGy6im~_fX+7-%jnrjx?d5xXK35sj6jb3Duqhx$J zBetQ~26iBOo`7ni2KBj?I7jHlj56BUku4-Dm2;uTX9qQ_*=`QmGNvf%m!C+sKxCF9 zN_(bWhv$b^hBvZ~Y?HY)SGaT8!n${BWELty#?K(H7gFm!$h1g8O0yZqa(&k&+FZap zj#ABxgYqqGZ}yZkPFqbabxu=t8KnV7HbGY^GgL~B63aA`R>>;aY_>alY9x)<5v@XZ zDv3g$fX)?1wtOfGTmG2pda1CLk5^ubV?5HBNQG2&Kl$;LIqYKUQ<5^&-P<)d6zs+ST4@gwgIYr>10R@tV9*{?O(d*8 zI55}+i4zLz#ON(Qvt(hVJXjut&0+dWFV!ifEVyOMq@ucvBr1PEC5x)elfsQ8s)(si zNz|6^ty?c1mn_9F@mdoN6U}*XTA7(D-$Vm#^SFVwBy0R2Q6Z<>OmgzaO|qO^eNiYv zX;K#p7n9`d=n8I?`ZxIIZDHQ*p~pf5=8u$Q0&5jAvbQA6&D3WmuZD&Ox;O6{nxtm+ zT3Hv>67}JvG7SnnYHP_v((*^zk~Cfn2e_w98?PFR^`A%wh0wWigE?Hx_$hZ(84{_> z;UY8RuF3Cblo2|i_<+8k@bsg+3&Z%=BEGudn%J2IhE&* zPfuQoPtAC`jyy$eJ&VbH<&VbH<&VbH<&VbH<&VbH<&VbH<&VbIq zUx)!0JuIJk^yO)#H2?omo(|cGyuSaR$Bb^&8PFNf8PFNf8PFNf8PFNf8PFNf8PFNf z8TjjB0Q>(x{BA?KjOPFUl&89C{;zNQ=dq(3bp~_>bOv+=bOv+=bOv+=bOv+=bOv+= zbO!!<7zooJ5B~kHzwvxI{r}&0GZTLK|MNB&kF8>Dr{n+gBz{gq)E^7+Zu$dX#e@5!`ROk%o4CoB#4CoB#4CoB#4E!}P zaA)1C?^n?Ne|L7nU(z}|Cq1J0|35)t5JiQ-U{Dy0Muov-QW(r;g~4J`7_3%>!Ddq! z>~@8rpg>_LEL0dA4u!$#R2Yhi6b6?|VQ{+@hT>v{p`=7%C@obO%E}am@^XctqC#P) ztW+4PsuYImYK5VuMq#L}RT%2(6oz_sESC!ng2Lbt6$YSrX3{6ozG@!f=j3VW5v2 z=EAg^6b8RpVOU{N7*<*phE+C&VYOXhSW}=dtSwX+);Sc0^-hK1+#-cxgG*u9=vElA z_5H7*(b9F)8PFNf8PFNf8PFNf8PFNf8TbS%t&92> zjx0DjpUrQc*U>WU8*M&zrsvGIx#2lSW{=Hs&1yZPf9A-Hqtn^+=4l;Mho_7-9c%P7 zwt2&zBMoEquKL!x{@Rh6qt&dsxvHabxMH;YSed7+tu$P6q64Mo zg&hUM_EFn0tH;`A37e0Y#*8jwtD#>U5%B!~13$m|)0H&;zkag$f5>UKEV4Z5XmEI( z3oWbYPXI;dey3=8()j}29W>wS3^?u119Y{KIZD5M+%@X#r~8FYFNLwej?8xFZ2Akq zD8*J|ndhi=7|3k_ckxnuBDveieV_9t%RHxDpo3x6Vb5%Si#3PdYSKn_!@9$ukxz(Pe&6Zv14wZd{mXche_VicNZt+8;?Gn-U^Pbn!_zR0MH#fzR62NJW2lDwY> zlzd?+<3>phELRN5_K_*63fUZDG(N1cJQ*2v%|W};40@j$`X+W$PtZIn4K*o`XI$aRAx!R zicHS}Dsbz_F<%H)XnGb>WGJKiD33*CL^dqeYCR<#q~+G9%?1 z)^7&)l7fe_R#?U9Rcb8x#ClGqNMkjpCqVH`B^7ew`MS=>mx)RRq&&b{(oXt+&umh# zp49sSaik^%D@#3l!4p;4Rg{i(R9RM0d7e$AqT+-1{f-=qSbf^Hj_PL zupSk@N74byQ3F(iDFXWCG8`*Yy*b{oHWiXWU}cKioqN^Uo>bQO+_FHTs+3g1SpBDDf&BU?ysXkLwy1^p?7l8#v7 z3P0FSb_YRM)*h=}z55kq04rXZ@`m-U9yBlOIBiXIg`nA4+OP%|jz|Kq1lCLPDJ@ar z7Omhqu0^gkVPR|+yg*T?f+lw#wJ&>l&;aMtgU5o3M*?pIl3TG`d?XD8dlqO1xUT9f)cE{?Lu1(N~yuk>V_4# z>!}&fT3{8fM{bhk>_S>|8Nt`)KE673fK+bbO;Ho6j-D{5Emj8Q?8Cxf&q0)7o=zKG zb39|A@MbBSu}s*D!ixH)?m@6@g`c)LgUPm+yY8mu`C)NDTKJcRbwQAIP)gN3LmVUOfCN?ho^s)?a9Y5Y}anuq{2RFbN12CAWop+{5U2uZU}$#bCX(eV98?r6Q) zeN*tp_#R=8@A}YnqrK6d$oBNM*tOBF)RuH-WOJe;bhZDg$d#eX6PLv=^<5IZ&>aZ0 z1<#M4=iQh-*MDwceR8dPt#`G1MXWWtJiN%gFt{K+FVPb6C7PpW#^xkv`Ok>X2ux2+ z^-UF~G}lC`V^!%2e?_z`RT?kx7rWh&qNpQT7_+BsDXY)Q*bQHO;8#_~R(7}i{69VN zUpw-zd^KenVfgs*<$qv|d`idA@#FIC#8_DS2sg7;OiJ9=o=oEUg9C$I1FXNNUAi00Tv^7*tYJBk@>PmDqu?m< zofUaw_D=GXht=cX*B}L}SQVSY_GC{w@O)H&I-zDayn>dV^lU2Ir6+j zd(C+5^U{|!h85=-x7+%&o9RDvt>F{wp9|ld;52EcXkg=n8@1=Br;2LCNZ+ee8Rc&hY>r_wY6)Y ztFN;qO3Yf~nb?q#tPl_hm`DN~Ex*+101vu`k$(7Yb*@e}C; zAUW5=Il^Z$eue`~I#t<99i7rF8@jjf1`3t;!+k(qo-N0Zj~)*T*%JK(PsfB%JH9|r zX@IVmu~)LEQo9q;rBx3^nz?06gBv6|o1cmv z{+X%&5KLK3;87m-xnRgY!Uf^+y;wGBGZy&a>x65;lIMmlYNq8XD-{ylaSNq&T$F_a(|B8jE=AITo?(r)KfRpP0pkb1dTD z7FxusK5rI(b(KXl&T@(!>z(4ye`Obk?{bN&?1kbJcNdEN(=6g2cTrgS70~aA`4(}? zDvKDOXAze-S;Y5OSj3A5EaKjvL;Q)$F0x}5@s=?Y+w<+UcT^iY*j;%|d-i$YBlHw` zh*o5@_vObqN$Vl}-2jBj->c{TB}>UCe^(&HpBtEb-=0EFw7D_7R#6hIYZ^2Y)`)T@*t{t`=85xxmO{_z1GS0I~Q{(1|-z)FgS zzvKd|@sATwV610rJy0;tNs5fW3L}LY|7bxbjO-wV;IGIiLyWH>{KXlym)wT>Bfkz(Pm@W9K&&o1y7PUZOpIp8FZ zF=V}HKhD6N)sHk}tt9>VOG6&jrF53N z8!2?=X@^|ova=LA^Av*S(*d%j= zM=x{*MlR?-zxBN44dHc1SC6bX)*4>!IwySgv8Am`h8K-4I5uyjrOnrRX4{;OS+1EQ z)0?MuG!1)O8~W=;YTBy86-UZCN?j!$_tB!T^Jw9Sz0JzZM~oeYBQ)p#$=sQ-8v6gg zS(!CWc^TmR6JPq9Jn?z1r#t>UaUZ$SIDGp4{}0?`*Ihnx&GiU%26P7gk_^cEp{VEb z{a;caUAE4E&VbH<&VbH<&VbH<&cOdZ1{P0w?`O5N|NjknVxFNOI}aVp{fnHiIxM*g zf|ji)YS|hLTDC@`maWO8WotHT*;*`GwpOc_t<9!oYqx9J78GdN78YvRIviTIPN$Y_ zQIVFd%cW)Oc5B%d7i-y;lxW$OmTK9Sm1)_QmuuNpRA|{&R%+Q+RcYB)S8LhU)M(k( z)@s?-)oIz**K64}G-%m+JX*G1ua<3Nqn2$`la}q2DO$Eur)t?wo2F$ueY%$Ij2T+C zGiPeqo^ghj?W|c^wzFqz+0L1xWjlASmhG8mYS}h7YuWmITDC1MTDJ4%Y1z)7uVuSn zftKyUg<7_Y7HQcoUaV!iWQmsT(xqCqXPu>Gd-mB{w#$}j*`9NbmhJN8TDGmNTDE?_ zmhFlaTDB`!YT2$@rDeN%wU+IgHCnc7*J|0WTc>5ae!Z6Mx#w!xZrGq@yK$qIZMKv8 z-`8*JDb^X#8PFNf8PFNf8Te!~FxDO3=DBvXtAkz%8=<}Zv1`Itdp3<;*>MHCeB{#B zOU5n=U+4*pUeIwqJ8xt|>$zj=!fQQiMpt#LWGhBmTbGY53!m*dYjjD+Vzy{xLF@dn zmaxy$JUX{y4x2r4M(fP6>EUUfsiRFDjm$gJ&{{uM8?NzGk5+b6u=0`8){-%I*ySl2 zb#xT6f)QJ*b<7+#d5oiC2hI6^^y(j!)(POh4Yt7hP;iMMLLt(s=5X4k4owQ4S{nnJ5)&Z-HsYM!i`9;;@> zs>!fw4y>B`s%E^ZiLPpXtD4rTX0xhEtZMG6nzE{9s;UX9YF?_Ej;dy%s>!En&Z(Me zs%Ds~iKS{jshUQrW{;{#qiU|Gnj)%ZhN=mnY96SX{;6hts>z;ej;EU1sb+MliJWTw zrkb{?W^1ZRntE=gocO3_VyX$4YTl)qZmDKjs>zjVPW8!dLUrwQ26P5=26P5=26P5= z26P5=2L5Uo_$2@T|BfmDu(qD&|6?aR|5xqyt2X&nd;6*_ebr9BY6D-jZ?D>}SMAcP zHs@7)@~W+P)egLB<6X7iuG(f-?XIgf)m3}xsx5TY&beyCT(wWG+8$T!imNumReRv7 zt#8$iw`!wXwZE;})>iFiH!0`;s=aH~mbGf9TD3u~+Lu;sN2_+BRh!SMJ!jQcvucM~ zwXv+)PgZRst9Fl7o5rfWV$~M0YG+urA*|X5R&D>Pc70Wwy{bK4)z+?RM_09xtJ=R+ zZQH7LYgL=Hs=Zm&maJ+gR7Gf&>7Gf z&>7Gf&>8rIGw?~C|6jWPXWQ2pTiNDPiA0leR4^Q~a|8Yo;J;Yd627i$V37VZ+1EU` zxw(1XJUC|DjA8tH^U9^07A@{+-x3@OZrT&PZccCKt~r~7gTaB|rop~oPgncqfnZj4>)Leb%C>=>+c#|<9B3aJ*wxoFcW}#AMa0f|{;n?yD$h-;^JUhbj! z{~t5^{{~}gL3Q{K-1juXaNd_Q-nP)!7xF(;CVzdwqY#q4o&4(y(x(u1boX`f09qp7 zwbE)s{wJX1uP;o=%2C`*F0!j{i}KqGS|UGVqf|dG_2$0_&LiR0zc9I@-s5WQh_tq$&PlA*I-n7r&fhzS@)LhHr+brPe4Z<|#gbtW7v5z0SP2<@C1X*>fYw#U~V% zXMTD=G=KlbNuOgW%8T8S`PSgVJbPK{B&pr8^ZKp<{?*3zZQXr&pW;(|we2fKBsc#9 zGxBF(@*eq-w4l^Z@@1BxJ^gtVbus_)3J?2L7iFnCFEMhKo|9+KjU;T6&!o^-Zi2n- zeY<)$(+4zhWXrE2g@5O!6c%&m9LOom{HbZq0e2*Hvd_T`4({x1AL`mYF{$qtlgJWv zq?DD?w{`Nr^25E6$Oa0dJQYPqO6QiYt-)P8hT5+S?$|Xk$KNa=jx%euSq)^4TeCKb z8JXOUdd{Nw2eC&$Nw#IM)L*uU`po9u_k?eZ=8;r-*q!f z(r#9W$Z)It2C(oc%|NLI|)DhthV0voL&_-Z~qa!~0yeY|rf9Ve7UTxl(JZpv_cR1v?H zdPhuZeez5*6u~o2q~1(6lP#ma->8rRneq|gv;d+8el{~SM zW26F*{o*MbQ++jCa7u+~=J?cb(Hih!-)IbK41Ls}n-yNuh*n|cC1rBDa|fap9ZWO( zarRVDt1O$mSZaNf^iW2^q7LcP?`P3uQ2rT69`5Pzzx%VFEXmwcZ!8@hbjfJM-80s7 zk-sS`*<`g2m#miD)b303C!l%ZWx1-4Ugi;+l|5NjXFTn@+9Do$)h?R;%O-CA51V-F zdb>C_!!9nnw@{q+VuASd3s&*?GbLihWma+cI;&`-U-(h0X#9#rjMBINYA?2kuYboZ zF1pPkCN^8d^|xBYWW*v~7PE-Ia#_T|W{b$^cXQ+WpAngdJ)9xH#5x#0b!cV73^U*Y zHp(zfbFyO$6A3r-2pId8vNi$Zt_l_wXlg{CVyCYO)H0fpjtMl*r5HVoHDW~AD$M#*r<_Rz*rljR^md&E@CbdyM(bJ z)?s0fGIlW=F|pq<*3FuW*cFVmGiGK%#=gp$&1?%}U97{*u4QZ+^H|t+Mjr(pHM3sE z{)HVgvwp^|VjV?nkg@Aoe-Ycw*uS&kBDROI8`u#GyNR)z*_eghLM4ceIM}U>-Nst2 z^vzdxDeE_}yBWKOjab>ejNQkMTG``_J;=svEXvqJtl7pMVJyZvY%Ijs6KvSVo@DG! z)^BCcFd7aWv#}Azo@O39dycU~tj*32Gxh>IQp8?l>}7Vu&R%8gH8y5vuQPUpxeC}D zjJ?TP3)tI?UBmhd*ryr$3>zt6pJVLv>}UadkFhVZQ720<_9fO_$iB?jR~Y?EL?2^c zW5b2)>x{k6Mhn?D8T)&7tdJdLEXh0$_8rFlfwei<_ZZtn-%(~iWNb5Yxu}A(pRh3p z`x#?nYz(D5d;FX=JJ~N7`z7mevR~6jNV6{bjn071fX;xT$C$BbUdwM_EE5P^Ygh$chsa`em^-lov3VW8yIo;fUDkXq zw|rhk*4H~eOY0-=IAPBa{=6dVn7L?6i@~z2UGwm0abu%KnXaoq&1R}ryFak^fGr$6{0&D;~pa4(^Z~&Zu zB7h6v1{4EI0HuI30;{ncw-ta&Koy`GPy?tXkQFu7!KNP20Pq03fJOqVsR_4J0796| zW|7cl02l!#fEi!`SOGSG9Z&!$1ULXrKoP(Na07|~C4f>u8K4|c0jMO9H8oekrW#NK zs0Gvk>H!S^55P-cwKU?E4HF0e5nuoq0VaSMU;$VGHh>*a04M}F08T&=zy)vviUB2n zQa~Ajtf-|NHWh$MKoy`GPy?t1)B)-N4FC_o3upv10oW*k01yENfDvEVutrE9YfNDSupcYUEs0TCvJOD4C z5x|ZT2mlda02l!#fEi!`SOGSG9Z&!$1ULXr0$EX85o}xlH=r0$0w@KP0m=atfJ#6W zpc+sEs0Gvk>H!S^4}cvb5C9^;05Aef05iY>umWrVJD>ni2yhU{dfJ_^DFV0vZa^`h z1W*bn1C#?Q0F{6$KsBI-z*IzT<30pJ060gZqr zz!ZSsArJuufDvEyS5x@m-1BwA9fKosipd3&Es0362 zssS~CT0k9v)me|*27m|P1vCPh075H)2rvMQ1hS$|6Ku=?3&0An0qlSRKq0^ZZ~}?| zE`S?Q3@8DV0?Gj8fC@k*pbAh8r~%Xh>HzhC27m|P1vCPLHUg0#tET}rMt})m23P=A zfDK>=6aWeV4uBI-1aJY|fMP%ipcGIBCN%G2Gjs*0d;_SKm))7@B$hE zO#n7VAOJ*w0bm4}0A_#%UDAj<`n>2SNwD2il$$o{c{fe8&Au;_1-S-lvmKMV|6Km3lJzr2onE z{@DJ&eqn$7iQp6NClZf`9``<;d@S;q@3GXQ(MSD{rXPtta`fTI!@h@84@DpHKa`Hf zqJgLojSmNh-NT6ogAckNOgs>J!23Y*{>c5l`&0Kt@AKc6zBhJn;9lY0_`cvi_rBJ9 z(s#%14%{u=9ltAhm;0{7ouNCucP8(M+~K<;b$j%7|Ly79Vz&iu6K;#&8obqgYa$Yg zcq7Shgr25I-4eZJbZ=;{cW?6M$j!c+Q#VC#^52xcF?M6%M&ZWz4Z$1SHzf9i_IURs zcSm;ncBih7Uhls?eO>Ijz;(iP@m;}P?p>`z>A~1wU{Dy04+IC?1Bp;5ZdWGKjj^GaWjzmwW$J>+K9@&1RJJ{{+PHYQp^KMIC8@bkZ zZE9BB zP3r3C)&8r~o1&Zio6=W}Tot%VxGH{S@JjcUi7SFvxUWcD9=hCndGfNzWxmT&mqsu3 zUz)xoc1hrp@WsB1Qx`=q@?Vs`Fm_?!LgB)AAQ*555^bS2Z(H($$OXO&Qs+m{_n)6W zFLqwwJmI|f#^6Tx#>9ru2JeRCx$NBd`rvx^`oy}>I`6vV+Q?ep+SHop8vmN~>e%YQ zYGHMJRdAJiRbpjmrFUg=MP!9cp(;?$z(BLAZF!q~#VLSbQi!PxxheEZiDm?O-I&koLZ&rZw= z&GOD_J3}}lJ~KGeJu@*QG{ZY1IXyDnH$62iI?X>VJvBBpFjbfupAwwno|0$^HMyG- zjiE+&W5OHqdc8?c#B-z}*x+tR)Q9T5^~t(WowqJo8>#ixrfQ-!{+e`ktU6FFRL84= zRqm=pWvJ3ynXHIZ_$pH6(Qe4#5`Rg$I941e7K-EUpxf&d#B2jR$5olnC)ft{4-{Kwv(RpQK84k0$>JM02*^XD)i)l zsa{skPvn%(#;1Ci(Pi~K#hD$S)L}knJL&11&D2W4%m52u(rH{)&yRmPXFHi`TvpGI ze>!J7nQ2^B&k3h56Lkpw4KbHFstW8b3@yoGbe0< zIv>eQFsmo#fzn)$Pwpn1$niPcq|-MWpS?{uIpY&CKK&|l(Mr~$aza}Lpc3GP<;q6f zip_Mp#t2+z2cGW)Ug!c|TmrnTl#s7TTeo1L+1h*ZE6rG6w%(9iV8*ht^%krv+pvmk zy-jNwnGKW6y#k?41Q-BDfC*qBus&qPtqouY6aWeVP6F%xBHX$FZb068aXI|ND&SHH z$Xg?>gY%2^aA^Q|0A4^Npb5Z62_|13HXfyDzGnvhzzY149r)uy;7^^vF|4Xuf9@u< zmEiW5rMSgvs`Ue`q*{Ml4g5V{MysYF>#xe7@ewI(YG1sLV`(F5xp)<5MIJh0Yb5yiaK4q=RZ6&QdH ztX5dd)XNn%zD$AD2x~*$as*Z)tW)?>1Xdxe)AN=g!hDb@PN$1F`fli5@4Lx&LhpFr zNxU6;+xvF%tAEMcR{7~?aa47y< z;5p&B7|s1tv1rT}ON~TEyfpI<9uN-1p7lSQekS%z;2GhW_|w6s-A^Z;3O(h0D*0sO zN#B#n{gM5?{i!FSPxzlmJsy4B|9JYb*kggmgvVl!1|Ah2jXx56#QjM8;o!sWhZ7Hl z9`Zhvh=!uxXmU6*>>W-%7<$nAU~+=Fe|leZpMPKKp2$7kdlGjC`P@HnmvC47&fuNG zo$)(@cew9J+#b5!dwcS>$ZfvcQnyBL_1~I~#3F%+5Q&F_VRtxjOXwEwEy=xXZ~W%q z&F-5MH-&EU-juvCa-;9Y)D6)a{5Pcc#P$UC2z%nYgS*|k6W52X_gqrUs$|{(*ET77B!fP`p3b@9t0R4DIypO!h_ke0{0jXs^FFy(6|G zutV4p?+Ny}dlK72+r8V9-K;ylEx66SEpct=TJN>Vt&y$1t*NePm%l5$CAKB7Mc5MW z40gIZ6PrVuy_=K4NYEEdbwoS-H206S2in7mxqoa^V3V-v$W_6s+*c*83|;BHGI>Sh z3f~o}%cGb3FHc_o^StLJH%2!4Hl{X2H~2TC&yAfMI5)iBw?4Hl zy3W5Yy*9QsuvSyO=`Kfu)dH#9nmRL)mMQDlpfYJe8dKh=*Y8bxVxE8}+~8|S)ko|7_364;U7${= zi`NEg-L;9DP>r`HSskhNRi~<=RsO1UWvnt#DOAQQf)(zHM0u#(TTbsTmc>hhrS8&1 zNvOnIk}QrC`-)TUsN3&OyJD_@OK`=Df<^A4gfryyI+Kow!{4H<6|2Nyl zEW_s9{D0p-&&yMc9W0IcJdTmo{DN0Ze@ic%m}x7WUISovV+I~_icY)JZdv8rN9s(a ztKGSu?$Zc*n5({YSLrBQ_ScgI;%;WYOaA4f`_rwdIY^7z@Cu8 zG&x&Hg>@8WHYpNy9^iK^bO)KRJ3uLka%EmJZspGNYGY=cZY$z+yn+lAEdK|O#M6< zv=yD8lCx7Ra(=*(oNkbXSxJH-jpRp4N#zl@IQw~`y>!)#E)y+?AK8GnDA?EKxTKH) zq~1|QN)ctwgE9}2LKMt6vX1B1LsBr(*IAuOL4dAM1SvbK1 z1^?s~D;V#Pz^7%ehn)M!ldPuKvWn+cC8g@W$=jDCZ*m>5kya=}Fh`wDT*^UbOO6yd ze@Idh+sN?j%r~{8*iR({$vlW;Wum0wt%?dd^K?>l7*}>tbYGOCi}I4PkGMs#6DhqS z=@n2#z?1AIHOv(9E-9oUsiZ=SlWGfv-|sw}N%(rc-uIH^S=Q3Vla0)SzR-I=RV2`W z+A-U*%26c?mNG^{F29~045HU^*jJ?}5AtBVMWJX~$aIgxzyniS5sVT`u?Czra<-8( zQ7*^L-DO5Y6A-Q#Qf$W#gk19+L6j!@a0vFJ`VF*gFRCSJY*=SMM;p_KGbHpy~!0x zNl`>hd4@T(p_MQa^}-kKCmWiQ=V>jGVEKUFRT~2DGXu zf#_N7+zkuJWtbEjW}{^z-y#hR3@r}wz^Ot1CYNA4MO4Me-AH+2R}^g%Ig}JoR2FsY zSO>R4BWg&f&7uhRQ>n&KA)^7MkRM2DCb@Xv&$ic5?Wp12a>Eh?c|j0F>7W3ltU!Vd z3#f5I+-MVsp{%;)B)z5)AW{Nrunb{XNIWhi=@M~RdUtXKC@!o}7^HTUc;fM)y+pfj zCpHgInyJMhk5=+%LdPfbg5?Bc2X{4qKNKlyGqXOh)?h*_h$4jEpIUB;$qSMFr1l|l z;uLXftbUYXm4PB9SKdk?wb*hXtGx~n_lD=*3>bS+KTWPC1R#C6cQW%;42l;6xfbVC zZY`HptZ0~cPe~pHGMITPXOk*4l*=_AQDV#&{^ujjfHsOtXrm z8k5w6?xmU$MNVZ39B4&nTW|thtFf6xp;4B`N*HaS$Vpu(*05@@Mr2YBdUzqljuP3n zaNnq$G+N_yXPN+>L^C4Ks~w~po{KGr5;0A@;_?w5_m9V9t-Lc=4&C{ff`Z}ES!y}K zJ#}Y1fRVIl!gIA{L?kIgxx($S>E^Ig-z!y1s&5pGvVuDrD9}`FUpaW=L|Q9)NA3fA zVU#tff3g=_rnaCH-G?fh;hL8m)HYHOD{=-|H3JENfe1piLEV#wBAGT3xkR3tuv%w0 zNbXTm6Qdw04P~T+f!80>55Z{wN~xgn6}X@pYU-lU<_-1Gml_a^Xh998~!b@xa!y4*98CCiqN8Q=0L`HCIK_Q+Rk$BrdC_a%*G z*;Z`Jx*QUY&=Yb85)BCut{{aZ5RPCGAOQkMoZ$)<_qi*v9ARO1r9JuYF8Kex)m<~y z(>=26Bn#nJJ)e5r?_1S%ysECMSJ&{Y5q$`L=XnG|-eQUNa!08e$0h%SD8eOno{8^# zHbI8m3{9q3nwU;S!$SQ+>PA*M>BX#Ssa<|}LNmGUf=~Z$=*5oT#(o?5&B(86e;N73 z;LlS(tNYo|Pey*6`tisQ2Y*oe{krd^P7i&j?}ednCB7N?=HT;VUrTbJ}wqpV2aeso z_TM^4qfLFU#kf-6P0^EMog*juj@R8db~tgc?m(h3a(%E* zB(VeQDu!r0rDJn!bAP;VQ(|NPMIGzw*43^aT-i}uyR3i7*rG_awxDC)sU6m~`na`W zc-`o#ftvbdy^G@un&ynos;L?-A1$pndyASv!+EsBo>f(@yM7+&|6M}=r#?Ar+D!Y+ z?JL;3nQdd*wvOOd%8nGN=BQ-~CatDYg_3M5%zR`Z#jTKQDc*jyJC;+~W>$;J{RyXG z3`V!GdFUro(InUC#o`&7o!##7s?&M9s433op*&I@N)C91#JkjJqEWNjF__#_$JRK{ z0eY^c;!6(DmfAfY`Ve@T(O4aAMYo?zDRJ{0YjTLz*!~W~6vO4{v(KX-Y)zGaO5BGC z`5@kMJjz2P?YQG}OOGQEya3IWTUw0Z#kPJA?Ow#pJWXOjFrxdW1Axd$?IBNgIDtiY zmgwWkoGe#NdV#ib2Lk_*zE3Zu80@Oz=FrTtIA@_tMp!pO1w3ctsVOh__#sIDYfA%F;9Gz1myR z2^1Bal);5$S(TBR?1xBM37mM6;IsoCU&(Jda2+3VCM}t|J1yueOGg~p&4`Fhfc#sR zk)nX}30|G?Nx+r8o7oII>KRKOhupz9Hm)!T%e*fu)*vyEr@2 z6L^_ClRq|tN}iB>c5!hM!}AdRSe_Y{02DUM@`f?W`T^byaUgG0D=!8fSFQ4ekQg1_geGBZ#59CR_E zd%@uj%DDz-sHcQ17u(8IjC)o9*K&di0odc^G#KFHMG-kzE_=ZU$nFM>7eS5O$K)V& z0CGPnL|^i`^kU?mLvFzokgr)eGhQ@{sZ39-YalYOgx**zmxW0HvcJzl=4yH6e3oS} zjjAE3f#xIrTzkjN5FCpBKFKauZtE0OwVYKI}-uyec^m5_tWn@=oF02&89S9qPT{XBbwReP8XC!tt>`ZRc;*qtn)!Ne3!l5~JvudUePU)|xD<3LLl-5QP z=1@tbq^>Ag7zx$o)zaMCh6fjXYCh@zM|4NwcW#%}Z{|-0BzU{NMOBdLyQJH0E>@?; zrC}_}F|_-(B3Vc;ucBOphHqzX5g`}cN`O7rl}D`Td6GL{PcvbP!jMmI2?bm#BSF9` zD7$W@;Aq~RjNR=oCW{4_i9khfw+g6pXyBbkz69@~@pY!!or)s_*lt##(W68bI^&4> z)JchC8bP;Ypl;*}Do8I@dxJ6vuELli&6@Hk=>SA>^T5dUMhE~Bi8RciY@r!mE{EI! z7tkw9y#WUZo^dbv;0#bm(k$!UobKfj?CM{S*D6e=_o$XbR$}l)B%++)8QzLDa+a>H z_l;6?V&&Sm41lK>%f(nu$@BJ9F+ntqXEtew+}%`iH?V30myFiCKE`tRmS@=xN-n07FaJq1)IkR-fPX(%cBPZ6n7idEqpqJ_&p16< zo>Zz=yd_|AE~j$!AIas&uX|jY%ds67xwM6IIh8uBQn3$`bN`-muKtQaZ=^r{d@yqG zc>rWl1_0REoZV)IU?sPJljs|yiPp3Ao#!}HJU-*Ol(O-@{V)aavJ4y=wFKKBR7%h(8CP4d-eSTKTKi)T!Ygfy;?8GCvXArw;+B;uXv?0919OWQYvC$`EPmI04|9#rKQ}3*Os4tc3 z8KhMLsW-w+Nt{J;(xkI)W^ z{*822!ur~E$qPEx#8yXEC03+rwVH-yLyKdy24HMna&BZ!YSze%j_Gw%Ybz5|8Y)I6 zH$?i(+DUcA{e^V}BY9(iA)5bx=qIZdE+G9MtK|7re=)!15ye{PGFnBC>wQ?KYZVsK z66o2qX6$F2tuSc0JFc5JJ0%vqm~Yqb;cP5_co&P3<4@Qut#vnW@{)nQfdIWm42G-dcSTJkgI64C> zK>{H8AlUk66oM3kU~`{=y?rDjBG}nS zX(xhxeU!aKu&vL)u08{s`V4I9Gq9)6z@9z>Tlx&_=rgdP&%lO01N-?59AaeP5F-Qo z`3!95GjM*9f$e+-HuD)cy2!xMMFuwW8Q9BbV8fn){dxwD4>E9kkb(Vr2Da-N*sf<_ zx1NDRgN!H$&I=-OGx`P$4a5KmfM9jrHmd?l=twq1u)fZ~;yV%$5iFlGu<(wb2Wdp{ zq}34NE8h5$KP=}mu)@y30yhJTXpIsO6QmRbYjlkmh;f=o9!LR9)oN7R^BBG5FF+lP_f*=JTMIc(3lBQ$et+o{BpW?82t9 zOawL3K9dsK4$|*R~b0E%D~Z81~w`i zIF!o3Mr8vVm5tdTY?uhPCmYzFY~XY$1E)(FK@glSW#Duu0~?SHY(O?*AUbj>A0!BZ zqeiz`Q;Ncr*kTZ@=rbmPm>^*gEWR_aV9&t9O#>^|3@r6Cu&mF(QZ)mM9u2IX!3-P-X5c_D0|$Z`I1tRhfnWv>1T%0Tn1KVq44j)~;M^<&=VloJp6pm2iX`@Z zQRyKP0x19~1StY31}OoV1Y&~VL|3XDh~Pw5sv(HrL{}Ad^ALK`KC|fK-A^1(^Cqyl6L zNF~TrkZB-QAk#r+fXoD$1rh~`fy@S(12PvxixSa643Gdw9!Ne&5Tq2O3}iA$IYfqJtP90gyb9e2^drPRlR~Kng*MK#D<1KyXTiVS9Hatd3P>f$RFG*PRUp$rW`N8DnFSIB ziGi>lA{vMeVt@od@<8%If*>J~0uY>vVHANBgOq^G=4>xmkVzmWNEig?Qy8TnWgwG5 z%0X~Gg)s%B5@agKG>|Hg=^!&eaAF^oA*wn{Kqi5hAYqUQNGZrPD)QT`+1MMh&6=a3 z65#tt_+|(#Oy7eJk_VCx5(Ei>6o3?hRMZfe4KfErw}@1Y62SpB1`e<>CV`Y9&1E1s zy3Z&F!O?vNj_xyph{0@Is5&2RMSzNZ_W)}HSFcp|-%{}kWJ zKlrhZkHtPV^i=Yx+NVZ7n)+xR-^<_d5$z-WA5MHY^5MY`b9sKF_b= z1KJ1rpGZ6rd1CPK`p1VKOFdTi*x38~_>TVmM-z`m9v$rK=!^9Y(VqTVTFIPxU)}r0 z9_f3e;U%8v*YJ?$+SfmnN~UU4BR#2}x}LEI`W|R_KzpG7{>1%}`v>3B@s`+IhTfcf zbM2c)?n~WQci-5(efKuptKHjwPvV{k?d|WlJ9hWbUCFy@?;5!?b!Xk3V|Vo3(Qt=$ zNB`}K+atFRzNzC)u{RCfmb|U@wvl8iS(hBM`m6>^v-;ndcw^*^gD>%HzrpT~?pXIw zSMnw9@lUqawvHT09jQAqcDV0w!(r`k|DnX8$f3cOj+R)<(81)v+Jhs_sph)ou>*Yv z8V+a&`V)ynBr(|3(G+VMYD_lPHV)j-aYO8eq3e^^*Iqy3obuPlPx(9LobuOkb?oY) ztCCmMlE#?2vhK>UEBdZzxI(+4|MJA;k;?}!>$og-+0g#v{@VQ``%?Sr_Kh|4H8eD6 z4gK|r`bhoY-ukod_1DhhtiO@ER9#)&SiCRZ5ZB`Un-ZHMn+7*_Y>aIj+K@bt^ZpX6 zBdZ5j)vwZ4^{-5EgP8Ic)-(>tce zrk|=xR7I)=r*%w=O&gk;oLW0|q%u`mS2;GNZ%V@yjppJL6_JX;@{aP@IiLMkK%Ga zKNT1-PV2)O{i7ede&)vg3rYX~v%wX4#@cO-9(#ieN&iO^@^|$76X@_*bcMN7doCZU z*%(>fXIt?dE_|W_4Kv<9Vq5S{@Yu~ui!h+_{tJ0~hi&C-?dDeD@GidT{xRDMBTqZ9 zOO4*D?A=L!z{l7RZ7XNf54WPdBIrg2C}y;Eg+u5h=JCDBoQ3LcqVt!B5lB1gMtD2R z!-TuNw+21MJieEazkz;a9^bOhS@aZ5bbNy8%?5-7X&n`}MsG5Yc9%Q*BBxUdX%iXk zli;?zPYt>8jWrxX|Jp?V+C=}_ME}}E|Jp?V+C=}_ME}}E|Jp?V+C=}_ME}}E|Jp?V z+C=}_ME}}E|Jp?V+C;C~gz{pdX$?8E+vr^e*Eq37FS8)VQWmWf&23z^Q=RCAcC? zuK1=>{$|!TUYvht&}1*BYV5c`hBL_*pjg$&Q8r56miG{f^>E$zdJ^S|r9jL*K`Q>PlPS?sZ~`{tlIN+7V|v!E5OGm{6!pC{!jCDiaEo z35CjpLS;gsGG~LZ(?p<9nNX-qj9Qo&wV>~U2u3aFYaoJA3;G6#VAO)jI}wapP@Q6RMgC zRn0`d)hwwYSvp&zd5UKdU}{tlXj3%bw#-o-is%Ze?uG!t5y2`$ZpmS#drGqrjm(9%q3X=VTf zTAB$h&4iX_LQ6BDrJ2yuOlWB)v@{c1nh7n{&5l{q_!SknXvgG4~k zl`zXdCWGkk#Q-TDB@zo$N}Mh8+>5drLWAUzyyctasb4XR90kw1O`aSwdN1Te+<+hL z+)s@j`Hpzb>BJS-)n&Mb-0&^$woRBKgXuon>dpb^rzUh;X@@(811bAr+(7^iFdoC} zTia8N%$WH-JO#ARiMyLctQiHFZIK1v`_3(90GkOS?|kQ0&|OW;qL?wVr|hK7h1?

h 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 z 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Δb;SkD>twV)3?1_siNa5tM9^|Fi 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Ⓢ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 UYhbYk7HeR!2L9XEKwZuMUqiGpUH||9 literal 0 HcmV?d00001 diff --git a/snake_branches/3.50_2dsll_lguide/VCProj/bsr_trunk.sln b/snake_branches/3.50_2dsll_lguide/VCProj/bsr_trunk.sln new file mode 100644 index 0000000..520f84d --- /dev/null +++ b/snake_branches/3.50_2dsll_lguide/VCProj/bsr_trunk.sln @@ -0,0 +1,20 @@ + +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual C++ Express 2010 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "bsr_trunk", "bsr_trunk.vcxproj", "{9DF31AC3-BD19-4158-BD6F-9CFE64AEE5D2}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Release|Win32 = Release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {9DF31AC3-BD19-4158-BD6F-9CFE64AEE5D2}.Debug|Win32.ActiveCfg = Debug|Win32 + {9DF31AC3-BD19-4158-BD6F-9CFE64AEE5D2}.Debug|Win32.Build.0 = Debug|Win32 + {9DF31AC3-BD19-4158-BD6F-9CFE64AEE5D2}.Release|Win32.ActiveCfg = Release|Win32 + {9DF31AC3-BD19-4158-BD6F-9CFE64AEE5D2}.Release|Win32.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/snake_branches/3.50_2dsll_lguide/VCProj/bsr_trunk.sln.old b/snake_branches/3.50_2dsll_lguide/VCProj/bsr_trunk.sln.old new file mode 100644 index 0000000..2881d87 --- /dev/null +++ b/snake_branches/3.50_2dsll_lguide/VCProj/bsr_trunk.sln.old @@ -0,0 +1,20 @@ + +Microsoft Visual Studio Solution File, Format Version 10.00 +# Visual C++ Express 2008 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "bsr_trunk", "bsr_trunk.vcproj", "{9DF31AC3-BD19-4158-BD6F-9CFE64AEE5D2}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Release|Win32 = Release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {9DF31AC3-BD19-4158-BD6F-9CFE64AEE5D2}.Debug|Win32.ActiveCfg = Debug|Win32 + {9DF31AC3-BD19-4158-BD6F-9CFE64AEE5D2}.Debug|Win32.Build.0 = Debug|Win32 + {9DF31AC3-BD19-4158-BD6F-9CFE64AEE5D2}.Release|Win32.ActiveCfg = Release|Win32 + {9DF31AC3-BD19-4158-BD6F-9CFE64AEE5D2}.Release|Win32.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/snake_branches/3.50_2dsll_lguide/VCProj/bsr_trunk.suo b/snake_branches/3.50_2dsll_lguide/VCProj/bsr_trunk.suo new file mode 100644 index 0000000000000000000000000000000000000000..7e4129660f38ec8aad70b6f3d661a962606e2222 GIT binary patch literal 85504 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 literal 0 HcmV?d00001 diff --git a/snake_branches/3.50_2dsll_lguide/VCProj/bsr_trunk.suo.old b/snake_branches/3.50_2dsll_lguide/VCProj/bsr_trunk.suo.old new file mode 100644 index 0000000000000000000000000000000000000000..63c7d4933d79ca0accc71ed0f4a53a79cefc3493 GIT binary patch literal 45056 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 literal 0 HcmV?d00001 diff --git a/snake_branches/3.50_2dsll_lguide/VCProj/bsr_trunk.vcproj b/snake_branches/3.50_2dsll_lguide/VCProj/bsr_trunk.vcproj new file mode 100644 index 0000000..1a6531b --- /dev/null +++ b/snake_branches/3.50_2dsll_lguide/VCProj/bsr_trunk.vcproj @@ -0,0 +1,594 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/snake_branches/3.50_2dsll_lguide/VCProj/bsr_trunk.vcproj.NCL.N2232.user b/snake_branches/3.50_2dsll_lguide/VCProj/bsr_trunk.vcproj.NCL.N2232.user new file mode 100644 index 0000000..257e4e7 --- /dev/null +++ b/snake_branches/3.50_2dsll_lguide/VCProj/bsr_trunk.vcproj.NCL.N2232.user @@ -0,0 +1,65 @@ + + + + + + + + + + + diff --git a/snake_branches/3.50_2dsll_lguide/VCProj/bsr_trunk.vcxproj b/snake_branches/3.50_2dsll_lguide/VCProj/bsr_trunk.vcxproj new file mode 100644 index 0000000..a4fc5a6 --- /dev/null +++ b/snake_branches/3.50_2dsll_lguide/VCProj/bsr_trunk.vcxproj @@ -0,0 +1,162 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {9DF31AC3-BD19-4158-BD6F-9CFE64AEE5D2} + bsr_trunk + arr_trunk + + + + Application + MultiByte + true + + + Application + MultiByte + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + nmake -f yav_mcu_bsr.mak + + + + $(NMakePreprocessorDefinitions) + $(NMakeIncludeSearchPath) + $(NMakeForcedIncludes) + $(NMakeAssemblySearchPath) + $(NMakeForcedUsingAssemblies) + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r;$(IncludePath) + + + + MaxSpeed + true + MultiThreadedDLL + true + Level3 + ProgramDatabase + + + true + true + true + MachineX86 + + + + + _MBCS;%(PreprocessorDefinitions); + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/snake_branches/3.50_2dsll_lguide/VCProj/bsr_trunk.vcxproj.filters b/snake_branches/3.50_2dsll_lguide/VCProj/bsr_trunk.vcxproj.filters new file mode 100644 index 0000000..d168232 --- /dev/null +++ b/snake_branches/3.50_2dsll_lguide/VCProj/bsr_trunk.vcxproj.filters @@ -0,0 +1,258 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav + + + {4e2142a2-478d-4e47-ab3f-7ae7d1e531bd} + + + {3bd01c87-17d0-4cf4-93a8-fb6bde3060a4} + + + + + + ソース ファイル\renge + + + ソース ファイル\renge + + + + + ソース ファイル + + + ソース ファイル + + + ソース ファイル + + + ソース ファイル + + + ソース ファイル + + + ソース ファイル + + + ソース ファイル + + + ソース ファイル + + + ソース ファイル + + + ソース ファイル + + + ソース ファイル + + + ソース ファイル + + + ソース ファイル + + + ソース ファイル + + + ソース ファイル + + + ソース ファイル + + + ソース ファイル + + + ソース ファイル + + + ソース ファイル + + + ソース ファイル + + + ソース ファイル + + + ソース ファイル + + + ソース ファイル + + + ソース ファイル + + + ソース ファイル + + + ソース ファイル + + + ソース ファイル + + + ソース ファイル + + + ソース ファイル + + + ソース ファイル + + + ソース ファイル + + + ソース ファイル + + + ソース ファイル\renge + + + ヘッダー ファイル\sim + + + ヘッダー ファイル\sim + + + ソース ファイル + + + + + ヘッダー ファイル + + + ヘッダー ファイル + + + ヘッダー ファイル + + + ヘッダー ファイル + + + ヘッダー ファイル + + + ヘッダー ファイル + + + ヘッダー ファイル + + + ヘッダー ファイル + + + ヘッダー ファイル + + + ヘッダー ファイル + + + ヘッダー ファイル + + + ヘッダー ファイル + + + ヘッダー ファイル + + + ヘッダー ファイル + + + ヘッダー ファイル + + + ヘッダー ファイル + + + ヘッダー ファイル + + + ヘッダー ファイル + + + ヘッダー ファイル + + + ヘッダー ファイル + + + ヘッダー ファイル + + + ヘッダー ファイル + + + ヘッダー ファイル + + + ヘッダー ファイル + + + ヘッダー ファイル + + + ヘッダー ファイル + + + ヘッダー ファイル + + + ヘッダー ファイル + + + ヘッダー ファイル + + + ヘッダー ファイル + + + ヘッダー ファイル + + + ヘッダー ファイル + + + ソース ファイル\renge + + + ソース ファイル\renge + + + ソース ファイル\renge + + + ソース ファイル\renge + + + ヘッダー ファイル\sim + + + ヘッダー ファイル\sim + + + \ No newline at end of file diff --git a/snake_branches/3.50_2dsll_lguide/VCProj/bsr_trunk.vcxproj.user b/snake_branches/3.50_2dsll_lguide/VCProj/bsr_trunk.vcxproj.user new file mode 100644 index 0000000..695b5c7 --- /dev/null +++ b/snake_branches/3.50_2dsll_lguide/VCProj/bsr_trunk.vcxproj.user @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/snake_branches/3.50_2dsll_lguide/WDT.c b/snake_branches/3.50_2dsll_lguide/WDT.c new file mode 100644 index 0000000..ed3daf3 --- /dev/null +++ b/snake_branches/3.50_2dsll_lguide/WDT.c @@ -0,0 +1,12 @@ +/* ======================================================== + wdt + + $Id$ + ======================================================== */ +#include "incs_loader.h" + +/* + + gAwb_Ƀ}N̂݁B + +*/ diff --git a/snake_branches/3.50_2dsll_lguide/WDT.h b/snake_branches/3.50_2dsll_lguide/WDT.h new file mode 100644 index 0000000..2e28e9d --- /dev/null +++ b/snake_branches/3.50_2dsll_lguide/WDT.h @@ -0,0 +1,20 @@ +#ifndef _WDT_ +#define _WDT_ + + + +//========================================================= +#define WDT_RESTART_MAGIC 0xAC + + + +//========================================================= +// EHb`hbO^C}̃X^[g +// void WDT_Restart( void ); +#define WDT_Restart() WDTE = WDT_RESTART_MAGIC + +// KlȊOƗOŃZbg +#define mcu_wdt_reset WDTE = 0x0 + + +#endif diff --git a/snake_branches/3.50_2dsll_lguide/accero.c b/snake_branches/3.50_2dsll_lguide/accero.c new file mode 100644 index 0000000..aa584ec --- /dev/null +++ b/snake_branches/3.50_2dsll_lguide/accero.c @@ -0,0 +1,274 @@ +/* ======================================================== +@xZT֌W +Ef[^XVŃf[^zグ背WX^XVACPUɊ荞 +EtOĂΕJEg +ExZT荞݂^XNo^ĉBiI2C̋Ȃǂ̂Łj + + $Id: accero.c 418 2011-09-22 01:35:37Z n2232 $ + ======================================================== */ +#ifndef _WIN32 + +#pragma SFR +#pragma NOP +#pragma HALT +#pragma STOP +#pragma ROT +// rorb, rolb, rorw, rolw +#pragma MUL +#pragma BCD + +#endif + +#ifndef _WIN32 + +#pragma interrupt INTP23 intp23_ACC_ready RB3 // xZTAf[^ + +#endif + +#include "incs.h" +#include "accero.h" +#include "i2c_mcu.h" + + +#ifndef _WIN32 +#include +#endif +// ======================================================== +// WX^ +#define ACC_REG_WHOAMI 0x0F +#define ACC_REG_CTRL1 0x20 +#define ACC_REG_CTRL5 0x24 +#define ACC_REG_X 0x28 + +#define ACC_REG_FLG_BURST_ACCESS 0x80 + +// rbgʒu +#define ACC_bP_PM0 5 +#define ACC_bP_DR0 3 + +// rbgݒl +#define ACC_BITS_PM_PDN 0 +#define ACC_BITS_PM_NORM 1 +#define ACC_BITS_PM_LP0R5 2 +#define ACC_BITS_PM_LP1 3 +#define ACC_BITS_PM_LP2 4 +#define ACC_BITS_PM_LP5 5 +#define ACC_BITS_PM_LP10 6 + +#define ACC_BITS_DR_50Hz 0 +#define ACC_BITS_DR_100Hz 1 +#define ACC_BITS_DR_400Hz 2 +#define ACC_BITS_DR_1000Hz 3 + +#define ACC_BITS_ALL_AXIS_ON 7 + + +#define VREG_BITMASK_ACC_CONF_ACQ ( 1 << 0 ) +#define VREG_BITMASK_ACC_CONF_HOSU ( 1 << 1 ) + + + +// ======================================================== +#define ACC_RAW_DATA_SIZE 6 + + +// ======================================================== +static u8 acc_retry_count; // xZTǂݏoAG[ƂgCB񐔐 + + + +// ======================================================== +task_status tsk_soft_int( ); + + + +/********************************************//** +@E荞݂mFăf[^zグAWX^ɏo܂ + + E{ł΃R[obN֐o^Ă΂ƂȂ̂łA + I2CgpHƂlƎł͂܂łłȂ̂łB + + EvƂł + ***********************************************/ +task_status_immed tski_cbk_accero( ) +{ // i^jisro^܂ + u8 acc_dat_buff[ ACC_RAW_DATA_SIZE ]; + + // xZTf[^WX^ւ̔f + if( iic_mcu_read( IIC_SLA_ACCEL, ( ACC_REG_X | ACC_REG_FLG_BURST_ACCESS ), ACC_RAW_DATA_SIZE, acc_dat_buff ) + != ERR_SUCCESS ) + { + // SLA NAK // + if( acc_retry_count < 4 ) + { + acc_retry_count ++; + // gC + return( TSKI_CONTINUE ); + } + else + { + // xZTُɂȂ̂Ŏ~߂ + vreg_stop_acc; + tski_acc_setup(); + vreg_set_acc_error; + return ( TSKI_FINISHED ); // ^XN̍폜͕Kv + } + } + else + { + // 펞pX // + DI_wt_chk(); + memcpy( &vreg_ctr[VREG_C_ACC_XL], acc_dat_buff, ACC_RAW_DATA_SIZE ); + EI(); + + acc_retry_count = 0; + // xXV荞 + if( is_acc_on && ( system_status.pwr_state == ON )) + { + set_irq( VREG_C_IRQ1, REG_BIT_ACC_DAT_RDY ); + // S~f[^̃Jǂ + if( ACC_VALID ) + { + u8 temp[ACC_RAW_DATA_SIZE]; + iic_mcu_read( IIC_SLA_ACCEL, ( ACC_REG_X | ACC_REG_FLG_BURST_ACCESS ), ACC_RAW_DATA_SIZE, temp ); + } + } + if( (( system_status.pwr_state == ON )||( system_status.pwr_state == SLEEP )) + &&( is_pedo_on ) + ) + { + pedometer(); // v + } + } + return ( TSKI_FINISHED ); +} + + + + + +/********************************************//** +@xZT߃ANZX@[h + ***********************************************/ +task_status_immed tski_acc_read( ) +{ + vreg_ctr[VREG_C_ACC_W_BUF] = iic_mcu_read_a_byte( IIC_SLA_ACCEL, vreg_ctr[VREG_C_ACC_R_ADRS] ); + set_irq( VREG_C_IRQ1, REG_BIT_ACC_ACK ); + return ( TSKI_FINISHED ); +} + + + +/********************************************//** +@xZT߃ANZX@Cg + ***********************************************/ +task_status_immed tski_acc_write( ) +{ + iic_mcu_write_a_byte( IIC_SLA_ACCEL, vreg_ctr[VREG_C_ACC_W_ADRS], vreg_ctr[VREG_C_ACC_W_BUF] ); + set_irq( VREG_C_IRQ1, REG_BIT_ACC_ACK ); + return ( TSKI_FINISHED ); +} + + + +/********************************************//** +@xZT̐ݒ + ***********************************************/ +task_status_immed tski_acc_setup( ) +{ + + // x on/offݒ肷 + u8 str_send_buf[4]; + + str_send_buf[1] = 0x00; // ctrl2 HPF:normal, filterd, HPF for IRQ : dis/dis, HPF coeff:norm + + // sŝ߁ATSƂȊOiHႢjʂĐݒ + if( system_status.model == MODEL_TS_BOARD ) + { + str_send_buf[2] = bits8(0,0,0,0, 0,0,1,0); + } + else + { + str_send_buf[2] = bits8(0,0,0,1, 0,0,0,0); + } + str_send_buf[3] = 0x80; // ctrl3 block update:enable, MSB first, scale: +-2G(default), selftest: dis + + { + u8 acc_setting_sent = ( vreg_ctr[VREG_C_ACC_CONFIG] & ( VREG_BITMASK_ACC_CONF_HOSU | VREG_BITMASK_ACC_CONF_ACQ )); + + if( acc_setting_sent == 0 ) + { + // S~ + PMK23 = 1; + str_send_buf[0] = + ( ACC_BITS_PM_PDN << ACC_bP_PM0 | 0 << ACC_bP_DR0 | ACC_BITS_ALL_AXIS_ON ); + } + else + { + // on 100Hz 荞 + PMK23 = 0; + str_send_buf[0] = + ( ACC_BITS_PM_NORM << ACC_bP_PM0 + | ACC_BITS_DR_100Hz << ACC_bP_DR0 + | ACC_BITS_ALL_AXIS_ON ); + } + + // ݌AʐMłtOXV + if( iic_mcu_write( IIC_SLA_ACCEL, ( ACC_REG_CTRL1 | ACC_REG_FLG_BURST_ACCESS ), 4, str_send_buf ) == I2C_ERR_NOSLAVE ) + { + // ZTB^XN͍폜ȂĂ͂ȂȂB + vreg_set_acc_error; + return ( TSKI_FINISHED ); + // ܂ + } + // else + + // ZTݒ萬 pX + vreg_ctr[ VREG_C_STATUS_1 ] &= ~REG_BIT_ACCERO_ERR; + acc_retry_count = 0; + + // ÕS~L΃Jǂ + if( ACC_VALID ) + { + if( system_status.pwr_state == ON ) + { + u8 temp[ACC_RAW_DATA_SIZE]; + iic_mcu_read( IIC_SLA_ACCEL, ( ACC_REG_X | ACC_REG_FLG_BURST_ACCESS ), 6, temp ); + } + } + + // ZTɏɂĂŒSoC܂Ă܂Ȃ + DI_wt_chk(); + if( acc_setting_sent != ( vreg_ctr[VREG_C_ACC_CONFIG] & ( VREG_BITMASK_ACC_CONF_HOSU | VREG_BITMASK_ACC_CONF_ACQ ))) + { + // DIԂ̂܂܋A + return ( TSKI_CONTINUE ); // ƊԂčēxɂ // Ƃ悢H + } + } + + // DIԂ̂܂܋A + return ( TSKI_FINISHED ); +} + + + +/********************************************//** + xZT荞 + + I2CgpȂ̂ŁAǂݏo^XN̓o^ŝ + ***********************************************/ +__interrupt void intp23_ACC_ready( ) +{ + EI(); + if( ( vreg_ctr[VREG_C_ACC_CONFIG] & ( VREG_BITMASK_ACC_CONF_HOSU | VREG_BITMASK_ACC_CONF_ACQ ) ) != 0x00 ) + { + // xZT on + if( ( system_status.pwr_state == ON ) || ( system_status.pwr_state == SLEEP ) ) + { +// if( ACC_VALID ) // mFsv + { + renge_task_immed_add( tski_cbk_accero ); + } + } + } +} diff --git a/snake_branches/3.50_2dsll_lguide/accero.h b/snake_branches/3.50_2dsll_lguide/accero.h new file mode 100644 index 0000000..fbf80d6 --- /dev/null +++ b/snake_branches/3.50_2dsll_lguide/accero.h @@ -0,0 +1,14 @@ +#ifndef _accero_ +#define _accero_ + + +#include "jhl_defs.h" +#include "pedometer.h" + + +/////////////////////////////////////////////////////////// +task_status_immed tski_cbk_accero( ); +task_status_immed tski_acc_setup( ); + + +#endif diff --git a/snake_branches/3.50_2dsll_lguide/adc.c b/snake_branches/3.50_2dsll_lguide/adc.c new file mode 100644 index 0000000..94920c7 --- /dev/null +++ b/snake_branches/3.50_2dsll_lguide/adc.c @@ -0,0 +1,475 @@ +/* ======================================================== + adc.c + + cJZ + nintendo + '09 Apr + $Id$ + ======================================================== */ +#include "incs.h" +#include "adc.h" +#include "pm.h" + +#include "led.h" + +#include "vreg_twl.h" +#include "i2c_mcu.h" + + +// ===================================================== // +static bit adc_updated; +static bit vol_changed_by_ctr; +bit vol_changed_by_twl; +static u8 vol_old; + +static u8 adc_raw_vol; +static u8 adc_raw_dep; + +u8 vol_polling; +u8 vol_level_twl; + +extern const u8 slider_to_codec[]; + + + +// ===================================================== // +typedef struct filter_work +{ + u8* value_used; + s8 diffs; // KIKAN̕΂ + s8 kikan; + u8 large_diff_count; +}filter_work; + + +static filter_work work_vr_3d = { + &vreg_ctr[ VREG_C_3D ] + // ͕̂slł悵Bconstɂ_ + }; + + +static u8 vol_data_ctr; +static u8 vol_data_ctr_tmp; +static filter_work work_vr_vol = { + &vol_data_ctr_tmp + // ͕̂slł悵Bconstɂ_ + }; + + +// twl 8iKvol̃jAl̋E +/* + twl32 -> 8 e[u + 0`1,`4,`8,`13,`18,`23,`28,31 + */ +static const u8 TWL_VOL_BOUNDARY[] = { + 1, 4, 8, 13, 18, 23, 28, 31 +}; + +// ===================================================== // +extern void nop8(); +static void adc_filter( u8 new_val, filter_work* work ); +static u8 adc_scaling( u8 ); +static void update_twl_vol( u8 sent_index ); + + + +// ===================================================== // +#define INTERVAL_TSK_ADC 15 + + + +/********************************************//** + ADCݒƁAJn + + ȉ̃s͎ɂőEĎ܂B + - BT_TEMP,_P + - ADIN1 + - VOL + + ***********************************************/ +void tsk_adc( ) +{ + if( adc_updated ) + { + adc_updated = false; + + // 3D ///////////////////////////////////////// + vreg_ctr[ VREG_C_3D ] = adc_raw_dep; // l + + // Volume ///////////////////////////////////// + { + vreg_ctr[ VREG_C_VOL_ADC_RAW ] = adc_raw_vol; + + adc_filter( adc_scaling( adc_raw_vol ), &work_vr_vol ); // ʂ*work_vr_volwvol_data_ctr ǂ݂ɂ... + vol_data_ctr = vol_data_ctr_tmp / 4; + + if( vol_old != vol_data_ctr ) + { + vol_changed_by_ctr = true; + vol_old = vol_data_ctr; + vol_polling = 3; +// renge_task_immed_add( tski_vol_update ); œo^ + } + } + + // obe /////////////////////////// + /* Ă΂܂ */ + } + + // YꂪƂȂ̂Ń|[O orz + if( vol_polling < 5 ) + { + renge_task_immed_add( tski_vol_update ); + vol_polling = (u8)(200 / SYS_INTERVAL_TICK) + 5; // 5/sec + } + vol_polling --; + + + ADCEN = 1; + ADM = bits8(0,0,0,0, 1,0,1,1); // ZNg[hAAfCLK/6 // + + ADPC = 0x06; // ADC|[g̃ZNg + ADS = ADC_SEL_3D; + nop8(); + ADCS = 1; // ADJnB // ܂Ł@@܂ł1us=8clkȏJ + + ADIF = 0; + ADMK = 0; +} + + + +/********************************************//** + vol݂̃XC_̈ʒuɋXV + ***********************************************/ +void vol_reset() +{ + vol_old = vol_data_ctr; + vreg_ctr[ VREG_C_SND_VOL ] = vol_data_ctr; // 64i +} + + +/********************************************//** +@VolXV܂B + + @Ȏɓo^܂B + + - [U[VolXC_𓮂 + - HorizonɋXVwꂽ@icodecZbgj + - TWLAvVol + ***********************************************/ +task_status_immed tski_vol_update() +{ + static u8 sent_index, sent_index_twl; + static bit last_modifyer_is_twl; // false = ctr + + if( !( system_status.pwr_state == ON ) || + ( system_status.pwr_state == SLEEP )){ + return( TSKI_FINISHED ); + } + + // ǂ̉ʂɂ́H // + if( vol_changed_by_ctr ) + { + // XC_ + vol_changed_by_ctr = false; + last_modifyer_is_twl = false; + sent_index = vol_data_ctr; + } + else if( vol_changed_by_twl ) + { + // TWLAv + vol_changed_by_twl = false; + last_modifyer_is_twl = true; + if( vreg_twl[ REG_TWL_INT_ADRS_VOL ] == 0 ) + { + sent_index_twl = 0; + } + else + { + sent_index_twl = vreg_twl[ REG_TWL_INT_ADRS_VOL ] *2 +1; + } + sent_index = sent_index_twl; + } + else + { + // force_slider0ɂƂ & ܂Ƃ + // XC_TWL̍ŌɃZbgZbg + if( last_modifyer_is_twl ) + { + sent_index = sent_index_twl; + } + else + { + sent_index = vol_data_ctr; + } + } + + // WX^̍XV // + vreg_ctr[ VREG_C_SND_VOL ] = sent_index; + + // twlXV + update_twl_vol( sent_index ); + + // codecɓ` + /// lł + iic_mcu_write_a_byte_codec( CODEC_REG_VOL, slider_to_codec[ sent_index ] ); + + // set_irq( VREG_C_IRQ0, REG_BIT_VR_SNDVOL_CHANGE ); // 荞ݔp~ + return( TSKI_FINISHED ); +} + + +/********************************************//** + TWL ։ʂʒmB + + iKႤ̂ŁÃPAs + ***********************************************/ +static void update_twl_vol( u8 sent_index ) +{ + // XP[O + if( sent_index == 0 ) + { + vreg_twl[ REG_TWL_INT_ADRS_VOL ] = 0; + } + else if( sent_index <= 4 ) + { + vreg_twl[ REG_TWL_INT_ADRS_VOL ] = 2; // P̓~bVOŐ + } + else + { + vreg_twl[ REG_TWL_INT_ADRS_VOL ] = sent_index/2 ; + } + + // 8iK̃xB@荞݂̂ɕKv + { + static u8 vol_twl_old; + + if( vol_twl_old != vreg_twl[ REG_TWL_INT_ADRS_VOL ] ) + { + // 8ixɕϊ + u8 new_level = 31; + u8 i; + + vol_twl_old = vreg_twl[ REG_TWL_INT_ADRS_VOL ]; + + for( i=0; i<=7; i++ ) + { + if( vreg_twl[ REG_TWL_INT_ADRS_VOL ] <= TWL_VOL_BOUNDARY[ i ] ) + { + new_level = i; + break; + } + } + vol_level_twl = new_level; + } + } +} + + + +/********************************************//** +@ADC isr + +@}`vNT̏Ԃ`FbNĂׂ֓]A + +@OŎ̃`lN + +@@ʂI~߂ + ***********************************************/ +__interrupt void int_adc( ) +{ + volatile u8 adc_data = ADCRH; + + switch ( ADS ) + { +/* + case ( ADC_SEL_AMB_BRIT ): + // ‹邳 // + vreg_ctr[ VREG_C_AMBIENT_BRIGHTNESS ] = adc_data; + break; +*/ + + case ( ADC_SEL_3D ): + // 3D{[ // + EI(); + adc_raw_dep = adc_data; + break; + + case ( ADC_SEL_VOL ): + // ʃXC_ // + EI(); + if( system_status.model == MODEL_TS_BOARD ) + { + adc_raw_vol = adc_data; + } + else + { + adc_raw_vol = 255 - adc_data; + } + + break; + + case ( ADC_SEL_BATT_TEMP ): + // obex // + EI(); +#ifdef _ENABLE_HAL_ + if( vreg_ctr[ VREG_C_HAL_OVW_TEMPERATURE ] == 0xFF ) // HAL +#else + if( 1 ) +#endif + { + raw_adc_temperature = adc_data; + } + else + { + raw_adc_temperature = vreg_ctr[ VREG_C_HAL_OVW_TEMPERATURE ]; + } + + if(// (( vreg_ctr[ VREG_C_STATUS_1 ] & REG_BIT_MGIC_ERR ) == 0 ) && + (( system_status.pwr_state == ON ) || + ( system_status.pwr_state == SLEEP ) + ) + ) + { + renge_task_immed_add( tski_BT_temp_update ); + } + break; + +/* Ă΂܂ + case ( ADC_SEL_BATT_DET ): + // obe[J[ // + break; +*/ + } + +// Ƃ܂Ƃȏ肻 + if( ADS < ADC_SEL_BATT_DET ) + { + ADS += 1; // ̃`l + } + else + { + ADCEN = 0; // ~߂Ă܂ + adc_updated = true; + } + ADIF = 0; // ȂƁAÕ`l̃f[^̊ŒɊ荞މ”\ +} + + + +/********************************************//** + adcWX^ǂݏoÂ܂ܕԒlɂB + + tsk_adcƋ邱ƂlĂ܂B + ***********************************************/ +u8 get_adc( u8 ch ) +{ + u8 temp; + + ADMK = 1; + ADIF = 0; + + ADCEN = 1; + ADM = bits8(0,0,0,0, 1,0,1,1); // ZNg[hAAfCLK/6 ///火 + + ADPC = 0x06; // ADC|[g̃ZNg + ADS = ch; + + nop8(); + + ADCS = 1; // ADJnB /// ܂Ł@ɁA1usȏJ + + ADIF = 0; + while( ADIF == 0 ){;} + temp = ADCRH; + ADCEN = 0; + + ADMK = 0; + return ( temp ); +} + + + + + +/********************************************//** + VR̉“͈͂lăXP[O + + Volp@g񂷂Ȃ炻̂Ƃǂɂ + ***********************************************/ +static u8 adc_scaling( u8 orig_val ) +{ + u16 temp; + + if( orig_val <= vreg_ctr[ VREG_C_VOL_CAL_MIN ] ) + { + return( 0 ); + } + if( orig_val >= vreg_ctr[ VREG_C_VOL_CAL_MAX ] ) + { + return( 255 ); + } + + temp = (u16)(( orig_val - vreg_ctr[ VREG_C_VOL_CAL_MIN ] ) * 256 ) / ( vreg_ctr[ VREG_C_VOL_CAL_MAX ] - vreg_ctr[ VREG_C_VOL_CAL_MIN ] ); + if( temp > 255 ) + { + temp = 255; + } + + return( (u8)( temp & 0xFF ) ); +} + + + + +/********************************************//** + qXeVX V2 + + ľܓIȓ܂ + ***********************************************/ +#define KIKAN 16 +static void adc_filter( u8 new_val, filter_work *work ) +{ + if( abs( new_val - *( work -> value_used )) > 2 ) + { + // 傫ꂽ + work -> large_diff_count ++; + if( work -> large_diff_count > 16 ) + { + *( work -> value_used ) = new_val; + work -> diffs = 0; + work -> kikan = KIKAN; + } + } + else + { + work -> large_diff_count = 0; + // ߏ̒lłAԂłς΂Ă炻Ɋ񂹂 + if( *( work -> value_used ) < new_val ) + { + work -> diffs ++; + } + else if( *( work -> value_used ) > new_val ) + { + work -> diffs --; + } + + if( --( work -> kikan ) == 0 ) + { + if( ( work -> diffs ) == KIKAN ) +// if( ( work -> diffs ) > (s8)( KIKAN * 0.8 ) ) + { + *( work -> value_used ) = *( work -> value_used ) + 1; + } + else if( ( work -> diffs ) == ( -1 * KIKAN ) ) +// else if( ( work -> diffs ) < (s8)( -1 * KIKAN * 0.8 ) ) + { + *( work -> value_used ) = *( work -> value_used ) - 1; + } + work -> diffs = 0; + work -> kikan = KIKAN; + } + } +} + diff --git a/snake_branches/3.50_2dsll_lguide/adc.h b/snake_branches/3.50_2dsll_lguide/adc.h new file mode 100644 index 0000000..6f4ad04 --- /dev/null +++ b/snake_branches/3.50_2dsll_lguide/adc.h @@ -0,0 +1,48 @@ +#ifndef __adc__ +#define __adc__ + +#include "jhl_defs.h" + +/////////////////////////////////////// +// ANI2 P22 +#define ADC_SEL_AMB_BRIT 0x02 + +/* +// ANI3 P23 +#define ADC_SEL_GYRO_YAW 0x03 +// ANI4 P24 +#define ADC_SEL_GYRO_PITCH 0x04 +// ANI5 P25 +#define ADC_SEL_GYRO_ROLL 0x05 +*/ + +// ANI6 P26 +#define ADC_SEL_3D 0x06 +// ANI7 P27 +#define ADC_SEL_VOL 0x07 + +// ANI8 P150 +#define ADC_SEL_BATT_TEMP 0x08 +// ANI9 P151 +#define ADC_SEL_BATT_DET 0x09 + + + +/////////////////////////////////////// +#define CODEC_REG_VOL 0x13 + + + +/////////////////////////////////////// +extern u8 vol_polling; +extern u8 vol_level_twl; + + + +/////////////////////////////////////// +u8 get_adc( u8 ch ); +void vol_reset(); + + + +#endif diff --git a/snake_branches/3.50_2dsll_lguide/batt_params.c b/snake_branches/3.50_2dsll_lguide/batt_params.c new file mode 100644 index 0000000..13bdb83 --- /dev/null +++ b/snake_branches/3.50_2dsll_lguide/batt_params.c @@ -0,0 +1,130 @@ +/* ======================================================== + eЃobe[p[^ + $Id: asdf$ + ======================================================== */ +#include "jhl_defs.h" + +#include "batt_params.h" + + +const bt_param_ bt_param[ /*_BT_PARAM_NUM_*/ ] = // drg񂷂̂ f~drp[^ +{ + // ctr //////////////////////////////////////////////// + // BT_PARAM_CTR_MAXELL + { + { + 0xAE, 0xF0, 0xB4, 0x30, 0xB7, 0x40, 0xBA, 0x30, + 0xBB, 0x50, 0xBB, 0xB0, 0xBC, 0x50, 0xBD, 0x10, + 0xBD, 0x60, 0xBD, 0xB0, 0xBF, 0xE0, 0xC2, 0xB0, + 0xC4, 0x20, 0xC7, 0xB0, 0xCA, 0xE0, 0xCE, 0x10, + 0x01, 0xF0, 0x14, 0x10, 0x14, 0x20, 0x06, 0x30, + 0x63, 0x90, 0x49, 0x00, 0x6E, 0x00, 0x77, 0x70, + 0x7B, 0x00, 0x19, 0x00, 0x19, 0x00, 0x17, 0xF0, + 0x1C, 0x60, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00 + }, + 2, // 2 = 19 bit mode + { 92, (u8)(-256* 0.79), (u8)(-256* 4.35) }, // @(u8)LXǧp[^̂܂܂̕ + 0xD800, // VXeƂĂ͗ǍDȓ + { 0xEA, 0xE8 } + }, + + // BT_PARAM_CTR_PANA + { + { + 0x8C, 0x30, 0x9C, 0x10, 0xA5, 0xE0, 0xB0, 0x40, + 0xB1, 0xC0, 0xB2, 0x00, 0xB2, 0x50, 0xB3, 0x10, + 0xB4, 0x90, 0xB6, 0x20, 0xB8, 0x60, 0xBA, 0x50, + 0xBF, 0xA0, 0xC6, 0xB0, 0xCE, 0x90, 0xD0, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x7B, 0x30, 0x68, 0x60, 0x20, 0x00, 0x17, 0x00, + 0x17, 0x30, 0x12, 0xF0, 0x0D, 0xE0, 0x07, 0xF0, + 0x07, 0x00, 0x09, 0x30, 0x01, 0xC0, 0x01, 0xC0 + }, + 1, + { 171, (u8)(-256* 1.00), (u8)(-256* 2.60) }, // @(u8)LXǧp[^̂܂܂̕ + 0xDA20, // VXeƂĂ͗ǍDȓ + { 0x69, 0x67 }, + }, + + // SPFL /////////////////////////////////////////////// + // BT_PARAM_SPFL_MAXELL + { + { + 0xA1, 0x20, 0xB7, 0x50, 0xB9, 0xD0, 0xBB, 0x00, + 0xBC, 0x30, 0xBC, 0x60, 0xBC, 0xA0, 0xBD, 0x10, + 0xBD, 0xC0, 0xBE, 0x70, 0xBF, 0xD0, 0xC2, 0xA0, + 0xC4, 0x00, 0xC8, 0x50, 0xCC, 0x80, 0xD0, 0xB0, + 0x01, 0xA0, 0x25, 0x10, 0x18, 0xB0, 0x17, 0xC0, + 0x95, 0x20, 0x6F, 0xE0, 0x7C, 0x60, 0x35, 0x10, + 0x35, 0x00, 0x37, 0xF0, 0x16, 0xF0, 0x1C, 0xA0, + 0x17, 0x30, 0x11, 0xD0, 0x11, 0xF0, 0x11, 0xF0 + }, + 2, + { 94, (-256* 0.35), (-256* 3.85) }, + 0xDAB0, + { 0xF5, 0xF3 } + }, + + // BT_PARAM_SPFL_PANA + { + { + 0x9C, 0xF0, 0xAD, 0x50, 0xAF, 0xB0, 0xB3, 0x00, + 0xB3, 0xE0, 0XB5, 0x60, 0XB6, 0x70, 0xB7, 0xA0, + 0xBA, 0x00, 0xBC, 0x00, 0xBE, 0x90, 0xC1, 0x60, + 0xC4, 0x00, 0xC7, 0x00, 0xCC, 0xA0, 0xD0, 0xA0, + 0x02, 0x00, 0x19, 0x10, 0x12, 0x00, 0x48, 0x10, + 0x25, 0x10, 0x41, 0xF0, 0x2F, 0xA0, 0x13, 0xF0, + 0x1C, 0xD0, 0x10, 0xD0, 0x0F, 0xA0, 0x11, 0x00, + 0x10, 0xE0, 0x0C, 0x10, 0x0C, 0x00, 0x0C, 0x00 + }, + 2, + { 113, (-256* 0.30), (-256* 2.25) }, + 0xDAA0, + { 0xE7, 0xE5 }, + }, + + // SNAKE ///////////////////////////////////////////// + // BT_PARAM_SNAKE_MAXELL + { + { + 0x9D, 0x80, 0xB7, 0xB0, 0xB8, 0xA0, 0xB9, 0xA0, + 0xBB, 0x40, 0xBC, 0x50, 0xBC, 0xA0, 0xBD, 0x00, + 0xBD, 0x90, 0xBF, 0x30, 0xC0, 0xE0, 0xC3, 0x30, + 0xC5, 0x40, 0xC7, 0x50, 0xCD, 0x40, 0xD0, 0xA0, + 0x01, 0x90, 0x35, 0x10, 0x2F, 0x30, 0x11, 0x00, + 0x29, 0x40, 0x88, 0x50, 0x71, 0xA0, 0x5F, 0xE0, + 0x32, 0xD0, 0x1C, 0xF0, 0x14, 0xF0, 0x1A, 0x80, + 0x1A, 0x80, 0x11, 0x10, 0x12, 0x00, 0x12, 0x00 + }, + 2, + { 86, (-256* 0.6), (-256* 3.675) }, // rcomp, r-hot, r-cold + 0xDAA0, // ocv + { 0xF5, 0xF3 } // compare max, min + }, + + // bt_PARAM_SNAKE_PANA 3ŁH130909XV + { + { + 0x9D, 0xD0, 0xA6, 0x20, 0xAC, 0xE0, 0xAE, 0x20, + 0xB0, 0x40, 0xB2, 0x10, 0xB3, 0xC0, 0xB5, 0x00, + 0xB6, 0x70, 0xB7, 0xD0, 0xB9, 0x20, 0xBC, 0x00, + 0xBE, 0xD0, 0xC4, 0x70, 0xCA, 0x40, 0xD0, 0xA0, + 0x02, 0x00, 0x02, 0x00, 0x24, 0x00, 0x14, 0x00, + 0x16, 0x00, 0x1A, 0x00, 0x38, 0xC0, 0x2D, 0xE0, + 0x29, 0xC0, 0x27, 0xE0, 0x0F, 0xE0, 0x11, 0xE0, + 0x0F, 0xE0, 0x0F, 0x40, 0x0C, 0x00, 0x0C, 0x00 + }, + 2, // 2:19bit 1:18bit + { 95, (-256* 0.85), (-256* 1.9) }, + 55968, + { 230, 228 }, + } + + + // FLOWER ///////////////////////////////////////////// + // BCTR̃obe[gB + + // CLOSER ///////////////////////////////////////////// + // BSPFL̃obe[gB +}; + diff --git a/snake_branches/3.50_2dsll_lguide/batt_params.h b/snake_branches/3.50_2dsll_lguide/batt_params.h new file mode 100644 index 0000000..6078eae --- /dev/null +++ b/snake_branches/3.50_2dsll_lguide/batt_params.h @@ -0,0 +1,64 @@ +#ifndef _bt_params_h_ +#define _bt_params_h_ + +/* + $Id: asdf$ +*/ + +#include "jhl_defs.h" +/* + dr CTR | SPFL | YBS + 0 ID = 0 maxell + 120 1 + 360 2 + 750 @ 3 + 1.3k@ 4 + 2.7k 5 pana + 8.2k@ 6 +*/ + + +#define BATT_PARAM_SIZE 64 + + +#define BT_PARAM_OFFSET_MAXELL 0 +#define BT_PARAM_OFFSET_PANA 1 + +typedef enum +{ + BT_PARAM_CTR_MAXELL = 0, + BT_PARAM_CTR_PANA, + BT_PARAM_SPFL_MAXELL, + BT_PARAM_SPFL_PANA, + BT_PARAM_SNAKE_MAXELL, + BT_PARAM_SNAKE_PANA, + BT_PARAM_FLOWER_MAXELL, + BT_PARAM_FLOWER_PANA, + BT_PARAM_CLOSER_MAXELL, + BT_PARAM_CLOSER_PANA, + _BT_PARAM_NUM_ +} BT_TYPE; + +typedef struct +{ + u8 rcomp; + s16 up,down; +} rcomp_; + +typedef struct +{ + u8 hi; + u8 low; +} verify_; + +typedef struct +{ + u8 mg_param[BATT_PARAM_SIZE]; + u8 v_scale; + rcomp_ rcomp; + u16 ocv; + verify_ verify; +} bt_param_; + + +#endif diff --git a/snake_branches/3.50_2dsll_lguide/bsr.hex b/snake_branches/3.50_2dsll_lguide/bsr.hex new file mode 100644 index 0000000..5600e6a --- /dev/null +++ b/snake_branches/3.50_2dsll_lguide/bsr.hex @@ -0,0 +1,1023 @@ +:02000000720D7F +:04001000C548C748D0 +:02001C00734A25 +:020024001A4B75 +:02002A00654B24 +:08003400924C354C8E4CD34E6A +:02004A00C948A3 +:02005A00034958 +:02006200914EBD +:06008000264D5F4DA94D65 +:0400C0007EFBFF04C0 +:0A00C4001B339499E033F240BFAA09 +:1000CE00C7C1FBF8FFCEABACC736F00071F4C6610A +:1000DE00D8710006F98EA89C018C015C10D1DD0A46 +:1000EE007110A6FB710006F9EF0B8C015C80D161DB +:1000FE00E8710006F98F06F931030EF6B1BBF66111 +:10010E004900DD05618900EFF5FD0802FD3101FDB5 +:10011E008901FD190AFD5009FD2E30FD552DEFA563 +:10012E00C0C6D7C7360000674C09DE3F318E04F6D5 +:10013E000FC1317B9EFDC411897267318E04F64F5B +:10014E0014896142DF03F6EF01E660610667318EC6 +:10015E00124900207267318E04F64F14896142DF16 +:10016E0003F6EF01E660610687EFBC40F84F3A6197 +:10017E00E88666D161E8FDBD06C6D751065B0C3137 +:10018E001A9F08F94008F90161F8CF08F9044008F0 +:10019E00F90361F8CF08F905D508F9DF06710009F2 +:1001AE00F9EF04710809F98F09F9310505CD370703 +:1001BE00EF03CD3705D908F9FDC4298F06F95CE3A5 +:1001CE009F06F951035B04318EE7240000DD1023F6 +:1001DE00DD0823DF0E712006F9D7713006F9D771CD +:1001EE004006F9D7717BFACEA010CEA180E5F300C0 +:1001FE00000000CEA408F5AAFFD78F06F931050836 +:10020E00CD0003CD030FEF08CD030EF690BFB40162 +:10021E00CD0408CD0508F521FFCE22E9CE23F8CE78 +:10022E0024F3CE25FACE26FCCE275FCE2EFCCF11A0 +:10023E0005F8CF120511CF350002CF370019CF5375 +:10024E000006CBEEFEFFCE3831CE3970CF38050A20 +:10025E00308700BF1801BF1A01BF1C01BF1E01D796 +:10026E00D7C7F616FDA204717BFA313297087132A8 +:10027E0097717AFAEF0C717AFAA7F647DFE9520313 +:10028E00EF01F2C6D7C7C1C1FBF8FF17A1C1E0C18C +:10029E008C0A70C18C0270FDBB021006629D54D494 +:1002AE005461E8CC01FF8C01721004C6D7C7C1FBA4 +:1002BE00F8FFFD6F02D2DD045203EF698B70FDEF84 +:1002CE0003D2DD077133975202EF5A8C0870FD0B83 +:1002DE0004FD56048B6C0170FD0B04300400BF242A +:1002EE0001301740BF1C01300400BF22018C0A915F +:1002FE00DF04F6BF2A01710BE2CE44FF3182E20227 +:10030E00EFFAAC0C148E449961790C61690A8C0A6F +:10031E00D1DFDA8B4CA461F8FDB348FD7F04710B7D +:10032E00E2713397F2C0C6D7C7C1FBF8FFFD6F026B +:10033E00D2DD045203EF25710AE68B70FDEF03D276 +:10034E00DD077133975202EF138C0870FD0B048C8E +:10035E000A70FD0B04FD7F04713397F2C0C6D7C738 +:10036E00C1FBF8FFFD6F02D2DD045203EF70710A7C +:10037E00E6710BE28B70FDEF03D2DD0771339752FE +:10038E0002EF5B710BE231229744C73422FBAC0CB7 +:10039E001652048B99A5A792DFF9C68B9D518C0836 +:1003AE009D528C0A9D533184BD02EFFA717ABDCEF7 +:1003BE00B144CBB422FB8C0A318EBEB8CEBB487191 +:1003CE004BE1714BE5710ABD8C089E44EF0F710B2A +:1003DE00E68C089E448C0A9D50AC0CBD4EF2C0C6F5 +:1003EE00D7C716FD2E04AF0401BF0C0117FD0B0479 +:1003FE00D2DD07FD7F045202EF01F2C6D7C7167198 +:10040E000AE6710BE2669E443182E202EFFAF64290 +:10041E000401DD09AF0401BF0C01E2EF01F2C6D702 +:10042E00AF2801085CFB08BF2801FD6E02AF280152 +:10043E005CFBBF2801300400BF2A01301780BF1CAF +:10044E0001300400BF2201D7AF2401086C0408BF9D +:10045E002401AF28016C0F086C0B08BF2801FD6E3C +:10046E0002AF2A01085CFB08BF2A01FD6E02ED2EC9 +:10047E0004300400BF2401F6BF2A01300B0BBF2845 +:10048E0001FD6E02300B0FBF2801FD6E02300F0F03 +:10049E00BF2801D731449701D77132976A0E037185 +:1004AE003B25713B23E0FD2C0A7120F000FD6E020E +:1004BE00F6BF26015024BF1401CB440014300F0F99 +:1004CE00BF2801712397710BE2710AE6FD2E04CE4F +:1004DE0044FF3182E202EFFAFD7F04AF0401BF0C4C +:1004EE0001713397714297D731349702EFFAFD5667 +:1004FE0004713A25713A235A0EFC7128F0007143AB +:10050E0097D77140F00071783002713AE6713BE294 +:10051E00713BEA713BEE5A06FCCF34024AE552FFBC +:10052E00711A52710A5271483002713030027120C4 +:10053E003002CF330209CF32020B713031027120FB +:10054E003102713BE6717030028E265CFC9E267184 +:10055E00603002D7717830027148F000D7C720089A +:10056E00FBF8FFFDB8085014C15008FDEA07C0CCD7 +:10057E0007048C074C14DE0C8C07318EFD540A6177 +:10058E005907EFEECC07048C074C1461C8ED5906E1 +:10059E00CC06008C064C0461C8ED3806300AF9BC56 +:1005AE0002F6BBCEABAC31B2D109C7364105718470 +:1005BE00C6DEF3F1C73641057184C661DC9C057158 +:1005CE003BD1AC02148F40059971505005617902F0 +:1005DE00617900F0E1614900DD09C736410571849A +:1005EE00C6DEC3F1C73641057184C661DC0E059CBB +:1005FE00055040C18C07318E31AD128C06318E31D3 +:10060E008D03BDD831FFBDDADADAADD8FD200DC0CD +:10061E00D2DD0C5008C15014FDEA07C0FDDD0B8C75 +:10062E0005D1DF06615906EDA1058C07318EFD5807 +:10063E000AD2DD0C5008C15014FDEA07C0FDDD0BD7 +:10064E008C05D1DF06615907ED950571605005CC1B +:10065E000400CC05008C054C09DE2B8C05318E0474 +:10066E00F61FC1317B9EFDC41189728C05318E043B +:10067E00F64F14896142DF03F6EF01E6600E049C2B +:10068E0004615905EFCF41001140F81F3A61E8614E +:10069E0059048C04D1DF08FDDE0BFDF00CEF0C507D +:1006AE0008C15014FDEA07C0FDDD0B1008C6D7C700 +:1006BE002004FBF8FF712B24CC0100F6BC02AC0227 +:1006CE00440900DE3EAC0204F60F1441001189729B +:1006DE00AC020C5014896142DF03F6EF01E6600EA6 +:1006EE00019C01AC021249005072AC0204F67F1458 +:1006FE00896142DF03F6EF01E6600E019C0161792C +:10070E0002EFBB40F67FFF61F86159018C01D161A8 +:10071E00F8EDB607CC0100717AFAFDA20471130050 +:10072E00711B20710303710205E0C15003FDC92B3B +:10073E00C05013FD2C0A500FC1E0FDC92BC0CEAB2B +:10074E00AC6159018C0191DD068C014C03DF03E68F +:10075E00EF01F66061FB7121048C014C0861F8CC4D +:10076E00010031320705A024FCEF03F524FC4024E0 +:10077E00FC11DC22F524FCF0C15003FDC92BC0CEC8 +:10078E003708CBE4FFFFCBE6FFF7CED4FFCF370021 +:10079E0008F5120561FDE6BC02F6614902DD9F0017 +:1007AE00000000617902EFF1FDB808D2DFFA5008BF +:1007BE00C15014FDEA07C0D2FDDD0B1004C6D731BF +:1007CE0084BD02EFFA717BBDCBE4FFFFCBE6FFFFEA +:1007DE00CBD4FFFF717ABED7717BBED7C7C1200CB9 +:1007EE00FBF8FF8C0C318E31ADC1317B9DD4C0BC7A +:1007FE00068DD49C088C149C0B8C14318E040C002A +:10080E00128C0B318EBDD813FDAF0F61C8EDB3083E +:10081E00CEABACCC05068C0B318EFD500AD2DD155D +:10082E008C0B318EFD540A6169058C05D1DFE7FD15 +:10083E00E607E2EF71CC0A008C0A4C04DE54F6BCDB +:10084E0002300AF9BBAC06148C089EFD118972ABFE +:10085E00146299AC06A1BC06617900617902F0E1DF +:10086E00614902DFE05040C18C0B318E31AD128CEC +:10087E000A318E318D03BDD831FFBDDADADAADD84B +:10088E00FD200DC0D2DD06FDE607E2EF1961590A23 +:10089E00EFA68C0B318EFD580AD2DD03E2EF076115 +:1008AE00590BED0708F2100EC6D7C7717B9D717BF1 +:1008BE00FAFDCD07300AF9FD030BFD8E0AC6D7FDF2 +:1008CE00B808FDDD0BFDE607F5ABFFF2D7C7310427 +:1008DE009B067110B3FBEF047118B3FB8FB3FB7B58 +:1008EE008E76D1DD5B8FB3FB9D8E4004F903DF2244 +:1008FE00665C10D1DD1C8FB3FB5C10D1DD0B50801C +:10090E00C15011FD5E35C0EF095040C15011FD5E62 +:10091E0035C04004F903DD064004F904DF22665CAD +:10092E0002D1DD1C8FB3FB5C02D1DD0B5040C150F8 +:10093E0010FD5E35C0EF095020C15010FD5E35C070 +:10094E00C6D7C7360000665C80D1DD10675C80D1EB +:10095E00DF0571339AEF0B71329AEF06710407714E +:10096E00319A665C40D1DD10675C40D1DF05714382 +:10097E009AEF0B71429AEF0671140571419A665CFB +:10098E0001D1DD10675C01D1DF0571539AEF0B7158 +:10099E00529AEF0671340771519A665C02D1DD10DE +:1009AE00675C02D1DF0571639AEF1D71629AEF18D1 +:1009BE004007F901DF0871040271619AEF0AC73628 +:1009CE00100571C4C671619A665C04D1DD10675C56 +:1009DE0004D1DF0571739AEF0B71729AEF067144B1 +:1009EE000771719A665C08D1DD10675C08D1DF056E +:1009FE0071039BEF0B71029BEF0671140771019B44 +:100A0E00665C10D161E8715AD1C6D7F5F6FBF5F8E0 +:100A1E00FBCFFEFBFFCFFAFBFFCFFBFBFFD7C7C120 +:100A2E00C1FBF8FFCEABAC8C02D1DD126169023096 +:100A3E005C03BBF6614900DDEE618900EFF5100441 +:020A4E00C6D709 +:100A50005208EF065203EF025206FEE600FE1B00AC +:100A6000DC16089F03088F0408089F040862FE2410 +:100A700000089F0408EEBF00EEBA00C1C514410E85 +:100A800011D9D0FF118FD1FF312E45C4C0D7F2311B +:100A9000A2C401E2D79DE261DD4C09DF12717BFA4D +:100AA000C18F06089F25FDC0CF060800EE27003144 +:100AB000F2FA04CF0608004C00DF05D50008DD1669 +:100AC00061DD717BFAD50608DD0ACDE31F61CD61DA +:100AD000CDEE160061CDFED40061FFFE9A00FCF859 +:100AE000FF0EFEB20061CDFED5004C09DF0EC18FB6 +:100AF00006086F25FD9F0608C0EE0400CF0608001B +:100B0000F8E3D75200EF025202FE3700CF24FD0077 +:100B1000CF060800BF0408C716629F0008410011F5 +:100B20008F1A209B4100118F1B209F0108C6510086 +:100B3000FE62FFEF025205CF060800C1510CFE0A0B +:100B400000C0D7C1511DFE0200C0D761DD717BFA24 +:100B500070CEC0A59EC47CFF9EC4609EC461CDD7EC +:100B600061DD717BFAC18EC45C1BFED6FFCF060827 +:100B700001FED7FFC061CDD731F2FA1AC1AEE4BF92 +:100B800016FDAEE6BF18FDAED4BF1AFD30FFFFBEA6 +:100B9000E4BEE6BED4C0D731F2FA11C1AF16FDBE35 +:100BA000E4AF18FDBEE6AF1AFDBED4C0D7C1BF1C6E +:100BB000FD13BF1EFD15BF20FD17BF22FDC0D7AF1F +:100BC0001CFDDB1EFDEB20FDFB22FDD7534B3052FD +:100BD0005430324E323030475631323000FFC1503F +:100BE000FEFEAB0061DD717BFACF060800FE0A0055 +:100BF000FEA4FF61CDF8E3EECF00C7FB0408BF16EB +:100C0000FD8FC0009C05C5C337040600BF18FD3525 +:100C100036420C300000522BFE6600C2C4C630F0D3 +:100C20000BB800300000B8022004AF18FDB8003047 +:100C30000F00B802AF16FD61FF520AFE3AFFECF852 +:100C4000FF0E717BFAC1C7FB04088C05C65C80FEF1 +:100C50000200C0D761DD717BFA70CFC0FFA59FC0D5 +:100C6000007CFF9FC000609FC00061CDD7618BFEFC +:100C7000E2FF717BBE410011FB000017CEFC00615A +:100C8000CB089EFDF31161C999A58392DFF7D7FECA +:100C9000B1FED524FDDF23C1CF0308035109FEF4C3 +:100CA000FDC0D2DF37FE3800A20408CF0308075189 +:100CB00009FEE1FDD2B20408DF22C7FB040831833C +:100CC00002C6D7C6510AFECCFD624C1FDF06CF24F8 +:100CD000FD01EF04CF24FD00C0EE5BFEC0EE55FE2B +:100CE000C7C1FB04088B31196C0161589BC0C6D782 +:100CF000717BFAFE4DFEAF0408040600C1143654A1 +:100D00000C300000522DF3FE77FF8FC000FE2BFE4B +:100D100061CF5C807C8073C0041900CEFC0F61CB76 +:100D2000C55404EF03C55417FE18FEC7360008BBB0 +:100D3000629C0288089C03D1DD334C41DE2F70F1A8 +:100D4000312DB161090033081C000851FF612A41AF +:100D50000E118FD0FF613B118FD1FF6138DC0E8BFC +:100D60005C03DF0964C6C4FE2BFDEECAFDC6C4EEFB +:020D7000C3FDC1 +:100D720061CF5100718C7109FECBF800FEFCF201CB +:100D820000F6BF00F953C0F693935820FEDFF941F5 +:100D92000036E44E34CCFCEF05118B99A7A517441D +:100DA2002E4FDFF53602F930CCFCEF04CC0000A761 +:100DB20047DFF94100362E4F3420FEEF05118B99A3 +:100DC200A7A517443E4FDFF53630FE3096FEEF04FE +:100DD200CC0000A747DFF9FCCE0000EFFE61DD7119 +:100DE2007BFABEF0ADD8BEF200AEF661CDD7C361DC +:100DF200DD717BFABEF0ADD8BEF200DBF6FFADDCF2 +:100E0200BEF000AEF6BDD8AEF40312ADDABEF2000B +:100E1200AEF661CD03BDDAC2D7C3F33174D908830C +:100E2200C1F626D8BDD8C031750683C312F623C2D7 +:100E3200FD3D0E93DF0312F623C2D7440000DD26E8 +:100E420061DD717BFACFE80080BEF6F6BEF4BEF239 +:100E5200ADD8BEF0CFE800818FE8003103FAAEF0E2 +:100E6200F5E80061CDD7B1D7C3F33174D90883C196 +:100E7200F626D8BDD8C0317505C312F623C2FD8B44 +:100E82000E93DF0312F623C2D7440000DD2761DD93 +:100E9200717BFACFE80080BEF6F6BEF4BEF2ADD8A2 +:100EA200BEF0CFE800818FE8003103FAAFE000F531 +:100EB200E80061CDD7ADD8D7C3F33174DB0F83C15E +:100EC200F626D8BDD861317026DABDDAC031750D8B +:100ED20083C312F626DCBDDC61317023C2FDF30E42 +:100EE20093DF0CF626D8BDD861317026DABDDAC29E +:100EF200D7C161686BDC6BDDC0DD2F61DD717BFA10 +:100F0200CFE80080BEF4ADDCBEF6ADD8BEF0ADDAFF +:100F1200BEF2CFE800818FE8003103FAAEF0BDD80F +:100F2200AEF2BDDAF5E80061CDD7F6BDD8BDDAD7AD +:100F32008292DD2B61DD717BFACFE80080BEF0F694 +:100F4200BEF2BEF46208BEF6CFE800818FE800313F +:100F520003FAAFE0006072AEF0F5E80061CDD76051 +:100F620072F6B1D706DABDDAADDC06D8BDD861D8E3 +:100F7200A6DAD7D1DD17C1C3DAD89DD8ADDA311CD4 +:100F820061EEB4D8DFF8BDDA13BDD8C2C0D7D1DD67 +:100F92001BC1C3DADA9DDAADD8311E33311E33718B +:100FA200F9B4DADFF4BDD813BDDAC2C0D746D8DD52 +:100FB2000771FF7177D971C0D75BDB9DDB605BDAAC +:100FC2009DDAADDC5BD9085BD808BDD8D7C3C7F3BF +:100FD200728EFDC162314C410036DA4E1161A0724F +:070FE200C09EFD62C6C2D7EC +:0A0FF60030393A34353A353900003D +:0A20000030393A34353A3539000022 +:10200A0005214F7B9EC5E9000104080D12171C1F0C +:10201A00080100001F003B005A0078009700B50035 +:10202A00D400F300110130014E01192634445362E1 +:10203A006E777D80807D776E625344342619100A4C +:10204A0008080808080808080A10AEF0B430B740B3 +:10205A00BA30BB50BBB0BC50BD10BD60BDB0BFE014 +:10206A00C2B0C420C7B0CAE0CE1001F014101420C8 +:10207A000630639049006E0077707B0019001900E2 +:10208A0017F01C6012001200120002005C003600F9 +:10209A00A70000D8EAE88C309C10A5E0B040B1C097 +:1020AA00B200B250B310B490B620B860BA50BFA014 +:1020BA00C6B0CE90D02000200020002000207B3027 +:1020CA00686020001700173012F00DE007F00700D3 +:1020DA00093001C001C00100AB000000670020DA2E +:1020EA006967A120B750B9D0BB00BC30BC60BCA0A6 +:1020FA00BD10BDC0BE70BFD0C2A0C400C850CC8045 +:10210A00D0B001A0251018B017C095206FE07C60F0 +:10211A003510350037F016F01CA0173011D011F029 +:10212A0011F002005E00A7FF27FCB0DAF5F39CF07D +:10213A00AD50AFB0B300B3E0B560B670B7A0BA00A7 +:10214A00BC00BE90C160C400C700CCA0D0A00200F1 +:10215A00191012004810251041F02FA013F01CD0BE +:10216A0010D00FA0110010E00C100C000C0002009F +:10217A007100B4FFC0FDA0DAE7E59D80B7B0B8A052 +:10218A00B9A0BB40BC50BCA0BD00BD90BF30C0E0F0 +:10219A00C330C540C750CD40D0A0019035102F3074 +:1021AA0011002940885071A05FE032D01CF014F071 +:1021BA001A801A801110120012000200560067FFDE +:1021CA0054FCA0DAF5F39DD0A620ACE0AE20B040D6 +:1021DA00B210B3C0B500B670B7D0B920BC00BED03B +:1021EA00C470CA40D0A002000200240014001600E5 +:1021FA001A0038C02DE029C027E00FE011E00FE0F7 +:10220A000F400C000C0002005F0027FF1AFEA0DA44 +:10221A00E6E47F7E7D7C7A79787776757472717060 +:10222A006F6E6D6C6A6968676665646261605F5E3D +:10223A005D5C5A5958575655535251504F4E4D4B53 +:10224A004A494948474645434241403F3E3D3B3A59 +:10225A00393801020203030200FEFBF7F3F0F0F340 +:10226A00FA041225384D5F6E777A776E5F4D3825FE +:10227A001204FAF3F0F0F3F7FBFE00020303020282 +:02228A00010051 +:10228C008D3DB43DD1DF26CD3D1EFD4423FDE52221 +:10229C003132960D3104960931329A05713304EFBF +:1022AC0003713204FD1823FDBA22FD7E26D771532B +:1022BC0096D432DD05B43271529631229607313202 +:1022CC009A03715296715496714102314402057110 +:1022DC0040B3FBD77148B3FBD78D304B3BDC114A75 +:1022EC0030B9DE0C4A3E28DE03A43ED7713396D7B4 +:1022FC008D3C4B30DE054A30BDDC0C4A3F28DE03FA +:10230C00A43FD7713296D7F43EF43FD731429A0CA2 +:10231C004A4002DE03A440D7712396D7313204120F +:10232C0040AFFB3CDE0C8FB2FB5C01D1DF047123B0 +:10233C0096D7712296F440D7C7C1FBF8FF31329A79 +:10234C00067130B3FBEF047138B3FB7144967137EF +:10235C009ADE4F71349A71419631329A0E5002C105 +:10236C005011FD5E35C0CD3229EF37E0C15011FD63 +:10237C005E35C0F43217C15002FDB12BC0D2DF0D57 +:10238C008B318E318D080E01081C00BD34AD3444E8 +:10239C00009BDC05D5AFFBDF095020C15011FD5E61 +:1023AC0035C0C0C6D78D209D41FDF323FDE52BD54F +:1023BC0007F9DD04710396D78D414B2061F8316428 +:1023CC00961C716396FDA2044A4107DD054A41FF44 +:1023DC00DF098F06F9310303FD8224FD9624710277 +:1023EC009630DC256194D7C771620171720150037C +:1023FC00FD2C0A5008FDDB37629D305009FDDB37A0 +:10240C006276716301711806F94A30F1DC0BE5074D +:10241C00F9F508F9CD3707EF0E4A3004DE06CF0781 +:10242C00F902EF03F507F95008C1506CFD9302C097 +:10243C0092DF08D45461F8711006F94007F901DFF6 +:10244C0005710A22EF06710B22710302CD2007578A +:10245C0000674C08DE1073090A20614EDC05679D8D +:10246C0020EF0387EFEB4A2007DF09D507F961F866 +:10247C00CF07F903C6D7500AFD2C0A304000C150D3 +:10248C0006FD942BC05096ED2C0AC72008FBF8FFD4 +:10249C00D507F961E8EDD825304A57C1503EFD9477 +:1024AC002BC0D2DD077100B2FBEDD8257108B2FB51 +:1024BC0017040400C15002C1500CC1506CFDBB028A +:1024CC00100617040600C15002C1500EC1506CFD1D +:1024DC00BB021006EA38AA48318D12AA48318E6127 +:1024EC006B08616A08C1500EFD942BC0F690C15068 +:1024FC000CFD942BC0CC03008C034C40DE30EA382E +:10250C008C03318E05148A01318E318D12EA388C90 +:10251C0003318E051489616213BBC18C03318E04A7 +:10252C004000FD942BC08C030C029C03EFCACC031F +:10253C00008C034C20DE17300080C18C03318E04DC +:10254C008000FD942BC08C030C029C03EFE350A580 +:10255C00FD2C0AEA38AA48318D12AA48318E616BDB +:10256C0008616A08C1500EFD942BC0F6C1503EFDA7 +:10257C00942BC050A5FD2C0A5004C1506CFD930245 +:10258C00C0629C03EA388A4B4E0361C3048A4A4EEC +:10259C0003304A57C1503EFD942BC017040400C1B0 +:1025AC005002C1500CC1506CFD6D0310061704068F +:1025BC0000C15002C1500EC1506CFD6D031006F6E7 +:1025CC00C1503EFD942BC050A5FD2C0A1008C6D757 +:1025DC00C78D424B3061F8ED7B264A4428DE05A4BA +:1025EC0044ED7B26F4448D309D428D305070D612D4 +:1025FC00307351230480001231FF318E039D439FB1 +:10260C00AEFBF68D437C804C95DC1B8D43318F24C7 +:10261C001400EA38BDD8AA44FDDF0D1231FF318E0B +:10262C0003318F16EF198D43318F241400EA38BD16 +:10263C00D8AA46FDDF0D1231FF318E03318F16EA19 +:10264C00388A427217F3031644000171FE61C836D2 +:10265C00FF001701DE02F61617BD7CC7500CFD9467 +:10266C002BC0D2DF068D309D42EF047100B2FBF21D +:10267C00C6D7C72008FBF8FF4007F901DD06400765 +:10268C00F902DF1C17040600FDC32CD2DF0A8C06EE +:10269C009C058C079C04EF4ECC0563CC0400EF46E4 +:1026AC0017040600FDC32CD2DD0F7100B2FB7103C1 +:1026BC0096CC0500711297EF2D7108B2FB8C063188 +:1026CC008E318D080E07081C00BBEA388A4072ABAD +:1026DC00FD320FBB8C019C05D1DF08CC0501CC046D +:1026EC0000EF038B9C0417040600FDCE2CD2DD06F4 +:1026FC00CC06C8CC07008C069FB1FB8C06318E3102 +:10270C008D080E07081C00BD34AD344401A5DC084F +:10271C00CC0364F6BD46EF48AD3426464401A0DC3C +:10272C0008CC031EF6BD46EF37AD3444819DDC0961 +:10273C00CC030AC946F401EF27AD3444019BDC09F4 +:10274C00CC0305C946F401EF17AD34440191DC0903 +:10275C00CC0300C946F401EF07711297C946F40186 +:10276C003132040C31249608CC0564CC0400EF0DF6 +:10277C008C034E05DE078C039C05CC04008C059F56 +:10278C00AFFB8C049FB0FBFD502C8D484E05DD2813 +:10279C0040AFFB0BDE054A480BDE1440AFFB06DEF8 +:1027AC00054A4806DE09D5AFFBDF0DD448DD0950DC +:1027BC0020C15011FD5E35C08FAFFB9D48FD8D2CA7 +:1027CC001008C6D7C75601D837C15002FDC92BC057 +:1027DC008F09F93105075012FD2C0AEF0E500AFD36 +:1027EC002C0A712010055008FD2C0A8D376C0870CE +:1027FC00C15002FDC92BC05003FD2C0A8D376C183B +:10280C0070C15002FDC92BC05016FD2C0A5003FD9F +:10281C00DA2B625C01D1DD0F7170B3FB5002C15039 +:10282C0013FD5E35C056006672C6D7C75004FDDA7C +:10283C002B625C03D1DD405014FDCE2834B3FB89F0 +:10284C005C9F998A0C7CFF50FF5C14D1DD228A0CB2 +:10285C007CFF5C147234B7FB89616A99716207560C +:10286C0000316207058666D1DFF7716307716B274C +:10287C0034C6FB895CEB995002FDDA2BD2DD398D25 +:10288C00376C1070C15002FDC92BC0E0FD2C0AD86A +:10289C0037C15002FDC92BC05033FD2C0A8F09F9EA +:1028AC0031030971281005500AFD2C0AF0C15002A1 +:1028BC00FDC92BC07178B3FBE0C15013FD5E35C070 +:1028CC00C6D7C7C12004FBF8FFCC02005004FDDAC8 +:1028DC002B629C038C045C20D1DD0E8C036C019C60 +:1028EC00038C026C209C02EF138C045C10D1DD0C69 +:1028FC008C035CFE9C038C026C109C028C045C08A8 +:10290C00D1DD0E8C036C029C038C026C089C02EFD4 +:10291C00138C045C04D1DD0C8C035CFD9C038C02D9 +:10292C006C049C024008F903DF088C03D161E8CCED +:10293C0003028C03D1DD05501AFD2C0A8C0370C1E7 +:10294C005004FDC92BC08FB3FB5C9F728C03318E7E +:10295C00316D148C03318E314D616D08616C5C608E +:10296C006162629FB3FB8FBFFB7CFF50FF5E02D1A5 +:10297C00DD278FBFFB7CFF5E027234B7FB89616A77 +:10298C0099716207CC0100316207086159018C0111 +:10299C00D1DFF4716307716B27F21006C6D7D9A784 +:1029AC00FBC15006FDC92BC0D9A8FBC15007FDC9FE +:1029BC002BC0D7FDAA29F2D7C716664C02DD084CEE +:1029CC0004DD044C05DF05CD3A08EF02F43AC6D716 +:1029DC00C7711300711B20710303710205E0C15014 +:1029EC0003FDC92BC05013FD2C0AD83AC15005FD6C +:1029FC00C92BC0500FC1E0FDC92BC0500AFD2C0AD9 +:102A0C007103055008FD2C0A501FC1E0FDC92BC0F5 +:102A1C005012FD2C0A5003FDDA2B625C01D1DF034E +:102A2C00E2EF12F0FDDA2B629D363602F9C7500840 +:102A3C00FDB12BC0F2C6D75003C1FDC92BC071022A +:102A4C0003711A20FD712BF431D75014FDCE28FDE3 +:102A5C0037285014FD2C0AFDE32C711300711B2038 +:102A6C007103035014FD2C0AF0C1E0FDC92BC0F01A +:102A7C00C15003FDC92BC0D7C72004FBF8FFCC0203 +:102A8C00008D319C035010C150A4FD9302C0629D77 +:102A9C0031D454DD04F2ED4E2B8C037B315C08D128 +:102AAC00DD0F8D315C08D1DF05CC0210EF03CC02B9 +:102ABC00208C037B315C04D1DD158D315C04D1DFBE +:102ACC00088C026C049C02EF068C026C089C028F32 +:102ADC00B2FB5CF3728D315C0C6162629FB2FB8F56 +:102AEC00BEFB7CFF50FF5E029C02D1DD1F34B6FBA7 +:102AFC00896E0299716207CC010031620708615935 +:102B0C00018C01D1DFF4716307716B278D315C404F +:102B1C00D1DD095002C15012FD5E35C08D315C0112 +:102B2C00D1DD08E0C15012FD5E35C0717AFA8D31ED +:102B3C005C41D1DD0C5A31BED831C15010FD10486A +:102B4C00C0F21004C6D7FDD027F2D7FD3728F2D734 +:102B5C00C78FC6FB7617FDCE28664FC6FBDFF2F596 +:102B6C00C6FBF2C6D75064FD2C0AFDD92C6261FB62 +:102B7C00711196F171149661DC70C15012FD104800 +:102B8C00C0FD0C37CD6303D7C7C1C1FBF8FFAC0A3E +:102B9C00BB17C15002C18C0270C1506CFD6D03108B +:102BAC00061004C6D7C7C1FBF8FFAC08C15002C160 +:102BBC008B70C1506CFDBB021006C0C6D7C788060F +:102BCC00166770C1C75084FD36031004C6D7C716EC +:102BDC00C75084FD9302C0C6D7C78F08F9318FE761 +:102BEC00240000DD1B23DD0C23DD0D23DD1223DD92 +:102BFC000B23EF0C5602EF0A5604EF065602EF02B7 +:102C0C0056004A200461C88666318F12504CD63368 +:102C1C00514CD6610A045420BD384008F902DD0637 +:102C2C004008F904DF08CD3B54CD3C44EF14400878 +:102C3C00F905DF08CD3B4ECD3C3FEF06CD3B4BCDF0 +:102C4C003C3DC6D740AFFB3DDC05CF04FC0FD74065 +:102C5C00AFFB1FDC05CF04FC0BD740AFFB0BDC0537 +:102C6C00CF04FC07D740AFFB0661D831320405CF47 +:102C7C0004FC03D7D5AFFBDD04E504FCD7F504FC5D +:102C8C00D7D504F9DF04717396D7FDD92C6261FB9B +:102C9C0071019771149671079761C831729617710B +:102CAC007296710497711196F171049761DC70C181 +:102CBC005012FD1048C0D7C716C75004FDB12BC029 +:102CCC00C6D7C716C75002FDB12BC0C6D740AFFB45 +:102CDC000BDE02E2D7F2D7C75003FDDA2B62318F3D +:102CEC00085CFD70C15003FDC92BC0C6D771000133 +:102CFC000571785005713AD5713BD18F10055CFC8C +:102D0C009F1005CF54054AE542057110420571002C +:102D1C004205714850057130500571205005CF5354 +:102D2C000509CF52050B7130510571205105713BCE +:102D3C00D5717050058F11055CFC9F1105F422D7DD +:102D4C007178500571080105D7FD0639FDA2047193 +:102D5C007AFAFDB123F504F98F06F931051B5003FE +:102D6C00FDDA2B625C01D161E8CF04F902CFAFFB35 +:102D7C0064710407714196EF10F67104076110122B +:102D8C00F6B1236061FB714196FD0E31FDB44371C8 +:102D9C002299712BE7618461A461EDEFF8D7C788A4 +:102DAC00061666614FDD0967614EDE0396EF0186FC +:102DBC006672C6D7C7161714AA0412A943DD29AA2E +:102DCC000412A923FD3E4FC3AC02FD3E4F13C2BDFE +:102DDC00D813FDAF0FDE0C1714AA0212AA0403BA03 +:102DEC0004EF051714A9BA04AC041231FF319E0389 +:102DFC00317F087208C6D77100F200304400BFB6AC +:102E0C0001300188BF9001300984BF9E01BF9C0135 +:102E1C00BF9A01BF9801BF9601BF9401BF9201F503 +:102E2C003CFF30FE00BFBE01F6BFBC01BFB8015075 +:102E3C00EEBFBA01A1BFB201C918FE008F06F9316D +:102E4C000507F5CDFBCB6CFF00717397716297D7BB +:102E5C00C72004FBF8FF3026FBBC02F6BBAB446476 +:102E6C0000DE0EAC0214CA0000617902617900EF39 +:102E7C00EC1004C6D730EF00BFB401F6BFBA017135 +:102E8C0008F200712304715307BE6EBE64BE6A71F2 +:102E9C002304715307715BD1F457F456716397D7C0 +:102EAC008D58B458D1DF6931D4D105715BD1E45759 +:102EBC00D457DD2E7140B2FBD856F1E73402002313 +:102ECC00DD0625DD0325DF05F6BE66EF06D9CCFB56 +:102EDC00F1BE66A4564A5620DF04F456F457CD587A +:102EEC0019D7CD581E7148B2FBD5CEFBDF04F6BE08 +:102EFC0066D7D9CCFBF14266FFDD15D9CCFBF112BC +:102F0C00AE6643DE05A266FFEF03B266FFCD580343 +:102F1C00D7C7161714F6B9AA0412F6231231FF31CB +:102F2C00AE03316FBA02AA046168DD0AAA026168B5 +:102F3C00DF04F6B1BA02C6D7C7C1FBF8FF8C085044 +:102F4C0080D612AB1413B9AB14AA0412A92312D94C +:102F5C0027FBF133BDD813FD1B0EBA02C0C6D73107 +:102F6C00049801D74004F902DF10F6BE64BE6EBEB1 +:102F7C006ABF8EFBBF94FBBF9AFB31749714308AE7 +:102F8C00FBFD1D2F3090FBFD1D2F3096FBFD1D2FE3 +:102F9C00EF713114980D7113987108D2FBF45AF437 +:102FAC0059EF60D459DF5A8F26FB9D594A5A1FDCC2 +:102FBC00177100D2FB4028FBFFDD1CA45B8F28FBA4 +:102FCC004B5BDE13F45AEF0FD85AF1A1605C1F9DD6 +:102FDC005A7108D2FBF45BE85A092AFB70C1308A9B +:102FEC00FBFD442FC0E85A094AFB70C13090FBFD31 +:102FFC00442FC0E85A096AFB70C13096FBFD442F80 +:10300C00C0B459308AFBFDC02DF313BE6E3090FB5B +:10301C00FDC02DF313BE6A3096FBFDC02DF313BE1D +:10302C0064D7C736F00071F4DC297170F000CE9DC6 +:10303C0008CE9EC0CE9F80F594FFF593FFF592FFCE +:10304C00E597FFE596FFE595FFE598FFCE9C7F7130 +:10305C0000A6FB711BE3712BE3711AE7712BE7716F +:10306C007A9D710A9E31929E02EFFA710B9E71232A +:10307C0098713398714398C6D7C73122981E712224 +:10308C0098710A9E31929E02EFFA34D4FB3692FF6D +:10309C0052078B99A5A792DFF9710B9EC6D7C788EB +:1030AC00061631329815713298C7349CFB3092FF5A +:1030BC001652078B99A5A792DFF9C6667367189C01 +:1030CC00FBC6D7C77123983134981E713398710A97 +:1030DC009E31929E02EFFA3492FF369CFB52078B84 +:1030EC0099A5A792DFF9710B9E31449813714398FF +:1030FC00717B9E8FDCFB9E9A8FDDFB9E9B717A9E73 +:10310C00C6D7CFA7FB5CCFA8FB5FCFC8FB5DCFFCBE +:10311C00FB36CFFDFBC9D7C7CFA4FB13CFA5FB4113 +:10312C00CFCCFBFFF5CDFBF5CEFBF5CFFBF5D0FB04 +:10313C005600664C64DE08723826FB0086EFF3F509 +:10314C00E3FB714A9D712B21710A20711A207102C7 +:10315C0003C6D7C788061617F1E73403002361E3CB +:10316C00ED8B342361F8ED6233B12361E3ED6C3305 +:10317C002561F8ED7A33B1240D0061D8ED8B342440 +:10318C000B0061F8ED54322361F8ED97322361F8AE +:10319C00ED67322361F8ED843424060061F8ED16F6 +:1031AC0033B12561D8ED323324000061F8ED3F33A3 +:1031BC002361F8ED8B342361F8ED8934B12361E39D +:1031CC00ED9A332361F8EDAB332361F8EDBC332377 +:1031DC0061F8EDAB332361F8EDCD332361F8EDDE0F +:1031EC00332361F8EDED332361F8ED0F342361F8EF +:1031FC00ED1A342361F8ED25342361F8ED2D3424D8 +:10320C0002002361E3ED8B342361F8ED613423611B +:10321C00F8ED35342361F8ED40342561F8ED4B348D +:10322C00B124060061D8ED8B3424000061F8ED8DDB +:10323C00342561F8ED563424120061F8ED10332377 +:10324C0061F8ED0033ED8D3467D1DD0C30393C6124 +:10325C009434C4FB89616F99ED9734675C02D1DDBE +:10326C000730522B6194EF0B675C01D1DD053057B1 +:10327C002B6194675C3CD1DD0F305C2B6194675CF7 +:10328C003C7266736218A4FBED973467D1DD625C07 +:10329C0001D1DD05300800EF01F6609F01FC675C91 +:1032AC0002D1DD03E6EF01F63401FC896168996710 +:1032BC005C04D1DD04E6A1EF01F63401FC89616800 +:1032CC0099675C08D1DD05302000EF01F63401FC74 +:1032DC0089616899675C10D1DD05301000EF01F64B +:1032EC003401FC89616899675C20D161E8716001E7 +:1032FC00FCED97344A5CC8DE08E85C67185AFAA4FF +:10330C005CED9734679D5CED9734D44ADF08679F7A +:10331C00CDFBA44AEF0D4A4A05DE08E84A671811AE +:10332C00FDA44AED9734675C0F7266736218A4FBB8 +:10333C00ED97344A4A64DE1B4A4A01DF0667D161C5 +:10334C00F85701E84A671826FBA44A4A4A0561C89F +:10335C00711298ED973434A6FB89615F99ED97341F +:10336C0030BF29619466736718A4FBED973440A9AC +:10337C00FB6ADF1340AAFB68DF0D674C6CDF08307B +:10338C00F1406194713AD5679FABFBED9734675C64 +:10339C007F70C117F1243000FDAA30C0ED9734675F +:1033AC005C3F70C117F1243000FDAA30C0ED97349A +:1033BC00675C0770C117F1243000FDAA30C0ED978F +:1033CC0034675C1F70C117F1243000FDAA30C0EDCA +:1033DC0097346770C117F1243000FDAA30C0ED9707 +:1033EC0034CEABAC710A9E31929E02EFFAD592FFAD +:1033FC00DF05710B9EEFED679E99710B9E9FDBFBBA +:10340C00ED9734714298675C7F9FDCFBEF7D7142D6 +:10341C0098675C3F9FDDFBEF72675C3F9FDEFBEFC5 +:10342C006A675C1F9FDFFBEF6230EA396194679F2C +:10343C00E4FBEF5730B7396194679FE5FBEF4C30F5 +:10344C00D0396194679FE8FBEF41675C01D1DD3BAC +:10345C00FDB443EF36675C02D1DD05712A21EF061E +:10346C00714A9D712B21675C01D1DD0671030071DE +:10347C000B20679FE3FBEF1367318EEF0EEF0CEF22 +:10348C000A664C5BDE05736718A4FBC6D7C71666C5 +:10349C004C30DC094C37DE05FD8530EF76664C028E +:1034AC00DF1F8FA6FB5C03728F03FC5C03318E3134 +:1034BC006D08616A08128F03FC5C80312A6162EF2F +:1034CC0061664C3DDF08AE90BD5EF85EEF54664C15 +:1034DC003EDF04F85FEF4B664C4FDF05FDDC43EF3E +:1034EC0041664C61DF134A5CC8DC045700EF06E808 +:1034FC005C095AFA776772EF29664C7FDF05FDAAE3 +:10350C003CEF1F664C4EDF0B31049A045210EF1245 +:10351C00F2EF0F664C5BDC0452FFEF06667309A4F6 +:10352C00FB72C6D7C788061617F1241000240500B5 +:10353C00DC07244C00DD17EF17717BFA17F104A49C +:10354C00FB1489617F99717AFA715298EF02A45C2D +:10355C00C6D7C7C1C1FBF8FF4004F903DD06400420 +:10356C00F904DF38717BFA8C027309ACFB5E0AD16B +:10357C00DF278C02318E04A4FB14896E0A997162C8 +:10358C0007717AFACC0100316207086159018C018C +:10359C00D1DFF4716307716B27717AFA1004C6D707 +:1035AC00CF03FC03F501FCF505FCF507FCD7C78838 +:1035BC00061617F1E734020025DD3D23DD1725DD66 +:1035CC001C23DD0523DD2BEF3B710299679F06FC65 +:1035DC00CD6303EF2F675C839F03FCEF27675C03CE +:1035EC009F05FC675C034C0261F871229AFDCA4589 +:1035FC00EF12679F07FCEF0C6791DF08E0C15012D8 +:10360C00FD5E35C0C6D7C71617F1E7240000DD2ACA +:10361C0023DD1E240300DD0724FB00DD24EF253110 +:10362C00329A05308000EF01F6086F04FC7208EF47 +:10363C00198F01FCF501FC72EF107152995235EFA4 +:10364C0009F2EF0666730900FC72C6D7C71617F1AC +:10365C00E7240000DD38241000DD1C23DD1C23DDF5 +:10366C0030240E00DD18241100DD1B240F00DD12A8 +:10367C00243000DD15EF1EE2EF1D5202EF1952044B +:10368C00EF155206EF115205EF0D5207EF09F2EF4D +:10369C00065203EF0252FFC6D7C7316498377163E5 +:1036AC00988D629FACFB8D619FCBFB36D2FCC7D84B +:1036BC0061FD0C38618A70618AFD5138C0D866F1A1 +:1036CC00312F609D658D604B65DD0A7172988D653B +:1036DC009D60CD63034A6305DE083016376194CDD7 +:1036EC00636BB4637150F000CE300BCF170006CE75 +:1036FC003106FD6E02717A30710BE3710BE7C6D7A0 +:10370C008D659D608D659FADFBD74004F903DF0689 +:10371C004004F904DF02F2D73174980C717398717C +:10372C0013998D659D67EF313104991F7103997160 +:10373C001299D506FCDF04F468EF0A8F06FC5002E0 +:10374C00D6A1609D688D689D67EF0E311499068D2A +:10375C00689D67EF048D659D678D679FADFBD8678E +:10376C00FD7E37E867091C2270C15013FD1048C05C +:10377C00F2D7C7C1C1FBF8FF8C02D1DF05F506FCFF +:10378C00EF1A8C024C05DE06CF06FC02EF0E8C0203 +:10379C00318E1231FE03311F609F06FC8D694F067E +:1037AC00FCDD28CC011F8F06FC9D69CC00008B4CE6 +:1037BC0008DE148B730912204F06FCDC058B9C0170 +:1037CC00EF05615900EFE78C019D641004C6D7C763 +:1037DC0016710AE7710BE37150F000CE300BCF1766 +:1037EC000006669E31FD6E02717A30710BE33182F8 +:1037FC00E302EFFA8D1F7158F000710BE772C6D718 +:10380C00C7C1C1FBF8FF8FFCFB4E02DC03F2EF31AA +:10381C008C024FFDFBDC0452FFEF268C022FFCFBCD +:10382C00706131318D128FFDFB2FFCFB70613133D8 +:10383C00BDD813FD3D0EBB440001DC03F690BB8BE1 +:10384C00721004C6D7C7C1FBF8FFAC0814A91489C1 +:10385C00708B6128706131FD3E4F1344030071FE83 +:10386C00DC23AC08148A04819A04AC08148A044C36 +:10387C0011DC10A9148B99AC0814CA0200AC081402 +:10388C00CA0310EF72AC0814CA0400AC0814A914D3 +:10389C00894DDE0AAC08148A02819A02EF12AC0838 +:1038AC0014A914894D61D308AC08148A02919A02A8 +:1038BC00AC08148A03919A03D1DF3CAC08148A0239 +:1038CC004C10DF10A91489318EA112AC0814A91464 +:1038DC006299EF17AC08148A024CF0DF0EA9148918 +:1038EC00318EB112AC0814A9146299AC0814CA0236 +:1038FC0000AC0814CA0310C0C6D7ED0939C756006E +:10390C00664C0ADE0BF0317E12F67810FC86EFF076 +:10391C00C6D7C7200CFBF8FF17040600C15006C120 +:10392C0050A8C15030FDBB021006D2DD1B4A6C04FE +:10393C00DE05A46CE2EF7034E4FB895CFC99FDEAD3 +:10394C00397110B2FBF2EF5F717BFA300600C117D0 +:10395C00040600C130E9FBFD464F1004717AFAF4FD +:10396C006C8FE4FB5C01D1DD264004F903DF2050B1 +:10397C0010C180FD5E35C0C736100571D4C6DE0F90 +:10398C0017C15006C150A8C15030FDBB02100640F3 +:10399C0004F903DD064004F904DF0B8FE4FB5C0241 +:1039AC00D161E8FDF640F2100CC6D7D9E5FBC15049 +:1039BC0030FD9302C0629FE8FB5008C15011FD5EC0 +:1039CC0035C0F2D7D9E8FBC1D9E7FBC15030FD3681 +:1039DC000310045008C15011FD5E35C0F2D7C7204A +:1039EC000CFBF8FFCC09004007F901DF05CC0A02FB +:1039FC00EF03CC0A10CC0B808FE4FB5C039C07D14B +:103A0C00DF08717AD5CC0807EF06717BD5CC082F6F +:103A1C0017040800C15004C150A0C15030FD6D0303 +:103A2C001006624C02DF077110B2FBF2EF35711811 +:103A3C00B2FBF46CC736100571D4C6DE164004F91F +:103A4C0003DF1017A1C15006C150A8C15030FDBBF7 +:103A5C00021006717BFA8FE4FB5C034E07DD03E278 +:103A6C00EF01F2100CC6D7D504F9DF03F6BD6E409A +:103A7C0004F901DD0AD478DD03B478D7CD78038F4F +:103A8C0004F9318FE723DD0B24020024030061C805 +:103A9C00EDA73B8F06F931234D301B00466EDF1925 +:103AAC008FE3FB5C01D161E8F504F931049B27E05D +:103ABC00C15010FD5E35C0EF1D307701466EDF162C +:103ACC005002C15010FD5E35C0F64674DF088FC839 +:103ADC00FB5010D6BD74F64674DD36B6744674DFF2 +:103AEC0030711297EF2B301B00466EDF13F64676C3 +:103AFC00DF18E0C15010FD5E35C0C9765307EF0AE0 +:103B0C00307701466E61F8711297F6467661E8B629 +:103B1C007631549A08714399F6BD6EEF143144997D +:103B2C0005F6BD6EEF0BA66EF6466E61F8C96EFF1C +:103B3C00FF31629A194A7005DE16A4704A7005DFCF +:103B4C000FA4705004C15010FD5E35C0EF02F4702C +:103B5C0031649A194A7205DE16A4724A7205DF0F97 +:103B6C00A4725008C15010FD5E35C0EF02F472D43F +:103B7C0073DD03B473D731729A174A7105DE14A43E +:103B8C00714A7105DF0DA4715010C1FD5E35C0EF97 +:103B9C0002F4714A710661F8CD7325D7C73610054A +:103BAC0071D4DE0E8FB2FB5C02D1DF06301E3961A0 +:103BBC0094D24004F903DF1C3122070530842A61BA +:103BCC00943154990C7153995080C15012FD5E354B +:103BDC00C0FDE53BFD0B3CC6D78F03FC5C01D1DD82 +:103BEC001DD47BDD03B47BD7CD7B098D644B7ADD93 +:103BFC000D8D649D7A5040C15012FD5E35C0D7408A +:103C0C0004F903DD04F6BD1AD7D5D0FBDF08F64660 +:103C1C001ADD19B61AD7D9CCFBF1461ADD0ED9CC60 +:103C2C00FB12AD1A43DE03A61AD7B61AD7717BFA6C +:103C3C00C78FC4FB76F5C4FB717AFA5C10D161E8CE +:103C4C00716299665C0FD1DD52665C01D1DD05F5C0 +:103C5C0004F9EF47665C02D1DD0CFDE32C71130017 +:103C6C00711B20710303665C04D1DD1171130071AB +:103C7C001B20D503FC61F8710303FDAC35665C08B1 +:103C8C00D161E87103035005FD2C0A710203500346 +:103C9C00C1FDC92BC0711A20FD712BF2C6D7C756B6 +:103CAC00FF4A4A1361C8ED683D8F06F931150D3195 +:103CBC004505300600EF14300400EF0F8F06F93184 +:103CCC004505300500EF04D907F9F1609F28FC8DFC +:103CDC007C9F29FC713496E661301271049661DC8C +:103CEC0031196162629F2AFCE52BFC31449A053044 +:103CFC004000EF01F6C131340405302000EF01F62D +:103D0C00C2616B08616A08C131749A05300400EF16 +:103D1C0001F6C2616B08616A08C131649A04E6A1BC +:103D2C00EF01F6C2616B08616A08C131549A03E66F +:103D3C00EF01F6C2616B08616A9F2CFCF1712404DF +:103D4C0061DC9F26FCF171540761DC9F27FCD84A8B +:103D5C00F10104ECFC14A9148976A44A6672C6D746 +:103D6C00C7FD50098F04F9318FE724000061F8ED8D +:103D7C00473F23DD1B2361F8ED533E2361F8EDCC67 +:103D8C003E2361F8ED153F2361F8EDE73FED443F2D +:103D9C00F6BD747113974005F901DF2C31349A1B71 +:103DAC00466EDD04F424EF02A4244A2465DC0FF6ED +:103DBC00BD6EF504F9712299ED6C40FDB123AD6E29 +:103DCC00440A0061D8ED6C40714299FDA204716304 +:103DDC0096FDB1234007F903DF09712299F504F927 +:103DEC00ED6C40FD7E2640B1FB9BDE09712299F5FE +:103DFC0004F9ED6C40714A277140110571301105C1 +:103E0C00713A22715A2271501105FDDC29D2DD095B +:103E1C00712299F504F9ED6C4071103500CF370023 +:103E2C001D71401205FD432A4005F901DD064005D0 +:103E3C00F903DF05F5CDFBEF04CFCDFB03CF04F980 +:103E4C0002FDAA29ED6C4071103500CF37001D71B1 +:103E5C00401205FDF92CFD1005FDAC35FD2331F5A7 +:103E6C0037FF712BE0F505F9712299CBE43FEFCBCD +:103E7C00E6F6F0FDA204713BD48F06F93105225011 +:103E8C0002FDDA2BD261E87170B3FB5004FDDA2B22 +:103E9C00625C03318E315D34B3FB89616899FDB18D +:103EAC0023FD032E710806F9CF04F9038FA6FB5CE2 +:103EBC0002D1DD095080C15010FD5E35C0ED6C4063 +:103ECC00FD6E403164992FA47ED47EDD0831A4E0D0 +:103EDC000A31020C06712BE0FDE24031A4E01731EF +:103EEC00040C13712BE05027C15005FDC92BC0CF1A +:103EFC0004F904712299FDD7408F06F93125073159 +:103F0C00349A03F504F9ED6C40FD6E4031020C154A +:103F1C00D83AC15005FDC92BC05005FD2C0AFDE255 +:103F2C0040CF04F903FDD7408F06F9312507313412 +:103F3C009A03F504F9ED6C40F504F9CFCDFB03F5CC +:103F4C00CEFBF5D0FB717297F6426CFF61E8ED6C1D +:103F5C0040F6BD74711397F5E4FBFDEA39717AFAFA +:103F6C00FD812EFD4C2DFD6205712B21714B9D3178 +:103F7C00349702EFFACE3708CBE4BFFFCBE6FFF362 +:103F8C00CED4FFF5B4FBF5B5FBF5B6FBF5B7FBCF1F +:103F9C0037000971481205F6BEE0BEE2BED0716A68 +:103FAC0027FD562A714307714B277148100571483C +:103FBC0011057138100571381105713302713B22EE +:103FCC00715302715B227158100571581105CF04A1 +:103FDC00F905714299F6BD6EFD190AF505F9F4243F +:103FEC007128100531349A04D432DD20E505F9E549 +:103FFC0004F98F06F9312568F5F8FBF5F6FB502E20 +:10400C00FD2C0ACF05F903E504F9EF54FDF604FD88 +:10401C00442371730171320471430271039671620E +:10402C009631949E02EFFA712AE7CEA409F5F300BB +:10403C003104070261FDE5F300F46AFD5009CEA4DA +:10404C000831329A06CF04F905EF09714399E50559 +:10405C00F9E504F9712BE78F06F9312503F504F91D +:10406C00C6D78FE3FB5C01D1DF60D47FDF1931024F +:10407C0000585003FDDA2B625C01D1DF07F504F91F +:10408C00712299D7E47FD74A7FF0DF073104003AD9 +:10409C00F47FD74A7FC8DF0AF504F9712299CD7FE6 +:1040AC00F0D7310200084A7FFFDD1FA47FD7F0C193 +:1040BC005004FDC92BC08FB3FB5C9F9FB3FB7110E9 +:1040CC00C4FB30393C6194CD7FF0D731149706F5A1 +:1040DC0004F9712299D7716399F47E717207FD6EA0 +:1040EC0002717307D7FD6B05F2D7717BFAC7200CF1 +:1040FC00FBF8FF8FEAFBF0F9E9FBF303FD3E4F13EE +:10410C00BC048FECFBF0F9EBFBF303FD3E4F13BC4F +:10411C00028FEEFBF0F9EDFBF303FD3E4F13BB7189 +:10412C007AFAAC04BDD8F6BDDAAC04311EBDDCF6AF +:10413C00BDDEFDF00DADD8BDDCADDABDDEAC02BD33 +:10414C00D8F6BDDAAC02311EDADCC3DADEC3BDDC74 +:10415C00F6BDDEFDF00DC0BDDEC0BDDCADDEFD6626 +:10416C000FADD8BDDCADDABDDEABBDD8F6BDDAAB7C +:10417C00311EDADCC3DADEC3BDDCF6BDDEFDF00DCC +:10418C00C0BDDEC0BDDCADDEFD660FDADAADD8FD3C +:10419C00C544C3C58D8C5C3FF0317E0440FC14C219 +:1041AC00C0B9A48CF6BC08BC0A9C078C074C2EDD4D +:1041BC003D8D8C0E0770F161DC605C3FF0317E123E +:1041CC007940FCBDD8F6BDDA8C0773095C22318FBF +:1041DC00BDDC70BDDEFDF00DAC08BDDCAC0AFD66CF +:1041EC000FADDABC0AADD8BC08615907EFBDAC08FD +:1041FC00BDD8AC0ABDDAC9DC0004F6FDBA0EC9DCC8 +:10420C00FFFFF6FDBB0FADD8BD86AF3AFC4686DD91 +:10421C0011AF3CFCBF3EFCAF3AFCBF3CFCAD86BFD3 +:10422C003AFCAF3CFC423EFCDC46AF3AFC423CFC68 +:10423C00DE3EAD26423AFCDE374A2A16DC1A4A2A02 +:10424C00A0DE138D884B2ADE0DAF3AFC268A44691A +:10425C001061C8FDAE42F42AAF3AFC445146DC0A68 +:10426C00AF3AFC241027BD28EF0DC928F82AEF0718 +:10427C004A2AFF61E8A42AAF3EFC423CFCDC18AFA2 +:10428C003CFC423AFCDE10AF3AFC4628DE09F488CE +:10429C00AF3AFCBD8AEF074A88FF61E8A488100C8E +:1042AC00C6D7717BFAC7710A9E31929E02EFFA8EC5 +:1042BC00949F34FC8E969F35FC8E979F36FC8E987F +:1042CC009F37FC8E939F38FC8E929F39FC710B9E0E +:1042DC00717AFA8F37FCFDCF0F76FD434413BD8402 +:1042EC00D5EFFBDF0AD5F0FBDF05D5F1FBDD25F6BD +:1042FC00B14684DF11C9843722665C0391DF060A5C +:10430C0084181A85009617FD664513FD8643310403 +:10431C009A02EF61520692926934FC682EFCDFF629 +:10432C00AD84BD82F880F3311C790AF944FEFFDDBF +:10433C0044D880F101040AF914A944FFFFDF04E614 +:10434C00B9EF0BD880F101040AF914A9A1B9717B5A +:10435C00FAA0EFFBD5EFFBDF1CA0F0FBD5F0FBDFE9 +:10436C0014A0F1FBD5F1FBDF0CCFEFFBFFCFF0FB83 +:10437C00FFCFF1FBFFC6717AFAD7C716D880F107C9 +:10438C0044A800DC0571029AEF1CF647DD18A480E6 +:10439C004A80A8DC0571029AEF0CF880F3311CF608 +:1043AC00780AF9B7EFE4C6D7C756A89666F0317EFF +:1043BC0012F6B1780AF966D1DFF1717BFAF5EFFBF1 +:1043CC00F5F0FBF5F1FBF48071039AC6717AFAD71C +:1043DC00C72004FBF8FFD44ADF168D809D8D717BBE +:1043EC00FA52069292692EFC68C0FCDFF6717AFADA +:1043FC004A4A06DE0EE84A09C0FC9C03A44A8C0318 +:10440C0072EF30F88DF3311C790AF9BB31129A0531 +:10441C008B9C03EF0F8C019C03D48DDF05CD8DA7F6 +:10442C00EF02B48D718071179A61DC61FB71119A86 +:10443C008C03721004C6D7C72008FBF8FF8F37FC1B +:10444C00FDCF0F9C078F36FCFDCF0F9C068F35FCE4 +:10445C00FDCF0F9C058F34FCFDCF0F9C048F38FCD7 +:10446C009C038F39FC9C028C06318E0112791A2028 +:10447C00BB8C075C03D1DF098C064C0361C86179E6 +:10448C00008C05318EB1610900BB313D120103BBBB +:10449C008B0E04708C011C00BB8FF4FB4E03DC0EE6 +:1044AC008C034FF4FBDC0B8C024FF5FBDC04AB12E2 +:1044BC00EF03ABB1121008C6D7C7C3C12008FBF875 +:1044CC00FFF661490A61F8614908DF07F73400001B +:1044DC00ED6245E6BC04F6BC06AC0ABC02AC08BBFB +:1044EC00AC06614902AC0461F8614900DE28AC04F9 +:1044FC00BDD8AC06BDDAE1FD750FADDABC06ADD8A2 +:10450C00BC04ABBDD8AC02BDDAE1FD900FADDABC9A +:10451C0002ADD8BBEFCAAC06BC02AC04BBAC08BD48 +:10452C00D8AC0ABDDAAC04BDDCAC06FDF30EAC04B1 +:10453C00BDDCAC06FD660FE1FD900FADDABC06AD3F +:10454C00D8BC04AC06614902AC0461F8614900DCDA +:10455C00C5AC0214AB12100CC6D7C7C12004FBF8B3 +:10456C00FF8F31FCFDCF0F9C034E04DF1CAD824648 +:10457C0084DE07AD84268212EF40F64684DF0746C0 +:10458C0082DD03E7EF34F7EF318C04318EB1128CFE +:10459C0003318E43DF1830382226820684BB8C040C +:1045AC005C0391DF05AB041800BBAB12EF0C8C0362 +:1045BC004E04DE0532A900EF01F71006C6D7717B59 +:1045CC00FA31229A0CF64690DD07B690717AFAEF22 +:1045DC007C71239A717AFA4004F904DF077153074E +:1045EC00F42CEF69D9CFFBF1E7240000DD0F23DDBC +:1045FC001A23DD1023DD5323DD2723DD3871530708 +:10460C00F42CEF49715207F42CEF42D42CDF0771D4 +:10461C005207E42CEF05715307F42CC990FA00EF04 +:10462C002CD42CDF0B715207E42CC990FA00EF1D2F +:10463C00F5CFFBEF18D42CDF0B715307E42CC9908A +:10464C00FA00EF09CFCFFB02EF03FD5A46D7D9058D +:10465C00FCF1E7240000DD0923DD2123DD0923EF34 +:10466C001B715307F42CD7D42CDF07715207E42CA1 +:10467C00EF05715307F42CC9902D01D7715207E443 +:10468C002CD731629701D7710398D9CDFBF1E72470 +:10469C000000DD1223DD1923DD1123DD2623DD349B +:1046AC0023DD3923DD3FFD1A47EF3DFD3B47EF3856 +:1046BC00D9CCFBC1AE6CFDAA2DC0F313BE6C71231B +:1046CC0004EF25F0C1AE6CFDAA2DC0F313BE6C71C6 +:1046DC002304EF14F6BE6C712204EF0CCB6CFF00BC +:1046EC00712304EF03FDAF474004F905DD064004D8 +:1046FC00F901DF067123047103983104980FF6BE9B +:10470C0064BE6A31220402EF02F690BE6ED7CD2E43 +:10471C0047F492AE6C317DBFCAFCFD8447D2DF0EEC +:10472C00D9CCFBC1AE6CFDAA2DC0F313BE6CD7FD6A +:10473C008447D2DD0DCD2E47F492AE6C317DBFCACD +:10474C00FCD7E8920934205080D6BFC6FC22CAFCA4 +:10475C00BDD8304700FD1B0EBFC8FC30C6FCFDC0E9 +:10476C002DF313BE6CB42ED42EDF0CCD2E47A49299 +:10477C004A921F61C8F492D740AFFB0BDC05712342 +:10478C0004F2D740AFFB0661D831229611F0C1AECE +:10479C006CFDAA2DC0F313BE6C712204EF03FDAFA8 +:1047AC0047E2D7710298F0C1AE6CFDAA2DC0F3138D +:1047BC00BE6CA4934A9340DC37F493D894F1313F08 +:1047CC000412FD14D894F1BDD85008FD6A0E08727D +:1047DC0008E6D2DD040192DFFC896158D1DD057158 +:1047EC002204EF03712304A4944A942061C8F49426 +:1047FC00D7C73026FDC6D77180717DFADE03520112 +:10480C00D75200D7C7C12004FBF8FF17040300C11F +:10481C00E0C15010C150A4FDBB021006629C02D135 +:10482C00DD058C0272EF518C0C70C18C0470FD880C +:10483C0048C0629C02D1DD058C0272EF3B8C035C9C +:10484C007DD1DF03F2EF3117A1C1E0C15010C1508F +:10485C00A4FDBB021006629C02D1DD058C0272EF36 +:10486C00178C015C7DD1DD03F2EF0D8C0370C15010 +:10487C0010FD8848C0629C021006C6D7C788061671 +:10488C00710AE650A4FDEF03D2DD07713397520293 +:10489C00EF1317FD0B046770FD0B04FDB348FD7F90 +:1048AC0004713397F2C6D7FD560450A4FD0B045087 +:0948BC0020FD0B0450AAED0B04D1 +:1048C50061FC61FCC1C3C5C7520C929269D4FEC19B +:1048D500DFF88EFD708EFCC1717AFA4004F903DFB2 +:1048E5000530842A6194C09EFC609EFD34D4FE523E +:1048F50006C0B9A5A592DFF9C6C4C2C061FC61DFD7 +:10490500520C929269D4FEC1DFF88EFD708EFCC107 +:104915008F4105775C04D1DD06675C01D1DD50313F +:104925005498367162077153988FB4FB5FBCFBD105 +:10493500DF1B8FB5FB5FBDFBD1DF128FB6FB5FBE03 +:10494500FBD1DF098FB7FB5FBFFBD1DD0C31620700 +:1049550002EFFA716307716B2771139AFDCF30F47B +:10496500227148500571605005717AFAED5F4A670A +:104975005C02D1DD16D422DD124A2202DD0DF422BD +:104985007148500571605005717AFA717AFA8D2275 +:10499500318FE7240000DD0823DD1423DD2CEF4AE9 +:1049A500F44A7140500571505005E422ED5F4A8F7D +:1049B50040059D4B715050058D4B9D4DD84BFD9934 +:1049C50034629D4CCD2202ED5F4A675C02D1DD1752 +:1049D500675C10D1DD05CD2203EF0F7148500571DD +:1049E500605005F422EF73CD22044A2203DF108DB7 +:1049F5004C9F4005D84CC1D84BFD3035C0EF1F8FBB +:104A050040057671744BDC054A4B02DE0671605039 +:104A150005EF47C7D84BFD5F31C071505005D84DE4 +:104A2500F1242900DD27240400DD22242200DD1DD8 +:104A3500241100DD0C240100DD13241E00DD0EEF22 +:104A45000A4A4B60DF07CD4B61EF02A44B4A2203B4 +:104A5500DF08D84BFD9934629D4CC09EFC609EFDDD +:104A650034D4FE5206C0B9A5A592DFF961FCC1C3D5 +:104A7500C5C7520C929269D4FEC1DFF88EFD708EC7 +:104A8500FCC1717AFA51405F0401D1DD06F616A723 +:104A950047DFF2300400BF2401F6BF2A01300B0BBB +:104AA500BF2801FD6E02300B0FBF2801FD6E0230DD +:104AB5000F0FBF2801710AE6F6420C01DD33AF0482 +:104AC50001BF0C0131529729715297710BE2D851F0 +:104AD500FDEF033184BD02EFFACBB422FBD853F1CD +:104AE500BEB8714BE1714BE5710ABD8D529E44EF25 +:104AF5000C715397714AE5717BBD713397C09EFC6C +:104B0500609EFD34D4FE5206C0B9A5A592DFF9C654 +:104B1500C4C2C061FCC1C5717AFAD450DD0BEA4E3E +:104B2500899E44A64EB450EF33710AE6300400BFA7 +:104B35002401F6BF2A01300B0BBF2801000000003D +:104B450000000000510FBF28010000000000000018 +:104B550000500FBF2801712397713397C4C061FCC2 +:104B650061EF520C929269D4FEC1DFF88EFD708E12 +:104B7500FCC12006FBF8FF71503002CEABACCC0473 +:104B850000F6BB31B2E210617900F6614900DFF34E +:104B950071603002ED1F4C8E519C03713BE28C031A +:104BA5005C02D1DD1E8C035C08D1DF097150300237 +:104BB500CC0400EFCC8C0570FD1236629E50CC04FF +:104BC50002EFBE8C035C03D1DF408E509C02715016 +:104BD50030028C04D1DF0E8C0270FD5836629C05C4 +:104BE500CC0401EF328C044C02DF0671603002EF19 +:104BF50029CF34025A716030028C0270C18C057065 +:104C0500FDBA35C0CF34024AEF108C035C01D1DD0B +:104C15000671603002EF03ED864B1006C09EFC6006 +:104C25009EFD34D4FE5206C0B9A5A592DFF961FCFC +:104C3500C1C3C5C7520C929269D4FEC1DFF88EFD7F +:104C4500708EFCC1710A9E31929E02EFFA8FDEFBD7 +:104C55004F96FFDF198FDFFB4F97FFDF118FE0FBCB +:104C65004F98FFDF095004C15011FD5E35C0710B2F +:104C75009EC09EFC609EFD34D4FE5206C0B9A5A51B +:104C850092DFF9C6C4C2C061FCE46A61FCC1C3C558 +:104C9500C7520C929269D4FEC1DFF88EFD708EFC6E +:104CA500C1C1FBF8FF8D1F9C018E31318EE72406B3 +:104CB50000DD0823DD0E23DD22EF38717AFA8C0141 +:104CC5009D62EF2F717AFA4007F901DF068C019D8D +:104CD50061EF2051FF2E019D61EF18717AFA8C0169 +:104CE5009D304004F903DD064004F904DF0530DC9E +:104CF5002561944031FF09DE05A031FFEF077158AA +:104D0500F000716298710BE3C0C09EFC609EFD349B +:104D1500D4FE5206C0B9A5A592DFF9C6C4C2C061CA +:104D2500FC717BFAC7D46A61F831249927712399FC +:104D3500D46ADD05B46ACEABAC717AFA5600664C1E +:104D45000ADD1172F3311C79D8FCCEFC0061CA6111 +:104D5500A486EFEA717AFAF2C6D7C7C1C1FBF8FF9C +:104D6500CC01008C014C0ADE36717BFA8C01F031E6 +:104D75007E0410FC14A96168DF09AC02B9717AFAE6 +:104D8500F2EF1D8C01F0317E127910FC614902DFD2 +:104D950006717AFAE2EF09717AFA615901EFC4E214 +:104DA5001004C6D7C72004FBF8FFF64210FC61F8D3 +:104DB500ED8B4E717BFA9C038C034C0ADE3C8C0315 +:104DC500F0317E0410FC14A96168DF05717AFAEFF1 +:104DD50029717AFA8C0372F3311C7910FCCEFC0030 +:104DE50061CA629C02D1DF0A8C03F0317E12E6783B +:104DF50010FC717BFA615903EFBECC0200CC0101B6 +:104E05008C02F0317E0410FC14A96168DD788C02F7 +:104E1500F0317E127910FCE743DF658C014C0ADE28 +:104E25005F8C01F0317E127910FCE743DD4D717B1B +:104E3500FA8C01F0317E0410FC14A96168DF186159 +:104E450069018C01F0317E12F67810FC8C024E015E +:104E5500DCED717AFAEF2F8C01F0317E0410FC1431 +:104E6500A9128C02F0317E337810FC8C01F0317E72 +:104E750012E67810FC615902717AFA615901EF9BCB +:104E8500615902ED054E00F21004C6D761FF520CC0 +:104E9500929269D4FEC1DFF88EFD708EFCC1717AE5 +:104EA500FA8FE4FB5C03D1DD114004F903DD064014 +:104EB50004F904DF05301E396194C09EFC609EFD37 +:104EC50034D4FE5206C0B9A5A592DFF961FC61FC98 +:044ED50061FC61FC1F +:0A4EDA0000060C12181E242A3036C0 +:104EE400ACFB0000000066FE00000000733AA5362B +:104EF4008C228E46AC2E6B2FCA45A83BDB086C3D3A +:104F040028FC36FE20FE02F903F929FC30FE2AFCB7 +:104F14002BFC08F926FC6CFF1AFF6EFF6AFF64FF86 +:0A4F240027FC66FF2CFC555555557F +:104F2E00FF0000000000983AF82AFF00000047003A +:104F3E00317503F7332312D714AEF8C716AC061229 +:104F4E00C5AC0416F643DD078B99A7A5B3EFF5C2E2 +:024F5E00C6D7B4 +:024FF400337117 +:0A4FF60030393A34353A35390000FD +:00000001FF + \ No newline at end of file diff --git a/snake_branches/3.50_2dsll_lguide/bsr.lmf b/snake_branches/3.50_2dsll_lguide/bsr.lmf new file mode 100644 index 0000000000000000000000000000000000000000..dd27a0dfb784339410f5d9a2e36d91846fac090d GIT binary patch literal 184000 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 DP_}yf literal 0 HcmV?d00001 diff --git a/snake_branches/3.50_2dsll_lguide/bsr_k0r.map b/snake_branches/3.50_2dsll_lguide/bsr_k0r.map new file mode 100644 index 0000000..209e9b4 --- /dev/null +++ b/snake_branches/3.50_2dsll_lguide/bsr_k0r.map @@ -0,0 +1,897 @@ + + + +78K0R Linker W1.33 Date:25 Nov 2016 Page: 1 + +Command: -yC:\Program Files (x86)\NEC Electronics Tools\DEV -_msgoff - + obsr.lmf ..\..\..\..\Program Files (x86)\NEC Electronics Tool + s\CC78K0R\W2.13\lib78k0r\s0rm.rel -gi1B339499E033F240BFAAh -p + bsr_k0r.map -nkd -gb7EFBFFh -bC:\Program Files (x86)\NEC Elec + tronics Tools\CC78K0R\W2.13\lib78k0r\fsl.lib -bcl0rdm.lib -bc + l0rm.lib -bcl0rmf.lib -iC:\Program Files (x86)\NEC Electronic + s Tools\CC78K0R\W2.13\lib78k0r -dbsr_mcu.dr -s -w2 loader.rel + pm.rel i2c_ctr.rel main.rel magic.rel WDT.rel i2c_mcu.rel i2 + c_twl.rel led.rel rtc.rel vreg_ctr.rel vreg_twl.rel adc.rel r + enge.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 ta + sk_status.rel led_cam.rel led_pow.rel hal.rel batt_params.rel + voltable.rel pedo_lpf_coeff.rel kanaria.rel kanaria_c.rel ge + t_ei.rel util_funcs.rel i2c_mcu-sub.rel +Para-file: +Out-file: bsr.lmf +Map-file: bsr_k0r.map +Direc-file:bsr_mcu.dr + + +*** Link information *** + + 73 output segment(s) + 3EBEH byte(s) real data + 6429 symbol(s) defined + + +*** Memory map *** + + + SPACE=REGULAR + + MEMORY=BCL0 + BASE ADDRESS=00000H SIZE=01000H + OUTPUT INPUT INPUT BASE SIZE + SEGMENT SEGMENT MODULE ADDRESS + @@VECT00 00000H 00002H CSEG AT + @@VECT00 @cstart 00000H 00002H + LDR_CNSL 00002H 00000H CSEG PAGE64KP + LDR_CNSL 00002H 00000H CSEG PAGE64KP + LDR_CNSL loader 00002H 00000H + LDR_CNSL 00002H 00000H CSEG PAGE64KP + LDR_CNSL WDT 00002H 00000H + LDR_CNSL 00002H 00000H CSEG PAGE64KP + LDR_CNSL i2c_mcu 00002H 00000H + LDR_CNSL 00002H 00000H CSEG PAGE64KP + LDR_CNSL i2c_twl 00002H 00000H + LDR_CNSL 00002H 00000H CSEG PAGE64KP + LDR_CNSL self_flash + 00002H 00000H + LDR_CNSL 00002H 00000H CSEG PAGE64KP + LDR_CNSL task_debug + 00002H 00000H + LDR_CNSL 00002H 00000H CSEG PAGE64KP + LDR_CNSL task_status + 00002H 00000H + LDR_CNSL 00002H 00000H CSEG PAGE64KP + LDR_CNSL hal 00002H 00000H + LDR_CNSL 00002H 00000H CSEG PAGE64KP + LDR_CNSL util_funcs + 00002H 00000H +* gap * 00002H 0000EH + @@VECT10 00010H 00004H CSEG AT + @@VECT10 ini_VECT 00010H 00004H +* gap * 00014H 00008H + @@VECT1C 0001CH 00002H CSEG AT + @@VECT1C ini_VECT 0001CH 00002H +* gap * 0001EH 00006H + @@VECT24 00024H 00002H CSEG AT + @@VECT24 ini_VECT 00024H 00002H +* gap * 00026H 00004H + @@VECT2A 0002AH 00002H CSEG AT + @@VECT2A i2c_twl 0002AH 00002H +* gap * 0002CH 00008H + @@VECT34 00034H 00008H CSEG AT + @@VECT34 ini_VECT 00034H 00008H +* gap * 0003CH 0000EH + @@VECT4A 0004AH 00002H CSEG AT + @@VECT4A ini_VECT 0004AH 00002H +* gap * 0004CH 0000EH + @@VECT5A 0005AH 00002H CSEG AT + @@VECT5A i2c_ctr 0005AH 00002H +* gap * 0005CH 00006H + @@VECT62 00062H 00002H CSEG AT + @@VECT62 accero 00062H 00002H +* gap * 00064H 0001CH + @@CALT 00080H 00006H CSEG CALLT0 + @@CALT @cstart 00080H 00000H + @@CALT loader 00080H 00000H + @@CALT pm 00080H 00000H + @@CALT i2c_ctr 00080H 00000H + @@CALT main 00080H 00000H + @@CALT magic 00080H 00000H + @@CALT WDT 00080H 00000H + @@CALT i2c_mcu 00080H 00000H + @@CALT i2c_twl 00080H 00000H + @@CALT led 00080H 00000H + @@CALT rtc 00080H 00000H + @@CALT vreg_ctr 00080H 00000H + @@CALT vreg_twl 00080H 00000H + @@CALT adc 00080H 00000H + @@CALT renge 00080H 00006H + @@CALT accero 00086H 00000H + @@CALT self_flash + 00086H 00000H + @@CALT sw 00086H 00000H + @@CALT task_debug + 00086H 00000H + @@CALT task_misc + 00086H 00000H + @@CALT task_sys 00086H 00000H + @@CALT pedo_alg_thre_det2 + 00086H 00000H + @@CALT ini_VECT 00086H 00000H + @@CALT task_status + 00086H 00000H + @@CALT led_cam 00086H 00000H + @@CALT led_pow 00086H 00000H + @@CALT hal 00086H 00000H + @@CALT batt_params + 00086H 00000H + @@CALT voltable 00086H 00000H + @@CALT pedo_lpf_coeff + 00086H 00000H + @@CALT kanaria_c + 00086H 00000H + @@CALT util_funcs + 00086H 00000H + @@CALT i2c_mcu-sub + 00086H 00000H +* gap * 00086H 0003AH + ?CSEGOB0 000C0H 00004H CSEG OPT_BYTE + @@CODE 000C4H 00000H CSEG BASE + @@CODE magic 000C4H 00000H + @@CODE ini_VECT 000C4H 00000H + @@CODE batt_params + 000C4H 00000H + LDR_CODL 000C4H 00000H CSEG + LDR_CODL loader 000C4H 00000H + LDR_CODL WDT 000C4H 00000H + LDR_CODL i2c_mcu 000C4H 00000H + LDR_CODL i2c_twl 000C4H 00000H + LDR_CODL self_flash + 000C4H 00000H + LDR_CODL task_debug + 000C4H 00000H + LDR_CODL task_status + 000C4H 00000H + LDR_CODL hal 000C4H 00000H + LDR_CODL util_funcs + 000C4H 00000H + ?CSEGSI 000C4H 0000AH CSEG + LDR_CODE 000CEH 00982H CSEG + LDR_CODE loader 000CEH 001A0H + LDR_CODE WDT 0026EH 00000H + LDR_CODE i2c_mcu 0026EH 002A2H + LDR_CODE i2c_twl 00510H 0005BH + LDR_CODE self_flash + 0056BH 00370H + LDR_CODE task_debug + 008DBH 00000H + LDR_CODE task_status + 008DBH 00075H + LDR_CODE hal 00950H 000DCH + LDR_CODE util_funcs + 00A2CH 00024H + FSL_CODE 00A50H 00322H CSEG + FSL_CODE fsl_block_cmd + 00A50H 0002BH + FSL_CODE fsl_block_check + 00A7BH 00013H + FSL_CODE fsl_common + 00A8EH 0014FH + FSL_CODE fsl_reset + 00BDDH 00001H + FSL_CODE fsl_si_ibf + 00BDEH 00064H + FSL_CODE fsl_phySwap + 00C42H 0004DH + FSL_CODE fsl_si_common + 00C8FH 00061H + FSL_CODE fsl_swap 00CF0H 00030H + FSL_CODE fsl_write + 00D20H 00052H + @@LCODE 00D72H 00277H CSEG + @@LCODE @cstart 00D72H 0006DH + @@LCODE @imul 00DDFH 00011H + @@LCODE @lumul 00DF0H 0002BH + @@LCODE @isdiv 00E1BH 00022H + @@LCODE @iudiv 00E3DH 0002DH + @@LCODE @isrem 00E6AH 00021H + @@LCODE @iurem 00E8BH 0002FH + @@LCODE @lsdiv 00EBAH 00039H + @@LCODE @ludiv 00EF3H 0003FH + @@LCODE @divuw 00F32H 00034H + @@LCODE @ladd 00F66H 0000FH + @@LCODE @llsh 00F75H 0001BH + @@LCODE @lursh 00F90H 0001FH + @@LCODE @iscmp 00FAFH 0000CH + @@LCODE @lband 00FBBH 00014H + @@LCODE @bcdtob 00FCFH 0001AH +* gap * 00FE9H 0000DH + MGC_LOAD 00FF6H 0000AH CSEG AT + MGC_LOAD magic 00FF6H 0000AH + + MEMORY=ROM + BASE ADDRESS=02000H SIZE=03000H + OUTPUT INPUT INPUT BASE SIZE + SEGMENT SEGMENT MODULE ADDRESS + MGC_MIMI 02000H 0000AH CSEG AT + MGC_MIMI magic 02000H 0000AH + @@CNST 0200AH 00282H CSEG + @@CNST @cstart 0200AH 00000H + @@CNST loader 0200AH 00000H + @@CNST pm 0200AH 00008H + @@CNST i2c_ctr 02012H 00000H + @@CNST main 02012H 00000H + @@CNST magic 02012H 00000H + @@CNST WDT 02012H 00000H + @@CNST i2c_mcu 02012H 00000H + @@CNST i2c_twl 02012H 00000H + @@CNST led 02012H 00000H + @@CNST rtc 02012H 00000H + @@CNST vreg_ctr 02012H 00000H + @@CNST vreg_twl 02012H 00000H + @@CNST adc 02012H 00008H + @@CNST renge 0201AH 00000H + @@CNST accero 0201AH 00000H + @@CNST self_flash + 0201AH 00002H + @@CNST sw 0201CH 00000H + @@CNST task_debug + 0201CH 00000H + @@CNST task_misc + 0201CH 00000H + @@CNST task_sys 0201CH 00000H + @@CNST pedo_alg_thre_det2 + 0201CH 00018H + @@CNST ini_VECT 02034H 00000H + @@CNST task_status + 02034H 00000H + @@CNST led_cam 02034H 00000H + @@CNST led_pow 02034H 00020H + @@CNST hal 02054H 00000H + @@CNST batt_params + 02054H 001C8H + @@CNST voltable 0221CH 00040H + @@CNST pedo_lpf_coeff + 0225CH 00030H + @@CNST kanaria_c + 0228CH 00000H + @@CNST util_funcs + 0228CH 00000H + @@CNST i2c_mcu-sub + 0228CH 00000H + ROM_CODE 0228CH 02639H CSEG + ROM_CODE pm 0228CH 00A6DH + ROM_CODE i2c_ctr 02CF9H 0005CH + ROM_CODE main 02D55H 00055H + ROM_CODE led 02DAAH 00284H + ROM_CODE rtc 0302EH 000E0H + ROM_CODE vreg_ctr 0310EH 0049EH + ROM_CODE vreg_twl 035ACH 000F9H + ROM_CODE adc 036A5H 00261H + ROM_CODE renge 03906H 00018H + ROM_CODE accero 0391EH 00155H + ROM_CODE sw 03A73H 00135H + ROM_CODE task_misc + 03BA8H 001C4H + ROM_CODE task_sys 03D6CH 0038AH + ROM_CODE pedo_alg_thre_det2 + 040F6H 004D4H + ROM_CODE led_cam 045CAH 000C4H + ROM_CODE led_pow 0468EH 0016FH + ROM_CODE voltable 047FDH 00000H + ROM_CODE pedo_lpf_coeff + 047FDH 00000H + ROM_CODE kanaria_c + 047FDH 00006H + ROM_CODE get_ei 04803H 0000DH + ROM_CODE i2c_mcu-sub + 04810H 000B5H + @@BASE 048C5H 00614H CSEG BASE + @@BASE loader 048C5H 00000H + @@BASE pm 048C5H 0003EH + @@BASE i2c_ctr 04903H 00170H + @@BASE main 04A73H 00000H + @@BASE magic 04A73H 00000H + @@BASE WDT 04A73H 00000H + @@BASE i2c_mcu 04A73H 000F2H + @@BASE i2c_twl 04B65H 000D0H + @@BASE led 04C35H 00000H + @@BASE rtc 04C35H 0005DH + @@BASE vreg_ctr 04C92H 00000H + @@BASE vreg_twl 04C92H 00000H + @@BASE adc 04C92H 00094H + @@BASE renge 04D26H 0016BH + @@BASE accero 04E91H 00042H + @@BASE self_flash + 04ED3H 00000H + @@BASE sw 04ED3H 00000H + @@BASE task_debug + 04ED3H 00000H + @@BASE task_misc + 04ED3H 00000H + @@BASE task_sys 04ED3H 00000H + @@BASE pedo_alg_thre_det2 + 04ED3H 00000H + @@BASE ini_VECT 04ED3H 00006H + @@BASE task_status + 04ED9H 00000H + @@BASE led_cam 04ED9H 00000H + @@BASE led_pow 04ED9H 00000H + @@BASE hal 04ED9H 00000H + @@BASE batt_params + 04ED9H 00000H + @@BASE voltable 04ED9H 00000H + @@BASE pedo_lpf_coeff + 04ED9H 00000H + @@BASE kanaria_c + 04ED9H 00000H + @@BASE util_funcs + 04ED9H 00000H + @@BASE i2c_mcu-sub + 04ED9H 00000H + @@CNSTL 04ED9H 00000H CSEG PAGE64KP + @@CNSTL @cstart 04ED9H 00000H + @@CNSTL 04ED9H 00000H CSEG PAGE64KP + @@CNSTL pm 04ED9H 00000H + @@CNSTL 04ED9H 00000H CSEG PAGE64KP + @@CNSTL i2c_ctr 04ED9H 00000H + @@CNSTL 04ED9H 00000H CSEG PAGE64KP + @@CNSTL main 04ED9H 00000H + @@CNSTL 04ED9H 00000H CSEG PAGE64KP + @@CNSTL led 04ED9H 00000H + @@CNSTL 04ED9H 00000H CSEG PAGE64KP + @@CNSTL rtc 04ED9H 00000H + @@CNSTL 04ED9H 00000H CSEG PAGE64KP + @@CNSTL vreg_ctr 04ED9H 00000H + @@CNSTL 04ED9H 00000H CSEG PAGE64KP + @@CNSTL vreg_twl 04ED9H 00000H + @@CNSTL 04ED9H 00000H CSEG PAGE64KP + @@CNSTL adc 04ED9H 00000H + @@CNSTL 04ED9H 00000H CSEG PAGE64KP + @@CNSTL renge 04ED9H 00000H + @@CNSTL 04ED9H 00000H CSEG PAGE64KP + @@CNSTL accero 04ED9H 00000H + @@CNSTL 04ED9H 00000H CSEG PAGE64KP + @@CNSTL sw 04ED9H 00000H + @@CNSTL 04ED9H 00000H CSEG PAGE64KP + @@CNSTL task_misc + 04ED9H 00000H + @@CNSTL 04ED9H 00000H CSEG PAGE64KP + @@CNSTL task_sys 04ED9H 00000H + @@CNSTL 04ED9H 00000H CSEG PAGE64KP + @@CNSTL pedo_alg_thre_det2 + 04ED9H 00000H + @@CNSTL 04ED9H 00000H CSEG PAGE64KP + @@CNSTL ini_VECT 04ED9H 00000H + @@CNSTL 04ED9H 00000H CSEG PAGE64KP + @@CNSTL led_cam 04ED9H 00000H + @@CNSTL 04ED9H 00000H CSEG PAGE64KP + @@CNSTL led_pow 04ED9H 00000H + @@CNSTL 04ED9H 00000H CSEG PAGE64KP + @@CNSTL batt_params + 04ED9H 00000H + @@CNSTL 04ED9H 00000H CSEG PAGE64KP + @@CNSTL voltable 04ED9H 00000H + @@CNSTL 04ED9H 00000H CSEG PAGE64KP + @@CNSTL pedo_lpf_coeff + 04ED9H 00000H + @@CNSTL 04ED9H 00000H CSEG PAGE64KP + @@CNSTL kanaria_c + 04ED9H 00000H + @@CNSTL 04ED9H 00000H CSEG PAGE64KP + @@CNSTL i2c_mcu-sub + 04ED9H 00000H + @@RLINIT 04ED9H 00000H CSEG UNIT64KP + @@RLINIT loader 04ED9H 00000H + @@RLINIT pm 04ED9H 00000H + @@RLINIT i2c_ctr 04ED9H 00000H + @@RLINIT main 04ED9H 00000H + @@RLINIT magic 04ED9H 00000H + @@RLINIT WDT 04ED9H 00000H + @@RLINIT i2c_mcu 04ED9H 00000H + @@RLINIT i2c_twl 04ED9H 00000H + @@RLINIT led 04ED9H 00000H + @@RLINIT rtc 04ED9H 00000H + @@RLINIT vreg_ctr 04ED9H 00000H + @@RLINIT vreg_twl 04ED9H 00000H + @@RLINIT adc 04ED9H 00000H + @@RLINIT renge 04ED9H 00000H + @@RLINIT accero 04ED9H 00000H + @@RLINIT self_flash + 04ED9H 00000H + @@RLINIT sw 04ED9H 00000H + @@RLINIT task_debug + 04ED9H 00000H + @@RLINIT task_misc + 04ED9H 00000H + @@RLINIT task_sys 04ED9H 00000H + @@RLINIT pedo_alg_thre_det2 + 04ED9H 00000H + @@RLINIT ini_VECT 04ED9H 00000H + @@RLINIT task_status + 04ED9H 00000H + @@RLINIT led_cam 04ED9H 00000H + @@RLINIT led_pow 04ED9H 00000H + @@RLINIT hal 04ED9H 00000H + @@RLINIT batt_params + 04ED9H 00000H + @@RLINIT voltable 04ED9H 00000H + @@RLINIT pedo_lpf_coeff + 04ED9H 00000H + @@RLINIT kanaria_c + 04ED9H 00000H + @@RLINIT util_funcs + 04ED9H 00000H + @@RLINIT i2c_mcu-sub + 04ED9H 00000H + @@RLINIT @rom 04ED9H 00000H + @@CODEL 04ED9H 00000H CSEG + @@CODEL pm 04ED9H 00000H + @@CODEL i2c_ctr 04ED9H 00000H + @@CODEL main 04ED9H 00000H + @@CODEL magic 04ED9H 00000H + @@CODEL led 04ED9H 00000H + @@CODEL rtc 04ED9H 00000H + @@CODEL vreg_ctr 04ED9H 00000H + @@CODEL vreg_twl 04ED9H 00000H + @@CODEL adc 04ED9H 00000H + @@CODEL renge 04ED9H 00000H + @@CODEL accero 04ED9H 00000H + @@CODEL sw 04ED9H 00000H + @@CODEL task_misc + 04ED9H 00000H + @@CODEL task_sys 04ED9H 00000H + @@CODEL pedo_alg_thre_det2 + 04ED9H 00000H + @@CODEL ini_VECT 04ED9H 00000H + @@CODEL led_cam 04ED9H 00000H + @@CODEL led_pow 04ED9H 00000H + @@CODEL batt_params + 04ED9H 00000H + @@CODEL voltable 04ED9H 00000H + @@CODEL pedo_lpf_coeff + 04ED9H 00000H + @@CODEL kanaria_c + 04ED9H 00000H + @@CODEL i2c_mcu-sub + 04ED9H 00000H +* gap * 04ED9H 00001H + @@CNSTL 04EDAH 0000AH CSEG PAGE64KP + @@CNSTL @bcdtob 04EDAH 0000AH + @@R_INIT 04EE4H 0004AH CSEG UNIT64KP + @@R_INIT @cstart 04EE4H 00000H + @@R_INIT loader 04EE4H 00000H + @@R_INIT pm 04EE4H 00000H + @@R_INIT i2c_ctr 04EE4H 00000H + @@R_INIT main 04EE4H 00000H + @@R_INIT magic 04EE4H 00000H + @@R_INIT WDT 04EE4H 00000H + @@R_INIT i2c_mcu 04EE4H 00000H + @@R_INIT i2c_twl 04EE4H 00000H + @@R_INIT led 04EE4H 00000H + @@R_INIT rtc 04EE4H 00000H + @@R_INIT vreg_ctr 04EE4H 00000H + @@R_INIT vreg_twl 04EE4H 00000H + @@R_INIT adc 04EE4H 0000CH + @@R_INIT renge 04EF0H 00014H + @@R_INIT accero 04F04H 00000H + @@R_INIT self_flash + 04F04H 00000H + @@R_INIT sw 04F04H 00000H + @@R_INIT task_debug + 04F04H 00000H + @@R_INIT task_misc + 04F04H 00026H + @@R_INIT task_sys 04F2AH 00000H + @@R_INIT pedo_alg_thre_det2 + 04F2AH 00000H + @@R_INIT ini_VECT 04F2AH 00000H + @@R_INIT task_status + 04F2AH 00000H + @@R_INIT led_cam 04F2AH 00000H + @@R_INIT led_pow 04F2AH 00004H + @@R_INIT hal 04F2EH 00000H + @@R_INIT batt_params + 04F2EH 00000H + @@R_INIT voltable 04F2EH 00000H + @@R_INIT pedo_lpf_coeff + 04F2EH 00000H + @@R_INIT kanaria_c + 04F2EH 00000H + @@R_INIT util_funcs + 04F2EH 00000H + @@R_INIT i2c_mcu-sub + 04F2EH 00000H + @@R_INIT @rom 04F2EH 00000H + @@R_INIS 04F2EH 00010H CSEG UNIT64KP + @@R_INIS @cstart 04F2EH 00000H + @@R_INIS loader 04F2EH 00000H + @@R_INIS pm 04F2EH 00002H + @@R_INIS i2c_ctr 04F30H 00002H + @@R_INIS main 04F32H 00000H + @@R_INIS magic 04F32H 00000H + @@R_INIS WDT 04F32H 00000H + @@R_INIS i2c_mcu 04F32H 00000H + @@R_INIS i2c_twl 04F32H 00000H + @@R_INIS led 04F32H 00000H + @@R_INIS rtc 04F32H 00000H + @@R_INIS vreg_ctr 04F32H 00000H + @@R_INIS vreg_twl 04F32H 00000H + @@R_INIS adc 04F32H 00000H + @@R_INIS renge 04F32H 00000H + @@R_INIS accero 04F32H 00000H + @@R_INIS self_flash + 04F32H 00000H + @@R_INIS sw 04F32H 00000H + @@R_INIS task_debug + 04F32H 00000H + @@R_INIS task_misc + 04F32H 00000H + @@R_INIS task_sys 04F32H 00002H + @@R_INIS pedo_alg_thre_det2 + 04F34H 00006H + @@R_INIS ini_VECT 04F3AH 00000H + @@R_INIS task_status + 04F3AH 00000H + @@R_INIS led_cam 04F3AH 00002H + @@R_INIS led_pow 04F3CH 00002H + @@R_INIS hal 04F3EH 00000H + @@R_INIS batt_params + 04F3EH 00000H + @@R_INIS voltable 04F3EH 00000H + @@R_INIS pedo_lpf_coeff + 04F3EH 00000H + @@R_INIS kanaria_c + 04F3EH 00000H + @@R_INIS util_funcs + 04F3EH 00000H + @@R_INIS i2c_mcu-sub + 04F3EH 00000H + @@R_INIS @rom 04F3EH 00000H + @@LCODEL 04F3EH 00022H CSEG + @@LCODEL abs 04F3EH 00008H + @@LCODEL memcpy_n 04F46H 0001AH +* gap * 04F60H 00094H + MGC_VER 04FF4H 00002H CSEG AT + MGC_VER magic 04FF4H 00002H + MGC_TAIL 04FF6H 0000AH CSEG AT + MGC_TAIL magic 04FF6H 0000AH + + MEMORY=RAM + BASE ADDRESS=FF900H SIZE=00500H + OUTPUT INPUT INPUT BASE SIZE + SEGMENT SEGMENT MODULE ADDRESS + @@DATA FF900H 003CCH DSEG BASEP + @@DATA @cstart FF900H 00002H + @@DATA loader FF902H 00000H + @@DATA pm FF902H 00002H + @@DATA i2c_ctr FF904H 00000H + @@DATA main FF904H 0021EH + @@DATA magic FFB22H 00000H + @@DATA WDT FFB22H 00000H + @@DATA i2c_mcu FFB22H 00004H + @@DATA i2c_twl FFB26H 00000H + @@DATA led FFB26H 00076H + @@DATA rtc FFB9CH 00008H + @@DATA vreg_ctr FFBA4H 0005CH + @@DATA vreg_twl FFC00H 00010H + @@DATA adc FFC10H 00000H + @@DATA renge FFC10H 00014H + @@DATA accero FFC24H 00000H + @@DATA self_flash + FFC24H 00002H + @@DATA sw FFC26H 00000H + @@DATA task_debug + FFC26H 00000H + @@DATA task_misc + FFC26H 00008H + @@DATA task_sys FFC2EH 00000H + @@DATA pedo_alg_thre_det2 + FFC2EH 00098H + @@DATA ini_VECT FFCC6H 00000H + @@DATA task_status + FFCC6H 00000H + @@DATA led_cam FFCC6H 00000H + @@DATA led_pow FFCC6H 00006H + @@DATA hal FFCCCH 00000H + @@DATA batt_params + FFCCCH 00000H + @@DATA voltable FFCCCH 00000H + @@DATA pedo_lpf_coeff + FFCCCH 00000H + @@DATA kanaria FFCCCH 00000H + @@DATA kanaria_c + FFCCCH 00000H + @@DATA util_funcs + FFCCCH 00000H + @@DATA i2c_mcu-sub + FFCCCH 00000H + @@DATA @rom FFCCCH 00000H + @@INIT FFCCCH 0004AH DSEG BASEP + @@INIT @cstart FFCCCH 00000H + @@INIT loader FFCCCH 00000H + @@INIT pm FFCCCH 00000H + @@INIT i2c_ctr FFCCCH 00000H + @@INIT main FFCCCH 00000H + @@INIT magic FFCCCH 00000H + @@INIT WDT FFCCCH 00000H + @@INIT i2c_mcu FFCCCH 00000H + @@INIT i2c_twl FFCCCH 00000H + @@INIT led FFCCCH 00000H + @@INIT rtc FFCCCH 00000H + @@INIT vreg_ctr FFCCCH 00000H + @@INIT vreg_twl FFCCCH 00000H + @@INIT adc FFCCCH 0000CH + @@INIT renge FFCD8H 00014H + @@INIT accero FFCECH 00000H + @@INIT self_flash + FFCECH 00000H + @@INIT sw FFCECH 00000H + @@INIT task_debug + FFCECH 00000H + @@INIT task_misc + FFCECH 00026H + @@INIT task_sys FFD12H 00000H + @@INIT pedo_alg_thre_det2 + FFD12H 00000H + @@INIT ini_VECT FFD12H 00000H + @@INIT task_status + FFD12H 00000H + @@INIT led_cam FFD12H 00000H + @@INIT led_pow FFD12H 00004H + @@INIT hal FFD16H 00000H + @@INIT batt_params + FFD16H 00000H + @@INIT voltable FFD16H 00000H + @@INIT pedo_lpf_coeff + FFD16H 00000H + @@INIT kanaria FFD16H 00000H + @@INIT kanaria_c + FFD16H 00000H + @@INIT util_funcs + FFD16H 00000H + @@INIT i2c_mcu-sub + FFD16H 00000H + @@INIT @rom FFD16H 00000H + FSL_DATA FFD16H 00010H DSEG UNITP + FSL_DATA fsl_common + FFD16H 00010H + @@INITL FFD26H 00000H DSEG UNIT64KP + @@INITL loader FFD26H 00000H + @@INITL pm FFD26H 00000H + @@INITL i2c_ctr FFD26H 00000H + @@INITL main FFD26H 00000H + @@INITL magic FFD26H 00000H + @@INITL WDT FFD26H 00000H + @@INITL i2c_mcu FFD26H 00000H + @@INITL i2c_twl FFD26H 00000H + @@INITL led FFD26H 00000H + @@INITL rtc FFD26H 00000H + @@INITL vreg_ctr FFD26H 00000H + @@INITL vreg_twl FFD26H 00000H + @@INITL adc FFD26H 00000H + @@INITL renge FFD26H 00000H + @@INITL accero FFD26H 00000H + @@INITL self_flash + FFD26H 00000H + @@INITL sw FFD26H 00000H + @@INITL task_debug + FFD26H 00000H + @@INITL task_misc + FFD26H 00000H + @@INITL task_sys FFD26H 00000H + @@INITL pedo_alg_thre_det2 + FFD26H 00000H + @@INITL ini_VECT FFD26H 00000H + @@INITL task_status + FFD26H 00000H + @@INITL led_cam FFD26H 00000H + @@INITL led_pow FFD26H 00000H + @@INITL hal FFD26H 00000H + @@INITL batt_params + FFD26H 00000H + @@INITL voltable FFD26H 00000H + @@INITL pedo_lpf_coeff + FFD26H 00000H + @@INITL kanaria FFD26H 00000H + @@INITL kanaria_c + FFD26H 00000H + @@INITL util_funcs + FFD26H 00000H + @@INITL i2c_mcu-sub + FFD26H 00000H + @@INITL @rom FFD26H 00000H + @@DATAL FFD26H 00000H DSEG UNIT64KP + @@DATAL loader FFD26H 00000H + @@DATAL pm FFD26H 00000H + @@DATAL i2c_ctr FFD26H 00000H + @@DATAL main FFD26H 00000H + @@DATAL magic FFD26H 00000H + @@DATAL WDT FFD26H 00000H + @@DATAL i2c_mcu FFD26H 00000H + @@DATAL i2c_twl FFD26H 00000H + @@DATAL led FFD26H 00000H + @@DATAL rtc FFD26H 00000H + @@DATAL vreg_ctr FFD26H 00000H + @@DATAL vreg_twl FFD26H 00000H + @@DATAL adc FFD26H 00000H + @@DATAL renge FFD26H 00000H + @@DATAL accero FFD26H 00000H + @@DATAL self_flash + FFD26H 00000H + @@DATAL sw FFD26H 00000H + @@DATAL task_debug + FFD26H 00000H + @@DATAL task_misc + FFD26H 00000H + @@DATAL task_sys FFD26H 00000H + @@DATAL pedo_alg_thre_det2 + FFD26H 00000H + @@DATAL ini_VECT FFD26H 00000H + @@DATAL task_status + FFD26H 00000H + @@DATAL led_cam FFD26H 00000H + @@DATAL led_pow FFD26H 00000H + @@DATAL hal FFD26H 00000H + @@DATAL batt_params + FFD26H 00000H + @@DATAL voltable FFD26H 00000H + @@DATAL pedo_lpf_coeff + FFD26H 00000H + @@DATAL kanaria FFD26H 00000H + @@DATAL kanaria_c + FFD26H 00000H + @@DATAL util_funcs + FFD26H 00000H + @@DATAL i2c_mcu-sub + FFD26H 00000H + @@DATAL @rom FFD26H 00000H +* gap * FFD26H 000DAH + + MEMORY=RAM2 + BASE ADDRESS=FFE20H SIZE=000C0H + OUTPUT INPUT INPUT BASE SIZE + SEGMENT SEGMENT MODULE ADDRESS + @@INIS FFE20H 00010H DSEG SADDRP + @@INIS @cstart FFE20H 00000H + @@INIS loader FFE20H 00000H + @@INIS pm FFE20H 00002H + @@INIS i2c_ctr FFE22H 00002H + @@INIS main FFE24H 00000H + @@INIS magic FFE24H 00000H + @@INIS WDT FFE24H 00000H + @@INIS i2c_mcu FFE24H 00000H + @@INIS i2c_twl FFE24H 00000H + @@INIS led FFE24H 00000H + @@INIS rtc FFE24H 00000H + @@INIS vreg_ctr FFE24H 00000H + @@INIS vreg_twl FFE24H 00000H + @@INIS adc FFE24H 00000H + @@INIS renge FFE24H 00000H + @@INIS accero FFE24H 00000H + @@INIS self_flash + FFE24H 00000H + @@INIS sw FFE24H 00000H + @@INIS task_debug + FFE24H 00000H + @@INIS task_misc + FFE24H 00000H + @@INIS task_sys FFE24H 00002H + @@INIS pedo_alg_thre_det2 + FFE26H 00006H + @@INIS ini_VECT FFE2CH 00000H + @@INIS task_status + FFE2CH 00000H + @@INIS led_cam FFE2CH 00002H + @@INIS led_pow FFE2EH 00002H + @@INIS hal FFE30H 00000H + @@INIS batt_params + FFE30H 00000H + @@INIS voltable FFE30H 00000H + @@INIS pedo_lpf_coeff + FFE30H 00000H + @@INIS kanaria_c + FFE30H 00000H + @@INIS util_funcs + FFE30H 00000H + @@INIS i2c_mcu-sub + FFE30H 00000H + @@INIS @rom FFE30H 00000H + @@DATS FFE30H 00066H DSEG SADDRP + @@DATS @cstart FFE30H 00000H + @@DATS loader FFE30H 00000H + @@DATS pm FFE30H 0001AH + @@DATS i2c_ctr FFE4AH 00004H + @@DATS main FFE4EH 00000H + @@DATS magic FFE4EH 00000H + @@DATS WDT FFE4EH 00000H + @@DATS i2c_mcu FFE4EH 00008H + @@DATS i2c_twl FFE56H 00000H + @@DATS led FFE56H 00006H + @@DATS rtc FFE5CH 00000H + @@DATS vreg_ctr FFE5CH 00004H + @@DATS vreg_twl FFE60H 00000H + @@DATS adc FFE60H 0000AH + @@DATS renge FFE6AH 00002H + @@DATS accero FFE6CH 00002H + @@DATS self_flash + FFE6EH 00000H + @@DATS sw FFE6EH 0000CH + @@DATS task_debug + FFE7AH 00000H + @@DATS task_misc + FFE7AH 00004H + @@DATS task_sys FFE7EH 00002H + @@DATS pedo_alg_thre_det2 + FFE80H 0000EH + @@DATS ini_VECT FFE8EH 00000H + @@DATS task_status + FFE8EH 00002H + @@DATS led_cam FFE90H 00002H + @@DATS led_pow FFE92H 00004H + @@DATS hal FFE96H 00000H + @@DATS batt_params + FFE96H 00000H + @@DATS voltable FFE96H 00000H + @@DATS pedo_lpf_coeff + FFE96H 00000H + @@DATS kanaria_c + FFE96H 00000H + @@DATS util_funcs + FFE96H 00000H + @@DATS i2c_mcu-sub + FFE96H 00000H + @@DATS @rom FFE96H 00000H + @@BITS FFE96H 00006H BSEG + @@BITS @cstart FFE96H.0 00000H.0 + @@BITS loader FFE96H.0 00000H.0 + @@BITS pm FFE96H.0 00001H.1 + @@BITS i2c_ctr FFE97H.1 00000H.0 + @@BITS main FFE97H.1 00000H.1 + @@BITS magic FFE97H.2 00000H.0 + @@BITS WDT FFE97H.2 00000H.0 + @@BITS i2c_mcu FFE97H.2 00000H.4 + @@BITS i2c_twl FFE97H.6 00000H.0 + @@BITS led FFE97H.6 00000H.4 + @@BITS rtc FFE98H.2 00000H.3 + @@BITS vreg_ctr FFE98H.5 00000H.1 + @@BITS vreg_twl FFE98H.6 00000H.0 + @@BITS adc FFE98H.6 00000H.4 + @@BITS renge FFE99H.2 00000H.2 + @@BITS accero FFE99H.4 00000H.0 + @@BITS self_flash + FFE99H.4 00000H.0 + @@BITS sw FFE99H.4 00000H.1 + @@BITS task_debug + FFE99H.5 00000H.0 + @@BITS task_misc + FFE99H.5 00000H.3 + @@BITS task_sys FFE9AH.0 00000H.0 + @@BITS pedo_alg_thre_det2 + FFE9AH.0 00000H.2 + @@BITS ini_VECT FFE9AH.2 00000H.0 + @@BITS task_status + FFE9AH.2 00000H.0 + @@BITS led_cam FFE9AH.2 00000H.1 + @@BITS led_pow FFE9AH.3 00000H.0 + @@BITS hal FFE9AH.3 00000H.6 + @@BITS batt_params + FFE9BH.1 00000H.0 + @@BITS voltable FFE9BH.1 00000H.0 + @@BITS pedo_lpf_coeff + FFE9BH.1 00000H.0 + @@BITS kanaria_c + FFE9BH.1 00000H.0 + @@BITS util_funcs + FFE9BH.1 00000H.0 + @@BITS i2c_mcu-sub + FFE9BH.1 00000H.0 +* gap * FFE9CH 00038H + @@SEGREG FFED4H 00004H DSEG AT + @@SEGREG @SEGREG FFED4H 00004H + @@RTARG0 FFED8H 00008H DSEG AT + @@RTARG0 @RTARG0 FFED8H 00008H + + + Target chip : uPD79F0104 + Device file : E1.00b + \ No newline at end of file diff --git a/snake_branches/3.50_2dsll_lguide/bsr_mcu.dr b/snake_branches/3.50_2dsll_lguide/bsr_mcu.dr new file mode 100644 index 0000000..81aeecc --- /dev/null +++ b/snake_branches/3.50_2dsll_lguide/bsr_mcu.dr @@ -0,0 +1,46 @@ +;;; ̈̒` +;32kB = 0x7FFF +MEMORY BCL0: (00000H, 01000H ) +;MEMORY BCL1: (01000H, 01000H ) ; obNAbv̈ +MEMORY ROM : (02000H, 03000H ) +;MEMORY ROM_BKUP:(05000H, 03000H ) ; obNAbv̈ +;MEMORY OCD :(0FC00H, 00400H ) ; OCDgĂ炵 + + +;;; ZOg̊ݒ +; u[gubN0Ɋ蓖Ă +MERGE LDR_CODE : =BCL0 +MERGE LDR_CODL : =BCL0 +MERGE FSL_CODE : =BCL0 ; =FSL ; ސtbVCu +MERGE @@LCODE : =BCL0 ; X^[gAbv[` +;MERGE @@LCODEL : =BCL0 + +;MERGE LDR_RINT:=BCL0 +;MERGE LDR_CNST:=BCL0 +MERGE LDR_CNSL:=BCL0 + + + +; ʏ̈ɒu +MERGE ROM_CODE:=ROM +MERGE @@CNST: =ROM +MERGE @@R_INIT: =ROM ; ROMȊOɒuȂX^[gAbv[`vC + + + + + + +; }WbNio[ +;; magic.c̒Ŏw + + +;--- RAM̈ ------------------------------------------------------- +; +; RAM1,RAM2̈̓[U[vOŎgpĂǂłAZtvO +; ZtvÕCugp邽߁Al͔j󂳂܂B +; +memory RAM : (0FF900H, 0500H) ; [U[q`l̈ +;memory SLF_RAM : (0FF900H, 0020H) ; Slef Program\̈[gp֎~] +memory RAM2 : (0FFE20H, 00C0H) ; ZtvOAgp֎~̈ +;memory SLF_RAM : (0FFE00H, 0020H) ; Slef Program\̈[gp֎~] diff --git a/snake_branches/3.50_2dsll_lguide/bsr_system.h b/snake_branches/3.50_2dsll_lguide/bsr_system.h new file mode 100644 index 0000000..af209d1 --- /dev/null +++ b/snake_branches/3.50_2dsll_lguide/bsr_system.h @@ -0,0 +1,73 @@ +#ifndef __bsr_system__ +#define __bsr_system__ + +// $Id$ + + +// Cxg[ṽXe[g +enum pwr_state_ +{ + OFF_TRIG = 0, + ON_CHECK, + ON_TRIG, + ON, +// SLEEP_TRIG, + SLEEP, +// WAKE, + OFF, +}; + +enum poweron_reason_ +{ + NONE = 0, + RSN_PWSW, + RSN_RTC_ALARM, + RSN_TRIAL, // ̌ + RSN_RSV4, + RSN_RSV5 +}; + + +enum model_ +{ + MODEL_JIKKI, + MODEL_TS_BOARD, + MODEL_KUC_DEBUGGER, + MODEL_JIKKI_NOBATT, + MODEL_KUC_CAPTURE, + MODEL_IS_DEBUGGER, // Asystem_status.model MODEL_JIKKI ɂĂ̂Ŗgp + MODEL_IS_CAPTURE, +}; + +enum family_ +{ + FAMILY_CTR, + FAMILY_SPFL, // LL=XL + FAMILY_SNAKE, // LAGER=New3DS + FAMILY_FLOWER, // 2DS=RED + FAMILY_CLOSER, + FAMILY_JANE, +}; + +// ^XNVXȅԏȂ +typedef struct _system_status_ +{ + enum pwr_state_ pwr_state; + enum poweron_reason_ poweron_reason; + unsigned char reboot:1; + unsigned char captureBox:1; // Lv` SDK ɂ͎@ƕԂ + unsigned char taikendai:1; + unsigned char taikendai_nbd:1; + unsigned char is_dev:1; // IS ̃fobKAقڎ@ + enum model_ model; + enum family_ family; + unsigned char LCD_is_CGS:1; +}system_status_; + +extern bit force_off; + +extern system_status_ system_status; + + + +#endif diff --git a/snake_branches/3.50_2dsll_lguide/config.h b/snake_branches/3.50_2dsll_lguide/config.h new file mode 100644 index 0000000..fedea04 --- /dev/null +++ b/snake_branches/3.50_2dsll_lguide/config.h @@ -0,0 +1,113 @@ +#ifndef __config__ +#define __config__ +/* + + $Id: config.h 418 2011-09-22 01:35:37Z n2232 $ + +*/ + +#define MCU_VER_MAJOR 0x03 +#define MCU_VER_MINOR 0x41 +/* +2014/02/13 2.36 琰ăW[グB +}Ci[͈p +*/ + + +// rhXCb` +#define _MCU_ARR // snake,closer + + +// fobOXCb` + +//#define _debug_led_ // LED print fobOƂ +//#define _ALLOW_NOBATT_ // @drȂi=A_v^̂݁jł̋N +//#define _DBG_LED_PRINT_ // LED print fobOƂ(ȃAbvf[gp) +//#define _ENABLE_COMMAND3_ // mcuZbgwdtR}hLɂ +//#define _FORCE_TAIKENDAI_ +//#define _FORCE_TAIKENDAI_NBD_ + +//#define _DBG_CHK_OFF_LEAK_ // OFF[Nd̃`FbN(fobKŊmF) +//#define _DBG_NOP_ // u[N\邽߂NOP()LɂƂ + +//#define _ENABLE_HAL_ // fobOpHALLɂBRgAEgŃX[ɂȂB +//#define _ENABLE_PRESS_SEL_TO_WDT_ // SEL WDT + +//#define _WDT_CHECK_ // WDT炵̂ŒǐՂƂbreakāAR[X^bN +// IvVoCg1oCgځAbit7ZbgKv܂B + +//#define _DI_WITH_CHECK_ // 荞݋֎~dɊ|Ȃ`FbN + +//#define _DBG_BT_FULL_ +//#define _DBG_FORCE_FLOWER + + +#ifdef _DBG_NOP_ // R[hKvNOPƋʂ邽 +# define dbg_nop() NOP() +#else +# define dbg_nop() ; +#endif + + +#define _I2C_ERR_ABORT_ // *Won* I2CŌ돑݂炵ȍ~@ + //. u[NĂSRȂȂ܂... + +// dlt@[ +//#define _TAIKENDAI_ +// homej[ɓĂ܂̂t@[‚BROMȂ̂œdrp[^pX +//#define _TAIKENDAI_SEISAN_SPECIAL_ +// Yɑ̌dlǂƁAA_v^ȂƓd炸ɌɎxႪ̂ňꎞt@[ +//#define _RVD_ +// fobKA^b`Ƀ^[QbgZbgœd؂Ă܂̂ + + +// ̎́C‚ȂƑ̌̐YłȂˁI +#ifdef _TAIKENDAI_SEISAN_SPECIAL_ +#define MCU_VER_MINOR 0x81 +#endif + + +#ifdef _TAIKENDAI_ +#define MCU_VER_MINOR 0x92 +// 0x90 1.31 @HOMEɓĂ܂̂XCb`̃}XNő΍ +// ROMŝ߁Adrp[^폜 + +#endif + + +#define _firm_format_v3_ + +//#define _MODEL_TEG2_ + // TEG2 CPU { Type-T + +//#define _MODEL_WM0_ +//#define _MODEL_WM0_TEG2_CTRC_ + +//#define _MODEL_TS0_ + // TEG2 CPU { Type-C + +#define _MODEL_CTR_ + // TS board, WM1,1 TS-CTRC, @ + + +// ---------------------------------- // +#ifdef _MODEL_TEG2_ +unsupported! +#endif + + +#ifdef _MODEL_WM0_ +unsupported! +#endif + + +#ifdef _MODEL_TS0_ +unsupported! +#endif + +#ifdef _MODEL_CTR_ +#define _PMIC_CTR_ +#define _MCU_BSR_ +#endif + +#endif diff --git a/snake_branches/3.50_2dsll_lguide/fsl.h b/snake_branches/3.50_2dsll_lguide/fsl.h new file mode 100644 index 0000000..0e806b5 --- /dev/null +++ b/snake_branches/3.50_2dsll_lguide/fsl.h @@ -0,0 +1,362 @@ +/*==============================================================================================*/ +/* Project = Selfprogramming library for 78K0R/Ix3/Kx3-L Single Voltage SST (MF2) Flash */ +/* Module = fsl.h */ +/* Version = V1.01 */ +/* Date = 28.03.2008 11:45:42 */ +/*==============================================================================================*/ +/* COPYRIGHT */ +/*==============================================================================================*/ +/* Copyright (c) 2007 by NEC Electronics (Europe) GmbH, */ +/* a company of the NEC Electronics Corporation */ +/*==============================================================================================*/ +/* Purpose: */ +/* constant, type and function prototype definitions used by the FSL */ +/* */ +/*==============================================================================================*/ +/* */ +/* Warranty Disclaimer */ +/* */ +/* Because the Product(s) is licensed free of charge, there is no warranty of any kind */ +/* whatsoever and expressly disclaimed and excluded by NEC, either expressed or implied, */ +/* including but not limited to those for non-infringement of intellectual property, */ +/* merchantability and/or fitness for the particular purpose. NEC shall not have any obligation */ +/* to maintain, service or provide bug fixes for the supplied Product(s) and/or the Application.*/ +/* */ +/* Each User is solely responsible for determining the appropriateness of using the Product(s) */ +/* and assumes all risks associated with its exercise of rights under this Agreement, */ +/* including, but not limited to the risks and costs of program errors, compliance with */ +/* applicable laws, damage to or loss of data, programs or equipment, and unavailability or */ +/* interruption of operations. */ +/* */ +/* Limitation of Liability */ +/* */ +/* In no event shall NEC be liable to the User for any incidental, consequential, indirect, */ +/* or punitive damage (including but not limited to lost profits) regardless of whether */ +/* such liability is based on breach of contract, tort, strict liability, breach of warranties, */ +/* failure of essential purpose or otherwise and even if advised of the possibility of */ +/* such damages. NEC shall not be liable for any services or products provided by third party */ +/* vendors, developers or consultants identified or referred to the User by NEC in connection */ +/* with the Product(s) and/or the Application. */ +/* */ +/*==============================================================================================*/ +/* Environment: PM plus (V6.30) */ +/* RA78K0(V1.20) */ +/* CC78K0(V2.00) */ +/*==============================================================================================*/ + +#ifndef __FSL_H_INCLUDED +#define __FSL_H_INCLUDED + + +/*==============================================================================================*/ +/* FSL type definitions */ +/*==============================================================================================*/ +typedef unsigned char fsl_u08; +typedef unsigned int fsl_u16; +typedef unsigned long int fsl_u32; + + +/*==============================================================================================*/ +/* constant definitions */ +/*==============================================================================================*/ + +/*status code definitions returned by the FSL functions */ +#define FSL_OK 0x00 +#define FSL_ERR_FLMD0 0x01 +#define FSL_ERR_PARAMETER 0x05 +#define FSL_ERR_PROTECTION 0x10 +#define FSL_ERR_ERASE 0x1A +#define FSL_ERR_BLANKCHECK 0x1B +#define FSL_ERR_IVERIFY 0x1B +#define FSL_ERR_WRITE 0x1C +#define FSL_ERR_EEP_IVERIFY 0x1D +#define FSL_ERR_EEP_BLANKCHECK 0x1E +#define FSL_ERR_INTERRUPTION 0x1F + + +/*==============================================================================================*/ +/* global function prototypes */ +/*==============================================================================================*/ + + +/*----------------------------------------------------------------------------------------------*/ +/* Block type: FSL command function */ +/*----------------------------------------------------------------------------------------------*/ +/* Purpose: initialization of selfprogramming environment */ +/* After initialization: */ +/* - the pointer to the data-buffer is stored */ +/* - all timing data are re-calculated according to the used system clock */ +/* */ +/* CAUTION: */ +/* The FSL_Init(&data_buffer) function is interruptible. Please use the */ +/* FSL_Init_cont(&data_buffer) to recall it as long return status is 0x1F. */ +/* */ +/* Input: data_buffer_pu08 - pointer to a data buffer of N...256 bytes */ +/* (used for data exchange between firmware and application) */ +/* Output: - */ +/* Returned: u08, status_code */ +/* = 0x00(FSL_OK), normal and means initialization OK */ +/* = 0x1F(FSL_ERR_INTERRUPTION), initialization interrupted by user interrupt*/ +/*----------------------------------------------------------------------------------------------*/ +extern fsl_u08 FSL_Init( fsl_u08 * data_buffer_pu08 ); +extern fsl_u08 FSL_Init_cont( fsl_u08 * data_buffer_pu08 ); + + +/*----------------------------------------------------------------------------------------------*/ +/* Block type: FSL command function */ +/*----------------------------------------------------------------------------------------------*/ +/* Purpose: checks the voltage level (high or low) at FLMD0 pin */ +/* Input: - */ +/* Output: - */ +/* Returned: fsl_u08, status_code */ +/* = 0x00(FSL_OK), normal and means FLMD0=HIGH */ +/* = 0x01(FSL_ERR_FLMD0), error, FLMD0=LOW */ +/*----------------------------------------------------------------------------------------------*/ +extern fsl_u08 FSL_ModeCheck( void ); + + +/*----------------------------------------------------------------------------------------------*/ +/* Block type: FSL command function */ +/*----------------------------------------------------------------------------------------------*/ +/* Purpose: checks if specified block is blank */ +/* Input: block_u16 - block number has to be checked */ +/* Output: - */ +/* Returned: fsl_u08, status_code */ +/* = 0x00(FSL_OK), normal and means "block is blank" */ +/* = 0x05(FSL_ERR_PARAMETER), parameter error */ +/* = 0x1B(FSL_ERR_BLANKCHECK), blank-check error, means "block not blank" */ +/* = 0x1F(FSL_ERR_INTERRUPTION), blank-check interrupted by user interrupt */ +/*----------------------------------------------------------------------------------------------*/ +extern fsl_u08 FSL_BlankCheck( fsl_u16 block_u16 ); + + +/*----------------------------------------------------------------------------------------------*/ +/* Block type: FSL command function */ +/*----------------------------------------------------------------------------------------------*/ +/* Purpose: erase specified block */ +/* Input: block_u16 - block number has to be erase */ +/* Output: - */ +/* Returned: fsl_u08, status_code */ +/* = 0x00(FSL_OK), normal and means "block erased successfully" */ +/* = 0x05(FSL_ERR_PARAMETER), parameter error */ +/* = 0x10(FSL_ERR_PROTECTION), tried to erase protected area */ +/* = 0x1A(FSL_ERR_ERASE), erase error, retry up to max. 255 times */ +/* = 0x1F(FSL_ERR_INTERRUPTION), erasing interrupted by user interrupt */ +/*----------------------------------------------------------------------------------------------*/ +extern fsl_u08 FSL_Erase( fsl_u16 block_u16 ); + + +/*----------------------------------------------------------------------------------------------*/ +/* Block type: FSL command function */ +/*----------------------------------------------------------------------------------------------*/ +/* Purpose: performs internal verify on specified block */ +/* Input: block_u16 - block number has to be verified */ +/* Output: - */ +/* Returned: fsl_u08, status_code */ +/* = 0x00(FSL_OK), normal and means "block is verified" */ +/* = 0x05(FSL_ERR_PARAMETER), parameter error */ +/* = 0x1B(FSL_ERR_IVERIFY), internal verify error */ +/* = 0x1F(FSL_ERR_INTERRUPTION), verify interrupted by user interrupt */ +/*----------------------------------------------------------------------------------------------*/ +extern fsl_u08 FSL_IVerify( fsl_u16 block_u16 ); + + +/*----------------------------------------------------------------------------------------------*/ +/* Block type: FSL command function */ +/*----------------------------------------------------------------------------------------------*/ +/* Purpose: writes N words from the data buffer into flash */ +/* Input: s_address_u32 - starting flash address the data has to be written */ +/* See Condition 2) please. */ +/* my_wordcount_u08 - number of words (4 bytes) has to be written */ +/* Output: - */ +/* Condition: 1) (s_address_u32 MOD 4 == 0) */ +/* 2) most significant byte (MSB) of s_address_u32 has to be 0x00. */ +/* Means: 0x00abcdef 24 bit flash address allowed */ +/* 3) (word_count_u08 <= sizeof(data buffer)) NOT CHECKED BY LIBRARY !!!!! */ +/* Changed: - */ +/* Returned: fsl_u08, status code */ +/* = 0x00(FSL_OK), normal */ +/* = 0x05(FSL_ERR_PARAMETER), parameter error */ +/* = 0x10(FSL_ERR_PROTECTION), protection error */ +/* = 0x1C(FSL_ERR_WRITE), write error */ +/* = 0x1F(FSL_ERR_INTERRUPTION), write interrupted by user interrupt */ +/*----------------------------------------------------------------------------------------------*/ +extern fsl_u08 FSL_Write( fsl_u32 s_address_u32, fsl_u08 word_count_u08 ); + + +/*----------------------------------------------------------------------------------------------*/ +/* Block type: FSL command function */ +/*----------------------------------------------------------------------------------------------*/ +/* Purpose: writes N words from the data buffer into flash */ +/* Before "writing" a N-word blankcheck is performed. */ +/* After "writing" a N-Word internal verify is performed. */ +/* Input: s_address_u32 - starting destination address has to be written */ +/* my_wordcount_u08 - number of words (4 bytes) has to be written */ +/* Output: - */ +/* Condition: 1) (s_address_u32 MOD 4 == 0) */ +/* 2) (word_count_u08 <= sizeof(data buffer)) NOT CHECKED BY FIRMWARE !!!!! */ +/* Changed: - */ +/* Returned: fsl_u08, status code */ +/* = 0x00(FSL_OK), normal */ +/* = 0x05(FSL_ERR_PARAMETER), parameter error */ +/* = 0x10(FSL_ERR_PROTECTION), protection error */ +/* = 0x1C(FSL_ERR_WRITE), write error */ +/* = 0x1D(FSL_ERR_EEP_IVERIFY), verify error */ +/* = 0x1E(FSL_ERR_EEP_BLANKCHECK), blankcheck error */ +/* = 0x1F(FSL_ERR_INTERRUPTION), write interrupted by user interrupt */ +/*----------------------------------------------------------------------------------------------*/ +extern fsl_u08 FSL_EEPROMWrite( fsl_u32 s_address_u32, + fsl_u08 word_count_u08 ); + + +/*----------------------------------------------------------------------------------------------*/ +/* Block type: FSL command function */ +/*----------------------------------------------------------------------------------------------*/ +/* Purpose: reads the security information */ +/* Input: destination_pu16 - destination address of the security info */ +/* The format of the security info is: "unsigned short int" */ +/* */ +/* Format of the security info: */ +/* bit_0 = 0 -> chip erase command disabled, otherwise enabled */ +/* bit_1 = 0 -> block erase command disabled, otherwise enabled */ +/* bit_2 = 0 -> write command disabled, otherwise enabled */ +/* bit_4 = 0 -> boot-area re-programming disabled, otherwise enabled */ +/* bit_8...bit_15 = 03H -> last block of the boot-area */ +/* other bits = 1 */ +/* Output: - */ +/* Changed: content of the data_buffer */ +/* Returned: fsl_u08, status code */ +/* = 0x00(FSL_OK), normal */ +/* = 0x05(FSL_ERR_PARAMETER), parameter error */ +/*----------------------------------------------------------------------------------------------*/ +extern fsl_u08 FSL_GetSecurityFlags( fsl_u16 * destination_pu16 ); + + +/*----------------------------------------------------------------------------------------------*/ +/* Block type: FSL command function */ +/*----------------------------------------------------------------------------------------------*/ +/* Purpose: read the boot flag i */ +/* Input: destination_pu08 - destination address of the bootflag info */ +/* The format of the boot-flag info is: "unsigned char" */ +/* The value of the boot info is 0x00 for cluster 0 and 0x01 for cluster 1. */ +/* Output: - */ +/* Changed: content of the data_buffer */ +/* Returned: fsl_u08, status code */ +/* = 0x00(FSL_OK), normal */ +/* = 0x05(FSL_ERR_PARAMETER), parameter error */ +/*----------------------------------------------------------------------------------------------*/ +extern fsl_u08 FSL_GetActiveBootCluster( fsl_u08 * destination_pu08 ); + + +/*----------------------------------------------------------------------------------------------*/ +/* Block type: FSL command function */ +/*----------------------------------------------------------------------------------------------*/ +/* Purpose: puts the last address of the specified block into *destination_pu32 */ +/* Input: *destination_pu32 - destination where the last-block-address */ +/* should be stored */ +/* block_u16 - block number of the last address is needed */ +/* Changed: - */ +/* Returned: fsl_u08, status code */ +/* = 0x00(FSL_OK), normal */ +/* = 0x05(FSL_ERR_PARAMETER), parameter error */ +/*----------------------------------------------------------------------------------------------*/ +extern fsl_u08 FSL_GetBlockEndAddr( fsl_u32 * destination_pu32, + fsl_u16 block_u16 ); + + +/*----------------------------------------------------------------------------------------------*/ +/* Block type: FSL command function */ +/*----------------------------------------------------------------------------------------------*/ +/* Purpose: puts the information about the protected flash area into the function parameter */ +/* Input: *start_block_pu16 - destination where the FSW start block should be stored */ +/* *end_block_pu16 - destination where the FSW end block should be stored */ +/* Changed: - */ +/* Returned: fsl_u08, status code */ +/* = 0x00(FSL_OK), normal */ +/* = 0x05(FSL_ERR_PARAMETER), parameter error */ +/*----------------------------------------------------------------------------------------------*/ +extern fsl_u08 FSL_GetFlashShieldWindow( fsl_u16 * start_block_pu16, + fsl_u16 * end_block_pu16 ); + + +/*----------------------------------------------------------------------------------------------*/ +/* Block type: FSL command function */ +/*----------------------------------------------------------------------------------------------*/ +/* Purpose: defines a new Flash-Shield-Window area inside the flash memory */ +/* Input: start_block_u16 - starting block of the Flash-Shield-Window (FSW) */ +/* end_block_u16 - ending block of the flash-Shield-Window (FSW) */ +/* Changed: - */ +/* Returned: fsl_u08, status code */ +/* = 0x00(FSL_OK), normal */ +/* = 0x05(FSL_ERR_PARAMETER), parameter error */ +/* = 0x10(FSL_ERR_PROTECTION), protection error */ +/* = 0x1A(FSL_ERR_ERASE), erase error */ +/* = 0x1B(FSL_ERR_IVERIFY), internal verify error */ +/* = 0x1F(FSL_ERR_INTERRUPTION), write interrupted by user interrupt */ +/*----------------------------------------------------------------------------------------------*/ +extern fsl_u08 FSL_SetFlashShieldWindow( fsl_u16 start_block_u16, + fsl_u16 end_block_u16 ); + + +/*----------------------------------------------------------------------------------------------*/ +/* Block type: FSL command function */ +/*----------------------------------------------------------------------------------------------*/ +/* Purpose: Swapping of bootcluster 0 and 1 */ +/* */ +/* CAUTION !!!! */ +/* After this function the boot cluster are immediately swapped */ +/* Input: - */ +/* Output: - */ +/* Returned: fsl_u08, status code */ +/* = 0x00(FSL_OK), normal */ +/* = 0x05(FSL_ERR_PARAMETER), parameter error */ +/* = 0x10(FSL_ERR_PROTECTION), protection error */ +/* = 0x1A(FSL_ERR_ERASE), erase error */ +/* = 0x1B(FSL_ERR_IVERIFY), internal verify error */ +/* = 0x1F(FSL_ERR_INTERRUPTION), write interrupted by user interrupt */ +/*----------------------------------------------------------------------------------------------*/ +extern fsl_u08 FSL_SwapBootCluster( void ); + + +/*----------------------------------------------------------------------------------------------*/ +/* Block type: FSL command function */ +/*----------------------------------------------------------------------------------------------*/ +/* Purpose: sets specified security flag by dedicated command-function. */ +/* */ +/* There are following security levels: */ +/* a) chip-erase protection (cannot be reset by programmer !!!) */ +/* b) block-erase protection (can be reset by chip-erase on programmer) */ +/* c) write protection (can be reset by chip-erase on programmer) */ +/* d) boot-cluster protection (cannot be reset by programmer !!!) */ +/* */ +/* CAUTION !!!! */ +/* Each security flag can be written by the application only once */ +/* */ +/* Input: - */ +/* Output: - */ +/* Returned: fsl_u08, status code */ +/* = 0x00(FSL_OK), normal */ +/* = 0x05(FSL_ERR_PARAMETER), parameter error */ +/* = 0x10(FSL_ERR_PROTECTION), protection error */ +/* = 0x1A(FSL_ERR_ERASE), erase error */ +/* = 0x1B(FSL_ERR_IVERIFY), internal verify error */ +/* = 0x1F(FSL_ERR_INTERRUPTION), write interrupted by user interrupt */ +/*----------------------------------------------------------------------------------------------*/ +extern fsl_u08 FSL_SetChipEraseProtectFlag( void ); +extern fsl_u08 FSL_SetBlockEraseProtectFlag( void ); +extern fsl_u08 FSL_SetWriteProtectFlag( void ); +extern fsl_u08 FSL_SetBootClusterProtectFlag( void ); + + +/*----------------------------------------------------------------------------------------------*/ +/* Block type: FSL function */ +/*----------------------------------------------------------------------------------------------*/ +/* Purpose: defines the firmware operation method after interrupt service (ISR) execution. */ +/* Input: mode_u08 = 0x00, after RETI the firmware is continuing the interrupted command.*/ +/* = other, after RETI the firmware is interrupted with status 0x1F. */ +/* Changed: - */ +/* Returned: - */ +/*----------------------------------------------------------------------------------------------*/ +extern void FSL_SetInterruptMode( fsl_u08 mode_u08 ); + +#endif diff --git a/snake_branches/3.50_2dsll_lguide/fsl_user.h b/snake_branches/3.50_2dsll_lguide/fsl_user.h new file mode 100644 index 0000000..1018689 --- /dev/null +++ b/snake_branches/3.50_2dsll_lguide/fsl_user.h @@ -0,0 +1,113 @@ +/*==============================================================================================*/ +/* Project = Selfprogramming library for 78K0R/Ix3/Kx3-L Single Voltage SST (MF2) Flash */ +/* Module = fsl_user.h */ +/* Version = V1.01 */ +/* Date = 28.03.2008 11:45:55 */ +/*==============================================================================================*/ +/* COPYRIGHT */ +/*==============================================================================================*/ +/* Copyright (c) 2007 by NEC Electronics (Europe) GmbH, */ +/* a company of the NEC Electronics Corporation */ +/*==============================================================================================*/ +/* Purpose: */ +/* user configurable constant/macros of the selfprogramming library */ +/* */ +/*==============================================================================================*/ +/* */ +/* Warranty Disclaimer */ +/* */ +/* Because the Product(s) is licensed free of charge, there is no warranty of any kind */ +/* whatsoever and expressly disclaimed and excluded by NEC, either expressed or implied, */ +/* including but not limited to those for non-infringement of intellectual property, */ +/* merchantability and/or fitness for the particular purpose. NEC shall not have any obligation */ +/* to maintain, service or provide bug fixes for the supplied Product(s) and/or the Application.*/ +/* */ +/* Each User is solely responsible for determining the appropriateness of using the Product(s) */ +/* and assumes all risks associated with its exercise of rights under this Agreement, */ +/* including, but not limited to the risks and costs of program errors, compliance with */ +/* applicable laws, damage to or loss of data, programs or equipment, and unavailability or */ +/* interruption of operations. */ +/* */ +/* Limitation of Liability */ +/* */ +/* In no event shall NEC be liable to the User for any incidental, consequential, indirect, */ +/* or punitive damage (including but not limited to lost profits) regardless of whether */ +/* such liability is based on breach of contract, tort, strict liability, breach of warranties, */ +/* failure of essential purpose or otherwise and even if advised of the possibility of */ +/* such damages. NEC shall not be liable for any services or products provided by third party */ +/* vendors, developers or consultants identified or referred to the User by NEC in connection */ +/* with the Product(s) and/or the Application. */ +/* */ +/*==============================================================================================*/ +/* Environment: PM plus (V6.30) */ +/* RA78K0(V1.20) */ +/* CC78K0(V2.00) */ +/*==============================================================================================*/ + + +#ifndef __FSL_USER_H_INCLUDED +#define __FSL_USER_H_INCLUDED + + +/*==============================================================================================*/ +/* constant definitions */ +/*==============================================================================================*/ + + +/* specify the CPU frequency in [Hz], only 2MHz....20MHz allowed */ +#define FSL_SYSTEM_FREQUENCY 8000000 + +/* define whether low-voltage mode is used or not */ +/* #define FSL_LOW_VOLTAGE_MODE */ + +/* size of the common data buffer expressed in [bytes] */ +/* the data buffer is used for data-exchange between the firmware and the selflib. */ +//#define FSL_DATA_BUFFER_SIZE 256 +#define FSL_DATA_BUFFER_SIZE 0 + + +/* customizable interrupt controller configuration during selfprogramming period */ +/* Bit --7-------6-------5-------4-------3-------2-------1-------0---------------------- */ +/* MK0L: PMK5 PMK4 PMK3 PMK2 PMK1 PMK0 LVIMK WDTIMK */ +/* MK0H: SREMK0 SRMK0* STMK0* DMAMK1 DMAMK0 SREMK3 SRMK3 STMK3 */ +/* MK1L: TMMK03 TMMK02 TMMK01 TMMK00 IICMK0 SREMK1 SRMK1 STMK1* */ +/* MK1H: TMMK04 SREMK2 SRMK2 STMK2* KRMK RTCIMK RTCMK ADMK */ +/* MK2L: PMK10 PMK9 PMK8 PMK7 PMK6 TMMK07 TMMK06 TMMK05 */ +/* MK2H: 1 1 1 1 1 1 1 PMK11 */ +/*------------------------------------------------------------------------------------------ */ +/* */ +/* Examples: */ +/* ========= */ +/*#define FSL_MK0L_MASK 0xF7 -> allow INTP1 interrupt during selfprogramming */ +/*#define FSL_MK0H_MASK 0xEF -> allow DMA1 interrupt during selfprogramming */ +/*#define FSL_MK1L_MASK 0xBF -> allow TM02 interrupt during selfprogramming */ +/*#define FSL_MK1H_MASK 0xFF -> all interrupts disabled during selfprogramming */ +/*#define FSL_MK2L_MASK 0xF7 -> allow INTP6 interrupt during selfprogramming */ +/*#define FSL_MK2H_MASK 0xFF -> all interrupts disabled during selfprogramming */ +/*------------------------------------------------------------------------------------------ */ +#define FSL_MK0L_MASK 0xFF /* all interrupts disabled during selfprogramming */ +#define FSL_MK0H_MASK 0xFF /* all interrupts disabled during selfprogramming */ +#define FSL_MK1L_MASK 0xFF /* all interrupts disabled during selfprogramming */ +#define FSL_MK1H_MASK 0xFF /* all interrupts disabled during selfprogramming */ +#define FSL_MK2L_MASK 0xFF /* all interrupts disabled during selfprogramming */ +#define FSL_MK2H_MASK 0xFF /* all interrupts disabled during selfprogramming */ + + +/* FLMD0 control bit */ +#ifndef _WIN32 +#define FSL_FLMD0_HIGH {BECTL.7 = 1;} +#define FSL_FLMD0_LOW {BECTL.7 = 0;} +#else +#define FSL_FLMD0_HIGH {BECTL_7 = 1;} +#define FSL_FLMD0_LOW {BECTL_7 = 0;} +#endif + + +/*----------------------------------------------------------------------------------------------*/ +/* switch interrupt backu functionality ON/OFF using #define/#undef */ +/*----------------------------------------------------------------------------------------------*/ +/* #define FSL_INT_BACKUP */ +#undef FSL_INT_BACKUP + + +#endif diff --git a/snake_branches/3.50_2dsll_lguide/get_ei.asm b/snake_branches/3.50_2dsll_lguide/get_ei.asm new file mode 100644 index 0000000..29f4a6e --- /dev/null +++ b/snake_branches/3.50_2dsll_lguide/get_ei.asm @@ -0,0 +1,26 @@ +$PROCESSOR ( 9F0104 ) + +PUBLIC _get_ei +; +; PSWEIǂݏo܂B +; + + + +ROM_CODE CSEG BASE + +_get_ei: + set1 CY + and1 CY,PSW.7 ; check IE bit. if 0, all interrupts are disabled. + bnc $ie_dis + mov C,#01h + ret + +ie_dis: + mov C,#00h + ret + + + end + + diff --git a/snake_branches/3.50_2dsll_lguide/hal.c b/snake_branches/3.50_2dsll_lguide/hal.c new file mode 100644 index 0000000..e2e72ec --- /dev/null +++ b/snake_branches/3.50_2dsll_lguide/hal.c @@ -0,0 +1,182 @@ +/* ======================================================== + ȈՃeXĝ߂HALC + + $Id: asdf$ + ======================================================== */ +#ifndef _WIN32 +#pragma SFR +#endif + +#include "incs_loader.h" + + +#define WIFI_txLatch PIF21 // dgMpX { led.h Œ` + + +// HALłԂ //////////////////////////////////////// +// ȎȂ琳_ɂr...≽łȂ +bit PM_EXTDC_n; +bit BT_IN_CHG_n; +bit SW_POW_n; +bit SW_HOME_n; +bit SW_WIFI_n; +bit SHELL_OPEN; + +/* +#define REG_BIT_HAL0_PM_EXTDC_n ( 1 << 7 ) +#define REG_BIT_HAL0_BT_IN_CHG_n ( 1 << 6 ) +//#define REG_BIT_HAL0_PM_IRQ_n ( 1 << 5 ) // gȂ +#define REG_BIT_HAL0_WL_TX ( 1 << 4 ) +#define REG_BIT_HAL0_SHELL_OPEN ( 1 << 3 ) +#define REG_BIT_HAL0_SW_WIFI_n ( 1 << 2 ) +#define REG_BIT_HAL0_SW_HOME_n ( 1 << 1 ) +#define REG_BIT_HAL0_SW_POW_n ( 1 << 0 ) + +#define REG_BIT_HAL1_DIPSW_1 ( 1 << 3 ) +#define REG_BIT_HAL1_DIPSW_0 ( 1 << 2 ) +#define REG_BIT_HAL1_HW_DET_1 ( 1 << 1 ) +#define REG_BIT_HAL1_HW_DET_0 ( 1 << 0 ) +*/ + + +// ڂւ +// `^OȂ炱ł(ԃJEg͕) +void hal_update() +{ +#ifdef _ENABLE_HAL_ + u8 temp_conf = vreg_ctr[ VREG_C_HAL_OVW_CONT0 ]; + u8 temp_dat = vreg_ctr[ VREG_C_HAL_OVW_DAT0 ]; +#else + u8 temp_conf = 0x00; + u8 temp_dat = 0; // łǂ +#endif + + // A_v^L + if( temp_conf & REG_BIT_HAL0_PM_EXTDC_n ) + { + // O͂Ȃ񂾂傫Ȃ肪 + if(( temp_dat & REG_BIT_HAL0_PM_EXTDC_n ) == 0 ) + { + PM_EXTDC_n = 0; + } + else + { + PM_EXTDC_n = 1; + } + } + else + { + PM_EXTDC_n = PM_EXTDC_n_RAW; + } + + // [dH + if( temp_conf & REG_BIT_HAL0_BT_IN_CHG_n ) + { + if(( temp_dat & REG_BIT_HAL0_BT_IN_CHG_n ) == 0 ) + { + BT_IN_CHG_n = 0; + } + else + { + BT_IN_CHG_n = 1; + } + } + else + { + BT_IN_CHG_n = BT_IN_CHG_n_RAW; + } + + // dt + if( temp_conf & REG_BIT_HAL0_SW_POW_n ) + { + if(( temp_dat & REG_BIT_HAL0_SW_POW_n ) == 0 ) + { + SW_POW_n = 0 ; + } + else + { + SW_POW_n = 1; + } + } + else + { + SW_POW_n = SW_POW_n_RAW; + } + + // Ɩt + if( temp_conf & REG_BIT_HAL0_SW_HOME_n ) + { + if(( temp_dat & REG_BIT_HAL0_SW_HOME_n ) == 0 ) + { + SW_HOME_n = 0; + } + else + { + SW_HOME_n = 1; + } + } + else + { + if( system_status.model == MODEL_TS_BOARD )// ڑ̃|[gႤ + { + SW_HOME_n = SW_HOME_n_TSBOARD_RAW; + } + else + { + SW_HOME_n = SW_HOME_n_JIKKI_RAW; + } + } + + // J + if( temp_conf & REG_BIT_HAL0_SW_WIFI_n ) + { + if(( temp_dat & REG_BIT_HAL0_SW_WIFI_n ) == 0 ) + { + SW_WIFI_n = 0; + } + else + { + SW_WIFI_n = 1; + } + } + else + { + SW_WIFI_n = SW_WIFI_n_RAW; + } + + // + if( temp_conf & REG_BIT_HAL0_SHELL_OPEN ) + { + if(( temp_dat & REG_BIT_HAL0_SHELL_OPEN ) == 0 ) + { + SHELL_OPEN = 0; + } + else + { + SHELL_OPEN = 1; + } + } + else + { + SHELL_OPEN = SHELL_OPEN_RAW; + } + + // dg + if( temp_conf & REG_BIT_HAL0_WL_TX ) + { + WIFI_txLatch = 1; + } + +} + + + +void hal_reset() +{ + vreg_ctr[ VREG_C_HAL_OVW_CONT0 ] = 0; + vreg_ctr[ VREG_C_HAL_OVW_CONT1 ] = 0; + vreg_ctr[ VREG_C_HAL_OVW_TEMPERATURE ] = 0xFF; + vreg_ctr[ VREG_C_HAL_OVW_BT_FUEL ] = 0xFF; + vreg_ctr[ VREG_C_HAL_OVW_BT_VOLTAGE ] = 0xFF; +} + diff --git a/snake_branches/3.50_2dsll_lguide/hal.h b/snake_branches/3.50_2dsll_lguide/hal.h new file mode 100644 index 0000000..245be75 --- /dev/null +++ b/snake_branches/3.50_2dsll_lguide/hal.h @@ -0,0 +1,16 @@ +#ifndef _hal_h_ +#define _hal_h_ + + +extern bit PM_EXTDC_n; +extern bit BT_IN_CHG_n; +extern bit SW_POW_n; +extern bit SW_HOME_n; +extern bit SW_WIFI_n; +extern bit SHELL_OPEN; + +// ======================================================== +void hal_update(); +void hal_reset(); + +#endif diff --git a/snake_branches/3.50_2dsll_lguide/hoge.bin b/snake_branches/3.50_2dsll_lguide/hoge.bin new file mode 100644 index 0000000000000000000000000000000000000000..913a04c6076f758ee353a88b81f769ddec9e3f81 GIT binary patch literal 16387 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 literal 0 HcmV?d00001 diff --git a/snake_branches/3.50_2dsll_lguide/i2c_ctr.c b/snake_branches/3.50_2dsll_lguide/i2c_ctr.c new file mode 100644 index 0000000..4bd238e --- /dev/null +++ b/snake_branches/3.50_2dsll_lguide/i2c_ctr.c @@ -0,0 +1,312 @@ +/* ======================================================== + SoC VK`l I2CʐM + cJZ.nintendo + '09 Apr + $Id: i2c_ctr.c 418 2011-09-22 01:35:37Z n2232 $ + ======================================================== */ +#ifndef _WIN32 +#pragma interrupt INTIICA1 int_iic_ctr RB1 +#endif + + +#include "incs.h" +#include "rtc.h" +#include "pedometer.h" + + +#ifdef _MCU_BSR_ +// #ifdef _MODEL_TS0_ || _MODEL_WM0_ + +// [LOfI2Ct +// TEG͉H}ŃeR +#define ACKD ACKD1 +#define ACKE ACKE1 +#define COI COI1 +#define IICAEN IICA1EN +#define IICRSV IICRSV1 +#define IICA IICA1 +#define IICAIF IICAIF1 +#define IICAMK IICAMK1 +#define IICAPR0 IICAPR11 +#define IICAPR1 IICAPR01 +#define IICCTL0 IICCTL10 +#define IICE IICE1 +#define IICF IICF1 +#define IICS IICS1 +#define IICWH IICWH1 +#define IICWL IICWL1 +#define LREL LREL1 +#define SPD SPD1 +#define SPIE SPIE1 +#define STCEN STCEN1 +#define STD STD1 +#define SVA SVA1 +#define WREL WREL1 +#define WTIM WTIM1 +#define TRC TRC1 +#define SMC SMC1 +#define DFC DFC1 +#define PortMode PM20 +#define Port P20 + +#endif + + + +// ============================================== +enum en_IIC_STATE +{ + IIC_IDLE = 0, + IIC_RCV_REG_ADRS, + IIC_TX_OR_RX, + IIC_TX, + IIC_RX +}; + + + +// ============================================== +extern bit irq_readed; // ꂩIRQWX^ǂ܂ꂽ + +u8 iic_burst_state; +static enum en_IIC_STATE state = IIC_IDLE; + +#define bit_iics_spd (i2c_stat & (1<<0)) +#define bit_iics_std (i2c_stat & (1<<1)) +#define bit_iics_ackd (i2c_stat & (1<<2)) +#define bit_iics_trc (i2c_stat & (1<<3)) +#define bit_iics_coi (i2c_stat & (1<<4)) + + + +/********************************************//** + isr + + Xe[gɊ荞݂菈i߂ + ***********************************************/ +__interrupt void int_iic_ctr( ) +{ + static u8 reg_adrs; + static u8 tx_buf; + u8 rx_buf; + static u8 adrs_access_from; // o[XgANZX̎Ɏg + + u8 i2c_stat = IICS; // volatilê + + // ǂݏoI + if( !bit_iics_ackd // 荞ݗvNAKif[^M̍Ōj + || bit_iics_spd ) // XgbvRfBV(!ACKD ɗƂ͊荞ݗȂ (SPIE = 0)) + { + /* + I2C̔xẴtOOSTDĂ܂Ƃ + ǁAȂ삷‚ + */ + + // WX^[hŁA荞݃slQ[g + // ܂ǂ܂ĂȂ荞݂΁AēxAT[g + if( irq_readed ) + { + IRQ0_neg; + irq_readed = false; + if( !( (( vreg_ctr[VREG_C_IRQ0] & vreg_ctr[VREG_C_IRQ_MASK0 ] ) == 0 ) + && (( vreg_ctr[VREG_C_IRQ1] & vreg_ctr[VREG_C_IRQ_MASK1 ] ) == 0 ) + && (( vreg_ctr[VREG_C_IRQ2] & vreg_ctr[VREG_C_IRQ_MASK2 ] ) == 0 ) + && (( vreg_ctr[VREG_C_IRQ3] & vreg_ctr[VREG_C_IRQ_MASK3 ] ) == 0 ) )) + { + while( !IRQ0 ){;} // ԉ҂sv + IRQ0_ast; + } + } + + // I2CIɉ镨 // + hosu_read_end( ); // vǂݏoI + rtc_unlock( ); + + state = IIC_IDLE; + SPIE = 0; + LREL = 1; + EI(); + return; + } + + if( bit_iics_std ) // 荞ݗvFX^[gRfBV + { + if( !( state == IIC_IDLE || state == IIC_TX_OR_RX )) + { + // sp/nack 葹˂ +// dbg_nop(); // Ȃ͂... +/* + // pPbg̐擪stƌȂB + // ʂɑs + state = IIC_IDLE; +/*/ + // gCĂ炤 + state = IIC_IDLE; + SPIE = 0; + LREL = 1; + EI(); +//*/ + } + // ʏ + } + + EI(); + + switch ( state ) + { + case ( IIC_IDLE ): + // njĂяoɉB + // Ȃ + iic_burst_state = 0; + SPIE = 1; + WREL = 1; // EFCg + state = IIC_RCV_REG_ADRS; + return; + + case ( IIC_RCV_REG_ADRS ): // QoCgځiWX^AhXjMɗ + // WX^AhXM + reg_adrs = IICA; + + WREL = 1; + adrs_access_from = reg_adrs; + tx_buf = vreg_ctr_read( reg_adrs ); // f[^̏Ă + state = IIC_TX_OR_RX; + return; + + case ( IIC_TX_OR_RX ): // ̎ɗ銄荞݁BSTȂ瑗MAf[^珑܂ + // if( TRC ) // MtO ŋʂ̂́A荞ݒxɕsN肦 + if( bit_iics_std ) + { // X^[gRfBVotO + // [h + if( bit_iics_coi ) + { // AhXvtO + state = IIC_TX; + // no break, no return // + } + else + { + // X^[gňႤfoCXĂ΂ꂽI + SPIE = 0; + LREL = 1; // EFCg? + state = IIC_IDLE; // I + return; + } + } + else + { + state = IIC_RX; // f[^1oCgM̊荞݂ + // no break, no return // + } + /* FALLTHROUGH */ + + default: // o[Xg R/W łĂ΂邱ƂɂȂ + if( state == IIC_TX ) + { // M + IICA = tx_buf; + vreg_ctr_after_read( reg_adrs, tx_buf ); // ǂ񂾂NAȂǂ̏ + } + else + { // M + rx_buf = IICA; + +#ifdef _I2C_ERR_ABORT_ + if( reg_adrs >= 0x80 || reg_adrs <= 1 ) + { + LREL = 1; // Ȃ񂩃f[^̂ŒʐMI nakԂ̂Ȃc + return; + } +#endif + vreg_ctr_write( reg_adrs, rx_buf ); + WREL = 1; + } + + // WX^AhX̃CNg + /// ANZX|C^i߂ȂȃWX^ + switch( adrs_access_from ) + { + case( VREG_C_ACC_HOSU_HIST ): + case( VREG_C_LED_NOTIFY_DATA ): + case( VREG_C_LED_POW ): + case( VREG_CX_INFO ): + case( VREG_CX_FREE_DATA ): + break; + case( VREG_CX_FREE_ADRS ): + if( reg_adrs == VREG_CX_FREE_ADRS ) + { + reg_adrs = VREG_CX_FREE_DATA; + } + break; + default: + reg_adrs ++; + } + + if( state == IIC_TX ) + { // ɂ‚ɑf[^̏VeINBSPĎgȂȂ + tx_buf = vreg_ctr_read( reg_adrs ); + } + break; + } +} + + + +/********************************************//** +@W[ +@ +@todo twl init Ɠ? +@ +@rbg삪̂łĕsoςȂ + ***********************************************/ +void IIC_ctr_Init( void ) +{ + + IICAEN = 1; + + IICE = 0; /* IICA disable */ + + IICAMK = 1; /* INTIICA disable */ + IICAIF = 0; /* clear INTIICA interrupt flag */ + +// IICAPR0 = 1; /* set INTIICA high priority */ +// IICAPR1 = 0; /* set INTIICA high priority */ X^bNs + + Port &= ~0x03; + + SVA = IIC_C_SLAVEADDRESS; + IICF = 0x01; + + STCEN = 1; // X^[g̋ + IICRSV = 1; // ʐM\Ȃ:X[uɓO + + SPIE = 0; // XgbvRfBVł̊荞݂֎~ + WTIM = 1; // ACKԂclkLɌŒ肷 + ACKE = 1; + + IICWH = 9; + IICWL = 11; // LԂ̒ + + SMC = 1; // [h + DFC = 1; // fW^tB^on (@fast mode) + + IICAMK = 0; // 荞݂ + + IICE = 1; + + PortMode &= ~0x03; + + state = IIC_IDLE; +} + + + +/********************************************//** + + ***********************************************/ +void IIC_ctr_Stop( void ) +{ + IICE = 0; /* IICA disable */ + IICAEN = 0; +} + + + diff --git a/snake_branches/3.50_2dsll_lguide/i2c_ctr.h b/snake_branches/3.50_2dsll_lguide/i2c_ctr.h new file mode 100644 index 0000000..16234ff --- /dev/null +++ b/snake_branches/3.50_2dsll_lguide/i2c_ctr.h @@ -0,0 +1,210 @@ +#ifndef _MDSERIAL_A_ +#define _MDSERIAL_A_ + + +/* IIC operation enable (IICE0) */ +#define IIC0_OPERATION 0x80 +#define IIC0_OPERATION_DISABLE 0x00 /* stop operation */ +#define IIC0_OPERATION_ENABLE 0x80 /* enable operation */ + +/* Exit from communications (LREL0) */ +#define IIC0_COMMUNICATION 0x40 +#define IIC0_COMMUNICATION_NORMAL 0x00 /* normal operation */ +#define IIC0_COMMUNICATION_EXIT 0x40 /* exit from current communication */ + +/* Wait cancellation (WREL0) */ +#define IIC0_WAITCANCEL 0x20 +#define IIC0_WAIT_NOTCANCEL 0x00 /* do not cancel wait */ +#define IIC0_WAIT_CANCEL 0x20 /* cancel wait */ + +/* Generation of interrupt when stop condition (SPIE0) */ +#define IIC0_STOPINT 0x10 +#define IIC0_STOPINT_DISABLE 0x00 /* disable */ +#define IIC0_STOPINT_ENABLE 0x10 /* enable */ + +/* Wait and interrupt generation (WTIM0) */ +#define IIC0_WAITINT 0x08 +#define IIC0_WAITINT_CLK8FALLING 0x00 /* generate at the eighth clocks falling edge */ +#define IIC0_WAITINT_CLK9FALLING 0x08 /* generated at the ninth clocks falling edge */ + +/* Acknowledgement control (ACKE0) */ +#define IIC0_ACK 0x04 +#define IIC0_ACK_DISABLE 0x00 /* enable acknowledgement */ +#define IIC0_ACK_ENABLE 0x04 /* disable acknowledgement */ + +/* Start condition trigger (STT0) */ +#define IIC0_STARTCONDITION 0x02 +#define IIC0_START_NOTGENERATE 0x00 /* do not generate start condition */ +#define IIC0_START_GENERATE 0x02 /* generate start condition */ + +/* Stop condition trigger (SPT0) */ +#define IIC0_STOPCONDITION 0x01 +#define IIC0_STOP_NOTGENERATE 0x00 /* do not generate stop condition */ +#define IIC0_STOP_GENERATE 0x01 /* generate stop condition */ + +/* + IIC Status Register 0 (IICS0) +*/ +/* Master device status (MSTS0) */ +#define IIC0_MASTERSTATUS 0x80 +#define IIC0_STATUS_NOTMASTER 0x00 /* slave device status or communication standby status */ +#define IIC0_STATUS_MASTER 0x80 /* master device communication status */ + +/* Detection of arbitration loss (ALD0) */ +#define IIC0_ARBITRATION 0x40 +#define IIC0_ARBITRATION_NO 0x00 /* arbitration win or no arbitration */ +#define IIC0_ARBITRATION_LOSS 0x40 /* arbitration loss */ + +/* Detection of extension code reception (EXC0) */ +#define IIC0_EXTENSIONCODE 0x20 +#define IIC0_EXTCODE_NOT 0x00 /* extension code not received */ +#define IIC0_EXTCODE_RECEIVED 0x20 /* extension code received */ + +/* Detection of matching addresses (COI0) */ +#define IIC0_ADDRESSMATCH 0x10 +#define IIC0_ADDRESS_NOTMATCH 0x00 /* addresses do not match */ +#define IIC0_ADDRESS_MATCH 0x10 /* addresses match */ + +/* Detection of transmit/receive status (TRC0) */ +#define IIC0_STATUS 0x08 +#define IIC0_STATUS_RECEIVE 0x00 /* receive status */ +#define IIC0_STATUS_TRANSMIT 0x08 /* transmit status */ + +/* Detection of acknowledge signal (ACKD0) */ +#define IIC0_ACKDETECTION 0x04 +#define IIC0_ACK_NOTDETECTED 0x00 /* ACK signal was not detected */ +#define IIC0_ACK_DETECTED 0x04 /* ACK signal was detected */ + +/* Detection of start condition (STD0) */ +#define IIC0_STARTDETECTION 0x02 +#define IIC0_START_NOTDETECTED 0x00 /* start condition not detected */ +#define IIC0_START_DETECTED 0x02 /* start condition detected */ + +/* Detection of stop condition (SPD0) */ +#define IIC0_STOPDETECTION 0x01 +#define IIC0_STOP_NOTDETECTED 0x00 /* stop condition not detected */ +#define IIC0_STOP_DETECTED 0x01 /* stop condition detected */ + +/* + IIC Flag Register 0 (IICF0) +*/ +/* STT0 clear flag (STCF) */ +#define IIC0_STARTFLAG 0x80 +#define IIC0_STARTFLAG_GENERATE 0x00 /* generate start condition */ +#define IIC0_STARTFLAG_UNSUCCESSFUL 0x80 /* start condition generation unsuccessful */ + +/* IIC bus status flag (IICBSY) */ +#define IIC0_BUSSTATUS 0x40 +#define IIC0_BUS_RELEASE 0x00 /* bus release status */ +#define IIC0_BUS_COMMUNICATION 0x40 /* bus communication status */ + +/* Initial start enable trigger (STCEN) */ +#define IIC0_STARTWITHSTOP 0x02 +#define IIC0_START_WITHSTOP 0x00 /* generation of a start condition without detecting a stop condition */ +#define IIC0_START_WITHOUTSTOP 0x02 /* generation of a start condition upon detection of a stop condition */ + +/* Communication reservation function disable bit (IICRSV) */ +#define IIC0_RESERVATION 0x01 +#define IIC0_RESERVATION_ENABLE 0x00 /* enable communication reservation */ +#define IIC0_RESERVATION_DISABLE 0x01 /* disable communication reservation */ + +/* + IIC clock selection register 0 (IICCL0) +*/ +#define IICCL0_INITIALVALUE 0x00 +/* Detection of SCL0 pin level (CLD0) */ +#define IIC0_SCLLEVEL 0x20 +#define IIC0_SCL_LOW 0x00 /* clock line at low level */ +#define IIC0_SCL_HIGH 0x20 /* clock line at high level */ + +/* Detection of SDA0 pin level (DAD0) */ +#define IIC0_SDALEVEL 0x10 +#define IIC0_SDA_LOW 0x00 /* data line at low level */ +#define IIC0_SDA_HIGH 0x10 /* data line at high level */ + +/* Operation mode switching (SMC0) */ +#define IIC0_OPERATIONMODE 0x08 +#define IIC0_MODE_STANDARD 0x00 /* operates in standard mode */ +#define IIC0_MODE_HIGHSPEED 0x08 /* operates in high-speed mode */ + +/* Digital filter operation control (DFC0) */ +#define IIC0_DIGITALFILTER 0x04 +#define IIC0_FILTER_OFF 0x00 /* digital filter off */ +#define IIC0_FILTER_ON 0x04 /* digital filter on */ + +/* Operation mode switching (CL01, CL00) */ +#define IIC0_CLOCKSELECTION 0x03 + +/* Combine of (SMC0, CL01, CL00)*/ +#define IIC0_CLOCK0 0x00 +#define IIC0_CLOCK1 0x01 +#define IIC0_CLOCK2 0x02 +#define IIC0_CLOCK3 0x03 +#define IIC0_CLOCK4 0x08 +#define IIC0_CLOCK5 0x09 +#define IIC0_CLOCK6 0x0a +#define IIC0_CLOCK7 0x0b + +/* + IIC function expansion register 0 (IICX0) +*/ +/* IIC clock expension (CLX0) */ +#define IIC0_CLOCKEXPENSION 0x01 +#define IIC0_EXPENSION0 0x00 +#define IIC0_EXPENSION1 0x01 + +/* Operation clock (CLX0, SMC0, CL01, CL00) + | IIC0_EXPENSION0 | IIC0_EXPENSION1 | +------------|-------------------|-------------------|---------------------- +IIC0_CLOCK0 | fprs/2 | prohibited | selection clock(fw) + | fprs/88 | | transfer clock + | normal | | mode +------------|-------------------|-------------------|---------------------- +IIC0_CLOCK1 | fprs/2 | prohibited | selection clock(fw) + | fprs/172 | | transfer clock + | normal | | mode +------------|-------------------|-------------------|---------------------- +IIC0_CLOCK2 | fprs/2 | prohibited | selection clock(fw) + | fprs/344 | | transfer clock + | normal | | mode +------------|-------------------|-------------------|---------------------- +IIC0_CLOCK3 |prohibited/fexscl0 | prohibited | selection clock(fw) + | fw/66 | | transfer clock + | normal | | mode +------------|-------------------|-------------------|---------------------- +IIC0_CLOCK4 | fprs/2 | fprs/2 | selection clock(fw) + | fprs/48 | fprs/24 | transfer clock + | high speed | high speed | mode +------------|-------------------|-------------------|---------------------- +IIC0_CLOCK5 | fprs/2 | fprs/2 | selection clock(fw) + | fprs/48 | fprs/24 | transfer clock + | high speed | high speed | mode +------------|-------------------|-------------------|---------------------- +IIC0_CLOCK6 | fprs/4 | fprs/4 | selection clock(fw) + | fprs/96 | fprs/48 | transfer clock + | high speed | high speed | mode +------------|-------------------|-------------------|---------------------- +IIC0_CLOCK7 |prohibited/fexscl0 | prohibited | selection clock(fw) + | fw/18 | | transfer clock + | high speed | | mode +------------|-------------------|-------------------|---------------------- +*/ + +#define ADDRESS_COMPLETE 0x80 +#define IIC_MASTER_FLAG_CLEAR 0x00 + +/****************************************************************************** + * Macro define + ******************************************************************************/ + + + +/****************************************************************************** + * Function define + ******************************************************************************/ + +void IIC_ctr_Init( void ); +void IIC_ctr_Stop( void ); + + +#endif diff --git a/snake_branches/3.50_2dsll_lguide/i2c_mcu-sub.c b/snake_branches/3.50_2dsll_lguide/i2c_mcu-sub.c new file mode 100644 index 0000000..b1b468c --- /dev/null +++ b/snake_branches/3.50_2dsll_lguide/i2c_mcu-sub.c @@ -0,0 +1,124 @@ +/* ======================================================== + ȈI2CiytFgpjʐM + de JHL cJZ + '09 Feb - + $Id: $ + ======================================================== */ +#ifndef _WIN32 +#pragma sfr +#pragma di +#pragma ei +#pragma nop +#pragma inline // memcpy()CCWJ(̕I) +#endif + +#include "incs.h" +#include "i2c_mcu.h" +#include "loader.h" +#include "util_funcs.h" + +#include "i2c_mcu_sub.h" +#include "pm.h" /// 肽ȂcCODEC̃WX^Ђ + + +// ======================================================== +// [NAEhp +static void iic_mcu_simple_dummy_write(); +static i2c_err iic_mcu_codec_write_low( u8 adrs, u8 dat ); + +// i2c_mcu.c ɂ +extern void iic_mcu_send_re_st( ); +extern void iic_mcu_send_sp( ); +extern i2c_err iic_mcu_send_a_byte( u8 ); +extern i2c_err iic_mcu_call_slave( u8 slave ); + + +/* + yamaha codecspӂɊ荞݂邱Ƃ邪A^XNo^ + ۂɓǂݏoƂɂ͏߂Ȃ̂ʼnȂ悤ɓ͂ +*/ + +/********************************************//** + R[fbN wPoCgx Cg + + iic_mcu_write_a_byte CODECs[NAEh + ***********************************************/ +#define YAMAHA_CODEC_ERRATA_CHECK_MASK ( 0x7D ) +i2c_err iic_mcu_write_a_byte_codec( u8 adrs, u8 dat ) +{ + u8 pm_reg_original; + i2c_err rv; + + // }ncodec[NAEh SPIƂ̋pWX^̒g擾 + if(( rv = iic_mcu_read( IIC_SLA_CODEC, CODEC_REG_PM, 1, &pm_reg_original )) != I2C_ERR_OK ) + { + return( rv ); + } + // phase1 ܂ + + // ݁I + if( ( rv = iic_mcu_codec_write_low( adrs, dat ) ) != I2C_ERR_OK ) + { + return( rv ); + } + + // }ncodec[NAEh + if( ( pm_reg_original & YAMAHA_CODEC_ERRATA_CHECK_MASK ) == 0 ) // ͂߂狤LWX^0eXgȂ + // (& ZbgvĂǂZbĝ) + { + return( I2C_ERR_OK ); + } + + { + // LWX^ 0x00 ɏĂ(Gb^I)悤Ȃ珑߂ + u8 pm_reg_after; + + if(( rv = iic_mcu_read( IIC_SLA_CODEC, CODEC_REG_PM, 1, &pm_reg_after )) != I2C_ERR_OK ) + { + return( rv ); + } + + if( ( pm_reg_after & YAMAHA_CODEC_ERRATA_CHECK_MASK ) != 0x00 ) + { + // RtNg͂Ȃ or ZbgvȂ + return( I2C_ERR_OK ); + } + + // else { + rv = iic_mcu_codec_write_low( CODEC_REG_PM, pm_reg_original ); // ߂Aă`FbN͂Ȃ + return ( rv ); // G[Ԃ邱Ƃ邩 + // gCȂǂ͖ + } + return( rv ); // no reach // +} + + +static i2c_err iic_mcu_codec_write_low( u8 adrs, u8 dat ) +{ + IICMK10 = 1; // DMApISRɔ΂Ȃ߂Ƀ}XN + if( iic_mcu_call_slave( IIC_SLA_CODEC ) != I2C_ERR_OK ) + { + iic_mcu_busy = false; + return ( I2C_ERR_NOSLAVE ); + } + iic_mcu_send_a_byte( adrs ); + iic_mcu_send_a_byte( dat ); + + // TI[NAEh + codec_dummy_write(); + + iic_mcu_send_sp( ); + iic_mcu_busy = false; + return( I2C_ERR_OK ); +} + + +// re-stŃ_~[Cg +void codec_dummy_write() +{ + iic_mcu_send_re_st( ); + iic_mcu_send_a_byte( IIC_SLA_CODEC ); // _~[Cg + iic_mcu_send_a_byte( 0x20 ); // S~ĂȂAhX + iic_mcu_send_a_byte( 0xAA ); // ł悢 +} + diff --git a/snake_branches/3.50_2dsll_lguide/i2c_mcu.c b/snake_branches/3.50_2dsll_lguide/i2c_mcu.c new file mode 100644 index 0000000..a417289 --- /dev/null +++ b/snake_branches/3.50_2dsll_lguide/i2c_mcu.c @@ -0,0 +1,660 @@ +/* ======================================================== + ȈI2CiytFgpjʐM + de JHL cJZ + '09 Feb - + + $Id: $ + ======================================================== */ +#ifndef _WIN32 +#pragma sfr +#pragma di +#pragma ei +#pragma nop +#pragma inline // memcpy()CCWJ(̕I) +#endif + +#include "incs_loader.h" +#include "i2c_mcu.h" +#include "loader.h" +#include "util_funcs.h" + +#include "i2c_mcu_sub.h" + + + +// ======================================================== +// WX^̃rbg +// vtBbNXbAꕔ̃rbgWX^ɂԂ邽... +// SMR0n +#define bCKS0 ( 1 << 15 ) +#define bCCS0 ( 1 << 14 ) +#define bSTS0 ( 1 << 8 ) +#define bSIS0 ( 1 << 6 ) +#define bMD0n2 ( 1 << 2 ) +#define bMD0n1 ( 1 << 1 ) +#define bMD0n0 ( 1 << 0 ) +#define bSMR0n_FIXEDBIT ( 1 << 5 ) + +// SSR0n +#define bit_TSF0 6 +#define PEF0 ( 1 << 1 ) + +// SIR0n +#define PECT0 ( 1 << 1 ) + +// SCR0n +#define TXE0 ( 1 << 15 ) +#define RXE0 ( 1 << 14 ) +#define SLC02 4 +#define DLS02 0 +#define TSF0 ( 1 << 6 ) + +// SOn +#define TAUS_MASK 0x0B0B; + +// DMCn +#define DRS ( 1 << 6 ) + + + + +// ======================================================== +static void iic_mcu_send_st( ); + +// *sub炵Ă΂Ȃ +void iic_mcu_send_re_st( ); +void iic_mcu_send_sp( ); +i2c_err iic_mcu_send_a_byte( u8 ); +i2c_err iic_mcu_call_slave( u8 slave ); + + +// ======================================================== +bit iic_mcu_wo_dma; +volatile bit iic_mcu_busy; +static volatile bit iic_mcu_initialized; + + +static u8 iic_send_work[4]; +static u8 *p_iic_send_wo_dma_dat; +static u8 iic_send_wo_dma_len; + +// f[^G[iROHMxZTjgĈ +/// Ƃ肠ADMAgp}`oCgCg ̎ɂ@\Ȃ +static u8 last_slave, last_reg_adrs, last_size; + +i2c_err iic_mcu_result; // ꕶ[h̎̓f[^ԂB + +#ifdef i2c_timeout_test +extern bit i2c_mcu_time_out_error; +#endif + + + +/********************************************//** + + ***********************************************/ +void nop8() +{ + // ɗ call 3clk, return 6clk +} + + +/********************************************//** + ̒ʐMÎ҂B + + ^CAEgL + ***********************************************/ +static i2c_err iic_mcu_wait_free() +{ + u16 tot = 0; + + iic_mcu_start( ); + while( 1 ) + { + DI_wt_chk(); + if( !iic_mcu_busy ) + { + iic_mcu_busy = true; + EI(); + break; + } + EI(); + if( ++tot == 0 ) + { +#ifdef i2c_timeout_test + i2c_mcu_time_out_error = true; +#endif + return( I2C_ERR_TIMEOUT ); + } + } + return( I2C_ERR_OK ); +} + + + +/********************************************//** + X[u w1x [h + + Ԓlf[^̂̂łB + + G[R[h iic_mcu_result ɓĂ܂ + ***********************************************/ +u8 iic_mcu_read_a_byte( u8 SLA, u8 adrs ) +{ + u8 dat; + + iic_mcu_result = iic_mcu_read( SLA, adrs, 1, &dat ); + if( iic_mcu_result != I2C_ERR_OK ) + { + dat = 0xff; + } + + return ( dat ); +} + + + +/********************************************//** + X[ũ[h + + yz + + X[uEFCgRfBVoƂ͋֎~łB + + ̏ꍇłG[oȂǂł܂ + ***********************************************/ +i2c_err iic_mcu_read( u8 slave, u8 adrs, u8 len, u8 * dest ) +{ + +#if 1 + if( iic_mcu_wait_free() != I2C_ERR_OK ) + { + // (^CAEg) + return( I2C_ERR_TIMEOUT ); + } +#else + // gpȂA +#endif + + // X^[gRfBVƃX[ǔĂяoAWX^AhX̑M + if( iic_mcu_call_slave( slave ) != 0 ) + { + iic_mcu_busy = false; + return ( I2C_ERR_NOSLAVE ); + } + + // WX^AhX̑M + iic_mcu_send_a_byte( adrs ); // I܂ŋAĂȂ + + // ΂NAKAĂȂO + + // f[^M // + iic_mcu_send_re_st( ); // X^[gRfBV + iic_mcu_send_a_byte( slave | 0x01 ); // M܂Ŗ߂Ă܂B + + // f[^M + ST0 = 0x0004; // M[hɐݒς̂ŃWbN~ + SCR02 = RXE0 | 1 << SLC02 | 7 << DLS02; // Mݒ + SS0 = 0x0004; // ʐMҋ@ + + do + { + if( len == 1 ) + { + SOE0 = 0x0000; // ŌNAK + } + IICIF10 = 0; + SIO10 = 0xFF; // _~[f[^ƎMJn + while( IICIF10 == 0 ) + {;} // M҂ + + *dest = SIO10; + dest++; + len--; + } + while( len != 0 ); + + if( slave == IIC_SLA_CODEC ) + { + codec_dummy_write(); + } + + iic_mcu_send_sp( ); + + IICIF10 = 0; + iic_mcu_busy = false; + return ( I2C_ERR_OK ); +} + + + + +/********************************************//** + X[u wPoCgx Cg + + O̓]Î҂āACg܂B + + Ԓl@iic_mcu_write@ɓ + ***********************************************/ +i2c_err iic_mcu_write_a_byte( u8 SLA, u8 adrs, u8 dat ) +{ + // P̎DMAƂNȂłƏI点 + if( iic_mcu_wait_free() != I2C_ERR_OK ) + { + return( I2C_ERR_TIMEOUT ); + } + + // X^[gRfBVƃX[ǔĂяo... + IICMK10 = 1; + if( iic_mcu_call_slave( SLA ) != I2C_ERR_OK ) + { + iic_mcu_busy = false; + return( I2C_ERR_NOSLAVE ); + } + iic_mcu_send_a_byte( adrs ); + iic_mcu_send_a_byte( dat ); + iic_mcu_send_sp( ); + iic_mcu_busy = false; + return ( I2C_ERR_OK ); +} + + + +/********************************************//** + X[uփCg + + WX^ adrs 擪ɁA + *str + len܂B + + yz + 1) X[uEFCgRfBVoƂ͋֎~łB + ̏ꍇłG[oȂǂł܂ + 2) len < sizeof(iic_send_work) łȂDMA g܂BiRAMsjւڂB + + ylz + DMA1gp܂B + ***********************************************/ +i2c_err iic_mcu_write( u8 slave, u8 adrs, u8 len, void * src ) +{ + if( iic_mcu_wait_free() != I2C_ERR_OK ) + { + return( I2C_ERR_TIMEOUT ); + } +#if 0 // renge^̃}`^XNɂȂłɂ + // gpȂA +#endif + + // X^[gRfBVƃX[ǔĂяo... + IICMK10 = 1; + IICIF10 = 0; + if( iic_mcu_call_slave( slave ) != I2C_ERR_OK ) + { + iic_mcu_busy = false; + return ( I2C_ERR_NOSLAVE ); + } + + IICIF10 = 0; + if( ! iic_mcu_wo_dma /* || len <= iic_send_work */ ) + { + // DMAgpiʏj// + + // WX^AhX𑗂Af[^̏ + memcpy( iic_send_work, src, 4 ); //obt@Ƃ4oCgpӂĖ߁B + + // gĈ + last_slave = slave; + last_reg_adrs = adrs; + last_size = len; + + // DMAZbg + while( DST1 ) + {;} + + DEN1 = 1; + DSA1 = (u8)( &SIO10 ); + DRA1 = (u16)( &iic_send_work[0] ); + DBC1 = len; + DMC1 = DRS | 8; // RAM -> SFR, 8bit, IRQ, IIC10 + + DMAIF1 = 0; + DMAMK1 = 0; + DST1 = 1; // DEN1 = 12clkȏJ + + SIO10 = adrs; // ςȂI 荞݂DMAX^[g + // c͊荞݃[` + } + else + { + // DMAgpȂ // + + // WX^AhX̑M + IICMK10 = 0; + SIO10 = adrs; + + iic_send_wo_dma_len = len; + p_iic_send_wo_dma_dat = (u8*)src; + // c͊荞݃[` + } + + return ( I2C_ERR_OK ); +} + + + + +/********************************************//** + DMAP]I荞 + + IIC_mcu ̑MR[obN֐̂悤Ȃ + + FDMA]IŁAI2C̓]͏IĂ܂ + +@ 荞ݒȂǂŁADMA1̏xꍇA + IIC10̊荞݂̏łɁA荞݂𔭐ȂȂ + ꂪ܂B܂A@ɂ܂B + + @̂߁ADMAdl̍ق́AŌ̃oCg͑M + tÕ|[OŊmF܂B + ***********************************************/ +__interrupt void int_dma1( ) +{ + static bit in_retry; + + EI(); + + // Ō̃oCg̑M҂ + while( ( SSR02L & TSF0 ) != 0 ) + { + u16 i = 0; + if( ++i == 0 ) // ^CAEgH + { + break; + } + } + + // XgbvRfBVs +// iic_mcu_send_sp(); // ISRŊO̊֐ĂԂ͓̂siėpWX^ҔĵœWJ + { + ST0 = 0x0004; + SOE0 = 0; // M̎͂ƑOɁuvݒ肵ĂB(NACKo) + SO0 = 0x0000 | TAUS_MASK; // SCL + nop8(); //. |ȂBO̊֐Ă +/* + NOP(); NOP(); NOP(); NOP(); + NOP(); NOP(); NOP(); NOP(); +*/ + SO0 = 0x0400 | TAUS_MASK; // SCL + nop8(); +/* + NOP(); NOP(); NOP(); NOP(); + NOP(); NOP(); NOP(); NOP(); +*/ + SO0 = 0x0404 | TAUS_MASK; + } + + IICMK10 = 1; + + // f[^̓r NAK AxgCB + /// 蔲 + if( SIR02 != 0 ) + { + SIR02 = SSR02; + + if( !in_retry ) + { + in_retry = true; + + IICIF10 = 0; + iic_mcu_call_slave( last_slave ); // NAK͍mPA + + while( DST1 ){;} + DRA1 = (u16)( &iic_send_work[0] ); // CNgĂ܂Ă̂ōăZbg + DBC1 = last_size; // fNgĂ܂Ă̂ōăZbg + // ق̐ݒ͑Ô܂ + + DMAIF1 = 0; + DMAMK1 = 0; + DST1 = 1; + + SIO10 = last_reg_adrs; // ςȂI 荞݂DMAX^[g + return; + // ܂ + } + else + { + // G[xځBmȂ + dbg_nop(); + // ̂܂܏I + } + } + + // I + in_retry = false; + DMAMK1 = 1; + DEN1 = 0; + iic_mcu_busy = false; +} + + + +/********************************************//** + IIC MCŨoCgo荞 + + DMAgp͎gp܂B + + @̊荞ݏDMÅ荞݂ɂ΂ȂꍇA + @IIC荞݂̃ZbgԂɍ킸邱Ƃ܂B + ***********************************************/ +__interrupt void int_iic10( ) +{ + EI(); + if( iic_send_wo_dma_len != 0 ) // ܂MĂȂH + { + SIO10 = *p_iic_send_wo_dma_dat; + p_iic_send_wo_dma_dat ++; + iic_send_wo_dma_len --; + return; + // ܂ // + } + + // Ō̃oCgMAXgbvRfBVs + IICMK10 = 1; +// iic_mcu_send_sp(); // ISRŊO̊֐ĂԂ͓̂siėpWX^ҔĵœWJ + { + ST0 = 0x0004; + SOE0 = 0; // M̎͂ƑOɁuvݒ肵ĂB(NACKo) + SO0 = 0x0000 | TAUS_MASK; // clear SCL + NOP(); NOP(); NOP(); NOP(); // NOP8Ăł͂ + NOP(); NOP(); NOP(); NOP(); + SO0 = 0x0400 | TAUS_MASK; // set SCL + NOP(); NOP(); NOP(); NOP(); + NOP(); NOP(); NOP(); NOP(); + SO0 = 0x0404 | TAUS_MASK; // set CSL adn SDA + } + + iic_mcu_wo_dma = false; + iic_mcu_busy = false; +} + + + +/********************************************//** + X[ǔĂяo + +@X[uAhXĂŁAACK̊mFB + + ACK@@@@@@@@@@@@@@@@@@ԁFI2C_ERR_OK + +@NACK @XgbvRfBVoB@ԁFI2C_ERR_NOSLAVE + ***********************************************/ +i2c_err iic_mcu_call_slave( u8 slave ) +{ + iic_mcu_send_st( ); + +/* +// dbg + if( SSR02 != 0 ) + { + P1.5 = P1.0 = P1.3 = 1; + } +*/ + + SIR02 = SSR02; // NAKG[̃tONA + if( iic_mcu_send_a_byte( slave ) != I2C_ERR_OK ) + { + iic_mcu_send_sp( ); + return ( I2C_ERR_NOSLAVE ); // w̃X[uȂ + } + + return ( I2C_ERR_OK ); +} + + + +/********************************************//** + قƂɂPoCĝ + + I܂ŋA܂ + ***********************************************/ +i2c_err iic_mcu_send_a_byte( u8 dat ) +{ + IICMK10 = 1; + IICIF10 = 0; + SIO10 = dat; + while( IICIF10 == 0 ) + { +// NOP( ); + } // ʐM + + if( SSR02 != 0 ) // 炩G[? + { + SIR02 = SSR02; // G[NA + return( I2C_ERR_NAK ); + } + return( I2C_ERR_OK ); +} + + + +/********************************************//** + X^[gRfBV𔭍s + + \tgEFA + ***********************************************/ +static void iic_mcu_send_st( ) +{ + SO0 &= ~0x0004; // SDA + nop8(); + + SO0 &= ~0x0400; // SCL + SOE0 = 0x0004; // n[h + + SCR02 = TXE0 | 1 << SLC02 | 7 << DLS02; // MAf[^͂WrbgP + SS0 = 0x0004; // ʐMҋ@ +} + + + +/********************************************//** + X^[gs + ***********************************************/ +void iic_mcu_send_re_st( ) +{ + ST0 |= 0x0004; + SO0 |= 0x0400 | TAUS_MASK; // ( SDA = H ), SCL -> H + nop8(); + + SOE0 &= ~0x0004; // ( SCL = H ), SDA -> L + nop8(); + + iic_mcu_send_st( ); +} + + + +/********************************************//** + XgbvRfBVs + + ̑OɁAuŌ̃oCg̑Mv̎ɑOKvłB + ***********************************************/ +void iic_mcu_send_sp( ) +{ + ST0 = 0x0004; + SOE0 = 0; // M̎͂ƑOɁuvݒ肵ĂB(NACKo) + SO0 = 0x0000 | TAUS_MASK; // SCL + nop8(); + + SO0 = 0x0400 | TAUS_MASK; // SCL + nop8(); + + SO0 = 0x0404 | TAUS_MASK; +} + + + + +/********************************************//** + ytFW[̏ + ***********************************************/ +void iic_mcu_start( ) +{ + if( iic_mcu_initialized ) + { + return; + } + + iic_mcu_busy = true; +// DST1 = 0; + + I2C_PU_on(); +// DEN1 = 0; // DST1 = 0 2clḱADSTn==0|[OĂ + + wait_ms( 1 ); // オ̂50usʂ + + SAU0EN = 1; + nop8(); + + SPS0 = 0x0000; // VAjbg̃NbNOB(8M/2)/1 + SMR02 = bSMR0n_FIXEDBIT | bMD0n2; // ȈI2Cɐݒ + SDR02 = 10 << 9; // {[[gݒ 8M/1/(x+1)/2 + + SO0 = 0x0404 | TAUS_MASK; // ŏHH + iic_mcu_wo_dma = false; + + + // oX̃Zbg + { + IICIF10 = 0; + IICMK10 = 1; + + iic_mcu_send_st(); + + SIO10 = 0xFF; + while( IICIF10 == 0 ){;} // ʐM + iic_mcu_send_sp(); + + SIR02 = SSR02; + } + + iic_mcu_busy = false; + iic_mcu_initialized = true; +} + + + +/********************************************//** + W[̒~ + + ēxgƂ͏Kv + ***********************************************/ +void iic_mcu_stop( ) +{ + while( iic_mcu_busy ) + {;} // DMA쒆͂҂ + iic_mcu_send_re_st( ); // SCL,SDALLɂ + I2C_PU_off(); + SAU0EN = 0; + iic_mcu_initialized = false; +} + diff --git a/snake_branches/3.50_2dsll_lguide/i2c_mcu.h b/snake_branches/3.50_2dsll_lguide/i2c_mcu.h new file mode 100644 index 0000000..98a3e82 --- /dev/null +++ b/snake_branches/3.50_2dsll_lguide/i2c_mcu.h @@ -0,0 +1,40 @@ +#ifndef __ic2_mcu__ +#define __ic2_mcu__ + + +// ======================================================== +typedef enum{ + I2C_ERR_OK = 0, + I2C_ERR_NAK, + I2C_ERR_NOSLAVE, + I2C_ERR_TIMEOUT, + I2C_ERR_UNDEF = 0xFF +}i2c_err; + + + +// ======================================================== +extern volatile bit iic_mcu_busy; +extern bit iic_mcu_wo_dma; + +extern i2c_err iic_mcu_result; + + +// ======================================================== +i2c_err iic_mcu_read( u8 SLA, u8 adrs, u8 len, u8 * dest ); +u8 iic_mcu_read_a_byte( u8 SLA, u8 adrs ); + +i2c_err iic_mcu_write( u8 SLA, u8 adrs, u8 len, void * src ); +i2c_err iic_mcu_write_a_byte( u8 SLA, u8 adrs, u8 dat ); + +i2c_err iic_mcu_write_a_byte_codec( u8 adrs, u8 dat ); // codecoO@\t + + +// ̒ʐM܂B +#define iic_mcu_set_wo_dma() { while( iic_mcu_busy ){;} iic_mcu_wo_dma = true; } + +void iic_mcu_start( void ); +void iic_mcu_stop( void ); + + +#endif diff --git a/snake_branches/3.50_2dsll_lguide/i2c_mcu_sub.h b/snake_branches/3.50_2dsll_lguide/i2c_mcu_sub.h new file mode 100644 index 0000000..a2c192e --- /dev/null +++ b/snake_branches/3.50_2dsll_lguide/i2c_mcu_sub.h @@ -0,0 +1,9 @@ +#ifndef __ic2_mcu_sub__ +#define __ic2_mcu_sub__ + +// $Id: asdf$ + +i2c_err iic_mcu_write_a_byte_codec( u8 adrs, u8 dat ); +void codec_dummy_write( void ); + +#endif diff --git a/snake_branches/3.50_2dsll_lguide/i2c_twl.c b/snake_branches/3.50_2dsll_lguide/i2c_twl.c new file mode 100644 index 0000000..3c91ce8 --- /dev/null +++ b/snake_branches/3.50_2dsll_lguide/i2c_twl.c @@ -0,0 +1,246 @@ +/* ======================================================== + TWL ݊I2C + + $Id: i2c_twl.c 418 2011-09-22 01:35:37Z n2232 $ + ======================================================== */ +#ifndef _WIN32 + +#pragma sfr /* @\WX^gp */ + +#endif + + +/*============================================================================*/ +#ifndef _WIN32 +# pragma interrupt INTIICA0 int_iic_twl RB2 +#endif + +#include "incs_loader.h" +#include "i2c_twl_defs.h" +#include "i2c_twl.h" +#include "vreg_twl.h" +#include "WDT.h" + + +#ifdef _MCU_BSR_ +//#ifdef _MODEL_TS0_ || _MODEL_WM0_ + +// [LOfI2Ct +#define ACKD ACKD0 +#define ACKE ACKE0 +#define COI COI0 +#define IICAEN IICA0EN +#define IICRSV IICRSV0 +#define IICA IICA0 +#define IICAIF IICAIF0 +#define IICAMK IICAMK0 +#define IICAPR0 IICAPR00 +#define IICAPR1 IICAPR10 +#define IICCTL0 IICCTL00 +#define IICE IICE0 +#define IICF IICF0 +#define IICS IICS0 +#define IICWH IICWH0 +#define IICWL IICWL0 +#define LREL LREL0 +#define SPD SPD0 +#define SPIE SPIE0 +#define STCEN STCEN0 +#define STD STD0 +#define SVA SVA0 +#define WREL WREL0 +#define WTIM WTIM0 +#define SMC SMC0 +#define TRC TRC0 +#define DFC DFC0 +#define PortMode PM6 +#define Port P6 + +#endif // _MCU_BSR_ + +#ifndef _MCU_BSR_ + +// ke3̎̓_~[֐ +void IIC_twl_Stop( void ) +{ +} +void IIC_twl_Init( void ) +{ +} +#else // _MCU_BSR_ + + + +enum IIC_TWL_STATE{ + WAIT_ADRS = 0, + WAIT_DATA, + DATA_READED +}; + + + + +/*============================================================================*/ + +// I@̓}NȂ̂ŁAreturn̓C[vɖ߂܂B +#define wait_next { \ + tot = 0; \ + while( IICAIF != 1 ){ \ + tot ++; \ + if( tot == 0 ){ \ + LREL = 1; \ + return; \ + } \ + } \ +} + + +/********************************************//** + isr + + TWL̓EFCg𗝉ĂꂸA܂Ao[XgR/W + ȂłĂ̂ŁAXgbvRfBV܂ňCɂĂ܂B + ***********************************************/ +__interrupt void int_iic_twl( ) +{ + u8 vreg_adrs; + u8 state; + + // @ + WREL = 1; // EFCgĎ̃oCg҂ + WDT_Restart(); + state = WAIT_ADRS; + + while( 1 ) + { + u8 my_iics; + + { + u16 tot; + wait_next; // PoCgM҂ + } + + my_iics = IICS; + IICAIF = 0; + + if( my_iics & 0x02 ) // ( STD && !SPD ) + { + // X^[gRfBV + if( ( my_iics & 0x08 ) == 0 ) // ( TRC ) MtO 0:}CRM + { + // @f}CRłATWLgCƂƂ + // ɗ̂̓X[uĂяo̎ // + WREL = 1; + state = WAIT_ADRS; + /// WX^AhX̂҂ + } + else + { + // BR Rł̃X[uĂяo(X^[gRfBV) // + IICA = vreg_twl_read( vreg_adrs ); // f[^M + // Xgbv҂ALREL = 1 ɂȂƁAMobt@j󂳂邱Ƃ + state = DATA_READED; + } + } + else if( ( my_iics & 0x03 ) == 0 ) // ( !STD && !SPD ) + { + u8 rcvd; + + // 炩M + rcvd = IICA; + WREL = 1; + + if( state == WAIT_ADRS ) + { + // A + vreg_adrs = adrs_table_twl_ext2int( rcvd ); + /// f[^邩AX^[gœǂݏô҂ + state = WAIT_DATA; + } + else if( state == DATA_READED ) + { + // f[^1oCgM㔭 + LREL = 1; + return; + } + else + { + // BW + // f[^܂ + SVA = 0x5A; // _~[ + LREL = 1; // X^[gRfBV҂(AݖΉ̂) + vreg_twl_write( vreg_adrs, rcvd ); + SVA = IIC_T_SLAVEADDRESS; + return; // M܂ // + } + } + else if( my_iics & 0x01 ) // SPD + { + // I + LREL = 1; + return; + } + else + { + // NOP(); + } + } +} + + + +/********************************************//** + W[ + ***********************************************/ +void IIC_twl_Init( void ) +{ + + IICAEN = 1; + + IICE = 0; /* IICA disable */ + + IICAMK = 1; /* INTIICA disable */ + IICAIF = 0; /* clear INTIICA interrupt flag */ + + IICAPR0 = 0; /* set INTIICA high priority */ + IICAPR1 = 0; /* set INTIICA high priority */ + Port &= ~0x03; + + SVA = IIC_T_SLAVEADDRESS; + IICF = 0x01; + + STCEN = 1; // X^[g̋ + IICRSV = 1; // ʐM\Ȃ:X[uɓO + + SPIE = 0; // XgbvRfBVł̊荞݂֎~ + WTIM = 1; // ACKԂclkLɌŒ肷 + ACKE = 1; // _CPU͖Ď̒ʐM͂߂邩ȂőclkJȂƂȂ + + IICWH = 9; + IICWL = 11; // LԂ̒iHj + + SMC = 1; + DFC = 1; // fW^tB^on (@fast mode) + + IICAMK = 0; // 荞݂ + + IICE = 1; + + PortMode &= ~0x03; + + LREL = 1; +} + + + +/********************************************//** + W[~ + ***********************************************/ +void IIC_twl_Stop( void ) +{ + IICE = 0; /* IICA disable */ + IICAEN = 0; +} + + +#endif diff --git a/snake_branches/3.50_2dsll_lguide/i2c_twl.h b/snake_branches/3.50_2dsll_lguide/i2c_twl.h new file mode 100644 index 0000000..0f608b0 --- /dev/null +++ b/snake_branches/3.50_2dsll_lguide/i2c_twl.h @@ -0,0 +1,7 @@ +#ifndef _iic_twl_ +#define _iic_twl_ + +void IIC_twl_Init( void ); +void IIC_twl_Stop( void ); + +#endif diff --git a/snake_branches/3.50_2dsll_lguide/i2c_twl_defs.h b/snake_branches/3.50_2dsll_lguide/i2c_twl_defs.h new file mode 100644 index 0000000..be5d566 --- /dev/null +++ b/snake_branches/3.50_2dsll_lguide/i2c_twl_defs.h @@ -0,0 +1,196 @@ +#ifndef _MDSERIAL_ +#define _MDSERIAL_ + + +/* IIC operation enable (IICE0) */ +#define IIC0_OPERATION 0x80 +#define IIC0_OPERATION_DISABLE 0x00 /* stop operation */ +#define IIC0_OPERATION_ENABLE 0x80 /* enable operation */ + +/* Exit from communications (LREL0) */ +#define IIC0_COMMUNICATION 0x40 +#define IIC0_COMMUNICATION_NORMAL 0x00 /* normal operation */ +#define IIC0_COMMUNICATION_EXIT 0x40 /* exit from current communication */ + +/* Wait cancellation (WREL0) */ +#define IIC0_WAITCANCEL 0x20 +#define IIC0_WAIT_NOTCANCEL 0x00 /* do not cancel wait */ +#define IIC0_WAIT_CANCEL 0x20 /* cancel wait */ + +/* Generation of interrupt when stop condition (SPIE0) */ +#define IIC0_STOPINT 0x10 +#define IIC0_STOPINT_DISABLE 0x00 /* disable */ +#define IIC0_STOPINT_ENABLE 0x10 /* enable */ + +/* Wait and interrupt generation (WTIM0) */ +#define IIC0_WAITINT 0x08 +#define IIC0_WAITINT_CLK8FALLING 0x00 /* generate at the eighth clocks falling edge */ +#define IIC0_WAITINT_CLK9FALLING 0x08 /* generated at the ninth clocks falling edge */ + +/* Acknowledgement control (ACKE0) */ +#define IIC0_ACK 0x04 +#define IIC0_ACK_DISABLE 0x00 /* enable acknowledgement */ +#define IIC0_ACK_ENABLE 0x04 /* disable acknowledgement */ + +/* Start condition trigger (STT0) */ +#define IIC0_STARTCONDITION 0x02 +#define IIC0_START_NOTGENERATE 0x00 /* do not generate start condition */ +#define IIC0_START_GENERATE 0x02 /* generate start condition */ + +/* Stop condition trigger (SPT0) */ +#define IIC0_STOPCONDITION 0x01 +#define IIC0_STOP_NOTGENERATE 0x00 /* do not generate stop condition */ +#define IIC0_STOP_GENERATE 0x01 /* generate stop condition */ + +/* + IIC Status Register 0 (IICS0) +*/ +/* Master device status (MSTS0) */ +#define IIC0_MASTERSTATUS 0x80 +#define IIC0_STATUS_NOTMASTER 0x00 /* slave device status or communication standby status */ +#define IIC0_STATUS_MASTER 0x80 /* master device communication status */ + +/* Detection of arbitration loss (ALD0) */ +#define IIC0_ARBITRATION 0x40 +#define IIC0_ARBITRATION_NO 0x00 /* arbitration win or no arbitration */ +#define IIC0_ARBITRATION_LOSS 0x40 /* arbitration loss */ + +/* Detection of extension code reception (EXC0) */ +#define IIC0_EXTENSIONCODE 0x20 +#define IIC0_EXTCODE_NOT 0x00 /* extension code not received */ +#define IIC0_EXTCODE_RECEIVED 0x20 /* extension code received */ + +/* Detection of matching addresses (COI0) */ +#define IIC0_ADDRESSMATCH 0x10 +#define IIC0_ADDRESS_NOTMATCH 0x00 /* addresses do not match */ +#define IIC0_ADDRESS_MATCH 0x10 /* addresses match */ + +/* Detection of transmit/receive status (TRC0) */ +#define IIC0_STATUS 0x08 +#define IIC0_STATUS_RECEIVE 0x00 /* receive status */ +#define IIC0_STATUS_TRANSMIT 0x08 /* transmit status */ + +/* Detection of acknowledge signal (ACKD0) */ +#define IIC0_ACKDETECTION 0x04 +#define IIC0_ACK_NOTDETECTED 0x00 /* ACK signal was not detected */ +#define IIC0_ACK_DETECTED 0x04 /* ACK signal was detected */ + +/* Detection of start condition (STD0) */ +#define IIC0_STARTDETECTION 0x02 +#define IIC0_START_NOTDETECTED 0x00 /* start condition not detected */ +#define IIC0_START_DETECTED 0x02 /* start condition detected */ + +/* Detection of stop condition (SPD0) */ +#define IIC0_STOPDETECTION 0x01 +#define IIC0_STOP_NOTDETECTED 0x00 /* stop condition not detected */ +#define IIC0_STOP_DETECTED 0x01 /* stop condition detected */ + +/* + IIC Flag Register 0 (IICF0) +*/ +/* STT0 clear flag (STCF) */ +#define IIC0_STARTFLAG 0x80 +#define IIC0_STARTFLAG_GENERATE 0x00 /* generate start condition */ +#define IIC0_STARTFLAG_UNSUCCESSFUL 0x80 /* start condition generation unsuccessful */ + +/* IIC bus status flag (IICBSY) */ +#define IIC0_BUSSTATUS 0x40 +#define IIC0_BUS_RELEASE 0x00 /* bus release status */ +#define IIC0_BUS_COMMUNICATION 0x40 /* bus communication status */ + +/* Initial start enable trigger (STCEN) */ +#define IIC0_STARTWITHSTOP 0x02 +#define IIC0_START_WITHSTOP 0x00 /* generation of a start condition without detecting a stop condition */ +#define IIC0_START_WITHOUTSTOP 0x02 /* generation of a start condition upon detection of a stop condition */ + +/* Communication reservation function disable bit (IICRSV) */ +#define IIC0_RESERVATION 0x01 +#define IIC0_RESERVATION_ENABLE 0x00 /* enable communication reservation */ +#define IIC0_RESERVATION_DISABLE 0x01 /* disable communication reservation */ + +/* + IIC clock selection register 0 (IICCL0) +*/ +#define IICCL0_INITIALVALUE 0x00 +/* Detection of SCL0 pin level (CLD0) */ +#define IIC0_SCLLEVEL 0x20 +#define IIC0_SCL_LOW 0x00 /* clock line at low level */ +#define IIC0_SCL_HIGH 0x20 /* clock line at high level */ + +/* Detection of SDA0 pin level (DAD0) */ +#define IIC0_SDALEVEL 0x10 +#define IIC0_SDA_LOW 0x00 /* data line at low level */ +#define IIC0_SDA_HIGH 0x10 /* data line at high level */ + +/* Operation mode switching (SMC0) */ +#define IIC0_OPERATIONMODE 0x08 +#define IIC0_MODE_STANDARD 0x00 /* operates in standard mode */ +#define IIC0_MODE_HIGHSPEED 0x08 /* operates in high-speed mode */ + +/* Digital filter operation control (DFC0) */ +#define IIC0_DIGITALFILTER 0x04 +#define IIC0_FILTER_OFF 0x00 /* digital filter off */ +#define IIC0_FILTER_ON 0x04 /* digital filter on */ + +/* Operation mode switching (CL01, CL00) */ +#define IIC0_CLOCKSELECTION 0x03 + +/* Combine of (SMC0, CL01, CL00)*/ +#define IIC0_CLOCK0 0x00 +#define IIC0_CLOCK1 0x01 +#define IIC0_CLOCK2 0x02 +#define IIC0_CLOCK3 0x03 +#define IIC0_CLOCK4 0x08 +#define IIC0_CLOCK5 0x09 +#define IIC0_CLOCK6 0x0a +#define IIC0_CLOCK7 0x0b + +/* + IIC function expansion register 0 (IICX0) +*/ +/* IIC clock expension (CLX0) */ +#define IIC0_CLOCKEXPENSION 0x01 +#define IIC0_EXPENSION0 0x00 +#define IIC0_EXPENSION1 0x01 + +/* Operation clock (CLX0, SMC0, CL01, CL00) + | IIC0_EXPENSION0 | IIC0_EXPENSION1 | +------------|-------------------|-------------------|---------------------- +IIC0_CLOCK0 | fprs/2 | prohibited | selection clock(fw) + | fprs/88 | | transfer clock + | normal | | mode +------------|-------------------|-------------------|---------------------- +IIC0_CLOCK1 | fprs/2 | prohibited | selection clock(fw) + | fprs/172 | | transfer clock + | normal | | mode +------------|-------------------|-------------------|---------------------- +IIC0_CLOCK2 | fprs/2 | prohibited | selection clock(fw) + | fprs/344 | | transfer clock + | normal | | mode +------------|-------------------|-------------------|---------------------- +IIC0_CLOCK3 |prohibited/fexscl0 | prohibited | selection clock(fw) + | fw/66 | | transfer clock + | normal | | mode +------------|-------------------|-------------------|---------------------- +IIC0_CLOCK4 | fprs/2 | fprs/2 | selection clock(fw) + | fprs/48 | fprs/24 | transfer clock + | high speed | high speed | mode +------------|-------------------|-------------------|---------------------- +IIC0_CLOCK5 | fprs/2 | fprs/2 | selection clock(fw) + | fprs/48 | fprs/24 | transfer clock + | high speed | high speed | mode +------------|-------------------|-------------------|---------------------- +IIC0_CLOCK6 | fprs/4 | fprs/4 | selection clock(fw) + | fprs/96 | fprs/48 | transfer clock + | high speed | high speed | mode +------------|-------------------|-------------------|---------------------- +IIC0_CLOCK7 |prohibited/fexscl0 | prohibited | selection clock(fw) + | fw/18 | | transfer clock + | high speed | | mode +------------|-------------------|-------------------|---------------------- +*/ + +#define ADDRESS_COMPLETE 0x80 +#define IIC_MASTER_FLAG_CLEAR 0x00 + +#endif diff --git a/snake_branches/3.50_2dsll_lguide/incs.h b/snake_branches/3.50_2dsll_lguide/incs.h new file mode 100644 index 0000000..f9c1c4a --- /dev/null +++ b/snake_branches/3.50_2dsll_lguide/incs.h @@ -0,0 +1,44 @@ +#ifndef _WIN32 +#pragma SFR +#pragma di +#pragma ei +#pragma nop +#pragma stop +#pragma halt +#endif + +#ifndef _WIN32 +#pragma section @@CODE ROM_CODE +//#pragma section @@CNST ROM_CNST +#endif + +#ifdef _WIN32 +// VC̐Ԑǂɂ +#include "sim/simOnWin.h" +# endif + + + +//========================================================= +#ifndef _incs_h_ +#define _incs_h_ + +// v_pc_ƂŐ؂ւĂ܂ +#define _mcu_ + +#include "jhl_defs.h" +#include "config.h" +#include "user_define.h" + +#include "hal.h" + +#include "bsr_system.h" +#include "renge\renge.h" + +#include "vreg_ctr.h" + +#include "util_funcs.h" + +//========================================================= + +#endif diff --git a/snake_branches/3.50_2dsll_lguide/incs_loader.h b/snake_branches/3.50_2dsll_lguide/incs_loader.h new file mode 100644 index 0000000..0569b9f --- /dev/null +++ b/snake_branches/3.50_2dsll_lguide/incs_loader.h @@ -0,0 +1,49 @@ +/* ======================================================== + @sԂvolatileȂ̂Ń^C~OˑŊ҂ȂɂȂ̂@ + + Hardware abstruct layer + + $Id: asdf$ + ======================================================== */ +#ifndef _WIN32 +#pragma SFR +#pragma di +#pragma ei +#pragma nop +#pragma stop +#pragma halt + + +#pragma section @@CODE LDR_CODE +#pragma section @@CODEL LDR_CODL + +//#pragma section @@R_INIT FSL_RINT // ƃX^[gAbv[`l +//#pragma section @@CNST FSL_CNST // ZbgĂȂ +#pragma section @@CNSTL LDR_CNSL + +#endif + +# ifdef _WIN32 +// VC̐Ԑǂɂ +#include "sim/simOnWin.h" +# endif + + +//========================================================= +#include "jhl_defs.h" +#include "config.h" + +#include "user_define.h" + +#include "hal.h" + +#include "bsr_system.h" +#include "renge\renge.h" + +#include "vreg_ctr.h" +#include "vreg_twl.h" + + +//========================================================= +void firm_update( ); +void firm_restore( ); diff --git a/snake_branches/3.50_2dsll_lguide/ini_VECT.c b/snake_branches/3.50_2dsll_lguide/ini_VECT.c new file mode 100644 index 0000000..84da25c --- /dev/null +++ b/snake_branches/3.50_2dsll_lguide/ini_VECT.c @@ -0,0 +1,347 @@ +/* ======================================================== + 荞݃xN^e[u + $Id$ + ======================================================== */ + +#ifndef _WIN32 + +#pragma nop + +#endif + +#include "config.h" + +#ifndef _WIN32 + +#ifdef _WDT_CHECK_ +#pragma interrupt INTWDTI fn_intwdti // wdt debug +#endif + +//#pragma interrupt INTLVI fn_intlvi // gp + +//#pragma interrupt INTP0 intp0_slp // SLP (CPUAv) |[O +//#pragma interrupt INTP1 fn_intp1 // (I2C) +//#pragma interrupt INTP2 fn_intp2 // (I2C) +//#pragma interrupt INTP3 fn_intp3 // +#pragma interrupt INTP4 intp4_extdc // EXTDC, doffN̂݁Bʏ̓|[O +#pragma interrupt INTP5 intp5_shell // SHELL_CLOSE, doffN̂݁Bʏ̓|[O +#pragma interrupt INTP6 intp6_PM_irq // CODECoRŋPMICւ̃R}h + +//#ifdef _MCU_BSR_ // 荞݂͎̂̂g܂ +//#pragma interrupt INTP21 intp21_RFTx // dgMpX +//#else +//#pragma interrupt INTP7 intp21_RFTx +//#endif + + +/* + + accero +#ifdef _MCU_BSR_ +#pragma interrupt INTP23 intp23_ACC_ready RB3 // xZTAf[^ +#endif +*/ + +//#pragma interrupt INTCMP0 fn_intcmp0 +//#pragma interrupt INTCMP1 fn_intcmp1 +//#pragma interrupt INTDMA0 fn_intdma0 +#pragma interrupt INTDMA1 int_dma1 + +//#pragma interrupt INTST0 fn_intst0 +/* #pragma interrupt INTCSI00 fn_intcsi00 */ +//#pragma interrupt INTSR0 fn_intsr0 +/* #pragma interrupt INTCSI01 fn_intcsi01 */ +//#pragma interrupt INTSRE0 fn_intsre0 + +//#pragma interrupt INTST1 fn_intst1 +/* #pragma interrupt INTCSI10 fn_intcsi10 */ +#pragma interrupt INTIIC10 int_iic10 +//#pragma interrupt INTSR1 fn_intsr1 +//#pragma interrupt INTSRE1 fn_intsre1 + + +/* +// TS̓}U{ŃeRAWM͉H}eRŌLjvc +#pragma interrupt INTIICA1 int_iic_ctr RB1 + +#pragma interrupt INTIICA0 int_iic_twl RB2 +*/ + +//#pragma interrupt INTTM00 fn_inttm00 +//#pragma interrupt INTTM01 fn_inttm01 +//#pragma interrupt INTTM02 fn_inttm02 +//#pragma interrupt INTTM03 fn_inttm03 + +#pragma interrupt INTAD int_adc +#pragma interrupt INTRTC int_rtc +#pragma interrupt INTRTCI int_rtc_int +#pragma interrupt INTKR int_kr +//#pragma interrupt INTMD fn_intmd + +//#pragma interrupt INTTM04 fn_inttm04 +//#pragma interrupt INTTM05 fn_inttm05 +//#pragma interrupt INTTM06 fn_inttm06 +//#pragma interrupt INTTM07 fn_inttm07 + + +//#define _irq_debug_ +/****************************************************/ +/* gp̃_~[֐` */ +/****************************************************/ +#ifdef _WDT_CHECK_ +__interrupt void fn_intwdti( ) +{ + while( 1 ) + { + NOP(); + } +} +#endif + +#ifdef _irq_debug_ +__interrupt void fn_intlvi( ) +{ + while( 1 ) + { + NOP(); + } +} + +__interrupt void fn_intp0(){ +while( 1 ) + { + NOP(); + } +} + +__interrupt void fn_intp1( ) +{ + while( 1 ) + { + NOP(); + } +} // +__interrupt void fn_intp2( ) +{ + while( 1 ) + { + NOP(); + } +} + +__interrupt void fn_intp3( ) +{ + while( 1 ) + { + NOP(); + } +} + +__interrupt void intp21_RFTx( ) +{ + while( 1 ) + { + NOP(); + } +} + + +//__interrupt void fn_intp4(){ while(1){} } // pm.c +//__interrupt void fn_intp5(){ while(1){} } // pm.c +//__interrupt void fn_intp6(){ while(1){} } // pm.c +//__interrupt void fn_intp7(){ while(1){} } // led.c +//__interrupt void fn_intp21(){ while(1){} } // led.c + +__interrupt void fn_intcmp0( ) +{ + while( 1 ) + { + NOP(); + } +} + +__interrupt void fn_intcmp1( ) +{ + while( 1 ) + { + NOP(); + } +} + +__interrupt void fn_intdma0( ) +{ + while( 1 ) + { + NOP(); + } +} + +//__interrupt void fn_intdma1(){} // i2c_mcu.cɂ + +__interrupt void fn_intst0( ) +{ + while( 1 ) + { + NOP(); + } +} + +/* __interrupt void fn_intcsi00(){} */ +__interrupt void fn_intsr0( ) +{ + while( 1 ) + { + NOP(); + } +} + +/* __interrupt void fn_intcsi01(){} */ +__interrupt void fn_intsre0( ) +{ + while( 1 ) + { + NOP(); + } +} + +__interrupt void fn_intst1( ) +{ + while( 1 ) + { + NOP(); + } +} + +/* __interrupt void fn_intcsi10(){} */ +//__interrupt void fn_intiic10(){ while(1){} } +__interrupt void fn_intsr1( ) +{ + while( 1 ) + { + NOP(); + } +} + +__interrupt void fn_intsre1( ) +{ + while( 1 ) + { + NOP(); + } +} + +//__interrupt void fn_intiica(){} // i2c.cɂ +/* __interrupt void fn_inttm00(){} *//* sub.cɂĒ` */ +__interrupt void fn_inttm01( ) +{ + while( 1 ) + { + NOP(); + } +} + +__interrupt void fn_inttm02( ) +{ + while( 1 ) + { + NOP(); + } +} +__interrupt void fn_inttm03( ) +{ + while( 1 ) + { + NOP(); + } +} + +//__interrupt void fn_intad(){ while(1){} } // adc.c +__interrupt void fn_intrtc( ) +{ + while( 1 ) + { + NOP(); + } +} + +//__interrupt void int_rtcint(){} // rtc.cɂ +//__interrupt void fn_intkr(){} // main.c +__interrupt void fn_intmd( ) +{ + while( 1 ) + { + NOP(); + } +} + +__interrupt void fn_inttm04( ) +{ + while( 1 ) + { + NOP(); + } +} + +__interrupt void fn_inttm05( ) +{ + while( 1 ) + { + NOP(); + } +} + +__interrupt void fn_inttm06( ) +{ + while( 1 ) + { + NOP(); + } +} + +__interrupt void fn_inttm07( ) +{ + while( 1 ) + { + NOP(); + } +} + +#endif + + + +/* ======================================================== + L[^[荞 + ======================================================== */ +__interrupt void int_kr( ) +{ + // N邾 +} + + + +/* ======================================================== + ext dc + ======================================================== */ +__interrupt void intp4( ) +{ + // N邾 +} + + + +/* ======================================================== + shell close + ======================================================== */ +__interrupt void intp5( ) +{ + // N邾 +} + + +#else + +#include "sim/sim_interrupt_decrare.c" + +#endif + diff --git a/snake_branches/3.50_2dsll_lguide/jhl_defs.h b/snake_branches/3.50_2dsll_lguide/jhl_defs.h new file mode 100644 index 0000000..2750983 --- /dev/null +++ b/snake_branches/3.50_2dsll_lguide/jhl_defs.h @@ -0,0 +1,25 @@ +#ifndef __jhl_defs_h__ +#define __jhl_defs_h__ + +typedef unsigned char u8; +typedef signed char s8; +typedef unsigned short u16; +typedef signed short s16; + +typedef unsigned short ux16; +typedef signed short sx16; + +#define true 1 +#define false 0 + + +#define set_bit_if( cond, reg, pos ) \ +{ \ + if( cond ){ \ + reg |= pos; \ + }else{ \ + reg &= ~pos; \ + } \ +} + +#endif diff --git a/snake_branches/3.50_2dsll_lguide/kanaria.asm b/snake_branches/3.50_2dsll_lguide/kanaria.asm new file mode 100644 index 0000000..9deaddb --- /dev/null +++ b/snake_branches/3.50_2dsll_lguide/kanaria.asm @@ -0,0 +1,12 @@ +PUBLIC _END_1,_END_2,_END_3,_END_4 + +@@DATA DSEG BASEP +_END_1: +@@INIT DSEG BASEP +_END_2: +@@INITL DSEG UNIT64KP +_END_3: +@@DATAL DSEG UNIT64KP +_END_4: +; +END diff --git a/snake_branches/3.50_2dsll_lguide/kanaria_c.c b/snake_branches/3.50_2dsll_lguide/kanaria_c.c new file mode 100644 index 0000000..bbb5ec7 --- /dev/null +++ b/snake_branches/3.50_2dsll_lguide/kanaria_c.c @@ -0,0 +1,18 @@ +/********************************************//** + X^bN̍Ō̒lǂ + + X^bNj󌟍̂ + + $Id$ + ***********************************************/ +#include "incs.h" + +extern unsigned char END_4; + +void f() +{ + unsigned char *tp; + + tp = &END_4; +} + diff --git a/snake_branches/3.50_2dsll_lguide/led.c b/snake_branches/3.50_2dsll_lguide/led.c new file mode 100644 index 0000000..bf62e07 --- /dev/null +++ b/snake_branches/3.50_2dsll_lguide/led.c @@ -0,0 +1,399 @@ +/* ======================================================== + LED.c + + $Id: LED.c 418 2011-09-22 01:35:37Z n2232 $ + ======================================================== */ +#ifndef _WIN32 + +#pragma sfr + +#endif + +#include "incs.h" +#include "led.h" + + +// ======================================================== +static void LED_oshirase_init(); + + + +// ======================================================== +// TPS0 +#define BIT_PRS012 ( 1 << 2 ) +#define BIT_PRS002 ( 1 << 6 ) + +// TMR0 +#define BIT_CKS0 15 +#define BIT_CCS0 12 +#define BIT_MASTER0 11 +#define BIT_STS0 8 +#define BIT_CIS0 6 +#define BIT_MD123 1 +#define BIT_MD0 0 + + + +// ======================================================== +bit ledInitialized; + + +// m点LED +uni_info_LED info_LED; // p^[f[^ +bit info_led_off; // doffȂǁAtO +bit info_led_override; // drcʋ͏_ŏ㏑rbg + +// wifi led Xe[g +static u8 state_wifi_tx; +static u8 flag_wifi_TX; + + +// ======================================================== +#define led_fade_to( now, goal ) now = fade_to( now, goal ) + + +/********************************************//** + now goal ɂȂ܂ inc / dec BxĂԂƃOf[V + + Ƃ肠AXebvŒ + ***********************************************/ +u8 fade_to( u8 now, u8 goal ) +{ + if( now != goal ) + { + if( now > goal ) + { + now --; + } + else + { + now ++; + } + } + return( now ); +} + + + + +/********************************************//** + XlăOf[V + ***********************************************/ +#define led_fade_to2( led, status ) \ + led = fade_to2( status ) + + +u8 fade_to2( st_LED_dim_status* status ) +{ + if( status->now != status->to ) + { + if( abs(( status->to - status->now )) > abs(status->delta) ) + { + status->now += status->delta; + } + else + { + // delta Ƃ to ̒lɂԂ‚Ă܂ + status->now = status->to; + } + } + return( status->now / 128 ); +} + + + + +/********************************************//** + LED̏ + + HW^C}[ĝł̏s + ***********************************************/ +void LED_init( ) +{ +/** + PWM̃ZbgAƂ肠S + + }X^`lFO@(P01:/reset2)@}X^[͋`lłȂ + X[u@@@@P@rksnB(Rc kdcH) + @@@@@@@@Q@J + @@@@@@@@R@WiFi + @@@@@@@@S@(s͂qsb32kHz out Ɏgp) + @@@@@@@@T@[d + @@@@@@@@U@d k + @@@@@@@@V@d g + */ +// LED_oshirase_init(); // m点p^[ + + /// ytF /// + TAU0EN = 1; + TPS0 = BIT_PRS012 | BIT_PRS002; // }X^[NbNCK01,8M/2 /2^4 = 250kHz + + TMR00 = + 1 << BIT_CKS0 | 0 << BIT_CCS0 | 1 << BIT_MASTER0 | 0 << BIT_STS0 | 0 + << BIT_CIS0 | 0 << BIT_MD123 | 1 << BIT_MD0; + TMR01 = TMR02 = TMR03 = TMR04 = TMR05 = TMR06 = TMR07 = + 1 << BIT_CKS0 | 0 << BIT_CCS0 | 0 << BIT_MASTER0 | 4 << BIT_STS0 | 0 + << BIT_CIS0 | 4 << BIT_MD123 | 1 << BIT_MD0; + ISC = 0; + TOM0 = 0x00FE; // o̓[hB4PWMo͂Ȃ1ɂȂTO5ȍ~ɃNbN͂Ȃ + + TOL0 = 0x0000; // o͂𔽓]邩tO + + TO0 = 0x0000; // ^C}[쒆ŁA^C}[o͂ɂĂȂƂ̃s̃b`B^C}[o͂gȂȂO + TOE0 = 0x00EE; // TOx^C}[W[H + + TS0 = 0x00EF; // Jn + + TDR00 = LED_BRIGHT_MAX - 1; // 10bit + + // Abvf[gȂǂŃ}CR̂݃u[gƂ + if( system_status.reboot ) + { + // SoC ̃R}h҂Aœd LED ‚ + vreg_ctr[VREG_C_LED_POW] = LED_POW_ILM_AUTO; + LED_duty_pow_blu = LED_BRIGHT_MAX; + } + info_led_off = false; // + ledInitialized = true; +} + + +static void LED_oshirase_init() +{ + char* p_tgt = &info_LED; + int i; + + for( i = 0; i < sizeof(info_LED); i++ ) + { + *p_tgt = 0; + p_tgt++; + } +} + + + + + +/********************************************//** + LED̒~B + + HW^C}[̒~ + ***********************************************/ + +void LED_stop( ) +{ + TT0 = 0x00EF; // Ē~iȂƂ߁j + TOE0 = 0x0000; // TOx^C}[W[H(GPIOɂȂ) + TAU0EN = 0; + LED_pow_red = 0; + LED_CAM = 0; + + LED_duty_notify_red = 0; + LED_duty_notify_blu = 0; + LED_duty_notify_grn = 0; + LED_pow_red = 0; + LED_CAM = 0; + + WIFI_txLatch = 0; + flag_wifi_TX = 0; + state_wifi_tx = 0; + + ledInitialized = false; +} + + + + +/********************************************//** + WiFi LED ̍XV + + - WX^̐ݒ on / off + - off łĂW[̑MpX -_-_-_--------_-_-_-------̃p^[_ + ***********************************************/ +void tsk_led_wifi( ) +{ + static u8 task_interval; + + if( task_interval-- != 0 ) + { + return; + } + + // MpX̃b` + if( WIFI_txLatch ) // 荞݃tÔ̂gĂ܂ + { + WIFI_txLatch = 0; + flag_wifi_TX = 1; + } + + if( flag_wifi_TX != 0 ) + { + vreg_ctr[ VREG_C_STATUS_1 ] |= REG_BIT_WIFI_TX; + // Mp^[ + switch ( state_wifi_tx ) + { + case ( 1 ): + case ( 3 ): + case ( 5 ): + LED_duty_WiFi = 0; + break; + default: + LED_duty_WiFi = vreg_ctr[VREG_C_LED_BRIGHT]; + } + state_wifi_tx ++; + if( state_wifi_tx == 32 ) // _ŌA_ĂԂ̒ + { + state_wifi_tx = 0; + flag_wifi_TX = 0; + } + task_interval = 25; + return; + } + else + { + task_interval = 30; + // MtO҂ + vreg_ctr[ VREG_C_STATUS_1 ] &= ~REG_BIT_WIFI_TX; + + if( vreg_ctr[VREG_C_LED_WIFI] == WIFI_LED_OFF ) + { + LED_duty_WiFi = 0; + return; + } + else + { + if( LED_duty_WiFi == vreg_ctr[VREG_C_LED_BRIGHT] ) + { + return; + } + else if( LED_duty_WiFi < vreg_ctr[VREG_C_LED_BRIGHT] ) + { + LED_duty_WiFi ++; + } + else + { + LED_duty_WiFi --; + } + } + task_interval = 3; + return; + } +} + + + + +bit info_led_pattern_updated; +/********************************************//** + m点LED + + tF[hAEgvZ + ***********************************************/ +static void calc_info_led_fade_out( st_LED_dim_status* tgt_led ) +{ + tgt_led -> to = 0; + tgt_led -> delta = ( 0 - tgt_led -> now ) / 64; + // tF[hAEg([ɌĂB̌z肵Ă܂B) + if(( tgt_led -> now != 0 ) && ( tgt_led -> delta == 0 )) + { + tgt_led -> delta = (sx16)-1; + } +} + + +/********************************************//** + m点LED + + Of[VvZ + ***********************************************/ +static void calc_info_led_next_frame( st_LED_dim_status* tgt_led, u8 color ) +{ + tgt_led -> to = color * 128; + // Of[Ṽf^vZ + tgt_led -> delta = (( tgt_led -> to - tgt_led -> now ) ) / info_LED.info_LED.fade_time; +} + + +/********************************************//** + m点LED + ***********************************************/ +void tsk_led_notify( ) +{ + static u8 time_to_next_frame; + static u8 frame; + static u8 loops; + static st_LED_dim_status LED_dim_status_info_R, LED_dim_status_info_G, LED_dim_status_info_B; + + if( info_led_override ) + { + // dr؂ꂪD悷 + return; + } + + if( system_status.pwr_state == ON_TRIG ) + { + LED_duty_notify_blu = 0; + LED_duty_notify_red = 0; + LED_duty_notify_grn = 0; + LED_dim_status_info_R.now = 0; + LED_dim_status_info_G.now = 0; + LED_dim_status_info_B.now = 0; + } + + if( info_led_off ) // doffȂNjoff + { + // tF[hAEg + calc_info_led_fade_out( &LED_dim_status_info_R ); + calc_info_led_fade_out( &LED_dim_status_info_G ); + calc_info_led_fade_out( &LED_dim_status_info_B ); + } + else + { + // ʏ^] + if( info_led_pattern_updated ) + { + info_led_pattern_updated = false; + vreg_ctr[ VREG_C_LED_NOTIFY_FLAG ] &= ~REG_BIT_IN_LOOP; + frame = 0; // Ə + time_to_next_frame = 0; + } + else + { + // ̃t[ɐi߂H + if( time_to_next_frame == 0 ) + { + time_to_next_frame = info_LED.info_LED.term; + + if( frame >= NOTIFY_LED_TERM -1 ) + { + vreg_ctr[ VREG_C_LED_NOTIFY_FLAG ] |= REG_BIT_IN_LOOP; + if( info_LED.info_LED.last_loop != 255 ) // 255:[v + { + loops ++; + if( loops > info_LED.info_LED.last_loop ) + { + frame = 0; + } + } + } + else + { + frame = (( frame + 1 ) & 0x1F ); // Ń}XNĂȂƍŏIt[`擪Ԃ̃OfȂ + vreg_ctr[ VREG_C_LED_NOTIFY_FLAG ] &= ~REG_BIT_IN_LOOP; + loops = 0; + } + + // Of[VvZ + calc_info_led_next_frame( &LED_dim_status_info_R, info_LED.info_LED.red[frame] ); + calc_info_led_next_frame( &LED_dim_status_info_G, info_LED.info_LED.grn[frame] ); + calc_info_led_next_frame( &LED_dim_status_info_B, info_LED.info_LED.blu[frame] ); + + } + time_to_next_frame --; + } + } + + led_fade_to2( LED_duty_notify_red, &LED_dim_status_info_R ); + led_fade_to2( LED_duty_notify_grn, &LED_dim_status_info_G ); + led_fade_to2( LED_duty_notify_blu, &LED_dim_status_info_B ); +} diff --git a/snake_branches/3.50_2dsll_lguide/led.h b/snake_branches/3.50_2dsll_lguide/led.h new file mode 100644 index 0000000..ce8541f --- /dev/null +++ b/snake_branches/3.50_2dsll_lguide/led.h @@ -0,0 +1,142 @@ +#ifndef __led__ +#define __led__ + + + +// ==================================== + +//#define LED_CHARGE P2.4 // PMŒ` + +// LED_DUTY +#define LED_duty_pow_blu TDR06 +#define LED_duty_WiFi TDR03 + +#define LED_duty_3d TDR01 +#define LED_duty_notify_red TDR07 +#define LED_duty_notify_grn TDR05 +#define LED_duty_notify_blu TDR02 + +// dutyς܂ +#ifndef _WIN32 +#define LED_pow_red P4.2 +#define LED_CAM P7.5 +#else +#define LED_pow_red mcuRegP[ _P4_2 ] +#define LED_CAM mcuRegP[ _P7_5 ] +#endif + +#define NOTIFY_LED_TERM 32 + + +#define LED_BRIGHT_MAX 0x00FF + +// ==================================== +#define WIFI_txLatch PIF21 // dgMpX + + + +// ==================================== +enum LED_ILUM_MODE +{ + LED_POW_ILM_AUTO = 0, + LED_POW_ILM_ON, + LED_POW_ILM_SLEEP, + LED_POW_ILM_OFF, + LED_POW_ILM_ONLY_RED, + LED_POW_ILM_ONLY_BLUE, + LED_POW_ILM_FORCE_BT_EMPTY +}; + + +enum LED_MODE_3D +{ + LED_3D_ILM_OFF = 0, + LED_3D_ILM_ON +}; + + +// VREG_C_WIFI_LED +enum WIFI_LED_MODE +{ + WIFI_LED_OFF = 0, + WIFI_LED_ON +}; + + +// VREG_C_WIFI_NOTIFY +enum NOTIFY_LED_MODE +{ + NOTIFY_LED_OFF = 0, + NOTIFY_LED_ON, + NOTIFY_LED_PTN0, + NOTIFY_LED_PTN1, + NOTIFY_LED_PTN2 +}; + + +// VREG_C_CAM_LED +enum CAM_LED_MODE +{ + CAM_LED_OFF = 0, + CAM_LED_BLINK, + CAM_LED_ON, + CAM_LED_BY_TWL, + CAM_LED_ON_PLUSE, + CAM_LED_OFF_PLUSE +}; + + + +// m点LED֌W // +typedef struct _st_info_LED +{ + u8 term; // 1t[`bNH + u8 fade_time; // `bNŎ̃t[̐FɒB邩 + u8 last_loop; // ŏIt[JԂH + u8 resv1; + u8 red[32]; + u8 grn[32]; + u8 blu[32]; +}st_info_LED; + +typedef union _uni_info_LED +{ + st_info_LED info_LED; + u8 bindata[ sizeof( st_info_LED ) ]; +}uni_info_LED; + +extern uni_info_LED info_LED; + + +// LED _Ō // +typedef struct _st_led_red_batt_empty +{ + u8 dats[4]; +}st_led_red_batt_empty; + +extern st_led_red_batt_empty led_red_batt_empty; + + +/* + m点LED +*/ +typedef struct _st_LED_dim_status +{ + sx16 to; + sx16 delta; + sx16 now; // _ȉoĂȂĂ͂ȂȂ +}st_LED_dim_status; + + + +// ==================================== +void LED_init( ); +void LED_stop( ); + + +// ==================================== +extern bit ledInitialized; +extern bit info_led_override; + + +#endif diff --git a/snake_branches/3.50_2dsll_lguide/led_cam.c b/snake_branches/3.50_2dsll_lguide/led_cam.c new file mode 100644 index 0000000..7d4a1eb --- /dev/null +++ b/snake_branches/3.50_2dsll_lguide/led_cam.c @@ -0,0 +1,156 @@ +/******************************************************//** + LED_Cam TO02 + + BLINK,*_PLUSE ̎́A1͕K̏ԂɂȂ܂B + + ̊Ԃ OFFBLINK ȂǂƁAOFF܂B + + $Id$ + *********************************************************/ +#ifndef _WIN32 + +#pragma sfr + +#endif + +#include "incs.h" +#include "led.h" +#include "vreg_twl.h" + + +// ======================================================== +static u8 state_led_cam = 0; +static u16 task_interval; + +bit cam_led_update; + + + +// ======================================================== +static void cam_led_twl(); + + + + +/********************************************//** + C^[os^XNƁAtwlWX^ւ݂̏̂QJĂ΂܂B + ***********************************************/ +void tsk_led_cam( ) +{ + DI_wt_chk(); // WX^ւ݂̏ŋN邱Ƃ邽 + if( !cam_led_update ) + { + if( task_interval != 0 ) + { + task_interval --; + EI(); + return; + } + } + + cam_led_update = false; // TWL ̃uNݒiꔭ_ĵ + EI(); + + if( system_status.pwr_state == SLEEP ) // sleepA + { + LED_CAM = 0; + state_led_cam = 0; + } + else + { + // uN̂悤ɑ҂ƂȊO͖TN + // (WX^̕ύXɂɔ) + switch ( vreg_ctr[VREG_C_LED_CAM] ) + { + case ( CAM_LED_OFF ): + default: + LED_CAM = 0; + state_led_cam = 0; + break; + + case ( CAM_LED_ON ): + LED_CAM = 1; + state_led_cam = 0; + break; + + case ( CAM_LED_BLINK ): + if( state_led_cam == 0 ) + { + LED_CAM = 1; + state_led_cam = 1; + } + else + { + LED_CAM = 0; + state_led_cam = 0; + } + task_interval = 250; + break; + + case ( CAM_LED_ON_PLUSE ): + if( state_led_cam == 0 ) + { + LED_CAM = 1; + state_led_cam = 1; + task_interval = 250; + } + else + { + vreg_ctr[VREG_C_LED_CAM] = CAM_LED_OFF; + } + break; + + case ( CAM_LED_OFF_PLUSE ): + if( state_led_cam == 0 ) + { + LED_CAM = 0; + state_led_cam = 1; + task_interval = 250; + } + else + { + vreg_ctr[VREG_C_LED_CAM] = CAM_LED_ON; + } + break; + + case( CAM_LED_BY_TWL ): + cam_led_twl(); + } + } // if( system_status.pwr_state == sleep ) ... else ... +} + + +/********************************************//** + TWLJLED𑀍삳 + ***********************************************/ +static void cam_led_twl() +{ + // TWL݊ // + switch ( vreg_twl[ REG_TWL_INT_ADRS_CAM ] ){ + case( TWL_CAMLED_OFF ): + LED_CAM = 0; + state_led_cam = 0; + break; + + case( TWL_CAMLED_BLINK ): + if( state_led_cam == 0 ) + { + LED_CAM = 1; + state_led_cam = 1; + } + else + { + LED_CAM = 0; + state_led_cam = 0; + } + task_interval = (u8)( 600 / SYS_INTERVAL_TICK ) + 250; + break; + + case( TWL_CAMLED_ON ): + case( TWL_CAMLED_DEF_ON ): + default: + LED_CAM = 1; + state_led_cam = 1; + break; + } +} diff --git a/snake_branches/3.50_2dsll_lguide/led_pow.c b/snake_branches/3.50_2dsll_lguide/led_pow.c new file mode 100644 index 0000000..6773d4e --- /dev/null +++ b/snake_branches/3.50_2dsll_lguide/led_pow.c @@ -0,0 +1,296 @@ +/* ======================================================== + dLED + LED_POW_B,R 6,7 + + TDR00@(0x03FFBTPS0250kHzŃJEgAbvB10bitȂ250HzʂɂȂ) + TDR0x@Duty 0ŏATDR00( =0x03FFȏ)œ_łB + + $Id: asdf$ + ======================================================== */ + +/* ======================================================== + enum pwr_state_{ + OFF_TRIG = 0, + ON_CHECK, + ON_TRIG, + ON, + SLEEP +}; + +enum LED_ILUM_MODE{ + LED_POW_ILM_AUTO, + LED_POW_ILM_ON, + LED_POW_ILM_SLEEP, + LED_POW_ILM_CEOFF +}; + ======================================================== */ +#ifndef _WIN32 + +#pragma sfr + +#endif + +#include "incs.h" +#include "led.h" +#include "pm.h" + +// ======================================================== +// X[vł̃e[uB}WB +const u8 LED_PTN_SLEEP[] = { + 25, 38, 52, 68, 83, 98, 110, 119, + 125, 128, 128, 125, 119, 110, 98, 83, + 68, 52, 38, 25, 16, 10, 8, 8, + 8, 8, 8, 8, 8, 8, 10, 16 + }; + + +// LED̓drcLED̓_Ńp^[ +st_led_red_batt_empty led_red_batt_empty = { 0x55, 0x55, 0x55, 0x55 }; +#define LED_SLEEP_FRAME_LEN 71 +#define LED_SLEEP_DIM_LEN 71 +#define LED_SLEEP_FRAME_NUM 32 + + + +// ======================================================== +static void led_pow_normal( ); +static void led_pow_sleep( ); +static void led_pow_bt_empty(); +static u8 led_pow_batt_low(); + +#define led_fade_to( now, goal ) now = fade_to( now, goal ) +extern u8 fade_to( u8 now, u8 goal ); + +#define led_fade_to2( led, status ) led = fade_to2( status ) +extern u8 fade_to2( st_LED_dim_status* status ); + + + +// ======================================================== +// dLED̃X[vp^[̃Xe[^X +static u8 time_to_next_frame_sleep = LED_SLEEP_FRAME_LEN; +static u8 frame_sleep; +static st_LED_dim_status LED_dim_status_sleep; + +extern bit ledInitialized; +extern bit BT_IN_CHG_delayed_n; + + + +/********************************************//** + dLED + + {Iɂ́A + + 쎞A + - drc > 10% “_imaster_brightness̖邳j + - 5% ԓ_ (100%_AHWŒs) + - ȉ ԓ_Am点LEDԂBAA_v^h5%`̓ + + X[v + - drc > 10% “_imaster_brightness̖邳j + - 쎞Ɠ + + X[vɂ͎Ő؂ւȂ̂ŁAWX^삪Kvłi̕s悢ł傤Hj + + ̃p^[͐Ŷ߁B + ***********************************************/ +void tsk_led_pow( ) +{ + if( ! ledInitialized ) + { + return; + // ܂ + } + + info_led_override = false; + + switch ( vreg_ctr[VREG_C_LED_POW] ) + { + case ( LED_POW_ILM_AUTO ): + default: + led_pow_normal( ); + break; + + case ( LED_POW_ILM_SLEEP ): + led_pow_sleep( ); + break; + + case ( LED_POW_ILM_ON ): + led_fade_to( LED_duty_pow_blu, vreg_ctr[VREG_C_LED_BRIGHT] ); + LED_pow_red = 0; + break; + + case ( LED_POW_ILM_OFF ): + led_fade_to( LED_duty_pow_blu, 0 ); + LED_pow_red = 0; + break; + + case ( LED_POW_ILM_ONLY_RED ): + LED_duty_pow_blu = 0; + LED_pow_red = 1; + break; + + case ( LED_POW_ILM_ONLY_BLUE ): + LED_duty_pow_blu = LED_BRIGHT_MAX; + LED_pow_red = 0; + break; + + case ( LED_POW_ILM_FORCE_BT_EMPTY ): + led_pow_bt_empty(); + break; + } + + if( system_status.pwr_state == OFF || system_status.pwr_state == ON_CHECK ) + { + LED_pow_red = 0; + info_led_override = false; + } + + if( info_led_override ) + { + LED_duty_notify_blu = 0; + LED_duty_notify_grn = 0; + LED_duty_notify_red = ( LED_pow_red == 0 )? 0 : 255; + } +} + + + +/********************************************//** + ʏ퓮쎞 + + drcʂŁA@ԁԓ_ + ***********************************************/ +static void led_pow_normal( ) +{ + time_to_next_frame_sleep = LED_SLEEP_FRAME_LEN; + frame_sleep = 0; + LED_dim_status_sleep.now = (sx16)LED_duty_pow_blu * 128; + + if( led_pow_batt_low() != 0 ) // Ԃ̓_łĂ܂ + { + return; + // ܂ + } + + // “_ + led_fade_to( LED_duty_pow_blu, vreg_ctr[VREG_C_LED_BRIGHT] ); +} + + + +/********************************************//** + X[vz^p^[ + + drcʂŐԁԓ_łɂ + ***********************************************/ +static void led_pow_sleep( ) +{ + if( led_pow_batt_low() != 0 ) // Ԃ̓_łĂ܂ + { + time_to_next_frame_sleep = LED_SLEEP_FRAME_LEN; + frame_sleep = 0; + LED_dim_status_sleep.now = (sx16)LED_duty_pow_blu * 128; + return; + // ܂ + } + + LED_dim_status_sleep.to = LED_PTN_SLEEP[frame_sleep] * 128; + + // Of[Ṽf^vZ + LED_dim_status_sleep.delta = (( LED_dim_status_sleep.to - LED_dim_status_sleep.now ) ) / LED_SLEEP_DIM_LEN; + led_fade_to2( LED_duty_pow_blu, &LED_dim_status_sleep ); + + // ̃t[ɐi߂H + time_to_next_frame_sleep --; + if( time_to_next_frame_sleep == 0 ) + { + time_to_next_frame_sleep = LED_SLEEP_FRAME_LEN; + + frame_sleep ++; + if( frame_sleep >= LED_SLEEP_FRAME_NUM -1 ) + { + frame_sleep = 0; + } + } +} + + + +/********************************************//** + drȂƂ̋ + +@ԒlF@0@drȂȂ +@@@@@1@Ȃ̂ŋʃp^[ɂ + ***********************************************/ +static u8 led_pow_batt_low() +{ + if( vreg_ctr[VREG_C_BT_REMAIN] > BATT_TH_LO ) + { + LED_pow_red = 0; + return 0; + // ܂ + } + + if(( vreg_ctr[VREG_C_BT_REMAIN] > BATT_TH_EMPTY ) || !BT_IN_CHG_delayed_n ) + // drcʂ5%i`10%j@܂́Aꖢł[d + { + // ԓ_ + led_fade_to( LED_duty_pow_blu, 0 ); + { + LED_pow_red = 1; + } + + } + else // dr5%@@A_v^Ȃ + { + led_pow_bt_empty(); + } + return 1; +} + + + + +/********************************************//** +@drȂp^[ + +@@wp^[𗬂 + +@@m点㏑ + ***********************************************/ +static void led_pow_bt_empty() +{ + static u8 delay; + static u8 red_blink_poi; + + info_led_override = true; + + // ԓ_ + led_fade_to( LED_duty_pow_blu, 0 ); + + // Ԃ̓_Ńp^[wł + delay ++; + if( delay < 64 ) // t[̕ێԉ҂ + { + return; + } + delay = 0; + + if( led_red_batt_empty.dats[ red_blink_poi / 8 ] & ( 1 << ( red_blink_poi % 8 )) ) + { + LED_pow_red = 1; + } + else + { + LED_pow_red = 0; + } + red_blink_poi ++; + if( red_blink_poi >= 32 ) + { + red_blink_poi = 0; + } +} + + diff --git a/snake_branches/3.50_2dsll_lguide/loader.c b/snake_branches/3.50_2dsll_lguide/loader.c new file mode 100644 index 0000000..b1f9eca --- /dev/null +++ b/snake_branches/3.50_2dsll_lguide/loader.c @@ -0,0 +1,418 @@ +/* ======================================================== + MCU CTR BSR + 2009/03/30 - + JZp c + + u[g[_[ + zXg̒ʐMƁAȏAt@[̃`FbNsB + + $Id: loader.c 418 2011-09-22 01:35:37Z n2232 $ + ======================================================== */ +#ifndef _WIN32 + +#pragma SFR +#pragma di +#pragma ei +#pragma nop +#pragma stop +#pragma halt +#pragma opc + +#endif +#include "incs_loader.h" + +#include +#include "fsl_user.h" + +#include "i2c_ctr.h" +#include "i2c_mcu.h" +#include "pm.h" +#include "rtc.h" + +#include "reboot.h" + +#include "wdt.h" +#include "magic.h" + + + +#define REG_BIT_RESF_WDT (1<<4) +#define REG_BIT_RESF_TRAP (1<<7) +#define REG_BIT_RESF_LVI (1<<0) + + + +// ======================================================== +#if (FSL_DATA_BUFFER_SIZE>0) +fsl_u08 fsl_data_buffer[FSL_DATA_BUFFER_SIZE]; +#endif + + + +#ifdef FSL_INT_BACKUP +static fsl_u08 fsl_MK0L_bak_u08; /* if (interrupt backup required) */ +static fsl_u08 fsl_MK0H_bak_u08; /* { */ +static fsl_u08 fsl_MK1L_bak_u08; /* reserve space for backup information */ +static fsl_u08 fsl_MK1H_bak_u08; /* of interrupt mask flags */ +static fsl_u08 fsl_MK2L_bak_u08; /* */ +static fsl_u08 fsl_MK2H_bak_u08; /* } */ +#endif + + + +// ======================================================== +void hdwinit(); // static ɂcrt0猩ȂȂ܂BӁI +static void hdwinit2(); +static void chk_platform_type(); +static void chk_firm_broke(); + + +extern void main_loop(); + + +/********************************************//** + * - t@[Abvf[gAWDT̃ZbgA + * - t@[̔jA + * - {̎ނ̎ʁA + * - |[gA + * - ჌xȃytF̏A + * + * main_loop()ĂԁB + ***********************************************/ +void main( ) +{ + while( 1 ) + { + WDT_Restart( ); + + if( RTCEN ) // TRAP(update)ɂgȂBWDTł͗Ȃ + { + system_status.reboot = true; + } + + { + volatile u8 my_resf = RESF; // ǂނƏ + if( ( my_resf & REG_BIT_RESF_WDT ) != 0 ) + { + vreg_ctr[ VREG_C_MCU_STATUS ] |= REG_BIT_STATUS_WDT_RESET; + // set_irq( VREG_C_IRQ0, REG_BIT_IRQ_WDT_RESET ); + // I2C̏ɍs + system_status.reboot = true; + } + else if( ( my_resf & REG_BIT_RESF_TRAP ) != 0 ) // ( FSL_ForceReset, 'r' ) + { + system_status.reboot = true; + } +/* LVIgp + else if(( my_resf & REG_BIT_RESF_LVI ) != 0 ) + { + vreg_ctr[ VREG_C_MCU_STATUS ] |= ( 1 << 2 ); + } +*/ + } +//* ROMǂɂȂȂA]̏RgAEg + if( !system_status.reboot ) + { + // ʏ̓d + // drڑAƑ҂Ă݂(`^O΍) + u16 pwup_delay0; + for( pwup_delay0 = 0xFFFF; pwup_delay0 != 0; pwup_delay0 -- ){;}; + } +//*/ + hdwinit2( ); + +#ifndef _WIN32 + // t@[̐`FbN // + chk_firm_broke(); // ĂAĂȂ +#endif + + // @픻 + chk_platform_type(); + + // HALfobOZbg + hal_reset(); + hal_update(); + + // RTC + RTC_init( ); // Ńu[g肵ď邩f܂ + + // ʏ^] + main_loop( ); + } +} + + + +/********************************************//** + * }WbNio[`FbNāA삳悤ƂĂt@[jĂȂ`FbN܂B + * + * Ăꍇ̓XgA݁AMCU̓Zbg܂B + ***********************************************/ +static void chk_firm_broke() +{ + u8 i; + u8 comp = 0; + + // [_[Ɩ{͓̂o[WH + /// ւ̃Abvf[g̓rŏIĂȂH + 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 +2 ) != ':' ) // ς̂܂ + { + comp ++; + } + + if( comp != 0 ) + { + // t@[XgA݂ + firm_restore( ); + // AĂȂBZbgB + } +} + + +/********************************************//** +vbgtH[̔sAsystem_statusɃZbg܂B + + fobK‚ȂłƏɔłȂƂ܂B + +CTRt@~ + + DEV_DET(P12.[2:1]) + + +CTR̊J@ + + P40,41 !! fobOLP40LMCUN܂I + + - HH @ + - HL NBDV + - LH X^hAV + - LL ISfobK + + ***********************************************/ +static void chk_platform_type() +{ + // CTRt@~ // + system_status.family = (enum family_)( DEV_DET >> 1 ); /// ... + +#ifdef _DBG_FORCE_FLOWER + // Iɋ@ݒăfobOƂ +// system_status.family = FAMILY_FLOWER; +#endif + +#ifdef _MCU_ARR + if( system_status.family == FAMILY_SPFL ) + { + system_status.family = FAMILY_CLOSER; + } + + if( system_status.family == FAMILY_FLOWER ) + { + system_status.family = FAMILY_JANE; + } + +#endif + + if( system_status.family == FAMILY_CTR ) + { + system_status.LCD_is_CGS = true; + } + else + { + // FAMILY_SPFL or FAMILY_SNAKE or FAMILY_FLOWER // At@XYȂ + system_status.LCD_is_CGS = false; + } + + if( system_status.LCD_is_CGS == true ) + { + pm_reg_bit_vddlcd = PM_REG_BIT_VDDLCD_CGS; + } + else + { + pm_reg_bit_vddlcd = PM_REG_BIT_VDDLCD_AMO; + } + set_vdd_voltages( system_status.family ); + + // CTR̊J@ // + // ꉞ + system_status.is_dev = false; + system_status.taikendai = false; + system_status.taikendai_nbd = false; + + switch( DIPSW ) + { + case DIPSW_TAIKENDAI: system_status.taikendai = true; break; + case DIPSW_TAIKENDAI_NBD: system_status.taikendai_nbd = true; break; + case DIPSW_ISDEV: system_status.is_dev = true; break; + } +#ifdef _FORCE_TAIKENDAI_ + system_status.taikendai = true; +#endif + +#ifdef _FORCE_TAIKENDAI_NBD_ + system_status.taikendai_nbd = true; +#endif +} + + + + +/********************************************//** + ŏ̃WX^s܂B + + gݍ݃X^[gAbv[`Ă΂܂B + ***********************************************/ +void hdwinit( void ) +{ // X^[gAbv[`ɌĂт܂ + DI( ); /* }X^荞݋֎~ */ + + CMC = bits8(0,0,0,1, 0,0,0,0); /* X1U(̓|[g)AXT1gpAd͔U͕sɕtʏ */ + CSC = bits8(1,0,0,0, 0,0,0,0); /* X1UȂAXT1UAU */ + OSMC = bits8(0,0,0,0, 0,0,0,1); /* BWX^ */ + NOP();NOP();NOP(); // 3clkJ + CKC = bits8(0,0,0,0, 1,0,0,0); /* CPU/ӃNbN=fMAINAfMAIN=fMXAfCLK=fMX */ + + /*--- doH̐ݒ ---*/ + /* Zbg̃ftHǵAIvVEoCgɂĎw肳 */ + LVIS = 0x00; /* VLVI = 4.22}0.1V */ +// LVIM = 0x00; /* LVI֎~ */ + /* dd(VDD)od(VLVI)Ɋ */ + /* dd(VDD)od tempA[0][1], "offset" => tempA[0][2], "type" => tempA[0][3], "data" => tempA[0][4], "CRC" => tempA[0][5] } + + break if src_in["type"].hex == 01 + break if src_in["len"].hex == 00 + # next if src_in["type"].hex != 00 + if( src_in["type"].hex != 00 ) +# p dat + next + end + + offset = src_in["offset"].hex + next if(( 0x1000 <= offset ) && ( offset < 0x2000 )) + + dataTemp = src_in["data"].scan(/\w\w/) + + ( 0...(src_in["len"].to_s.hex) ).each{|i| + bindata[ offset + i ] = ( dataTemp[ i ] ).to_s.hex + } +end + +### debug enable bit check ############# +# fobO‚ɂȂĂISfobKŋNȂiMCU삵Ȃj +p bindata[0xC3] +if( bindata[0xC3] != 0x04 ) + print( "!E debug enable!!" ) + exit( 1 ) +end + + +### format data and output ############# +4096.times{ + bindata.delete_at(4096) +} +dest.write( bindata[0..(0x4FFF - 0x1000)].pack("c*") ) +dest.close + +printf( "intel-HEX to bsr bin converter\n file converted!\n\n" ) diff --git a/snake_branches/3.50_2dsll_lguide/pedo_alg_thre_det2.c b/snake_branches/3.50_2dsll_lguide/pedo_alg_thre_det2.c new file mode 100644 index 0000000..4e69a04 --- /dev/null +++ b/snake_branches/3.50_2dsll_lguide/pedo_alg_thre_det2.c @@ -0,0 +1,567 @@ +/* ******************************************************** + v + + 3x̃A^Cf[^AxNg̃moA + 臒l𒴂鎞ԁAԊuAm̑傫臒l؂ւȂ + + $Id$ +********************************************************* */ +#ifndef _WIN32 + +#pragma mul +#pragma div +#pragma bcd + +#endif + +#include "incs.h" + +#ifndef _WIN32 +#include +#endif + +#include "accero.h" +#include "pedometer.h" + +#include "pool.h" + +// ======================================================== +// ̍ŏIL^ +// ̏Ԃ̓OǂݏȍԂł̂łȂł +// ԂɃAhX̎Ⴂ̂mۂ̂҂Ă܂... +typedef struct{ + u8 hour_bcd; + u8 day_bcd; + u8 month_bcd; + u8 year_bcd; + u8 min_bcd; + u8 sec_bcd; +}st_calender; + + + +// ======================================================== +static u16 get_long_hour(); +static u16 calc_hours_spend( u8 ); + + + +// ======================================================== +bit pedolog_overflow; // 192ԋL^ς݃tO(i2cœǂ߂) +extern uni_pool pool; // O͂̍\̂̒ +static u8 p_record; // Ȍ݈ʒu +static st_calender cal_log_latest; // ŌɕXV +static u16 last_hour_fny; // fny:from new year +static st_calender cal_temp; +static u16 now_longhour; + + + + + + +// ======================================================== +#define _use_my_sqrt_ +#ifdef _use_my_sqrt_ +static unsigned long my_sqrt( unsigned long ); +#endif + +// N͉[NH +#define is_leapyear( y ) (( y & 0x03 ) == 0 ) +// uNv͉[NH +#define is_firstyear( y ) (( y & 0x03 ) == 1 ) + + +// xZTlFIR-LPFɒʂB̌W +extern const s8 lpf_coeff[]; +#define TAP 64 +#define FIL_COEFF_QUANT 10 + + +/********************************************//** +@v + ***********************************************/ +void pedometer() +{ + static s16 th_H = 15000; // 臒lBIύX܂ + static s16 th_L = 11000; + static u16 acc_norm[3]; // x̑傫̃qXgB傫 + static u16 acc_norm_temp; + static u8 interval_hh = 0xFF; // R-RԂ̎ԁBZ߂͂B + static u8 time_l; // Őɏ̌oߎ + static u16 peak_l; // J̐[ + static u16 norm_hist[TAP]; + + static u8 hist_indx; + + signed long filterd; + + u8 i; + + u16 sx16,sy16,sz16; + + DI_wt_chk(); + sx16 = abs( (u16)vreg_ctr[VREG_C_ACC_XH] * 256 + vreg_ctr[VREG_C_ACC_XL] ); + sy16 = abs( (u16)vreg_ctr[VREG_C_ACC_YH] * 256 + vreg_ctr[VREG_C_ACC_YL] ); + sz16 = abs( (u16)vreg_ctr[VREG_C_ACC_ZH] * 256 + vreg_ctr[VREG_C_ACC_ZL] ); + EI(); + + // xNg̃m +#ifdef _mcu_ +# ifndef _use_my_sqrt_ + norm_hist[ hist_indx & TAP-1 ] = sqrt( (long)sx16 * ( sx16 / 2 ) + + (long)sy16 * ( sy16 / 2 ) + + (long)sz16 * ( sz16 / 2 ) + ); +# else + norm_hist[ hist_indx & TAP-1 ] = my_sqrt( (long)sx16 * ( sx16 / 2 ) + + (long)sy16 * ( sy16 / 2 ) + + (long)sz16 * ( sz16 / 2 ) + ); +# endif +#endif + +#ifdef _pc_ + norm_hist[ hist_indx & TAP-1 ] = normh * 256 + norml; +#endif + + hist_indx ++; + + // qXgɃtB^(fir)|āA̒l߂ // + filterd = 0; +// for( i = 8; i != 55; i++ ) // WO΂̂ + for( i = 0; i != 46; i++ ) // We[u܂Bp[^ + { + filterd += (signed long)norm_hist[ ( hist_indx + i ) & TAP-1 ] * lpf_coeff[ i ]; + } + + filterd += (4096)*512; // DCZ...Ǝv + acc_norm_temp = (s16)( filterd /1024 & 0xFFFF ); // FIL_COEFF_QUANT琳K +/* + if( acc_norm[0] < acc_norm_temp ) + { + t_rise ++; + if( t_rise == 0 ) + t_rise == 254; + } + else + { + t_rise = 0; + } +*/ + if( acc_norm[0] != acc_norm_temp ) + { + acc_norm[2] = acc_norm[1]; // qXg + acc_norm[1] = acc_norm[0]; + acc_norm[0] = acc_norm_temp; + } + + if( acc_norm[2] <= acc_norm[1] && acc_norm[1] > acc_norm[0] + && acc_norm[0] > th_H ) + // ɑŁA臒l𒴂Ă + { + if( 21 < interval_hh ) + // Őɑ傩̊Ԋuقǂ悢 + { + if(( interval_hh < 160 ) && ( time_l < interval_hh )) + // Jł + { + if( acc_norm[0] - peak_l > 4200 ){ + // ܂ + hosu_increment_if_necessary(); + } + } + interval_hh = 0; + } + // Ȃ񂿂臒l̓IύX + if( acc_norm[0] > 18000 ) + { + th_L = acc_norm[0] - 10000; + } + else + { + th_L = 11000; + } + } + else + { + if( interval_hh != 255 ) // OaZĊyɏ炢̂ + { + interval_hh ++; + } + } + + // (2) ߂̋ɏ̎ + if( acc_norm[2] >= acc_norm[1] && acc_norm[1] < acc_norm[0] + && acc_norm[0] < th_L ) + { + // ɏo + time_l = 0; + peak_l = acc_norm[0]; + } + else + { + if( time_l != 255 ) + { + time_l ++; + } + } +} + + +/********************************************//** +@{P + + - ݐςCNg + - XV + + *2011/01/20 + + dlύX@OςɂȂ炻Ŏ~߂ + ***********************************************/ +#define HOSU_NODATA 0xFFFF +#define HOSU_MAX 0xFFFE + +void hosu_increment_if_necessary() +{ + u8 year_compd; // hourE␳ς݌ݔNBcomp(ensation -ed) + + // ݎ擾 + DI_wt_chk(); + RWAIT = 1; + while( !RWST ){;} + + cal_temp.hour_bcd = HOUR; + cal_temp.day_bcd = DAY; + cal_temp.month_bcd = MONTH; + cal_temp.year_bcd = YEAR; + cal_temp.min_bcd = MIN; + cal_temp.sec_bcd = SEC; + + RWAIT = 0; + EI(); + + year_compd = bcdtob( cal_temp.year_bcd ); + + now_longhour = get_long_hour(); + + // ݃|C^̍XV + if( ! ( vreg_ctr[ VREG_C_ACC_HOSU_L ] == 0 && // vonAŏ̈܂ł͑O񂩂̌oߎԂvZȂ + vreg_ctr[ VREG_C_ACC_HOSU_M ] == 0 && + vreg_ctr[ VREG_C_ACC_HOSU_H ] == 0 )) //. SrbgORŃ[肷̂̓fW^H݂̕ + { + // v~܂ĂԂlĕKvȂi߂ + // ␳vZ@U뎞ōɂȂꍇAA23ɏ㏑ + if( now_longhour == (u16)-1 ) // NA23䈵̂ƂAvZʂ -1 ɂȂĂ + { + now_longhour = 365 * 24 -1; + if( is_firstyear(year_compd) ) + { + now_longhour += 24; + } + year_compd --; + } + fill_hosu_hist_hours( calc_hours_spend( year_compd ) ); // ݃|C^̍XVs + + // OӂŋL^~H + if( pedolog_overflow ) + { + return; + // ܂BO̍XVȂB + } + } + + // CNgėǂ + cal_log_latest = cal_temp; // OXV + last_hour_fny = now_longhour; + + // O@CNg + if( pool.vreg_c_ext.pedo_log[ p_record ] == HOSU_MAX ) + { + // Ȃł܂ + //. v̍vƗ݌vȂȂ̂邽߂낤ǁAǂȂ́H + return; + } + else if( pool.vreg_c_ext.pedo_log[ p_record ] == HOSU_NODATA ) // ̎ԑэŏ̃JEg̎ + { // ꂵȂ1Ȃ + pool.vreg_c_ext.pedo_log[ p_record ] = 1; + } + else + { + // ʏpX + pool.vreg_c_ext.pedo_log[ p_record ] ++; + } + + // ݐς̍XV // + DI_wt_chk(); + if( ++vreg_ctr[ VREG_C_ACC_HOSU_L ] == 0 ) // JXg`FbN + { + if( ++vreg_ctr[ VREG_C_ACC_HOSU_M ] == 0 ) + { + if( ++vreg_ctr[ VREG_C_ACC_HOSU_H ] == 0 ){ + vreg_ctr[ VREG_C_ACC_HOSU_L ] = 255; //. 낢뎸s... + vreg_ctr[ VREG_C_ACC_HOSU_M ] = 255; + vreg_ctr[ VREG_C_ACC_HOSU_H ] = 255; + } + } + } + EI(); +} + + +/********************************************//** +󔒂̎ԂK؂0ɂāA +܂ނPԂ̃f[^ʒuɃ|C^Hi߂ + ***********************************************/ +static void fill_hosu_hist_hours( u16 hours ) +{ + // OӂH + if( (u16)p_record + hours >= PEDOMETER_LOG_SIZE ) + { + pedolog_overflow = true; + return; + } + + // 󔒂̐Ԃ̐ݒ + while( hours != 0 ) + { + // Vdl@ςŒ~ + p_record ++; +#if 1 // debug + if( p_record >= PEDOMETER_LOG_SIZE ) + { + pedolog_overflow = true; +// dbg_nop(); // ɗ悤ƃoO + break; + } + else +#endif + { + pool.vreg_c_ext.pedo_log[ p_record ] = 0; + } + hours --; + } + + return; +} + + + +/********************************************//** +NAAuf[^vɏ + ***********************************************/ +void clear_hosu_hist() +{ + u8 hours = PEDOMETER_LOG_SIZE; + do + { + hours --; + pool.vreg_c_ext.pedo_log[ hours ] = 0xFFFF; + } + while( hours != 0 ); + + DI_wt_chk(); + vreg_ctr[ VREG_C_ACC_HOSU_L ] = 0; + vreg_ctr[ VREG_C_ACC_HOSU_M ] = 0; + vreg_ctr[ VREG_C_ACC_HOSU_H ] = 0; + p_record = 0; + pedolog_overflow = false; + EI(); +} + + +extern u8 iic_burst_state; +bit pedolog_read_msb; +/********************************************//** + ṽqXgԂB + + PĂԓxɁAqXg̉ʁAʁAꎞԑkĉʏ... + ***********************************************/ +u8 hosu_read( ) +{ + u8 rv; + static u8 p_record_buffer; + static st_calender cal_buff; // ꉞAAg~bN + + if( iic_burst_state == 0 ) + { + p_record_buffer = p_record; + DI_wt_chk(); + cal_buff = cal_log_latest; + EI(); + } + + if( iic_burst_state <= 5 ) + { + rv = *( (u8*)&cal_buff + iic_burst_state ); // + iic_burst_state ++; + return( rv ); + } + else + { + u16 temp; + // 16rbgŋL^Ă̂ł΂炵đ /// Ɗy@񂶂 + temp = pool.vreg_c_ext.pedo_log[ p_record_buffer ]; + if( !pedolog_read_msb ) + { + rv = (u8)( temp & 0x00FF ); + } + else + { + rv = (u8)(( temp >> 8 ) & 0x00FF ); + if( p_record_buffer == 0 ) + { + p_record_buffer = PEDOMETER_LOG_SIZE-1; + } + else + { + p_record_buffer --; + } + } + pedolog_read_msb ^= 1; + return( rv ); + } + +} + + + +/********************************************//** + ŇǓoߎ(hour)ԂB + + + + Ԓl u16 long_hour + ***********************************************/ +const u16 DAYS_FROM_HNY[] = { + 0, + 31, + 31+28, // =59B@cRO͂PTX + 31+28+31, + 31+28+31+30, + 31+28+31+30+31, + 31+28+31+30+31+30, + 31+28+31+30+31+30+31, + 31+28+31+30+31+30+31+31, + 31+28+31+30+31+30+31+31+30, + 31+28+31+30+31+30+31+31+30+31, + 31+28+31+30+31+30+31+31+30+31+30 + }; + +static u16 get_long_hour() +{ + u8 year = bcdtob( cal_temp.year_bcd ); + u8 month = bcdtob( cal_temp.month_bcd ); + u8 day = bcdtob( cal_temp.day_bcd ); + u8 hour = bcdtob( cal_temp.hour_bcd ); + u8 min_bcd = cal_temp.min_bcd; // 召rȂ̂bcd̂܂܂ł悢 + u8 sec_bcd = cal_temp.sec_bcd; + u16 long_hour; + + // ܂̕ + long_hour = DAYS_FROM_HNY[ month -1 ]; // -1̓CfbNX킹 + if( is_leapyear(year) && ( 3 <= month )) + { + // [NŁA[ + long_hour ++; + } + long_hour += day - 1; + long_hour *= 24; // + + long_hour += hour; + + // EȆOHH + if( ( min_bcd > vreg_ctr[ VREG_C_ACC_HOSU_HOUR_BOUNDARY ] ) + || ( ( min_bcd >= vreg_ctr[ VREG_C_ACC_HOSU_HOUR_BOUNDARY ] ) + && ( sec_bcd >= vreg_ctr[ VREG_C_ACC_HOSU_HOUR_BOUNDARY_SEC ] )) + ) + { + return( long_hour ); + } + else + { + return( long_hour -1 ); // 1ԑOɊ܂߂ ӁFUōNɂƂB-1 ɂȂ + } +} + + + +/********************************************//** +@yʕB + +@Kv\Ȑxőł؂ + + pcŃV~[Vđv + ***********************************************/ +static unsigned long my_sqrt(unsigned long x) +{ + unsigned long s, t; + + if (x <= 0) return 0; + + s = 1; + t = x; + while (s < t) + { + s <<= 1; + t >>= 1; + } + do + { + t = s; + s = (x / s + s) >> 1; + } while (s < t); + + return t; +} + + + + +/********************************************//** +@‚ OĂ΂ꂽƁAݎ̍߂BԂ̂fill_hosu_hist_hours ɂ̂܂ܓn + //. year_bcd Ȃ̂Ƃ₾... + ***********************************************/ +static u16 calc_hours_spend( u8 year ) +{ + u8 cal_log_latest_year = bcdtob( cal_log_latest.year_bcd ); + + // N̓ + if( cal_log_latest_year == year ) + { + if( now_longhour > last_hour_fny ) + { + return( now_longhour - last_hour_fny ); + } + else if( now_longhour == 0 && last_hour_fny != 0 ) + { + // N΂ŁAEzځBȂƍNŌɉZĂ܂B + return( 1 ); + } + else + { + return( 0 ); // ԑ(ƁA߂B@ǂȂĂmȂ) + } + } + else if( cal_log_latest_year == ( year -1 ) ) + { + // N܂łƂ + u16 temp = 365 * 24 - last_hour_fny + now_longhour; + if( is_firstyear(year) ) + { + temp += 24; + } + return( temp ); + } + else if( cal_log_latest_year < year ) + { + // Nu + return( PEDOMETER_LOG_SIZE +1 ); + } + else + { + // J_[߂Ȃ + // m[PAł悢cAslƂ킯ɂȂ + return( 0 ); + } +} diff --git a/snake_branches/3.50_2dsll_lguide/pedo_lpf_coeff.c b/snake_branches/3.50_2dsll_lguide/pedo_lpf_coeff.c new file mode 100644 index 0000000..877ef98 --- /dev/null +++ b/snake_branches/3.50_2dsll_lguide/pedo_lpf_coeff.c @@ -0,0 +1,87 @@ +/********************************************//** + vŎgpALPF̃tB^W + $Id$ + ***********************************************/ + +#include "incs.h" + +// ========================================================= +#define TAP 64 +#define FIL_COEFF_QUANT 10 +const s8 lpf_coeff[]={ +/* +Window Function Algorithm LPF +Sampling Frequency = 100.0 +cutoff1 = 6.0000000 +Tap Count =64 +Kaiser Constant = 7.000000 +Quantized by 11 [bits] + */ +/* 0,// [0] + 0, + 0, + 0, + 0, + 0, + 0, + 0, +*/ + 1,// 8 + 2, + 2, + 3, + 3, + 2, + 0, + -2, + -5,// 16 + -9, + -13, + -16, + -16, + -13, + -6, + 4, + 18,// 24 + 37, + 56, + 77, + 95, + 110, + 119, + 122, + 119,// 32 + 110, + 95, + 77, + 56, + 37, + 18, + 4, + -6,// 40 + -13, + -16, + -16, + -13, + -9, + -5, + -2, + 0,// 48 + 2, + 3, + 3, + 2, + 2, + 1, +/* + 0, + 0,// 56 + 0, + 0, + 0, + 0, + 0, + 0, + 0 +*/ +}; diff --git a/snake_branches/3.50_2dsll_lguide/pedo_lpf_coeff.h b/snake_branches/3.50_2dsll_lguide/pedo_lpf_coeff.h new file mode 100644 index 0000000..f81d6c2 --- /dev/null +++ b/snake_branches/3.50_2dsll_lguide/pedo_lpf_coeff.h @@ -0,0 +1,84 @@ +#ifndef _pedo_coeff_h_ +#define _pedo_coeff_h_ + +// ========================================================= +#define TAP 64 +#define FIL_COEFF_QUANT 10 +const s8 lpf_coeff[]={ +/* +Window Function Algorithm LPF +Sampling Frequency = 100.0 +cutoff1 = 6.0000000 +Tap Count =64 +Kaiser Constant = 7.000000 +Quantized by 11 [bits] + */ +/* 0,// [0] + 0, + 0, + 0, + 0, + 0, + 0, + 0, +*/ + 1,// 8 + 2, + 2, + 3, + 3, + 2, + 0, + -2, + -5,// 16 + -9, + -13, + -16, + -16, + -13, + -6, + 4, + 18,// 24 + 37, + 56, + 77, + 95, + 110, + 119, + 122, + 119,// 32 + 110, + 95, + 77, + 56, + 37, + 18, + 4, + -6,// 40 + -13, + -16, + -16, + -13, + -9, + -5, + -2, + 0,// 48 + 2, + 3, + 3, + 2, + 2, + 1, +/* + 0, + 0,// 56 + 0, + 0, + 0, + 0, + 0, + 0, + 0 +*/ +}; +#endif diff --git a/snake_branches/3.50_2dsll_lguide/pedometer.h b/snake_branches/3.50_2dsll_lguide/pedometer.h new file mode 100644 index 0000000..8760308 --- /dev/null +++ b/snake_branches/3.50_2dsll_lguide/pedometer.h @@ -0,0 +1,36 @@ +#ifndef _pedo_ +#define _pedo_ + +#ifdef WIN32 +typedef unsigned char bit; +typedef unsigned char u8; +typedef unsigned short u16; + + +#endif + + +// ========================================================= +extern bit pedolog_read_msb; + + + +// ========================================================= +//void hosu_read_end( ); }N +#define hosu_read_end() pedolog_read_msb = 0 + +u8 hosu_read( ); +void hosu_increment_if_necessary(); +void fill_hosu_hist_hours( u16 ); +void clear_hosu_hist(); +void pedometer(); + + + +// ========================================================= +#define PEDOMETER_LOG_SIZE ( 24 * 7 ) + + + +// ========================================================= +#endif diff --git a/snake_branches/3.50_2dsll_lguide/pm.c b/snake_branches/3.50_2dsll_lguide/pm.c new file mode 100644 index 0000000..1e657d8 --- /dev/null +++ b/snake_branches/3.50_2dsll_lguide/pm.c @@ -0,0 +1,1554 @@ +/* ======================================================== + PMIC + cJZ + nintendo + '08 Dec + + $Id: pm.c 418 2011-09-22 01:35:37Z n2232 $ + ======================================================== */ +#ifndef _WIN32 + +#pragma nop + +#endif + +#include "incs.h" +#include "adc.h" +#include "led.h" +#include "pm.h" +#include "renge\renge.h" + +#include "batt_params.h" + +#include +#include "fsl_user.h" + +#include "vreg_twl.h" +#include "i2c_mcu.h" + +// ======================================================== +u8 raw_adc_temperature; +BT_VENDER battery_manufacturer = BT_VENDER_NOT_CHECKED; +static u8 ntr_pm_reg_shadow; // NTR PMIC WX^~[ +bit bt_authorized; // obep[^MρB[dJn +u8 chg_led_override; // A_v^ƂA[d邵ȂɊւ炸΂炭_ + +static u16 bt_volt16; + +static bit ntr_pm_bt_low_old; + +bit BT_IN_CHG_delayed_n; +bit temp_zone_charge_disable; // xŏ[d~鎞ɃqXeVXt邽 + +u8 pmic_version; +u8 mgic_version[2]; + +u8 pm_reg_bit_vddlcd; + +static bt_param_* p_bt_param; +extern const bt_param_ bt_param[]; + +bit pm_extdc_old; // OA_v^`FbNƂhĂH + +u8 pmreg_v_core; // SoC̃RAdݒBSNAKE(LAGER)ŕύX邽߁B + +#define K_RCOMP_SEG 0x0080 + +// [d~x֌W +// CTR[d~x(20090410).xls ŌvZ +static u8 raw_temp_lh; +static u8 raw_temp_ll; +#define RAW_TEMP_HL 184 // 1 +#define RAW_TEMP_HH 189 // -1 +#define RAW_TEMP_LH_CTR 75 // 50 [degC] +#define RAW_TEMP_LL_CTR 61 // 59 +#define RAW_TEMP_LH_SNAKE 84 // 45 +#define RAW_TEMP_LL_SNAKE 68 // 54 +#define RAW_TEMP_LH_JANE 78 // 48 +#define RAW_TEMP_LL_JANE 63 // 57 + + +// ======================================================== +static void BT_model_detect(); +static void BT_mgic_quick_start(); +static void BT_mgic_init(); +static void bt_chk_temparature(); +static void bt_get_charge_status(); +static void bt_param_select(); +static void bt_batt_update_twl(); +static void bt_batt_update_ntr(); +static void update_chg_led(); + + +// bp[ +static err send_cmd_mgic_2B( u8 reg, u16 dat ); +static err read_mgic_2B( u8 reg, u8* dat ); +static err read_BT_SOC( u8* dest ); +static err read_BT_voltage( u8* dest ); +static u8 conv_ctr_bt_to_twl_bt(); + + + +// ======================================================== +#define swap_endian_16( x ) (unsigned int)(( x << 8 ) | ( x >> 8 )) + + + +// ======================================================== +const u8 BT_MANUF_BORDER[] = { + 5, 33, 79, 123, 158, 197, 233 + }; + + + +/********************************************//** + dr̊Ǘ + + ȉ̃s͎ɂőEĎ܂B + - PM_BT_AUTH AGPI in + - PM_CHARGE_n CCIC /CHG in + - PM_EXTDC_n /DOK INTP4 in + - PM_CHARGE_EN_n /CEN out + + ȉ͊̕֌W肻łʂ̂ƂŊĎĂ܂B + - LED Charge tsk_LED + - BT_TEMP,_P tsk_ADC + + PM_EXTDC͊荞݃Cɂ邩 + ***********************************************/ +#define INTERVAL_TSK_BATT 60 +// 100Ə[dG[ɂ܂_łȂ̂ + +/********************************************//** + d̊Ď + - A_v^̊Ď + - [dALEDXV + - cʎ擾ALEDXV + ***********************************************/ +void tsk_batt( ) +{ + static u8 task_interval; + + if( task_interval -- != 0 ) + { + return; + } + else + { + task_interval = (u8)( INTERVAL_TSK_BATT / SYS_INTERVAL_TICK ); + } + + // A_v^Xe[^XXV // + pm_chk_adapter(); + + // [d // + bt_chk_temparature(); // x`FbN + if( !temp_zone_charge_disable && bt_authorized && !PM_EXTDC_n ) + { + BT_CHG_ENABLE(); // x͈OKŏ[dĊJ + } + else + { + BT_CHG_DISABLE(); // x댯I@[d~ + } + + bt_get_charge_status(); // [d󋵃`FbN + update_chg_led(); // chg ledXV + + // drc // + BT_get_left(); +} + + +/********************************************//** + [dLEDXV + + - CCIC[dƂΓ_B + - łȂĂAA_v^h΂Ȃ5b_ + - Aw^drΉʼnR[d̎Aq[Y؂iMGICNAKjȂ + ***********************************************/ +static void update_chg_led() +{ + static bit temp_led_chg; // static ‚ȂƃRpCʂ炸 + + temp_led_chg = false; + + // A_v^‚ȂuԁA[dłb킴Ɠ_BdĂ邱Ƃ킩点邽߁B + if( chg_led_override != 0 ) + { + chg_led_override --; + temp_led_chg = true; + } + + // CCIC ͏[dƌĂ邩H + if( ! BT_IN_CHG_delayed_n // bt_get_charge_status()ōXV܂B + && ! PM_EXTDC_n ) + { + temp_led_chg = true; + } + + LED_CHARGE = temp_led_chg; + + // WX^̏[drbgLEDɓ + set_bit_if( LED_CHARGE, vreg_ctr[VREG_C_STATUS], REG_BIT_BATT_CHARGE ); // set_bit_if̂݁B + /// 荞݂task_status()ōs +} + + + +/********************************************//** + x`FbN + xtqXeVXL + ***********************************************/ +#define AVG_COUNT 40 +void bt_chk_temparature() +{ + static u8 heikinka_h,heikinka_l; + + if(( raw_temp_lh <= raw_adc_temperature ) + && ( raw_adc_temperature <= RAW_TEMP_HL )) + { + if( heikinka_h < AVG_COUNT ) + { + heikinka_h++; + } + else + { + temp_zone_charge_disable = false; // [d + } + } + else if(( raw_adc_temperature <= raw_temp_ll ) + || ( RAW_TEMP_HH <= raw_adc_temperature )) + { + if( heikinka_l < AVG_COUNT ) + { + heikinka_l++; + } + else + { + temp_zone_charge_disable = true; // [d֎~ + } + } + else + { + // temp_zone_charge_disable ̂܂ + heikinka_h = 0; + heikinka_l = 0; + } +} + + + +/********************************************//** + [d̃`FbN + + [dIC̃oO΍sB + ***********************************************/ +#define TIME_DENOIZE (u8)( 1000 / INTERVAL_TSK_BATT ) +void bt_get_charge_status() +{ + // CCIC̕s̂߁A/CHG̃lQ[gƒJɒx + static u8 anti_chatter; + + if( !BT_IN_CHG_n ) + { + // Ƀ`^O + if( anti_chatter < 2 ) // drŃA_v^āAdɂ킳 + { // Ə[dLED̂ + anti_chatter++; + } + else + + { + BT_IN_CHG_delayed_n = 0; // [d + } + } + else + { + if( !BT_CHG_Ena_n + && ( vreg_ctr[ VREG_C_BT_REMAIN ] < 60 ) + && !( is_mgic_error ) + ) + { + BT_IN_CHG_delayed_n = 0; // [dƈB[dIĂ͂Ȃ + } + else + { + BT_IN_CHG_delayed_n = 1; + anti_chatter = 0; + } + } +} + + + +/********************************************//** + A_v^̗L`FbN + ***********************************************/ +void pm_chk_adapter() +{ + set_bit_if( !PM_EXTDC_n, vreg_ctr[VREG_C_STATUS], REG_BIT_POW_SUPPLY ); + + if( pm_extdc_old != PM_EXTDC_n ) // HAL ʂ߁A PM_EXTDC_n volatile ɂSzȂ + { + pm_extdc_old = PM_EXTDC_n; + if( !PM_EXTDC_n ) + { + // h + set_irq( VREG_C_IRQ1, REG_BIT_BT_DC_CONNECT ); + chg_led_override = (u8)( 2500 / INTERVAL_TSK_BATT ); // bt_chckwait_ms(5)̂ŐL΂B + } + else + { + u8 temp_v[2]; + + // + set_irq( VREG_C_IRQ1, REG_BIT_BT_DC_DISC ); + chg_led_override = 0; + + // drcʂ1%ŁAA_v^L̎ɂ͖{̂NAQ[ + // 1%ɉ񕜂OɃA_v^ƂA荞݂ȂƊҒʂ + // łȂBʑΉ̂߂őΉ + if( read_mgic_2B( BT_GAUGE_REG_VCELL, temp_v ) == ERR_SUCCESS ) + { + bt_volt16 = ( temp_v[0] * 256 + temp_v[1] ); + } + + if(( bt_volt16 < V_TH_ZERO ) || ( vreg_ctr[ VREG_C_BT_REMAIN ] == 0 )) + { + set_irq( VREG_C_IRQ1, REG_BIT_BT_REMAIN ); + } + } + } +} + + + +/******************************************************** +dr֌W̏ + +@@@Q[W@@b@L@@@@@b@ +@@[[[[[[[[[[[[[[[[[[[[[[[ +@@@dr@Lb@@@@@@@b@H +@@[[[[[[[[[[[[[[[[[[[[[[[ +@@@@@@b@@@@@@b@sr +@@@@@@@@b@@dr@b +@@[[[[[[[[[[[[[[[[[[[[[[[ + +@@Q[WLAdr@̔^@ʂ́A +@drxŔ肷 + + ԒlF@dr 0xFF + drςĂȂ 0 + drς 1 + +***********************************************************/ +bit bt_force_update; + + + +/********************************************//** + obẽ`FbNAƁA{̎ʎʁisp̂߁j + ***********************************************/ +void BT_chk() +{ + static BT_VENDER battery_manufacturer_old; + + battery_manufacturer_old = battery_manufacturer; + + BT_model_detect(); + bt_param_select(); // obecʕ␳p[^ȂǃZbg @łAƂ肠̒l(pi)wɂĂB + + if( system_status.model != MODEL_JIKKI ) + { + bt_authorized = false; + return; + // ܂ + } + + if(( battery_manufacturer_old != battery_manufacturer ) || + bt_force_update ) + { + bt_force_update = false; + iic_mcu_start( ); // ŏtOĂ̂ŌĂт܂ėǂ + if( (( battery_manufacturer_old == BT_VENDER_OPEN ) || + ( battery_manufacturer_old == BT_VENDER_NOT_CHECKED )) && + !system_status.reboot ) + { + BT_mgic_quick_start(); + } + BT_mgic_init(); + } + bt_authorized = true; + renge_task_immed_add( tski_BT_temp_update ); // drxĎ +} + + + +/********************************************//** + {̎ʎ + ***********************************************/ +void BT_model_detect() +{ + u8 temp; + + BT_DET_P = 1; + BT_TEMP_P = 1; + wait_ms( 3 ); // dオ̂ɎԂ| + + raw_adc_temperature = get_adc( ADC_SEL_BATT_TEMP ); + temp = get_adc( ADC_SEL_BATT_DET ); + BT_DET_P = 0; + + system_status.captureBox = false; + // vbgtH[ // + if( raw_adc_temperature > 0xF0 ) + { + // TS // + system_status.model = MODEL_TS_BOARD; + system_status.family = FAMILY_CTR; // Hł̌딻㏑ + pm_reg_bit_vddlcd = PM_REG_BIT_VDDLCD_CGS; +// set_voltages( system_status.family ); svH + } + else if( raw_adc_temperature < 4 ) + { + // (KuC) // + system_status.model = MODEL_KUC_DEBUGGER; + } + else + { + // @AcIC NACK( obe܂͎cIC̏ ) + system_status.model = MODEL_JIKKI; // obe̎́ŏ㏑ + } + + // Lv`H // + if( iic_mcu_read_a_byte( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_VERSION ) == 0x01 ) + { + if( iic_mcu_result == I2C_ERR_OK ) // oɏȂƕ]nˑ + { + system_status.captureBox = true; + } + } + + // TShome{^A@͖ڑȂ̂ŗv[q /// gndɂƂ΂悩c + if( system_status.model == MODEL_TS_BOARD ) + { + PM_SW_HOME_n_TSBOARD = 1; + } + else + { + PM_SW_HOME_n_TSBOARD = 0; + SW_HOME_n_TSBOARD_RAW = 0; /// @open ǂł񂾂 + } + + // dr[J[̎ // + { + u8 i; + + battery_manufacturer = BT_VENDER_OPEN; // ftHgl + for(i=0; i<=7; i++) + { + if( temp <= BT_MANUF_BORDER[ i ] ) + { + battery_manufacturer = (BT_VENDER)i; + break; + /* + BT_VENDER_MAXELL; // = 0 + BT_VENDER_1; + BT_VENDER_2; + BT_VENDER_3; + BT_VENDER_4; + BT_VENDER_PANA; + BT_VENDER_6; + + BT_VENDER_OPEN; + */ + } + } + } + + + if( ( battery_manufacturer == BT_VENDER_OPEN ) && + ( system_status.model == MODEL_JIKKI ) ) + { + system_status.model = MODEL_JIKKI_NOBATT; + } +} + + + +#define MGIC_CMD_QUICKSTART 0x4000 +/********************************************//** + MGICNCbNX^[giɃoO΍j + ***********************************************/ +static void BT_mgic_quick_start() +{ + wait_ms( 10 ); // MGIC̋NɊ| + + // 0. obecIC NCbNX^[g + send_cmd_mgic_2B( BT_GAUGE_REG_MODE, swap_endian_16( MGIC_CMD_QUICKSTART ) ); + + wait_ms( 150 ); +} + + +/********************************************//** + drcʑ菉 + + drp[^Ȃǂ] + ***********************************************/ + +#define MGIC_CMD_UNLOCK_KEY 0x4A57 +#define MGIC_CMD_RESET 0x5400 +#define RCOMP_SIZE 16 +static void BT_mgic_init() +{ + u8 origParam[4]; + + if( system_status.model != MODEL_JIKKI ) + { + return; + // ܂ + } + + // 1. bN + if( send_cmd_mgic_2B( BT_GAUGE_REG_LOCK, swap_endian_16( MGIC_CMD_UNLOCK_KEY ) ) != ERR_SUCCESS ) + { + // cIC NACK + vreg_set_mgic_error; + return; + // ܂ + } + + vreg_clear_mgic_error; + + // wait_ms( 5 + 1 ); OɃEFCgĂ̂ŕsv + + // 2. p[^ꎞۑ + //. o[Xg[hAQoCg܂ł݂Biǂݏoȑh~̂߂Hj + iic_mcu_read( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_RCOMP, 2, &origParam[0] ); + iic_mcu_read( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_RCOMP+2, 2, &origParam[2] ); + + // 3. ꎞIOCVύX + send_cmd_mgic_2B( BT_GAUGE_REG_OCV, swap_endian_16( p_bt_param->ocv )); // }WbNio[IȂ́B[J[w + + // 4. ꎞIRCOMPύX + send_cmd_mgic_2B( BT_GAUGE_REG_RCOMP, swap_endian_16( 0xFF00 ) ); + + // 5.[J[ʃp[^̃[h + { + u8 loop; + u16 temp; + + // -16oCgƂɋ؂Ƃ̂Ɓ@imCY΍Ƃ񂾂ǁAӖ񂩁Hj- + // 2oCgPʂőƂ̂ƁB + for( loop = 0; loop < BATT_PARAM_SIZE; loop +=2 ) + { + // GfBA̓ւ...@Ȃ̂łƂ肠 + temp = *(p_bt_param->mg_param + loop) | (*(p_bt_param->mg_param + loop+1)) << 8 ; + send_cmd_mgic_2B( BT_GAUGE_REG_BT_PARAM + loop, temp ); + } + } + + { + // 5.1 g RCOMP XV + // {gȂAsӂɏĂ܂Ƃ̂߁AKlB + // 17048 ŕKvB17040iCTR) ɏĂ܂ĂsȂ + u8 loop; + + for( loop=0; loop < RCOMP_SIZE*2; loop+=2 ) + { + send_cmd_mgic_2B( BT_GAUGE_REG_RCOMP_EXT + loop, swap_endian_16(K_RCOMP_SEG) ); + } + } + + // 6. 150msȏ҂ + wait_ms( 150 + 15 ); + + // 7. OCVɁuƂlv + send_cmd_mgic_2B( BT_GAUGE_REG_OCV, swap_endian_16( p_bt_param->ocv ) ); // }WbNio[IȂ́B[J[w + + + // 7.1 bN + send_cmd_mgic_2B( BT_GAUGE_REG_LOCK, swap_endian_16( 0x0000 ) ); // lock key + + + // 8. 150`600ms҂B600ms͌ + wait_ms( 150 + 15 ); + + // 9. SOCǂށBxt@Ĉ߁B + { + u8 temp; + temp = iic_mcu_read_a_byte( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_SOC ); + + if(( p_bt_param->verify.low <= temp ) && ( temp <= p_bt_param->verify.hi )) + { + // JX^fOKI + }else{ + // s烊gĈH + // dbg_nop(); // ͖ + } + } + + // 9.1 ēxfAbN + send_cmd_mgic_2B( BT_GAUGE_REG_LOCK, swap_endian_16( MGIC_CMD_UNLOCK_KEY ) ); + + // 10.RCOMPOCV߂ + // 2B x 2times write + iic_mcu_write( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_RCOMP, 2, &origParam[0] ); + iic_mcu_write( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_RCOMP+2, 2, &origParam[2] ); + + // 11. bN + send_cmd_mgic_2B( BT_GAUGE_REG_LOCK, swap_endian_16( 0x0000 ) ); // lock key + + // 12. MAX17048AEFCgKvB + wait_ms( 150 + 15 ); +} + + + +extern u16 _dbg_rcomp; +/********************************************//** + raw_adc_temperatureɓĂlɕϊƂƂɁA + - WX^ɃZbg + - cICɃZbg + ***********************************************/ +task_status_immed tski_BT_temp_update( ) +{ + static u8 rawdat_old; + static s8 temperature; + s16 newrcomp; + static u8 heikinka; + +/* + T[~X^ - 10k_̎A + pxł͕̃J[uقڃjAŁA + c T[] = 81.48 - 111.97 x ratio + TDK T = 81.406 - 111.81 x ratio +*/ + + if( rawdat_old != raw_adc_temperature ) + { + if( heikinka < 40 ) + { + heikinka ++; + } + else + { + heikinka = 0; + rawdat_old = raw_adc_temperature; + // temperature = 81.45 - 111.9 * raw_adc_temperature/256.0; + // ꂼ256{Ă + temperature = (u8)(( 20851 - 112 * raw_adc_temperature + (256/2) ) /256); + vreg_ctr[VREG_C_BT_TEMP] = temperature; + + newrcomp = 0; + if( temperature > 20 ) + { + newrcomp = ( ( temperature - 20 ) * p_bt_param->rcomp.up )/256; + } + else + { + newrcomp = ( ( temperature - 20 ) * p_bt_param->rcomp.down )/256; + } + newrcomp = p_bt_param->rcomp.rcomp + newrcomp; + + if( newrcomp > 255 ) + { + newrcomp = 255; + } + if( newrcomp < 0 ) + { + newrcomp = 0; + } + _dbg_rcomp = newrcomp; + + if( send_cmd_mgic_2B( BT_GAUGE_REG_RCOMP, newrcomp ) == ERR_SUCCESS ) // swapsv + { + rawdat_old = raw_adc_temperature; + } + else + { + vreg_set_mgic_error; + } + } + } + return ( TSKI_FINISHED ); +} + + + +/********************************************//** + drcICcʂ擾AWX^ɏށB + + @drcICȄȂǂ̎͂Ƃ肠c99%ƂB + + @@@@@@@@ status_1ŊmF”\BdɃ`FbNĂ܂B + + @BT_chk()sĂKv܂B + ***********************************************/ +void BT_get_left(){ + u8 temp[2]; + u8 reg_volatile_temp_bt_remain,reg_volatile_temp_bt_remain_fine; // I2C̔񓯊ǂݍ݂ł̂‚h~ Lbv̏ + u8 fuel_cap_by_voltage; // dŃLbvɎg + + // drc + if( system_status.model == MODEL_TS_BOARD + || system_status.model == MODEL_KUC_DEBUGGER ) + { + // TS & // + if( read_BT_SOC( temp ) == ERR_SUCCESS ) + { + reg_volatile_temp_bt_remain = temp[0]; + reg_volatile_temp_bt_remain_fine = temp[1]; + } + else + { + // G~[V@\ + // @œdf͕sւ邾낤 + reg_volatile_temp_bt_remain = 99; + reg_volatile_temp_bt_remain_fine = 0; + } + } + else + { + // @ // + // cʃ[h + if( read_BT_SOC( temp ) != ERR_SUCCESS ) + { + // cICNACK cobe͂ꂽ + vreg_set_mgic_error; + bt_authorized = false; + reg_volatile_temp_bt_remain = 0; + force_off = true; + } + else + { + u16 temp_u16; + + vreg_clear_mgic_error; + // obep[^̊֌WŃrbgVtgKv + temp_u16 = temp[0] * 256 + temp[1]; + temp_u16 /= p_bt_param->v_scale; + reg_volatile_temp_bt_remain = (u8)(( temp_u16 >> 8 ) & 0xFF ); + if( reg_volatile_temp_bt_remain == 0 ) + { + // 0%̎1.00%ɏグ + // [dJn΂炭͓drcʂ̂ + // 0%ɓBĂ܂Ƃ̂ + reg_volatile_temp_bt_remain = 1; + reg_volatile_temp_bt_remain_fine = 0; + } + else + { + reg_volatile_temp_bt_remain_fine = (u8)(temp_u16 & 0xFF); + } +#ifdef _DBG_BT_FULL_ + reg_volatile_temp_bt_remain = 100; + reg_volatile_temp_bt_remain_fine = 0; +#endif + } + } + + // drd + { + if( read_BT_voltage( temp ) != ERR_SUCCESS ) // 2byte read + { + temp[0] = (u8)( V_BT_4000MV / 256 ); // drdǂ߂Ȃ4000mVƂɂĂB + temp[1] = 0; + } + vreg_ctr[ VREG_C_BT_VOLTAGE ] = temp[0]; + bt_volt16 = ( temp[0] * 256 + temp[1] ); + } + + + // dŃLbv...̏ + { + static u16 hysteresis; + + if( bt_volt16 > V_TH_30 ) + { + fuel_cap_by_voltage = 100; + hysteresis = 0; + } + else if( bt_volt16 - hysteresis > V_TH_LO ) // lqXeVXĂBǂނƂӁB + { + fuel_cap_by_voltage = 30; + hysteresis = 0; + } + else if( bt_volt16 > V_TH_EMPTY ) + { + fuel_cap_by_voltage = BATT_TH_LO; // + hysteresis = 500; + } + else if( bt_volt16 > V_TH_ZERO ) + { + fuel_cap_by_voltage = BATT_TH_EMPTY; + hysteresis = 500; + } + else if( bt_volt16 > V_TH_FORCE_OFF ) + { + fuel_cap_by_voltage = 0; + hysteresis = 500; + } + else + { + force_off = true; + hysteresis = 500; + } + } + + + // [diA_v^hĂĵɏ[dĂȂ + // AiȂƂjf̓drcʂ60%ȏiCCICoOABT_IN_CHG_delayed_nɐD荞ݍς݁j + // = [dBdrւĂMGIC100%ԂȂ + if( !BT_CHG_Ena_n && BT_IN_CHG_delayed_n ){ + reg_volatile_temp_bt_remain = 100; + reg_volatile_temp_bt_remain_fine = 0; + } + else + { // dł̃Lbv|邩H + if( fuel_cap_by_voltage < reg_volatile_temp_bt_remain ) + { + reg_volatile_temp_bt_remain = fuel_cap_by_voltage; + reg_volatile_temp_bt_remain_fine = 0; + } + } + + /* + \ɖȂdĂ炵̂ŃPAł悵 + if( system_status.taikendai_nbd && system_status.model != MODEL_TS_BOARD ) // dr[qɓd‚ȂĂĒlsȂߏ㏑B + { + reg_volatile_temp_bt_remain = 100; + } + */ + + vreg_ctr[ VREG_C_BT_REMAIN ] = reg_volatile_temp_bt_remain; + vreg_ctr[ VREG_C_BT_REMAIN_FINE ] = reg_volatile_temp_bt_remain_fine; + + // twl̃WX^XV@(CTRɊ荞ݓOɍXVȂƊ荞݂̃^C~O܂Ȃ) + bt_batt_update_twl(); + + // cʂŊ荞݁B}ɌƔԂƂ // + { + static u8 bt_remain_old_ctr; + + if( bt_remain_old_ctr != reg_volatile_temp_bt_remain ) + // CTRɒʒm + { + if( (( vreg_ctr[ VREG_C_BT_REMAIN ] <= BATT_TH_LO ) && ( BATT_TH_LO < bt_remain_old_ctr ))|| + (( vreg_ctr[ VREG_C_BT_REMAIN ] <= BATT_TH_EMPTY ) && ( BATT_TH_EMPTY < bt_remain_old_ctr ))|| + (( vreg_ctr[ VREG_C_BT_REMAIN ] == 0 ) && ( bt_remain_old_ctr != 0 )) ) + { + set_irq( VREG_C_IRQ1, REG_BIT_BT_REMAIN ); + } + } + bt_remain_old_ctr = vreg_ctr[ VREG_C_BT_REMAIN ]; + } + + // PMIC-NTRɓdrcʂĂ + bt_batt_update_ntr(); +} + + + +/********************************************//** + tn̓d + + @Xe[^XtO͂ɗĂĂ܂B + + @sԂ邵A + + NsłΓd + + ʂ̃^XNœd͊ĎĂāAXe[^XNA + ***********************************************/ +err PM_LCD_on( ) +{ + err rv = ERR_ERR; + + PM_VDDLCD_on( ); // CGS AMO ؂ւĂ܂ + + if( system_status.LCD_is_CGS == true ) + { + // CTR + wait_ms( DELAY_PM_TSS_50B_AND_TCOM ); + } + else + { + // SPFL/SNAKE ȂAt@XHV on Ԃɋ + wait_ms( 10 ); + LCD_AMOL_HV_CTRL = 1; + wait_ms( DELAY_PM_TSS_50B_AND_TCOM - 10 ); + } + + PM_TCOM_on( ); + + wait_ms( DELAY_PM_TCOM_TO_VCS ); + + PM_VCS_on( ); + + wait_ms( DELAY_PM_VCS_TO_BL ); + + if( PM_chk_LDSW() != 0 ) // pX + { + // dNG[Ȃd؂Ă܂Bł̓PAȂ + vreg_ctr[VREG_C_STATUS] |= REG_BIT_LCD_POW; + set_irq( VREG_C_IRQ3, REG_BIT_LCD_ON ); + rv = ERR_SUCCESS; + } + + return rv; +} + + +void PM_LCD_off() +{ + // BL‚ĂB + // `FbN̂͊荞݂̊֌W + if( ( read_pmic( PM_REG_ADRS_BL ) & 0x03 ) != 0 ) + { + u8 tot; + + PM_BL_set( REG_BIT_CMD_BL_U_OFF | REG_BIT_CMD_BL_L_OFF ); + vreg_ctr[VREG_C_STATUS] &= bits8(1,0,0,1, 1,1,1,1); + + if( (( REG_BIT_BL_U_OFF | REG_BIT_BL_L_OFF ) & ~vreg_ctr[ VREG_C_IRQ_MASK3 ] ) != 0 ) + { + vreg_ctr[ VREG_C_IRQ3 ] |= ( ( REG_BIT_BL_U_OFF | REG_BIT_BL_L_OFF ) & ~vreg_ctr[ VREG_C_IRQ_MASK3 ] ); + IRQ0_neg; + tot = 0; + while( !IRQ0 && ( ++tot != 0 ) ){;} + IRQ0_ast; + } + vreg_ctr[VREG_C_COMMAND2] &= ~( REG_BIT_CMD_BL_U_OFF | REG_BIT_CMD_BL_L_OFF ); + } + + + // LCD dƂ + // 50ms wait ̂œ_Ă邩mF + if( read_pmic( PM_REG_ADRS_VDD_LCD ) != 0 ) + { + PM_TCOM_off(); + wait_ms( 1 ); + PM_TCOM_VCS_off( ); + wait_ms( DELAY_PM_LCD_OFF ); + + if( system_status.LCD_is_CGS == false ) + { + // At@XȂ|[g + LCD_AMOL_HV_CTRL = 0; // ̃t@~łLȂ̂ŕQȂB + wait_ms( 10 ); // At@X15V؂Ƃ̃EFCgB + } + + PM_VDDLCD_off( ); // cĂ̑S~߂܂B + vreg_ctr[VREG_C_STATUS] &= ~REG_BIT_LCD_POW; + } + + set_irq( VREG_C_IRQ3, REG_BIT_LCD_OFF ); // ɔBi}XN͗Lj +} + + + +/********************************************//** +@obNCǧ•on/off + +@󂩂@on/off/ێ@̃tOȂ̂Ŗʓ| + +@BL on/on ̏ԂŁAon/onɂƌĂAon/on荞݂܂B + ***********************************************/ +err PM_BL_set( u8 dat ) +{ + u8 blset; // PMIC WX^ɏޒl + u8 intset = 0; // 荞݃WX^ɔfl + // RMWs + + // Read + blset = read_pmic( PM_REG_ADRS_BL ); + + // Modify + // + if(( dat & REG_BIT_CMD_BL_U_ON ) != 0 ) + { + blset |= PM_REG_BIT_BL_U; + intset |= REG_BIT_BL_U_ON; + } + else if(( dat & REG_BIT_CMD_BL_U_OFF ) != 0 ) + { + blset &= ~PM_REG_BIT_BL_U; + intset |= REG_BIT_BL_U_OFF; + } + + // + if(( dat & REG_BIT_CMD_BL_L_ON ) != 0 ) + { + blset |= PM_REG_BIT_BL_L; + intset |= REG_BIT_BL_L_ON; + } + else if(( dat & REG_BIT_CMD_BL_L_OFF ) != 0 ) + { + blset &= ~PM_REG_BIT_BL_L; + intset |= REG_BIT_BL_L_OFF; + } + + if( system_status.family == FAMILY_FLOWER ) + { + // plꖇȂ̂ŁAoff/off łȂΓ_ALX1iڑj𗧂グȂ + // A荞݂͉R‚ SoC ݒ肵Ǝv񂾒lɂB + // todo: vmB + if( blset != 0 ) + { + blset = PM_REG_BIT_BL_L; + } + } + + // write + if( blset != 0 ) // BLtꍇ̓EFCg܂ȂPWMĂ炸 + // Vbg_E邱Ƃ + { + wait_ms( 16 + 10 ); + } + send_cmd_pmic( PM_REG_ADRS_BL, blset ); + + // SoCPWMo悤WX^ZbgĂxL邽߁AXe[^X + // XVĂ܂BĂقƂ̗vB + + // PMICBL̃rbgƁAMCUSTATUSWX^̃rbgʒutȂߓւ + vreg_ctr[VREG_C_STATUS] = (( vreg_ctr[VREG_C_STATUS] & bits8(1,0,0,1, 1,1,1,1) ) + | ( (( blset << 6 ) | ( blset << 4 )) & bits8(0,1,1,0, 0,0,0,0) )); + + // 荞 + /// rbg܂Ƃ߂čŝŁAset_irq()gȂ + { + u8 tot; + + if( ( intset & ~vreg_ctr[ VREG_C_IRQ_MASK3 ] ) != 0 ) + { + vreg_ctr[ VREG_C_IRQ3 ] |= ( intset & ~vreg_ctr[ VREG_C_IRQ_MASK3 ] ); + IRQ0_neg; + tot = 0; + while( !IRQ0 && ( ++tot != 0 ) ){;} + IRQ0_ast; + } + } + + return( ERR_SUCCESS ); // łُ͈`FbNsv +} + + + +/********************************************//** + t̑Όd̐ݒs܂B + + zWX^̓e𑗂邾 + ***********************************************/ +void PM_LCD_vcom_set( ) +{ + send_cmd_pmic( PM_REG_ADRS_POW_DAC1, vreg_ctr[VREG_C_VCOM_T] ); // ȂƂɁAPMIC̓o[Xgݕs + send_cmd_pmic( PM_REG_ADRS_POW_DAC2, vreg_ctr[VREG_C_VCOM_B] ); + return; +} + + + +/********************************************//** + ŁAWX^݂Ăяo鎞̂ + + @I2C̎荇̊֌WłĂ + ***********************************************/ +task_status_immed tski_vcom_set( ) +{ + PM_LCD_vcom_set( ); + return ( TSKI_FINISHED ); +} + + +void set_vdd_voltages( enum family_ family ) +{ + if(( family == FAMILY_SNAKE ) + || ( family == FAMILY_CLOSER ) + || ( family == FAMILY_JANE )) + { + // SNAKE + pmreg_v_core = PM_REG_BIT_VDD1P_1R05; + } + else + { + // NORMAL + pmreg_v_core = PM_REG_BIT_VDD1P_1R15; + } +} + +/********************************************//** + V[PX̒ʂd𗧂グĂ䂫܂B + + - Ԓl 0 Ō܂ŐɊB + - 1 V[gȂǂœd肫Ȃ + ***********************************************/ +err PM_sys_pow_on( ) +{ + // dグ +// PM_reset_ast( ); sv PM_LDSW_on܂ + RESET2_ast; + FCRAM_RST_ast; + GYRO_DISABLE(); + + PM_LDSW_on( ); + + wait_ms( 1 + DELAY_PM_TW_PWUP ); + + PM_VDD_normMode(); + PM_VDD_on( ); +// wait_ms( DELAY_PM_TW_PWUP ); // GYROނ + wait_ms( 10 ); + GYRO_ENABLE(); + wait_ms( DELAY_PM_TW_PWUP - 10 ); + + PM_VDD50A_on( ); // tdł͂ȂAledɎg + + wait_ms( DELAY_PM_TW_PWUP ); + + // dN`FbNB + if( !PM_chk_LDSW() ) + { + return ( ERR_ERR ); // reset1͂قƂėǂ + } + + // dIC + pmic_version = read_pmic( PM_REG_ADRS_VER ); + read_mgic_2B( BT_GAUGE_REG_VERSION, mgic_version ); + + return ( ERR_SUCCESS ); +} + + + +void reset_release() +{ + // ZbgȂǁBVXeNI + PM_reset_neg(); + FCRAM_RST_neg; + RESET2_neg; + + codec_reg_init(); // CODEC s背WX^(reset2̌łȂƂȂ̂) + ntr_pm_reg_shadow = 0; // @V@ȂƂ... +} + + + + +/********************************************//** + dOFFV[PX + ***********************************************/ +void PM_sys_pow_off( ) +{ + // ꉞ LCD ֌Ŵ݂B + PM_BL_set( REG_BIT_CMD_BL_U_OFF | REG_BIT_CMD_BL_L_OFF ); + PM_LCD_off(); // ĂΉȂ + wait_ms( 20 ); + + PM_reset_ast(); + + RESET2_ast; + FCRAM_RST_ast; + + wait_ms( 20 ); + + PM_off( ); + PM_LDSW_off( ); +} + + + +/********************************************//** + extDC荞 + + dOFFNi[d̉xĎ̂߁ĵ + + i̓|[O(pm) + ***********************************************/ +__interrupt void intp4_extdc( ) +{ +} + + + +/********************************************//** + t^J‚ߊ荞 + + i̓|[O(misc) + ***********************************************/ +__interrupt void intp5_shell( ) +{ + ; +} + + +/********************************************//** + PMICւ̃R}h + ***********************************************/ +__interrupt void intp6_PM_irq( ) +{ + EI(); + if( system_status.pwr_state == ON ) + { + renge_task_immed_add( tski_ntr_pmic_comm ); + } +} + + +/********************************************//** + CODEC̊荞݂󂯂āANTR PMIC݊WX^烊[h + ***********************************************/ +task_status_immed tski_ntr_pmic_comm( ) +{ + u8 reg1_old; + u8 irq_work = 0; + + reg1_old = ntr_pm_reg_shadow; + ntr_pm_reg_shadow = iic_mcu_read_a_byte( IIC_SLA_CODEC, CODEC_REG_PM ); + if( iic_mcu_result != ERR_SUCCESS ) + { + return ( TSKI_FINISHED ); + } + +// DI( ); + + // obNCg //////////////////////////////////// + if( ( ( reg1_old ^ ntr_pm_reg_shadow ) & REG_BIT_TWL_REQ_BL_U ) != 0 ) + { + if( ( ntr_pm_reg_shadow & REG_BIT_TWL_REQ_BL_U ) == 0 ) // + { + irq_work = REG_BIT_TWL_BL_U_OFF; + } + else + { + irq_work = REG_BIT_TWL_BL_U_ON; + } + } + + // obNCg + if( ( ( reg1_old ^ ntr_pm_reg_shadow ) & REG_BIT_TWL_REQ_BL_L ) != 0 ) + { + if( ( ntr_pm_reg_shadow & REG_BIT_TWL_REQ_BL_L ) == 0 ) // + { + irq_work |= REG_BIT_TWL_BL_L_OFF; + } + else + { + irq_work |= REG_BIT_TWL_BL_L_ON; + } + } + +// EI(); + + vreg_ctr[ VREG_C_STATUS_1 ] = ( vreg_ctr[ VREG_C_STATUS_1 ] & ~REG_BIT_MASK_STATUS1_NTR_PM_REG ) + | ( ntr_pm_reg_shadow & REG_BIT_MASK_STATUS1_NTR_PM_REG ); // TWLobNCg̃~[ + + irq_work &= ~vreg_ctr[ VREG_C_IRQ_MASK2 ]; + // set_irq i + if( irq_work != 0 ) + { + u8 tot; + + vreg_ctr[ VREG_C_IRQ2 ] |= irq_work; + IRQ0_neg; // uグăpX𑗂蒼 + tot = 0; + while( !IRQ0 && ( ++tot != 0 ) ){;} // O.DȂ̂łƂ̂҂ IRQ_mcu LɔĂƍ(•s) + IRQ0_ast; + } + + /// obNCgAC𗘂ď肵܂B + + // offNGXg ////////////////////////////////////// + if( ( ntr_pm_reg_shadow & REG_BIT_TWL_REQ_OFF_REQ ) != 0 ) + { + set_irq( VREG_C_IRQ2, REG_BIT_TWL_OFF_REQ ); + } + + // ZbgNGXg ///////////////////////////////// + if( ( ntr_pm_reg_shadow & REG_BIT_TWL_REQ_RST_REQ ) != 0 ) + { + set_irq( VREG_C_IRQ2, REG_BIT_TWL_RESET_REQ ); + } + + // obNCg}XNď߂ + EI( ); + if( ( ntr_pm_reg_shadow & ( REG_BIT_TWL_REQ_OFF_REQ | REG_BIT_TWL_REQ_RST_REQ )) != 0 ) + { + ntr_pm_reg_shadow &= ~( REG_BIT_TWL_REQ_OFF_REQ | REG_BIT_TWL_REQ_RST_REQ ); + iic_mcu_write_a_byte_codec( CODEC_REG_PM, ntr_pm_reg_shadow ); + } + return ( TSKI_FINISHED ); +} + + + +/********************************************//** + command2 tn + +@ bp[IȕBERR_SUCCESSԂȂc + ***********************************************/ +task_status_immed tski_PM_LCD_on() +{ + PM_LCD_on(); + return( TSKI_FINISHED ); +} + +task_status_immed tski_PM_LCD_off() +{ + PM_LCD_off(); + return( TSKI_FINISHED ); +} + +task_status_immed tski_PM_BL_set() +{ + u8 cmd_BL; // volatileƂtȂĂv݂ + + do + { + cmd_BL = vreg_ctr[VREG_C_COMMAND2]; + PM_BL_set( cmd_BL ); // }XNς + } + while( cmd_BL != vreg_ctr[VREG_C_COMMAND2] ); // <- PM_BL_setXV + vreg_ctr[VREG_C_COMMAND2] = 0; + + return( TSKI_FINISHED ); +} + + + +/********************************************//** +@reset2 CODEC ɃZbgAWX^sɂȂ邽 + ***********************************************/ +void codec_reg_init() +{ + wait_ms( 100 ); + + ntr_pm_bt_low_old = conv_ctr_bt_to_twl_bt(); + + iic_mcu_write_a_byte_codec( CODEC_REG_BT, (u8)ntr_pm_bt_low_old ); // SoC 珑 + + vol_reset(); +// renge_task_immed_add( tski_vol_update ); |[ÔŁB + vol_polling = 3; +} + + +/********************************************//** + wp[Ƃbp[ƂH + + ROMߖ̂ + ***********************************************/ +err send_cmd_mgic_2B( u8 reg, u16 dat ) +{ + u16 temp = dat; // Mobt@ + return iic_mcu_write( IIC_SLA_BT_GAUGE, reg, 2, &temp ); // DMA]̂őMf[^obt@̃|C^ǂKv +} + +err read_mgic_2B( u8 reg, u8* dat ) // Mobt@͌Œ +{ + return iic_mcu_read( IIC_SLA_BT_GAUGE, reg, 2, dat ); +} + +err send_cmd_pmic( u8 reg, u8 dat ) +{ + return iic_mcu_write_a_byte( IIC_SLA_PMIC, reg, dat ); +} + +u8 read_pmic( u8 reg ) +{ + return iic_mcu_read_a_byte( IIC_SLA_PMIC, reg ); +} + +/********************************************//** + dr[J[ƃfAgdrp[^̌ + ***********************************************/ +static void bt_param_select() +{ + BT_TYPE bt_type_temp; + + // f + switch( system_status.family ) + { + case( FAMILY_SPFL ): bt_type_temp = BT_PARAM_SPFL_MAXELL; break; + case( FAMILY_SNAKE ): bt_type_temp = BT_PARAM_SNAKE_MAXELL; break; + case( FAMILY_CLOSER ): bt_type_temp = BT_PARAM_SPFL_MAXELL; break; + default: /* fall through */ + case( FAMILY_CTR ): /* fall through */ + case( FAMILY_FLOWER ): /* fall through */ + case( FAMILY_JANE ): /* fall through */ + bt_type_temp = BT_PARAM_CTR_MAXELL; + break; + } + + // obe[J[ + // p[^̃CfbNX +1 + if( battery_manufacturer <= BT_VENDER_3 ) // ]TĒԂ臒lƂ + { + bt_type_temp += BT_PARAM_OFFSET_MAXELL; // [Ȃ̂Ŕ΂ĂBRpCC + } + else + { + bt_type_temp += BT_PARAM_OFFSET_PANA; + } + + + p_bt_param = &bt_param[ bt_type_temp ]; + + // [d~x̐ݒ + /// tȂ̂ƁA򂪏Ȃ̂ł + if(( system_status.family == FAMILY_SNAKE ) || + ( system_status.family == FAMILY_CLOSER )) + { + raw_temp_lh = RAW_TEMP_LH_SNAKE; + raw_temp_ll = RAW_TEMP_LL_SNAKE; + } + else if( system_status.family == FAMILY_JANE ) + { + raw_temp_lh = RAW_TEMP_LH_JANE; + raw_temp_ll = RAW_TEMP_LL_JANE; + } + else + { + raw_temp_lh = RAW_TEMP_LH_CTR; + raw_temp_ll = RAW_TEMP_LL_CTR; + } +} + + + + +#define TWL_BT_LEVEL_THREASH_F 60 +#define TWL_BT_LEVEL_THREASH_B 30 +#define TWL_BT_LEVEL_THREASH_1 0 + +/********************************************//** + TWLɓdrcʂĂ + ***********************************************/ +static void bt_batt_update_twl() +{ + if (vreg_ctr[VREG_C_BT_REMAIN] > TWL_BT_LEVEL_THREASH_F ) + { + vreg_twl[REG_TWL_INT_ADRS_POWER_INFO] = 0x0F; + } + else if (vreg_ctr[VREG_C_BT_REMAIN] > TWL_BT_LEVEL_THREASH_B ) + { + vreg_twl[REG_TWL_INT_ADRS_POWER_INFO] = 0x0B; + } + else if (vreg_ctr[VREG_C_BT_REMAIN] > BATT_TH_LO) + { + vreg_twl[REG_TWL_INT_ADRS_POWER_INFO] = 0x07; + } + else if (( vreg_ctr[ VREG_C_BT_REMAIN ] > BATT_TH_EMPTY )|| + !BT_CHG_Ena_n ) + { // A_v^̗LŒグ + vreg_twl[REG_TWL_INT_ADRS_POWER_INFO] = 0x03; + } + else if (vreg_ctr[VREG_C_BT_REMAIN] > TWL_BT_LEVEL_THREASH_1 ) + { + vreg_twl[REG_TWL_INT_ADRS_POWER_INFO] = 0x01; + } + else + { + vreg_twl[REG_TWL_INT_ADRS_POWER_INFO] = 0x00; + } +} + + +/********************************************//** + NTRɓdrcʂĂ + ***********************************************/ +static void bt_batt_update_ntr() +{ + static bit initialized; + static bit flag; // HstaticłȂƃRpCɓ{ + + if( system_status.pwr_state == OFF_TRIG ) + { + initialized = false; + } + else + { + + flag = conv_ctr_bt_to_twl_bt(); + + if(( ntr_pm_bt_low_old != flag ) || !initialized ) + { + initialized = true; + ntr_pm_bt_low_old = flag; + iic_mcu_write_a_byte_codec( CODEC_REG_BT, (u8)flag ); + } + } +} + + +/********************************************//** + drcʂǂł + ***********************************************/ +static err read_BT_SOC( u8* dest ) +{ +#ifdef _ENABLE_HAL_ + if( vreg_ctr[ VREG_C_HAL_OVW_BT_FUEL ] != 0xFF ) // trueȂHALL +#else + if( 0 ) +#endif + { + *dest = vreg_ctr[ VREG_C_HAL_OVW_BT_FUEL ]; + *(dest+1) = 0x00; + return ERR_SUCCESS; + } + else + { + return( read_mgic_2B( BT_GAUGE_REG_SOC, dest ) ); + } +} + + +/********************************************//** + drdǂł + ***********************************************/ +static err read_BT_voltage( u8* dest ) +{ +#ifdef _ENABLE_HAL_ + if( vreg_ctr[ VREG_C_HAL_OVW_BT_VOLTAGE ] != 0xFF ) // trueȂHALL +#else + if( 0 ) +#endif + { + *dest = vreg_ctr[ VREG_C_HAL_OVW_BT_VOLTAGE ]; +// *(dest+1) = 0x00; // gȂ@ǂQoCg[h֐pӂĂȂ̂ł + return ERR_SUCCESS; + } + else + { + return( read_mgic_2B( BT_GAUGE_REG_VCELL, dest ) ); + } +} + + +/********************************************//** + drcʂtwlɃtOɕϊ + ***********************************************/ +static u8 conv_ctr_bt_to_twl_bt() +{ +// ntr_pm_bt_low_old = ( vreg_ctr[ VREG_C_BT_REMAIN ] <= BATT_TH_LO )? NTR_PM_BT_EMPTY: NTR_PM_BT_ENOUGH; // 1œdr؂ + if( vreg_ctr[ VREG_C_BT_REMAIN ] <= BATT_TH_LO ) + { + return NTR_PM_BT_EMPTY; + } + else + { + return NTR_PM_BT_ENOUGH; + } +} + + + +void PM_reset_ast() +{ + char temp; + temp = read_pmic( PM_REG_ADRS_CONT ); + send_cmd_pmic( PM_REG_ADRS_CONT, temp & ~(PM_REG_BIT_nRST1)); +} + diff --git a/snake_branches/3.50_2dsll_lguide/pm.h b/snake_branches/3.50_2dsll_lguide/pm.h new file mode 100644 index 0000000..a0d27ed --- /dev/null +++ b/snake_branches/3.50_2dsll_lguide/pm.h @@ -0,0 +1,222 @@ +#ifndef __PM__ +#define __PM__ +/* + $Id$ +*/ + +#define IIC_SLA_PMIC 0x84 +#define IIC_SLA_BT_GAUGE 0x6C + +#define VCOM_DEFAULT_T 92 +#define VCOM_DEFAULT_B 95 + + + +#define BATT_TH_LO 10 +#define BATT_TH_EMPTY 5 + +// dWX^ƒڔrłpɃItZbg +#define V_BT_4000MV (u16)( 4000 * 12.8 ) // dǂݏosp 4000mVݒ +#define V_TH_30 (u16)( 3300 * 12.8 ) // 30% +#define V_TH_LO (u16)( 3200 * 12.8 ) // 10% +#define V_TH_EMPTY (u16)( 3150 * 12.8 ) // 5% +#define V_TH_ZERO (u16)( 3100 * 12.8 ) // 0% +#define V_TH_FORCE_OFF (u16)( 2900 * 12.8 ) // 2.9V ŏIf + + +//========================================================= +#ifdef _WIN32 +#define LED_CHARGE mcuRegP[ _P2_4 ] +#else +#define LED_CHARGE P2.4 +#endif + + +//========================================================= +enum PMIC_REG_ADRS +{ + PM_REG_ADRS_VER = 0x00, // verinfo Ȃ + PM_REG_ADRS_VDD_SYS, // VXegpd + PM_REG_ADRS_VDD_LCD, // td + PM_REG_ADRS_CONT, // /RESET1, LoadSwitch + PM_REG_ADRS_BL, // obNCg on/off + PM_REG_ADRS_POW_SAVE, // ȓd͐ݒ + PM_REG_ADRS_POW_DAC1, + PM_REG_ADRS_POW_DAC2 +}; + +enum BT_GAUGE_REG_ADRS +{ + BT_GAUGE_REG_VCELL = 0x02, // ꂼ16rbĝ + BT_GAUGE_REG_SOC = 0x04, + BT_GAUGE_REG_MODE = 0x06, + BT_GAUGE_REG_VERSION = 0x08, + BT_GAUGE_REG_OCV = 0x0E, + BT_GAUGE_REG_RCOMP = 0x0C, + BT_GAUGE_REG_LOCK = 0x3E, + BT_GAUGE_REG_BT_PARAM = 0x40, + BT_GAUGE_REG_COMMAND = 0xFE, + BT_GAUGE_REG_RCOMP_EXT = 0x80, +}; + + +typedef enum BT_VENDER +{ + BT_VENDER_MAXELL = 0, // V[g + BT_VENDER_1, // 120 + BT_VENDER_2, // 360 + BT_VENDER_3, // 750 + BT_VENDER_4, // 1.3k + BT_VENDER_PANA = 5, // 2.7k + BT_VENDER_6, // 8.2k + BT_VENDER_OPEN = 7, // open + BT_VENDER_NOT_CHECKED = 0xFF, +}BT_VENDER; + + + +enum NTR_PM_BT_STATUS{ + NTR_PM_BT_ENOUGH, + NTR_PM_BT_EMPTY, + NTR_PM_BT_NOT_INITIALIZED = 0xFF +}; + + + +//========================================================= +// CODECPMIC݊WX^ +#define CODEC_REG_PM 0x10 +#define CODEC_REG_BL 0x11 +#define CODEC_REG_BT 0x12 +//#define CODEC_REG_VOL 0x13 // ...sɂAadc.hŒ` + +// TWLSPIPMICɓR}h +#define REG_BIT_TWL_REQ_OFF_REQ ( 1 << 6 ) +#define REG_BIT_TWL_REQ_RST_REQ ( 1 << 0 ) +#define REG_BIT_TWL_REQ_BL ( 3 << 2 ) + + + +// 0x03 pw cnt3 +#define PM_REG_BIT_LDSW ( 1 << 0 ) +#define PM_REG_BIT_nRST1 ( 1 << 1 ) + +// 0x01 pw cnt1 +#define PM_REG_BIT_VDD_CTR 0x0F +#define PM_REG_BIT_VDD50A ( 1 << 4 ) + +// 0x02 pw cnt2 +#define PM_REG_BIT_VDDLCD_CGS 0x07 +#define PM_REG_BIT_VDDLCD_AMO 0x05 +#define PM_REG_BIT_LCD_VCS ( 0x01 << 4 ) +#define PM_REG_BIT_LCD_TCOM ( 0x01 << 3 ) + +// 0x04 bl cnt +#define PM_REG_BIT_BL_U 0x01 +#define PM_REG_BIT_BL_L 0x02 + + +// 0x05 pow save +#define PM_REG_BIT_VDD1P_1R15 bits8(0,0,0,0, 0,0,0,0) +#define PM_REG_BIT_VDD1P_1R05 bits8(0,0,0,0, 1,0,0,0) +#define PM_REG_BIT_VDD1P_1R00 bits8(0,0,0,1, 0,0,0,0) +#define PM_REG_BIT_VDD1P_0R95 bits8(0,0,0,1, 1,0,0,0) +#define PM_REG_BIT_VDD1P_0R90 bits8(0,0,1,0, 0,0,0,0) +#define PM_REG_BIT_VDD_AUTO bits8(0,0,0,0, 0,1,1,1) +#define PM_REG_BIT_VDD_PWM bits8(0,0,0,0, 0,0,0,0) + + +#define DELAY_PM_TW_PWUP 16 + 2 +#define DELAY_PM_TSS_50B_AND_TCOM 17 + 1 +#define DELAY_PM_5V_TO_TCOM 17 + 1 +#define DELAY_PM_TCOM_TO_VCS 3 +#define DELAY_PM_VCS_TO_BL ( 17 + 5 ) +#define DELAY_PM_LCD_OFF ( 50 + 1 ) + + +//========================================================= +extern u8 raw_adc_temperature; +extern BT_VENDER battery_manufacturer; +extern bit bt_force_update; + +extern u8 pmic_version; +extern u8 mgic_version[]; + +extern u8 pm_reg_bit_vddlcd; // At@XΉ(dV[PXႤ) + +extern u8 pmreg_v_core; // SoC̃RAdݒBSNAKE(LAGER)ŕύX邽߁B + +//========================================================= +err PM_sys_pow_on( ); +void PM_sys_pow_off( ); +//err PM_bt_auth( ); +void PM_LCD_vcom_set( ); + +err PM_LCD_on( ); +void PM_LCD_off( ); +err PM_BL_set( u8 ); + +void BT_chk(); +void BT_get_left(); +void pm_chk_adapter(); + +void codec_reg_init(); + +void set_vdd_voltages( enum family_ family ); + +void reset_release(); + +task_status_immed tski_BT_temp_update( ); +task_status_immed tski_vcom_set( ); +task_status_immed tski_PM_LCD_on(); +task_status_immed tski_PM_LCD_off(); +task_status_immed tski_PM_BL_set(); + + +err send_cmd_pmic( u8 reg, u8 dat ); +u8 read_pmic( u8 reg ); + + +#define PM_Chg_Stop() { BT_TEMP_P = 0; BT_CHG_DISABLE(); LED_CHARGE = 0; bt_authorized = false; } +// @ĂԑOɁA݉xĂKv܂B +#define PM_reset() ( send_cmd_pmic( PM_REG_ADRS_CONT, 0x00 ) ) + + +//========================================================= + + +// // +#define PM_LDSW_on() ( send_cmd_pmic( PM_REG_ADRS_CONT, PM_REG_BIT_LDSW )) +#define PM_LDSW_off() ( send_cmd_pmic( PM_REG_ADRS_CONT, 0 )) + + +// VXed // +#define PM_VDD_on() ( send_cmd_pmic( PM_REG_ADRS_VDD_SYS, PM_REG_BIT_VDD_CTR )) +#define PM_VDD50A_on() ( send_cmd_pmic( PM_REG_ADRS_VDD_SYS, ( PM_REG_BIT_VDD_CTR | PM_REG_BIT_VDD50A ))) +#define PM_VDD_off() ( send_cmd_pmic( PM_REG_ADRS_VDD_SYS, 0 )) +#define PM_off() PM_VDD_off() + +// CPUd +#define PM_VDD_normMode() ( send_cmd_pmic( PM_REG_ADRS_POW_SAVE, pmreg_v_core | PM_REG_BIT_VDD_PWM )) +#define PM_VDD_ecoMode() ( send_cmd_pmic( PM_REG_ADRS_POW_SAVE, PM_REG_BIT_VDD1P_0R90 | PM_REG_BIT_VDD_AUTO )) + +// ق // +#define PM_reset_neg() ( send_cmd_pmic( PM_REG_ADRS_CONT, ( PM_REG_BIT_LDSW | PM_REG_BIT_nRST1 ))) +// #define PM_reset_ast() // read modify write 悤ɂ܂ +void PM_reset_ast(); +#define PM_chk_LDSW() ( read_pmic( PM_REG_ADRS_CONT ) & PM_REG_BIT_LDSW ) // 1̂ƂAdon + +// tnd // +#define PM_VDDLCD_on() ( send_cmd_pmic( PM_REG_ADRS_VDD_LCD, pm_reg_bit_vddlcd )) +#define PM_TCOM_on() ( send_cmd_pmic( PM_REG_ADRS_VDD_LCD, ( pm_reg_bit_vddlcd | PM_REG_BIT_LCD_TCOM ))) +#define PM_VCS_on() ( send_cmd_pmic( PM_REG_ADRS_VDD_LCD, ( pm_reg_bit_vddlcd | PM_REG_BIT_LCD_VCS | PM_REG_BIT_LCD_TCOM ))) +#define PM_TCOM_off() ( send_cmd_pmic( PM_REG_ADRS_VDD_LCD, ( pm_reg_bit_vddlcd | PM_REG_BIT_LCD_VCS ))) +#define PM_TCOM_VCS_off() PM_VDDLCD_on() +#define PM_VDDLCD_off() ( send_cmd_pmic( PM_REG_ADRS_VDD_LCD, 0 ) ) + +#define PM_set_BL( dat ) ( send_cmd_pmic( PM_REG_ADRS_BL, dat ) ) +#define PM_set_adc1( dat ) ( send_cmd_pmic( PM_REG_ADRS_POW_DAC1, dat ) ) +#define PM_set_adc2( dat ) ( send_cmd_pmic( PM_REG_ADRS_POW_DAC2, dat ) ) + + +#endif // __PM__ diff --git a/snake_branches/3.50_2dsll_lguide/pool.h b/snake_branches/3.50_2dsll_lguide/pool.h new file mode 100644 index 0000000..81c8091 --- /dev/null +++ b/snake_branches/3.50_2dsll_lguide/pool.h @@ -0,0 +1,24 @@ +#ifndef _pool_h_ +#define _pool_h_ + + +#include "pedometer.h" + +#define VREG_C_FREE_SIZE 200 + +// 󂢂Ă郁 +typedef struct _st_vreg_c_ext{ + unsigned short pedo_log[ PEDOMETER_LOG_SIZE ]; + unsigned char vreg_c_free[ VREG_C_FREE_SIZE ]; +}st_vreg_c_ext; + +typedef union _uni_pool +{ + st_vreg_c_ext vreg_c_ext; + u8 self_update_work[ 256 ]; // 256ȏ͂܂ƂߏłȂ +}uni_pool; + +extern uni_pool pool; + + +#endif diff --git a/snake_branches/3.50_2dsll_lguide/readme.txt b/snake_branches/3.50_2dsll_lguide/readme.txt new file mode 100644 index 0000000..aa61975 --- /dev/null +++ b/snake_branches/3.50_2dsll_lguide/readme.txt @@ -0,0 +1,16 @@ + + +rh@ +nec electronics IDEAPM+ rh +JX^MCUȂ̂ŁAʂɂ͔zzĂȂ`t@CKv + + + + +2.2C +SNAKE Ή (vCg) + +2.2D +SNAKE system updater mcu vZX쐬Ɍ߁A +o[Wԍ̂݁A2.2D ɂȂĂ + diff --git a/snake_branches/3.50_2dsll_lguide/reboot.c b/snake_branches/3.50_2dsll_lguide/reboot.c new file mode 100644 index 0000000..53912a5 --- /dev/null +++ b/snake_branches/3.50_2dsll_lguide/reboot.c @@ -0,0 +1,23 @@ +/********************************************************//* + ނ胊u[g + + t@CɃCCAZuƁA + ̃W[SœKȂȂ邽ߒǂo + $Id$ + **********************************************************/ +#pragma SFR + +#include "incs_loader.h" + + +void my_reboot(){ +#asm + + MOV PSW,#06H ; _~[PSWZbg + MOVW AX,#000d0h ; Zbg̃xN^l荞ł܂B + PUSH PSW + PUSH AX ; RETÎ߂̃X^bN + RETI ; ŃZbgExN^ɕ + +#endasm +} diff --git a/snake_branches/3.50_2dsll_lguide/reboot.h b/snake_branches/3.50_2dsll_lguide/reboot.h new file mode 100644 index 0000000..c20e11e --- /dev/null +++ b/snake_branches/3.50_2dsll_lguide/reboot.h @@ -0,0 +1,6 @@ +#ifndef __MYREBOOT__ +#define __MYREBOOT__ + +void my_reboot(); + +#endif diff --git a/snake_branches/3.50_2dsll_lguide/renge/renge.c b/snake_branches/3.50_2dsll_lguide/renge/renge.c new file mode 100644 index 0000000..19bee20 --- /dev/null +++ b/snake_branches/3.50_2dsll_lguide/renge/renge.c @@ -0,0 +1,313 @@ +#ifndef _WIN32 + +#pragma section @@CODE ROM_CODE +#pragma nop +#pragma ei +#pragma di +#pragma sfr + +#endif + + +#ifdef _WIN32 +typedef unsigned char bit; +typedef unsigned char u8; +#endif + +/****************************************************************************** + ^XNVXeH + ȂقǁAiTRONɂ̓RtBM[^͂B + ܂ + ctr_mcu_config.rb QƁB task_config.h쐬܂B + *****************************************************************************/ +#include "renge.h" +#include "renge_task_intval.h" +#include "renge_task_immediate.h" +#include "..\WDT.h" +#include "..\config.h" +#include "..\user_define.h" +#include "..\util_funcs.h" + + +#ifdef _WIN32 +#include "../sim/simOnWin.h" +#endif +//#define _renge_test_ + +#define true 1 +#define false 0 + +//****************************************************************************** +u8 renge_flg_interval; +bit renge_task_interval_run_force; +bit renge_task_immediate_not_empty; + + +#include "..\bsr_system.h" +extern system_status_ system_status; + + +//****************************************************************************** +static void renge_task_immed_init(); +static void renge_task_immed_del(); + + + +//****************************************************************************** +task_status_immed ( *tasks_immed[ TASK_IMMED_RUN_LIST_MAX ] )(); + + + +/****************************************************************************** + +E^XNVXe̓Ȉ +EC^[o^C} + *****************************************************************************/ +void renge_init(){ + renge_task_immed_init(); + /* + Cxg^C}̃ZbgȂ + RTC𗬗pĂ̂ŃRgAEg + #define renge_tick 19xxxxxxx [ms] + renge_interval_init(); RTC_init(); + */ +} + + + +/****************************************************************************** + VXe`bNi߂ + *****************************************************************************/ +/* +void renge_interval(){ +// RTCĂ +__interrupt void int_rtc_int(); +} +*/ + + + +/****************************************************************************** + RpCɌ܂ĂAC^[oÑ^XN + ̂ANƍ邩ȂB + *****************************************************************************/ +__callt err renge_task_interval_run(){ + u8 i; + + // C^[oN + DI_wt_chk(); + if(( renge_flg_interval != 0 ) || + ( renge_task_interval_run_force )) /// ȁc + { + renge_task_interval_run_force = false; // N^XNA荞ރ^XNŃtO‚Ȃ̂ + if( renge_flg_interval != 0 ) + { + renge_flg_interval --; + WDT_Restart( ); + } + EI(); + for( i = 0; i != TSK_LAST; i ++ ) + { + tasks[ i ](); + // N^XNԂɋ + renge_task_immed_run(); + } + } + EI(); + return( ERR_SUCCESS ); +} + + + +/***************************************************************************** + N^XN + + task_immed Ԃ֐B + VXetickA炩̊荞݁iI2CʐMȂǁj + X[v畜A^C~OŎs܂B + +Ԓl@TSKI_FINISHED@^XN폜 +@@@@ȊO ̃^C~Oł܂s + + *****************************************************************************/ + + +/************************************** + **************************************/ +void renge_task_immed_init(){ + u8 i; + + for( i = 0; i < TASK_IMMED_RUN_LIST_MAX; i++ ){ + tasks_immed[ i ] = TSK_IMM_EMPTY_; + } +} + + + +/************************************** + s^XN̓o^ + 荞݋֎~ 36us + **************************************/ +__callt err renge_task_immed_add( task_status_immed (*new_task)() ){ + u8 i; + + // Xg̋󂫂̐擪ɓo^ + // 폜΂̃^XŃA폜}[N(TSK_IMM_DELETED_)ƂȂA󂫂Ƃ͖Iɋʂ + // do^ + for( i = 0; i < TASK_IMMED_RUN_LIST_MAX; i ++ ) + { + DI_wt_chk(); + if( tasks_immed[ i ] == TSK_IMM_EMPTY_ ) + { + // 󂫂‚ + tasks_immed[ i ] = new_task; + EI(); + return( ERR_SUCCESS ); + } + else + { + // do^`FbN + /// ɂȂĂȂAOl߂ĂO + if( tasks_immed[ i ] == new_task ) + { + // do^͂Ȃ + EI(); + return( ERR_ERR ); + } + } + EI(); + } + // ^XNo^(͂ + return( ERR_ERR ); +} + + + +/************************************** + s^XN̎s + **************************************/ +__callt err renge_task_immed_run(){ + u8 list_id; + +// while( tasks_immed[ 0 ] != TSK_IMM_EMPTY_ ) + if( tasks_immed[ 0 ] != TSK_IMM_EMPTY_ ) + { + DI_wt_chk(); + for( list_id = 0; list_id < TASK_IMMED_RUN_LIST_MAX; list_id ++ ){ + if( tasks_immed[ list_id ] == TSK_IMM_EMPTY_ ){ + // Xg + EI(); + break; + } +#ifdef _renge_test_ + else if( tasks_immed[ list_id ] == TSK_IMM_DELETED_ ) + { + EI(); + NOP(); + // ^XNǗ̕s + // ݂Ȃ^XNs悤Ƃ + // ^XN̍폜̏܂ + // \Ȃ^C~O immed_run Ă΂ꂽ + } +#endif + else + { + u8 rv; + + EI(); + rv = tasks_immed[ list_id ](); // ^XNs + if( rv == ERR_SUCCESS ) + { + tasks_immed[ list_id ] = TSK_IMM_DELETED_; + } + // ǂ^C~Oœ^XN̓o^ƍ̂DIԂłė鎖 + } + DI_wt_chk(); + } + // Xg̃^XNʂs + + // ^XN폜 // + { + u8 i = 0; // Xg̕בւ + u8 j = 1; + + // K i < jAj < TASK_IMMED_RUN_LIST_MAX (łȂƃ^XNӂ) + while( 1 ) + { + if( tasks_immed[ i ] == TSK_IMM_EMPTY_ ) + { + // Olߊ && Xg + // break; + goto imm_list_sort_fin; + } + else if( tasks_immed[ i ] == TSK_IMM_DELETED_ ) + { + for( ; j < TASK_IMMED_RUN_LIST_MAX; j++ ) + { + if( tasks_immed[ j ] == TSK_IMM_DELETED_ ) + { + // ׁiHj폜Ώۂ + // next j + } + else + { + DI_wt_chk(); + if( tasks_immed[ j ] == TSK_IMM_EMPTY_ ) + { + do{ + j --; + tasks_immed[ j ] = TSK_IMM_EMPTY_; + // XgOlߊ + }while( i < j ); + EI(); + goto imm_list_sort_fin; + } + else + { + // Ol߂ׂ^XN‚ + tasks_immed[ i ] = tasks_immed[ j ]; + tasks_immed[ j ] = TSK_IMM_DELETED_; + i ++; + EI(); + } + } + } + } + else + { + // ̃^XNAؗ + } + i ++; + } + } + } + +imm_list_sort_fin: + // ܂łŊSɑOl߂Ă +#ifdef _renge_test_ + /// ق? + { + u8 a,b; + + a = 0; + for( b = 0 ; b < TASK_IMMED_RUN_LIST_MAX; b++ ) + { + if( tasks_immed[ b ] == TSK_IMM_EMPTY_ ) + { + a = 1; + } + else + { + if( a != 0 ) + { + NOP(); // EMPTYɃ^XNdeletedL + } + } + } + } +#else + NOP(); // Ȃ񂩖ƃJ{ +#endif +// } + return( ERR_SUCCESS ); +} diff --git a/snake_branches/3.50_2dsll_lguide/renge/renge.h b/snake_branches/3.50_2dsll_lguide/renge/renge.h new file mode 100644 index 0000000..9c7b2e4 --- /dev/null +++ b/snake_branches/3.50_2dsll_lguide/renge/renge.h @@ -0,0 +1,26 @@ +#ifndef __renge__ +#define __renge__ + +//****************************************************************************** + + + +//****************************************************************************** +#include "renge_defs.h" +#include "renge_task_immediate.h" +// #include "renge_task_interval_run.h" // O狭N֎~I + +//****************************************************************************** +void renge_init(); +void renge_task_immed_init(); +__callt err renge_task_immed_run(); +__callt err renge_task_immed_add( task_status_immed (*p_task_func)() ); +// static err renge_task_immed_del( u8 ); + + +//****************************************************************************** +__callt err renge_task_interval_run(); +extern u8 renge_flg_interval; +extern bit renge_task_interval_run_force; // ^XNstO + +#endif diff --git a/snake_branches/3.50_2dsll_lguide/renge/renge_defs.h b/snake_branches/3.50_2dsll_lguide/renge/renge_defs.h new file mode 100644 index 0000000..03c98a6 --- /dev/null +++ b/snake_branches/3.50_2dsll_lguide/renge/renge_defs.h @@ -0,0 +1,55 @@ +#ifndef __renge_defs__ +#define __renge_defs__ +/****************************************************************************** + Renge Ver.0 (2009/04/09) + 2009- 7k4jhl R.Fujita @ RED.nintendo + + OSɂ͂قljAȈՓIȃ^XNVXeB + Range Typo ł͂ȂłBQłB + + Ȃ Q ͑̂œ{ QQ + ǖɗ–𑐂łB + 傫ĂˁI + ******************************************************************************/ + +typedef unsigned char u8; +typedef signed char s8; +typedef unsigned short u16; +typedef signed short s16; + + +// ************************************ +#define SYS_INTERVAL_TICK 1.953 + + + +// ************************************ +typedef enum _ERR +{ + ERR_SUCCESS = 0, + ERR_ERR +}err; + + +typedef enum _IMMED_TASK_ERR +{ + TSKI_FINISHED = 0, + TSKI_CONTINUE +}IMMED_TASK_ERR; + + + +/************************************** + C^[oN + *************************************/ +typedef void task_status; + + +/************************************** + Ñ^XNXg + p~ɂȂ邩Ȃ + *************************************/ +typedef IMMED_TASK_ERR task_status_immed; + + +#endif diff --git a/snake_branches/3.50_2dsll_lguide/renge/renge_task_config.rb b/snake_branches/3.50_2dsll_lguide/renge/renge_task_config.rb new file mode 100644 index 0000000..c2de509 --- /dev/null +++ b/snake_branches/3.50_2dsll_lguide/renge/renge_task_config.rb @@ -0,0 +1,59 @@ +#!/usr/bin/ruby -Ks + +tasklist = Array.new + + +if( ARGV[0] == nil ) + printf( "t@C renge_tasks.txt gp܂" ) + datfile = "renge_tasks.txt" +else + datfile = ARGV[0] +end + +if( !File.exist?( datfile ) ) + printf("ݒt@C‚܂B") + exit( 1 ) +end + + +setting = File.open( datfile ) + +setting.each{|dat| + dat.chomp! + if( dat != nil ) + tasklist << dat + end +} + +tasklist.each{|dat| + printf( "\n%s" , dat ) +} +printf( "\n----------\n^XN %d \n", tasklist.size ) + + +#----- ÓI^XN̗ ------------------------------------------------------- +conf = File.new( "renge_task_intval.h", "w+" ) + +conf << "/*XNvgɂ鎩łB蓮ŏȂ悢ł*/\n\n" +conf << "#ifndef __renge_task__\n#define __renge_task__\n\n" +conf << "#include \"renge_defs.h\"\n\n" + +conf << "enum {\n " +tasklist.each{|dat| + conf << "TSK_" << dat.upcase << ", " +} +conf << "TSK_LAST \n };\n\n" + + +tasklist.each{|dat| + conf << "extern void tsk_" << dat << "();\n" +} +conf << "\n" + +conf << "const void ( *tasks[ TSK_LAST ] )() = {\n" +tasklist.each{|dat| + conf << " tsk_" << dat << ",\n" +} +conf << " };\n" + +conf << "\n#endif\n" diff --git a/snake_branches/3.50_2dsll_lguide/renge/renge_task_immediate.h b/snake_branches/3.50_2dsll_lguide/renge/renge_task_immediate.h new file mode 100644 index 0000000..9ac3bd2 --- /dev/null +++ b/snake_branches/3.50_2dsll_lguide/renge/renge_task_immediate.h @@ -0,0 +1,25 @@ +#ifndef __tasks__ +#define __tasks__ + +#include "renge_defs.h" + +// ************************************* +#define TASK_IMMED_RUN_LIST_MAX 10 + + +extern task_status_immed tski_do_command0( ); +extern task_status_immed tski_ntr_pmic_comm(); +extern task_status_immed tski_acc_read(); +extern task_status_immed tski_acc_write(); +//extern task_status_immed tski_acc_setup(); // accero.h +extern task_status_immed tski_mcu_reset(); +extern task_status_immed tski_vol_update(); + + +// ************************************* +#define TSK_IMM_EMPTY_ ( void * )( 0x0000 ) +#define TSK_IMM_DELETED_ ( void * )( 0x0001 ) + + + +#endif diff --git a/snake_branches/3.50_2dsll_lguide/renge/renge_task_intval.h b/snake_branches/3.50_2dsll_lguide/renge/renge_task_intval.h new file mode 100644 index 0000000..9b0d9ea --- /dev/null +++ b/snake_branches/3.50_2dsll_lguide/renge/renge_task_intval.h @@ -0,0 +1,37 @@ +/*XNvgɂ鎩łB蓮ŏȂ悢ł*/ + +#ifndef __renge_task__ +#define __renge_task__ + +#include "renge_defs.h" + +enum TSK +{ + TSK_SW, TSK_ADC, TSK_BATT, TSK_LED_POW, TSK_LED_WIFI, TSK_LED_NOTIFY, TSK_LED_CAM, TSK_MISC, TSK_STATUS, TSK_SYS, TSK_LAST + }; + +extern void tsk_sw(); +extern void tsk_adc(); +extern void tsk_batt(); +extern void tsk_led_pow(); +extern void tsk_led_wifi(); +extern void tsk_led_notify(); +extern void tsk_led_cam(); +extern void tsk_misc(); +extern void tsk_status(); +extern void tsk_sys(); + +const void ( *tasks[ TSK_LAST ] )() = { + tsk_sw, + tsk_adc, + tsk_batt, + tsk_led_pow, + tsk_led_wifi, + tsk_led_notify, + tsk_led_cam, + tsk_misc, + tsk_status, + tsk_sys, + }; + +#endif diff --git a/snake_branches/3.50_2dsll_lguide/renge/renge_tasks.txt b/snake_branches/3.50_2dsll_lguide/renge/renge_tasks.txt new file mode 100644 index 0000000..73af545 --- /dev/null +++ b/snake_branches/3.50_2dsll_lguide/renge/renge_tasks.txt @@ -0,0 +1,11 @@ +sw +adc +batt +led_pow +led_wifi +led_notify +led_cam +misc +status +debug +sys diff --git a/snake_branches/3.50_2dsll_lguide/rtc.c b/snake_branches/3.50_2dsll_lguide/rtc.c new file mode 100644 index 0000000..dd2d1a9 --- /dev/null +++ b/snake_branches/3.50_2dsll_lguide/rtc.c @@ -0,0 +1,182 @@ +/* ======================================================== + RTC + $Id$ + ======================================================== */ +#ifndef _WIN32 + +#pragma sfr +#pragma inline + +#endif + +#include "incs.h" + + +#define RTC_DATA_SIZE 7 +// ======================================================== +static u8 rtc_work[RTC_DATA_SIZE]; +static bit rtc_lock; +static bit rtc_dirty; +bit rtc_alarm_dirty; + + +/********************************************//** + ytF̏ + + WX^̓drrbg̃Zbg + ***********************************************/ +void RTC_init( void ) +{ + + if( !RTCEN ) // rbgĂ烊u[g + { + RTCEN = 1; // W[ON + + // RTCݒ + RTCC0 = bits8(0,0,0,0, 1,0,0,0); /* ~A24ԐA32kóu܂ȂvA荞݂Ȃ */ + // (RTCE 0 RCLOE1 RCLOE0 AMPM CT2 CT1 CT0) + RTCC1 = bits8(1,1,0,0, 0,0,0,0); /* A[荞ݗLJn */ + // (WALE WALIE 0 WAFG RIFG 0 RWST RWAIT) + RTCC2 = bits8(1,0,0,0, 0,0,0,0); /* C^[o:32k/2^6=2msARTCDIVo͂Ȃ */ + // (RINTE RCLOE2 RCKDIV 0 0 ICT2 ICT1 ICT0) + + HOUR = 0x00; + MIN = 0x00; + SEC = 0x00; + MONTH = 0x01; + DAY = 0x01; + WEEK = 0x01; // Mon + YEAR = 0x01; + + ALARMWW = 0x7F; + + vreg_ctr[VREG_C_MCU_STATUS] |= REG_BIT_RTC_BLACKOUT; + } + // 荞ݐݒ + RTCIF = 0; + RTCIIF = 0; + RTCMK = 1; /* 荞()֎~ */ + RTCIMK = 0; /* 荞(A[&C^[o) */ + + RTCE = 1; /* Jn */ + + RWAIT = 1; + while( !RWST ) + {;} + RWAIT = 0; + + rtc_lock = false; + rtc_dirty = false; + rtc_alarm_dirty = false; +} + + + +/********************************************//** + RTC A[荞 + ***********************************************/ +__interrupt void int_rtc( ) +{ + RWAIT = 1; + while( !RWST ) + {;} + // tw + if( ( vreg_ctr[VREG_C_RTC_ALARM_DAY] == DAY ) + && ( vreg_ctr[VREG_C_RTC_ALARM_MONTH] == MONTH ) + && ( vreg_ctr[VREG_C_RTC_ALARM_YEAR] == YEAR ) ) + { + set_irq( VREG_C_IRQ1, REG_BIT_RTC_ALARM ); + } + RWAIT = 0; +} + + + +/********************************************//** + RTC ̃[h + + WX^́Asec,min,hour,week,day,month,year ̏ + ***********************************************/ +void rtc_buf_refresh( ) +{ + if( !rtc_lock ) + { + rtc_lock = true; + RWAIT = 1; + while( !RWST ) + {;} + + memcpy( &vreg_ctr[VREG_C_RTC_SEC], &SEC, RTC_DATA_SIZE ); + RWAIT = 0; +// renge_task_immed_add( tski_rtc_close ); + } +} + + + +/********************************************//** + RTC ̃Cg + + set_rtc_close Ƒ΂ŎgĉB + + ‚̓obt@ɃRs[邾ŁA + ۂRTCɃZbĝset_rtc_close()łB + ***********************************************/ +void set_rtc( u8 adrs, u8 data ) +{ + if( !rtc_dirty ) + { + rtc_dirty = true; + memcpy( rtc_work, &SEC, RTC_DATA_SIZE ); +// renge_task_immed_add( tski_rtc_close ); // I2CIɍs + } + rtc_work[adrs] = data; +} + + + +/********************************************//** + KvȂ΁ARTCWX^̍XV + ***********************************************/ +// task_status_immed tski_rtc_close(){ +void rtc_unlock( ) +{ + // [hbN + rtc_lock = false; + + // CgbN + if( rtc_dirty ) + { + rtc_dirty = false; + RWAIT = 1; + while( !RWST ) + {;} + memcpy( &SEC, rtc_work, RTC_DATA_SIZE ); + RWAIT = 0; + } + + // A[Zbg + if( rtc_alarm_dirty ) + { + rtc_alarm_dirty = false; + WALE = 0; + ALARMWM = vreg_ctr[VREG_C_RTC_ALARM_MIN]; + ALARMWH = vreg_ctr[VREG_C_RTC_ALARM_HOUR]; + WALE = 1; + } +} + + + + +/********************************************//** + RTC VXe`bN^C}荞݃xN^ + + 2^6/fXTi1.953125 msj + ***********************************************/ +__interrupt void int_rtc_int( ) +{ +// renge_flg_interval ++; // CNg/fNg߂ĝ DI()sv + renge_flg_interval = 1; // set1߂ĝ DI()sv +} + diff --git a/snake_branches/3.50_2dsll_lguide/rtc.h b/snake_branches/3.50_2dsll_lguide/rtc.h new file mode 100644 index 0000000..a203e83 --- /dev/null +++ b/snake_branches/3.50_2dsll_lguide/rtc.h @@ -0,0 +1,24 @@ +#ifndef __rtc_h__ +#define __rtc_h__ + +// $Id: asdf$ + + +void RTC_init( void ); +void rtc_buf_refresh( ); +void set_rtc( u8 adrs, u8 data ); + +//task_status_immed tski_rtc_close(); +void rtc_unlock( ); + +// ------------------------------------ +#define RTC_32k_on() { /*RCLOE2 = 0;*/ RCLOE0 = 1; /*P1.2 = 0;*/ PM1.2 = 0; } +#define RTC_32k_off() { PM1.2 = 0; RCLOE0 = 0; } +#define RTC_32k_HI_Z() { PM1.2 = 1; } + + +// ------------------------------------ +extern bit rtc_alarm_dirty; + + +#endif diff --git a/snake_branches/3.50_2dsll_lguide/self_flash.c b/snake_branches/3.50_2dsll_lguide/self_flash.c new file mode 100644 index 0000000..a662d07 --- /dev/null +++ b/snake_branches/3.50_2dsll_lguide/self_flash.c @@ -0,0 +1,635 @@ +/* ======================================================== + ȃAbvf[^ + $Id$ + ======================================================== */ +#ifndef _WIN32 + +#pragma SFR +#pragma di +#pragma ei +#pragma nop +#pragma stop +#pragma halt + +#endif + +#include "incs_loader.h" + +#include +#include "fsl_user.h" +#include "i2c_ctr.h" +#include "i2c_mcu.h" + +#include "pool.h" +#include "magic.h" + +#include "pm.h" +#include "WDT.h" +#include "util_funcs.h" + + +// ======================================================== +const u8 fsl_fx_MHz_u08 = 8; +const u8 fsl_low_voltage_u08 = 1; + + +// ȃtbVp[^ +#define SAM_BLOCK_SIZE 1024 + // 256oCgȏ͂܂Ƃ߂Ă܂B +#define SELF_UPDATE_BUFF_SIZE 256 +#define SELF_UPDATE_SPLIT_WRITE_NUM ( SAM_BLOCK_SIZE / SELF_UPDATE_BUFF_SIZE ) +#define SAM_WORD_SIZE 4 + +// ubNԍi1ubN1kBj +#define INACTIVE_BOOTSECT_TOP 4 +#define FIRM_TOP 8 +#define FIRM_SIZE 12 +#define ALTERNATE_FIRMTOP 20 + + +#ifdef _MCU_BSR_ +#define ACKD ACKD1 +#define ACKE ACKE1 +#define COI COI1 +#define IICAEN IICA1EN +#define IICAPR0 IICAPR10 +#define IICRSV IICRSV1 +#define IICA IICA1 +#define IICAIF IICAIF1 +#define IICAMK IICAMK1 +#define IICAPR1 IICAPR11 +#define IICCTL0 IICCTL01 +#define IICE IICE1 +#define IICF IICF1 +#define IICS IICS1 +#define IICWH IICWH1 +#define IICWL IICWL1 +#define LREL LREL1 +#define SPD SPD1 +#define SPIE SPIE1 +#define STCEN STCEN1 +#define STD STD1 +#define SVA SVA1 +#define WREL WREL1 +#define WTIM WTIM1 +#endif + +#ifndef _WIN32 +#define LED_POW1 P4.2 +#define LED_PM_POW1 PM4.2 +#else +#define LED_POW1 mcuRegP[ _P4_2 ] +#define LED_PM_POW1 mcuRegPM[ _P4_2 ] +#endif + +// ======================================================== +static void FSL_Open( void ); +static void FSL_Close( void ); +void firm_restore( ); + +static err my_FSL_Init(); +static err firm_duplicate( u8 block_src, u8 block_dest ); + +#ifdef _DBG_LED_PRINT_ +void alert( u8 ); +void led_print( u8 ); +#else +# define alert( x ) ; +# define led_print( x ) ; +#endif + + +// ======================================================== +extern uni_pool pool; + + +// 0.Dȍ~ VAbvf[^ +// Vt@[͑vH +#define N_MGC_L 0x1FF6 +#define N_MGC_T 0x4FF6 + + + +/********************************************//** + I2CŎMāA + + ݁A + + `FbNOK@@Vt@[ɐ؂ւčċN + + @@@@NG@@ijt@[ɖ߂čċN + + i̊֐͖߂܂j + ***********************************************/ +void firm_update( ) +{ + u8 target_block; + u8 split_write_count; // ubNւ܂܏ރJE^ + + // ւO ///////////////////////////////////// + my_FSL_Init(); + + /* t@[̃obNAbv + JnAhXAݐ̐擪hubNԍh (TCY FIRM_SIZE) + 0x2000 - 0x4FFF + 0x5000 - 0x7FFF (ubN 20 - 31) ɃRs[ + */ + firm_duplicate( FIRM_TOP, + ALTERNATE_FIRMTOP ); + + // SubN폜 ///////////////////////////////////// + // df𔻒肷邽߁AŏɑSNX^ + //iVt@[ƂɎcĂAȑÕt@[̃tb^j + for( target_block = INACTIVE_BOOTSECT_TOP; + target_block < ALTERNATE_FIRMTOP; + target_block ++ ) + { + FSL_Erase( target_block ); + } + + + // ւ /////////////////////////////////////////// + // XgbvRfBV܂ő + // IAX^[gAbv[`ɔ + for( target_block = INACTIVE_BOOTSECT_TOP; + target_block < ALTERNATE_FIRMTOP; + target_block ++ ) + { + u8 my_spd; + +/* łɏĂBłȂƒfꂽƂIĂ邩ʏoȂ +// // Vt@[̈폜 +// FSL_Erase( target_block ); +*/ + // + for( split_write_count = 0; + split_write_count < SELF_UPDATE_SPLIT_WRITE_NUM; + split_write_count ++ ) + { + u8* p_buffer = &pool.self_update_work[0]; + u16 buff_written_size = 0; + + WDT_Restart( ); + + // I2C珑݃f[^obt@ɂ߂ + do + { + while( !IICAIF && !SPD ) + {;} + my_spd = SPD; + IICAIF = 0; + *p_buffer = IICA; + WREL = 1; + p_buffer ++; + buff_written_size ++; + } + while( ( buff_written_size != SELF_UPDATE_BUFF_SIZE ) + && !SPD ); + + my_spd += SPD; + + // + // ŌゾƁAS~pfBO邪ʂɂ܂Ȃ + if( FSL_Write( ( fsl_u32 ) ( target_block * SAM_BLOCK_SIZE + + split_write_count * SELF_UPDATE_BUFF_SIZE ), + ( fsl_u08 ) ( SELF_UPDATE_BUFF_SIZE / SAM_WORD_SIZE ) ) + + != FSL_OK ) + { + alert(1); + // ݌̃`FbNG[ + // XgA + firm_duplicate( ALTERNATE_FIRMTOP, FIRM_TOP ); + FSL_ForceReset(); // Zbg + // FSL_SwapBootCluster( ); // u[gXbvuɁvċNďoȂ炵 + // ߂ĂȂ // + } + + if( my_spd != 0 ) + { + break; + } + } + + // 1ubN݊Bxt@Cs + if( FSL_IVerify( target_block ) != FSL_OK ){ + alert(2); + // ēx xt@CJԂ_ł... /// ďׂ݂H + // XgA + firm_duplicate( ALTERNATE_FIRMTOP, FIRM_TOP ); + FSL_ForceReset(); // Zbg + // FSL_SwapBootCluster( ); // u[gXbvuɁvċNďoȂ炵 + // ߂ĂȂ // + } + + if( my_spd != 0 ) + { + break; + } + } + + LREL = 1; + + // 񂾃t@[̃`FbN // + { + u8 i; + u8 comp = 0; + + // [_[̃}WbNƁA{̖̃}WbN͓mF + for( i = 0; i < sizeof( __TIME__ ); i++ ) + { + comp += (u8)(( (*( __far u8 * ) ( N_MGC_L + i )) == (*( u8 * ) ( N_MGC_T + i ) )) ? 0 : 1); + } + if( *( __far u8 * )( N_MGC_L +2 ) != ':' ) // ς̂܂ + { + comp ++; + } + + if( comp == 0 ) + { + // OK! + FSL_InvertBootFlag( ); + FSL_SwapBootCluster( ); // ZbgɓBFSL_Close͕sv + } + else + { + // f[^(}WbNio[ĂȂ)G[ + // XgA + alert(3); + + firm_duplicate( ALTERNATE_FIRMTOP, FIRM_TOP ); + FSL_ForceReset(); // Zbg + // FSL_SwapBootCluster( ); // u[gXbvuɁvċNďoȂ炵 + } + // ߂ĂȂ // + } +} + + + + +/********************************************//** +t@[obNAbv̈悩烊XgA܂B + +`FbNAŌ̍ŌŃu[gXbv̂ŁA +ł̓u[gXbv͕svłB + ***********************************************/ +void firm_restore( ) +{ + DBG_LED_on; + LED_PM_POW1 = 0; + + // obNAbv͐H // + { + u16 i; + u8 comp = 0; + + for( i = 0; i < sizeof( __TIME__ ); i++ ) // sizeof( __TIME__ ) = 8 炵 + { + comp += ( *( __far u8 * )( MGC_LOAD + 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 ++; + } + + if( comp != 0 ) + { + // obNAbv̈ꂽ... + 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 sRsR + comp++; + LED_POW1 = ( comp == 1 || comp == 3 )? 1: 0; + if( comp == 8 ) + { + comp = 0; + } + } + + { + // d{^œdoff + static u8 sw_hold_count; + + if( !SW_POW_n_RAW ) + { + sw_hold_count++; + } + else + { + sw_hold_count = 0; + } + + if( sw_hold_count > 16 ) + { + sw_hold_count = 0; + // doff + PM_LDSW_off( ); + + // pwsw҂ŐQ + KRM = ( KR_SW_POW ); // Mask ł͂ȂAMode + MK0 = 0xFFFF; + MK1 = ~( INT_MSK1_KR ); + MK2L = 0xFF; + + // PU5 ̂܂ + PU7 = bits8(0,0,0,0, 1,0,0,0); // PWSWI + PU20 = bits8(0,0,0,0, 0,0,0,0); // SW_HOME ~ + + STOP( ); + +// mcu_wdt_reset; // [v̂͂悭ȂƎv + +// while(1){ +// NOP(); // Ȃ +// } + } + } + + // EFCg + for( i = 1; i != 0; i++ ) + { + NOP(); + NOP(); + NOP(); + NOP(); + } + } + } + } + + // else{ // obNAbv͐Ă + + while( my_FSL_Init() != ERR_SUCCESS ){ // FSLs悤Ȃ~Ȃ... + // todo gC񐔏H + alert(1); + } + + /* t@[̃XgA + 0x4800 - 0x7FFF (ubN 18 - 27) + 0x2000 - 0x47FF (ubN 8 - 17) փRs[ + */ + if( firm_duplicate( ALTERNATE_FIRMTOP, FIRM_TOP ) != ERR_SUCCESS ) + { + alert(2); + } + DBG_LED_off; + + // todo XgAsALEDƂāAT[rXɂĂ炤H + + FSL_ForceReset(); // ZbgA߂ĂȂ +} + + + +/********************************************//** +tbV̏̂߂̑O + ***********************************************/ +static void FSL_Open( void ) +{ + /* save the configuration of the interrupt controller and set */ +#ifdef FSL_INT_BACKUP + fsl_MK0L_bak_u08 = MK0L; /* if (interrupt backup required) */ + fsl_MK0H_bak_u08 = MK0H; /* { */ + fsl_MK1L_bak_u08 = MK1L; /* */ + fsl_MK1H_bak_u08 = MK1H; /* save interrupt controller */ + fsl_MK2L_bak_u08 = MK2L; /* configuration */ + fsl_MK2H_bak_u08 = MK2H; /* */ + MK0L = FSL_MK0L_MASK; /* */ + MK0H = FSL_MK0H_MASK; /* */ + MK1L = FSL_MK1L_MASK; /* prepare interrupt controller */ + MK1H = FSL_MK1H_MASK; /* for selfprogramming */ + MK2L = FSL_MK2L_MASK; /* */ + MK2H = FSL_MK2H_MASK; /* } */ +#endif + + while( DST1 ){;} // DMA~ + DEN1 = 0; + + MK0 = 0xFFFF; + MK1 = 0xFFFF; + MK2 = 0xFFFF; +/* + LVIM = bits8(0,0,0,0, 0,0,1,0); + LVIS = bits8(0,0,0,0, 1,0,0,0); + LVIM = bits8(1,0,0,0, 0,0,1,0); +*/ + FSL_FLMD0_HIGH; // tbVւ +} + + + +/********************************************//** +tbV̏I + ***********************************************/ +static void FSL_Close( void ) +{ + // nH + + FSL_FLMD0_LOW; // tbVCgveNg + +#ifdef FSL_INT_BACKUP + MK0L = fsl_MK0L_bak_u08; /* do{ */ + MK0H = fsl_MK0H_bak_u08; /* restore interrupt controller */ + MK1L = fsl_MK1L_bak_u08; /* configuration */ + MK1H = fsl_MK1H_bak_u08; /* */ + MK2L = fsl_MK2L_bak_u08; /* */ + MK2H = fsl_MK2H_bak_u08; /* } */ +#endif +} + + + +/********************************************//** +@}CRŃt@[Rs[܂B + + __far u8 * p_rom Rs[̐擪AhX + + block_dest Rs[̐擪ubN + + Rs[ɏ悤my_FSL_Init炩ߎsKv܂B + ***********************************************/ +static err firm_duplicate( u8 block_src, + u8 block_dest ) +{ + u8 target_block; + u8 split_write_count; // ubNւ܂܏ރJE^ + __far u8* p_src = ( __far u8* )( block_src * 0x400 ); + u8 retry_error; + + led_print(1); + + // ݐubN̐JԂ + for( target_block = block_dest; + target_block < ( block_dest + FIRM_SIZE ); + target_block ++ ) + { + led_print(2); + WDT_Restart( ); + // ubN + retry_error = 5 + 1; + while( FSL_BlankCheck( target_block ) != FSL_OK ) + { + led_print(3); + FSL_Erase( target_block ); + if( -- retry_error == 0 ) + { + // tbVH + FSL_Close( ); + return ( ERR_ERR ); // ZbgA݂@ǂȂ邩m + } + } + + led_print(4); + // ݕJԂ + for( split_write_count = 0; + split_write_count < SELF_UPDATE_SPLIT_WRITE_NUM; + split_write_count ++ ) + { + u16 buff_written_size; + u8* p_buff; + + // ݃f[^obt@ɂ߂ + buff_written_size = 0; + p_buff = &pool.self_update_work[0]; + do + { + *p_buff = *p_src; + p_src ++; + p_buff ++; + buff_written_size ++; + } + while( buff_written_size != SELF_UPDATE_BUFF_SIZE ); + + // + if( FSL_Write( ( fsl_u32 ) ( target_block * SAM_BLOCK_SIZE + + split_write_count * SELF_UPDATE_BUFF_SIZE ), + ( fsl_u08 ) ( SELF_UPDATE_BUFF_SIZE / SAM_WORD_SIZE ) ) + != FSL_OK ) + { + // Jo̓u[g // + FSL_Close( ); + led_print(5); +// while(1){} + return ( ERR_ERR ); + } + } + led_print(6); + + // 1ubN݊Bd`FbNs + while( FSL_IVerify( target_block ) != FSL_OK ) + { + // Jo̓u[g // + led_print(7); + return ( ERR_ERR ); + } + } + return( ERR_SUCCESS ); + +} + + + +/********************************************//** +ƔœtbV̏ + ***********************************************/ +static err my_FSL_Init() +{ + u8 rv; + + RTCE = 0; + + // ւO // + DI( ); + FSL_Open( ); // 荞݋֎~Ȃ + + FSL_Init( &pool.self_update_work[0] ); // CuB荞ݒfl + rv = FSL_ModeCheck( ); // CgveNg`FbNBs邱Ƃl + + return( (err)rv ); +} + + +/********************************************//** +MCUZbg + +system_status.reboot ܂B + ***********************************************/ +task_status_immed tski_mcu_reset() +{ + // ʂɍċN + my_FSL_Init(); + + FSL_ForceReset(); // Zbg + FSL_Close( ); + + // یH // + mcu_wdt_reset; + return( ERR_SUCCESS ); // no reach +} + + + +/********************************************//** +ɃG[ۂLED_łăG[ʒm + +l悤ł͂ȂAIVȂǂŃpX`FbN + +fobKgȂԂȂ̂ LEDprintf fobÔ߁B + ***********************************************/ +#ifdef _DBG_LED_PRINT_ +// P1.5 = led_pow_red_old +void alert( u8 num ) +{ + u8 i; + + while(1) + { + WDT_Restart(); + LED_POW1 = 1; + for( i = 0; i < num; i++ ) + { + DBG_LED_on; + DBG_LED_off; + } + LED_POW1 = 0; + } +} + + +/********************************************//** +ɃG[ۂLED_łăG[ʒmiQj + +l悤ł͂ȂAIVȂǂŃpX`FbN + +fobKgȂԂȂ̂ LEDprintf fobÔ߁B + ***********************************************/ +void led_print( u8 num ) +{ + u8 i; + + DBG_LED_on; + for( i = 0; i < num; i++ ) + { + LED_POW1 = 1; + LED_POW1 = 0; + } + DBG_LED_off; +} +#endif diff --git a/snake_branches/3.50_2dsll_lguide/self_flash.h b/snake_branches/3.50_2dsll_lguide/self_flash.h new file mode 100644 index 0000000..768565e --- /dev/null +++ b/snake_branches/3.50_2dsll_lguide/self_flash.h @@ -0,0 +1,9 @@ +#ifndef _self_flash_h_ +#define _self_flash_h_ + + +void firm_update(); + + +#endif + diff --git a/snake_branches/3.50_2dsll_lguide/sw.c b/snake_branches/3.50_2dsll_lguide/sw.c new file mode 100644 index 0000000..19561a8 --- /dev/null +++ b/snake_branches/3.50_2dsll_lguide/sw.c @@ -0,0 +1,215 @@ +/* ======================================================== +XCb` +EHOME +EPOWER +EWiFi +̊Ď^XN + + $Id$ +======================================================== */ +#ifndef _WIN32 + +#pragma SFR +#pragma NOP +#pragma HALT +#pragma STOP + +#endif + +#include "incs.h" + +#include "i2c_twl.h" +#include "i2c_ctr.h" +#include "led.h" +#include "pm.h" +#include "rtc.h" +#include "sw.h" + + +//========================================================= +/* + vreg_ctrǂ݂̂Ńwb_ +#define INTERVAL_TSK_SW +#define CLICK_THRESHOLD + +#define HOLD_THREASHOLD +#define FORCEOFF_THREASHOLD +*/ +#define TIME_MUKAN ( u8)( 300 / INTERVAL_TSK_SW ) +#define TIME_MUKAN_PWSW_RED_TRIAL (u16)( 15000 / INTERVAL_TSK_SW ) // VAhome}XN + +//========================================================= +u16 SW_pow_count; +bit SW_pow_mask; + +static u8 SW_home_count, SW_wifi_count, SW_home_count_rel; +static u8 sw_wifi_mukan_time; + +u16 off_timeout_timer; + +static u16 sw_pwsw_mukan_time; + + + +/********************************************//** + Ԃ𐔂BςȂł0ɖ߂Ȃ + + mask0̎́Ax܂Ŗ + ***********************************************/ +#define count_sw_n( sw, counter, mask ) \ + { \ + if( sw ){ \ + mask = 0; \ + counter = 0; \ + }else{ \ + if( mask != 0 ){ \ + counter = 0; \ + }else{ \ + counter ++; \ + if( counter == 0 ) counter = -1; \ + } \ + } \ + } + + +/********************************************//** + NbN(`^O)BKvɉĊ荞 + ***********************************************/ +#define chk_clicked( button, count, irq_bit_name ) \ + if( !button ) \ + { \ + if( count < CLICK_THRESHOLD ) \ + { \ + count ++; \ + if( count == CLICK_THRESHOLD ) \ + { \ + count ++; \ + set_irq( VREG_C_IRQ0, irq_bit_name ); \ + } \ + } \ + } \ + else \ + { \ + count = 0; \ + } + + + +/********************************************//** + XCb`̊Ď + + @`^O͂˂AAgKȂǂ̌os + ***********************************************/ +void tsk_sw( ) +{ + static u8 task_interval; + + if( system_status.pwr_state == OFF_TRIG ) + { + SW_pow_count = 0; // dɔăNA +// task_interval = 0; + } + + if( system_status.pwr_state != ON_CHECK ) // 莞(PWSW_POWON_TIME)ẐŃvXP[@łȂƃ`^܂肫Ȃ + { + if( task_interval != 0 ) + { + task_interval--; + return; + // ܂ + } + + task_interval = (u8)( INTERVAL_TSK_SW / SYS_INTERVAL_TICK ) -1; // vXP[ɎgĂ܂ˁc + // -1̓|XgfNĝ߂̒ + } + + // 8ms ɂ܂ + switch ( system_status.pwr_state ) + { + case ( ON ): + case ( SLEEP ): + case ( OFF ): + case ( ON_CHECK ): + // @̏ꍇ + if( ! system_status.taikendai ) + { + // dXCb`̊Ď // + if( SW_pow_count == ( TIME_PWSW_CLICK ) ) // NbNԂɓB + { + if( is_wifi_calib_resets_ast ) // wifi Lu[VȂASoCɒʒmoffɑJ + { + system_status.pwr_state = OFF_TRIG; + } + if( SHELL_OPEN ) // PWSW IoĂ֌WŁAuW‚v ANbN͖ + { + set_irq( VREG_C_IRQ0, REG_BIT_SW_POW_CLICK ); + } + } + else if( SW_pow_count == ( HOLD_THREASHOLD ) ) // ɓB + { + set_irq( VREG_C_IRQ0, REG_BIT_SW_POW_HOLD ); + if( off_timeout_timer == 0 ) // dfJEg_EJnAxȂ悤ɁB + { + off_timeout_timer = vreg_ctr[ VREG_C_OFF_DELAY ] * 16; + } + } + + if( off_timeout_timer != 0 ) // 荞݌A^CAEgŋItB + { + off_timeout_timer --; + if( off_timeout_timer == 0 ) + { + force_off = true; + } + } + + }else{ + // X^hAV + // dXCb`̊Ď // + if( SW_pow_count == ( TIME_PWSW_CLICK ) ) + { + if( sw_pwsw_mukan_time == 0 ) + { + set_irq( VREG_C_IRQ0, REG_BIT_SW_POW_CLICK ); + // ȃ^C~OPWSWHOMEj[ɓĂ܂̂邽߂̃}XN^C}[ + sw_pwsw_mukan_time = TIME_MUKAN_PWSW_RED_TRIAL; + } + } + else if( SW_pow_count == ( HOLD_THREASHOLD ) ) + { + force_off = true; + } + + if( sw_pwsw_mukan_time != 0 ) + { + sw_pwsw_mukan_time--; + } + } + + // @Ě䋤 + count_sw_n( SW_POW_n, SW_pow_count, SW_pow_mask ); // {^Ԃ̃JEg + + // HOME sw // + chk_clicked( SW_HOME_n, SW_home_count, REG_BIT_SW_HOME_CLICK ); + chk_clicked( !SW_HOME_n, SW_home_count_rel, REG_BIT_SW_HOME_RELEASE ); + + // wifi sw // + /// ňȎȂ̂͂킩Ă邪AsɏoĂ܂sǃXCb`~ + if( sw_wifi_mukan_time != 0 ) + { + sw_wifi_mukan_time--; + } + else + { + chk_clicked( SW_WIFI_n, SW_wifi_count, REG_BIT_SW_WIFI_CLICK ); + if( SW_wifi_count == CLICK_THRESHOLD +1 ) // 蔭I + { + sw_wifi_mukan_time = TIME_MUKAN; + } + } + break; + default: + break; + }// switch() +} + diff --git a/snake_branches/3.50_2dsll_lguide/sw.h b/snake_branches/3.50_2dsll_lguide/sw.h new file mode 100644 index 0000000..abe9715 --- /dev/null +++ b/snake_branches/3.50_2dsll_lguide/sw.h @@ -0,0 +1,20 @@ +#ifndef _sw_ +#define _sw_ + +#include "config.h" + +extern u16 SW_pow_count; +extern bit SW_pow_mask; + +#define INTERVAL_TSK_SW 8 +#define CLICK_THRESHOLD 5 + +#define HOLD_THREASHOLD (u16)( 3000 /INTERVAL_TSK_SW ) +#define TIME_PWSW_CLICK (u8)( 220 /INTERVAL_TSK_SW ) +#define FORCEOFF_THREASHOLD (u8)( 12000 /INTERVAL_TSK_SW /16 ) + + +extern u16 off_timeout_timer; +#define clear_pow_off_countdown(){ off_timeout_timer = 0; force_off = false; } + +#endif diff --git a/snake_branches/3.50_2dsll_lguide/task_debug.c b/snake_branches/3.50_2dsll_lguide/task_debug.c new file mode 100644 index 0000000..e5b502c --- /dev/null +++ b/snake_branches/3.50_2dsll_lguide/task_debug.c @@ -0,0 +1,122 @@ +/* ======================================================== + fobO^XN + $Id$ + ======================================================== */ +#ifndef _WIN32 + +#pragma SFR +#pragma NOP +#pragma HALT +#pragma STOP + +#endif + +#include "incs_loader.h" +//#include "incs.h" +#include "renge\renge.h" +#include "pm.h" +#include "accero.h" + + +// ======================================================== +// 7ZO 4oCg +#define IIC_SLA_DBG_MONITOR 0x44 + + + +#if 0 // fobOj^p^XN + +ӁI@^XNXgOĂ܂̂ŁAgȂ畜ĉI + +/********************************************//** + fobOp^XN + ***********************************************/ +void tsk_debug( ) +{ +// u8 temp; + + /* + if( system_status.pwr_state == ON_TRIG ){ + { + static u8 count = 0; + // fobOLEDi8bitj̏ + temp = iic_mcu_read_a_byte( IIC_SLA_8LEDS, IIC_8LEDS_REG_DO ); + count ++; + iic_mcu_write_a_byte( IIC_SLA_8LEDS, IIC_8LEDS_REG_DO, count ); + iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 3, count ); + } + } + */ + +// iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 2, vreg_ctr[ VREG_C_IRQ1 ] ); +// iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 1, boot_ura ); +// iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 1, vreg_ctr[ VREG_C_SND_VOL ] ); +// iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 1, vreg_ctr[ VREG_3D ] ); +// iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 0, vreg_ctr[ VREG_C_ACC_ZH ] ); +// iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 3, vreg_ctr[ VREG_C_3D ] ); +// iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 2, vreg_ctr[ VREG_C_SND_VOL ] ); +// iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 1, vreg_ctr[ VREG_C_STATUS ] ); +// iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 0, vreg_ctr[ VREG_C_ACC_ZH ] ); + + /* + { + u8 str[4]; + + if( ( system_status.pwr_state == ON ) || ( system_status.pwr_state == SLEEP ) ) + { + str[3] = vreg_ctr[ VREG_C_FREE0 ]; + str[2] = vreg_ctr[ VREG_C_FREE1 ]; + str[1] = vreg_ctr[ VREG_C_STATUS ]; + str[0] = vreg_ctr[ VREG_C_RTC_SEC ]; + + str[3] = vreg_ctr[ VREG_C_SND_VOL ]; + str[2] = vreg_ctr[ VREG_C_3D ]; + str[1] = vreg_ctr[ VREG_C_ACC_CONFIG ]; + str[0] = SEC; + iic_mcu_write( IIC_SLA_DBG_MONITOR, 0x03, 4, &str ); + } + } + */ +} + +#endif + + +#if 0 // ^XNЂȌ` +/********************************************//** +^XNЂȌ` + ***********************************************/ +task_interval tsk_hina( ) +{ + switch ( system_status.pwr_state ) + { + case ON_CHECK: + case ON_TRIG: + case ON: + case SLEEP: + case OFF_TRIG: + default: + } + + return; // tic Ă΂邱ƂɂȂ܂ +} + + +// |C^ʼn炤̂͊댯ȋCĂ +/* ̂悤Ɏg + renge_task_immed_add( ^XN֐ւ̃|C^ ); +*/ + +/********************************************//** +^XNЂȌ`(s) + ***********************************************/ +task_status_immed tski_hina( u8 * arg ) +{ + return ( TSKI_FINISHED ); + // TSKI_FINISHED ^XN폜 + // TSKI_CONTINUE ɂȂ񂩊荞݂ȂA[U[ȂAVXe`bN + // Ƃɍēxs +} + + +#endif diff --git a/snake_branches/3.50_2dsll_lguide/task_misc.c b/snake_branches/3.50_2dsll_lguide/task_misc.c new file mode 100644 index 0000000..edbecca --- /dev/null +++ b/snake_branches/3.50_2dsll_lguide/task_misc.c @@ -0,0 +1,429 @@ +/* ======================================================== + ̑Gȃ^XN + ^XN𕪂₷ȂC邪A\[X̖ŕȂ + + $Id: task_misc.c 418 2011-09-22 01:35:37Z n2232 $ + ======================================================== */ + +#ifndef _WIN32 + +#pragma SFR +#pragma NOP +#pragma HALT +#pragma STOP + +#endif + +#include "incs.h" +#include "renge\renge.h" +#include "pm.h" + +#include "accero.h" +#include "adc.h" +#include "i2c_mcu.h" +#include "led.h" +#include "vreg_twl.h" + + + +#ifdef _MCU_BSR_ +#define ACKD ACKD1 +#define ACKE ACKE1 +#define COI COI1 +#define IICAEN IICA1EN +#define IICRSV IICRSV1 +#define IICA IICA1 +#define IICAIF IICAIF1 +#define IICAMK IICAMK1 +#define IICAPR0 IICAPR11 +#define IICAPR1 IICAPR01 +#define IICCTL0 IICCTL10 +#define IICE IICE1 +#define IICF IICF1 +#define IICS IICS1 +#define IICWH IICWH1 +#define IICWL IICWL1 +#define LREL LREL1 +#define SPD SPD1 +#define SPIE SPIE1 +#define STCEN STCEN1 +#define STD STD1 +#define SVA SVA1 +#define WREL WREL1 +#define WTIM WTIM1 +#define TRC TRC1 +#define SMC SMC1 +#define DFC DFC1 +#endif + +// ======================================================== +extern void f(); // X^bN̍Ō𓾂 + + +// ======================================================== +bit twl_ver_read; // twl home menuverǂ񂾂݊J[lɊ荞݂邽 +bit going_to_sleep; // SoCAsleepɓʒm炤Bslp_i HԂ0ɂȂ + // X[v畜AłȂȂ̂h + + +// eXgp +bit reserve_pedo_increnent; + + +// ======================================================== +static void update_LED_3D(); +static void check_twl_vol_irq(); + + + +/********************************************//** + PiŃ^XNɂȂGȏ + - xZT荞݂̎肱ڂmF(Ö) + - TWL PM݊WX^ւ݂̏Γǂ݂ɍs + - ݊J[lTWL`[̋Nʒm + - TWL̉ʕω荞݂`FbN + - 3Dv̍XV + - (HAL) vA₷ + - (fobO) SELWDTZbg𔭐 + ***********************************************/ +void tsk_misc( ) +{ + // 荞݂̎肱ڂH + if( ACC_VALID && ( ( vreg_ctr[ VREG_C_STATUS_1 ] & REG_BIT_ACCERO_ERR ) == 0 )) + { + if( renge_task_immed_add( tski_cbk_accero ) == ERR_SUCCESS ){ + // dbg_nop(); + } + } + + if( system_status.pwr_state == ON ) + { + /* ======================================================== + PM݊WX^ւ̏ + |[OőΉ + ======================================================== */ + if( !PM_IRQ_n ) + { + renge_task_immed_add( tski_ntr_pmic_comm ); + // dbg_nop(); + } + + /* ======================================================== + TWL`[NƂCTRm肽炵 + ======================================================== */ + if( twl_ver_read ) + { + twl_ver_read = false; + set_irq( VREG_C_IRQ2, REG_BIT_TWL_VER_READ ); + } + + // TWL ̉ʕω荞݃`FbN // + check_twl_vol_irq(); + } + + // 3D vXV // + update_LED_3D(); + +#ifdef _ENABLE_HAL_ + // fobOHAL ₷ // + if( reserve_pedo_increnent ) + { + reserve_pedo_increnent = 0; + hosu_increment_if_necessary(); + } +#endif + +#ifdef _ENABLE_PRESS_SEL_TO_WDT_ + if(( system_status.pwr_state == ON ) + || ( system_status.pwr_state == SLEEP )) + { + static u16 timer; + if( !SW_SEL_n ) + { + timer += 1; + if( timer == 2000 ) + { + DI(); + timer = 0; + while(1) + { + NOP(); // ̂WDT + } + } + } + } +#endif + + //. X^bNeXg +// f(); +} + + + +/********************************************//** +TWLVol̂ƁAXC_̑삪obeBO +sN鎖Ah + + TWLł͒ʏ펞A{^8iKBɍ킹Ċ荞݂B + ***********************************************/ +void check_twl_vol_irq() +{ + static u8 vol_level_twl_sent; + static u8 mabiki; + + if( !is_TWL ) + { + return; + // ܂ + } + + if( mabiki != 0 ) + { + mabiki--; + return; + // ܂ + } + + mabiki = 9; // 1t[͊J + if( vol_level_twl != vol_level_twl_sent ) + { + vol_level_twl_sent = vol_level_twl; + set_irq( VREG_C_IRQ2, REG_BIT_SLIDE_VOL_ACROSS_TWL_BOUNDARY ); + } +} + + +/********************************************//** +3DvXV + ***********************************************/ +void update_LED_3D() +{ + if( system_status.pwr_state != ON ) + { + LED_duty_3d = 0; + return; + // ܂ // + } + + if( vreg_ctr[VREG_C_LED_3D] == LED_3D_ILM_OFF ) + { + if( LED_duty_3d != 0 ) + { + LED_duty_3d --; + } + } + else + { + if( LED_duty_3d != vreg_ctr[VREG_C_LED_BRIGHT] ) + { + if( LED_duty_3d < vreg_ctr[VREG_C_LED_BRIGHT] ) + { + LED_duty_3d ++; + } + else + { + LED_duty_3d --; + } + } + } +} + + + + +/********************************************//** + COMMANDWX^ւ̏ + + 0ȂĂ΂܂BPAsv + + - sleep ʒm() + - ZbgnR}h + ***********************************************/ +task_status_immed tski_do_command0( ) +{ + u8 temp_command; + + // command0 {̓dȂ + DI_wt_chk(); + temp_command = vreg_ctr[VREG_C_COMMAND0]; + vreg_ctr[VREG_C_COMMAND0] = 0; + EI(); + + // SLPO(SoC->mcu) 񓯊̂߁ApX[ɂȂĂ܂Amcu SoC̈u + // X[vooASLPIgOoȂB炩ߒʒmĂ炢A + // ^CAEgsB + if( temp_command & REG_BIT_GOING_TO_SLEEP ) + { + going_to_sleep = true; + } + + // ZbgñR}h // + if( ( temp_command & ( REG_BIT_OFF_REQ | REG_BIT_RESET1_REQ | REG_BIT_FCRAM_RESET_REQ | REG_BIT_RESET2_REQ )) != 0x00 ) + { + if( temp_command & REG_BIT_OFF_REQ ) + { + system_status.pwr_state = OFF_TRIG; + } + else + { + if( temp_command & REG_BIT_RESET1_REQ ) + { + PM_reset_ast( ); + RESET2_ast; + FCRAM_RST_ast; + } + if( temp_command & REG_BIT_RESET2_REQ ) + { + RESET2_ast; + if( vreg_twl[ REG_TWL_INT_ADRS_MODE ] == 0 ) + { + FCRAM_RST_ast; // twlntr[hœ삵Ă + } + // TWL[hDS[hւ̐؂ւɃZbg + // IRQǂ܂Ȃꍇ̂TWLWX^ + vreg_twl_init(); + } + if( temp_command & REG_BIT_FCRAM_RESET_REQ ) + { + FCRAM_RST_ast; + } + wait_ms( 5 ); // ԉ҂ + FCRAM_RST_neg; + PM_reset_neg(); + RESET2_neg; + + // CODEC s背WX^ // + codec_reg_init(); + } + } +/* + X[vvɓdOFFEZbgR}h͗܂ + if( vreg_ctr[VREG_C_COMMAND0] != 0 ) + { + return ( TSKI_CONTINUE ); + } +*/ + return ( TSKI_FINISHED ); +} + + + +/* fobOEeXgp ============================== */ +u16 _dbg_rcomp; +extern u8 raw_adc_temperature; + +extern u8 iic_burst_state; +extern bit temp_zone_charge_disable; +extern bit bt_authorized; + + + + +#define KOUMOKU 19 + +static u8 infos_bits[2]; +static u8 infos_temp[5]; + +static const u8 *infos_table[ KOUMOKU ] = { + &infos_temp[0], /* 0 */ + &pmic_version, + (u8*)&battery_manufacturer, + &mgic_version[0], + &mgic_version[1], + &infos_temp[1], /* 5 */ + &raw_adc_temperature, + &infos_temp[2], + &infos_temp[3], + (u8*)&system_status.family, /* 9 */ + &infos_bits[0], /* 10 */ + (u8*)&LED_duty_pow_blu, + (u8*)&LED_duty_3d, + (u8*)&LED_duty_notify_red, + (u8*)&LED_duty_notify_grn, + (u8*)&LED_duty_notify_blu, /* 15 */ + &infos_bits[1], + (u8*)&LED_duty_WiFi, + &infos_temp[4] /* 18 */ + /* ڑƂ KOUMOKU ɒ */ +}; + +/********************************************//** +@fobOpɃXe[^XԂBigXe[^X 0x7Fj + +@Ԓl̓f[^̂ + + oĂ鏇́A + + - 1) vbgtH[ + - 2) PMIC o[W + - 3) dr[J[ + - 4) KXQ[Wo[W + - 5) V + - 6) ( rcomp & 0xFF ) + - 7) raw_adc_temperature + - 8) ( !temp_zone_charge_disable | ( bt_authorized << 1 ) ) + - 9) m点LED̓tJ[H + - 10) system_status.family + ***********************************************/ +u8 extinfo_read(void) +{ + u8 ret = 0xFF; + + /* + * temp͌vZKvȃf[^Bɗ]TȂ̂ŌvZKv + * ϐ́Av/svɊւ炸vZ|V[ + */ + + if( iic_burst_state < KOUMOKU ) + { + infos_temp[0] = system_status.captureBox? ( system_status.is_dev? MODEL_IS_CAPTURE :MODEL_KUC_CAPTURE ) + : ( system_status.is_dev? MODEL_IS_DEBUGGER: (u8)system_status.model ); + infos_temp[1] = (u8)( _dbg_rcomp & 0xFF ); + infos_temp[2] = ( !temp_zone_charge_disable | ( bt_authorized << 1 ) ); + infos_temp[3] = 1; /* dlύXɂ1ŒɂȂ */ + infos_temp[4] = 0 +// | ( PM_EXTDC_n ? REG_BIT_HAL0_PM_EXTDC_n : 0 ) // status0ɂ + | ( BT_IN_CHG_n ? REG_BIT_HAL0_BT_IN_CHG_n : 0 ) + | ( BT_CHG_Ena_n ? REG_BIT_HAL0_RSV_5 : 0 ) // 󂫃rbggp,out pin + | 0 // WL_TX gȂ +// | ( SHELL_OPEN ? REG_BIT_HAL0_SHELL_OPEN : 0 ) // status0ɂ + | ( SW_WIFI_n ? REG_BIT_HAL0_SW_WIFI_n : 0 ) + | ( SW_HOME_n ? REG_BIT_HAL0_SW_HOME_n : 0 ) + | ( SW_POW_n ? REG_BIT_HAL0_SW_POW_n : 0 ); + + infos_bits[0] = (u8)LED_pow_red; + infos_bits[1] = (u8)LED_CAM; + + ret = *infos_table[iic_burst_state]; + +#if 0 +// debug // + /// VXeɋ@펯ʂʼnR‚ + if( iic_burst_state == 9 ) + { + ret = (u8)FAMILY_FLOWER; + } +#endif + iic_burst_state ++; + } + + return ret; +} + + +#ifdef i2c_timeout_test +/********************************************//** +ifobOpjI2C_mcu ɃvgRᔽ(g`)oꂽSLED_Ēʒm + ***********************************************/ +void i2c_mcu_error_monitor() +{ + LED_duty_pow_blu = 0xff; + LED_duty_3d = 0xff; + LED_duty_notify_red = 0xff; + LED_duty_notify_grn = 0xff; + LED_duty_notify_blu = 0xff; + LED_pow_red = 1; + LED_CAM = 1; +} +#endif + diff --git a/snake_branches/3.50_2dsll_lguide/task_status.c b/snake_branches/3.50_2dsll_lguide/task_status.c new file mode 100644 index 0000000..0de3bf4 --- /dev/null +++ b/snake_branches/3.50_2dsll_lguide/task_status.c @@ -0,0 +1,89 @@ +/* ******************************************************** + ꕔ̃Xe[^XWX^XVAKvɉĊ荞݂܂B + + $Id$ +********************************************************* */ + +#ifndef _WIN32 + +#pragma SFR +#pragma NOP +#pragma HALT +#pragma STOP + +#endif + +#include "incs_loader.h" +#include "renge\renge.h" + +#include "pm.h" + +#include "accero.h" +#include "adc.h" +#include "i2c_mcu.h" +#include "led.h" + + +/********************************************//** + Xe[^XWX^́A + - WJ + + Ŋ荞݂KvłΔ܂B + todo: H + ***********************************************/ +void tsk_status( ) +{ + static u8 state_old; // Xe[^Xωo荞 ̈ + u8 diff; + + // WJ`FbN + set_bit_if( SHELL_OPEN, vreg_ctr[VREG_C_STATUS], REG_BIT_ST_SHELL_OPEN ); + + // Xe[^XWX^֌W 荞 // + // pm.c ŁȀōs܂B + // REG_BIT_LCD_ON/OFF + // REG_BIT_BL_ON/OFF + // REG_BIT_BT_DC_CONNECT/DISC + // REG_BIT_BT_CHG_START/STOP + + diff = (u8)( vreg_ctr[VREG_C_STATUS] ^ state_old ); + if( diff != 0 ) + { + state_old = vreg_ctr[VREG_C_STATUS]; + + if( system_status.pwr_state == ON ) + { + if( diff & REG_BIT_BATT_CHARGE ) + { + // [dԔf + if( is_bt_charging ) // set_irqʁXɌĂԕRpNg + { + set_irq( VREG_C_IRQ1, REG_BIT_BT_CHG_START ); + } + else + { + set_irq( VREG_C_IRQ1, REG_BIT_BT_CHG_STOP ); + } + } + } + + if(( system_status.pwr_state == ON ) || + ( system_status.pwr_state == SLEEP ) + ) + { + if( diff & REG_BIT_ST_SHELL_OPEN ) + { + // W̊J‚ + if( is_shell_open ) + { + set_irq( VREG_C_IRQ0, REG_BIT_SHELL_OPEN ); + } + else + { + set_irq( VREG_C_IRQ0, REG_BIT_SHELL_CLOSE ); + } + } + } + } +} + diff --git a/snake_branches/3.50_2dsll_lguide/task_sys.c b/snake_branches/3.50_2dsll_lguide/task_sys.c new file mode 100644 index 0000000..ba7733d --- /dev/null +++ b/snake_branches/3.50_2dsll_lguide/task_sys.c @@ -0,0 +1,685 @@ +/* ======================================================== + task_sys + dĩ^XN + + $Id$ + ======================================================== */ +#ifndef _WIN32 + +#pragma SFR +#pragma NOP +#pragma HALT +#pragma STOP + +#endif + +#include "incs.h" + +#include "i2c_twl.h" +#include "i2c_ctr.h" +#include "led.h" +#include "accero.h" +#include "pm.h" +#include "rtc.h" +#include "sw.h" +#include "adc.h" +#include "self_flash.h" +#include "i2c_mcu.h" +#include "vreg_twl.h" + + +//========================================================= +#define WAIT_SHIROBAKO_POW_CONTROL 240 + + +//========================================================= +extern void nop8(); + + +static void chk_emergencyExit(); +static void force_off_check(); +static void send_getup_to_soc(); +#ifdef _DBG_CHK_OFF_LEAK_ +static void leak_check(); +#endif + + + +//========================================================= +extern bit info_led_off; +extern bit going_to_sleep; +extern bit bt_authorized; + +static u8 timeout_sleep; +extern u8 chg_led_override; + +#ifdef i2c_timeout_test +extern bit i2c_mcu_time_out_error; +#endif + + +//========================================================= +#define PWSW_POWON_TIME (u8)( 20 / SYS_INTERVAL_TICK ) // [ms] // INTERVAL_TSK_SW ŊȂBl珬̂ +#define PWSW_ON_CHECK_TIMEOUT 100 // K donׂ̈ɓdXCb`삳ꂽƂA̎Ԍo߂mcuȓd͂ɖ߂ + + + +/********************************************//** + d̗グX[vȂǂǗ + ***********************************************/ +void tsk_sys( ) +{ + static u8 pwsw_timeout = 0; // d{^`^OB@^CAEg܂łɓdm肵Ȃoffɖ߂ + + hal_update(); + + switch ( system_status.pwr_state ) + { + case ON_CHECK: //------------------------------------------------------- + // dfJEg_E^C}NA + clear_pow_off_countdown(); + + // ̊荞݂HALT(X[v) ^@A_v^L + + // dXCb`HALT // + if( system_status.poweron_reason == RSN_PWSW ) + { + if( PM_EXTDC_n ) + { + // A_v^Ȃ + if( SW_pow_count != 0 ) + { + pwsw_timeout = 0; + } + else + { + pwsw_timeout ++; + } + + if( pwsw_timeout > PWSW_ON_CHECK_TIMEOUT ) + { + SW_pow_count = 0; + system_status.pwr_state = OFF_TRIG; // XCb`̓mCYBQB + renge_task_interval_run_force = true; + return; + } + } + else + { + BT_chk(); + } + + + if( SW_pow_count < PWSW_POWON_TIME ) + { + // ԂZēdonɓBĂȂ + return; + } + } + // else { if( system_status.poweron_reason == RSN_TRIALAc ) d } + + SW_pow_mask = true; // pwswςȂœd/ JԂȂ悤 + + // d // + iic_mcu_start( ); + + bt_force_update = false; + BT_chk(); // @obe̔AdrcIC̐ݒ + +#ifndef _ALLOW_NOBATT_ + if( system_status.model == MODEL_JIKKI_NOBATT ) + { + renge_task_interval_run_force = true; + system_status.pwr_state = OFF_TRIG; + return; + } +#endif + + // cʃ`FbN + BT_get_left(); // ɁABT_chk()sĂKv܂B + if( +// ( vreg_ctr[VREG_C_BT_REMAIN] < 1 ) // Ŕ肷ƓdrقƂǖƂ +// // A_v^ĂNłȂȂႤ + ( vreg_ctr[VREG_C_BT_VOLTAGE] < ( V_TH_ZERO / 256 ) ) // dr + ) + { + // drȂ̂ŋNȂ(d`FbNĂ) + renge_task_interval_run_force = true; + system_status.pwr_state = OFF_TRIG; + return; + } + + // |[g̕ݒ@dOɁB + PM_SW_WIFI_n = 1; + PM_SW_HOME_n_JIKKI = 1; + PM_WL_TX = 1; + PM_SW_SEL_n = 1; + PM_ACCEL_INT1 = 1; + PM_ACC_VALID = 1; + + if( PM_sys_pow_on( ) != ERR_SUCCESS ) + { // dNsƒG[ + renge_task_interval_run_force = true; + system_status.pwr_state = OFF_TRIG; + return; + } + + // ܂ŗƁAdm // + // vAbvon + PU_BT_IN_CHG_n = 1; + PU7 = bits8(0,0,0,1, 1,1,0,1); // 4:SW_WIFI 3:SW_PWSW 2:PM_IRQ 0:PM_EXTDC_n + PU_SW_HOME_n_JIKKI = 1; // SW_HOME + + reset_release(); + + if( system_status.poweron_reason == RSN_PWSW || + system_status.poweron_reason == RSN_TRIAL ) + { + // d{^łon̎́ALED_ + vreg_ctr[VREG_C_LED_POW] = LED_POW_ILM_AUTO; + } + else + { + // Ƃ肠ALEDԂŋN + vreg_ctr[VREG_C_LED_POW] = LED_POW_ILM_OFF; + } + + system_status.pwr_state = ON_TRIG; + + PM_LCD_vcom_set( ); // LCD̑ΌdlȂǏ + + break; + + case ON_TRIG: //------------------------------------------------------- +#ifdef i2c_timeout_test + LED_duty_pow_blu = 0; // debug + LED_duty_3d = 0; + LED_duty_notify_red = 0; + LED_duty_notify_grn = 0; + LED_duty_notify_blu = 0; + LED_pow_red = 0; + LED_CAM = 0; + i2c_mcu_time_out_error = false; +#endif + + /// łׂł́H + // vAbvon + PU_BT_IN_CHG_n = 1; + PU7 = bits8(0,0,0,1, 1,1,0,1); // 4:SW_WIFI 3:SW_PWSW 2:PM_IRQ 0:PM_EXTDC_n + PU_SW_HOME_n_JIKKI = 1; // SW_HOME + + IIC_ctr_Init( ); + IIC_twl_Init( ); + + vreg_twl_init( ); + vreg_ctr_reset( ); + + KRM = bits8(0,0,0,0, 0,0,0,0); + PIF0 = 0; + + system_status.poweron_reason = NONE; + renge_task_interval_run_force = true; + + MK0 = INT_MSK0_RSV; + MK1 = INT_MSK1_RSV; + + iic_mcu_start(); + +// MK2 = ~( INT_MSK2_IIC_TWL | INT_MSK2_WIFI_TX_BSR | INT_MSK2_CODEC_PMIRQ ); +// PMK21 = 0; // wifi gȂ + PMK6 = 0; // pm_irq + + // u[gAXe[^X덇킹 + if( system_status.reboot ) + { + u8 bl_status_temp; + + // LCD donH Xe[^X̍XVB + /// t@[XVAKtoffH + if( read_pmic( PM_REG_ADRS_VDD_LCD ) != 0 ) + { + vreg_ctr[ VREG_C_STATUS ] |= REG_BIT_LCD_POW; + // LCD_AMOL_HV_CTRL = 1; svBt@[XVAsԂ͕ێ̂߁B + } + + // obNCg_ĂH@Xe[^X̍XVB + bl_status_temp = read_pmic( PM_REG_ADRS_BL ); + vreg_ctr[ VREG_C_STATUS ] |= (( bl_status_temp & 0x03 ) << 5 ); + + // obe{̎ + BT_chk(); + } + + LED_init( ); // reboot́BT_Chk,BT_chkɍs + + system_status.reboot = 0; + system_status.pwr_state = ON; + + // WDTZbgAI2C̏܂Ŋ荞ݕۗ + // قƂ͂ɂׂȂ... + if( ( vreg_ctr[ VREG_C_MCU_STATUS ] & REG_BIT_STATUS_WDT_RESET ) != 0 ) + { + set_irq( VREG_C_IRQ0, REG_BIT_IRQ_WDT_RESET ); + } + + break; + + case ON: //--------------------------------------------- + // PMICɂ鋭df`FbN + // fobKreset1AT[g邱ƂB̂Ƃ͑SZbg + chk_emergencyExit(); + + // SLPĎ + if( going_to_sleep ) // ΂ SLP_REQ ̑Oɗ\ + { + timeout_sleep ++; + if( timeout_sleep == 0 || // I[o[t[ҁBsleepČLjuŋNċC‚Ȃ + ( PIF0 && !SLP_REQ )) // slp荞݂CANĂ܂ + { + PIF0 = 0; + send_getup_to_soc(); + } + if( PIF0 && SLP_REQ ){ + PIF0 = 0; + PM_VDD_ecoMode(); + system_status.pwr_state = SLEEP; + renge_task_interval_run_force = true; + } + } + + // offJEg + force_off_check(); + +#ifndef _TAIKENDAI_SEISAN_SPECIAL_ + if( system_status.taikendai ) // A_v^玩œdoff + { + if( PM_EXTDC_n ) + { + system_status.pwr_state = OFF_TRIG; + } + } +#endif + + break; + + case SLEEP: //------------------------------------------ + chk_emergencyExit(); + // X[v畜A + if( !SLP_REQ ){ + PM_VDD_normMode(); + wait_ms( 5 ); // tdly_sw + send_getup_to_soc(); + system_status.pwr_state = ON; + } + + force_off_check(); +// leak_check(); + +#ifndef _TAIKENDAI_SEISAN_SPECIAL_ + if( system_status.taikendai ) // A_v^玩œdoff + { + if( PM_EXTDC_n ) + { + system_status.pwr_state = OFF_TRIG; + } + } + break; // ł悢B +#else + /* FALLTHROUGH */ +#endif + + default: //--------------------------------------- + system_status.pwr_state = OFF_TRIG; // 蓾ȂXe[gBfobOp +// dbg_nop(); + /* FALLTHROUGH */ + + case OFF_TRIG: //--------------------------------------- + // LED҂ + vreg_ctr[ VREG_C_LED_POW ] = LED_POW_ILM_OFF; + vreg_ctr[ VREG_C_LED_WIFI ] = WIFI_LED_OFF; + vreg_ctr[ VREG_C_LED_3D ] = LED_3D_ILM_OFF; + info_led_off = true; + if( LED_duty_pow_blu != 0 ) + { + return; + } + + // dfJEg_E^C}NA + clear_pow_off_countdown(); + + // xZT~ + vreg_ctr[ VREG_C_ACC_CONFIG ] = 0x00; + tski_acc_setup(); + EI(); // DIԂłė̂ŁAI2C_mcu ̂ɕKv + + // ̑ytF~ + LED_stop( ); + IIC_ctr_Stop( ); + IIC_twl_Stop( ); + RTC_32k_off(); + +// dI̊荞݃Zbg +// PWSW KR3 L +// BG24 KR4 +// ӂJ INTP5 ‚L +// ACA_v^ INTP4 A_v^L +// RTC + while( iic_mcu_busy ) + {;} + + // irq}XNݒ + KRM = ( KR_SW_POW ); // Mask ł͂ȂAModeȂ̂B킵 + MK0 = ~( INT_MSK0_EXTDC | INT_MSK0_WDTI ); + MK1 = ~( INT_MSK1_KR | INT_MSK1_RTCINTVAL ); // INT_MSK1_RTCALARM | RTCA[ + MK2L = 0xFF; + + // irqtONA + vreg_ctr[VREG_C_IRQ0] = 0; + vreg_ctr[VREG_C_IRQ1] = 0; + vreg_ctr[VREG_C_IRQ2] = 0; + vreg_ctr[VREG_C_IRQ3] = 0; + + // PU5 ̂܂ + PU7 = bits8(0,0,0,0, 1,0,0,1); // PWSWI,PM_EXTTDC,( IRQ0_deactive(), PM_IRQ_deactive ) + PU_SW_HOME_n_JIKKI = 0; // SW_HOME ~ + + IF0 = 0; + IF1 = 0; + IF2 = 0; + + IRQ0_disable; + + PM_sys_pow_off( ); // dJbgIt + + // |[gނ~[hɁBHłALo͂ɂȂႾ߂ȁB + SW_WIFI_n_RAW = 0; + PM_SW_WIFI_n = 0; + + SW_HOME_n_JIKKI_RAW = 0; + PM_SW_HOME_n_JIKKI = 0; + + WL_TX = 0; + PM_WL_TX = 0; + + SW_SEL_n = 0; + PM_SW_SEL_n = 0; + + ACCEL_INT1 = 0; + PM_ACCEL_INT1 = 0; + ACC_VALID = 0; + PM_ACC_VALID = 0; + + system_status.pwr_state = OFF; + SW_pow_mask = true; + SW_pow_count = 0; + + // HALfobOZbg@YƓdonoȂȂ邱Ƃc + hal_reset(); + /* FALLTHROUGH */ + + case OFF: + // Fł͓d{^d͂܂B + + system_status.poweron_reason = NONE; + pwsw_timeout = 0; + LCD_AMOL_HV_CTRL = 0; // ُIAAt@XLCDpd؂YĂ܂ + + + if( !PM_EXTDC_n + || chg_led_override != 0 ) // ꂪ[ɂȂ܂ő҂ + { + // A_v^L /////////////////////////////// ܂́AA_v^ĂRb͏[dLED_Ă + + // d{^`FbN + system_status.poweron_reason = RSN_PWSW; + system_status.pwr_state = ON_CHECK; + +#ifndef _TAIKENDAI_SEISAN_SPECIAL_ + // VȂ玩œdē + if( system_status.taikendai ) + { + vreg_ctr[ VREG_C_HAL_OVW_CONT0 ] = vreg_ctr[ VREG_C_HAL_OVW_CONT1 ] = 0; + wait_ms(46); // pmic̓dēdl̂ + system_status.poweron_reason = RSN_TRIAL; + system_status.pwr_state = ON_CHECK; + } +#endif + } + else + { + // A_v^Ȃ /////////////////////////////// + + // ȓd͂ֈڍs + iic_mcu_stop( ); + pm_chk_adapter(); + PM_Chg_Stop(); + + bt_force_update = true; + + while( RWST ) + {;} + + // 荞ݑ҂ŐQ // + RTCIMK = 1; // systickpC^[o^C}[荞݃}XN + +#ifdef _DBG_CHK_OFF_LEAK_ + leak_check(); +#endif + CKC = bits8(0,0,0,0, 1,0,0,1); // 4MHzɗƂ(bit0)STOPȂĂ͂ȂȂ + OSMC = bits8(0,0,0,0, 0,0,0,0); // 5MHzȉ[hցB + + if( PM_EXTDC_n_RAW ) // ǂ^C~Oő}N邱ƂBHALʂȂׂioffłj + { + STOP(); + } + + // N // + // N + // EKeyReturn荞݁id{^j + // ERTCA[iݕj + + // NbNA + OSMC = bits8(0,0,0,0, 0,0,0,1); // 8MHz쏀 + renge_flg_interval = 0; + hal_update(); + + CKC = bits8(0,0,0,0, 1,0,0,0); // OSMC.FSEL = 1 3clkȏJ + + // NŔH + if( !PM_EXTDC_n ){ + system_status.pwr_state = OFF; // ĂāAON_CHECKɍs + } +/* // RTCA[B + else if( vreg_ctr[ VREG_C_IRQ1 ] & REG_BIT_RTC_ALARM ) + { + system_status.poweron_reason = RSN_RTC_ALARM; + system_status.pwr_state = ON_CHECK; + } + // else if( ̊荞݂œdon ){ + // 󑼂̗vł͋NȂ + // } +*/ + else // if( !SW_POW_n ) // iȊOȂjd{^ŋN + { + SW_pow_mask = false; + system_status.poweron_reason = RSN_PWSW; + system_status.pwr_state = ON_CHECK; + } + + RTCIMK = 0; // sys tick ^C}[L + +#ifndef _TAIKENDAI_SEISAN_SPECIAL_ + if( system_status.taikendai ) + { + system_status.pwr_state = OFF_TRIG; + } +#endif + } + } +} + + + +/********************************************//** + PMICdُŎ~߂mF + + ***********************************************/ +static void chk_emergencyExit(){ + static u8 shirobako_power_control_count; + + // wifi W[Lu[V[hreset1牺ĂƂ̓`FbNpX + if( is_wifi_calib_resets_ast ) + { + return; + } + + if( shirobako_power_control_count == 0 ) + { + if( !RESET1_n ) // PM_chk_LDSW() I2C_mgpARXg + { + if( !PM_chk_LDSW() ) + { + // ZbgĂ + /// PMICُIf + system_status.pwr_state = OFF_TRIG; + renge_task_interval_run_force = true; + } + else + { + // ̎d + shirobako_power_control_count = 1; + } + } + } + else + { + if( shirobako_power_control_count == WAIT_SHIROBAKO_POW_CONTROL ) // }WbNio[ + // fobKBreset1܂ł͖ + { + if( RESET1_n ) // ZbglQ[g҂ + { + shirobako_power_control_count = 0; + } + else + { + // nothing to do + } + } + else if( shirobako_power_control_count == 200 ) // * (sys_tick)[ms] + // fobK炵 + { +#ifndef _RVD_ + // ͓d؂肽炵 + system_status.pwr_state = OFF_TRIG; + renge_task_interval_run_force = true; + shirobako_power_control_count = WAIT_SHIROBAKO_POW_CONTROL; +#endif + } + else + { + if( !RESET1_n ) + { + if( shirobako_power_control_count != 255 ) + shirobako_power_control_count ++; + } + else + { + // (TS{[hŎ蓮/fobK)Zbg炵 + send_cmd_pmic( PM_REG_ADRS_BL, 0 ); + vreg_ctr[VREG_C_STATUS] = ( vreg_ctr[VREG_C_STATUS] & bits8(1,0,0,1, 1,1,1,1) ); + vreg_ctr[VREG_C_COMMAND0] |= REG_BIT_RESET1_REQ; + renge_task_immed_add( tski_do_command0 ); + shirobako_power_control_count = WAIT_SHIROBAKO_POW_CONTROL; + } + } + } +} + + + +/********************************************//** + - d{^ + - dr؂ + - dr + + ł̋OFFBƉs\ + ***********************************************/ +static void force_off_check() +{ + if( force_off ) + { + system_status.pwr_state = OFF_TRIG; + renge_task_interval_run_force = true; + } +} + + + +/********************************************//** + SoCN + +@@dʏɖ߂ĂĂʼnB + ***********************************************/ +void send_getup_to_soc() +{ + going_to_sleep = false; + timeout_sleep = 0; +#ifdef _MODEL_CTR_ + SLP_ACK = 1; + nop8(); + SLP_ACK = 0; +#endif +} + + + + +/********************************************//** + ȃAbvf[g firm_update() ĂԁiisrsłȂ̂Łj + + task_status_immed^ Ԃ悤ɂ΂̂ł... + ***********************************************/ +task_status_immed tski_firm_update(){ + firm_update(); + return( ERR_SUCCESS ); +} + + + +#ifdef _DBG_CHK_OFF_LEAK_ +/********************************************//** + pinݒ~X`FbN + ***********************************************/ +static void leak_check() +{ + volatile u8 ports_i[12]; + volatile u8 ports_o[12]; + + ports_i[0] = ( PM0 & PU0 & ~P0 ); // vAbv؂YH + ports_i[1] = ( PM1 & PU1 & ~P1 ); + ports_i[2] = 0; + ports_i[3] = ( PM3 & PU3 & ~P3 ); + ports_i[4] = ( PM4 & PU4 & ~P4 ); + ports_i[5] = ( PM5 & PU5 & ~P5 ); + ports_i[6] = 0; + ports_i[7] = ( PM7 & PU7 & ~P7 ); + ports_i[8] = ( PM12 & PU12 & ~P12 ); + ports_i[9] = ( PM14 & PU14 & ~P14 ); + ports_i[10] = 0; + ports_i[11] = ( PM20 & PU20 & ~P20 ); + + ports_o[0] = ( ~PM0 & P0 ); // H o͂Ă邩 + ports_o[1] = ( ~PM1 & P1 ); + ports_o[2] = ( ~PM2 & P2 ); + ports_o[3] = ( ~PM3 & P3 & ~POM3 ); + ports_o[4] = ( ~PM4 & P4 ); // bit3chg_enȂ̂1ł悢 + ports_o[5] = ( ~PM5 & P5 ); + ports_o[6] = ( ~PM6 & P6 ); + ports_o[7] = ( ~PM7 & P7 ); + ports_o[8] = ( ~PM12 & P12 ); + ports_o[9] = ( ~PM14 & P14 ); + ports_o[10] = ( ~PM15 & P15 ); + ports_o[11] = ( ~PM20 & P20 ); + NOP(); // u[Nu +} +#endif _DBG_CHK_OFF_LEAK_ diff --git a/snake_branches/3.50_2dsll_lguide/user_define.h b/snake_branches/3.50_2dsll_lguide/user_define.h new file mode 100644 index 0000000..413773b --- /dev/null +++ b/snake_branches/3.50_2dsll_lguide/user_define.h @@ -0,0 +1,214 @@ +#ifndef _USER_DEF_ +#define _USER_DEF_ + +// $Id: asdf$ + +#define IIC_T_SLAVEADDRESS 0x4A +#define IIC_C_SLAVEADDRESS 0x4A +#define IIC_C_SLAVEADDRESS_DMY 0x4C + +//#define IIC_SLA_DCP 0x50 + +#define bits8(a,b,c,d,e,f,g,h) ( a<<7 | b<<6 | c<<5 | d<<4 | e<<3 | f<<2 | g<<1 | h ) + +#ifndef _WIN32 +// @‹ + +#ifdef _debug_led_ +/*spflΉȍ~AncłȂȂ̂Ŏg܂ +# define DBG_LED_on { PM2.1 = 0; P2.1 = 1; } +# define DBG_LED_off { P2.1 = 0; } +# define DBG_LED_toggle ( P2.1 ^= 1 ) +# define DBG_LED2_on { PM2.2 = 0; P2.2 = 1; } +# define DBG_LED2_off { P2.2 = 0; } +# define DBG_LED2_toggle ( P2.2 ^= 1 ) +*/ +#else +# define DBG_LED_on ; +# define DBG_LED_off ; +# define DBG_LED_toggle ; +# define DBG_LED2_on ; +# define DBG_LED2_off ; +# define DBG_LED2_toggle ; +#endif // _debug_led_ + +#define IIC_SLA_CODEC 0xA4 +#define IIC_SLA_ACCEL 0x30 // ST LIS331DLH + + +#define SLP_ACK P7.7 + + +// PMx0ŏo̓[h + +// SoC +#define IRQ0_ast { P7.6 = 0; PM7.6 = 0; } // B4 +#define IRQ0_neg { P7.6 = 1; } +#define IRQ0_enable { PM7.6 = 0; } +#define IRQ0_disable { PM7.6 = 1; } +#define IRQ0 ( P7.6 ) + + +// h~ +#define RESET1_n ( P0.0 ) // G7 + +#if 1 // iPM_RESET1gAWiFiW[̃eXg̎͒ +# define RESET1_ast { P0.0 = 0; PM0.0 = 0; } +# define RESET1_neg { PM0.0 = 1; } +#endif + +#define RESET2_ast { P0.1 = 0; PM0.1 = 0; } // F7 +#define RESET2_neg { PM0.1 = 1; } + +#define SLP_REQ P12.0 // H8 + +// CTR,SPFL,SNAKE,܂ʔh@ +#define DEV_DET ( P12 & 0b00000110 ) // [2:1] = D8,C8 +#define DEV_CTR ( 0b00 << 1 ) +#define DEV_SPFL ( 0b01 << 1 ) +#define DEV_SNAKE ( 0b10 << 1 ) +#define DEV_RSV2 ( 0b11 << 1 ) + +// FCRAM +#define FCRAM_RST P3.0 // B6 +#define FCRAM_RST_ast { P3.0 = 0; } +#define FCRAM_RST_neg { P3.0 = 1; } + +// CODEC +#define PM_IRQ_n P7.2 // A3 +// INTP6 + +// PM +#define PM_EXTDC_n_RAW P7.0 // B2 +// INTP7 +//#define BT_TEMP P15.0 // G3(a) +// ANI8 +//#define BT_DET P15.1 // H2(a) +// ANI9 +#define BT_DET_P P1.6 // D4 +#define BT_TEMP_P P1.7 // C4 + + +// SPFL̃At@XLCDŕKvȁ}15V̓dB +#define LCD_AMOL_HV_CTRL P20.2 // F2 + + +// [d(out) +// _łBӁB +#define BT_CHG_ENABLE() ( P4.3 = 0 ) // F6 +#define BT_CHG_DISABLE() ( P4.3 = 1 ) +#define BT_CHG_Ena_n ( P4.3 ) + +// [d(in) +#define BT_IN_CHG_n_RAW P5.1 // B1 +#define PM_BT_IN_CHG_n PM5.1 +#define PU_BT_IN_CHG_n PU5.1 + +#define SW_WIFI_n_RAW P7.4 // C3 +#define PM_SW_WIFI_n PM7.4 +// KR4 +#define SW_POW_n_RAW P7.3 // B3 +// KR3 +#define SW_SEL_n P2.3 // G5 +#define PM_SW_SEL_n PM2.3 +//#define VOL P2.7 // H4(a) +// ANI7 + +#define SW_HOME_n_JIKKI_RAW P20.4 // G2 +#define PM_SW_HOME_n_JIKKI PM20.4 +#define PU_SW_HOME_n_JIKKI PU20.4 + +// INTP22 +#define SW_HOME_n_TSBOARD_RAW P2.0 // TS}U[pull up(P2͓p.u.) // G6 +#define PM_SW_HOME_n_TSBOARD PM2.0 + +// WiFi +#define WL_TX P20.3 // INTP21 // F3 +#define PM_WL_TX PM20.3 // INTP21 + +//#define VOL_P P2.1 // E5 open +//#define VOL_N P2.2 // F5 V + +//#define LED_CAM P1.0 // TO02 // E4 +//#define LED_WIFI P1.1 // TO03 // E3 +//#define LED_NOTIFY P1.3 // TO05 // D3 +//#define LED_3D P5.2 // SLTO TO01 // A2 +//#define LED_POW2 P1.4 // TO06 ( ) // D2 +//#define LED_POW1 P1.5 // TO07 ( ) // D1 +//#define LED_CHARGE P2.4 // H5 + +// P5.3 ɉAP5.5, P140 P141 +// P140o͐pȂ̂... +#define I2C_PU_on() { P14 |= 0x03; PM5.3 = 0; PM3.3 = 0; } // P14[1:0] H6,H7 P5.3,3.3 A1,C5 +#define I2C_PU_off() { PM5.3 = 1; PM3.3 = 1; P14 &= ~0x03; } + +#define GYRO_ENABLE() P5.0 = 0 // C1 +#define GYRO_DISABLE() P5.0 = 1 + +//#define I2C_M_SDA P3.1 // SDA10 // C6 +//#define I2C_M_SCL P3.2 // SCL10 // B5 + +//#define I2C_0_SCL P6.0 // IIC_TWL SCL0 // A7 +//#define I2C_0_SDA P6.1 // SDA0 // A6 + +//#define I2C_1_SCL P20.0 // IIC CTR SCL1 // E1 +//#define I2C_1_SDA P20.1 // SDA1 // F1 + +//#define 32kHz_O P1.2 // RTCCL // E2 +//#define 32k_I1 P12.3 // XT1 // F8 +//#define 32k_I2 P12.4 // XT2 // G8 + +// @AJ@AV䔻ʁB +#define DIPSW ( P4 & 0b00000011 ) // mini cube & \tgEFAfBbvXCb` TOOL0,1B P4.0 L ӁI +#define DIPSW_CTR 0b11 // gp +#define DIPSW_ISDEV 0b00 // KuCBattGaugeŔ +#define DIPSW_TAIKENDAI 0b10 +#define DIPSW_TAIKENDAI_NBD 0b01 + + +#define SHELL_OPEN_RAW P7.1 // INTP5 ӂJ (‚L) // C2 + +#define ACC_VALID P20.5 // H3 +#define PM_ACC_VALID PM20.5 +#define ACCEL_INT1 P2.5 // F4 +#define PM_ACCEL_INT1 PM2.5 + + +#endif // _WIN32 + +// win32 sim‹Ƌ + +#define KR_SW_POW ( 1 << 3 ) +#define KR_SW_WIFI ( 1 << 4 ) + +/////////////////////////////////////////////////////////// +#ifdef _WDT_CHECK_ +# define INT_MSK0_WDTI 1<<15 +#else +# define INT_MSK0_WDTI 0 +#endif + +#define INT_MSK0_IIC_M_DMA 1<<12 +#define INT_MSK0_SHELL 1<<7 +#define INT_MSK0_EXTDC 1<<6 +//#define INT_MSK0_SLP 1<<2 +#define INT_MSK0_RSV ~( INT_MSK0_IIC_M_DMA | INT_MSK0_SHELL | INT_MSK0_EXTDC | INT_MSK0_WDTI ) + +#define INT_MSK1_KR 1<<11 +#define INT_MSK1_RTCINTVAL 1<<10 +#define INT_MSK1_RTCALARM 1<<9 +#define INT_MSK1_ADC 1<<8 +#define INT_MSK1_IIC_CTR 1<<3 +#define INT_MSK1_IIC_MCU 1<<0 +#define INT_MSK1_RSV ~( INT_MSK1_KR | INT_MSK1_RTCINTVAL | INT_MSK1_RTCALARM | INT_MSK1_ADC \ + | INT_MSK1_IIC_CTR | INT_MSK1_IIC_MCU ) + +#define INT_MSK2_WIFI_TX_KE3 1<<4 +#define INT_MSK2L_RSV ~( INT_MSK2_WIFI_TX_KE3 ) + +#define INT_MSK2_IIC_TWL 1<<8 +#define INT_MSK2_WIFI_TX_BSR 1<<10 +#define INT_MSK2_CODEC_PMIRQ 1<<3 +#define INT_MSK2_RSV ~( INT_MSK2_IIC_TWL | INT_MSK2_WIFI_TX_BSR | INT_MSK2_CODEC_PMIRQ ) + +#endif // dupe include guard diff --git a/snake_branches/3.50_2dsll_lguide/util_funcs.c b/snake_branches/3.50_2dsll_lguide/util_funcs.c new file mode 100644 index 0000000..2edea63 --- /dev/null +++ b/snake_branches/3.50_2dsll_lguide/util_funcs.c @@ -0,0 +1,65 @@ +/* ======================================================== + util_funcs + + Gȃ[eBeB֐ + + $Id$ + ======================================================== */ +#ifndef _WIN32 + +#pragma SFR +#pragma di +#pragma ei +#pragma nop +#pragma stop +#pragma halt +#pragma opc + +#endif +#include "incs_loader.h" +#include "wdt.h" + + + +/********************************************//** + Pʂ ms + + NOP񂷂Aw莞CPU *L܂* B + + 荞݂ƂƂ̕x܂B + + 덷܂B + ***********************************************/ +void wait_ms( u8 ms ){ + u16 fine; + + WDT_Restart(); + while( ms != 0 ){ + ms--; + fine = 860; + while( fine != 0 ){ + fine --; + } + } +} + + + + +extern unsigned char get_ei(); + +#ifdef _DI_WITH_CHECK_ +/********************************************//** + ł 荞݋֎~ԉ`FbNĂ犄荞݋֎~ɂ + + ]̌ʁAA#ifdef Ń`FbN DI + ***********************************************/ +void DI_wt_chk() +{ + if( !get_ei() ) + { + dbg_nop(); + } + DI(); +} +#endif // _DI_WITH_CHECK_ diff --git a/snake_branches/3.50_2dsll_lguide/util_funcs.h b/snake_branches/3.50_2dsll_lguide/util_funcs.h new file mode 100644 index 0000000..4229413 --- /dev/null +++ b/snake_branches/3.50_2dsll_lguide/util_funcs.h @@ -0,0 +1,16 @@ +#ifndef _util_funcs_h_ +#define _util_funcs_h_ + + +void wait_ms( u8 ); + + +# ifdef _DI_WITH_CHECK_ +void DI_wt_chk(); +# else +# define DI_wt_chk() DI() +# endif /* _DI_WITH_CHECK_ */ + + +#endif + diff --git a/snake_branches/3.50_2dsll_lguide/voltable.c b/snake_branches/3.50_2dsll_lguide/voltable.c new file mode 100644 index 0000000..4d2e14a --- /dev/null +++ b/snake_branches/3.50_2dsll_lguide/voltable.c @@ -0,0 +1,64 @@ +/* ======================================================== + voltable.c + + $Id$ + ======================================================== */ +#include "incs.h" + +#define _10db_ + + + +/********************************************//** + XC_l CODEC ɃZbgہAőVol̊֌W + KɃXP[OKv + + yȂ̂Ńe[u + ***********************************************/ + + + +#ifdef _10db_ +// max -10db +const u8 slider_to_codec[64] = +{ + 127, 126, 125, 124, 122, 121, 120, 119, + 118, 117, 116, 114, 113, 112, 111, 110, + 109, 108, 106, 105, 104, 103, 102, 101, + 100, 98, 97, 96, 95, 94, 93, 92, + 90, 89, 88, 87, 86, 85, 83, 82, + 81, 80, 79, 78, 77, 75, 74, 73, + 73, 72, 71, 70, 69, 67, 66, 65, + 64, 63, 62, 61, 59, 58, 57, 56 + }; +#endif + +#ifdef _15db_ +// max -15db +const u8 slider_to_codec[64] = +{ + 127, 127, 127, 127, 127, 126, 125, 123, + 122, 121, 120, 119, 118, 117, 116, 115, + 114, 113, 112, 110, 109, 108, 107, 106, + 105, 104, 103, 102, 101, 100, 99, 97, + 96, 95, 94, 93, 92, 91, 90, 89, + 88, 87, 86, 85, 84, 83, 82, 81, + 80, 79, 78, 77, 76, 75, 74, 73, + 71, 70, 69, 68, 67, 66, 66, 66 +}; +#endif + +#ifdef _4db_ +// max -4db +const u8 slider_to_codec[64] = +{ + 127, 127, 126, 125, 123, 122, 121, 119, + 118, 117, 115, 114, 112, 111, 110, 108, + 107, 106, 104, 103, 101, 100, 99, 97, + 96, 94, 93, 92, 90, 89, 88, 86, + 85, 83, 82, 81, 79, 78, 77, 75, + 74, 72, 71, 70, 68, 67, 66, 64, + 64, 63, 61, 60, 59, 57, 56, 54, + 53, 52, 50, 49, 48, 46, 44, 44 +}; +#endif diff --git a/snake_branches/3.50_2dsll_lguide/voltable.h b/snake_branches/3.50_2dsll_lguide/voltable.h new file mode 100644 index 0000000..6ff34ab --- /dev/null +++ b/snake_branches/3.50_2dsll_lguide/voltable.h @@ -0,0 +1,57 @@ +#ifdef _10db_ +// max -10db +/* +const u8 slider_to_codec[64] = +{ + 127, 127, 127, 127, 126, 125, 123, 122, + 121, 120, 118, 117, 116, 115, 113, 112, + 111, 110, 108, 107, 106, 105, 103, 102, + 101, 100, 98, 97, 96, 95, 93, 92, + 91, 90, 88, 87, 86, 85, 83, 82, + 81, 80, 78, 77, 76, 75, 73, 72, + 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_ +// max -15db +const u8 slider_to_codec[64] = +{ + 127, 127, 127, 127, 127, 126, 125, 123, + 122, 121, 120, 119, 118, 117, 116, 115, + 114, 113, 112, 110, 109, 108, 107, 106, + 105, 104, 103, 102, 101, 100, 99, 97, + 96, 95, 94, 93, 92, 91, 90, 89, + 88, 87, 86, 85, 84, 83, 82, 81, + 80, 79, 78, 77, 76, 75, 74, 73, + 71, 70, 69, 68, 67, 66, 66, 66 +}; +#endif + +#ifdef _4db_ +// max -4db +const u8 slider_to_codec[64] = +{ + 127, 127, 126, 125, 123, 122, 121, 119, + 118, 117, 115, 114, 112, 111, 110, 108, + 107, 106, 104, 103, 101, 100, 99, 97, + 96, 94, 93, 92, 90, 89, 88, 86, + 85, 83, 82, 81, 79, 78, 77, 75, + 74, 72, 71, 70, 68, 67, 66, 64, + 64, 63, 61, 60, 59, 57, 56, 54, + 53, 52, 50, 49, 48, 46, 44, 44 +}; +#endif diff --git a/snake_branches/3.50_2dsll_lguide/vreg_ctr.c b/snake_branches/3.50_2dsll_lguide/vreg_ctr.c new file mode 100644 index 0000000..aae1669 --- /dev/null +++ b/snake_branches/3.50_2dsll_lguide/vreg_ctr.c @@ -0,0 +1,638 @@ +/* ======================================================== + + CTR MCU I2CWX^ + + $Id$ + ====================================================== */ +#include "incs.h" +#include "vreg_ctr.h" +#include "rtc.h" +#include "led.h" +#include "accero.h" +#include "pm.h" +#include "pool.h" +#include "vreg_twl.h" +#include "sw.h" +#include "WDT.h" + +#include +#include "fsl_user.h" + + + + +extern u8 extinfo_read(); // task_misc.c + +extern u8 iic_burst_state; // o[XgANZX鎞̃JE^ +extern bit info_led_pattern_updated; // m点LED̃p^[擪ɖ߂ + +extern bit pedolog_overflow; +extern bit reserve_pedo_increnent; + + + +// ******************************************************** +u8 vreg_ctr[VREG_C_ENDMARK_]; + +static u8 vreg_free_adrs; // AhXł̂ł΂炭͂ +bit irq_readed; // AAA^̂߁B + + + +// ******************************************************** +extern task_status_immed tski_firm_update(); +extern task_status_immed tski_mcu_reset(); +extern unsigned char get_ei(); + + + +// ******************************************************** +#ifdef _MCU_BSR_ +#define IICAMK IICAMK1 +#endif + + +/********************************************//** + + + [̏l̎w肪KvȃAhX + + }CRZbgɌĂ΂܂ + ***********************************************/ +void vreg_ctr_init( ) +{ + vreg_ctr[ VREG_C_VCOM_T ] = VCOM_DEFAULT_T; + vreg_ctr[ VREG_C_VCOM_B ] = VCOM_DEFAULT_B; + + vreg_ctr[ VREG_C_OFF_DELAY ] = FORCEOFF_THREASHOLD; + + vreg_ctr[ VREG_C_VOL_CAL_MIN ] = 0x36; + vreg_ctr[ VREG_C_VOL_CAL_MAX ] = 0xFF - 0x36; +} + + +/********************************************//** + lZbg + + VXeZbgɌĂ΂܂ + ***********************************************/ +void vreg_ctr_reset( ) +{ + vreg_ctr[ VREG_C_MCU_VER_MAJOR ] = MCU_VER_MAJOR | 0x10; + vreg_ctr[ VREG_C_MCU_VER_MINOR ] = MCU_VER_MINOR; + +// vreg_ctr[ VREG_C_STATUS ] &= bits8(0,0,0,1, 1,1,1,1); + vreg_ctr[ VREG_C_LED_BRIGHT ] = 0xFF; + vreg_ctr[ VREG_C_LED_POW ] = 0; + vreg_ctr[ VREG_C_LED_WIFI ] = 0; + vreg_ctr[ VREG_C_LED_CAM ] = 0; + vreg_ctr[ VREG_C_LED_3D ] = 0; + { + u8 i; + for( i = 0; i < sizeof( uni_info_LED ); i++ ) + { + info_LED.bindata[ i ] = 0; + } + } + + vreg_ctr[ VREG_C_WIFI_CALIB ] = 0; + // ł̂͋Cc + RTC_32k_on(); + RESET1_neg; + RESET2_neg; + FCRAM_RST_neg; +} + + + +/********************************************//** + I2CzWX^ɏ܂B + + @ adrs ͓AhX + + @ȂAhXɃANZXꍇA܂B + + 񂾌ʁAI2C_mcuʐMꍇArenge_task_immed_add() + gpȂƁAI2C_mcugpŃG[IꍇɃgC܂B + ***********************************************/ +void vreg_ctr_write( u8 adrs, u8 data ) +{ + switch ( adrs ) + { + + case VREG_C_COMMAND0: + if( data != 0 ) + { + renge_task_immed_add( tski_do_command0 ); + vreg_ctr[ VREG_C_COMMAND0 ] |= data; + } + break; + + case VREG_C_COMMAND2: + // 炩̊荞݂҂ĂȂłB #--) ̂߂̊荞݂ + // td + if(( data & REG_BIT_CMD_LCD_ON ) != 0 ) + { + renge_task_immed_add( tski_PM_LCD_on ); + } + else if(( data & REG_BIT_CMD_LCD_OFF ) != 0 ) + { + renge_task_immed_add( tski_PM_LCD_off ); + } + + // obNCgݒ + /// ̂Ƃ낳ɍׂ͕Ȃǁc + if(( data & REG_BITS_CMD_BL ) != 0 ) + { + renge_task_immed_add( tski_PM_BL_set ); + vreg_ctr[adrs] = (u8)( data & REG_BITS_CMD_BL ); + } + break; + + case VREG_C_COMMAND1: + if( data != 0 ) + { + // u8 temp; ԕϐg΂łȂ... + // TWLɊ荞݂ + /// ۂɊ荞݂̂SoC + /// rbg̕тႤʓ| + vreg_twl[ REG_TWL_INT_ADRS_IRQ ] = ( ( data & REG_BIT_SEND_TWL_PWSW_DET ) != 0 ) ? REG_BIT_TWL_IRQ_PWSW_DET : 0x00; //pwsw_det + vreg_twl[ REG_TWL_INT_ADRS_IRQ ] |= ( ( data & REG_BIT_SEND_TWL_RESET_DET ) != 0 ) ? REG_BIT_TWL_IRQ_RESET : 0x00; //reset_req + + vreg_twl[ REG_TWL_INT_ADRS_IRQ ] |= ( ( data & REG_BIT_SEND_TWL_OFF_DET ) != 0 ) ? REG_BIT_TWL_IRQ_OFF : 0x00; //off_req + + vreg_twl[ REG_TWL_INT_ADRS_IRQ ] |= ( ( data & REG_BIT_SEND_TWL_BATT_LOW ) != 0 ) ? REG_BIT_TWL_IRQ_BT_LOW : 0x00; //batt_low + vreg_twl[ REG_TWL_INT_ADRS_IRQ ] |= ( ( data & REG_BIT_SEND_TWL_BATT_EMPTY ) != 0 ) ? REG_BIT_TWL_IRQ_BT_EMPTY : 0x00; //batt_empty + + if(( data & REG_BIT_SEND_TWL_VOL_CLICK ) != 0 ) + { + vreg_twl[ REG_TWL_INT_ADRS_IRQ ] |= REG_BIT_TWL_IRQ_VOL_CHANGE; //vol_changed + } + } + break; + + case VREG_CX_FREE_DATA: + if( vreg_free_adrs < VREG_C_FREE_SIZE ) + { + pool.vreg_c_ext.vreg_c_free[ vreg_free_adrs ] = data; + vreg_free_adrs ++; + } + else + { + dbg_nop(); + } + break; + + case VREG_CX_FREE_ADRS: + vreg_free_adrs = data; + break; + + case VREG_C_LED_POW: + if( iic_burst_state == 0 ) + { + vreg_ctr[ VREG_C_LED_POW ] = data; + iic_burst_state ++; + } + else if( iic_burst_state < 5 ) + { + led_red_batt_empty.dats[ iic_burst_state -1 ] = data; + iic_burst_state ++; + } + break; + + case VREG_C_LED_WIFI: + case VREG_C_LED_CAM: + case VREG_C_LED_3D: + vreg_ctr[adrs] = (u8)( data & 0x0F ); + break; + + case VREG_C_LED_NOTIFY_DATA: + if( iic_burst_state < sizeof( uni_info_LED ) ) + { + if(( iic_burst_state == 1 ) && ( data == 0 )) // fade_time == 0 ֎~ + { + data = 1; + } + info_LED.bindata[ iic_burst_state ] = data; + iic_burst_state ++; + if( iic_burst_state > 4 ) // p^[1ł + { + info_led_pattern_updated = true; + } + } + break; + + case VREG_C_MCU_STATUS: +// vreg_twl[ REG_TWL_INT_ADRS_MODE ] = (u8)( ( data >> 6 ) & 0x03 ); Rł悢B̑胊ZbgŃNA + vreg_ctr[ VREG_C_MCU_STATUS ] &= data; // bitNA͂邪Zbg͂ȂB + // ̕twlWX^~[͓ǂݏoꎞɍ + break; + + case VREG_C_VCOM_T: + case VREG_C_VCOM_B: + renge_task_immed_add( tski_vcom_set ); + vreg_ctr[adrs] = data; + break; + + case VREG_C_DBG03: + if( ( vreg_ctr[VREG_C_DBG01] == 'j' ) + && ( vreg_ctr[VREG_C_DBG02] == 'h' ) + && ( data == 'l' ) ) + { + renge_task_immed_add( tski_firm_update ); + IICAMK = 1; + } + vreg_ctr[ VREG_C_DBG03 ] = data; + break; + + /// 񓯊œĂ邽߂ł͏ȂB + // \񂷂邾stopŏ + case VREG_C_RTC_SEC: + case VREG_C_RTC_MIN: + set_rtc( adrs - VREG_C_RTC_SEC, data & 0x7F ); + break; + + case VREG_C_RTC_DAY: + case VREG_C_RTC_HOUR: + set_rtc( adrs - VREG_C_RTC_SEC, data & 0x3F ); + break; + + case VREG_C_RTC_YOBI: + set_rtc( adrs - VREG_C_RTC_SEC, data & 0x07 ); + break; + + case VREG_C_RTC_MONTH: + set_rtc( adrs - VREG_C_RTC_SEC, data & 0x1F ); + break; + + case VREG_C_RTC_YEAR: + set_rtc( adrs - VREG_C_RTC_SEC, data ); + break; + + case VREG_C_RTC_COMP: + WDT_Restart(); + while(1) + { + RWAIT = 1; + while( !RWST ){} + if( SEC != 0 ) + { + break; + } + RWAIT = 0; + } + SUBCUD = data; + RWAIT = 0; + vreg_ctr[ VREG_C_RTC_COMP ] = data; + break; + + case VREG_C_RTC_ALARM_MIN: + rtc_alarm_dirty = true; + vreg_ctr[ VREG_C_RTC_ALARM_MIN ] = (u8)( data & 0x7F ); + break; + + case VREG_C_RTC_ALARM_HOUR: + rtc_alarm_dirty = true; + vreg_ctr[ VREG_C_RTC_ALARM_HOUR ] = (u8)( data & 0x3F ); + break; + + // ł悢 + case VREG_C_RTC_ALARM_DAY: + vreg_ctr[ VREG_C_RTC_ALARM_DAY ] = (u8)( data & 0x3F ); + break; + + case VREG_C_RTC_ALARM_MONTH: + vreg_ctr[ VREG_C_RTC_ALARM_MONTH ] = (u8)( data & 0x1F ); + break; + + case VREG_C_ACC_CONFIG: + renge_task_immed_add( tski_acc_setup ); + vreg_ctr[ VREG_C_ACC_CONFIG ] = data; + break; + + case VREG_C_ACC_R_ADRS: + renge_task_immed_add( tski_acc_read ); + vreg_ctr[ VREG_C_ACC_R_ADRS ] = data; + break; + + case VREG_C_ACC_W_BUF: + renge_task_immed_add( tski_acc_write ); + vreg_ctr[ VREG_C_ACC_W_BUF ] = data; + break; + + case VREG_C_ACC_HOSU_SETTING: + if( ( data & 0x01 ) != 0 ) + { + clear_hosu_hist(); // NA + } + break; + + case VREG_C_WIFI_CALIB: + if( data & REG_BIT_WIFI_CALIB_32K_HI_Z ) + { + RTC_32k_HI_Z(); + } + else{ + RTC_32k_on(); + } + if( data & REG_BIT_WIFI_CALIB_RSTS_AST ) + { + RESET1_ast; + // RESET2_ast; RESET1̂݁B + // FCRAM_RST_ast; + } + else{ +/* + SoC ~܂Ă܂̂łɗȂ + RESET1_neg; + RESET2_neg; + FCRAM_RST_neg; +*/ + } + vreg_ctr[ VREG_C_WIFI_CALIB ] = data; + break; + + case VREG_C_COMMAND3: + switch ( data ) + { +#ifdef _ENABLE_COMMAND3_ + case 'r': + // 荞݃[`FSLCuĂԂ̂͋֎~ + // }CRċNB@WX^ނB + renge_task_immed_add( tski_mcu_reset ); + break; + + case 'w': + // WDTōċNieXgj +// mcu_wdt_reset; // ̃R}hgӖȂłI + while(1) + { + dbg_nop(); + } + break; +#endif //_ENABLE_COMMAND3_ + +#ifdef _ENABLE_HAL_ + case 'p': + reserve_pedo_increnent = 1; + // ő₷ɂ̓X^bNȂBŗ\̂݁Atask_miscŏ +// hosu_increment_if_necessary(); // A + break; +#endif //_ENABLE_HAL_ + + } +// vreg_ctr[ VREG_C_COMMAND3 ] = data; // KvȂ + break; + + case VREG_C_RBR_CONTROL: +// vreg_ctr[ VREG_C_RBR_CONTROL ] = data; // todo debug u[N|Cgu߁BAt[WX^ + break; + + + // read only ////////////////////////////////////////// + case VREG_C_MCU_VER_MAJOR: + case VREG_C_MCU_VER_MINOR: + case VREG_C_3D: // ɃtbV + case VREG_C_SND_VOL: // ɃtbV + case VREG_C_BT_TEMP: // ɃtbV + case VREG_C_BT_REMAIN: // ɃtbV + case VREG_C_BT_REMAIN_FINE: // ɃtbV + case VREG_C_BT_VOLTAGE: // ɃtbV + case VREG_C_STATUS_1: // KɃtbV + case VREG_C_STATUS: // KɃtbV + case VREG_C_IRQ0: // ̂‚łɊ荞݋NĂقȂ... + case VREG_C_IRQ1: + case VREG_C_IRQ2: + case VREG_C_IRQ3: + case VREG_C_IRQ4: + case VREG_C_LED_NOTIFY_FLAG: // tbV + case VREG_C_RTC_SEC_FINE_L: // tbV + case VREG_C_RTC_SEC_FINE_H: // tbV + // VREG_C_ACC_RESERVE, // NȂ + // VREG_C_ACC_HOSU_HIST = 0x4F, + case VREG_C_ACC_XH: // tbV + case VREG_C_ACC_XL: + case VREG_C_ACC_YH: + case VREG_C_ACC_YL: + case VREG_C_ACC_ZH: + case VREG_C_ACC_ZL: +// dbg_nop(); + // return( ERROR ) + break; + + case VREG_C_ACC_HOSU_L: // ĂǁAfobOpB(AhX0x4B == mcu sla(r)) +// dbg_nop(); + /* FALLTHROUGH */ + + // ʂɏ邾 ///////////////////////////////// + default: + /* + case VREG_C_IRQ_MASK0: + case VREG_C_IRQ_MASK1: + case VREG_C_IRQ_MASK2: + case VREG_C_IRQ_MASK3: + case VREG_C_IRQ_MASK4: + case VREG_C_DBG01: + case VREG_C_DBG02: + case VREG_C_LED_BRIGHT: + case VREG_C_ACC_HOSU_L: + case VREG_C_ACC_HOSU_M: + case VREG_C_ACC_HOSU_H: + case VREG_C_ACC_HOSU_HOUR_BOUNDARY: + case VREG_C_FREE_ADRS: + case VREG_C_RTC_ALARM_YEAR: + case VREG_C_ACC_W_ADRS: + case VREG_C_OFF_DELAY: + case VREG_C_HAL_OVW_CONT0: + case VREG_C_HAL_OVW_DAT0: + case VREG_C_HAL_OVW_CONT1: + case VREG_C_HAL_OVW_DAT1: + */ + if( adrs < VREG_C_ENDMARK_ ) + { + vreg_ctr[adrs] = data; + break; + } + else + { +// dbg_nop(); // `AhXɏ@Ȃ񂩃oOĂȂH + // return( ERROR ) + break; + } + } +// return( SUCCESS ) + return; +} + + + +/********************************************//** + I2CzWX^ǂ݂܂B + + ߂F xx f[^ + + ӁF̃AhX̏ŌĂ΂ ̂ŁA + [hꂽNAȂǂ͋C‚ + + ( vreg_ctr_after_read( u8 adrs ) ) + ***********************************************/ +u8 vreg_ctr_read( u8 adrs ) +{ + static u16 rsub_temp; + u8 temp; + + // RTC͓ǂݏorɌJオ̂邽 + if( ( VREG_C_RTC_SEC <= adrs ) && ( adrs <= VREG_C_RTC_YEAR ) ) + { + rtc_buf_refresh( ); + } + else if( adrs == VREG_C_MCU_STATUS ) + { + return( ( vreg_ctr[ VREG_C_MCU_STATUS ] & 0x03 ) | + ( ( vreg_twl[ REG_TWL_INT_ADRS_MODE ] & 0x03 ) << 6 ) | // sys_mode + ( ( vreg_twl[ REG_TWL_INT_ADRS_MODE ] & 0x80 ) >> 2 )); // vol32 + } + else if( adrs == VREG_C_RTC_SEC_FINE_L ) + { + rsub_temp = RSUBC; + return( (u8)( rsub_temp & 0xFF ) ); + } + else if( adrs == VREG_C_RTC_SEC_FINE_H ) + { + return( (u8)( ( rsub_temp >> 8 ) & 0xFF ) ); + } +/* + // debug I + else if( adrs == VREG_C_IRQ_MASK0 ) + { + return( vreg_ctr[ VREG_C_IRQ_MASK0 ] & 0x7F ); // `MSB0B1ȂʐMG[ + } +*/ + else if( adrs == VREG_C_ACC_HOSU_HIST ) + { + return( hosu_read() ); + } + else if( adrs == VREG_CX_FREE_DATA ) + { + if( vreg_free_adrs >= VREG_C_FREE_SIZE ) + { + temp = 0x00; + } + else + { + temp = pool.vreg_c_ext.vreg_c_free[ vreg_free_adrs ]; + // vreg_free_adrs ++; // ʼnZĂ܂ƃCfbNX + } + return( temp ); + } + else if( adrs == VREG_CX_INFO ) + { + return( extinfo_read() ); + } + else if( adrs == VREG_C_ACC_HOSU_SETTING ) + { + if( pedolog_overflow ) + { + return( 0x10 ); + } + else + { + return( 0 ); + } + } + + if( adrs >= VREG_C_ENDMARK_ ) + { + // VREG_C_INFO > VREG_C_ENDMARK_ Ȃ̂łƂ + return( 0xFF ); + } + return ( vreg_ctr[adrs] ); +} + + +/********************************************//** + I2CzWX^ǂ܂ĉ郌WX^ + ***********************************************/ +void vreg_ctr_after_read( u8 adrs, u8 data ) +{ + // 荞݃tO̓[hŃNA + switch( adrs ) + { + case VREG_C_IRQ0: + case VREG_C_IRQ1: + case VREG_C_IRQ2: + case VREG_C_IRQ3: + case VREG_C_IRQ4: + DI_wt_chk(); + vreg_ctr[ adrs ] ^= data; + EI(); + irq_readed = true; + break; + + case VREG_CX_FREE_DATA: + vreg_free_adrs ++; + break; + + default: + break; + } +} + + + + + + +/********************************************//** + 荞݂ + + - @}XNĂAtOuĂȂvA荞ݓȂB + + - @荞݂AǂݏoOɃ}XNƂ́ASoC̏L[ɂ + IRQǂރ^XNςł̂ŁAǂ݂ɂ͗B + + @ƁAÔ߁A}XNƂ͋ǂ݂Ă炤B + + łDĨ`FbNsvB + + @DIɗ̂I2C_twlARTC_A[B̒ŖڒEIĎgpȂ + ***********************************************/ +void set_irq( u8 irqreg, u8 irq_flg ) +{ + u8 tot; +//0 u8 ei_orig; // EItOۑ + + if(( system_status.pwr_state == ON ) || + ( system_status.pwr_state == SLEEP )) + { +/*0 łDIԂȂPAKvȂ + ei_orig = get_ei(); + + //. debug + if( !ei_orig ) + { + dbg_nop(); + } + + DI_wt_chk(); +*/ + DI(); + if( ( vreg_ctr[ irqreg + 8 ] & irq_flg ) == 0 ) + { + vreg_ctr[ irqreg ] |= irq_flg; + IRQ0_neg; // uグ... +//0 if( ei_orig ) + { + EI(); + } + tot = 0; + while( !IRQ0 && ( ++tot != 0 ) ){;} // O.D.Ȃ̂łƂ̂҂ IRQ_mcu LɔĂƍ(•s) + IRQ0_ast; // ƂBiGbW荞ׁ݂̈j + } +//0 if( ei_orig ) + { + EI(); + } + } +} + diff --git a/snake_branches/3.50_2dsll_lguide/vreg_ctr.h b/snake_branches/3.50_2dsll_lguide/vreg_ctr.h new file mode 100644 index 0000000..00c2140 --- /dev/null +++ b/snake_branches/3.50_2dsll_lguide/vreg_ctr.h @@ -0,0 +1,327 @@ +#ifndef __vreg_ctr__ +#define __vreg_ctr__ +/* + + + $Id$ +*/ + +#include "config.h" + +// VREG_C_MCU_STATUS +// bit[7.6] twl.sys_mode[1.0] ctr珑ȂAfcr_resetɓKɃZbg +// bit[5] V [7] ctr珑ȂAfcr_resetɓKɃZbg +#define REG_BIT_STATUS_WDT_RESET ( 1 << 1 ) +#define REG_BIT_RTC_BLACKOUT ( 1 << 0 ) + + +// VREG_C_STATUS, +#define REG_BIT_LCD_POW ( 1 << 7 ) +#define REG_BIT_BL_U ( 1 << 6 ) +#define REG_BIT_BL_L ( 1 << 5 ) +#define REG_BIT_BATT_CHARGE ( 1 << 4 ) +#define REG_BIT_POW_SUPPLY ( 1 << 3 ) +// gp ( 1 << 2 ) +#define REG_BIT_ST_SHELL_OPEN ( 1 << 1 ) +// gp ( 1 << 0 ) + + +// VREG_C_STATUS_X +// gp ( 1 << 6 ) +// gp ( 1 << 5 ) +#define REG_BIT_WIFI_TX ( 1 << 4 ) +// twl bl ̃~[[1: ( 1 << 3 ) +// 0]( 1 << 2 ) +#define REG_BIT_ACCERO_ERR ( 1 << 1 ) +#define REG_BIT_MGIC_ERR ( 1 << 0 ) + +#define REG_BIT_MASK_STATUS1_NTR_PM_REG 0x0C + + +// VREG_C_IRQ0 +#define REG_BIT_IRQ_WDT_RESET ( 1 << 7 ) +#define REG_BIT_SHELL_OPEN ( 1 << 6 ) +#define REG_BIT_SHELL_CLOSE ( 1 << 5 ) +#define REG_BIT_SW_WIFI_CLICK ( 1 << 4 ) +#define REG_BIT_SW_HOME_RELEASE ( 1 << 3 ) +#define REG_BIT_SW_HOME_CLICK ( 1 << 2 ) +#define REG_BIT_SW_POW_HOLD ( 1 << 1 ) +#define REG_BIT_SW_POW_CLICK ( 1 << 0 ) + +// VREG_C_IRQ1 +#define REG_BIT_BT_CHG_START ( 1 << 7 ) +#define REG_BIT_BT_CHG_STOP ( 1 << 6 ) +#define REG_BIT_BT_REMAIN ( 1 << 5 ) +#define REG_BIT_ACC_DAT_RDY ( 1 << 4 ) +#define REG_BIT_ACC_ACK ( 1 << 3 ) +#define REG_BIT_RTC_ALARM ( 1 << 2 ) +#define REG_BIT_BT_DC_CONNECT ( 1 << 1 ) +#define REG_BIT_BT_DC_DISC ( 1 << 0 ) + +// VREG_C_IRQ2 +#define REG_BIT_TWL_VER_READ ( 1 << 7 ) +//#define REG_BIT_TWL_SNDVOL_CHANGE ( 1 << 6 ) p~ +#define REG_BIT_SLIDE_VOL_ACROSS_TWL_BOUNDARY ( 1 << 6 ) +#define REG_BIT_TWL_BL_U_ON ( 1 << 5 ) +#define REG_BIT_TWL_BL_U_OFF ( 1 << 4 ) +#define REG_BIT_TWL_BL_L_ON ( 1 << 3 ) +#define REG_BIT_TWL_BL_L_OFF ( 1 << 2 ) +#define REG_BIT_TWL_OFF_REQ ( 1 << 1 ) +#define REG_BIT_TWL_RESET_REQ ( 1 << 0 ) + +// VREG_C_IRQ3 +#define REG_BIT_BL_U_ON ( 1 << 5 ) +#define REG_BIT_BL_U_OFF ( 1 << 4 ) +#define REG_BIT_BL_L_ON ( 1 << 3 ) +#define REG_BIT_BL_L_OFF ( 1 << 2 ) +#define REG_BIT_LCD_ON ( 1 << 1 ) +#define REG_BIT_LCD_OFF ( 1 << 0 ) + + +// ̂ǂ... +//#define REG_BIT_VR_3D_CHANGE ( 1 << 7 ) + + + +// VREG_C_COMMAND0 +//#define REG_BIT_CMD_LCD_ON ( 1 << 7 ) +//#define REG_BIT_CMD_LCD_OFF ( 1 << 6 ) +//#define REG_BIT_CMD_BL_ON ( 1 << 5 ) +//#define REG_BIT_CMD_BL_OFF ( 1 << 4 ) +#define REG_BIT_GOING_TO_SLEEP ( 1 << 4 ) +#define REG_BIT_FCRAM_RESET_REQ ( 1 << 3 ) +#define REG_BIT_RESET2_REQ ( 1 << 2 ) +#define REG_BIT_RESET1_REQ ( 1 << 1 ) +#define REG_BIT_OFF_REQ ( 1 << 0 ) + +// VREG_C_COMMAND1 (TWLɊ荞݂) +// gp ( 1 << 7 ) +// gp ( 1 << 6 ) +#define REG_BIT_SEND_TWL_VOL_CLICK ( 1 << 5 ) +#define REG_BIT_SEND_TWL_BATT_EMPTY ( 1 << 4 ) +#define REG_BIT_SEND_TWL_BATT_LOW ( 1 << 3 ) +#define REG_BIT_SEND_TWL_OFF_DET ( 1 << 2 ) +#define REG_BIT_SEND_TWL_RESET_DET ( 1 << 1 ) +#define REG_BIT_SEND_TWL_PWSW_DET ( 1 << 0 ) + +// VREG_C_COMMAND2 t֌W +#define REG_BIT_CMD_BL_U_ON ( 1 << 5 ) +#define REG_BIT_CMD_BL_U_OFF ( 1 << 4 ) +#define REG_BIT_CMD_BL_L_ON ( 1 << 3 ) +#define REG_BIT_CMD_BL_L_OFF ( 1 << 2 ) +#define REG_BIT_CMD_LCD_ON ( 1 << 1 ) +#define REG_BIT_CMD_LCD_OFF ( 1 << 0 ) +#define REG_BITS_CMD_BL ( REG_BIT_CMD_BL_U_ON | REG_BIT_CMD_BL_U_OFF | REG_BIT_CMD_BL_L_ON | REG_BIT_CMD_BL_L_OFF ) + + +// TWLɒʒmIRQWX^ +#define REG_BIT_TWL_IRQ_PWSW_DET 0x08 +#define REG_BIT_TWL_IRQ_RESET 0x01 +#define REG_BIT_TWL_IRQ_OFF 0x02 +#define REG_BIT_TWL_IRQ_BT_LOW 0x20 +#define REG_BIT_TWL_IRQ_BT_EMPTY 0x10 +#define REG_BIT_TWL_IRQ_VOL_CHANGE 0x40 + + +// CODECPMIC NTR ̑㗝WX^ +#define REG_BIT_TWL_REQ_OFF ( 1 << 6 ) +#define REG_BIT_TWL_REQ_BL_U ( 1 << 3 ) +#define REG_BIT_TWL_REQ_BL_L ( 1 << 2 ) +#define REG_BIT_TWL_REQ_RESET ( 1 << 0 ) + + +// VREG_C_LED_NOTIFY_FLAG +#define REG_BIT_IN_LOOP ( 1 << 0 ) + +// RBR control (0x57) +#define REG_BIT_FLIGHT ( 1 << 1 ) +#define REG_BIT_RESET_n ( 1 << 0 ) + + +// HAL bitfields 0 +#define REG_BIT_HAL0_PM_EXTDC_n ( 1 << 7 ) +#define REG_BIT_HAL0_BT_IN_CHG_n ( 1 << 6 ) +//#define REG_BIT_HAL0_PM_IRQ_n // gȂ +#define REG_BIT_HAL0_RSV_5 ( 1 << 5 ) +#define REG_BIT_HAL0_WL_TX ( 1 << 4 ) +#define REG_BIT_HAL0_SHELL_OPEN ( 1 << 3 ) // statusɂ܂ +#define REG_BIT_HAL0_SW_WIFI_n ( 1 << 2 ) +#define REG_BIT_HAL0_SW_HOME_n ( 1 << 1 ) +#define REG_BIT_HAL0_SW_POW_n ( 1 << 0 ) + + +// HAL bitfields 1 +#define REG_BIT_HAL1_DIPSW_1 ( 1 << 3 ) +#define REG_BIT_HAL1_DIPSW_0 ( 1 << 2 ) +#define REG_BIT_HAL1_HW_DET_1 ( 1 << 1 ) +#define REG_BIT_HAL1_HW_DET_0 ( 1 << 0 ) + + +// VREG_C_WIFI_CALIB +#define REG_BIT_WIFI_CALIB_32K_HI_Z ( 1 << 1 ) +#define REG_BIT_WIFI_CALIB_RSTS_AST ( 1 << 0 ) + + +/* + ev +#define REG_BIT_ ( 1 << 7 ) +#define REG_BIT_ ( 1 << 6 ) +#define REG_BIT_ ( 1 << 5 ) +#define REG_BIT_ ( 1 << 4 ) +#define REG_BIT_ ( 1 << 3 ) +#define REG_BIT_ ( 1 << 2 ) +#define REG_BIT_ ( 1 << 1 ) +#define REG_BIT_ ( 1 << 0 ) +*/ + + + +/*============================================================================*/ +extern u8 vreg_ctr[]; + +/*============================================================================*/ +enum VREG_C_ADRS +{ // `AhX֏񂾍ۂ͕̓s + VREG_C_MCU_VER_MAJOR = 0x00, + VREG_C_MCU_VER_MINOR, + VREG_C_MCU_STATUS, + + VREG_C_VCOM_T = 0x03, + VREG_C_VCOM_B, + + VREG_C_DBG01 = 0x05, + VREG_C_DBG02, + VREG_C_DBG03, + + VREG_C_3D = 0x08, + VREG_C_SND_VOL, + VREG_C_BT_TEMP, + VREG_C_BT_REMAIN, + VREG_C_BT_REMAIN_FINE, + VREG_C_BT_VOLTAGE, + + VREG_C_STATUS_1 = 0x0E, + VREG_C_STATUS = 0x0F, + + VREG_C_IRQ0 = 0x10, + VREG_C_IRQ1, + VREG_C_IRQ2, + VREG_C_IRQ3, + VREG_C_IRQ4, + + VREG_C_IRQ_MASK0 = 0x18, + VREG_C_IRQ_MASK1, + VREG_C_IRQ_MASK2, + VREG_C_IRQ_MASK3, + VREG_C_IRQ_MASK4, + + VREG_C_COMMAND0 = 0x20, + VREG_C_COMMAND1, + VREG_C_COMMAND2, + VREG_C_COMMAND3, // 'r' Ń}CRZbgA 'w' WDTZbg + + VREG_C_OFF_DELAY = 0x24, +// VREG_C_VOL_DIGITAL = 0x25, // todo +// VREG_C_VOL_OPTION, + VREG_C_VOL_ADC_RAW = 0x27, + + VREG_C_LED_BRIGHT = 0x28, + VREG_C_LED_POW, + VREG_C_LED_WIFI, + VREG_C_LED_CAM, + VREG_C_LED_3D, + VREG_C_LED_NOTIFY_DATA, + VREG_C_LED_NOTIFY_FLAG, + + VREG_C_RBR_CONTROL = 0x2F, // p~ + + VREG_C_RTC_SEC = 0x30, + VREG_C_RTC_MIN, + VREG_C_RTC_HOUR, + VREG_C_RTC_YOBI, + VREG_C_RTC_DAY, + VREG_C_RTC_MONTH, + VREG_C_RTC_YEAR, + + VREG_C_RTC_COMP, + + VREG_C_RTC_ALARM_MIN = 0x38, + VREG_C_RTC_ALARM_HOUR, + VREG_C_RTC_ALARM_DAY, + VREG_C_RTC_ALARM_MONTH, + VREG_C_RTC_ALARM_YEAR, + + VREG_C_RTC_SEC_FINE_L, + VREG_C_RTC_SEC_FINE_H, + + VREG_C_WIFI_CALIB = 0x3F, + + VREG_C_ACC_CONFIG = 0x40, + VREG_C_ACC_R_ADRS, + VREG_C_ACC_RESERVE, + VREG_C_ACC_W_ADRS, + VREG_C_ACC_W_BUF, // r,w p + + VREG_C_ACC_XL = 0x45, + VREG_C_ACC_XH, + VREG_C_ACC_YL, + VREG_C_ACC_YH, + VREG_C_ACC_ZL, + VREG_C_ACC_ZH, + + VREG_C_ACC_HOSU_L = 0x4B, + VREG_C_ACC_HOSU_M, + VREG_C_ACC_HOSU_H, + VREG_C_ACC_HOSU_SETTING, + VREG_C_ACC_HOSU_HIST = 0x4F, + + VREG_C_ACC_HOSU_HOUR_BOUNDARY = 0x50, + VREG_C_ACC_HOSU_HOUR_BOUNDARY_SEC, + + VREG_C_HAL_OVW_CONT0 = 0x52, + VREG_C_HAL_OVW_DAT0, + VREG_C_HAL_OVW_CONT1, // reserved + VREG_C_HAL_OVW_DAT1, // reserved + + VREG_C_HAL_OVW_BT_FUEL = 0x56, + VREG_C_HAL_OVW_BT_VOLTAGE, + + VREG_C_VOL_CAL_MIN = 0x58, + VREG_C_VOL_CAL_MAX, + + VREG_C_HAL_OVW_TEMPERATURE = 0x5A, + + VREG_C_ENDMARK_ +}; + +// Ԃ͔ɂāAmۂȂ߂ ʂ define Ă +#define VREG_CX_INFO 0x7F +#define VREG_CX_FREE_ADRS 0x60 +#define VREG_CX_FREE_DATA 0x61 +// VREG_C_AMBIENT_BRIGHTNESS = 0xXX, + + + + +/*============================================================================*/ +void vreg_ctr_init( ); +void vreg_ctr_reset( ); +void vreg_ctr_write( u8 adrs, u8 data ); +u8 vreg_ctr_read( u8 phy_adrs ); +void vreg_ctr_after_read( u8 adrs, u8 data ); +void set_irq( u8 irqreg, u8 irq_flg ); + + +#define is_wifi_calib_resets_ast ( vreg_ctr[ VREG_C_WIFI_CALIB ] & REG_BIT_WIFI_CALIB_RSTS_AST ) +#define vreg_stop_acc ( vreg_ctr[ VREG_C_ACC_CONFIG ] &= ~( VREG_BITMASK_ACC_CONF_HOSU | VREG_BITMASK_ACC_CONF_ACQ ) ) +#define vreg_set_acc_error ( vreg_ctr[ VREG_C_STATUS_1 ] |= REG_BIT_ACCERO_ERR ) +#define is_acc_on ( vreg_ctr[VREG_C_ACC_CONFIG] & VREG_BITMASK_ACC_CONF_ACQ ) +#define is_pedo_on ( vreg_ctr[VREG_C_ACC_CONFIG] & VREG_BITMASK_ACC_CONF_HOSU ) +#define is_mgic_error ( vreg_ctr[ VREG_C_STATUS_1 ] & REG_BIT_MGIC_ERR ) +#define vreg_set_mgic_error ( vreg_ctr[ VREG_C_STATUS_1 ] |= REG_BIT_MGIC_ERR ) +#define vreg_clear_mgic_error ( vreg_ctr[ VREG_C_STATUS_1 ] &= ~(REG_BIT_MGIC_ERR) ) +#define is_bt_charging ( vreg_ctr[VREG_C_STATUS] & REG_BIT_BATT_CHARGE ) +#define is_shell_open ( vreg_ctr[VREG_C_STATUS] & REG_BIT_ST_SHELL_OPEN ) + + +#endif diff --git a/snake_branches/3.50_2dsll_lguide/vreg_twl.c b/snake_branches/3.50_2dsll_lguide/vreg_twl.c new file mode 100644 index 0000000..1cb1225 --- /dev/null +++ b/snake_branches/3.50_2dsll_lguide/vreg_twl.c @@ -0,0 +1,169 @@ +/* ======================================================== + TWL݊I2CWX^ + + $Id$ + ======================================================== */ +#include "incs.h" +#include "jhl_defs.h" +#include "led.h" + +#include "vreg_twl.h" +//#include "vreg_ctr.h" +#include "adc.h" + + +// ======================================================== +#define TWL_REG_VER_INFO 0x35 +#define NON_EXIST_REG 0xFF + +// ======================================================== +u8 vreg_twl[_REG_TWL_INT_ADRS_ENDMARK]; + + +extern bit twl_ver_read; +extern bit cam_led_update; +extern bit vol_changed_by_twl; + + +// ======================================================== +extern void tsk_led_cam(); + + + + +/********************************************//** + zWX^̏ + ***********************************************/ +void vreg_twl_init( ) +{ + vreg_twl[ REG_TWL_INT_ADRS_MODE ] = 0x03; + vreg_twl[ REG_TWL_INT_ADRS_IRQ ] = 0; + vreg_twl[ REG_TWL_INT_ADRS_CAM ] = 0; + vreg_twl[ REG_TWL_INT_ADRS_TEMP0 ] = 0; +} + + + +/********************************************//** + I2CzWX^ɏEANV + + @ adrs ͓AhX + + @݂ȂAhXɃANZXꍇA܂B + ***********************************************/ +void vreg_twl_write( u8 adrs, u8 data ) +{ + switch ( adrs ) + { + case ( REG_TWL_INT_ADRS_VOL ): + { + vol_changed_by_twl = true; + vreg_twl[ REG_TWL_INT_ADRS_VOL ] = data; + //renge_task_immed_add( tski_vol_update ); + vol_polling = 3; + break; + } + + case ( REG_TWL_INT_ADRS_MODE ): + vreg_twl[ REG_TWL_INT_ADRS_MODE ] = ( data & 0x83 ); // [8]vol32 [1:0]nand + break; + + case ( REG_TWL_INT_ADRS_CAM ): + vreg_twl[ REG_TWL_INT_ADRS_CAM ] = ( data & 0x03 ); + if( ( data & 0x03 ) == TWL_CAMLED_BLINK ) + { + cam_led_update = true; // łȂƈꔭɕs邽 + } + tsk_led_cam(); // uN̓sŋN + break; + + case ( REG_TWL_INT_ADRS_TEMP0 ): + vreg_twl[ REG_TWL_INT_ADRS_TEMP0 ] = data; + break; + + case ( REG_TWL_INT_ADRS_COMMAND ): +/* + if( data <= 2 ){ + if( ( data & REG_BIT_TWL_OFF_REQ ) != 0 ) + { + set_irq( VREG_C_IRQ2, REG_BIT_TWL_OFF_REQ ); // OFFĂ炵B + break; + } + else if( ( data & REG_BIT_TWL_RESET_REQ ) != 0 ) + { + set_irq( VREG_C_IRQ2, REG_BIT_TWL_RESET_REQ ); //ZbgȂB̂́ASPI痈܂B + break; + } + } +*/ + if( data == REG_BIT_TWL_RESET_REQ ) + { + set_irq( VREG_C_IRQ2, REG_BIT_TWL_RESET_REQ ); //ZbgȂB̂́ASPI痈܂B + break; + } + } + return; +} + + + +/********************************************//** + I2CzWX^ǂ݂܂B + + @ adrs O猩Ƃ́AAhX + + @߂ xx f[^ + + @݂ȂAhXɃANZXꍇA߂l0x5A + ***********************************************/ +u8 vreg_twl_read( u8 phy_adrs ) +{ + u8 temp; + + switch( phy_adrs ){ + // 10%ȉŐԂɂȂ + case( REG_TWL_INT_ADRS_POWER_INFO ): + // x̃Zbg get_batt_left()ixĖłj + return( vreg_twl[ REG_TWL_INT_ADRS_POWER_INFO ] | ( !PM_EXTDC_n ? 0x80: 0x00 ) ); // A_v^bit(A_v^L) + + case( REG_TWL_INT_ADRS_IRQ ): + temp = vreg_twl[ REG_TWL_INT_ADRS_IRQ ]; + vreg_twl[ REG_TWL_INT_ADRS_IRQ ]= 0; + return( temp ); + + case( REG_TWL_INT_ADRS_VER_INFO ): +// set_irq( VREG_C_IRQ2, REG_BIT_TWL_VER_READ ); // xIɖȂ̂ + twl_ver_read = true; + return( TWL_REG_VER_INFO ); + + case( REG_TWL_ADRS_NON_EXIST ): + return( 0x00 ); + + default: + return( vreg_twl[ phy_adrs ] ); + } +} + + + +/********************************************//** + O猩钎HAhXA̘AAhXɓǂݑւ + + 0xFF݂͑ȂAhXB + ***********************************************/ +u8 adrs_table_twl_ext2int( u8 img ) +{ + switch( img ){ + case( REG_TWL_ADRS_IRQ ): return( REG_TWL_INT_ADRS_IRQ ); + case( REG_TWL_ADRS_COMMAND ): return( REG_TWL_INT_ADRS_COMMAND ); + case( REG_TWL_ADRS_POWER_INFO ): return( REG_TWL_INT_ADRS_POWER_INFO ); + case( REG_TWL_ADRS_VOL ): return( REG_TWL_INT_ADRS_VOL ); + case( REG_TWL_ADRS_CAM ): return( REG_TWL_INT_ADRS_CAM ); + case( REG_TWL_ADRS_TEMP0 ): return( REG_TWL_INT_ADRS_TEMP0 ); + case( REG_TWL_ADRS_VER_INFO ): return( REG_TWL_INT_ADRS_VER_INFO ); + case( REG_TWL_ADRS_MODE ): return( REG_TWL_INT_ADRS_MODE ); + default: return( REG_TWL_ADRS_NON_EXIST ); +// 0ǂ߂΂悢AȂėǂ +// case( REG_TWL_ADRS_WIFI ): return( REG_TWL_INT_ADRS_WIFI ); + } +} diff --git a/snake_branches/3.50_2dsll_lguide/vreg_twl.h b/snake_branches/3.50_2dsll_lguide/vreg_twl.h new file mode 100644 index 0000000..63cdd94 --- /dev/null +++ b/snake_branches/3.50_2dsll_lguide/vreg_twl.h @@ -0,0 +1,127 @@ +#ifndef __vreg_twl__ +#define __vreg_twl__ +/* ========================================================================= */ +extern u8 vreg_twl[]; + + +/* + * O猩Ƃ̃}CRWX^AhXB + * gȂǂlĔєтɂĂB + */ +/* + * 荞ݗvtO + * MSB:OdL/Ȃω ij + * 6:VolL[iύXɌ炸BMAXɁ{łBj + * 5:drd o + * 4: + * 3:dXCb` ꌟo + * 2:iݒj + * 1:dXCb` OFF ԉꌟo + * LSB: Zbg + */ +enum REG_TWL_ADRS +{ // `AhX֏񂾍ۂ͖ + REG_TWL_ADRS_VER_INFO = 0x00, + REG_TWL_ADRS_PMIC_INFO, + REG_TWL_ADRS_BATT_INFO, + REG_TWL_ADRS_IRQ = 0x10, + REG_TWL_ADRS_COMMAND, + REG_TWL_ADRS_MODE, + REG_TWL_ADRS_POWER_INFO = 0x20, + REG_TWL_ADRS_POWER_SAVE, + REG_TWL_ADRS_WIFI = 0x30, + REG_TWL_ADRS_CAM, + REG_TWL_ADRS_VOL = 0x40, + REG_TWL_ADRS_BL, + REG_TWL_ADRS_CODEC_MIC_GAIN = 0x50, + REG_TWL_ADRS_ADC_CALIB = 0x60, + REG_TWL_ADRS_ADC_CALIB_STATUS, + REG_TWL_ADRS_ADC_CALIB_VALUE, + REG_TWL_ADRS_POWER_LED, + REG_TWL_ADRS_TEMP0 = 0x70, + REG_TWL_ADRS_TEMP1, + REG_TWL_ADRS_TEMP2, + REG_TWL_ADRS_TEMP3, + REG_TWL_ADRS_TEMP4, + REG_TWL_ADRS_TEMP5, + REG_TWL_ADRS_TEMP6, + REG_TWL_ADRS_TEMP7, + REG_TWL_ADRS_TIME_PWSW_DELAY = 0x80, + REG_TWL_ADRS_TIME_PWSW_THRESHOLD +}; + +#define REG_TWL_ADRS_NON_EXIST 0xFF + +/* + * }CRł̃WX^̎ + * ‚߂Ă + */ +enum REG_TWL_ADRS_INT +{ + REG_TWL_INT_ADRS_VER_INFO = 0x00, +// REG_TWL_INT_ADRS_PMIC_INFO, +// REG_TWL_INT_ADRS_BATT_INFO, + REG_TWL_INT_ADRS_IRQ, // 0x10, + REG_TWL_INT_ADRS_COMMAND, + REG_TWL_INT_ADRS_MODE, + REG_TWL_INT_ADRS_POWER_INFO, // 0x20, +// REG_TWL_INT_ADRS_POWER_SAVE, +// REG_TWL_INT_ADRS_WIFI, // 0x30, + REG_TWL_INT_ADRS_CAM, + REG_TWL_INT_ADRS_VOL, // 0x40, +// REG_TWL_INT_ADRS_BL, +// REG_TWL_INT_ADRS_CODEC_MIC_GAIN, // 0x50, +// REG_TWL_INT_ADRS_CODEC_MIC_GAIN_RELOAD, +// REG_TWL_INT_ADRS_ADC_CALIB, // 0x60, +// REG_TWL_INT_ADRS_ADC_CALIB_STATUS, +// REG_TWL_INT_ADRS_ADC_CALIB_VALUE, +// REG_TWL_INT_ADRS_POWER_LED, + REG_TWL_INT_ADRS_TEMP0, // 0x70 - 0x77 + REG_TWL_INT_ADRS_TEMP1, + REG_TWL_INT_ADRS_TEMP2, + REG_TWL_INT_ADRS_TEMP3, + REG_TWL_INT_ADRS_TEMP4, + REG_TWL_INT_ADRS_TEMP5, + REG_TWL_INT_ADRS_TEMP6, + REG_TWL_INT_ADRS_TEMP7, +// REG_TWL_INT_ADRS_TIME_PWSW_DELAY, +// REG_TWL_INT_ADRS_TIME_PWSW_THRESHOLD + _REG_TWL_INT_ADRS_ENDMARK, +}; + + + +/* ========================================================================= */ +#define is_TWL ( vreg_twl[ REG_TWL_INT_ADRS_MODE ] & 0x01 ) +#define with_NAND ( vreg_twl[ REG_TWL_INT_ADRS_MODE ] & 0x02 ) +#define volSteps32 ( vreg_twl[ REG_TWL_INT_ADRS_MODE ] & 0x80 ) + +#define reg_wifi_led ( vreg_twl[ REG_TWL_INT_ADRS_WIFI ] & 0x01 ) +#define reg_wifi_led_blink ( vreg_twl[ REG_TWL_INT_ADRS_WIFI ] & 0x02 ) + +#define REG_TWL_ADRS_MODE__VOL32 ( 1 << 7 ) + +typedef enum CAM_LED_TWL_MODE +{ + TWL_CAMLED_OFF, + TWL_CAMLED_ON, + TWL_CAMLED_BLINK, + TWL_CAMLED_DEF_ON +}twl_camLed_mode; + + +/* ========================================================================= */ +void vreg_twl_init( ); +void vreg_twl_write( u8 adrs, u8 data ); +u8 adrs_table_twl_ext2int( u8 img ); +u8 vreg_twl_read( u8 phy_adrs ); + + +// ǂ񂾂NAȂǂ̏ +#define vreg_twl_after_read( reg_adrs ); \ + if( reg_adrs == REG_TWL_INT_ADRS_IRQ ) \ + { \ + vreg_twl[ REG_TWL_INT_ADRS_IRQ ]= 0;\ + } + +#endif diff --git a/snake_branches/3.50_2dsll_lguide/yav_mcu_bsr.plg b/snake_branches/3.50_2dsll_lguide/yav_mcu_bsr.plg new file mode 100644 index 0000000..8268b97 --- /dev/null +++ b/snake_branches/3.50_2dsll_lguide/yav_mcu_bsr.plg @@ -0,0 +1,209 @@ +C:\Windows\system32\cmd.exe /c c:\cygwin\bin\touch magic.c +"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\bin\cc78k0r.exe" -c9F0104 -y"C:\Program Files (x86)\NEC Electronics Tools\DEV" -_msgoff -irenge -i"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r" -ms -rd2s2 -qvjl2w -sainter_asm -zpb -no loader.c +loader.c(160) : CC78K0R warning W0401: Conversion may lose significant digits +loader.c(161) : CC78K0R warning W0401: Conversion may lose significant digits +Compilation complete, 0 error(s) and 2 warning(s) found. +"C:\Program Files (x86)\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"C:\Program Files (x86)\NEC Electronics Tools\DEV" -_msgoff -pinter_asm -ks -kx inter_asm\loader.asm +Assembly complete, 0 error(s) and 0 warning(s) found. +"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\bin\cc78k0r.exe" -c9F0104 -y"C:\Program Files (x86)\NEC Electronics Tools\DEV" -_msgoff -irenge -i"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r" -ms -rd2s2 -qvjl2w -sainter_asm -zpb -no pm.c +pm.c(549) : CC78K0R warning W0401: Conversion may lose significant digits +pm.c(561) : CC78K0R warning W0401: Conversion may lose significant digits +pm.c(885) : CC78K0R warning W0401: Conversion may lose significant digits +pm.c(889) : CC78K0R warning W0401: Conversion may lose significant digits +pm.c(918) : CC78K0R warning W0401: Conversion may lose significant digits +pm.c(932) : CC78K0R warning W0401: Conversion may lose significant digits +pm.c(1018) : CC78K0R warning W0401: Conversion may lose significant digits +pm.c(1027) : CC78K0R warning W0401: Conversion may lose significant digits +pm.c(1100) : CC78K0R warning W0401: Conversion may lose significant digits +pm.c(1246) : CC78K0R warning W0401: Conversion may lose significant digits +pm.c(1248) : CC78K0R warning W0401: Conversion may lose significant digits +pm.c(1552) : CC78K0R warning W0401: Conversion may lose significant digits +Compilation complete, 0 error(s) and 12 warning(s) found. +"C:\Program Files (x86)\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"C:\Program Files (x86)\NEC Electronics Tools\DEV" -_msgoff -pinter_asm -ks -kx inter_asm\pm.asm +Assembly complete, 0 error(s) and 0 warning(s) found. +"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\bin\cc78k0r.exe" -c9F0104 -y"C:\Program Files (x86)\NEC Electronics Tools\DEV" -_msgoff -irenge -i"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r" -ms -rd2s2 -qvjl2w -sainter_asm -zpb -no i2c_ctr.c +Compilation complete, 0 error(s) and 0 warning(s) found. +"C:\Program Files (x86)\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"C:\Program Files (x86)\NEC Electronics Tools\DEV" -_msgoff -pinter_asm -ks -kx inter_asm\i2c_ctr.asm +Assembly complete, 0 error(s) and 0 warning(s) found. +"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\bin\cc78k0r.exe" -c9F0104 -y"C:\Program Files (x86)\NEC Electronics Tools\DEV" -_msgoff -irenge -i"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r" -ms -rd2s2 -qvjl2w -sainter_asm -zpb -no main.c +Compilation complete, 0 error(s) and 0 warning(s) found. +"C:\Program Files (x86)\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"C:\Program Files (x86)\NEC Electronics Tools\DEV" -_msgoff -pinter_asm -ks -kx inter_asm\main.asm +Assembly complete, 0 error(s) and 0 warning(s) found. +"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\bin\cc78k0r.exe" -c9F0104 -y"C:\Program Files (x86)\NEC Electronics Tools\DEV" -_msgoff -irenge -i"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r" -ms -rd2s2 -qvjl2w -sainter_asm -zpb -no magic.c +Compilation complete, 0 error(s) and 0 warning(s) found. +"C:\Program Files (x86)\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"C:\Program Files (x86)\NEC Electronics Tools\DEV" -_msgoff -pinter_asm -ks -kx inter_asm\magic.asm +Assembly complete, 0 error(s) and 0 warning(s) found. +"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\bin\cc78k0r.exe" -c9F0104 -y"C:\Program Files (x86)\NEC Electronics Tools\DEV" -_msgoff -irenge -i"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r" -ms -rd2s2 -qvjl2w -sainter_asm -zpb -no WDT.c +Compilation complete, 0 error(s) and 0 warning(s) found. +"C:\Program Files (x86)\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"C:\Program Files (x86)\NEC Electronics Tools\DEV" -_msgoff -pinter_asm -ks -kx inter_asm\WDT.asm +Assembly complete, 0 error(s) and 0 warning(s) found. +"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\bin\cc78k0r.exe" -c9F0104 -y"C:\Program Files (x86)\NEC Electronics Tools\DEV" -_msgoff -irenge -i"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r" -ms -rd2s2 -qvjl2w -sainter_asm -zpb -no i2c_mcu.c +i2c_mcu.c(193) : CC78K0R warning W0401: Conversion may lose significant digits +Compilation complete, 0 error(s) and 1 warning(s) found. +"C:\Program Files (x86)\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"C:\Program Files (x86)\NEC Electronics Tools\DEV" -_msgoff -pinter_asm -ks -kx inter_asm\i2c_mcu.asm +Assembly complete, 0 error(s) and 0 warning(s) found. +"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\bin\cc78k0r.exe" -c9F0104 -y"C:\Program Files (x86)\NEC Electronics Tools\DEV" -_msgoff -irenge -i"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r" -ms -rd2s2 -qvjl2w -sainter_asm -zpb -no i2c_twl.c +Compilation complete, 0 error(s) and 0 warning(s) found. +"C:\Program Files (x86)\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"C:\Program Files (x86)\NEC Electronics Tools\DEV" -_msgoff -pinter_asm -ks -kx inter_asm\i2c_twl.asm +Assembly complete, 0 error(s) and 0 warning(s) found. +"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\bin\cc78k0r.exe" -c9F0104 -y"C:\Program Files (x86)\NEC Electronics Tools\DEV" -_msgoff -irenge -i"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r" -ms -rd2s2 -qvjl2w -sainter_asm -zpb -no led.c +led.c(90) : CC78K0R warning W0745: Expected function prototype +led.c(381) : CC78K0R warning W0401: Conversion may lose significant digits +Compilation complete, 0 error(s) and 2 warning(s) found. +"C:\Program Files (x86)\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"C:\Program Files (x86)\NEC Electronics Tools\DEV" -_msgoff -pinter_asm -ks -kx inter_asm\led.asm +Assembly complete, 0 error(s) and 0 warning(s) found. +"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\bin\cc78k0r.exe" -c9F0104 -y"C:\Program Files (x86)\NEC Electronics Tools\DEV" -_msgoff -irenge -i"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r" -ms -rd2s2 -qvjl2w -sainter_asm -zpb -no rtc.c +Compilation complete, 0 error(s) and 0 warning(s) found. +"C:\Program Files (x86)\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"C:\Program Files (x86)\NEC Electronics Tools\DEV" -_msgoff -pinter_asm -ks -kx inter_asm\rtc.asm +Assembly complete, 0 error(s) and 0 warning(s) found. +"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\bin\cc78k0r.exe" -c9F0104 -y"C:\Program Files (x86)\NEC Electronics Tools\DEV" -_msgoff -irenge -i"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r" -ms -rd2s2m -qvjl2w -sainter_asm -zpb -no vreg_ctr.c +vreg_ctr.c(159) : CC78K0R warning W0401: Conversion may lose significant digits +vreg_ctr.c(160) : CC78K0R warning W0401: Conversion may lose significant digits +vreg_ctr.c(162) : CC78K0R warning W0401: Conversion may lose significant digits +vreg_ctr.c(164) : CC78K0R warning W0401: Conversion may lose significant digits +vreg_ctr.c(165) : CC78K0R warning W0401: Conversion may lose significant digits +vreg_ctr.c(252) : CC78K0R warning W0401: Conversion may lose significant digits +vreg_ctr.c(252) : CC78K0R warning W0401: Conversion may lose significant digits +vreg_ctr.c(257) : CC78K0R warning W0401: Conversion may lose significant digits +vreg_ctr.c(257) : CC78K0R warning W0401: Conversion may lose significant digits +vreg_ctr.c(261) : CC78K0R warning W0401: Conversion may lose significant digits +vreg_ctr.c(261) : CC78K0R warning W0401: Conversion may lose significant digits +vreg_ctr.c(265) : CC78K0R warning W0401: Conversion may lose significant digits +vreg_ctr.c(265) : CC78K0R warning W0401: Conversion may lose significant digits +vreg_ctr.c(269) : CC78K0R warning W0401: Conversion may lose significant digits +Compilation complete, 0 error(s) and 14 warning(s) found. +"C:\Program Files (x86)\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"C:\Program Files (x86)\NEC Electronics Tools\DEV" -_msgoff -pinter_asm -ks -kx inter_asm\vreg_ctr.asm +Assembly complete, 0 error(s) and 0 warning(s) found. +"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\bin\cc78k0r.exe" -c9F0104 -y"C:\Program Files (x86)\NEC Electronics Tools\DEV" -_msgoff -irenge -i"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r" -ms -rd2s2m -qvjl2w -sainter_asm -zpb -no vreg_twl.c +vreg_twl.c(68) : CC78K0R warning W0401: Conversion may lose significant digits +vreg_twl.c(72) : CC78K0R warning W0401: Conversion may lose significant digits +Compilation complete, 0 error(s) and 2 warning(s) found. +"C:\Program Files (x86)\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"C:\Program Files (x86)\NEC Electronics Tools\DEV" -_msgoff -pinter_asm -ks -kx inter_asm\vreg_twl.asm +Assembly complete, 0 error(s) and 0 warning(s) found. +"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\bin\cc78k0r.exe" -c9F0104 -y"C:\Program Files (x86)\NEC Electronics Tools\DEV" -_msgoff -irenge -i"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r" -ms -rd2s2 -qvjl2w -sainter_asm -zpb -no adc.c +adc.c(104) : CC78K0R warning W0401: Conversion may lose significant digits +adc.c(190) : CC78K0R warning W0401: Conversion may lose significant digits +adc.c(241) : CC78K0R warning W0401: Conversion may lose significant digits +adc.c(308) : CC78K0R warning W0401: Conversion may lose significant digits +adc.c(434) : CC78K0R warning W0745: Expected function prototype +adc.c(463) : CC78K0R warning W0401: Conversion may lose significant digits +adc.c(468) : CC78K0R warning W0401: Conversion may lose significant digits +Compilation complete, 0 error(s) and 7 warning(s) found. +"C:\Program Files (x86)\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"C:\Program Files (x86)\NEC Electronics Tools\DEV" -_msgoff -pinter_asm -ks -kx inter_asm\adc.asm +Assembly complete, 0 error(s) and 0 warning(s) found. +"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\bin\cc78k0r.exe" -c9F0104 -y"C:\Program Files (x86)\NEC Electronics Tools\DEV" -_msgoff -irenge -i"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r" -ms -rd2s2m -qvjl2w -sainter_asm -zpb -no renge\renge.c +Compilation complete, 0 error(s) and 0 warning(s) found. +"C:\Program Files (x86)\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"C:\Program Files (x86)\NEC Electronics Tools\DEV" -_msgoff -pinter_asm -ks -kx inter_asm\renge.asm +Assembly complete, 0 error(s) and 0 warning(s) found. +"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\bin\cc78k0r.exe" -c9F0104 -y"C:\Program Files (x86)\NEC Electronics Tools\DEV" -_msgoff -irenge -i"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r" -ms -rd2s2 -qvjl2w -sainter_asm -zpb -no accero.c +accero.c(121) : CC78K0R warning W0745: Expected function prototype +Compilation complete, 0 error(s) and 1 warning(s) found. +"C:\Program Files (x86)\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"C:\Program Files (x86)\NEC Electronics Tools\DEV" -_msgoff -pinter_asm -ks -kx inter_asm\accero.asm +Assembly complete, 0 error(s) and 0 warning(s) found. +"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\bin\cc78k0r.exe" -c9F0104 -y"C:\Program Files (x86)\NEC Electronics Tools\DEV" -_msgoff -irenge -i"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r" -ms -rd2 -qvjl2w -sainter_asm -zpb -no self_flash.c +self_flash.c(289) : CC78K0R warning W0401: Conversion may lose significant digits +self_flash.c(290) : CC78K0R warning W0401: Conversion may lose significant digits +Compilation complete, 0 error(s) and 2 warning(s) found. +"C:\Program Files (x86)\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"C:\Program Files (x86)\NEC Electronics Tools\DEV" -_msgoff -pinter_asm -ks -kx inter_asm\self_flash.asm +Assembly complete, 0 error(s) and 0 warning(s) found. +"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\bin\cc78k0r.exe" -c9F0104 -y"C:\Program Files (x86)\NEC Electronics Tools\DEV" -_msgoff -irenge -i"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r" -ms -rd2s2 -qvjl2w -sainter_asm -zpb -no sw.c +Compilation complete, 0 error(s) and 0 warning(s) found. +"C:\Program Files (x86)\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"C:\Program Files (x86)\NEC Electronics Tools\DEV" -_msgoff -pinter_asm -ks -kx inter_asm\sw.asm +Assembly complete, 0 error(s) and 0 warning(s) found. +"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\bin\cc78k0r.exe" -c9F0104 -y"C:\Program Files (x86)\NEC Electronics Tools\DEV" -_msgoff -irenge -i"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r" -ms -rd2s2 -qvjl2w -sainter_asm -zpb -no task_debug.c +Compilation complete, 0 error(s) and 0 warning(s) found. +"C:\Program Files (x86)\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"C:\Program Files (x86)\NEC Electronics Tools\DEV" -_msgoff -pinter_asm -ks -kx inter_asm\task_debug.asm +Assembly complete, 0 error(s) and 0 warning(s) found. +"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\bin\cc78k0r.exe" -c9F0104 -y"C:\Program Files (x86)\NEC Electronics Tools\DEV" -_msgoff -irenge -i"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r" -ms -rd2s2 -qvjl2w -sainter_asm -zpb -no task_misc.c +task_misc.c(380) : CC78K0R warning W0401: Conversion may lose significant digits +task_misc.c(382) : CC78K0R warning W0401: Conversion may lose significant digits +task_misc.c(392) : CC78K0R warning W0401: Conversion may lose significant digits +Compilation complete, 0 error(s) and 3 warning(s) found. +"C:\Program Files (x86)\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"C:\Program Files (x86)\NEC Electronics Tools\DEV" -_msgoff -pinter_asm -ks -kx inter_asm\task_misc.asm +Assembly complete, 0 error(s) and 0 warning(s) found. +"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\bin\cc78k0r.exe" -c9F0104 -y"C:\Program Files (x86)\NEC Electronics Tools\DEV" -_msgoff -irenge -i"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r" -ms -rd2s2 -qvjl2w -sainter_asm -zpb -no task_sys.c +task_sys.c(247) : CC78K0R warning W0401: Conversion may lose significant digits +task_sys.c(309) : CC78K0R warning W0401: Conversion may lose significant digits +task_sys.c(589) : CC78K0R warning W0401: Conversion may lose significant digits +Compilation complete, 0 error(s) and 3 warning(s) found. +"C:\Program Files (x86)\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"C:\Program Files (x86)\NEC Electronics Tools\DEV" -_msgoff -pinter_asm -ks -kx inter_asm\task_sys.asm +Assembly complete, 0 error(s) and 0 warning(s) found. +"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\bin\cc78k0r.exe" -c9F0104 -y"C:\Program Files (x86)\NEC Electronics Tools\DEV" -_msgoff -irenge -i"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r" -ms -rd2s2 -qvjl2w -sainter_asm -zpb -no pedo_alg_thre_det2.c +pedo_alg_thre_det2.c(104) : CC78K0R warning W0745: Expected function prototype +pedo_alg_thre_det2.c(120) : CC78K0R warning W0401: Conversion may lose significant digits +Compilation complete, 0 error(s) and 2 warning(s) found. +"C:\Program Files (x86)\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"C:\Program Files (x86)\NEC Electronics Tools\DEV" -_msgoff -pinter_asm -ks -kx inter_asm\pedo_alg_thre_det2.asm +Assembly complete, 0 error(s) and 0 warning(s) found. +"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\bin\cc78k0r.exe" -c9F0104 -y"C:\Program Files (x86)\NEC Electronics Tools\DEV" -_msgoff -irenge -i"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r" -ms -rd2s2 -qvjl2w -sainter_asm -zpb -no ini_VECT.c +Compilation complete, 0 error(s) and 0 warning(s) found. +"C:\Program Files (x86)\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"C:\Program Files (x86)\NEC Electronics Tools\DEV" -_msgoff -pinter_asm -ks -kx inter_asm\ini_VECT.asm +Assembly complete, 0 error(s) and 0 warning(s) found. +"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\bin\cc78k0r.exe" -c9F0104 -y"C:\Program Files (x86)\NEC Electronics Tools\DEV" -_msgoff -irenge -i"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r" -ms -rd2s2 -qvjl2w -sainter_asm -zpb -no task_status.c +Compilation complete, 0 error(s) and 0 warning(s) found. +"C:\Program Files (x86)\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"C:\Program Files (x86)\NEC Electronics Tools\DEV" -_msgoff -pinter_asm -ks -kx inter_asm\task_status.asm +Assembly complete, 0 error(s) and 0 warning(s) found. +"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\bin\cc78k0r.exe" -c9F0104 -y"C:\Program Files (x86)\NEC Electronics Tools\DEV" -_msgoff -irenge -i"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r" -ms -rd2s2 -qvjl2w -sainter_asm -zpb -no led_cam.c +Compilation complete, 0 error(s) and 0 warning(s) found. +"C:\Program Files (x86)\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"C:\Program Files (x86)\NEC Electronics Tools\DEV" -_msgoff -pinter_asm -ks -kx inter_asm\led_cam.asm +Assembly complete, 0 error(s) and 0 warning(s) found. +"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\bin\cc78k0r.exe" -c9F0104 -y"C:\Program Files (x86)\NEC Electronics Tools\DEV" -_msgoff -irenge -i"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r" -ms -rd2s2 -qvjl2w -sainter_asm -zpb -no led_pow.c +led_pow.c(120) : CC78K0R warning W0401: Conversion may lose significant digits +led_pow.c(125) : CC78K0R warning W0401: Conversion may lose significant digits +led_pow.c(178) : CC78K0R warning W0401: Conversion may lose significant digits +led_pow.c(240) : CC78K0R warning W0401: Conversion may lose significant digits +led_pow.c(271) : CC78K0R warning W0401: Conversion may lose significant digits +Compilation complete, 0 error(s) and 5 warning(s) found. +"C:\Program Files (x86)\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"C:\Program Files (x86)\NEC Electronics Tools\DEV" -_msgoff -pinter_asm -ks -kx inter_asm\led_pow.asm +Assembly complete, 0 error(s) and 0 warning(s) found. +"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\bin\cc78k0r.exe" -c9F0104 -y"C:\Program Files (x86)\NEC Electronics Tools\DEV" -_msgoff -irenge -i"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r" -ms -rd2s2 -qvjl2w -sainter_asm -zpb -no hal.c +Compilation complete, 0 error(s) and 0 warning(s) found. +"C:\Program Files (x86)\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"C:\Program Files (x86)\NEC Electronics Tools\DEV" -_msgoff -pinter_asm -ks -kx inter_asm\hal.asm +Assembly complete, 0 error(s) and 0 warning(s) found. +"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\bin\cc78k0r.exe" -c9F0104 -y"C:\Program Files (x86)\NEC Electronics Tools\DEV" -_msgoff -irenge -i"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r" -ms -rd2s2 -qvjl2w -sainter_asm -zpb -no voltable.c +Compilation complete, 0 error(s) and 0 warning(s) found. +"C:\Program Files (x86)\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"C:\Program Files (x86)\NEC Electronics Tools\DEV" -_msgoff -pinter_asm -ks -kx inter_asm\voltable.asm +Assembly complete, 0 error(s) and 0 warning(s) found. +"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\bin\cc78k0r.exe" -c9F0104 -y"C:\Program Files (x86)\NEC Electronics Tools\DEV" -_msgoff -irenge -i"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r" -ms -rd2s2 -qvjl2w -sainter_asm -zpb -no pedo_lpf_coeff.c +Compilation complete, 0 error(s) and 0 warning(s) found. +"C:\Program Files (x86)\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"C:\Program Files (x86)\NEC Electronics Tools\DEV" -_msgoff -pinter_asm -ks -kx inter_asm\pedo_lpf_coeff.asm +Assembly complete, 0 error(s) and 0 warning(s) found. +"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\bin\cc78k0r.exe" -c9F0104 -y"C:\Program Files (x86)\NEC Electronics Tools\DEV" -_msgoff -irenge -i"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r" -ms -rd2s2 -qvjl2w -sainter_asm -zpb -no kanaria_c.c +Compilation complete, 0 error(s) and 0 warning(s) found. +"C:\Program Files (x86)\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"C:\Program Files (x86)\NEC Electronics Tools\DEV" -_msgoff -pinter_asm -ks -kx inter_asm\kanaria_c.asm +Assembly complete, 0 error(s) and 0 warning(s) found. +"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\bin\cc78k0r.exe" -c9F0104 -y"C:\Program Files (x86)\NEC Electronics Tools\DEV" -_msgoff -irenge -i"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r" -ms -rd2s2 -qvjl2w -sainter_asm -zpb -no util_funcs.c +Compilation complete, 0 error(s) and 0 warning(s) found. +"C:\Program Files (x86)\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"C:\Program Files (x86)\NEC Electronics Tools\DEV" -_msgoff -pinter_asm -ks -kx inter_asm\util_funcs.asm +Assembly complete, 0 error(s) and 0 warning(s) found. +"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\bin\cc78k0r.exe" -c9F0104 -y"C:\Program Files (x86)\NEC Electronics Tools\DEV" -_msgoff -irenge -i"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r" -ms -rd2s2 -qvjl2w -sainter_asm -zpb -no i2c_mcu-sub.c +Compilation complete, 0 error(s) and 0 warning(s) found. +"C:\Program Files (x86)\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"C:\Program Files (x86)\NEC Electronics Tools\DEV" -_msgoff -pinter_asm -ks -kx inter_asm\i2c_mcu-sub.asm +Assembly complete, 0 error(s) and 0 warning(s) found. +"C:\Program Files (x86)\NEC Electronics Tools\RA78K0R\W1.33\bin\lk78k0r.exe" -y"C:\Program Files (x86)\NEC Electronics Tools\DEV" -_msgoff -obsr.lmf "..\..\..\..\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\lib78k0r\s0rm.rel" -gi1B339499E033F240BFAAh -pbsr_k0r.map -nkd -gb7EFBFFh -b"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\lib78k0r\fsl.lib" -bcl0rdm.lib -bcl0rm.lib -bcl0rmf.lib -i"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\lib78k0r" -dbsr_mcu.dr -s -w2 loader.rel pm.rel i2c_ctr.rel main.rel magic.rel WDT.rel i2c_mcu.rel i2c_twl.rel led.rel rtc.rel vreg_ctr.rel vreg_twl.rel adc.rel renge.rel accero.rel self_flash.rel sw.rel task_debug.rel task_misc.rel task_sys.rel pedo_alg_thre_det2.rel ini_VECT.rel task_status.rel led_cam.rel led_pow.rel hal.rel batt_params.rel voltable.rel pedo_lpf_coeff.rel kanaria.rel kanaria_c.rel get_ei.rel util_funcs.rel i2c_mcu-sub.rel +RA78K0R warning W3420: File 'loader.rel' already has had error(s)/warning(s) by 'CC78K' + Read Device File Directory : C:\PROGRAM FILES (X86)\NEC ELECTRONICS TOOLS\DEV\ +RA78K0R warning W3420: File 'pm.rel' already has had error(s)/warning(s) by 'CC78K' +RA78K0R warning W3420: File 'i2c_mcu.rel' already has had error(s)/warning(s) by 'CC78K' +RA78K0R warning W3420: File 'led.rel' already has had error(s)/warning(s) by 'CC78K' +RA78K0R warning W3420: File 'vreg_ctr.rel' already has had error(s)/warning(s) by 'CC78K' +RA78K0R warning W3420: File 'vreg_twl.rel' already has had error(s)/warning(s) by 'CC78K' +RA78K0R warning W3420: File 'adc.rel' already has had error(s)/warning(s) by 'CC78K' +RA78K0R warning W3420: File 'accero.rel' already has had error(s)/warning(s) by 'CC78K' +RA78K0R warning W3420: File 'self_flash.rel' already has had error(s)/warning(s) by 'CC78K' +RA78K0R warning W3420: File 'task_misc.rel' already has had error(s)/warning(s) by 'CC78K' +RA78K0R warning W3420: File 'task_sys.rel' already has had error(s)/warning(s) by 'CC78K' +RA78K0R warning W3420: File 'pedo_alg_thre_det2.rel' already has had error(s)/warning(s) by 'CC78K' +RA78K0R warning W3420: File 'led_pow.rel' already has had error(s)/warning(s) by 'CC78K' +RA78K0R warning W3420: File 'batt_params.rel' already has had error(s)/warning(s) by 'CC78K' + +Link complete, 0 error(s) and 14 warning(s) found. +"C:\Program Files (x86)\NEC Electronics Tools\RA78K0R\W1.33\bin\oc78k0r.exe" -y"C:\Program Files (x86)\NEC Electronics Tools\DEV" -_msgoff -o.\bsr.hex -nu -ki bsr.lmf +Object Conversion Complete, 0 error(s) and 0 warning(s) found. +C:\Windows\system32\cmd.exe /c ruby nec_s_2_bsrbin2.rb bsr.hex +nec_s_2_bsrbin2.rb:2: warning: variable $KCODE is no longer effective; ignored +4 +intel-HEX to bsr bin converter + file converted! + + +Build Total error(s) : 0 Total warning(s) : 70 diff --git a/snake_branches/3.50_2dsll_lguide/yav_mcu_bsr.pri b/snake_branches/3.50_2dsll_lguide/yav_mcu_bsr.pri new file mode 100644 index 0000000..b018509 --- /dev/null +++ b/snake_branches/3.50_2dsll_lguide/yav_mcu_bsr.pri @@ -0,0 +1,1031 @@ +[Project.ID] +Ver=200 +Target=IDK0R32G +[Configuration] +Chip=uPD79F0104 +Internal Rom=32KB +Internal Ram=1536B +Clock=Target +Sub Clock=Target +Peripheral Break=0x3 +Firm Clock=System +Flash Programming=Permit +Low-voltage Flash Rewriting=On +Fail Safe Break=0x2000 +Port=1 +NMI=OFF +TRESET=OFF +IRESET=OFF +WAIT=OFF +SysClock=None +SubClock=None +[Mapping] +Count=0 +[Main] +Geometry=154, 154, 1188, 812 +Window=Max +MDI_MAX=OFF +Button=ON +Mode=Auto +Trace=Uncond ON +Trace2=Non Stop +Coverage=OFF +Timer=OFF +Tracer=OFF +[Load File] +Dir=\\tsclient\C\78k_data\yav-mcu-basara\trunk\ +SaveFilter=0 +Start=0 +End=0 +LoadFilter=5 +Offset=0 +Object=ON +Symbol=ON +Erase=OFF +HighSpeed=OFF +Symbol Reset=ON +CPU Reset=ON +File1=\\tsclient\C\78k_data\yav-mcu-basara\trunk\bsr.lmf +LoadFilter1=5 +Offset1=0 +Object1=ON +Symbol1=ON +Erase1=OFF +HighSpeed1=OFF +CPU Reset1=ON +Symbol Reset1=ON +[View File] +Dir=\\tsclient\C\78k_data\yav-mcu-basara\trunk\ +Filter=Source +[Debugger Option] +Source Path="\\tsclient\C\78k_data\yav-mcu-basara\trunk\renge" +Symbol Size=Byte +Symbol Format=Hex +Register Name=Func +Offset Label=OFF +Offset Mnemonic=ON +Tab Count=4 +Tab Size1=*.*, 8 +Tab Size2=*.c, 8 +Tab Size3=*.s, 8 +Tab Size4=*.asm, 8 +Default Source=*.c;*.s;*.asm +Default Module=*.lnk;*.lmf +Startup Start=_@cstart +Startup End=_@cend +Main Symbol=_main +Symbol Type=OFF +Language=C +Kanji=SJIS +[Source] +Geometry=762, 184, 689, 822 +Window=Normal +DispStart=82 +CaretPos=83,0 +Mode=Normal +DispFile= +Address1= +Address2= +Address3= +Address4= +Address5= +Address6= +Address7= +Address8= +Address9= +Address10= +Address11= +Address12= +Address13= +Address14= +Address15= +Address16= +Data1= +Data2= +Data3= +Data4= +Data5= +Data6= +Data7= +Data8= +Data9= +Data10= +Data11= +Data12= +Data13= +Data14= +Data15= +Data16= +Option=0 +Case=ON +Direction=Down +File1= +File2= +File3= +File4= +File5= +File6= +File7= +File8= +File9= +File10= +File11= +File12= +File13= +File14= +File15= +File16= +SaveRange=Screen +SaveStart= +SaveEnd= +Accumulative=ON +[Source1] +Geometry=100, 100, 689, 822 +Window=Normal +DispStart=55 +CaretPos=1,0 +Mode=Normal +DispFile=\\tsclient\C\78k_data\yav-mcu-basara\trunk\hal.c +Accumulative=ON +[Assemble] +Geometry=0, 0, 0, 0 +Window=Hide +DispStart=847627264 +CaretPos=0,0 +Address1= +Address2= +Address3= +Address4= +Address5= +Address6= +Address7= +Address8= +Address9= +Address10= +Address11= +Address12= +Address13= +Address14= +Address15= +Address16= +Data1= +Data2= +Data3= +Data4= +Data5= +Data6= +Data7= +Data8= +Data9= +Data10= +Data11= +Data12= +Data13= +Data14= +Data15= +Data16= +Case=ON +Scan=OFF +Direction=Down +FindStart= +FindEnd= +SaveRange=Screen +SaveStart= +SaveEnd= +[Memory] +Geometry=0, 0, 0, 0 +Window=Hide +Boundary=0 +Format=Hex +Mode=Byte +Endian= +Ascii=OFF +Idtag=OFF +Address= +DispStart=FFFFFFFF +CaretPosData=0, 0 +CaretPosAscii=0, 0 +Address1= +Address2= +Address3= +Address4= +Address5= +Address6= +Address7= +Address8= +Address9= +Address10= +Address11= +Address12= +Address13= +Address14= +Address15= +Address16= +Data1= +Data2= +Data3= +Data4= +Data5= +Data6= +Data7= +Data8= +Data9= +Data10= +Data11= +Data12= +Data13= +Data14= +Data15= +Data16= +Binary=ON +Scan=OFF +Direction=DOWN +FindStart= +FindEnd= +Unit=Byte +SaveRange=Screen +SaveStart= +SaveEnd= +Accumulative=ON +[Memory fill] +Scope=0, 0 +Code=0 +[Memory copy] +Scope=0, 0 +To=0 +[Memory compare] +Source=0, 0 +Destination=0 +[I/O Port] +Line=0 +[Stack] +Geometry=0, 0, 0, 0 +Window=Hide +Boundary=0 +Mode=Proper +[Sfr] +Geometry=0, 0, 0, 0 +Window=Hide +Address1= +Address2= +Address3= +Address4= +Address5= +Address6= +Address7= +Address8= +Address9= +Address10= +Address11= +Address12= +Address13= +Address14= +Address15= +Address16= +Boundary=0, 0 +Mode=Hex +Attribute=Show +Sort=Address +Pickup=OFF +SelectSort=Address +Last Name= +Line=531 +L1=P0 +L2=P1 +L3=P2 +L4=P3 +L5=P4 +L6=P5 +L7=P6 +L8=P7 +L9=P12 +L10=P14 +L11=P15 +L12=SDR00 +L13=SIO00 +L14=TXD0 +L15=SDR01 +L16=RXD0 +L17=SIO01 +L18=TDR00 +L19=TDR01 +L20=ADCRH +L21=PM0 +L22=PM1 +L23=PM2 +L24=PM3 +L25=PM4 +L26=PM5 +L27=PM6 +L28=PM7 +L29=PM12 +L30=PM14 +L31=PM15 +L32=ADM +L33=ADCE +L34=ADCS +L35=ADS +L36=KRM +L37=EGP0 +L38=EGN0 +L39=ISC +L40=TIS0 +L41=SDR02 +L42=SIO10 +L43=TXD1 +L44=SDR03 +L45=RXD1 +L46=IICA0 +L47=IICS0 +L48=SPD0 +L49=STD0 +L50=ACKD0 +L51=TRC0 +L52=COI0 +L53=EXC0 +L54=ALD0 +L55=MSTS0 +L56=IICF0 +L57=IICRSV0 +L58=STCEN0 +L59=IICBSY0 +L60=STCF0 +L61=TDR02 +L62=TDR03 +L63=TDR04 +L64=TDR05 +L65=TDR06 +L66=TDR07 +L67=RSUBC +L68=SEC +L69=MIN +L70=HOUR +L71=WEEK +L72=DAY +L73=MONTH +L74=YEAR +L75=SUBCUD +L76=ALARMWM +L77=ALARMWH +L78=ALARMWW +L79=RTCC0 +L80=RCLOE0 +L81=RCLOE1 +L82=RTCE +L83=RTCC1 +L84=RWAIT +L85=RWST +L86=RIFG +L87=WAFG +L88=WALIE +L89=WALE +L90=RTCC2 +L91=RCKDIV +L92=RCLOE2 +L93=RINTE +L94=CMC +L95=CSC +L96=HIOSTOP +L97=XTSTOP +L98=MSTOP +L99=OSTC +L100=OSTS +L101=CKC +L102=MCM0 +L103=MCS +L104=CSS +L105=CLS +L106=CKS0 +L107=PCLOE0 +L108=CKS1 +L109=PCLOE1 +L110=RESF +L111=LVIM +L112=LVIF +L113=LVIMD +L114=LVISEL +L115=LVION +L116=LVIS +L117=WDTE +L118=DSA0 +L119=DSA1 +L120=DRA0 +L121=DRA0L +L122=DRA0H +L123=DRA1 +L124=DRA1L +L125=DRA1H +L126=DBC0 +L127=DBC0L +L128=DBC0H +L129=DBC1 +L130=DBC1L +L131=DBC1H +L132=DMC0 +L133=DWAIT0 +L134=DS0 +L135=DRS0 +L136=STG0 +L137=DMC1 +L138=DWAIT1 +L139=DS1 +L140=DRS1 +L141=STG1 +L142=DRC0 +L143=DST0 +L144=DEN0 +L145=DRC1 +L146=DST1 +L147=DEN1 +L148=BECTL +L149=FLMDPUP +L150=PFCMD +L151=PFS +L152=FPRERR +L153=FLPMC +L154=BFAEN +L155=FWEPR +L156=BRAMEN +L157=IF2 +L158=IF2L +L159=TMIF05 +L160=TMIF06 +L161=TMIF07 +L162=PIF6 +L163=IF2H +L164=IICAIF1 +L165=PIF20 +L166=PIF21 +L167=PIF22 +L168=PIF23 +L169=MK2 +L170=MK2L +L171=TMMK05 +L172=TMMK06 +L173=TMMK07 +L174=PMK6 +L175=MK2H +L176=IICAMK1 +L177=PMK20 +L178=PMK21 +L179=PMK22 +L180=PMK23 +L181=PR02 +L182=PR02L +L183=TMPR005 +L184=TMPR006 +L185=TMPR007 +L186=PPR06 +L187=PR02H +L188=IICAPR01 +L189=PPR020 +L190=PPR021 +L191=PPR022 +L192=PPR023 +L193=PR12 +L194=PR12L +L195=TMPR105 +L196=TMPR106 +L197=TMPR107 +L198=PPR16 +L199=PR12H +L200=IICAPR11 +L201=PPR120 +L202=PPR121 +L203=PPR122 +L204=PPR123 +L205=IF0 +L206=IF0L +L207=WDTIIF +L208=LVIIF +L209=PIF0 +L210=PIF1 +L211=PIF2 +L212=PIF4 +L213=PIF5 +L214=IF0H +L215=DMAIF0 +L216=DMAIF1 +L217=CSIIF00 +L218=STIF0 +L219=CSIIF01 +L220=SRIF0 +L221=SREIF0 +L222=IF1 +L223=IF1L +L224=CSIIF10 +L225=IICIF10 +L226=STIF1 +L227=SRIF1 +L228=SREIF1 +L229=IICAIF0 +L230=TMIF00 +L231=TMIF01 +L232=TMIF02 +L233=TMIF03 +L234=IF1H +L235=ADIF +L236=RTCIF +L237=RTCIIF +L238=KRIF +L239=MDIF +L240=TMIF04 +L241=MK0 +L242=MK0L +L243=WDTIMK +L244=LVIMK +L245=PMK0 +L246=PMK1 +L247=PMK2 +L248=PMK4 +L249=PMK5 +L250=MK0H +L251=DMAMK0 +L252=DMAMK1 +L253=CSIMK00 +L254=STMK0 +L255=CSIMK01 +L256=SRMK0 +L257=SREMK0 +L258=MK1 +L259=MK1L +L260=CSIMK10 +L261=IICMK10 +L262=STMK1 +L263=SRMK1 +L264=SREMK1 +L265=IICAMK0 +L266=TMMK00 +L267=TMMK01 +L268=TMMK02 +L269=TMMK03 +L270=MK1H +L271=ADMK +L272=RTCMK +L273=RTCIMK +L274=KRMK +L275=MDMK +L276=TMMK04 +L277=PR00 +L278=PR00L +L279=WDTIPR0 +L280=LVIPR0 +L281=PPR00 +L282=PPR01 +L283=PPR02 +L284=PPR04 +L285=PPR05 +L286=PR00H +L287=DMAPR00 +L288=DMAPR01 +L289=CSIPR000 +L290=STPR00 +L291=CSIPR001 +L292=SRPR00 +L293=SREPR00 +L294=PR01 +L295=PR01L +L296=CSIPR010 +L297=IICPR010 +L298=STPR01 +L299=SRPR01 +L300=SREPR01 +L301=IICAPR00 +L302=TMPR000 +L303=TMPR001 +L304=TMPR002 +L305=TMPR003 +L306=PR01H +L307=ADPR0 +L308=RTCPR0 +L309=RTCIPR0 +L310=KRPR0 +L311=MDPR0 +L312=TMPR004 +L313=PR10 +L314=PR10L +L315=WDTIPR1 +L316=LVIPR1 +L317=PPR10 +L318=PPR11 +L319=PPR12 +L320=PPR14 +L321=PPR15 +L322=PR10H +L323=DMAPR10 +L324=DMAPR11 +L325=CSIPR100 +L326=STPR10 +L327=CSIPR101 +L328=SRPR10 +L329=SREPR10 +L330=PR11 +L331=PR11L +L332=CSIPR110 +L333=IICPR110 +L334=STPR11 +L335=SRPR11 +L336=SREPR11 +L337=IICAPR10 +L338=TMPR100 +L339=TMPR101 +L340=TMPR102 +L341=TMPR103 +L342=PR11H +L343=ADPR1 +L344=RTCPR1 +L345=RTCIPR1 +L346=KRPR1 +L347=MDPR1 +L348=TMPR104 +L349=MDAL +L350=MULA +L351=MDAH +L352=MULB +L353=MDBH +L354=MULOH +L355=MDBL +L356=MULOL +L357=PMC +L358=MAA +L359=ADPC +L360=PU0 +L361=PU1 +L362=PU3 +L363=PU4 +L364=PU5 +L365=PU7 +L366=PU12 +L367=PU14 +L368=PIM3 +L369=PIM7 +L370=POM3 +L371=POM7 +L372=NFEN0 +L373=NFEN1 +L374=NFEN2 +L375=MDCL +L376=MDCH +L377=MDUC +L378=DIVST +L379=DIVMODE +L380=PER0 +L381=SAU0EN +L382=IICA0EN +L383=ADCEN +L384=RTCEN +L385=PER2 +L386=TAU0EN +L387=OSMC +L388=BCDADJ +L389=SSR00 +L390=SSR00L +L391=SSR01 +L392=SSR01L +L393=SSR02 +L394=SSR02L +L395=SSR03 +L396=SSR03L +L397=SIR00 +L398=SIR00L +L399=SIR01 +L400=SIR01L +L401=SIR02 +L402=SIR02L +L403=SIR03 +L404=SIR03L +L405=SMR00 +L406=SMR01 +L407=SMR02 +L408=SMR03 +L409=SCR00 +L410=SCR01 +L411=SCR02 +L412=SCR03 +L413=SE0 +L414=SE0L +L415=SS0 +L416=SS0L +L417=ST0 +L418=ST0L +L419=SPS0 +L420=SPS0L +L421=SO0 +L422=SOE0 +L423=SOE0L +L424=SOL0 +L425=SOL0L +L426=TCR00 +L427=TCR01 +L428=TCR02 +L429=TCR03 +L430=TCR04 +L431=TCR05 +L432=TCR06 +L433=TCR07 +L434=TMR00 +L435=TMR01 +L436=TMR02 +L437=TMR03 +L438=TMR04 +L439=TMR05 +L440=TMR06 +L441=TMR07 +L442=TSR00 +L443=TSR00L +L444=TSR01 +L445=TSR01L +L446=TSR02 +L447=TSR02L +L448=TSR03 +L449=TSR03L +L450=TSR04 +L451=TSR04L +L452=TSR05 +L453=TSR05L +L454=TSR06 +L455=TSR06L +L456=TSR07 +L457=TSR07L +L458=TE0 +L459=TE0L +L460=TS0 +L461=TS0L +L462=TT0 +L463=TT0L +L464=TPS0 +L465=TPS0L +L466=TO0 +L467=TO0L +L468=TOE0 +L469=TOE0L +L470=TOL0 +L471=TOL0L +L472=TOM0 +L473=TOM0L +L474=IICCTL00 +L475=SPT0 +L476=STT0 +L477=ACKE0 +L478=WTIM0 +L479=SPIE0 +L480=WREL0 +L481=LREL0 +L482=IICE0 +L483=IICCTL10 +L484=DFC0 +L485=SMC0 +L486=DAD0 +L487=CLD0 +L488=WUP0 +L489=IICWL0 +L490=IICWH0 +L491=SVA0 +L492=PER3 +L493=IICA1EN +L494=P20 +L495=PM20 +L496=PU20 +L497=EGP2 +L498=EGN2 +L499=IICA1 +L500=IICS1 +L501=SPD1 +L502=STD1 +L503=ACKD1 +L504=TRC1 +L505=COI1 +L506=EXC1 +L507=ALD1 +L508=MSTS1 +L509=IICF1 +L510=IICRSV1 +L511=STCEN1 +L512=IICBSY1 +L513=STCF1 +L514=IICCTL01 +L515=SPT1 +L516=STT1 +L517=ACKE1 +L518=WTIM1 +L519=SPIE1 +L520=WREL1 +L521=LREL1 +L522=IICE1 +L523=IICCTL11 +L524=DFC1 +L525=SMC1 +L526=DAD1 +L527=CLD1 +L528=WUP1 +L529=IICWL1 +L530=IICWH1 +L531=SVA1 +[Local Variable] +Geometry=0, 0, 0, 0 +Window=Hide +Boundary=0 +Mode=Proper +[Trace View] +Geometry=0, 0, 0, 0 +Window=Hide +Mode=Normal +Frame=Show +Timetag=Clock +Address=Show +Data=Hex +Status=Show +Address2=Show +Data2=Hex +Status2=Show +Disasm=Show +Pick Up=Off +Synchronize=0 0 0 0 +Frameno= +Frameno1= +Frameno2= +Frameno3= +Frameno4= +Frameno5= +Frameno6= +Frameno7= +Frameno8= +Frameno9= +Frameno10= +Frameno11= +Frameno12= +Frameno13= +Frameno14= +Frameno15= +Frameno16= +ScanStatus=ALL +Access Size=B +ScanAddress=<>-<> +Mask Address= +ScanData= +Mask Data= +ScanExternal= +Mask External= +Scan=OFF +Direction=Down +FindStart= +FindEnd= +SaveRange=Screen +SaveStart= +SaveEnd= +[Register] +Geometry=0, 0, 0, 0 +Window=Hide +Mode=Hex +Boundary=0 +Pickup=OFF +Name=Functional +Register Bank=0 +RP0=3 +RP1=3 +RP2=3 +RP3=3 +PC=3 +SP=3 +PSW=3 +ES=3 +CS=3 +[Event Manager] +Geometry=0, 0, 0, 0 +Window=Hide +Sort by=Unsort +Detail=OFF +[Event Set] +Geometry=0, 0, 0, 0 +Window=Hide +Manager=ON +Sort by=Unsort +Detail=OFF +Last Name= +Count=0 +[Event Link] +Geometry=0, 0, 0, 0 +Window=Hide +Manager=ON +Sort by=Unsort +Detail=OFF +Last Name= +Count=0 +[Break] +Geometry=0, 0, 0, 0 +Window=Hide +Manager=ON +Sort by=Unsort +Detail=OFF +Last Name= +Count=0 +[Trace] +Geometry=0, 0, 0, 0 +Window=Hide +Manager=ON +Sort by=Unsort +Detail=OFF +Last Name= +Delay Count0=2 +Count=0 +[Snap] +Geometry=0, 0, 0, 0 +Window=Hide +Manager=ON +Sort by=Unsort +Detail=OFF +Last Name= +Count=0 +[Stub] +Geometry=0, 0, 0, 0 +Window=Hide +Manager=ON +Sort by=Unsort +Detail=OFF +Last Name= +Count=0 +[Timer] +Geometry=0, 0, 0, 0 +Window=Hide +Manager=ON +Sort by=Unsort +Detail=OFF +Last Name= +TimerRateRunBreak=0011 +TimerBreakOutRunBreak=OFF +Count=0 +[Timer Monitor] +Count=0 +[Dmm] +Geometry=0, 0, 0, 0 +Window=Hide +Manager=ON +Sort by=Unsort +Detail=OFF +Last Name= +Count=0 +[Variable] +Geometry=1153, 8, 440, 300 +Window=Normal +Boundary=13762700 +0=.BT_IN_CHG_n,P,N,A,+,1 +Line=1 +[Quick Watch] +0=BT_IN_CHG_n,P,A,1 +1= +2= +3= +4= +5= +6= +7= +8= +9= +10= +11= +12= +13= +14= +15= +[Software Break] +Geometry=0, 0, 0, 0 +Window=Hide +Width=150 30 200 100 +Name0=Swb00002 +Address0=pm.c#_tsk_batt+0x27 +Window0=ASM +Status0=ON +Name1=Swb00001 +Address1=pm.c#_tsk_batt+0x24 +Window1=ASM +Status1=ON +Count=2 +[Reset] +Debugger=ON +Symbol=OFF +Target CPU=OFF +[Extended Option] +OnClick Software Break=ON +TraceTimetag=x1 +Redraw=500 +Break When Access Function=OFF +Break When Access Whole=Select +Verify=ON +Break Sound=ON +TraceAutoClear=OFF +RRM Clock=Internal +CKC Register Value=0x09 +RRM Internal Clock Frequency=8.000 +[About] +Version=Program +[Pseudo Emulation] +Geometry=0, 0, 0, 0 +Window=Hide +[Data Flash Option] +Data Flash Emulation=OFF +[List] +Geometry=0, 0, 0, 0 +Window=Hide +[Console] +Geometry=0, 0, 0, 0 +Window=Hide diff --git a/snake_branches/3.50_2dsll_lguide/yav_mcu_bsr.prj b/snake_branches/3.50_2dsll_lguide/yav_mcu_bsr.prj new file mode 100644 index 0000000..524341f --- /dev/null +++ b/snake_branches/3.50_2dsll_lguide/yav_mcu_bsr.prj @@ -0,0 +1,1408 @@ +[ProjectManager] +Version=6.00 +Path=C:\78k_data\yav-mcu-basara\snake_branches\3.40_jane\ +Title=yav-mcu +Series=78K0R.PM +Device=uPD79F0104 +DeviceVer=E1.00b +DebugMode=1 +Target=bsr.lmf +[BuildMode0] +BuildModeName=Debug Build +TargetFile=0 +[BuildMode1] +BuildModeName=Release Build +TargetFile=0 +[Tools] +MakeFile=yav_mcu_bsr.mak +Debugger=C:\Program Files (x86)\NEC Electronics Tools\ID78K0R-QB\V3.61\BIN\IDK0R32G.EXE +DebOption= +DebCpuReset=1 +DebSymReset=1 +MuitiLoad=0 +LoadPrjNum=0 +CheckVersion=CC78K0R|W2.13;RA78K0R|W1.33 +[Option.IDK0R32G] +File=\\tsclient\C\78k_data\yav-mcu-basara\trunk\yav_mcu_bsr.pri +[BuildMode2] +BuildModeName=K0R_dbg +TargetFile=0 +[BuildMode3] +BuildModeName=BSR_dbg +TargetFile=0 +[BuildMode4] +BuildModeName=BSR_rel +TargetFile=0 +[BuildMode5] +BuildModeName=BSR_WM0 +TargetFile=0 +[Options.OC78K0R 0] +Version=100 +O0=.\bsr.hex +O1=bsr.hex +UC=1 +UN=FF +UST= +USZ= +K=1 +ZF=0 +S=1 +E=0 +CommandFile=0 +[Options.OC78K0R 1] +Version=100 +UC=1 +UN=FF +UST= +USZ= +K=1 +ZF=0 +S=1 +E=0 +CommandFile=0 +[Options.OC78K0R 2] +Version=100 +O0=.\bsr.hex +O1=bsr.hex +UC=0 +UN=FF +UST= +USZ= +K=0 +ZF=0 +S=1 +E=0 +CommandFile=0 +[Options.OC78K0R 3] +Version=100 +O0=.\bsr.hex +O1=bsr.hex +UC=1 +UN=FF +UST= +USZ= +K=1 +ZF=0 +S=1 +E=0 +CommandFile=0 +[Options.OC78K0R 4] +Version=100 +O0=.\bsr.hex +O1=bsr.hex +UC=1 +UN=FF +UST= +USZ= +K=1 +ZF=0 +S=1 +E=0 +CommandFile=0 +[Options.OC78K0R 5] +Version=100 +O0=.\bsr.hex +O1=bsr.hex +UC=1 +UN=FF +UST= +USZ= +K=1 +ZF=0 +S=1 +E=0 +CommandFile=0 +[BuildBefore-AfterCmd] +Before1=c:\cygwin\bin\touch magic.c +After1=ruby nec_s_2_bsrbin2.rb bsr.hex +[ToolSet] +ToolSetName=(ύX)78K0R Software Package V1.10 +Tool1=CC78K0R|W2.13 +Tool2=RA78K0R|W1.33 +Tool3=SK78K0R|V3.10 +Tool4=ID78K0R-QB|V3.61 +[Options.RA78K0R 0] +Version=100 +G=1 +GA=1 +E=0 +COMMON=0 +COMPATI=0 +P=1 +KA=1 +KS=0 +KX=0 +LF=0 +LW=132 +LL=0 +LT=8 +Z=0 +CommandFile=0 +RA_OPT= +[Options.RA78K0R 1] +Version=100 +G=0 +GA=0 +E=0 +COMMON=0 +COMPATI=0 +P=1 +KA=1 +KS=0 +KX=0 +LF=0 +LW=132 +LL=0 +LT=8 +Z=0 +CommandFile=0 +RA_OPT= +[Options.RA78K0R 2] +Version=100 +O0= +O1=obj +G=1 +GA=1 +E=0 +COMMON=0 +COMPATI=0 +P=1 +P0=inter_asm +KA=1 +KS=1 +KX=1 +LF=0 +LW=132 +LL=0 +LT=8 +Z=0 +CommandFile=0 +RA_OPT=-pinter_asm -ks -kx +[Options.RA78K0R 3] +Version=100 +G=1 +GA=1 +E=0 +COMMON=0 +COMPATI=0 +P=1 +KA=1 +KS=0 +KX=0 +LF=0 +LW=132 +LL=0 +LT=8 +Z=0 +CommandFile=0 +RA_OPT= +[Options.RA78K0R 4] +Version=100 +G=1 +GA=1 +E=0 +COMMON=0 +COMPATI=0 +P=1 +KA=1 +KS=0 +KX=0 +LF=0 +LW=132 +LL=0 +LT=8 +Z=0 +CommandFile=0 +RA_OPT= +[Options.RA78K0R 5] +Version=100 +G=1 +GA=1 +E=0 +COMMON=0 +COMPATI=0 +P=1 +KA=1 +KS=0 +KX=0 +LF=0 +LW=132 +LL=0 +LT=8 +Z=0 +CommandFile=0 +RA_OPT= +[SrcFile] +Source1=loader.c +Source2=pm.c +Source3=i2c_ctr.c +Source4=main.c +Source5=magic.c +Source6=WDT.c +Source7=i2c_mcu.c +Source8=i2c_twl.c +Source9=led.c +Source10=rtc.c +Source11=vreg_ctr.c +Source12=vreg_twl.c +Source13=adc.c +Source14=renge\renge.c +Source15=accero.c +Source16=self_flash.c +Source17=sw.c +Source18=task_debug.c +Source19=task_misc.c +Source20=task_sys.c +Source21=pedo_alg_thre_det2.c +Source22=ini_VECT.c +Source23=task_status.c +Source24=led_cam.c +Source25=led_pow.c +Source26=hal.c +Source27=batt_params.c +Source28=voltable.c +Source29=pedo_lpf_coeff.c +Source30=kanaria.asm +Source31=kanaria_c.c +Source32=get_ei.asm +Source33=util_funcs.c +Source34=i2c_mcu-sub.c +[Options.CC78K0R 0] +Version=210 +Include0=renge,C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r +Include1=C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r +Memorymodel=1 +Flashobj=0 +FlashStartadr= +FlashBranchStartadr= +Mirror=0 +Saddrglobalchk=0 +Saddrglobal=1066 +Saddrstaticchk=0 +Saddrstatic=1072 +Bitfieldmsb=0 +Onebytechk=0 +Pacstructchk=0 +AssignROMchk=0 +AssignROM=0 +Maxoptimizechk=0 +Maxoptimize=1104 +Charunexpandchk=1 +Unsignedchar=0 +Usesaddrchk=0 +Autoallocationchk=1 +Jumpoptimize=1 +Librarycallchk=0 +Librarycall=1129 +Aggressivechk=1 +Relativebranchchk=1 +Debugoptchk=0 +Outdebugchk=1 +Outdebug=1153 +Outasmsrccmb0=inter_asm +Outasmsrccmb1=bsr.asm +Outasmsrcchk=1 +Outasmsrc=1158 +Outasmoptall=1 +Common=0 +Outerrlistchk=0 +Outerrlist=1174 +Xreference=0 +Preprocess=0 +Prenocomment=0 +Predefine=0 +Preifdef=1 +Preinclude=0 +Preline=1 +Prenumber=1 +Formfeed=0 +Columns=132 +Lines=0 +Tablength=8 +Ansi=0 +Cpraspras=1 +Commentnest=0 +Intunexpand=0 +Kanjicode=1210 +Verbose=0 +CommandFile=0 +Warninglevel=0 +Startupchk=1 +Fixation=1 +FarROMization=0 +Objectsel=1305 +Librarychk=1 +Floatingpoint=0 +Muldivunit=1 +Mulunit=1 +Startup=s0rml.rel +Library1=cl0rdm.lib +Library2=cl0rm.lib +Library3=cl0rmf.lib +VfiFileBoot0= +VfiFileBoot1=boot.vfi +VF78K0Rchk=0 +VF78K0Rvs= +[Options.CC78K0R 1] +Version=210 +Memorymodel=2 +Flashobj=0 +FlashStartadr= +FlashBranchStartadr= +Mirror=0 +Saddrglobalchk=0 +Saddrglobal=1066 +Saddrstaticchk=0 +Saddrstatic=1072 +Bitfieldmsb=0 +Onebytechk=0 +Pacstructchk=0 +AssignROMchk=0 +AssignROM=0 +Maxoptimizechk=0 +Maxoptimize=1104 +Charunexpandchk=1 +Unsignedchar=0 +Usesaddrchk=0 +Autoallocationchk=1 +Jumpoptimize=1 +Librarycallchk=1 +Librarycall=1128 +Aggressivechk=1 +Relativebranchchk=0 +Debugoptchk=0 +Outdebugchk=0 +Outdebug=1153 +Outasmsrcchk=0 +Outasmsrc=1157 +Outasmoptall=1 +Common=0 +Outerrlistchk=0 +Outerrlist=1173 +Xreference=0 +Preprocess=0 +Prenocomment=0 +Predefine=0 +Preifdef=1 +Preinclude=0 +Preline=1 +Prenumber=1 +Formfeed=0 +Columns=132 +Lines=0 +Tablength=8 +Ansi=0 +Cpraspras=0 +Commentnest=0 +Intunexpand=0 +Kanjicode=1210 +Verbose=0 +CommandFile=0 +Warninglevel=1 +Startupchk=1 +Fixation=1 +FarROMization=1 +Objectsel=1305 +Librarychk=1 +Floatingpoint=0 +Muldivunit=1 +Mulunit=1 +Startup=s0rll.rel +Library1=cl0rdm.lib +Library2=cl0rm.lib +Library3=cl0rmf.lib +VF78K0Rchk=0 +VF78K0Rvs= +[Options.CC78K0R 2] +Version=210 +Define0= +Define1=_debug_,_TEG_,proc_is_ke3 +Define2=_debug_,_TEG_,proc_is_ke3,%time% +Define3=_TEG_,proc_is_ke3 +Define4=proc_is_ke3 +Include0=renge,C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r +Include1=renge,C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r +Include2=C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r +Memorymodel=1 +Flashobj=0 +FlashStartadr= +FlashBranchStartadr= +Mirror=0 +Saddrglobalchk=1 +Saddrglobal=1063 +Saddrstaticchk=1 +Saddrstatic=1069 +Bitfieldmsb=0 +Onebytechk=0 +Pacstructchk=0 +AssignROMchk=0 +AssignROM=0 +Maxoptimizechk=0 +Maxoptimize=1104 +Charunexpandchk=0 +Unsignedchar=0 +Usesaddrchk=0 +Autoallocationchk=1 +Jumpoptimize=1 +Librarycallchk=1 +Librarycall=1129 +Aggressivechk=1 +Relativebranchchk=0 +Debugoptchk=0 +Outdebugchk=1 +Outdebug=1153 +Outobjectcmb0= +Outobjectcmb1=obj +Outasmsrccmb0=inter_asm +Outasmsrccmb1=bsr.asm +Outasmsrcchk=1 +Outasmsrc=1158 +Outasmoptall=1 +Common=0 +Outerrlistchk=0 +Outerrlist=1174 +Xreference=0 +Preprocess=0 +Prenocomment=0 +Predefine=0 +Preifdef=1 +Preinclude=1 +Preline=1 +Prenumber=1 +Formfeed=0 +Columns=132 +Lines=0 +Tablength=8 +Ansi=0 +Cpraspras=1 +Commentnest=0 +Intunexpand=1 +Kanjicode=1210 +Verbose=0 +CommandFile=0 +Warninglevel=1 +Startupchk=1 +Fixation=0 +FarROMization=0 +Objectsel=1305 +Librarychk=1 +Floatingpoint=0 +Muldivunit=1 +Mulunit=1 +Startup=s0rm.rel +Library1=cl0rdm.lib +Library2=cl0rm.lib +Library3=cl0rmf.lib +VfiFileBoot0= +VfiFileBoot1=boot.vfi +VF78K0Rchk=0 +VF78K0Rvs= +[Options.CC78K0R 2 vreg_ctr.c] +Version=210 +Define0= +Define1=_debug_,_TEG_,proc_is_ke3 +Define2=_debug_,_TEG_,proc_is_ke3,%time% +Undefine0= +Include0=renge,C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r +Include1=renge,C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r +Include2=renge,C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r +Include3=renge,C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r +Include4=renge,C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r +Memorymodel=1 +Flashobj=0 +FlashStartadr= +FlashBranchStartadr= +Mirror=0 +Saddrglobalchk=1 +Saddrglobal=1063 +Saddrstaticchk=1 +Saddrstatic=1075 +Bitfieldmsb=0 +Onebytechk=0 +Pacstructchk=0 +AssignROMchk=0 +AssignROM=0 +Maxoptimizechk=0 +Maxoptimize=1104 +Charunexpandchk=0 +Unsignedchar=0 +Usesaddrchk=0 +Autoallocationchk=1 +Jumpoptimize=1 +Librarycallchk=1 +Librarycall=1129 +Aggressivechk=1 +Relativebranchchk=0 +Debugoptchk=0 +Outdebugchk=1 +Outdebug=1153 +Outobjectcmb0= +Outobjectcmb1=obj +Outasmsrccmb0=inter_asm +Outasmsrccmb1=bsr.asm +Outasmsrcchk=1 +Outasmsrc=1158 +Outasmoptall=1 +Common=0 +Outerrlistchk=0 +Outerrlist=1174 +Xreference=0 +Preprocess=0 +Prenocomment=0 +Predefine=0 +Preifdef=1 +Preinclude=1 +Preline=1 +Prenumber=1 +Formfeed=0 +Columns=132 +Lines=0 +Tablength=8 +Ansi=0 +Cpraspras=1 +Commentnest=0 +Intunexpand=1 +Kanjicode=1210 +Verbose=0 +CommandFile=0 +Warninglevel=1 +Startupchk=1 +Fixation=0 +FarROMization=0 +Objectsel=1305 +Librarychk=1 +Floatingpoint=0 +Muldivunit=1 +Mulunit=1 +Startup=s0rm.rel +Library1=cl0rdm.lib +Library2=cl0rm.lib +Library3=cl0rmf.lib +VfiFileBoot0= +VfiFileBoot1=boot.vfi +VF78K0Rchk=0 +VF78K0Rvs= +[Options.CC78K0R 2 vreg_twl.c] +Version=210 +Define0= +Define1=_debug_,_TEG_,proc_is_ke3 +Define2=_debug_,_TEG_,proc_is_ke3,%time% +Undefine0= +Include0=renge,C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r +Include1=renge,C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r +Include2=renge,C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r +Include3=renge,C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r +Include4=renge,C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r +Memorymodel=1 +Flashobj=0 +FlashStartadr= +FlashBranchStartadr= +Mirror=0 +Saddrglobalchk=1 +Saddrglobal=1063 +Saddrstaticchk=1 +Saddrstatic=1075 +Bitfieldmsb=0 +Onebytechk=0 +Pacstructchk=0 +AssignROMchk=0 +AssignROM=0 +Maxoptimizechk=0 +Maxoptimize=1104 +Charunexpandchk=0 +Unsignedchar=0 +Usesaddrchk=0 +Autoallocationchk=1 +Jumpoptimize=1 +Librarycallchk=1 +Librarycall=1129 +Aggressivechk=1 +Relativebranchchk=0 +Debugoptchk=0 +Outdebugchk=1 +Outdebug=1153 +Outobjectcmb0= +Outobjectcmb1=obj +Outasmsrccmb0=inter_asm +Outasmsrccmb1=bsr.asm +Outasmsrcchk=1 +Outasmsrc=1158 +Outasmoptall=1 +Common=0 +Outerrlistchk=0 +Outerrlist=1174 +Xreference=0 +Preprocess=0 +Prenocomment=0 +Predefine=0 +Preifdef=1 +Preinclude=1 +Preline=1 +Prenumber=1 +Formfeed=0 +Columns=132 +Lines=0 +Tablength=8 +Ansi=0 +Cpraspras=1 +Commentnest=0 +Intunexpand=1 +Kanjicode=1210 +Verbose=0 +CommandFile=0 +Warninglevel=1 +Startupchk=1 +Fixation=0 +FarROMization=0 +Objectsel=1305 +Librarychk=1 +Floatingpoint=0 +Muldivunit=1 +Mulunit=1 +Startup=s0rm.rel +Library1=cl0rdm.lib +Library2=cl0rm.lib +Library3=cl0rmf.lib +VfiFileBoot0= +VfiFileBoot1=boot.vfi +VF78K0Rchk=0 +VF78K0Rvs= +[Options.CC78K0R 2 renge.c] +Version=210 +Define0= +Define1=_debug_,_TEG_,proc_is_ke3 +Define2=_debug_,_TEG_,proc_is_ke3,%time% +Undefine0= +Include0=renge,C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r +Include1=renge,C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r +Include2=renge,C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r +Include3=renge,C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r +Include4=renge,C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r +Memorymodel=1 +Flashobj=0 +FlashStartadr= +FlashBranchStartadr= +Mirror=0 +Saddrglobalchk=1 +Saddrglobal=1063 +Saddrstaticchk=1 +Saddrstatic=1075 +Bitfieldmsb=0 +Onebytechk=0 +Pacstructchk=0 +AssignROMchk=0 +AssignROM=0 +Maxoptimizechk=0 +Maxoptimize=1104 +Charunexpandchk=0 +Unsignedchar=0 +Usesaddrchk=0 +Autoallocationchk=1 +Jumpoptimize=1 +Librarycallchk=1 +Librarycall=1129 +Aggressivechk=1 +Relativebranchchk=0 +Debugoptchk=0 +Outdebugchk=1 +Outdebug=1153 +Outobjectcmb0= +Outobjectcmb1=obj +Outasmsrccmb0=inter_asm +Outasmsrccmb1=bsr.asm +Outasmsrcchk=1 +Outasmsrc=1158 +Outasmoptall=1 +Common=0 +Outerrlistchk=0 +Outerrlist=1174 +Xreference=0 +Preprocess=0 +Prenocomment=0 +Predefine=0 +Preifdef=1 +Preinclude=1 +Preline=1 +Prenumber=1 +Formfeed=0 +Columns=132 +Lines=0 +Tablength=8 +Ansi=0 +Cpraspras=1 +Commentnest=0 +Intunexpand=1 +Kanjicode=1210 +Verbose=0 +CommandFile=0 +Warninglevel=1 +Startupchk=1 +Fixation=0 +FarROMization=0 +Objectsel=1305 +Librarychk=1 +Floatingpoint=0 +Muldivunit=1 +Mulunit=1 +Startup=s0rm.rel +Library1=cl0rdm.lib +Library2=cl0rm.lib +Library3=cl0rmf.lib +VfiFileBoot0= +VfiFileBoot1=boot.vfi +VF78K0Rchk=0 +VF78K0Rvs= +[Options.CC78K0R 2 self_flash.c] +Version=210 +Define0= +Define1=_debug_,_TEG_,proc_is_ke3 +Define2=_debug_,_TEG_,proc_is_ke3,%time% +Undefine0= +Include0=renge,C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r +Include1=renge,C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r +Include2=renge,C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r +Include3=renge,C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r +Include4=renge,C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r +Memorymodel=1 +Flashobj=0 +FlashStartadr= +FlashBranchStartadr= +Mirror=0 +Saddrglobalchk=1 +Saddrglobal=1063 +Saddrstaticchk=0 +Saddrstatic=1072 +Bitfieldmsb=0 +Onebytechk=0 +Pacstructchk=0 +AssignROMchk=0 +AssignROM=0 +Maxoptimizechk=0 +Maxoptimize=1104 +Charunexpandchk=0 +Unsignedchar=0 +Usesaddrchk=0 +Autoallocationchk=1 +Jumpoptimize=1 +Librarycallchk=1 +Librarycall=1129 +Aggressivechk=1 +Relativebranchchk=0 +Debugoptchk=0 +Outdebugchk=1 +Outdebug=1153 +Outobjectcmb0= +Outobjectcmb1=obj +Outasmsrccmb0=inter_asm +Outasmsrccmb1=bsr.asm +Outasmsrcchk=1 +Outasmsrc=1158 +Outasmoptall=1 +Common=0 +Outerrlistchk=0 +Outerrlist=1174 +Xreference=0 +Preprocess=0 +Prenocomment=0 +Predefine=0 +Preifdef=1 +Preinclude=1 +Preline=1 +Prenumber=1 +Formfeed=0 +Columns=132 +Lines=0 +Tablength=8 +Ansi=0 +Cpraspras=1 +Commentnest=0 +Intunexpand=1 +Kanjicode=1210 +Verbose=0 +CommandFile=0 +Warninglevel=1 +Startupchk=1 +Fixation=0 +FarROMization=0 +Objectsel=1305 +Librarychk=1 +Floatingpoint=0 +Muldivunit=1 +Mulunit=1 +Startup=s0rm.rel +Library1=cl0rdm.lib +Library2=cl0rm.lib +Library3=cl0rmf.lib +VfiFileBoot0= +VfiFileBoot1=boot.vfi +VF78K0Rchk=0 +VF78K0Rvs= +[Options.CC78K0R 3] +Version=210 +Define0=_debug_,proc_is_bsr,_TEG_ +Define1=_debug_,proc_is_bsr +Define2=proc_is_bsr +Define3=_TEG_,proc_is_ke3 +Define4=proc_is_ke3 +Include0=renge,C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r +Include1=C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r +Memorymodel=1 +Flashobj=0 +FlashStartadr= +FlashBranchStartadr= +Mirror=0 +Saddrglobalchk=0 +Saddrglobal=1066 +Saddrstaticchk=0 +Saddrstatic=1072 +Bitfieldmsb=0 +Onebytechk=0 +Pacstructchk=0 +AssignROMchk=0 +AssignROM=0 +Maxoptimizechk=0 +Maxoptimize=1104 +Charunexpandchk=1 +Unsignedchar=0 +Usesaddrchk=0 +Autoallocationchk=1 +Jumpoptimize=1 +Librarycallchk=0 +Librarycall=1129 +Aggressivechk=1 +Relativebranchchk=1 +Debugoptchk=0 +Outdebugchk=1 +Outdebug=1153 +Outasmsrccmb0=inter_asm +Outasmsrccmb1=bsr.asm +Outasmsrcchk=1 +Outasmsrc=1158 +Outasmoptall=1 +Common=0 +Outerrlistchk=0 +Outerrlist=1174 +Xreference=0 +Preprocess=0 +Prenocomment=0 +Predefine=0 +Preifdef=1 +Preinclude=0 +Preline=1 +Prenumber=1 +Formfeed=0 +Columns=132 +Lines=0 +Tablength=8 +Ansi=0 +Cpraspras=1 +Commentnest=0 +Intunexpand=0 +Kanjicode=1210 +Verbose=0 +CommandFile=0 +Warninglevel=0 +Startupchk=1 +Fixation=1 +FarROMization=0 +Objectsel=1305 +Librarychk=1 +Floatingpoint=0 +Muldivunit=1 +Mulunit=1 +Startup=s0rml.rel +Library1=cl0rdm.lib +Library2=cl0rm.lib +Library3=cl0rmf.lib +VfiFileBoot0= +VfiFileBoot1=boot.vfi +VF78K0Rchk=0 +VF78K0Rvs= +[Options.CC78K0R 4] +Version=210 +Define0=proc_is_bsr +Include0=renge,C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r +Include1=C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r +Memorymodel=1 +Flashobj=0 +FlashStartadr= +FlashBranchStartadr= +Mirror=0 +Saddrglobalchk=0 +Saddrglobal=1066 +Saddrstaticchk=0 +Saddrstatic=1072 +Bitfieldmsb=0 +Onebytechk=0 +Pacstructchk=0 +AssignROMchk=0 +AssignROM=0 +Maxoptimizechk=0 +Maxoptimize=1104 +Charunexpandchk=1 +Unsignedchar=0 +Usesaddrchk=0 +Autoallocationchk=1 +Jumpoptimize=1 +Librarycallchk=0 +Librarycall=1129 +Aggressivechk=1 +Relativebranchchk=1 +Debugoptchk=0 +Outdebugchk=1 +Outdebug=1153 +Outasmsrccmb0=inter_asm +Outasmsrccmb1=bsr.asm +Outasmsrcchk=1 +Outasmsrc=1158 +Outasmoptall=1 +Common=0 +Outerrlistchk=0 +Outerrlist=1174 +Xreference=0 +Preprocess=0 +Prenocomment=0 +Predefine=0 +Preifdef=1 +Preinclude=0 +Preline=1 +Prenumber=1 +Formfeed=0 +Columns=132 +Lines=0 +Tablength=8 +Ansi=0 +Cpraspras=1 +Commentnest=0 +Intunexpand=0 +Kanjicode=1210 +Verbose=0 +CommandFile=0 +Warninglevel=0 +Startupchk=1 +Fixation=1 +FarROMization=0 +Objectsel=1305 +Librarychk=1 +Floatingpoint=0 +Muldivunit=1 +Mulunit=1 +Startup=s0rml.rel +Library1=cl0rdm.lib +Library2=cl0rm.lib +Library3=cl0rmf.lib +VfiFileBoot0= +VfiFileBoot1=boot.vfi +VF78K0Rchk=0 +VF78K0Rvs= +[Options.CC78K0R 5] +Version=210 +Define0= +Define1=_debug_,proc_is_bsr,_TEG_,_WM0_ +Define2=_debug_,proc_is_bsr,_TEG_,_WM0 +Define3=_debug_,proc_is_bsr,_TEG_ +Define4=_debug_,proc_is_bsr +Include0=renge,C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r +Include1=C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r +Memorymodel=1 +Flashobj=0 +FlashStartadr= +FlashBranchStartadr= +Mirror=0 +Saddrglobalchk=0 +Saddrglobal=1066 +Saddrstaticchk=0 +Saddrstatic=1072 +Bitfieldmsb=0 +Onebytechk=0 +Pacstructchk=0 +AssignROMchk=0 +AssignROM=0 +Maxoptimizechk=0 +Maxoptimize=1104 +Charunexpandchk=1 +Unsignedchar=0 +Usesaddrchk=0 +Autoallocationchk=1 +Jumpoptimize=1 +Librarycallchk=0 +Librarycall=1129 +Aggressivechk=1 +Relativebranchchk=1 +Debugoptchk=0 +Outdebugchk=1 +Outdebug=1153 +Outasmsrccmb0=inter_asm +Outasmsrccmb1=bsr.asm +Outasmsrcchk=1 +Outasmsrc=1158 +Outasmoptall=1 +Common=0 +Outerrlistchk=0 +Outerrlist=1174 +Xreference=0 +Preprocess=0 +Prenocomment=0 +Predefine=0 +Preifdef=1 +Preinclude=0 +Preline=1 +Prenumber=1 +Formfeed=0 +Columns=132 +Lines=0 +Tablength=8 +Ansi=0 +Cpraspras=1 +Commentnest=0 +Intunexpand=0 +Kanjicode=1210 +Verbose=0 +CommandFile=0 +Warninglevel=0 +Startupchk=1 +Fixation=1 +FarROMization=0 +Objectsel=1305 +Librarychk=1 +Floatingpoint=0 +Muldivunit=1 +Mulunit=1 +Startup=s0rml.rel +Library1=cl0rdm.lib +Library2=cl0rm.lib +Library3=cl0rmf.lib +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=0 +GOValue=85 +GOStart=FC00 +GOSizeValue=1024 +GI=1 +GIValue=1B339499E033F240BFAA +CCZA=0 +MemInfoCheck=1 +P=1 +P0=bsr_k0r.map +P1=bsr.map +P2=flash.map +P3=a.map +MI=0 +GB=1 +GBValue=7EFBFF +KM=1 +KD=0 +KP=0 +KL=0 +LF=0 +LL=0 +B0=C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\lib78k0r\fsl.lib +B1=C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\lib78k0r\fsl.lib +D0=bsr_mcu.dr +D1=user_area.dr +S=1 +W=2 +SELFCheck=0 +SELF=0 +ZB= +Etcetera0= +Etcetera1=boot.lmf +CommandFile=0 +OFILE=C:\78k_data\yav-mcu-basara\snake_branches\3.40_jane\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 +[IncFile] +Include1=incs_loader.h +Include2=config.h +Include3=jhl_defs.h +Include4=user_define.h +Include5=hal.h +Include6=bsr_system.h +Include7=renge\renge.h +Include8=renge\renge_defs.h +Include9=renge\renge_task_immediate.h +Include10=vreg_ctr.h +Include11=vreg_twl.h +Include12=loader.h +Include13=i2c_mcu.h +Include14=WDT.h +Include15=fsl_user.h +Include16=i2c_ctr.h +Include17=pm.h +Include18=rtc.h +Include19=reboot.h +Include20=magic.h +Include21=incs.h +Include22=i2c_twl.h +Include23=accero.h +Include24=pedometer.h +Include25=sw.h +Include26=adc.h +Include27=led.h +Include28=batt_params.h +Include29=pool.h +Include30=i2c_twl_defs.h +Include31=renge\renge_task_intval.h +Include32=self_flash.h +Include33=util_funcs.h +Include34=i2c_mcu_sub.h +Include35=..\..\..\..\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r\fsl.h +Include36=..\..\..\..\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r\math.h diff --git a/snake_branches/3.50_2dsll_lguide/yav_mcu_bsr.prk b/snake_branches/3.50_2dsll_lguide/yav_mcu_bsr.prk new file mode 100644 index 0000000..b988104 --- /dev/null +++ b/snake_branches/3.50_2dsll_lguide/yav_mcu_bsr.prk @@ -0,0 +1,17 @@ +[ProjectManager] +FrameMax=0 +FrameX=465 +FrameY=164 +FrameCX=1391 +FrameCY=939 +OpenFile1=batt_params.h,0,200,200,1321,745,23,25,22,0 +OpenFile2=loader.c,0,225,225,1346,770,15,160,15,0 +OpenFile3=pm.c,0,153,147,1129,749,47,1280,47,0 +OpenFile4=ProjectWindow +PrjPos=0,0,706,0,291 +OpenFile5=config.h,0,94,97,978,669,29,10,29,0 +OpenFile6=OutputWindow +OutputPos=0,91,721,541,1259 +ActivePRJ=yav_mcu_bsr.prj +[ProjectWindow] +ProjectWindowDispType=0 diff --git a/snake_branches/3.50_2dsll_lguide/yav_mcu_bsr.prw b/snake_branches/3.50_2dsll_lguide/yav_mcu_bsr.prw new file mode 100644 index 0000000..7c0bbd6 --- /dev/null +++ b/snake_branches/3.50_2dsll_lguide/yav_mcu_bsr.prw @@ -0,0 +1,8 @@ +[System] +System1=default +[default] +Project1=yav_mcu_bsr.prj +[BATCH_BUILD] +Build1=yav_mcu_bsr.prj,Debug Build,1 +Build2=yav_mcu_bsr.prj,Release Build,0 +Build3=yav_mcu_bsr.prj,BSR_WM0,0 diff --git a/snake_branches/3.50_2dsll_lguide/yav_mcu_bsr.sdb b/snake_branches/3.50_2dsll_lguide/yav_mcu_bsr.sdb new file mode 100644 index 0000000..0d1379b --- /dev/null +++ b/snake_branches/3.50_2dsll_lguide/yav_mcu_bsr.sdb @@ -0,0 +1,325 @@ +[SdbInfo] +Ver=5 +[loader.c] +T=57ce1430 +1=incs_loader.h +2=..\..\..\..\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r\fsl.h +3=fsl_user.h +4=i2c_ctr.h +5=i2c_mcu.h +6=pm.h +7=rtc.h +8=reboot.h +9=WDT.h +10=magic.h +[pm.c] +T=58378918 +1=incs.h +2=adc.h +3=led.h +4=pm.h +5=renge\renge.h +6=batt_params.h +7=..\..\..\..\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r\fsl.h +8=fsl_user.h +9=vreg_twl.h +10=i2c_mcu.h +[i2c_ctr.c] +T=57ce0cf6 +1=incs.h +2=rtc.h +3=pedometer.h +[main.c] +T=57ce0cfa +1=incs.h +2=rtc.h +3=pm.h +4=accero.h +5=led.h +6=adc.h +7=i2c_mcu.h +8=pool.h +[magic.c] +T=57ce1576 +1=magic.h +2=config.h +[WDT.c] +T=57ce0cf1 +1=incs_loader.h +[i2c_mcu.c] +T=57ce0cf0 +1=incs_loader.h +2=i2c_mcu.h +3=loader.h +4=util_funcs.h +5=i2c_mcu_sub.h +[i2c_twl.c] +T=57ce0cee +1=incs_loader.h +2=i2c_twl_defs.h +3=i2c_twl.h +4=vreg_twl.h +5=WDT.h +[led.c] +T=57ce0cfa +1=incs.h +2=led.h +[rtc.c] +T=57ce0cf6 +1=incs.h +[vreg_ctr.c] +T=57ce0cfa +1=incs.h +2=vreg_ctr.h +3=rtc.h +4=led.h +5=accero.h +6=pm.h +7=pool.h +8=vreg_twl.h +9=sw.h +10=WDT.h +11=..\..\..\..\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r\fsl.h +12=fsl_user.h +[vreg_twl.c] +T=57ce0cef +1=incs.h +2=jhl_defs.h +3=led.h +4=vreg_twl.h +5=adc.h +[adc.c] +T=57ce0cf1 +1=incs.h +2=adc.h +3=pm.h +4=led.h +5=vreg_twl.h +6=i2c_mcu.h +[renge\renge.c] +T=57ce0cf2 +1=renge\renge.h +2=renge\renge_task_intval.h +3=renge\renge_task_immediate.h +4=WDT.h +5=config.h +6=user_define.h +7=util_funcs.h +8=bsr_system.h +[accero.c] +T=57ce0cf1 +1=incs.h +2=accero.h +3=i2c_mcu.h +4=..\..\..\..\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r\math.h +[self_flash.c] +T=57ce0cee +1=incs_loader.h +2=..\..\..\..\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r\fsl.h +3=fsl_user.h +4=i2c_ctr.h +5=i2c_mcu.h +6=pool.h +7=magic.h +8=pm.h +9=WDT.h +10=util_funcs.h +[sw.c] +T=57ce0cef +1=incs.h +2=i2c_twl.h +3=i2c_ctr.h +4=led.h +5=pm.h +6=rtc.h +7=sw.h +[task_debug.c] +T=57ce0cfa +1=incs_loader.h +2=renge\renge.h +3=pm.h +4=accero.h +[task_misc.c] +T=57ce0cef +1=incs.h +2=renge\renge.h +3=pm.h +4=accero.h +5=adc.h +6=i2c_mcu.h +7=led.h +8=vreg_twl.h +[task_sys.c] +T=57ce0cef +1=incs.h +2=i2c_twl.h +3=i2c_ctr.h +4=led.h +5=accero.h +6=pm.h +7=rtc.h +8=sw.h +9=adc.h +10=self_flash.h +11=i2c_mcu.h +12=vreg_twl.h +[pedo_alg_thre_det2.c] +T=57ce0cf1 +1=incs.h +2=..\..\..\..\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r\math.h +3=accero.h +4=pedometer.h +5=pool.h +[ini_VECT.c] +T=57ce0cf1 +1=config.h +[task_status.c] +T=57ce0cfa +1=incs_loader.h +2=renge\renge.h +3=pm.h +4=accero.h +5=adc.h +6=i2c_mcu.h +7=led.h +[led_cam.c] +T=57ce0cfa +1=incs.h +2=led.h +3=vreg_twl.h +[led_pow.c] +T=57ce0cf6 +1=incs.h +2=led.h +3=pm.h +[hal.c] +T=57ce0cfa +1=incs_loader.h +[batt_params.c] +T=57ce0cf7 +1=jhl_defs.h +2=batt_params.h +[voltable.c] +T=57ce0cf1 +1=incs.h +[pedo_lpf_coeff.c] +T=57ce0cf6 +1=incs.h +[kanaria.asm] +T=57ce0cee +[kanaria_c.c] +T=57ce0cef +1=incs.h +[get_ei.asm] +T=57ce0cfa +[util_funcs.c] +T=57ce0cf0 +1=incs_loader.h +2=WDT.h +[i2c_mcu-sub.c] +T=57ce0cef +1=incs.h +2=i2c_mcu.h +3=loader.h +4=util_funcs.h +5=i2c_mcu_sub.h +6=pm.h +[incs_loader.h] +T=57ce0cfa +1=jhl_defs.h +2=config.h +3=user_define.h +4=hal.h +5=bsr_system.h +6=renge\renge.h +7=vreg_ctr.h +8=vreg_twl.h +[config.h] +T=583789be +[jhl_defs.h] +T=57ce0cef +[user_define.h] +T=57ce0cfb +[hal.h] +T=57ce0cfa +[bsr_system.h] +T=57ce2dd6 +[renge\renge.h] +T=57ce0cf2 +1=renge\renge_defs.h +2=renge\renge_task_immediate.h +[renge\renge_defs.h] +T=57ce0cf2 +[renge\renge_task_immediate.h] +T=57ce0cf2 +1=renge\renge_defs.h +[vreg_ctr.h] +T=57ce0cfa +1=config.h +[vreg_twl.h] +T=57ce0cef +[loader.h] +T=57ce0cef +[i2c_mcu.h] +T=57ce1430 +[WDT.h] +T=57ce0cf1 +[fsl_user.h] +T=57ce0cf1 +[i2c_ctr.h] +T=57ce0cf6 +[pm.h] +T=57ce0cfa +[rtc.h] +T=57ce0cf7 +[reboot.h] +T=57ce0cf1 +[magic.h] +T=57ce0cf6 +[incs.h] +T=57ce0cee +1=jhl_defs.h +2=config.h +3=user_define.h +4=hal.h +5=bsr_system.h +6=renge\renge.h +7=vreg_ctr.h +8=util_funcs.h +[i2c_twl.h] +T=57ce0cee +[accero.h] +T=57ce0cf1 +1=jhl_defs.h +2=pedometer.h +[pedometer.h] +T=57ce0cef +[sw.h] +T=57ce0cef +1=config.h +[adc.h] +T=57ce0cf1 +1=jhl_defs.h +[led.h] +T=57ce0cfa +[batt_params.h] +T=57ce147e +1=jhl_defs.h +[pool.h] +T=57ce0cf0 +1=pedometer.h +[i2c_twl_defs.h] +T=57ce0cf1 +[renge\renge_task_intval.h] +T=57ce0cf2 +1=renge\renge_defs.h +[self_flash.h] +T=57ce0cef +[util_funcs.h] +T=57ce0cf0 +[i2c_mcu_sub.h] +T=57ce0cef +[..\..\..\..\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r\fsl.h] +T=49a3bd4e +[..\..\..\..\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r\math.h] +T=45f12258 diff --git a/snake_branches/3.50_2dsll_lguide/ベースからの変更.xls b/snake_branches/3.50_2dsll_lguide/ベースからの変更.xls new file mode 100644 index 0000000000000000000000000000000000000000..5212dac6485080dca2bfd246e855585895ff82af GIT binary patch literal 26624 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 literal 0 HcmV?d00001