From ff15fcfa3fc8078f7c0983a2fcf90306abd8ae36 Mon Sep 17 00:00:00 2001 From: n2232 Date: Mon, 29 Aug 2011 08:03:22 +0000 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E3=81=8C=E5=85=A5=E3=81=A3?= =?UTF-8?q?=E3=81=9F=E3=81=9F=E3=82=81=E3=81=93=E3=81=AE=E3=83=90=E3=83=BC?= =?UTF-8?q?=E3=82=B8=E3=83=A7=E3=83=B3=E3=81=AF=E3=81=8A=E8=94=B5=E5=85=A5?= =?UTF-8?q?=E3=82=8A?= 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@389 013db118-44a6-b54f-8bf7-843cb86687b1 --- tags/2.05/OMakefile | 159 --- tags/2.05/OMakeroot | 4 - tags/2.05/WDT.c | 2 - tags/2.05/WDT.h | 20 - tags/2.05/accero.c | 270 ----- tags/2.05/accero.h | 14 - tags/2.05/adc.c | 450 -------- tags/2.05/adc.h | 48 - tags/2.05/batt_params.c | 84 -- tags/2.05/batt_params.h | 49 - tags/2.05/bsr.hex | 1001 ----------------- tags/2.05/bsr.lmf | Bin 178444 -> 0 bytes tags/2.05/bsr_k0r.map | 831 -------------- tags/2.05/bsr_mcu.dr | 46 - tags/2.05/bsr_system.h | 67 -- tags/2.05/config.h | 91 -- tags/2.05/fsl.h | 362 ------ tags/2.05/fsl_user.h | 113 -- tags/2.05/hal.c | 176 --- tags/2.05/hal.h | 17 - tags/2.05/hoge.bin | Bin 16387 -> 0 bytes tags/2.05/i2c_ctr.c | 297 ----- tags/2.05/i2c_ctr.h | 210 ---- tags/2.05/i2c_mcu.c | 655 ----------- tags/2.05/i2c_mcu.h | 36 - tags/2.05/i2c_twl.c | 231 ---- tags/2.05/i2c_twl.h | 7 - tags/2.05/i2c_twl_defs.h | 196 ---- tags/2.05/incs.h | 58 - tags/2.05/incs_loader.h | 47 - tags/2.05/ini_VECT.c | 383 ------- tags/2.05/jhl_defs.h | 29 - tags/2.05/led.c | 349 ------ tags/2.05/led.h | 146 --- tags/2.05/led_cam.c | 146 --- tags/2.05/led_pow.c | 269 ----- tags/2.05/loader.c | 380 ------- tags/2.05/loader.h | 7 - tags/2.05/magic.c | 29 - tags/2.05/magic.h | 24 - tags/2.05/main.c | 92 -- tags/2.05/nec_s_2_bsrbin2.rb | 82 -- tags/2.05/pedo_alg_thre_det2.c | 574 ---------- tags/2.05/pedo_lpf_coeff.c | 83 -- tags/2.05/pedo_lpf_coeff.h | 84 -- tags/2.05/pedometer.h | 36 - tags/2.05/pm.c | 1388 ------------------------ tags/2.05/pm.h | 216 ---- tags/2.05/pool.h | 24 - tags/2.05/reboot.c | 24 - tags/2.05/reboot.h | 6 - tags/2.05/renge/renge.c | 315 ------ tags/2.05/renge/renge.h | 28 - tags/2.05/renge/renge_defs.h | 55 - tags/2.05/renge/renge_task_config.rb | 59 - tags/2.05/renge/renge_task_immediate.h | 25 - tags/2.05/renge/renge_task_intval.h | 37 - tags/2.05/renge/renge_tasks.txt | 11 - tags/2.05/rtc.c | 175 --- tags/2.05/rtc.h | 21 - tags/2.05/self_flash.c | 608 ----------- tags/2.05/self_flash.h | 9 - tags/2.05/sw.c | 188 ---- tags/2.05/sw.h | 20 - tags/2.05/task_debug.c | 120 -- tags/2.05/task_misc.c | 374 ------- tags/2.05/task_status.c | 84 -- tags/2.05/task_sys.c | 637 ----------- tags/2.05/user_define.h | 234 ---- tags/2.05/voltable.c | 48 - tags/2.05/voltable.h | 57 - tags/2.05/vreg_ctr.c | 568 ---------- tags/2.05/vreg_ctr.h | 299 ----- tags/2.05/vreg_twl.c | 150 --- tags/2.05/vreg_twl.h | 127 --- tags/2.05/yav_mcu_bsr.plg | 31 - tags/2.05/yav_mcu_bsr.pri | 1028 ------------------ tags/2.05/yav_mcu_bsr.prj | 1066 ------------------ tags/2.05/yav_mcu_bsr.prk | 17 - tags/2.05/yav_mcu_bsr.prw | 8 - tags/2.05/yav_mcu_bsr.sdb | 309 ------ tags/2.05/ベースからの変更.xls | Bin 26624 -> 0 bytes 82 files changed, 16620 deletions(-) delete mode 100644 tags/2.05/OMakefile delete mode 100644 tags/2.05/OMakeroot delete mode 100644 tags/2.05/WDT.c delete mode 100644 tags/2.05/WDT.h delete mode 100644 tags/2.05/accero.c delete mode 100644 tags/2.05/accero.h delete mode 100644 tags/2.05/adc.c delete mode 100644 tags/2.05/adc.h delete mode 100644 tags/2.05/batt_params.c delete mode 100644 tags/2.05/batt_params.h delete mode 100644 tags/2.05/bsr.hex delete mode 100644 tags/2.05/bsr.lmf delete mode 100644 tags/2.05/bsr_k0r.map delete mode 100644 tags/2.05/bsr_mcu.dr delete mode 100644 tags/2.05/bsr_system.h delete mode 100644 tags/2.05/config.h delete mode 100644 tags/2.05/fsl.h delete mode 100644 tags/2.05/fsl_user.h delete mode 100644 tags/2.05/hal.c delete mode 100644 tags/2.05/hal.h delete mode 100644 tags/2.05/hoge.bin delete mode 100644 tags/2.05/i2c_ctr.c delete mode 100644 tags/2.05/i2c_ctr.h delete mode 100644 tags/2.05/i2c_mcu.c delete mode 100644 tags/2.05/i2c_mcu.h delete mode 100644 tags/2.05/i2c_twl.c delete mode 100644 tags/2.05/i2c_twl.h delete mode 100644 tags/2.05/i2c_twl_defs.h delete mode 100644 tags/2.05/incs.h delete mode 100644 tags/2.05/incs_loader.h delete mode 100644 tags/2.05/ini_VECT.c delete mode 100644 tags/2.05/jhl_defs.h delete mode 100644 tags/2.05/led.c delete mode 100644 tags/2.05/led.h delete mode 100644 tags/2.05/led_cam.c delete mode 100644 tags/2.05/led_pow.c delete mode 100644 tags/2.05/loader.c delete mode 100644 tags/2.05/loader.h delete mode 100644 tags/2.05/magic.c delete mode 100644 tags/2.05/magic.h delete mode 100644 tags/2.05/main.c delete mode 100755 tags/2.05/nec_s_2_bsrbin2.rb delete mode 100644 tags/2.05/pedo_alg_thre_det2.c delete mode 100644 tags/2.05/pedo_lpf_coeff.c delete mode 100644 tags/2.05/pedo_lpf_coeff.h delete mode 100644 tags/2.05/pedometer.h delete mode 100644 tags/2.05/pm.c delete mode 100644 tags/2.05/pm.h delete mode 100644 tags/2.05/pool.h delete mode 100644 tags/2.05/reboot.c delete mode 100644 tags/2.05/reboot.h delete mode 100644 tags/2.05/renge/renge.c delete mode 100644 tags/2.05/renge/renge.h delete mode 100644 tags/2.05/renge/renge_defs.h delete mode 100644 tags/2.05/renge/renge_task_config.rb delete mode 100644 tags/2.05/renge/renge_task_immediate.h delete mode 100644 tags/2.05/renge/renge_task_intval.h delete mode 100644 tags/2.05/renge/renge_tasks.txt delete mode 100644 tags/2.05/rtc.c delete mode 100644 tags/2.05/rtc.h delete mode 100644 tags/2.05/self_flash.c delete mode 100644 tags/2.05/self_flash.h delete mode 100644 tags/2.05/sw.c delete mode 100644 tags/2.05/sw.h delete mode 100644 tags/2.05/task_debug.c delete mode 100644 tags/2.05/task_misc.c delete mode 100644 tags/2.05/task_status.c delete mode 100644 tags/2.05/task_sys.c delete mode 100644 tags/2.05/user_define.h delete mode 100644 tags/2.05/voltable.c delete mode 100644 tags/2.05/voltable.h delete mode 100644 tags/2.05/vreg_ctr.c delete mode 100644 tags/2.05/vreg_ctr.h delete mode 100644 tags/2.05/vreg_twl.c delete mode 100644 tags/2.05/vreg_twl.h delete mode 100644 tags/2.05/yav_mcu_bsr.plg delete mode 100644 tags/2.05/yav_mcu_bsr.pri delete mode 100644 tags/2.05/yav_mcu_bsr.prj delete mode 100644 tags/2.05/yav_mcu_bsr.prk delete mode 100644 tags/2.05/yav_mcu_bsr.prw delete mode 100644 tags/2.05/yav_mcu_bsr.sdb delete mode 100644 tags/2.05/ベースからの変更.xls diff --git a/tags/2.05/OMakefile b/tags/2.05/OMakefile deleted file mode 100644 index 42baad6..0000000 --- a/tags/2.05/OMakefile +++ /dev/null @@ -1,159 +0,0 @@ -############################################################ -# 環境設定 -############################################################ - -# マイコン開発環境のインストール先を環境変数で指定する -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/tags/2.05/OMakeroot b/tags/2.05/OMakeroot deleted file mode 100644 index 16f4b11..0000000 --- a/tags/2.05/OMakeroot +++ /dev/null @@ -1,4 +0,0 @@ -# -# Include the OMakefile in this directory. -# -.SUBDIRS: . diff --git a/tags/2.05/WDT.c b/tags/2.05/WDT.c deleted file mode 100644 index 436a51c..0000000 --- a/tags/2.05/WDT.c +++ /dev/null @@ -1,2 +0,0 @@ -#include "incs_loader.h" - diff --git a/tags/2.05/WDT.h b/tags/2.05/WDT.h deleted file mode 100644 index 2e28e9d..0000000 --- a/tags/2.05/WDT.h +++ /dev/null @@ -1,20 +0,0 @@ -#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/tags/2.05/accero.c b/tags/2.05/accero.c deleted file mode 100644 index b8108a3..0000000 --- a/tags/2.05/accero.c +++ /dev/null @@ -1,270 +0,0 @@ -/* ======================================================== -@xZT֌W -Ef[^XVŃf[^zグ背WX^XVACPUɊ荞 -EtOĂΕJEg -ExZT荞݂^XNo^ĉBiI2C̋Ȃǂ̂Łj - - ======================================================== */ -#ifndef _WIN32 - -#pragma SFR -#pragma NOP -#pragma HALT -#pragma STOP -#pragma ROT -// rorb, rolb, rorw, rolw -#pragma MUL -#pragma BCD - -#endif - -#include "config.h" -#ifndef _WIN32 - -#pragma interrupt INTP23 intp23_ACC_ready RB3 // xZTAf[^ - -#endif - - -#include "incs.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 - -// 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 ) - - - - -// ======================================================== -task_status tsk_soft_int( ); - - -#define ACC_RAW_DATA_SIZE 6 -/* ======================================================== -@E荞݂mFăf[^zグAWX^ɏo܂ - E{ł΃R[obN֐o^Ă΂ƂȂ̂łA - I2CgpHƂlƎł͂܂łłȂ̂łB - EvƂł - ======================================================== */ -task_status_immed tski_cbk_accero( ) -{ // i^jisro^܂ - static u8 err_count; - u8 acc_dat_buff[ ACC_RAW_DATA_SIZE ]; - - // xZTf[^WX^ւ̔f - if( iic_mcu_read( IIC_SLA_ACCEL, ( ACC_REG_X | 0x80 ), ACC_RAW_DATA_SIZE, acc_dat_buff ) - != ERR_SUCCESS ) - { - err_count ++; - if( err_count < 8 ) - { - // gC - return( ERR_CONTINUE ); - } - else - { - // xZTُɂȂ̂Ŏ~߂ - vreg_ctr[ VREG_C_ACC_CONFIG ] &= ~( VREG_BITMASK_ACC_CONF_HOSU | VREG_BITMASK_ACC_CONF_ACQ ); - tski_acc_hosu_set(); - vreg_ctr[ VREG_C_STATUS_1 ] |= REG_BIT_ACCERO_ERR; - return ( ERR_FINISED ); // ^XN̍폜͕Kv - } - } - else - { - memcpy( &vreg_ctr[VREG_C_ACC_XL], acc_dat_buff, ACC_RAW_DATA_SIZE ); - - err_count = 0; - // 펞pX // - // xXV荞 - if( (( vreg_ctr[VREG_C_ACC_CONFIG] & VREG_BITMASK_ACC_CONF_ACQ ) != 0 ) && - ( 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 | 0x80 ), ACC_RAW_DATA_SIZE, temp ); - } - } - if(( system_status.pwr_state != ON_CHECK ) - &&( system_status.pwr_state != OFF ) -#ifndef _DBG_PEDO_AUTO_ENABLE_ - &&( ( vreg_ctr[VREG_C_ACC_CONFIG] & VREG_BITMASK_ACC_CONF_HOSU ) != 0 ) -#endif - ) - { - pedometer(); // v - } - } - return ( ERR_FINISED ); -} - - - - - -/*======================================================= -@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] ); -// vreg_ctr[ VREG_C_ACC_R_BUF ] = iic_mcu_read_a_byte( IIC_SLA_ACCEL, vreg_ctr[VREG_C_ACC_R_ADRS] ); - vreg_ctr[VREG_C_IRQ1] |= REG_BIT_ACC_ACK; - if( ( vreg_ctr[VREG_C_IRQ_MASK1] & REG_BIT_ACC_ACK ) == 0 ) - { - IRQ0_ast; - } - return ( ERR_FINISED ); -} - - - -/*========================================================= -@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] ); - vreg_ctr[VREG_C_IRQ1] |= REG_BIT_ACC_ACK; - if( ( vreg_ctr[VREG_C_IRQ_MASK1] & REG_BIT_ACC_ACK ) == 0 ) - { - IRQ0_ast; - } - return ( ERR_FINISED ); -} - - - -/*========================================================= -@xZT̐ݒ - ========================================================*/ -task_status_immed tski_acc_hosu_set( ) -{ - -// iic_mcu_read_a_byte( IIC_SLA_ACCEL, ACC_REG_WHOAMI ); // X^bNȂ̂œWJc -// if( iic_mcu_result == ERR_NOSLAVE ) - { - u8 dummy; - - if( iic_mcu_read( IIC_SLA_ACCEL, ACC_REG_WHOAMI, 1, &dummy ) == ERR_NOSLAVE ) - { - vreg_ctr[ VREG_C_STATUS_1 ] |= REG_BIT_ACCERO_ERR; - return ( ERR_FINISED ); // Ƃ肠A^XN͍폜ȂĂ͂ȂȂ - // ܂ - }else{ - vreg_ctr[ VREG_C_STATUS_1 ] &= ~REG_BIT_ACCERO_ERR; - } - } - - { - u8 str_send_buf[4]; - - str_send_buf[1] = 0x00; // ctrl2 HPF:normal, filterd, HPF for IRQ : dis/dis, HPF coeff:norm - /* - if( system_status.model == MODEL_TS_BOARD ) - { - // TS Final SoC - str_send_buf[2] = 0x02; // 3 IRQ pol :Active HI, Drive:Pushpull, - } - else - { - // @hA - str_send_buf[2] = 0x10; // 3 IRQ pol :Active HI, Drive:Pushpull, - } - */ - if( system_status.model == MODEL_TS_BOARD ) - { - str_send_buf[2] = bits8(0,0,0,0, 0,0,1,0); // sŝ߁Aƕ - } - else - { - str_send_buf[2] = bits8(0,0,0,1, 0,0,0,0); - } - str_send_buf[3] = 0x80; // ctrl3 block update:enable, MSB first, scale: +-2G(default), selftest: dis - - if( ( vreg_ctr[VREG_C_ACC_CONFIG] & - ( VREG_BITMASK_ACC_CONF_HOSU | VREG_BITMASK_ACC_CONF_ACQ ) ) == 0 ) - { - PMK23 = 1; - // S~ - str_send_buf[0] = - ( ACC_BITS_PM_PDN << ACC_bP_PM0 | 0 << ACC_bP_DR0 | ACC_BITS_ALL_AXIS_ON ); - } - else - { - PMK23 = 0; - // 100Hz 荞 - str_send_buf[0] = - ( ACC_BITS_PM_NORM << ACC_bP_PM0 - | ACC_BITS_DR_100Hz << ACC_bP_DR0 - | ACC_BITS_ALL_AXIS_ON ); - } - iic_mcu_write( IIC_SLA_ACCEL, ( ACC_REG_CTRL1 | 0x80 ), 4, str_send_buf ); - } - - // 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 | 0x80 ), 6, temp ); - } - } - return ( ERR_FINISED ); -} - - - -/* ======================================================== - xZT荞 - I2CgpȂ̂ŁAǂݏo^XN̓o^ŝ - ======================================================== */ -__interrupt void intp23_ACC_ready( ) -{ - EI(); - if( ( vreg_ctr[VREG_C_ACC_CONFIG] & 0x03 ) != 0x00 ) - { - if( ( system_status.pwr_state == ON ) || ( system_status.pwr_state == SLEEP ) ) - { - if( ACC_VALID ) - { - renge_task_immed_add( tski_cbk_accero ); - } - } - } -} diff --git a/tags/2.05/accero.h b/tags/2.05/accero.h deleted file mode 100644 index 20494b9..0000000 --- a/tags/2.05/accero.h +++ /dev/null @@ -1,14 +0,0 @@ -#ifndef _accero_ -#define _accero_ - - -#include "jhl_defs.h" -#include "pedometer.h" - - -/////////////////////////////////////////////////////////// -task_status_immed tski_cbk_accero( ); -task_status_immed tski_acc_hosu_set( ); - - -#endif diff --git a/tags/2.05/adc.c b/tags/2.05/adc.c deleted file mode 100644 index 80f41b4..0000000 --- a/tags/2.05/adc.c +++ /dev/null @@ -1,450 +0,0 @@ -/* ======================================================== - cJZ - nintendo - '09 Apr - ======================================================== */ -#include "incs.h" -#include "adc.h" -#include "pm.h" - -#include "led.h" - -#include "vreg_twl.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 - EBT_TEMP,_P - EADIN1 - EVOL - - ֌W肻łʂ̂ƂŊǗĂ܂ - EPM_BT_DET,_P BT_chk - ======================================================== */ -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; -} - - - -void vol_reset() -{ - vol_old = vol_data_ctr; - vreg_ctr[ VREG_C_SND_VOL ] = vol_data_ctr; // 64i -} - - -/* ======================================================== -@VolXV܂B - @Ȏɓo^܂B -@@E[U[VolXC_𓮂 -@@EHorizonɋXVwꂽ@icodecZbgj -@@ETWLAvVol -======================================================== */ -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( ERR_FINISED ); - } - - // ǂ̉ʂɂ́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( ERR_FINISED ); -} - - -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; - } - } -} - - - -/* ======================================================== -@OŎ̃`l -@@ʂ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 ): - EI(); - adc_raw_dep = adc_data; - break; - - case ( ADC_SEL_VOL ): - 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 ): - 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 ): - break; -*/ - } - -// Ƃ܂Ƃȏ肻 - if( ADS < ADC_SEL_BATT_DET ) - { - ADS += 1; // ̃`l - } - else - { - ADCEN = 0; // ~߂Ă܂ - adc_updated = true; - } - ADIF = 0; // ȂƁAÕ`l̃f[^̊ŒɊ荞މ”\ -} - - - -/* ======================================================== - 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/tags/2.05/adc.h b/tags/2.05/adc.h deleted file mode 100644 index 6f4ad04..0000000 --- a/tags/2.05/adc.h +++ /dev/null @@ -1,48 +0,0 @@ -#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/tags/2.05/batt_params.c b/tags/2.05/batt_params.c deleted file mode 100644 index 74d87df..0000000 --- a/tags/2.05/batt_params.c +++ /dev/null @@ -1,84 +0,0 @@ -#include "jhl_defs.h" - -#include "batt_params.h" - -/* ======================================================== - eЃobe[p[^ - ======================================================== */ -const bt_param_ bt_param[ _BT_PARAM_NUM_ ] = -{ - // ctr //////////////////////////////////////////////// - // BT_PARAM_CTR_MAXELL - { - { - 0xAE, 0xF0, 0xB4, 0x30, 0xB7, 0x40, 0xBA, 0x30, - 0xBB, 0x50, 0xBB, 0xB0, 0xBC, 0x50, 0xBD, 0x10, - 0xBD, 0x60, 0xBD, 0xB0, 0xBF, 0xE0, 0xC2, 0xB0, - 0xC4, 0x20, 0xC7, 0xB0, 0xCA, 0xE0, 0xCE, 0x10, - 0x01, 0xF0, 0x14, 0x10, 0x14, 0x20, 0x06, 0x30, - 0x63, 0x90, 0x49, 0x00, 0x6E, 0x00, 0x77, 0x70, - 0x7B, 0x00, 0x19, 0x00, 0x19, 0x00, 0x17, 0xF0, - 0x1C, 0x60, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00 - }, - 2, - { 92, (u8)(-256* 0.79), (u8)(-256* 4.35) }, - 0xD800, - { 0xEA, 0xE8 } - }, - - // BT_PARAM_CTR_PANA - { - { - 0x8C, 0x30, 0x9C, 0x10, 0xA5, 0xE0, 0xB0, 0x40, - 0xB1, 0xC0, 0xB2, 0x00, 0xB2, 0x50, 0xB3, 0x10, - 0xB4, 0x90, 0xB6, 0x20, 0xB8, 0x60, 0xBA, 0x50, - 0xBF, 0xA0, 0xC6, 0xB0, 0xCE, 0x90, 0xD0, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x7B, 0x30, 0x68, 0x60, 0x20, 0x00, 0x17, 0x00, - 0x17, 0x30, 0x12, 0xF0, 0x0D, 0xE0, 0x07, 0xF0, - 0x07, 0x00, 0x09, 0x30, 0x01, 0xC0, 0x01, 0xC0 - }, - 1, - { 171, (u8)(-256* 1.00), (u8)(-256* 2.60) }, - 0xDA20, - { 0x69, 0x67 }, - }, - - // spfl /////////////////////////////////////////////// - // BT_PARAM_SPFL_MAXELL - { - { - 0xA1, 0x20, 0xB7, 0x50, 0xB9, 0xD0, 0xBB, 0x00, - 0xBC, 0x30, 0xBC, 0x60, 0xBC, 0xA0, 0xBD, 0x10, - 0xBD, 0xC0, 0xBE, 0x70, 0xBF, 0xD0, 0xC2, 0xA0, - 0xC4, 0x00, 0xC8, 0x50, 0xCC, 0x80, 0xD0, 0xB0, - 0x01, 0xA0, 0x25, 0x10, 0x18, 0xB0, 0x17, 0xC0, - 0x95, 0x20, 0x6F, 0xE0, 0x7C, 0x60, 0x35, 0x10, - 0x35, 0x00, 0x37, 0xF0, 0x16, 0xF0, 0x1C, 0xA0, - 0x17, 0x30, 0x11, 0xD0, 0x11, 0xF0, 0x11, 0xF0 - }, - 2, - { 94, (u8)(-256* 0.35), (u8)(-256* 3.85) }, - 0xDAB0, - { 0xF5, 0xF3 } - }, - - // BT_PARAM_SPFL_PANA !!dummy!! - { - { - 0x8C, 0x30, 0x9C, 0x10, 0xA5, 0xE0, 0xB0, 0x40, - 0xB1, 0xC0, 0xB2, 0x00, 0xB2, 0x50, 0xB3, 0x10, - 0xB4, 0x90, 0xB6, 0x20, 0xB8, 0x60, 0xBA, 0x50, - 0xBF, 0xA0, 0xC6, 0xB0, 0xCE, 0x90, 0xD0, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x7B, 0x30, 0x68, 0x60, 0x20, 0x00, 0x17, 0x00, - 0x17, 0x30, 0x12, 0xF0, 0x0D, 0xE0, 0x07, 0xF0, - 0x07, 0x00, 0x09, 0x30, 0x01, 0xC0, 0x01, 0xC0 - }, - 1, - { 171, (u8)(-256* 1.00), (u8)(-256* 2.60) }, - 0xDA20, - { 0x69, 0x67 }, - } -}; - diff --git a/tags/2.05/batt_params.h b/tags/2.05/batt_params.h deleted file mode 100644 index 343b3f4..0000000 --- a/tags/2.05/batt_params.h +++ /dev/null @@ -1,49 +0,0 @@ -#ifndef _bt_params_h_ -#define _bt_params_h_ - -#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 -*/ - - -typedef enum -{ - BT_PARAM_CTR_MAXELL = 0, - BT_PARAM_CTR_PANA, - BT_PARAM_SPFL_MAXELL, - BT_PARAM_SPFL_PANA, - BT_PARAM_SHRIMP_MAXELL, - BT_PARAM_SHRIMP_PANA, - _BT_PARAM_NUM_ -} BT_TYPE; - -typedef struct -{ - u8 rcomp; - s16 up,down; -} rcomp_; - -typedef struct -{ - u8 hi,low; -} verify_; - -typedef struct -{ - u8 mg_param[64]; - u8 v_scale; - rcomp_ rcomp; - u16 ocv; - verify_ verify; -} bt_param_; - - -#endif diff --git a/tags/2.05/bsr.hex b/tags/2.05/bsr.hex deleted file mode 100644 index 0c9e1b2..0000000 --- a/tags/2.05/bsr.hex +++ /dev/null @@ -1,1001 +0,0 @@ -:020000006D0D84 -:04001000DE48E0489E -:02001C009F4AF9 -:02002400EC4AA4 -:02002A00374B52 -:08003400644C074C604C754D53 -:02004A00E2488A -:02005A001D493E -:02006200F94C57 -:0400C0007EFBFF04C0 -:0A00C4001B339499E033F240BFAA09 -:1000CE00C7C1FBF8FFCEABACC736F00071F4C6610A -:1000DE00D8710016F98EA89C018C015C10D1DD0A36 -:1000EE007110BEFB710016F9EF0B8C015C80D161B3 -:1000FE00E8710016F98F16F931030EF6B1BBF661F1 -:10010E004900DD05618900EFF5FDD401FD2801FDF3 -:10011E008001FD6402EFAEC0C6D7C7360000674C43 -:10012E0009DE3F318E04F60FC1317B9EFDC411896D -:10013E007267318E04F64F14896142DF03F6EF01C8 -:10014E00E660610667318E124900207267318E04B7 -:10015E00F64F14896142DF03F6EF01E66061068710 -:10016E00EFBC40F84F3A61E88666D161E8FDD706EC -:10017E00C6D751105B0C319E609F18F94018F901DB -:10018E00DF05CD2F05EF03CD2F078F16F95CE39F0B -:10019E0016F951035B04318EE7240000DD1023DDD8 -:1001AE000823DF0E712016F9D7713016F9D771407A -:1001BE0016F9D7717BFACEA010CEA180E5F300CE52 -:1001CE00A408F5AAFFD78F16F9310508CD0003CD87 -:1001DE000307EF03CD030ECE23F88F16F931030B71 -:1001EE00CD0408CD0508F690BFB401CF1105F8F582 -:1001FE0021FFCE22E9CE24F3CE25FACE26FCCE2741 -:10020E005FCE2EFCCF120511CF350002CF3700196D -:10021E00CF530006CBEEFEFFCE3831CE3970CF383D -:10022E00050A308700BF1801BF1A01BF1C01BF1E8F -:10023E0001D7C7C1C1FBF8FFCEABAC8C02D1DD122A -:10024E00616902305C03BBF6614900DDEE61890035 -:10025E00EFF51004C6D7FD380AFD6F09FD432FFDDB -:10026E002338FDC804717AFAFDA223F514F98F160E -:10027E00F93105135003FD522B625C01D161E8CFB9 -:10028E0014F902CFC7FB64FD2330FD7E4471025F7B -:10029E00712BE7FD2638FDC53861EDEFF6D7D7C7D0 -:1002AE00F616FDC804717BFA31225D0871225D716C -:1002BE007AFAEF0B717AFAA7F647DFE9E2EF01F26D -:1002CE00C6D7C7C1C1FBF8FF17A1C1E0C18C0A7028 -:1002DE00C18C0270FDF8021006D2DF04F437EF0372 -:1002EE00CD37028C01721004C6D7C7C1FBF8FFFDD3 -:1002FE00AD02D2DD03E2EF618B70FD1604D2DD0795 -:10030E0071235D5202EF528C0870FD3104FD7C04A6 -:10031E008B6C0170FD3104300400BF240130174096 -:10032E00BF1C01300400BF22018C0A91DF04F6BF0E -:10033E002A01710BE2CE44FF3182E202EFFAAC0CDD -:10034E00148E449961790C61690A8C0AD1DFDAFD49 -:10035E00A504710BE271235DF2C0C6D7C7C1FBF8CD -:10036E00FFFDAD02D2DD03E2EF25710AE68B70FDD3 -:10037E001604D2DD0771235D5202EF138C0870FD57 -:10038E0031048C0A70FD3104FDA50471235DF2C0A9 -:10039E00C6D7C7C1FBF8FFFDAD02D2DD03E2EF65A4 -:1003AE00710AE6710BE28B70FD1604D2DD07712324 -:1003BE005D5202EF50710BE231125D39C73432FBE0 -:1003CE00AC0C1652048B99A5A792DFF9C63184BDE9 -:1003DE0002EFFA717ABDCEB144CBB432FB8C0A3146 -:1003EE008EBEB8CEBB48714BE1714BE5710ABD8C28 -:1003FE00089E44EF0F710BE68C089E448C0A9D36C6 -:10040E00AC0CBD34F2C0C6D7C716FD5404AF040100 -:10041E00BF0C0117FD3104D2DD06FDA504E2EF018C -:10042E00F2C6D7C716710AE6710BE2669E44318298 -:10043E00E202EFFAF6420401DD09AF0401BF0C013E -:10044E00E2EF01F2C6D7AF2801085CFB08BF280116 -:10045E00FDAC02AF28015CFBBF2801300400BF2AAF -:10046E0001301780BF1C01300400BF2201D7AF241A -:10047E0001086C0408BF2401AF28016C0F086C0B37 -:10048E0008BF2801FDAC02AF2A01085CFB08BF2A99 -:10049E0001FDAC02ED5404300400BF2401F6BF2A66 -:1004AE0001300B0BBF2801FDAC02300B0FBF280132 -:1004BE00FDAC02300F0FBF2801D731345D01D7716B -:1004CE00225D710BBD0000717BBD6A0E03713B2571 -:1004DE00713B23E0FD40027120F000FDAC02F6BF3F -:1004EE0026015024BF1401CB440014300F0FBF2837 -:1004FE000171135D710BE2710AE6FD5404CE44FFE7 -:10050E003182E202EFFAFDA504AF0401BF0C0171C6 -:10051E00235D71325DD731245D02EFFAFD7C0471EB -:10052E003A25713A235A0EFC7128F00071335DD7CB -:10053E00C7880616FDAD02D2DD03E2EF38710AE67A -:10054E0050A4FD1604D2DD0771235D5202EF26176B -:10055E00FD31046770FD3104FD7C0450A4FD3104AF -:10056E005020FD3104D936FBFD3104A036FBFDA52C -:10057E000471235DF2C6D7C72008FBF8FFFDD5082E -:10058E005014C15008FD0708C0CC07048C074C144A -:10059E00DE0C8C07318EFD4F0A615907EFEECC074A -:1005AE00048C074C1461C8ED7306CC06008C064C07 -:1005BE000461C8ED5206301AF9BC02F6BBCEABACE4 -:1005CE0031B2D109C73641057184C6DEF3F1C736A3 -:1005DE0041057184C661DC9C05713BD1AC02148F60 -:1005EE0040059971505005617902617900F0E16121 -:1005FE004900DD09C73641057184C6DEC3F1C73631 -:10060E0041057184C661DC0E059C055040C18C0706 -:10061E00318E31AD128C06318E318D03BDD831FF46 -:10062E00BDDADADAADD8FD1B0DC0D2DD0C5008C133 -:10063E005014FD0708C0FDD80B8C05D1DF0661599B -:10064E0006EDBB058C07318EFD530AD2DD0C50082A -:10065E00C15014FD0708C0FDD80B8C05D1DF066113 -:10066E005907EDAF0571605005CC0400CC05008C28 -:10067E00054C09DE2B8C05318E04F61FC1317B9E95 -:10068E00FDC41189728C05318E04F64F14896142B6 -:10069E00DF03F6EF01E6600E049C04615905EFCF0F -:1006AE0041001140F81F3A61E86159048C04D1DF12 -:1006BE0008FDD90BFDEB0CEF0C5008C15014FD07D3 -:1006CE0008C0FDD80B1008C6D7C72004FBF8FF7171 -:1006DE005B21CC0100F6BC02AC02440900DE3EAC4C -:1006EE000204F60F144100118972AC020C501489E9 -:1006FE006142DF03F6EF01E6600E019C01AC0212CF -:10070E0049005072AC0204F67F14896142DF03F691 -:10071E00EF01E6600E019C01617902EFBB40F67FAE -:10072E00FF61F86159018C01D161F8EDD507CC015B -:10073E0000717AFAFDC804711300711B2071030356 -:10074E00710205E0C15003FD412BC05013FD400264 -:10075E00500FC1E0FD412BC0CEABAC6159018C01F5 -:10076E0091DD068C014C03DF03E6EF01F66061FBC1 -:10077E007151018C014C0861F8CC01003132070532 -:10078E00A044FCEF03F544FC4044FC11DC0DF544A1 -:10079E00FCF0C15003FD412BC0EF12E6BC02F66126 -:1007AE004902DDB400000000617902EFF1CE370896 -:1007BE00CBE4FFFFCBE6FFF7CED4FFCF370008F533 -:1007CE00120561FDF5ABFFFDD508D25008C15014DE -:1007DE00FD0708C0D2FDD80B1004C6D73184BD0268 -:1007EE00EFFA717BBDCBE4FFFFCBE6FFFFCBD4FF6F -:1007FE00FF717ABED7717BBED7C7C1200CFBF8FF45 -:10080E008C0C318E31ADC1317B9DD4C0BC068DD4E4 -:10081E009C088C149C0B8C14318E040C00128C0BC7 -:10082E00318EBDD813FDAA0F61C8EDD008CEABAC8A -:10083E00CC05068C0B318EFD4B0AD2DD158C0B319F -:10084E008EFD4F0A6169058C05D1DFE7FD0308E2D5 -:10085E00EF71CC0A008C0A4C04DE54F6BC02301A3E -:10086E00F9BBAC06148C089EFD118972AB1462990B -:10087E00AC06A1BC06617900617902F0E161490222 -:10088E00DFE05040C18C0B318E31AD128C0A318EAF -:10089E00318D03BDD831FFBDDADADAADD8FD1B0DCF -:1008AE00C0D2DD06FD0308E2EF1961590AEFA68CEE -:1008BE000B318EFD530AD2DD03E2EF0761590BEDCA -:1008CE002408F2100EC6D7C7717B9D717BFAFDEA24 -:1008DE0007301AF9FDFE0AFD890AC6D7FDD508FDB7 -:1008EE00D80BFD0308F5ABFFF2D7C7317460067164 -:1008FE0010CBFBEF047118CBFB8FCBFB7FF4FC7698 -:10090E00D1DD5C8FCBFB9FF4FC4014F903DF226634 -:10091E005C10D1DD1C8FCBFB5C10D1DD0B5080C188 -:10092E005011FD7634C0EF095040C15011FD7634A0 -:10093E00C04014F903DD064014F904DF22665C02A0 -:10094E00D1DD1C8FCBFB5C02D1DD0B5040C15010B2 -:10095E00FD7634C0EF095020C15010FD7634C0C66C -:10096E00D7C7360000665C80D1DD10675C80D1DFB2 -:10097E0005712360EF0B712260EF06710407712180 -:10098E0060665C40D1DD10675C40D1DF057133607D -:10099E00EF0B713260EF06711405713160665C0108 -:1009AE00D1DD10675C01D1DF05714360EF0B714241 -:1009BE0060EF06713407714160665C02D1DD10672D -:1009CE005C02D1DF05715360EF1D715260EF18406C -:1009DE0017F901DF08710402715160EF0AC7361072 -:1009EE000571C4C6715160665C04D1DD10675C048C -:1009FE00D1DF05716360EF0B716260EF0671440722 -:100A0E00716160665C08D1DD10675C08D1DF05712D -:100A1E007360EF0B717260EF06711407717160668F -:100A2E005C10D161E8715AD1C6D7F50EFCF510FCF9 -:0D0A3E00CF16FCFFCF12FCFFCF13FCFFD73B -:100A4B005208EF065203EF025206FEE600FE1B00B1 -:100A5B00DC16089F03088F0408089F040862FE2415 -:100A6B0000089F0408EEBF00EEBA00C1C514410E8A -:100A7B0011D9D0FF118FD1FF312E45C4C0D7F23120 -:100A8B00A2C401E2D79DE261DD4C09DF12717BFA52 -:100A9B00C18F06089F5FFDC0CF060800EE2700310F -:100AAB00F2FA04CF0608004C00DF05D50008DD166E -:100ABB0061DD717BFAD50608DD0ACDE31F61CD61DF -:100ACB00CDEE160061CDFED40061FFFE9A00FCF85E -:100ADB00FF0EFEB20061CDFED5004C09DF0EC18FBB -:100AEB0006086F5FFD9F0608C0EE0400CF060800E6 -:100AFB00F8E3D75200EF025202FE3700CF5EFD0043 -:100B0B00CF060800BF0408C716629F0008410011FA -:100B1B008F1A209B4100118F1B209F0108C651008B -:100B2B00FE62FFEF025205CF060800C1510CFE0A10 -:100B3B0000C0D7C1511DFE0200C0D761DD717BFA29 -:100B4B0070CEC0A59EC47CFF9EC4609EC461CDD7F1 -:100B5B0061DD717BFAC18EC45C1BFED6FFCF06082C -:100B6B0001FED7FFC061CDD731F2FA1AC1AEE4BF97 -:100B7B0050FDAEE6BF52FDAED4BF54FD30FFFFBEFD -:100B8B00E4BEE6BED4C0D731F2FA11C1AF50FDBE00 -:100B9B00E4AF52FDBEE6AF54FDBED4C0D7C1BF56C5 -:100BAB00FD13BF58FD15BF5AFD17BF5CFDC0D7AF76 -:100BBB0056FDDB58FDEB5AFDFB5CFDD7534B30521A -:100BCB005430324E323030475631323000FFC15044 -:100BDB00FEFEAB0061DD717BFACF060800FE0A005A -:100BEB00FEA4FF61CDF8E3EECF00C7FB0408BF50B6 -:100BFB00FD8FC0009C05C5C337040600BF52FD35F1 -:100C0B00363D0C300000522BFE6600C2C4C630EBE2 -:100C1B000BB800300000B8022004AF52FDB8003012 -:100C2B000F00B802AF50FD61FF520AFE3AFFECF81D -:100C3B00FF0E717BFAC1C7FB04088C05C65C80FEF6 -:100C4B000200C0D761DD717BFA70CFC0FFA59FC0DA -:100C5B00007CFF9FC000609FC00061CDD7618BFE01 -:100C6B00E2FF717BBE410011FB000017CEFC00615F -:100C7B00CB089EFDF31161C999A58392DFF7D7FECF -:100C8B00B1FED55EFDDF23C1CF0308035109FEF48E -:100C9B00FDC0D2DF37FE3800A20408CF030807518E -:100CAB0009FEE1FDD2B20408DF22C7FB0408318341 -:100CBB0002C6D7C6510AFECCFD624C1FDF06CF5EC3 -:100CCB00FD01EF04CF5EFD00C0EE5BFEC0EE55FEF6 -:100CDB00C7C1FB04088B31196C0161589BC0C6D787 -:100CEB00717BFAFE4DFEAF0408040600C114364FAB -:100CFB000C300000522DF3FE77FF8FC000FE2BFE51 -:100D0B0061CF5C807C8073C0041900CEFC0F61CB7B -:100D1B00C55404EF03C55417FE18FEC7360008BBB5 -:100D2B00629C0288089C03D1DD334C41DE2F70F1AD -:100D3B00312DB161090033081C000851FF612A41B4 -:100D4B000E118FD0FF613B118FD1FF6138DC0E8B01 -:100D5B005C03DF0964C6C4FE2BFDEECAFDC6C4EE00 -:020D6B00C3FDC6 -:100D6D0061CF5100718C7109FECBF800FEFCC10101 -:100D7D0000F6BF00F953C0F693935820FEDFF941FA -:100D8D000036864D34FEFCEF05118B99A7A517444F -:100D9D00D84DDFF53602F930FEFCEF04CC0000A78C -:100DAD0047DFF9410036D84D3420FEEF05118B9900 -:100DBD00A7A51744E04DDFF53628FE305CFEEF04A5 -:100DCD00CC0000A747DFF9FCCE0000EFFE61DD711E -:100DDD007BFABEF0ADD8BEF200AEF661CDD7C361E1 -:100DED00DD717BFABEF0ADD8BEF200DBF6FFADDCF7 -:100DFD00BEF000AEF6BDD8AEF40312ADDABEF20011 -:100E0D00AEF661CD03BDDAC2D7C3F33174D9088311 -:100E1D00C1F626D8BDD8C031750683C312F623C2DC -:100E2D00FD380E93DF0312F623C2D7440000DD26F2 -:100E3D0061DD717BFACFE80080BEF6F6BEF4BEF23E -:100E4D00ADD8BEF0CFE800818FE8003103FAAEF0E7 -:100E5D00F5E80061CDD7B1D7C3F33174D90883C19B -:100E6D00F626D8BDD8C0317505C312F623C2FD864E -:100E7D000E93DF0312F623C2D7440000DD2761DD98 -:100E8D00717BFACFE80080BEF6F6BEF4BEF2ADD8A7 -:100E9D00BEF0CFE800818FE8003103FAAFE000F536 -:100EAD00E80061CDD7ADD8D7C3F33174DB0F83C163 -:100EBD00F626D8BDD861317026DABDDAC031750D90 -:100ECD0083C312F626DCBDDC61317023C2FDEE0E4C -:100EDD0093DF0CF626D8BDD861317026DABDDAC2A3 -:100EED00D7C161686BDC6BDDC0DD2F61DD717BFA15 -:100EFD00CFE80080BEF4ADDCBEF6ADD8BEF0ADDA05 -:100F0D00BEF2CFE800818FE8003103FAAEF0BDD814 -:100F1D00AEF2BDDAF5E80061CDD7F6BDD8BDDAD7B2 -:100F2D008292DD2B61DD717BFACFE80080BEF0F699 -:100F3D00BEF2BEF46208BEF6CFE800818FE8003144 -:100F4D0003FAAFE0006072AEF0F5E80061CDD76056 -:100F5D0072F6B1D706DABDDAADDC06D8BDD861D8E8 -:100F6D00A6DAD7D1DD17C1C3DAD89DD8ADDA311CD9 -:100F7D0061EEB4D8DFF8BDDA13BDD8C2C0D7D1DD6C -:100F8D001BC1C3DADA9DDAADD8311E33311E337190 -:100F9D00F9B4DADFF4BDD813BDDAC2C0D746D8DD57 -:100FAD000771FF7177D971C0D75BDB9DDB605BDAB1 -:100FBD009DDAADDC5BD9085BD808BDD8D7C3C7F3C4 -:100FCD00728EFDC162314C4100367C4D1161A072B3 -:070FDD00C09EFD62C6C2D7F1 -:060FE400C73060FDC6D716 -:0A0FF60031373A30353A3239000045 -:0A20000031373A30353A323900002A -:10200A0005214F7B9EC5E9000104080D12171C1F0C -:10201A00080100001F003B005A0078009700B50035 -:10202A00D400F300110130014E01192634445362E1 -:10203A006E777D80807D776E625344342619100A4C -:10204A0008080808080808080A10AEF0B430B740B3 -:10205A00BA30BB50BBB0BC50BD10BD60BDB0BFE014 -:10206A00C2B0C420C7B0CAE0CE1001F014101420C8 -:10207A000630639049006E0077707B0019001900E2 -:10208A0017F01C6012001200120002005C003600F9 -:10209A00A70000D8EAE88C309C10A5E0B040B1C097 -:1020AA00B200B250B310B490B620B860BA50BFA014 -:1020BA00C6B0CE90D02000200020002000207B3027 -:1020CA00686020001700173012F00DE007F00700D3 -:1020DA00093001C001C00100AB000000670020DA2E -:1020EA006967A120B750B9D0BB00BC30BC60BCA0A6 -:1020FA00BD10BDC0BE70BFD0C2A0C400C850CC8045 -:10210A00D0B001A0251018B017C095206FE07C60F0 -:10211A003510350037F016F01CA0173011D011F029 -:10212A0011F002005E00A7002700B0DAF5F38C3048 -:10213A009C10A5E0B040B1C0B200B250B310B49048 -:10214A00B620B860BA50BFA0C6B0CE90D02000204A -:10215A000020002000207B30686020001700173024 -:10216A0012F00DE007F00700093001C001C00100BC -:10217A00AB000000670020DA696700000000000079 -:10218A000000000000000000000000000000000045 -:10219A000000000000000000000000000000000035 -:1021AA000000000000000000000000000000000025 -:1021BA000000000000000000000000000000000015 -:1021CA000000000000000000000000000000000005 -:1021DA0000000000000000000000000000000000F5 -:1021EA0000000000000000000000000000000000E5 -:1021FA0000000000000000000000000000000000D5 -:10220A0000000000000000000000000000000000C4 -:10221A0000007F7E7D7C7A7978777675747271702A -:10222A006F6E6D6C6A6968676665646261605F5E3D -:10223A005D5C5A5958575655535251504F4E4D4B53 -:10224A004A494948474645434241403F3E3D3B3A59 -:10225A00393801020203030200FEFBF7F3F0F0F340 -:10226A00FA041225384D5F6E777A776E5F4D3825FE -:10227A001204FAF3F0F0F3F7FBFE00020303020282 -:02228A00010051 -:10228C008F04F9B004F9D1DF47CF04F91EFD3B23CD -:10229C00FDDD2231325C0D31045C093122600571A7 -:1022AC003304EF03713204FD142331225C057142B7 -:1022BC0002EF03714302D42ADD05B42A71420231C4 -:1022CC004402067140CBFBEF047148CBFBFD10269A -:1022DC00D74A284BDC134A28B9DE0E4005F928DE14 -:1022EC0004A005F9D771335CD74A283EDC054A288F -:1022FC00BDDC0E4006F928DE04A006F9D771325C6D -:10230C00D7F505F9F506F9D73132600E4007F90219 -:10231C00DE04A007F9D771235CD73132040A40C719 -:10232C00FB3CDE0471235CD771225CF507F9D7C73F -:10233C00C1FBF8FF71445C712760DE57712460713A -:10234C00415C312260127130CBFB5002C15011FD47 -:10235C007634C0CD2A32EF3B7138CBFBE0C1501143 -:10236C00FD7634C0F42A17C15002FD292BC0D2DFF0 -:10237C000D8B318E318D080E01081C00BD2CAD2C3F -:10238C0044009BDC05D5C7FBDF095020C15011FD73 -:10239C007634C0C0C6D7C78D2076FDE423FD5D2BF7 -:1023AC00D517F9DD0571035CEF2C664B2061F83114 -:1023BC00545C1A71535CFDC804664C07DD0381DF65 -:1023CC00098F16F9310303FD6D24FD812471025C24 -:1023DC00306425FD7B38C6D7C7716201717201501C -:1023EC0005FD40025008FDF836629D285009FDF8A5 -:1023FC00366276716301711816F94A28F1DC05E52D -:10240C0017F9EF224A2804DE1ACF17F9025008C137 -:10241C00506CFDD002C092DF0DD437DF097110165D -:10242C00F9EF03F517F94017F901DF05710A22EFEF -:10243C0006710B22710302CD20075700674C08DE92 -:10244C001073090A20614EDC05679D20EF0387EFAE -:10245C00EB4A2007DF09D517F961F8CF17F903C646 -:10246C00D7500AFD4002304000C15006FD0C2BC075 -:10247C005096ED4002C72006FBF8FFD517F961E82E -:10248C00ED6025304A57C1503EFD0C2BC0D2DD0704 -:10249C007100CAFBED60257108CAFB17040200C16C -:1024AC005004C1500CC1506CFDF8021006EA30AA61 -:1024BC0048318D12AA48318E616B08616A08C1508F -:1024CC000EFD0C2BC0F690C1500CFD0C2BC0CC019A -:1024DC00008C014C04DE2831245D02EFFA71125D90 -:1024EC00EA308C015010D605C15010C18C01D604B5 -:1024FC004000C1506CFDA0031006615901EFD25091 -:10250C00A5FD4002EA30AA48318D12AA48318E61ED -:10251C006B08616A08C1500EFD0C2BC050A5FD4024 -:10252C00025004C1506CFDD002C0629C01EA308A9A -:10253C004B4E0161C3048A4A4E0117040200C1507C -:10254C0004C1500CC1506CFDA0031006F6C1503EE6 -:10255C00FD0C2BC01006C6D7C78F08F94B2861F8A5 -:10256C00ED0D26400AF928DE06A00AF9ED0D26F538 -:10257C000AF98D289F08F98D285070D612307351A6 -:10258C00230480001231FF318E039F09F99FC6FB93 -:10259C00F68F09F97C804C95DC1C8F09F9318F245E -:1025AC001400EA30BDD8AA44FDDA0D1231FF318E89 -:1025BC0003318F16EF1A8F09F9318F241400EA308A -:1025CC00BDD8AA46FDDA0D1231FF318E03318F16BC -:1025DC00EA308A427217F3031644000171FE61C897 -:1025EC0036FF001701DE02F61617BD4EC7500CFD64 -:1025FC000C2BC0D2DF078D289F08F9EF047100CA9D -:10260C00FBF2C6D7C72008FBF8FF4017F901DD061F -:10261C004017F902DF1C17040600FD042CD2DF0A58 -:10262C008C069C058C079C04EF4ACC0563CC0400FB -:10263C00EF4217040600FD042CD2DD0F7100CAFB1B -:10264C0071035CCC050071025DEF298C06318E3173 -:10265C008D080E07081C00BBEA308A4072ABFD2DBA -:10266C000FBB8C019C05D1DF08CC0501CC0400EF1D -:10267C00038B9C0417040600FD0F2CD2DD06CC0640 -:10268C00C8CC07008C069FC9FB8C06318E318D0897 -:10269C000E07081C00BD2CAD2C4401A5DC09CC0395 -:1026AC0064F6BF0CF9EF52AD2C220CF94401A0DCFE -:1026BC0009CC031EF6BF0CF9EF3FAD2C44819DDC19 -:1026CC000BCC030A30F401BF0CF9EF2DAD2C4401F7 -:1026DC009BDC0BCC030530F401BF0CF9EF1BAD2CCC -:1026EC00440191DC0BCC030030F401BF0CF9EF0971 -:1026FC0071025D30F401BF0CF93132040C31245CF1 -:10270C0008CC0564CC0400EF0D8C034E05DE078C61 -:10271C00039C05CC04008C059FC7FB8C049FC8FB55 -:10272C00FD912B8F0EF94E05DD2B40C7FB0BDE0602 -:10273C00400EF90BDE1640C7FB06DE06400EF9060E -:10274C00DE0AD5C7FBDF0ED50EF9DD095020C150CE -:10275C0011FD7634C08FC7FB9F0EF9FDCE2B1008F0 -:10276C00C6D7C7D82FC15002FD412BC04018F90164 -:10277C0061F8712010055012FD40028D2F6C08700D -:10278C00C15002FD412BC05003FD40028D2F6C182F -:10279C0070C15002FD412BC05016FD40025003FD8C -:1027AC00522B625C01D1DD107170CBFB5002C15019 -:1027BC0013FD7634C0F2EF01E2C6D7C75004FD52C8 -:1027CC002B625C03D1DD405014FD5E2834CBFB89B9 -:1027DC005C9F998A0C7CFF50FF5C14D1DD228A0C23 -:1027EC007CFF5C147234CFFB89616A997162075665 -:1027FC0000316207058666D1DFF7716307716B27BD -:10280C0034DEFB895CEB99712810055002FD522BCC -:10281C00D2DD354018F901DF05500AFD40028D2F3D -:10282C006C1070C15002FD412BC0E0FD4002D82F4E -:10283C00C15002FD412BC05033FD4002F0C150028B -:10284C00FD412BC07178CBFBE0C15013FD7634C039 -:10285C00C6D7C7C12004FBF8FFCC02005004FD52C0 -:10286C002B629C038C045C20D1DD0E8C036C019CD0 -:10287C00038C026C209C02EF138C045C10D1DD0CD9 -:10288C008C035CFE9C038C026C109C028C045C0818 -:10289C00D1DD0E8C036C029C038C026C089C02EF45 -:1028AC00138C045C04D1DD0C8C035CFD9C038C024A -:1028BC006C049C028C03D1DD05501AFD40028C0384 -:1028CC0070C15004FD412BC08FCBFB5C9F728C03FD -:1028DC00318E316D148C03318E314D616D08616C0C -:1028EC005C606162629FCBFB8FD7FB7CFF50FF5E0D -:1028FC0002D1DD278FD7FB7CFF5E027234CFFB89C0 -:10290C00616A99716207CC01003162070861590153 -:10291C008C01D1DFF4716307716B27F21006C6D7F7 -:10292C00D9BFFBC15006FD412BC0D9C0FBC150071C -:10293C00FD412BC0D7FD2C29F2D7C7711300711B99 -:10294C0020710303710205E0C15003FD412BC050FF -:10295C0013FD4002F0C15005FD412BC0500FC1E0EA -:10296C00FD412BC0500AFD40027103055008FD408B -:10297C0002501FC1E0FD412BC05012FD400250031C -:10298C00FD522B625C01D1DF03E2EF24F0FD522BF0 -:10299C00629D2E3602F9C75008FD292BC05003C189 -:1029AC00FD412BC0710203711A20FDE92AF429F2B2 -:1029BC00C6D75003FD522B625C01D1DD155014FDBE -:1029CC005E28FDC7275014FD4002E0C15003FD41B5 -:1029DC002BC0711300711B207103035014FD4002B6 -:1029EC00F0C1E0FD412BC0F0C15003FD412BC0D71D -:1029FC00C72004FBF8FFCC02008D299C035010C1AA -:102A0C0050A4FDD002C0629D29D437DD04F2EDC67E -:102A1C002A8C037B295C08D1DD0F8D295C08D1DF62 -:102A2C0005CC0210EF03CC02208C037B295C04D173 -:102A3C00DD158D295C04D1DF088C026C049C02EF3F -:102A4C00068C026C089C028FCAFB5CF3728D295CAD -:102A5C000C6162629FCAFB8FD6FB7CFF50FF5E024B -:102A6C009C02D1DD1F34CEFB896E0299716207CCBA -:102A7C000100316207086159018C01D1DFF47163E7 -:102A8C0007716B278D295C40D1DD095002C15012B2 -:102A9C00FD7634C08D295C01D1DD08E0C15012FDFA -:102AAC007634C0717AFA8D295C41D1DD0C5A29BE7D -:102ABC00D829C15010FD3E05C0F21004C6D7FD6EDA -:102ACC0027F2D7FDC727F2D7C78FDEFB7617FD5E3F -:102ADC0028664FDEFBDFF2F5DEFBF2C6D75064FD55 -:102AEC004002FD1A2C6261FB71115CF171145C6186 -:102AFC00DC70C15012FD3E05C0FD1C36CD3D03D728 -:102B0C00C7C1C1FBF8FFAC0ABB17C15002C18C0294 -:102B1C0070C1506CFDA00310061004C6D7C7C1FBD2 -:102B2C00F8FFAC08C15002C18B70C1506CFDF802AB -:102B3C001006C0C6D7C78806166770C1C75084FD7B -:102B4C006A031004C6D7C716C75084FDD002C0C68E -:102B5C00D7C74A2004DE045600EF0256014018F98C -:102B6C0001DF048686EF0A4018F902DF0451046184 -:102B7C000666318F12504CD633514CD6610A045430 -:102B8C0020BD30C6D740C7FB51DC05CF1EFC0FD78C -:102B9C0040C7FB33DC05CF1EFC0BD740C7FB0BDC5F -:102BAC0005CF1EFC07D740C7FB0661D831320405A0 -:102BBC00CF1EFC03D7D5C7FBDD04E51EFCD7F51EE5 -:102BCC00FCD7D514F9DF0471635CD7FD1A2C626154 -:102BDC00FB71715C71145C71775C61C831625C175C -:102BEC0071625C71745C71115CF171745C61DC70AC -:102BFC00C15012FD3E05C0D7C716C75004FD292B86 -:102C0C00C0C6D7C716C75002FD292BC0C6D740C7B0 -:102C1C00FB0BDE02E2D7F2D771000105717850058B -:102C2C00713AD5713BD18F10055CFC9F1005CF54C8 -:102C3C00054AE54205711042057100420571485084 -:102C4C00057130500571205005CF530505CF520545 -:102C5C000A7130510571205105713BD571705005C9 -:102C6C008F11055CFC9F1105F422D771785005710A -:102C7C00080105D77140F00071783002713AE671A5 -:102C8C003BE2713BEA713BEE8F10055CFC9F10053B -:102C9C00CF34024AE552FF711A52710A5271483010 -:102CAC00027130300271203002CF330205CF320274 -:102CBC000A71303102713BE6717030028F11055C84 -:102CCC00FC9F110571603002D7717830027148F0A9 -:102CDC0000D7C788061666614FDD0967614EDE03B3 -:102CEC0096EF01866672C6D7C7161714AA0412A9E6 -:102CFC0043DD29AA0412A923FDE04DC3AC02FDE07B -:102D0C004D13C2BDD813FDAA0FDE0C1714AA021264 -:102D1C00AA0403BA04EF051714A9BA04AC041231BF -:102D2C00FF319E03317F087208C6D77100F2003064 -:102D3C004400BFB601300188BF9001300984BF9EAA -:102D4C0001BF9C01BF9A01BF9801BF9601BF9401BE -:102D5C00BF9201F53CFF30FE00BFBE01F6BFBC01C7 -:102D6C00BFB80150EEBFBA01A1BFB201C918FE0035 -:102D7C00F6BE6EBE64BE6A7123047153078F16F9DA -:102D8C00310507F5E5FBCB6CFF0071535D71425DBE -:102D9C00D730EF00BFB401F6BFBA017108F2007171 -:102DAC00230471530771435DD78F9CFBB09CFBD1FF -:102DBC00DF7331D4D106715BD1E59EFBD59EFBDD73 -:102DCC00347140CAFBD99DFBF1E734020023DD06C8 -:102DDC0025DD0325DF05F6BE66EF06D9E4FBF1BE63 -:102DEC0066A09DFB409DFB20DF06F59DFBB09EFB86 -:102DFC00CF9CFB19D7CF9CFB1E7148CAFBD5E6FBB9 -:102E0C00DF04F6BE66D7D9E4FBF14266FFDD16D9C6 -:102E1C00E4FBF112AE6643DE05A266FFEF03B26679 -:102E2C00FFCF9CFB03D7C7161714F6B9AA0412F6EA -:102E3C00231231FF31AE03316FBA02C6D7C7C1FBC3 -:102E4C00F8FF8C085080D612AB1413B9AB14AA043B -:102E5C0012A92312D939FBF133BDD813FD160EBAC2 -:102E6C0002C0C6D731645D01D74014F902DF10F6F9 -:102E7C00BE64BE6EBE6ABFA6FBBFACFBBFB2FB316D -:102E8C00545D1530A2FBFD322E30A8FBFD322E30E6 -:102E9C00AEFBFD322EED242F31745D0F71735D711D -:102EAC0008EAFBF5A0FBF59FFBEF6DD59FFBDF65FB -:102EBC008F38FB9F9FFB40A0FB1FDC1A7100EAFBC5 -:102ECC00403AFBFFDD22A0A1FB8F3AFB4FA1FBDEBA -:102EDC0017F5A0FBEF12D9A0FBF1A1605C1F9FA01E -:102EEC00FB7108EAFBF5A1FBE9A0FB093CFB70C1F7 -:102EFC0030A2FBFD492EC0E9A0FB095CFB70C13080 -:102F0C00A8FBFD492EC0E9A0FB097CFB70C130AECB -:102F1C00FBFD492EC0B09FFB30A2FBFDF42CF3133C -:102F2C00BE6E30A8FBFDF42CF313BE6A30AEFBFD75 -:102F3C00F42CF313BE64D7C736F00071F4DC29719E -:102F4C0070F000CE9D08CE9EC0CE9F80F594FFF50C -:102F5C0093FFF592FFE597FFE596FFE595FFE59862 -:102F6C00FFCE9C7F7100BEFB711BE3712BE3711ACA -:102F7C00E7712BE7717A9D710A9E31929E02EFFAEE -:102F8C00710B9E71035E71135E71235EC6D7C731E0 -:102F9C00025E1E71025E710A9E31929E02EFFA343D -:102FAC00ECFB3692FF52078B99A5A792DFF9710BB8 -:102FBC009EC6D7C788061631125E1571125EC734CD -:102FCC00B4FB3092FF1652078B99A5A792DFF9C676 -:102FDC0066736718B4FBC6D7C771035E31145E1EE7 -:102FEC0071135E710A9E31929E02EFFA3492FF3693 -:102FFC00B4FB52078B99A5A792DFF9710B9E312474 -:10300C005E1371235E717B9E8FF4FB9E9A8FF5FB92 -:10301C009E9B717A9EC6D7CFBFFB5CCFC0FB5FCFA8 -:10302C00E0FB5DCF14FC36CF15FCC9E5EBFBD7C735 -:10303C00CFBCFB12CFBDFB05CFE4FBFFF5E5FBF5E9 -:10304C00E6FBF5E7FBF5E8FB5600664C64DE087220 -:10305C003838FB0086EFF3C6D7C788061617F1E79A -:10306C003403002361E3EDAB332361F8ED5631B14A -:10307C002361E3ED60312561F8ED6F31B1240D0072 -:10308C0061D8EDAB33240B0061F8ED90312361F87E -:10309C00EDD7312361F8EDA4312361F8ED6F3324C2 -:1030AC00060061F8ED4032B12561D8ED5C322400A8 -:1030BC000061F8ED69322361F8EDAB332361F8ED73 -:1030CC008933B12361E3ED8C322361F8ED9D32231A -:1030DC0061F8EDAE322361F8ED9D322361F8EDBF5E -:1030EC00322361F8EDD0322361F8EDDF322361F841 -:1030FC00ED01332361F8ED0D332361F8ED19332322 -:10310C0061F8ED22332402002361E3EDAB3324029A -:10311C000061F8ED2B332361F8ED38332561F8EDC0 -:10312C004433B124060061D8EDAB3324000061F8C0 -:10313C00EDAD332561F8ED503324120061F8ED6AE2 -:10314C00332361F8ED5B33EDAD3334BEFB89615F46 -:10315C0099EDB733304129FD7B3866736718BCFB9A -:10316C00EDB73340C1FB6ADF1440C2FB68DF0E676A -:10317C004C6CDF0930A441FD7B38713AD5679FC395 -:10318C00FBEDB73367D1DD0D30D13CFD7B3834DC42 -:10319C00FB89616F99EDB733675C02D1DD0830CAEA -:1031AC002AFD7B38EF0C675C01D1DD0630CF2AFDA0 -:1031BC007B38675C3CD1DD1030D42AFD7B38675CF2 -:1031CC003C7266736218BCFBEDB73367D1DD625C91 -:1031DC0001D1DD05300800EF01F6609F1BFC675C38 -:1031EC0002D1DD03E6EF01F6341BFC8961689967B7 -:1031FC005C04D1DD04E6A1EF01F6341BFC896168A7 -:10320C0099675C08D1DD05302000EF01F6341BFC1A -:10321C0089616899675C10D1DD05301000EF01F60B -:10322C00341BFC89616899675C20D161E871601B73 -:10323C00FCEDB733D432DF08679FE5FBA432EF0D0A -:10324C004A3205DE08E83267184BFDA432EDB7337D -:10325C00675C0F7266736218BCFBEDB7334A32645D -:10326C00DE1B4A3201DF0667D161F85701E832678D -:10327C001838FBA4324A320561C871725DEDB73360 -:10328C00675C7F70C117F1243000FDBF2FC0EDB714 -:10329C0033675C3F70C117F1243000FDBF2FC0EDC8 -:1032AC00B733675C0770C117F1243000FDBF2FC026 -:1032BC00EDB733675C1F70C117F1243000FDBF2FD1 -:1032CC00C0EDB7336770C117F1243000FDBF2FC0BC -:1032DC00EDB733CEABAC710A9E31929E02EFFAD5AC -:1032EC0092FFDF05710B9EEFED679E99710B9E9F10 -:1032FC00F3FBEDB73371225E675C7F9FF4FBEDB798 -:10330C003371225E675C3F9FF5FBEDB733675C3F23 -:10331C009FF6FBEDB733675C1F9FF7FBEDB73330C0 -:10332C00883AFD7B38679FFCFBEDB73330433AFDA1 -:10333C007B38679FFDFBEF7330653AFD7B38679FE9 -:10334C0000FCEF67675C01D161E8FD7E44EF5C4AED -:10335C0038C8DE57E83867186AFAA438EF4D679D0D -:10336C0038EF4867318E247000DD0D240200DF3BFE -:10337C0030EA08FD7B38EF3371625FEF2E675C013A -:10338C00D1DD05711202EF03711302675C02D1DD0E -:10339C0005712202EF03712302679FEBFBEF0CEF29 -:1033AC000A664C5BDE05736718BCFBC6D7C716668E -:1033BC004C30DC094C37DE05FD9A2FEF6E664C0263 -:1033CC00DF1F8FBEFB5C03728F1DFC5C03318E31E3 -:1033DC006D08616A08128F1DFC5C80312A6162EFF6 -:1033EC0059664C3DDF0AAE90BF18FCF918FCEF4A49 -:1033FC00664C3EDF05F919FCEF40664C4FDF05FDCE -:10340C00A644EF36664C61DF08E838096AFA72EFB9 -:10341C0029664C7FDF05FD473DEF1F664C4EDF0BE9 -:10342C0031745F045210EF12F2EF0F664C5BDC0448 -:10343C0052FFEF06667309BCFB72C6D7C788061627 -:10344C0017F1241000240500DC07244C00DD17EFD5 -:10345C0017717BFA17F104BCFB1489617F99717A9F -:10346C00FA71325EEF02A438C6D7C7C1C1FBF8FFB0 -:10347C004014F903DD064014F904DF2F8C027309A4 -:10348C00C4FB5E0AD1DF248C02318E04BCFB148990 -:10349C006E0A99716207CC0100316207086159010B -:1034AC008C01D1DFF4716307716B271004C6D7CF81 -:1034BC001DFC03F51BFCF51FFCF521FCD7C788068A -:1034CC001617F1E734020025DD3D23DD1725DD1C41 -:1034DC0023DD0523DD2BEF3B71625E679F20FCCD66 -:1034EC003D03EF2F675C839F1DFCEF27675C039FF9 -:1034FC001FFC675C034C0261F8711260FD9946EF8A -:10350C0012679F21FCEF0C6791DF08E0C15012FDA0 -:10351C007634C0C6D7C71617F1E7240000DD2A237E -:10352C00DD1E240300DD0724FB00DD24EF25312202 -:10353C006005308000EF01F6086F1EFC7208EF1971 -:10354C008F1BFCF51BFC72EF1071425F5235EF09BB -:10355C00F2EF066673091AFC72C6D7C71617F1E7A5 -:10356C00240000DD38241000DD1C23DD1C23DD309D -:10357C00240E00DD18241100DD1B240F00DD1224A5 -:10358C003000DD15EF1EE2EF1D5202EF195204EF71 -:10359C00155206EF115205EF0D5207EF09F2EF0627 -:1035AC005203EF0252FFC6D7C731445E3771435EF8 -:1035BC008D3C9FC4FB8D3B9FE3FB3604FDC7D83B82 -:1035CC00FD2937618A70618AFD6E37C0D840F131B0 -:1035DC002F609D3F8D3A4B3FDD0A71525E8D3F9DB2 -:1035EC003ACD3D034A3D05DE09302636FD7B38CD0C -:1035FC003D6BB43D7150F000CE300BCF170006CEB2 -:10360C003106FDAC02717A30710BE3710BE7C6D752 -:10361C008D3F9D3A8D3F9FC5FBD74014F903DF06C4 -:10362C004014F904DF02F2D731545E0D71535E7110 -:10363C00735E8D3F9F2AFCEF3831645E2371635EAD -:10364C0071725ED520FCDF05F52BFCEF0B8F20FC97 -:10365C005002D6A1609F2BFC8F2BFC9F2AFCEF11F4 -:10366C0031745E088F2BFC9F2AFCEF058D3F9F2A3F -:10367C00FC8F2AFC9FC5FBD92AFCFD9936E92AFC54 -:10368C00091C2270C15013FD3E05C0F2D7C7C1C141 -:10369C00FBF8FF8C02D1DF05F520FCEF1A8C024CF5 -:1036AC0005DE06CF20FC02EF0E8C02318E1231FEAD -:1036BC0003311F609F20FC8F2CFC4F20FCDD29CC9C -:1036CC00011F8F20FC9F2CFCCC00008B4C08DE14BF -:1036DC008B730912204F20FCDC058B9C01EF0561DC -:1036EC005900EFE78C019D3E1004C6D7C716710A2E -:1036FC00E7710BE37150F000CE300BCF170006666C -:10370C009E31FDAC02717A30710BE33182E302EF32 -:10371C00FA8D1F7158F000710BE772C6D7C7C1C183 -:10372C00FBF8FF8F14FC4E02DC03F2EF318C024FDE -:10373C0015FCDC0452FFEF268C022F14FC70613157 -:10374C00318D128F15FC2F14FC70613133BDD813E1 -:10375C00FD380EBB440001DC03F690BB8B721004E9 -:10376C00C6D7C7C1FBF8FFAC0814A91489708B61CC -:10377C0028706131FDE04D1344030071FEDC23AC75 -:10378C0008148A04819A04AC08148A044C11DC10C5 -:10379C00A9148B99AC0814CA0200AC0814CA031003 -:1037AC00EF72AC0814CA0400AC0814A914894DDEDD -:1037BC000AAC08148A02819A02EF12AC0814A914FC -:1037CC00894D61D308AC08148A02919A02AC081492 -:1037DC008A03919A03D1DF3CAC08148A024C10DFA7 -:1037EC0010A91489318EA112AC0814A9146299EF96 -:1037FC0017AC08148A024CF0DF0EA91489318EB173 -:10380C0012AC0814A9146299AC0814CA0200AC08D2 -:10381C0014CA0310C0C6D7ED6638717BFAC7D44200 -:10382C0061F831045F2E71045F71215F71035FD405 -:10383C0042DD05B442CEABAC717AFA5600664C0A46 -:10384C00DD1272F3311C790AFDCEFC0061CAFDC594 -:10385C003886EFE9717AFAF2C6D7C75600664C0A79 -:10386C00DE0BF0317E12F6782EFC86EFF0C6D7C751 -:10387C00C1C1FBF8FFCC01008C014C0ADE36717B18 -:10388C00FA8C01F0317E042EFC14A96168DF09ACBE -:10389C0002B9717AFAF2EF1D8C01F0317E12792E99 -:1038AC00FC614902DF06717AFAE2EF09717AFA617A -:1038BC005901EFC4E21004C6D7C72004FBF8FFF689 -:1038CC00422EFC61F8EDA739717BFA9C038C034CFA -:1038DC000ADE3C8C03F0317E042EFC14A96168DFF7 -:1038EC0005717AFAEF29717AFA8C0372F3311C792B -:1038FC002EFCCEFC0061CA629C02D1DF0A8C03F064 -:10390C00317E12E6782EFC717BFA615903EFBECC46 -:10391C000200CC01018C02F0317E042EFC14A96152 -:10392C0068DD788C02F0317E12792EFCE743DF657E -:10393C008C014C0ADE5F8C01F0317E12792EFCE793 -:10394C0043DD4D717BFA8C01F0317E042EFC14A901 -:10395C006168DF186169018C01F0317E12F6782EF6 -:10396C00FC8C024E01DCED717AFAEF2F8C01F031F8 -:10397C007E042EFC14A9128C02F0317E33782EFCBE -:10398C008C01F0317E12E6782EFC615902717AFAC4 -:10399C00615901EF9B615902ED213900F21004C607 -:1039AC00D7C7200CFBF8FF17040600C15006C15006 -:1039BC00A8C15030FDF8021006D2DD1DA042FC401B -:1039CC0042FC08DE03E2EF6B34FCFB895CFC99FDE6 -:1039DC00883A7110CAFBF2EF5A300600C117040680 -:1039EC0000C13001FCFDE84D1004F542FC8FFCFBDE -:1039FC005C01D1DD264014F903DF205010C180FD9D -:103A0C007634C0C736100571D4C6DE0F17C1500608 -:103A1C00C150A8C15030FDF80210064014F901DD68 -:103A2C00114014F905DD0B8FFCFB5C02D161E8FD44 -:103A3C00A941F2100CC6D7D9FDFBC15030FDD00204 -:103A4C00C0629F00FC7130CDFB8FD5FB5C08D1DFD1 -:103A5C0006716307716B27F2D7D900FCC1D9FFFB44 -:103A6C00C15030FD6A0310047130CDFB8FD5FB5C67 -:103A7C0008D1DF06716307716B27F2D7C72006FBED -:103A8C00F8FF17040500C1E0C1500FC15030FDF81C -:103A9C00021006624C02DF077110CAFBF2EF5F7175 -:103AAC0018CAFBCC03004017F901DF05CC0402EF68 -:103ABC0003CC0410CC05808FFCFB5C03D1DF0871B8 -:103ACC007AD5CC0207EF06717BD5CC022F170402F6 -:103ADC0000C15004C150A0C15030FDA0031006C756 -:103AEC0036100571D4C6DE154014F903DF0F17C16B -:103AFC005006C150A8C15030FDF8021006F2100655 -:103B0C00C6D7D514F9DF03F6BD444014F901DD0D19 -:103B1C00D546FCDD04B046FCD7CF46FC038F14F928 -:103B2C00318FE723DD0B24020024030061C8ED363E -:103B3C003C8F16F931233E301B004644DF0AE0C1AE -:103B4C005010FD7634C0EF1D3077014644DF16501F -:103B5C0002C15010FD7634C0F6464ADF088FE0FBF8 -:103B6C005010D6BD4AF6464ADD36B64A464ADF30D4 -:103B7C0071025DEF2B301B004644DF13F6464CDF21 -:103B8C0018E0C15010FD7634C0C94C5307EF0A3011 -:103B9C007701464461F871025DF6464C61E8B64C1B -:103BAC003144600871335FF6BD44EF1431345F0566 -:103BBC00F6BD44EF0BA644F6464461F8C944FFFF3A -:103BCC00315260194A4605DE16A4464A4605DF0FF7 -:103BDC00A4465004C15010FD7634C0EF02F44631B7 -:103BEC005460194A4805DE16A4484A4805DF0FA45C -:103BFC00485008C15010FD7634C0EF02F448D44947 -:103C0C00DD03B449D7316260174A4705DE14A44777 -:103C1C004A4705DF0DA4475010C1FD7634C0EF02B2 -:103C2C00F4474A470661F8CD4925D7C736100571C8 -:103C3C00D4DE0730AD39FD7B38D24014F903DF1DDB -:103C4C003122070630FC29FD7B3831445F0C71436F -:103C5C005F5080C15012FD7634C0FD783CFDA33C12 -:103C6C0031645F0671635FFD7843C6D78F1DFC5CC2 -:103C7C0001D1DD22D549FCDD04B049FCD7CF49FC8C -:103C8C00098D3E4F48FCDD0E8D3E9F48FC5040C1D7 -:103C9C005012FD7634C0D74014F903DD04F6BD1A7A -:103CAC00D7D5E8FBDF08F6461ADD19B61AD7D9E4E2 -:103CBC00FBF1461ADD0ED9E4FB12AD1A43DE03A666 -:103CCC001AD7B61AD7717BFAC78FDCFB76F5DCFBFB -:103CDC00717AFA5C10D161E871525F665C0FD1DDCC -:103CEC0057665C01D1DD05F514F9EF4C665C02D129 -:103CFC00DD11E0C15003FD412BC0711300711B207D -:103D0C00710303665C04D1DD11711300711B20D5A6 -:103D1C001DFC61F8710303FDBB34665C08D161E8DE -:103D2C007103035005FD40027102035003C1FD41B4 -:103D3C002BC0711A20FDE92AF2C6D7C756FF4A32AA -:103D4C001361C8ED213E8F16F9311505300400EFD3 -:103D5C000F8F16F9314505300500EF04D917F9F12D -:103D6C00609F4CFC8D4E9F4DFC71345CE6613012B3 -:103D7C0071045C61DC31196162629F4EFCE54FFCA1 -:103D8C0031140205308000EF01F6C131346005308A -:103D9C004000EF01F6C2616B08616A08C13134045E -:103DAC0005302000EF01F6C2616B08616A08C13171 -:103DBC00240205300800EF01F6C2616B08616A0845 -:103DCC00C131646005300400EF01F6C2616B08611B -:103DDC006A08C131546004E6A1EF01F6C2616B08B8 -:103DEC00616A08C131446003E6EF01F6C2616B08F9 -:103DFC00616A9F50FCF171240461DC9F4AFCF171F3 -:103E0C00540761DC9F4BFCD832F101041EFD14A950 -:103E1C00148976A4326672C6D7C7FD6F098F14F960 -:103E2C00318FE724000061F8ED014023DD1B236195 -:103E3C00F8ED0B3F2361F8ED873F2361F8EDD03FA0 -:103E4C002361F8EDA140EDFE3F4015F901DF303163 -:103E5C0024601FF64644DD05F544FDEF03A044FD48 -:103E6C004044FD65DC0FF6BD44F514F971025FEDBD -:103E7C001D41FDA223AD44440A0061D8ED1D4171E2 -:103E8C00325FFDC80471535CFDA2234017F903DFB8 -:103E9C000971025FF514F9ED1D41FD102640C9FBB7 -:103EAC009BDE0D3124600971025FF514F9ED1D41A3 -:103EBC00714A277140110571301105713A22715AFE -:103ECC002271501105FD4629D2DD0971025FF514EE -:103EDC00F9ED1D4171103500CF37001D71401205F1 -:103EEC004015F901DD064015F903DF05F5E5FBEF9B -:103EFC0004CFE5FB03CF14F902FD2C29ED1D41FD88 -:103F0C00242CFD802C714A9DFDBB34FD3B30F537D4 -:103F1C00FF712BE0F515F971025FCBE43FEFCBE6B7 -:103F2C00F6F0FDC804713BD47112027123028F1696 -:103F3C00F93105285004FD522B625C03318E315D42 -:103F4C0034CBFB896168995002FD522BD2DD06718E -:103F5C0070CBFBEF047178CBFBFDA223FD372D71E9 -:103F6C000816F9CF14F9038FBEFB5C02D1DD0950A2 -:103F7C0080C15010FD7634C0ED1D41FD1F41315400 -:103F8C005F2FA450D450DD0831A4E00A31020C0696 -:103F9C00712BE0FD954131A4E01731040C13712B0A -:103FAC00E05027C15005FD412BC0CF14F90471021C -:103FBC005FFD8A418F16F931250731246003F51412 -:103FCC00F9ED1D41FD1F4131020C14F0C15005FDEE -:103FDC00412BC05005FD4002FD9541CF14F903FD66 -:103FEC008A418F16F931250731246003F514F9ED58 -:103FFC001D41F514F9CFE5FB03F5E6FBF5E8FB7184 -:10400C00525DF6426CFF61E8ED1D41F6BD4A71034D -:10401C005DF5FCFBFD883AFD9D2DFD772CFDD52C27 -:10402C00714B9D711302712302F5CCFBF5CDFBF5A1 -:10403C00CEFBF5CFFB31245D02EFFACE3708CBE493 -:10404C00BFFFCBE6FFF3CED4FFCF37000971481288 -:10405C0005F6BEE0BEE2BED0716A27FDBE297143F3 -:10406C0007714B27714810057148110571381005FF -:10407C0071381105713302713B22715302715B224D -:10408C007158100571581105CF14F90571325FF68E -:10409C00BD44FD380AF515F9F544FD31246004D40E -:1040AC002ADD20E515F9E514F98F16F9312562F5AD -:1040BC0010FCF50EFC502EFD4002CF15F903E51453 -:1040CC00F9EF4EFD2405FD3B237173017132047130 -:1040DC00430271035C71525C31949E02EFFA712AB7 -:1040EC00E7CEA4093124600261FDCEA408F442FDA0 -:1040FC006F0931226006CF14F905EF0971335FE5C2 -:10410C0015F9E514F9712BE78F16F9312503F51420 -:10411C00F9C6D7D552FCDF1A310200155003FD52F7 -:10412C002B625C01D1DF07F514F971025FD7E55200 -:10413C00FCD74052FCF0DF0831040041F552FCD7AB -:10414C004052FCC8DF0BF514F971025FCF52FCF042 -:10415C00D73102000A4052FCFFDD22A052FCD7F0FE -:10416C00C15004FD412BC08FCBFB5C9F9FCBFB71DF -:10417C0010DCFB30D13CFD7B38CF52FCF0D7310446 -:10418C005D06F514F971025FD771535FF4507172CB -:10419C0007FDAC02717307D7FD8505F2D7717BFA69 -:1041AC00C7200CFBF8FF8F02FCF0F901FCF303FDB8 -:1041BC00E04D13BC048F04FCF0F903FCF303FDE0A9 -:1041CC004D13BC028F06FCF0F905FCF303FDE04D2A -:1041DC0013BB717AFAAC04BDD8F6BDDAAC04311E4F -:1041EC00BDDCF6BDDEFDEB0DADD8BDDCADDABDDE64 -:1041FC00AC02BDD8F6BDDAAC02311EDADCC3DADEB5 -:10420C00C3BDDCF6BDDEFDEB0DC0BDDEC0BDDCAD5F -:10421C00DEFD610FADD8BDDCADDABDDEABBDD8F6D1 -:10422C00BDDAAB311EDADCC3DADEC3BDDCF6BDDED3 -:10423C00FDEB0DC0BDDEC0BDDCADDEFD610FDADA1D -:10424C00ADD8FD9445C3C58FECFC5C3FF0317E04CA -:10425C006CFC14C2C0B9A0ECFCF6BC08BC0A9C07F0 -:10426C008C074C2EDD3E8FECFC0E0770F161DC6090 -:10427C005C3FF0317E12796CFCBDD8F6BDDA8C0750 -:10428C0073095C22318FBDDC70BDDEFDEB0DAC081B -:10429C00BDDCAC0AFD610FADDABC0AADD8BC08615F -:1042AC005907EFBCAC08BDD8AC0ABDDAC9DC0004B8 -:1042BC00F6FDB50EC9DCFFFFF6FDB60FADD8BF6637 -:1042CC00FCAF60FC4266FCDD12AF62FCBF64FCAF6D -:1042DC0060FCBF62FCAF66FCBF60FCAF62FC42647A -:1042EC00FCDC50AF60FC4262FCDE48AF46FD426035 -:1042FC00FCDE40404AFD16DC1F404AFDA0DE168F56 -:10430C0068FC4F4AFDDE0EAF60FC226AFC4469106B -:10431C0061C8FD7843F54AFDAF60FC445146DC0BA7 -:10432C00AF60FC241027BF48FDEF1130F82ABF48BE -:10433C00FDEF09404AFDFF61E8A04AFDAF64FC4275 -:10434C0062FCDC1BAF62FC4260FCDE13AF60FC4223 -:10435C0048FDDE0BF568FCAF60FCBF6AFCEF094062 -:10436C0068FCFF61E8A068FC100CC6D7717BFAC72B -:10437C00710A9E31929E02EFFA8E949F5AFC8E9691 -:10438C009F5BFC8E979F5CFC8E989F5DFC8E939F31 -:10439C005EFC8E929F5FFC710B9E717AFA8F5DFCB6 -:1043AC00FDCA0F76FD124513BD56D507FCDF0AD5A5 -:1043BC0008FCDF05D509FCDD25F6B14656DF11C931 -:1043CC00563722665C0391DF060A56181A57009678 -:1043DC0017FD354613FD504431745F02EF615206F0 -:1043EC009292695AFC6854FCDFF6AD56BD54F852F3 -:1043FC00F3311C791AF944FEFFDD44D852F1010463 -:10440C001AF914A944FFFFDF04E6B9EF0BD852F1F7 -:10441C0001041AF914A9A1B9717BFAA007FCD507FC -:10442C00FCDF1CA008FCD508FCDF14A009FCD50996 -:10443C00FCDF0CCF07FCFFCF08FCFFCF09FCFFC64D -:10444C00717AFAD7C716D852F10744A800DC057167 -:10445C00725FEF1CF647DD18A4524A52A8DC0571B6 -:10446C00725FEF0CF852F3311CF6781AF9B7EFE4DF -:10447C00C6D7C756A89666F0317E12F6B1781AF9EF -:10448C0066D1DFF1717BFAF507FCF508FCF509FC48 -:10449C00F45271735FC6717AFAD7C72004FBF8FF28 -:1044AC00D432DF178D529FEDFC717BFA520692923B -:1044BC006954FC68EEFCDFF6717AFA4A3206DE0EBD -:1044CC00E83209EEFC9C03A4328C0372EF34F9ED54 -:1044DC00FCF3311C791AF9BB310260058B9C03EF9C -:1044EC00128C019C03D5EDFCDF06CFEDFCA7EF038E -:1044FC00B0EDFC718071076061DC61FB7101608C57 -:10450C0003721004C6D7C72008FBF8FF8F5DFCFDB3 -:10451C00CA0F9C078F5CFCFDCA0F9C068F5BFCFDD1 -:10452C00CA0F9C058F5AFCFDCA0F9C048F5EFC9C25 -:10453C00038F5FFC9C028C06318E0112791A20BB12 -:10454C008C075C03D1DF098C064C0361C8617900D0 -:10455C008C05318EB1610900BB313D120103BB8B5F -:10456C000E04708C011C00BB8F0CFC4E03DC0E8CFB -:10457C00034F0CFCDC0B8C024F0DFCDC04AB12EF7C -:10458C0003ABB1121008C6D7C7C3C12008FBF8FF94 -:10459C00F661490A61F8614908DF07F7340000ED5C -:1045AC003146E6BC04F6BC06AC0ABC02AC08BBAC9B -:1045BC0006614902AC0461F8614900DE28AC04BD17 -:1045CC00D8AC06BDDAE1FD700FADDABC06ADD8BCD7 -:1045DC0004ABBDD8AC02BDDAE1FD8B0FADDABC0289 -:1045EC00ADD8BBEFCAAC06BC02AC04BBAC08BDD8A2 -:1045FC00AC0ABDDAAC04BDDCAC06FDEE0EAC04BD01 -:10460C00DCAC06FD610FE1FD8B0FADDABC06ADD85D -:10461C00BC04AC06614902AC0461F8614900DCC51C -:10462C00AC0214AB12100CC6D7C7C12004FBF8FFA8 -:10463C008F57FCFDCA0F9C034E04DF1CAD5446562D -:10464C00DE07AD56265412EF40F64656DF074654A9 -:10465C00DD03E7EF34F7EF318C04318EB1128C03AC -:10466C00318E43DF1830382226540656BB8C045C3E -:10467C000391DF05AB041800BBAB12EF0C8C034E9F -:10468C0004DE0532A900EF01F71006C6D7717BFADC -:10469C0031126009F64658DD04B658EF7C71136090 -:1046AC00717AFA4014F904DF07715307F424EF69A7 -:1046BC00D9E7FBF1E7240000DD0F23DD1A23DD1021 -:1046CC0023DD5323DD2723DD38715307F424EF4911 -:1046DC00715207F424EF42D424DF07715207E4240B -:1046EC00EF05715307F424C958FA00EF2CD424DFDA -:1046FC000B715207E424C958FA00EF1DF5E7FBEFE4 -:10470C0018D424DF0B715307E424C958FA00EF09BD -:10471C00CFE7FB02EF03FD2647D7D91FFCF1E724B7 -:10472C000000DD0923DD2123DD0923EF1B71530775 -:10473C00F424D7D424DF07715207E424EF05715316 -:10474C0007F424C9582D01D7715207E424D73142FC -:10475C005D01D771635DD9E5FBF1E7240000DD1243 -:10476C0023DD1923DD1123DD2623DD3423DD39235D -:10477C00DD3FFDE647EF3DFD0748EF38D9E4FBC1CF -:10478C00AE6CFDDE2CC0F313BE6C712304EF25F070 -:10479C00C1AE6CFDDE2CC0F313BE6C712304EF14A0 -:1047AC00F6BE6C712204EF0CCB6CFF00712304EF8E -:1047BC0003FD7B484014F905DD064014F901DF06C2 -:1047CC0071230471635D31645D0FF6BE64BE6A31A2 -:1047DC00220402EF02F690BE6ED7CD2647F45AAEF5 -:1047EC006C317DBFFAFCFD5048D2DF0ED9E4FBC121 -:1047FC00AE6CFDDE2CC0F313BE6CD7FD5048D2DD81 -:10480C000DCD2647F45AAE6C317DBFFAFCD7E85A71 -:10481C000934205080D6BFF6FC22FAFCBDD83047B4 -:10482C0000FD160EBFF8FC30F6FCFDF42CF313BEA5 -:10483C006CB426D426DF0CCD2647A45A4A5A1F61E5 -:10484C00C8F45AD740C7FB0BDC05712304F2D740E0 -:10485C00C7FB0661D831225C11F0C1AE6CFDDE2CB9 -:10486C00C0F313BE6C712204EF03FD7B48E2D771D9 -:10487C00625DF0C1AE6CFDDE2CC0F313BE6CA0FC0F -:10488C00FC40FCFC40DC3DF5FCFCD9FDFCF1313F6F -:10489C00044CFD14D9FDFCF1BDD85008FD650E0883 -:1048AC007208E6D2DD040192DFFC896158D1DD0586 -:1048BC00712204EF03712304A0FDFC40FDFC206178 -:1048CC00C8F5FDFCD7717DFADC04320100D732004B -:0248DC0000D703 -:1048DE0061FC61FCC1C3C5C7520C929269D4FEC182 -:1048EE00DFF88EFD708EFCC1717AFA4014F903DF89 -:1048FE000630FC29FD7B38C09EFC609EFD34D4FE44 -:10490E005206C0B9A5A592DFF9C6C4C2C061FC614A -:10491E00DF520C929269D4FEC1DFF88EFD708EFCD0 -:10492E00C18F4105775C04D1DD06675C01D1DD5096 -:10493E0031345E3671620771335E8FCCFB5FD4FB10 -:10494E00D1DF1B8FCDFB5FD5FBD1DF128FCEFB5F8F -:10495E00D6FBD1DF098FCFFB5FD7FBD1DD0C3162E8 -:10496E000702EFFA716307716B27710360FDE42F85 -:10497E00F4227148500571605005717AFAED8B4A38 -:10498E00675C02D1DD16D422DD124A2202DD0DF45F -:10499E00227148500571605005717AFA717AFA8D5C -:1049AE0022318FE7240000DD0823DD1423DD31EFF3 -:1049BE0050F4327140500571505005E422ED8B4A8F -:1049CE008F40059F10F9715050058F10F99F12F905 -:1049DE00D910F9FDB933629F11F9CD2202ED8B4A40 -:1049EE00675C02D1DD18675C10D1DD05CD2203EFC7 -:1049FE00107148500571605005F422ED8B4ACD229E -:104A0E00044A2203DF138F11F99F4005D911F9C112 -:104A1E00D910F9FD4834C0EF228F4005768F10F97A -:104A2E0001DC064010F902DE0671605005EF4EC73C -:104A3E00D910F9FD6530C071505005D912F9F12425 -:104A4E002900DD2A240400DD25242200DD20241186 -:104A5E0000DD0C240100DD16241E00DD11EF0C40DC -:104A6E0010F960DF09CF10F961EF03A010F94A22A7 -:104A7E0003DF0AD910F9FDB933629F11F9C09EFC0C -:104A8E00609EFD34D4FE5206C0B9A5A592DFF96131 -:104A9E00FCC1C7717AFA714AE5717BBD51405F0462 -:104AAE0001D1DD06F616A747DFF2300400BF240160 -:104ABE00F6BF2A01300B0BBF2801000000000000DA -:104ACE000000510FBF280100000000000000005040 -:104ADE000FBF2801710AE671235DC6C061FCC1C516 -:104AEE00717AFAD436DD0BEA34899E44A634B43694 -:104AFE00EF33710AE6300400BF2401F6BF2A0130FD -:104B0E000B0BBF28010000000000000000510FBF7A -:104B1E0028010000000000000000500FBF280171A6 -:104B2E00135D71235DC4C061FC61EF520C929269FA -:104B3E00D4FEC1DFF88EFD708EFCC12006FBF8FF9F -:104B4E0071503002CEABACCC0400F6BB31B2E210E9 -:104B5E00617900F6614900DFF371603002EDF14BCF -:104B6E008E519C03713BE28C035C02D1DD1E8C03E3 -:104B7E005C08D1DF0971503002CC0400EFCC8C05FB -:104B8E0070FD2135629E50CC0402EFBE8C035C0397 -:104B9E00D1DF408E509C02715030028C04D1DF0E5A -:104BAE008C0270FD6735629C05CC0401EF328C04DB -:104BBE004C02DF0671603002EF29CF34025A716069 -:104BCE0030028C0270C18C0570FDC934C0CF340226 -:104BDE004AEF108C035C01D1DD0671603002EF03E9 -:104BEE00ED584B1006C09EFC609EFD34D4FE52065E -:104BFE00C0B9A5A592DFF961FCC1C3C5C7520C921D -:104C0E009269D4FEC1DFF88EFD708EFCC1710A9ED2 -:104C1E0031929E02EFFA8FF6FB4F96FFDF198FF758 -:104C2E00FB4F97FFDF118FF8FB4F98FFDF09500402 -:104C3E00C15011FD7634C0710B9EC09EFC609EFD6E -:104C4E0034D4FE5206C0B9A5A592DFF9C6C4C2C0BF -:104C5E0061FCA44261FCC1C3C5C7520C929269D4D7 -:104C6E00FEC1DFF88EFD708EFCC1C1FBF8FF8D1FFB -:104C7E009C018E31318EE7240600DD0823DD0E23E4 -:104C8E00DD22EF39717AFA8C019D3CEF30717AFAA0 -:104C9E004017F901DF068C019D3BEF2151FF2E01DC -:104CAE009D3BEF19717AFA8C019D284014F903DDB2 -:104CBE00064014F904DF06306425FD7B384031FFD1 -:104CCE0009DE05A031FFEF077158F00071425E71E9 -:104CDE000BE3C0C09EFC609EFD34D4FE5206C0B9EC -:104CEE00A5A592DFF9C6C4C2C061FC61FF520C9249 -:104CFE009269D4FEC1DFF88EFD708EFCC1717AFA16 -:104D0E008FFCFB5C03D1DD194014F903DD06401462 -:104D1E00F904DF0D36100571D4DE0630AD39FD7B9A -:104D2E0038C09EFC609EFD34D4FE5206C0B9A5A5C7 -:104D3E0092DFF961FC61FC61FC61FC61FC61FC616C -:104D4E00FC61FC61FC61FC61FC61FC61FC61FC616D -:104D5E00FC61FC61FC61FC61FC61FC61FC61FC615D -:0D4D6E00FC61FC61FC61FC61FC61FC61FC0E -:0A4D7C0000060C12181E242A30361F -:104D8600C4FB0000000040FE000000000E3BB435EE -:104D96008C225A47B52D702E9946373CF808253E89 -:104DA6004CFC2EFE20FE02F903F94DFC28FE4EFCBB -:104DB6004FFC18F94AFC6CFF1AFF6EFF6AFF64FF8E -:104DC6004BFC66FF50FC0000983AF82AFF00555548 -:024DD600555531 -:084DD800FF000000000047008D -:104DE000317503F7332312D714AEF8C716AC061289 -:104DF000C5AC0416F643DD078B99A7A5B3EFF5C242 -:024E0000C6D713 -:024FF4000205B4 -:0A4FF60031373A30353A3239000005 -:00000001FF - \ No newline at end of file diff --git a/tags/2.05/bsr.lmf b/tags/2.05/bsr.lmf deleted file mode 100644 index acd5acd16b30dceeb51149a676b08ee7bedd241d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 178444 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 diff --git a/tags/2.05/bsr_k0r.map b/tags/2.05/bsr_k0r.map deleted file mode 100644 index 0648743..0000000 --- a/tags/2.05/bsr_k0r.map +++ /dev/null @@ -1,831 +0,0 @@ - - - -78K0R Linker W1.33 Date:22 Aug 2011 Page: 1 - -Command: -yc:\program files (x86)\nec electronics tools\dev -_msgoff - - obsr.lmf ..\..\..\Program Files (x86)\NEC Electronics Tools\C - C78K0R\W2.13\lib78k0r\s0rm.rel -gi1B339499E033F240BFAAh -pbsr - _k0r.map -nkd -gb7EFBFFh -bC:\Program Files (x86)\NEC Electro - nics Tools\CC78K0R\W2.13\lib78k0r\fsl.lib -bcl0rdm.lib -bcl0r - m.lib -bcl0rmf.lib -iC:\Program Files (x86)\NEC Electronics T - ools\CC78K0R\W2.13\lib78k0r -dbsr_mcu.dr -s -w2 loader.rel pm - .rel i2c_ctr.rel main.rel magic.rel WDT.rel i2c_mcu.rel i2c_t - wl.rel led.rel rtc.rel vreg_ctr.rel vreg_twl.rel adc.rel reng - e.rel accero.rel self_flash.rel sw.rel task_debug.rel task_mi - sc.rel task_sys.rel pedo_alg_thre_det2.rel ini_VECT.rel task_ - status.rel led_cam.rel led_pow.rel hal.rel batt_params.rel vo - ltable.rel pedo_lpf_coeff.rel kanaria.rel kanaria_c.rel get_e - i.rel -Para-file: -Out-file: bsr.lmf -Map-file: bsr_k0r.map -Direc-file:bsr_mcu.dr - - -*** Link information *** - - 71 output segment(s) - 3D5BH byte(s) real data - 6263 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 main 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 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 -* 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 0005CH - ?CSEGOB0 000C0H 00004H CSEG OPT_BYTE - LDR_CODL 000C4H 00000H CSEG - LDR_CODL loader 000C4H 00000H - LDR_CODL main 000C4H 00000H - LDR_CODL WDT 000C4H 00000H - LDR_CODL i2c_mcu 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 - ?CSEGSI 000C4H 0000AH CSEG - LDR_CODE 000CEH 0097DH CSEG - LDR_CODE loader 000CEH 00196H - LDR_CODE main 00264H 00048H - LDR_CODE WDT 002ACH 00000H - LDR_CODE i2c_mcu 002ACH 002D9H - LDR_CODE self_flash - 00585H 00373H - LDR_CODE task_debug - 008F8H 00000H - LDR_CODE task_status - 008F8H 00077H - LDR_CODE hal 0096FH 000DCH - FSL_CODE 00A4BH 00322H CSEG - FSL_CODE fsl_block_cmd - 00A4BH 0002BH - FSL_CODE fsl_block_check - 00A76H 00013H - FSL_CODE fsl_common - 00A89H 0014FH - FSL_CODE fsl_reset - 00BD8H 00001H - FSL_CODE fsl_si_ibf - 00BD9H 00064H - FSL_CODE fsl_phySwap - 00C3DH 0004DH - FSL_CODE fsl_si_common - 00C8AH 00061H - FSL_CODE fsl_swap 00CEBH 00030H - FSL_CODE fsl_write - 00D1BH 00052H - @@LCODE 00D6DH 00277H CSEG - @@LCODE @cstart 00D6DH 0006DH - @@LCODE @imul 00DDAH 00011H - @@LCODE @lumul 00DEBH 0002BH - @@LCODE @isdiv 00E16H 00022H - @@LCODE @iudiv 00E38H 0002DH - @@LCODE @isrem 00E65H 00021H - @@LCODE @iurem 00E86H 0002FH - @@LCODE @lsdiv 00EB5H 00039H - @@LCODE @ludiv 00EEEH 0003FH - @@LCODE @divuw 00F2DH 00034H - @@LCODE @ladd 00F61H 0000FH - @@LCODE @llsh 00F70H 0001BH - @@LCODE @lursh 00F8BH 0001FH - @@LCODE @iscmp 00FAAH 0000CH - @@LCODE @lband 00FB6H 00014H - @@LCODE @bcdtob 00FCAH 0001AH - @@CODE 00FE4H 00006H CSEG BASE - @@CODE magic 00FE4H 00000H - @@CODE ini_VECT 00FE4H 00000H - @@CODE batt_params - 00FE4H 00000H - @@CODE kanaria_c - 00FE4H 00006H -* gap * 00FEAH 0000CH - 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 - ROM_CODE 0228CH 02652H CSEG - ROM_CODE pm 0228CH 00998H - ROM_CODE i2c_ctr 02C24H 0005CH - ROM_CODE i2c_twl 02C80H 0005EH - ROM_CODE led 02CDEH 00265H - ROM_CODE rtc 02F43H 000E0H - ROM_CODE vreg_ctr 03023H 00498H - ROM_CODE vreg_twl 034BBH 000F9H - ROM_CODE adc 035B4H 0026FH - ROM_CODE renge 03823H 0018AH - ROM_CODE accero 039ADH 00161H - ROM_CODE sw 03B0EH 00129H - ROM_CODE task_misc - 03C37H 001EEH - ROM_CODE task_sys 03E25H 00384H - ROM_CODE pedo_alg_thre_det2 - 041A9H 004F0H - ROM_CODE led_cam 04699H 000C1H - ROM_CODE led_pow 0475AH 00177H - ROM_CODE voltable 048D1H 00000H - ROM_CODE pedo_lpf_coeff - 048D1H 00000H - ROM_CODE get_ei 048D1H 0000DH - @@BASE 048DEH 0049DH CSEG BASE - @@BASE loader 048DEH 00000H - @@BASE pm 048DEH 0003FH - @@BASE i2c_ctr 0491DH 00182H - @@BASE main 04A9FH 00000H - @@BASE magic 04A9FH 00000H - @@BASE WDT 04A9FH 00000H - @@BASE i2c_mcu 04A9FH 00098H - @@BASE i2c_twl 04B37H 000D0H - @@BASE led 04C07H 00000H - @@BASE rtc 04C07H 0005DH - @@BASE vreg_ctr 04C64H 00000H - @@BASE vreg_twl 04C64H 00000H - @@BASE adc 04C64H 00095H - @@BASE renge 04CF9H 00000H - @@BASE accero 04CF9H 0004AH - @@BASE self_flash - 04D43H 00000H - @@BASE sw 04D43H 00000H - @@BASE task_debug - 04D43H 00000H - @@BASE task_misc - 04D43H 00000H - @@BASE task_sys 04D43H 00000H - @@BASE pedo_alg_thre_det2 - 04D43H 00000H - @@BASE ini_VECT 04D43H 00038H - @@BASE task_status - 04D7BH 00000H - @@BASE led_cam 04D7BH 00000H - @@BASE led_pow 04D7BH 00000H - @@BASE hal 04D7BH 00000H - @@BASE batt_params - 04D7BH 00000H - @@BASE voltable 04D7BH 00000H - @@BASE pedo_lpf_coeff - 04D7BH 00000H - @@BASE kanaria_c - 04D7BH 00000H - @@CNSTL 04D7BH 00000H CSEG PAGE64KP - @@CNSTL @cstart 04D7BH 00000H - @@CNSTL 04D7BH 00000H CSEG PAGE64KP - @@CNSTL pm 04D7BH 00000H - @@CNSTL 04D7BH 00000H CSEG PAGE64KP - @@CNSTL i2c_ctr 04D7BH 00000H - @@CNSTL 04D7BH 00000H CSEG PAGE64KP - @@CNSTL i2c_twl 04D7BH 00000H - @@CNSTL 04D7BH 00000H CSEG PAGE64KP - @@CNSTL led 04D7BH 00000H - @@CNSTL 04D7BH 00000H CSEG PAGE64KP - @@CNSTL rtc 04D7BH 00000H - @@CNSTL 04D7BH 00000H CSEG PAGE64KP - @@CNSTL vreg_ctr 04D7BH 00000H - @@CNSTL 04D7BH 00000H CSEG PAGE64KP - @@CNSTL vreg_twl 04D7BH 00000H - @@CNSTL 04D7BH 00000H CSEG PAGE64KP - @@CNSTL adc 04D7BH 00000H - @@CNSTL 04D7BH 00000H CSEG PAGE64KP - @@CNSTL renge 04D7BH 00000H - @@CNSTL 04D7BH 00000H CSEG PAGE64KP - @@CNSTL accero 04D7BH 00000H - @@CNSTL 04D7BH 00000H CSEG PAGE64KP - @@CNSTL sw 04D7BH 00000H - @@CNSTL 04D7BH 00000H CSEG PAGE64KP - @@CNSTL task_misc - 04D7BH 00000H - @@CNSTL 04D7BH 00000H CSEG PAGE64KP - @@CNSTL task_sys 04D7BH 00000H - @@CNSTL 04D7BH 00000H CSEG PAGE64KP - @@CNSTL pedo_alg_thre_det2 - 04D7BH 00000H - @@CNSTL 04D7BH 00000H CSEG PAGE64KP - @@CNSTL ini_VECT 04D7BH 00000H - @@CNSTL 04D7BH 00000H CSEG PAGE64KP - @@CNSTL led_cam 04D7BH 00000H - @@CNSTL 04D7BH 00000H CSEG PAGE64KP - @@CNSTL led_pow 04D7BH 00000H - @@CNSTL 04D7BH 00000H CSEG PAGE64KP - @@CNSTL batt_params - 04D7BH 00000H - @@CNSTL 04D7BH 00000H CSEG PAGE64KP - @@CNSTL voltable 04D7BH 00000H - @@CNSTL 04D7BH 00000H CSEG PAGE64KP - @@CNSTL pedo_lpf_coeff - 04D7BH 00000H - @@CNSTL 04D7BH 00000H CSEG PAGE64KP - @@CNSTL kanaria_c - 04D7BH 00000H - @@CALT 04D7BH 00000H CSEG - @@CALT @cstart 04D7BH 00000H - @@CALT loader 04D7BH 00000H - @@CALT pm 04D7BH 00000H - @@CALT i2c_ctr 04D7BH 00000H - @@CALT main 04D7BH 00000H - @@CALT magic 04D7BH 00000H - @@CALT WDT 04D7BH 00000H - @@CALT i2c_mcu 04D7BH 00000H - @@CALT i2c_twl 04D7BH 00000H - @@CALT led 04D7BH 00000H - @@CALT rtc 04D7BH 00000H - @@CALT vreg_ctr 04D7BH 00000H - @@CALT vreg_twl 04D7BH 00000H - @@CALT adc 04D7BH 00000H - @@CALT renge 04D7BH 00000H - @@CALT accero 04D7BH 00000H - @@CALT self_flash - 04D7BH 00000H - @@CALT sw 04D7BH 00000H - @@CALT task_debug - 04D7BH 00000H - @@CALT task_misc - 04D7BH 00000H - @@CALT task_sys 04D7BH 00000H - @@CALT pedo_alg_thre_det2 - 04D7BH 00000H - @@CALT ini_VECT 04D7BH 00000H - @@CALT task_status - 04D7BH 00000H - @@CALT led_cam 04D7BH 00000H - @@CALT led_pow 04D7BH 00000H - @@CALT hal 04D7BH 00000H - @@CALT batt_params - 04D7BH 00000H - @@CALT voltable 04D7BH 00000H - @@CALT pedo_lpf_coeff - 04D7BH 00000H - @@CALT kanaria_c - 04D7BH 00000H - @@RLINIT 04D7BH 00000H CSEG UNIT64KP - @@RLINIT loader 04D7BH 00000H - @@RLINIT pm 04D7BH 00000H - @@RLINIT i2c_ctr 04D7BH 00000H - @@RLINIT main 04D7BH 00000H - @@RLINIT magic 04D7BH 00000H - @@RLINIT WDT 04D7BH 00000H - @@RLINIT i2c_mcu 04D7BH 00000H - @@RLINIT i2c_twl 04D7BH 00000H - @@RLINIT led 04D7BH 00000H - @@RLINIT rtc 04D7BH 00000H - @@RLINIT vreg_ctr 04D7BH 00000H - @@RLINIT vreg_twl 04D7BH 00000H - @@RLINIT adc 04D7BH 00000H - @@RLINIT renge 04D7BH 00000H - @@RLINIT accero 04D7BH 00000H - @@RLINIT self_flash - 04D7BH 00000H - @@RLINIT sw 04D7BH 00000H - @@RLINIT task_debug - 04D7BH 00000H - @@RLINIT task_misc - 04D7BH 00000H - @@RLINIT task_sys 04D7BH 00000H - @@RLINIT pedo_alg_thre_det2 - 04D7BH 00000H - @@RLINIT ini_VECT 04D7BH 00000H - @@RLINIT task_status - 04D7BH 00000H - @@RLINIT led_cam 04D7BH 00000H - @@RLINIT led_pow 04D7BH 00000H - @@RLINIT hal 04D7BH 00000H - @@RLINIT batt_params - 04D7BH 00000H - @@RLINIT voltable 04D7BH 00000H - @@RLINIT pedo_lpf_coeff - 04D7BH 00000H - @@RLINIT kanaria_c - 04D7BH 00000H - @@RLINIT @rom 04D7BH 00000H - @@CODEL 04D7BH 00000H CSEG - @@CODEL pm 04D7BH 00000H - @@CODEL i2c_ctr 04D7BH 00000H - @@CODEL magic 04D7BH 00000H - @@CODEL i2c_twl 04D7BH 00000H - @@CODEL led 04D7BH 00000H - @@CODEL rtc 04D7BH 00000H - @@CODEL vreg_ctr 04D7BH 00000H - @@CODEL vreg_twl 04D7BH 00000H - @@CODEL adc 04D7BH 00000H - @@CODEL renge 04D7BH 00000H - @@CODEL accero 04D7BH 00000H - @@CODEL sw 04D7BH 00000H - @@CODEL task_misc - 04D7BH 00000H - @@CODEL task_sys 04D7BH 00000H - @@CODEL pedo_alg_thre_det2 - 04D7BH 00000H - @@CODEL ini_VECT 04D7BH 00000H - @@CODEL led_cam 04D7BH 00000H - @@CODEL led_pow 04D7BH 00000H - @@CODEL batt_params - 04D7BH 00000H - @@CODEL voltable 04D7BH 00000H - @@CODEL pedo_lpf_coeff - 04D7BH 00000H - @@CODEL kanaria_c - 04D7BH 00000H -* gap * 04D7BH 00001H - @@CNSTL 04D7CH 0000AH CSEG PAGE64KP - @@CNSTL @bcdtob 04D7CH 0000AH - @@R_INIT 04D86H 00052H CSEG UNIT64KP - @@R_INIT @cstart 04D86H 00000H - @@R_INIT loader 04D86H 00000H - @@R_INIT pm 04D86H 00000H - @@R_INIT i2c_ctr 04D86H 00000H - @@R_INIT main 04D86H 00000H - @@R_INIT magic 04D86H 00000H - @@R_INIT WDT 04D86H 00000H - @@R_INIT i2c_mcu 04D86H 00000H - @@R_INIT i2c_twl 04D86H 00000H - @@R_INIT led 04D86H 00000H - @@R_INIT rtc 04D86H 00000H - @@R_INIT vreg_ctr 04D86H 00000H - @@R_INIT vreg_twl 04D86H 00000H - @@R_INIT adc 04D86H 0000CH - @@R_INIT renge 04D92H 00014H - @@R_INIT accero 04DA6H 00000H - @@R_INIT self_flash - 04DA6H 00000H - @@R_INIT sw 04DA6H 00000H - @@R_INIT task_debug - 04DA6H 00000H - @@R_INIT task_misc - 04DA6H 00026H - @@R_INIT task_sys 04DCCH 00002H - @@R_INIT pedo_alg_thre_det2 - 04DCEH 00006H - @@R_INIT ini_VECT 04DD4H 00000H - @@R_INIT task_status - 04DD4H 00000H - @@R_INIT led_cam 04DD4H 00000H - @@R_INIT led_pow 04DD4H 00004H - @@R_INIT hal 04DD8H 00000H - @@R_INIT batt_params - 04DD8H 00000H - @@R_INIT voltable 04DD8H 00000H - @@R_INIT pedo_lpf_coeff - 04DD8H 00000H - @@R_INIT kanaria_c - 04DD8H 00000H - @@R_INIT @rom 04DD8H 00000H - @@R_INIS 04DD8H 00008H CSEG UNIT64KP - @@R_INIS @cstart 04DD8H 00000H - @@R_INIS loader 04DD8H 00000H - @@R_INIS pm 04DD8H 00002H - @@R_INIS i2c_ctr 04DDAH 00002H - @@R_INIS main 04DDCH 00000H - @@R_INIS magic 04DDCH 00000H - @@R_INIS WDT 04DDCH 00000H - @@R_INIS i2c_mcu 04DDCH 00000H - @@R_INIS i2c_twl 04DDCH 00000H - @@R_INIS led 04DDCH 00000H - @@R_INIS rtc 04DDCH 00000H - @@R_INIS vreg_ctr 04DDCH 00000H - @@R_INIS vreg_twl 04DDCH 00000H - @@R_INIS adc 04DDCH 00000H - @@R_INIS renge 04DDCH 00000H - @@R_INIS accero 04DDCH 00000H - @@R_INIS self_flash - 04DDCH 00000H - @@R_INIS sw 04DDCH 00000H - @@R_INIS task_debug - 04DDCH 00000H - @@R_INIS task_misc - 04DDCH 00000H - @@R_INIS task_sys 04DDCH 00000H - @@R_INIS pedo_alg_thre_det2 - 04DDCH 00000H - @@R_INIS ini_VECT 04DDCH 00000H - @@R_INIS task_status - 04DDCH 00000H - @@R_INIS led_cam 04DDCH 00002H - @@R_INIS led_pow 04DDEH 00002H - @@R_INIS hal 04DE0H 00000H - @@R_INIS batt_params - 04DE0H 00000H - @@R_INIS voltable 04DE0H 00000H - @@R_INIS pedo_lpf_coeff - 04DE0H 00000H - @@R_INIS kanaria_c - 04DE0H 00000H - @@R_INIS @rom 04DE0H 00000H - @@LCODEL 04DE0H 00022H CSEG - @@LCODEL abs 04DE0H 00008H - @@LCODEL memcpy_n 04DE8H 0001AH -* gap * 04E02H 001F2H - 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 003FEH DSEG BASEP - @@DATA @cstart FF900H 00002H - @@DATA loader FF902H 00000H - @@DATA pm FF902H 0000EH - @@DATA i2c_ctr FF910H 00004H - @@DATA main FF914H 0021EH - @@DATA magic FFB32H 00000H - @@DATA WDT FFB32H 00000H - @@DATA i2c_mcu FFB32H 00006H - @@DATA i2c_twl FFB38H 00000H - @@DATA led FFB38H 0007CH - @@DATA rtc FFBB4H 00008H - @@DATA vreg_ctr FFBBCH 0005EH - @@DATA vreg_twl FFC1AH 00010H - @@DATA adc FFC2AH 00004H - @@DATA renge FFC2EH 00014H - @@DATA accero FFC42H 00002H - @@DATA self_flash - FFC44H 00002H - @@DATA sw FFC46H 00002H - @@DATA task_debug - FFC48H 00000H - @@DATA task_misc - FFC48H 0000AH - @@DATA task_sys FFC52H 00002H - @@DATA pedo_alg_thre_det2 - FFC54H 000A0H - @@DATA ini_VECT FFCF4H 00000H - @@DATA task_status - FFCF4H 00002H - @@DATA led_cam FFCF6H 00000H - @@DATA led_pow FFCF6H 00008H - @@DATA hal FFCFEH 00000H - @@DATA batt_params - FFCFEH 00000H - @@DATA voltable FFCFEH 00000H - @@DATA pedo_lpf_coeff - FFCFEH 00000H - @@DATA kanaria FFCFEH 00000H - @@DATA kanaria_c - FFCFEH 00000H - @@DATA get_ei FFCFEH 00000H - @@DATA @rom FFCFEH 00000H - @@INIT FFCFEH 00052H DSEG BASEP - @@INIT @cstart FFCFEH 00000H - @@INIT loader FFCFEH 00000H - @@INIT pm FFCFEH 00000H - @@INIT i2c_ctr FFCFEH 00000H - @@INIT main FFCFEH 00000H - @@INIT magic FFCFEH 00000H - @@INIT WDT FFCFEH 00000H - @@INIT i2c_mcu FFCFEH 00000H - @@INIT i2c_twl FFCFEH 00000H - @@INIT led FFCFEH 00000H - @@INIT rtc FFCFEH 00000H - @@INIT vreg_ctr FFCFEH 00000H - @@INIT vreg_twl FFCFEH 00000H - @@INIT adc FFCFEH 0000CH - @@INIT renge FFD0AH 00014H - @@INIT accero FFD1EH 00000H - @@INIT self_flash - FFD1EH 00000H - @@INIT sw FFD1EH 00000H - @@INIT task_debug - FFD1EH 00000H - @@INIT task_misc - FFD1EH 00026H - @@INIT task_sys FFD44H 00002H - @@INIT pedo_alg_thre_det2 - FFD46H 00006H - @@INIT ini_VECT FFD4CH 00000H - @@INIT task_status - FFD4CH 00000H - @@INIT led_cam FFD4CH 00000H - @@INIT led_pow FFD4CH 00004H - @@INIT hal FFD50H 00000H - @@INIT batt_params - FFD50H 00000H - @@INIT voltable FFD50H 00000H - @@INIT pedo_lpf_coeff - FFD50H 00000H - @@INIT kanaria FFD50H 00000H - @@INIT kanaria_c - FFD50H 00000H - @@INIT @rom FFD50H 00000H - FSL_DATA FFD50H 00010H DSEG UNITP - FSL_DATA fsl_common - FFD50H 00010H - @@INITL FFD60H 00000H DSEG UNIT64KP - @@INITL loader FFD60H 00000H - @@INITL pm FFD60H 00000H - @@INITL i2c_ctr FFD60H 00000H - @@INITL main FFD60H 00000H - @@INITL magic FFD60H 00000H - @@INITL WDT FFD60H 00000H - @@INITL i2c_mcu FFD60H 00000H - @@INITL i2c_twl FFD60H 00000H - @@INITL led FFD60H 00000H - @@INITL rtc FFD60H 00000H - @@INITL vreg_ctr FFD60H 00000H - @@INITL vreg_twl FFD60H 00000H - @@INITL adc FFD60H 00000H - @@INITL renge FFD60H 00000H - @@INITL accero FFD60H 00000H - @@INITL self_flash - FFD60H 00000H - @@INITL sw FFD60H 00000H - @@INITL task_debug - FFD60H 00000H - @@INITL task_misc - FFD60H 00000H - @@INITL task_sys FFD60H 00000H - @@INITL pedo_alg_thre_det2 - FFD60H 00000H - @@INITL ini_VECT FFD60H 00000H - @@INITL task_status - FFD60H 00000H - @@INITL led_cam FFD60H 00000H - @@INITL led_pow FFD60H 00000H - @@INITL hal FFD60H 00000H - @@INITL batt_params - FFD60H 00000H - @@INITL voltable FFD60H 00000H - @@INITL pedo_lpf_coeff - FFD60H 00000H - @@INITL kanaria FFD60H 00000H - @@INITL kanaria_c - FFD60H 00000H - @@INITL @rom FFD60H 00000H - @@DATAL FFD60H 00000H DSEG UNIT64KP - @@DATAL loader FFD60H 00000H - @@DATAL pm FFD60H 00000H - @@DATAL i2c_ctr FFD60H 00000H - @@DATAL main FFD60H 00000H - @@DATAL magic FFD60H 00000H - @@DATAL WDT FFD60H 00000H - @@DATAL i2c_mcu FFD60H 00000H - @@DATAL i2c_twl FFD60H 00000H - @@DATAL led FFD60H 00000H - @@DATAL rtc FFD60H 00000H - @@DATAL vreg_ctr FFD60H 00000H - @@DATAL vreg_twl FFD60H 00000H - @@DATAL adc FFD60H 00000H - @@DATAL renge FFD60H 00000H - @@DATAL accero FFD60H 00000H - @@DATAL self_flash - FFD60H 00000H - @@DATAL sw FFD60H 00000H - @@DATAL task_debug - FFD60H 00000H - @@DATAL task_misc - FFD60H 00000H - @@DATAL task_sys FFD60H 00000H - @@DATAL pedo_alg_thre_det2 - FFD60H 00000H - @@DATAL ini_VECT FFD60H 00000H - @@DATAL task_status - FFD60H 00000H - @@DATAL led_cam FFD60H 00000H - @@DATAL led_pow FFD60H 00000H - @@DATAL hal FFD60H 00000H - @@DATAL batt_params - FFD60H 00000H - @@DATAL voltable FFD60H 00000H - @@DATAL pedo_lpf_coeff - FFD60H 00000H - @@DATAL kanaria FFD60H 00000H - @@DATAL kanaria_c - FFD60H 00000H - @@DATAL @rom FFD60H 00000H -* gap * FFD60H 000A0H - - MEMORY=RAM2 - BASE ADDRESS=FFE20H SIZE=000C0H - OUTPUT INPUT INPUT BASE SIZE - SEGMENT SEGMENT MODULE ADDRESS - @@INIS FFE20H 00008H DSEG SADDRP - @@INIS @cstart FFE20H 00000H - @@INIS loader FFE20H 00000H - @@INIS pm FFE20H 00002H - @@INIS i2c_ctr FFE22H 00002H - @@INIS main FFE24H 00000H - @@INIS magic FFE24H 00000H - @@INIS WDT FFE24H 00000H - @@INIS i2c_mcu FFE24H 00000H - @@INIS i2c_twl FFE24H 00000H - @@INIS led FFE24H 00000H - @@INIS rtc FFE24H 00000H - @@INIS vreg_ctr FFE24H 00000H - @@INIS vreg_twl FFE24H 00000H - @@INIS adc FFE24H 00000H - @@INIS renge FFE24H 00000H - @@INIS accero FFE24H 00000H - @@INIS self_flash - FFE24H 00000H - @@INIS sw FFE24H 00000H - @@INIS task_debug - FFE24H 00000H - @@INIS task_misc - FFE24H 00000H - @@INIS task_sys FFE24H 00000H - @@INIS pedo_alg_thre_det2 - FFE24H 00000H - @@INIS ini_VECT FFE24H 00000H - @@INIS task_status - FFE24H 00000H - @@INIS led_cam FFE24H 00002H - @@INIS led_pow FFE26H 00002H - @@INIS hal FFE28H 00000H - @@INIS batt_params - FFE28H 00000H - @@INIS voltable FFE28H 00000H - @@INIS pedo_lpf_coeff - FFE28H 00000H - @@INIS kanaria_c - FFE28H 00000H - @@INIS @rom FFE28H 00000H - @@DATS FFE28H 00034H DSEG SADDRP - @@DATS @cstart FFE28H 00000H - @@DATS loader FFE28H 00000H - @@DATS pm FFE28H 0000AH - @@DATS i2c_ctr FFE32H 00002H - @@DATS main FFE34H 00000H - @@DATS magic FFE34H 00000H - @@DATS WDT FFE34H 00000H - @@DATS i2c_mcu FFE34H 00004H - @@DATS i2c_twl FFE38H 00000H - @@DATS led FFE38H 00000H - @@DATS rtc FFE38H 00000H - @@DATS vreg_ctr FFE38H 00002H - @@DATS vreg_twl FFE3AH 00000H - @@DATS adc FFE3AH 00008H - @@DATS renge FFE42H 00002H - @@DATS accero FFE44H 00000H - @@DATS self_flash - FFE44H 00000H - @@DATS sw FFE44H 0000AH - @@DATS task_debug - FFE4EH 00000H - @@DATS task_misc - FFE4EH 00002H - @@DATS task_sys FFE50H 00002H - @@DATS pedo_alg_thre_det2 - FFE52H 00006H - @@DATS ini_VECT FFE58H 00000H - @@DATS task_status - FFE58H 00000H - @@DATS led_cam FFE58H 00002H - @@DATS led_pow FFE5AH 00002H - @@DATS hal FFE5CH 00000H - @@DATS batt_params - FFE5CH 00000H - @@DATS voltable FFE5CH 00000H - @@DATS pedo_lpf_coeff - FFE5CH 00000H - @@DATS kanaria_c - FFE5CH 00000H - @@DATS @rom FFE5CH 00000H - @@BITS FFE5CH 00005H BSEG - @@BITS @cstart FFE5CH.0 00000H.0 - @@BITS loader FFE5CH.0 00000H.0 - @@BITS pm FFE5CH.0 00001H.0 - @@BITS i2c_ctr FFE5DH.0 00000H.0 - @@BITS main FFE5DH.0 00000H.1 - @@BITS magic FFE5DH.1 00000H.0 - @@BITS WDT FFE5DH.1 00000H.0 - @@BITS i2c_mcu FFE5DH.1 00000H.3 - @@BITS i2c_twl FFE5DH.4 00000H.0 - @@BITS led FFE5DH.4 00000H.4 - @@BITS rtc FFE5EH.0 00000H.3 - @@BITS vreg_ctr FFE5EH.3 00000H.1 - @@BITS vreg_twl FFE5EH.4 00000H.0 - @@BITS adc FFE5EH.4 00000H.4 - @@BITS renge FFE5FH.0 00000H.3 - @@BITS accero FFE5FH.3 00000H.0 - @@BITS self_flash - FFE5FH.3 00000H.0 - @@BITS sw FFE5FH.3 00000H.1 - @@BITS task_debug - FFE5FH.4 00000H.0 - @@BITS task_misc - FFE5FH.4 00000H.3 - @@BITS task_sys FFE5FH.7 00000H.0 - @@BITS pedo_alg_thre_det2 - FFE5FH.7 00000H.2 - @@BITS ini_VECT FFE60H.1 00000H.0 - @@BITS task_status - FFE60H.1 00000H.0 - @@BITS led_cam FFE60H.1 00000H.1 - @@BITS led_pow FFE60H.2 00000H.0 - @@BITS hal FFE60H.2 00000H.6 - @@BITS batt_params - FFE61H.0 00000H.0 - @@BITS voltable FFE61H.0 00000H.0 - @@BITS pedo_lpf_coeff - FFE61H.0 00000H.0 - @@BITS kanaria_c - FFE61H.0 00000H.0 -* gap * FFE61H 00073H - @@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/tags/2.05/bsr_mcu.dr b/tags/2.05/bsr_mcu.dr deleted file mode 100644 index 81aeecc..0000000 --- a/tags/2.05/bsr_mcu.dr +++ /dev/null @@ -1,46 +0,0 @@ -;;; ̈̒` -;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/tags/2.05/bsr_system.h b/tags/2.05/bsr_system.h deleted file mode 100644 index bb6105f..0000000 --- a/tags/2.05/bsr_system.h +++ /dev/null @@ -1,67 +0,0 @@ -#ifndef __bsr_system__ -#define __bsr_system__ - -// 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_SHIROBAKO, - MODEL_JIKKI_NOBATT, - MODEL_CAPTURE_BOX, - MODEL_ISBAKO, // Asystem_status.model MODEL_JIKKI ɂĂ̂Ŗgp - MODEL_RESERVED3, -}; - -enum family_ -{ - FAMILY_CTR, - FAMILY_SPFL, - FAMILY_SHRIMP -}; - -// ^XNVXȅԏȂ -typedef struct _system_status_ -{ - enum pwr_state_ pwr_state; - enum poweron_reason_ poweron_reason; - unsigned char reboot:1; -// unsigned char info_fullcolor:1; - unsigned char captureBox:1; // Lv` SDKɂ͎@ƕԂ - unsigned char taikendai:1; - unsigned char taikendai_nbd:1; - unsigned char is_dev:1; - enum model_ model; - enum family_ family; -}system_status_; - -extern bit force_off; - -extern system_status_ system_status; - - - -#endif diff --git a/tags/2.05/config.h b/tags/2.05/config.h deleted file mode 100644 index f056b3c..0000000 --- a/tags/2.05/config.h +++ /dev/null @@ -1,91 +0,0 @@ -#ifndef __config__ -#define __config__ - - -#define MCU_VER_MAJOR 0x02 -#define MCU_VER_MINOR 0x05 - - -// fobOXCb` - -//#define _debug_led_ // LED print fobOƂ -//#define _ALLOW_NOBATT_ // @drȂi=A_v^̂݁jł̋N -//#define _DBG_PEDO_AUTO_ENABLE_ // d̏uԂvon -//#define _DBG_LED_PRINT_ // LED print fobOƂ(ȃAbvf[gp) -//#define _ENABLE_WDT_TEST_ -//#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 _I2C_ERR_ABORT_ -//#define _ENABLE_HAL_ // fobOpHALLɂBRgAEgŃX[ɂȂB - - -#ifdef _DBG_NOP_ -# define dbg_nop() NOP() -#else -# define dbg_nop() ; -#endif - - -// dlt@[ -//#define _TAIKENDAI_ -// homej[ɓĂ܂̂t@[‚BROMȂ̂œdrp[^pX -//#define _TAIKENDAI_SEISAN_SPECIAL_ -// Yɑ̌gpǂƁAA_v^ȂƓd炸ɌɎxႪ̂ňꎞt@[ -//#define _RVD_ -// fobKA^b`Ƀ^[QbgZbgœd؂Ă܂̂ - - -// ̎́C‚ȂƑ̌̐YłȂˁI -#ifdef _TAIKENDAI_SEISAN_SPECIAL_ -#define MCU_VER_MINOR 0x80 -#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/tags/2.05/fsl.h b/tags/2.05/fsl.h deleted file mode 100644 index 0e806b5..0000000 --- a/tags/2.05/fsl.h +++ /dev/null @@ -1,362 +0,0 @@ -/*==============================================================================================*/ -/* 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/tags/2.05/fsl_user.h b/tags/2.05/fsl_user.h deleted file mode 100644 index 1018689..0000000 --- a/tags/2.05/fsl_user.h +++ /dev/null @@ -1,113 +0,0 @@ -/*==============================================================================================*/ -/* 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/tags/2.05/hal.c b/tags/2.05/hal.c deleted file mode 100644 index f1620ae..0000000 --- a/tags/2.05/hal.c +++ /dev/null @@ -1,176 +0,0 @@ -#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/tags/2.05/hal.h b/tags/2.05/hal.h deleted file mode 100644 index f08592a..0000000 --- a/tags/2.05/hal.h +++ /dev/null @@ -1,17 +0,0 @@ -#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/tags/2.05/hoge.bin b/tags/2.05/hoge.bin deleted file mode 100644 index 4a7c8f147b7aba3513839498bfcee5455fd5c1fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16387 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 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; - } -} - - - -// ======================================================== -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 - - P20 &= ~0x3; - - 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 = 5; - IICWL = 10; // LԂ̒ - - SMC = 1; // [h - DFC = 1; // fW^tB^on (@fast mode) - - IICAMK = 0; // 荞݂ - - IICE = 1; - - PM20 &= ~0x3; /* set clock pin for IICA */ - - state = IIC_IDLE; -} - - - -// ======================================================== -void IIC_ctr_Stop( void ) -{ - IICE = 0; /* IICA disable */ - IICAEN = 0; -} - - - diff --git a/tags/2.05/i2c_ctr.h b/tags/2.05/i2c_ctr.h deleted file mode 100644 index 16234ff..0000000 --- a/tags/2.05/i2c_ctr.h +++ /dev/null @@ -1,210 +0,0 @@ -#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/tags/2.05/i2c_mcu.c b/tags/2.05/i2c_mcu.c deleted file mode 100644 index 58f5cb2..0000000 --- a/tags/2.05/i2c_mcu.c +++ /dev/null @@ -1,655 +0,0 @@ -/* ======================================================== - ȈI2CiytFgpjʐM - de JHL cJZ - '09 Feb - - ======================================================== */ -#ifndef _WIN32 -#pragma sfr -#pragma di -#pragma ei -#pragma nop -#pragma inline // memcpy()CCWJ(̕I) -#endif - -#include "incs_loader.h" -#include "i2c_mcu.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( ); -static void iic_mcu_send_re_st( ); -static void iic_mcu_send_sp( ); -static err iic_mcu_send_a_byte( u8 ); -static 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; - -u8 iic_mcu_result; // ꕶ[h̎̓f[^ԂB - // Xe[^XKvȂ炱Ă - -#ifdef i2c_timeout_test -extern bit i2c_mcu_time_out_error; -#endif - -// ======================================================== -void nop8() -{ - // ɗ call 3clk, return 6clk -} - - -static err iic_mcu_wait_free() -{ - u16 tot = 0; - - iic_mcu_start( ); - while( 1 ) - { - DI(); - 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( ERR_ERR ); - } - } - return( ERR_SUCCESS ); -} - - -/* ======================================================== - X[u w1x [h - Ԓlf[^̂̂łB - ======================================================== */ -u8 iic_mcu_read_a_byte( u8 SLA, u8 adrs ) -{ - u8 dat; - -#if 1 - // bp[ - if( iic_mcu_read( SLA, adrs, 1, &dat ) == ERR_SUCCESS ) - { - iic_mcu_result = ERR_OK; - } - else - { - iic_mcu_result = ERR_NOSLAVE; - } - return ( dat ); - -#else - iic_mcu_wait_free(); - - // X^[gRfBVƃX[ǔĂяoAWX^AhX̑M - if( iic_mcu_call_slave( SLA ) != 0 ) - { - iic_mcu_result = ERR_NOSLAVE; - iic_mcu_busy = false; - return ( 0 ); - } - - // WX^AhX̑M - iic_mcu_send_a_byte( adrs ); // I܂ŋAĂȂ - // if( err != ERR_SUCCESS )` - - // f[^M // - iic_mcu_send_re_st( ); // X^[gRfBV - iic_mcu_send_a_byte( SLA | 0x01 ); // M܂Ŗ߂Ă܂B - - ST0 = 0x0004; // M[hɐݒς̂ŃWbN~ - SCR02 = RXE0 | 1 << SLC02 | 7 << DLS02; // Mݒ - SS0 = 0x0004; // ʐMҋ@ - - SOE0 = 0x0000; // 1oCgMȂ̂ŁAŌNAK𑗂 - IICIF10 = 0; - SIO10 = 0xFF; // _~[f[^ƎMJn - - while( IICIF10 == 0 ) - { // M҂ - ; - } - dat = SIO10; - - iic_mcu_send_sp( ); - IICIF10 = 0; // Ȃ - iic_mcu_busy = false; - return ( dat ); -#endif -} - - - -/* ======================================================== - X[ũ[h - 0 I - 1 X[uȂ - 2 oXNɐLĂă^CAEg - 3 ӖsG[ - yz - X[uEFCgRfBVoƂ͋֎~łB - ̏ꍇłG[oȂǂł܂ - ======================================================== */ -err iic_mcu_read( u8 slave, u8 adrs, u8 len, u8 * dest ) -{ - -#if 1 - if( iic_mcu_wait_free() != ERR_SUCCESS ) - { - return( ERR_ERR ); - } -#else - // gpȂA -#endif - - // X^[gRfBVƃX[ǔĂяoAWX^AhX̑M - if( iic_mcu_call_slave( slave ) != 0 ) - { - iic_mcu_busy = false; - return ( ERR_NOSLAVE ); - } - - // WX^AhX̑M - iic_mcu_send_a_byte( adrs ); // I܂ŋAĂȂ - // if( err != ERR_SUCCESS )` - - // 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 ); - - iic_mcu_send_sp( ); - - IICIF10 = 0; - iic_mcu_busy = false; - return ( ERR_SUCCESS ); -} - - - - -/* ======================================================== - X[u wPoCgx Cg - O̓]Î҂āACg܂B - Ԓl@iic_mcu_write@ɓ - ======================================================== */ -err iic_mcu_write_a_byte( u8 SLA, u8 adrs, u8 dat ) -{ - -#if 0 - static u8 temp; // ςȂŏIɊ֐𔲂i”\ĵstatic - - // ȂƁAđɏƂɑÕf[^j󂵂Ă܂ - while( iic_mcu_busy ) - { - NOP( ); - } - - temp = dat; - iic_mcu_wo_dma = true; - return ( iic_mcu_write( SLA, adrs, 1, &temp ) ); -#else - // P̎DMAƂNȂłƏI点 - if( iic_mcu_wait_free() != ERR_SUCCESS ) - { - return( ERR_ERR ); - } - - // X^[gRfBVƃX[ǔĂяo... - IICMK10 = 1; - if( iic_mcu_call_slave( SLA ) != ERR_SUCCESS ) - { - iic_mcu_busy = false; - return ( ERR_NOSLAVE ); - } - iic_mcu_send_a_byte( adrs ); - iic_mcu_send_a_byte( dat ); - iic_mcu_send_sp( ); - iic_mcu_busy = false; - return ( ERR_SUCCESS ); -#endif -} - - - -/* ======================================================== - X[uփCg - WX^ adrs 擪ɁA - *str - len܂B - - 0 I - 1 X[uȂ - 2 oXNɐLĂă^CAEg - 3 OɎwꂽʐM܂IĂȂ - yz - X[uEFCgRfBVoƂ͋֎~łB - ̏ꍇłG[oȂǂł܂ - DMA1gp܂B - ******************************************************************************/ -err iic_mcu_write( u8 slave, u8 adrs, u8 len, void * src ) -{ - if( iic_mcu_wait_free() != ERR_SUCCESS ) - { - return( ERR_ERR ); - } -#if 0 - // gpȂA -#endif - - // X^[gRfBVƃX[ǔĂяo... - IICMK10 = 1; - IICIF10 = 0; - if( iic_mcu_call_slave( slave ) != ERR_SUCCESS ) - { - iic_mcu_busy = false; - return ( ERR_NOSLAVE ); - } - - IICIF10 = 0; - if( !iic_mcu_wo_dma ) - { - // DMAgpiʏj - - // WX^AhX𑗂Af[^̏ - memcpy( iic_send_work, src, 4 ); //obt@Ƃ4oCgpӂĖ߁B - // 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; - - 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 = src; - // c͊荞݃[` - } - - return ( ERR_SUCCESS ); -} - - - - -/* ======================================================== - 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( ) -{ - EI(); - - DMAMK1 = 1; - DEN1 = 0; - while( ( SSR02L & TSF0 ) != 0 ) - { - u16 i = 0; - if( ++i == 0 ) // ^CAEgH - { - break; - } - } - -// iic_mcu_send_sp(); // ISRŊO̊֐ĂԂ͓̂siėpWX^ҔĵœWJ - { - ST0 = 0x0004; - SOE0 = 0; // M̎͂ƑOɁuvݒ肵ĂB(NACKo) - SO0 = 0x0000 | TAUS_MASK; // SCL -// nop8(); Ă񂶂Ⴞ - NOP(); NOP(); NOP(); NOP(); - NOP(); NOP(); NOP(); NOP(); - SO0 = 0x0400 | TAUS_MASK; // SCL - NOP(); NOP(); NOP(); NOP(); - NOP(); NOP(); NOP(); NOP(); - SO0 = 0x0404 | TAUS_MASK; - } - - IICMK10 = 1; - 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 ) - { - SIO10 = *p_iic_send_wo_dma_dat; - p_iic_send_wo_dma_dat ++; - iic_send_wo_dma_len --; - return; - } - - // Ō̃oCgM - IICMK10 = 1; -// iic_mcu_send_sp(); // ISRŊO̊֐ĂԂ͓̂siėpWX^ҔĵœWJ - { - ST0 = 0x0004; - SOE0 = 0; // M̎͂ƑOɁuvݒ肵ĂB(NACKo) - SO0 = 0x0000 | TAUS_MASK; // SCL - NOP(); NOP(); NOP(); NOP(); - NOP(); NOP(); NOP(); NOP(); - SO0 = 0x0400 | TAUS_MASK; // SCL - NOP(); NOP(); NOP(); NOP(); - NOP(); NOP(); NOP(); NOP(); - SO0 = 0x0404 | TAUS_MASK; - } - - iic_mcu_wo_dma = false; - iic_mcu_busy = false; -} - - - -/* ======================================================== - X[ǔĂяo -@X[uAhXĂŁAACK̊mFB - ACK@@@@@@@@@@@@@@@@@@ԁF0 -@NACK @XgbvRfBVoB@ԁF1 - ======================================================== */ -static err iic_mcu_call_slave( u8 slave ) -{ - iic_mcu_send_st( ); - - SIR02 = SSR02; // NAKG[̃tONA - if( iic_mcu_send_a_byte( slave ) != ERR_SUCCESS ) - { - iic_mcu_send_sp( ); - return ( ERR_NAK ); // w̃X[uȂ / busy - } - - return ( ERR_SUCCESS ); -} - - - -/* ======================================================== - قƂɂPoCĝ - I܂ŋA܂ - ======================================================== */ -static err iic_mcu_send_a_byte( u8 dat ) -{ - IICMK10 = 1; - IICIF10 = 0; - SIO10 = dat; - while( IICIF10 == 0 ) - { -// NOP( ); - } // ʐM - if( SSR02 != 0 ) - { - SIR02 = SSR02; - return ( ERR_NAK ); - } - return ( ERR_SUCCESS ); -} - - - -/* ======================================================== - 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 - ======================================================== */ -static 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 - ======================================================== */ -static 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; - NOP( ); // 2clḱADSTn==0|[O - NOP( ); - DEN1 = 0; - - I2C_PU_on(); - 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; -} - - - - - - - - - - -/* ======================================================== - R[fbN wPoCgx Cg - iic_mcu_write_a_byte CODECs[NAEh - ======================================================== */ -err iic_mcu_write_a_byte_codec( u8 adrs, u8 dat ) -{ - static u8 count; - - // P̎DMAƂNȂłƏI点 - if( iic_mcu_wait_free() != ERR_SUCCESS ) - { - return( ERR_ERR ); - } - - // X^[gRfBVƃX[ǔĂяo... - IICMK10 = 1; - if( iic_mcu_call_slave( IIC_SLA_CODEC ) != ERR_SUCCESS ) - { - iic_mcu_busy = false; - return ( ERR_NOSLAVE ); - } - iic_mcu_send_a_byte( adrs ); - iic_mcu_send_a_byte( dat ); - - // [NAEh - /// X^[gɂă_~[Cg - iic_mcu_send_re_st( ); - iic_mcu_send_a_byte( IIC_SLA_CODEC ); // _~[Cg - iic_mcu_send_a_byte( 0x20 ); - iic_mcu_send_a_byte( count ); - - count ++; - - iic_mcu_send_sp( ); - iic_mcu_busy = false; - return ( ERR_SUCCESS ); -} diff --git a/tags/2.05/i2c_mcu.h b/tags/2.05/i2c_mcu.h deleted file mode 100644 index af2b1d1..0000000 --- a/tags/2.05/i2c_mcu.h +++ /dev/null @@ -1,36 +0,0 @@ -#ifndef __ic2_mcu__ -#define __ic2_mcu__ - - -// ======================================================== -#define ERR_OK 0 -#define ERR_NAK 1 -#define ERR_NOSLAVE 2 - - - -// ======================================================== -extern volatile bit iic_mcu_busy; -extern bit iic_mcu_wo_dma; - -extern u8 iic_mcu_result; - - -// ======================================================== -err iic_mcu_read( u8 SLA, u8 adrs, u8 len, u8 * dest ); -u8 iic_mcu_read_a_byte( u8 SLA, u8 adrs ); - -err iic_mcu_write( u8 SLA, u8 adrs, u8 len, void * src ); -err iic_mcu_write_a_byte( u8 SLA, u8 adrs, u8 dat ); - -err iic_mcu_write_a_byte_codec( u8 adrs, u8 dat ); - - -// ̒ʐM܂B -#define iic_mcu_set_wo_dma() { while( iic_mcu_busy ){;} iic_mcu_wo_dma = 1; } - -void iic_mcu_start( ); -void iic_mcu_stop( ); - - -#endif diff --git a/tags/2.05/i2c_twl.c b/tags/2.05/i2c_twl.c deleted file mode 100644 index 48c1447..0000000 --- a/tags/2.05/i2c_twl.c +++ /dev/null @@ -1,231 +0,0 @@ -#ifndef _WIN32 - -#pragma sfr /* @\WX^gp */ - -#endif - - -/*============================================================================*/ - -#include "config.h" - -#ifndef _WIN32 - -#pragma interrupt INTIICA0 int_iic_twl RB2 - -#endif - -#include "incs.h" -#include "i2c_twl_defs.h" -#include "i2c_twl.h" - -extern u8 vreg_twl[]; - -#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 - -#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; \ - } \ - } \ -} - - -__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(); - } - } -} - - - -/*****************************************************/ -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 */ - P20 &= ~0x3; - - 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 = 5; - IICWL = 10; // LԂ̒iHj - - SMC = 1; - - IICAMK = 0; // 荞݂ - - IICE = 1; - - PM20 &= ~0x3; /* set clock pin for IICA */ - - LREL = 1; -} - - - -//**************************************************************************** -void IIC_twl_Stop( void ) -{ - IICE = 0; /* IICA disable */ - IICAEN = 0; -} - - -#endif diff --git a/tags/2.05/i2c_twl.h b/tags/2.05/i2c_twl.h deleted file mode 100644 index 0f608b0..0000000 --- a/tags/2.05/i2c_twl.h +++ /dev/null @@ -1,7 +0,0 @@ -#ifndef _iic_twl_ -#define _iic_twl_ - -void IIC_twl_Init( void ); -void IIC_twl_Stop( void ); - -#endif diff --git a/tags/2.05/i2c_twl_defs.h b/tags/2.05/i2c_twl_defs.h deleted file mode 100644 index be5d566..0000000 --- a/tags/2.05/i2c_twl_defs.h +++ /dev/null @@ -1,196 +0,0 @@ -#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/tags/2.05/incs.h b/tags/2.05/incs.h deleted file mode 100644 index cd33a79..0000000 --- a/tags/2.05/incs.h +++ /dev/null @@ -1,58 +0,0 @@ -#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 "user_define.h" - -#include "hal.h" - -#include "bsr_system.h" -#include "renge\renge.h" -#include "loader.h" - -#include "vreg_ctr.h" -#include "vreg_twl.h" - -#include "i2c_mcu.h" -#include "i2c_twl.h" - -#include "rtc.h" - -#include "accero.h" - -#include "pm.h" - -#include "sw.h" - -#include "adc.h" - -#include "wdt.h" - -//========================================================= - -#endif diff --git a/tags/2.05/incs_loader.h b/tags/2.05/incs_loader.h deleted file mode 100644 index 4bb13b5..0000000 --- a/tags/2.05/incs_loader.h +++ /dev/null @@ -1,47 +0,0 @@ -#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 "user_define.h" - -#include "hal.h" - -#include "bsr_system.h" -#include "renge\renge.h" - -#include "vreg_ctr.h" -#include "vreg_twl.h" - -#include "loader.h" - -#include "i2c_mcu.h" - -#include "WDT.h" - - - -//========================================================= -void firm_update( ); -void firm_restore( ); diff --git a/tags/2.05/ini_VECT.c b/tags/2.05/ini_VECT.c deleted file mode 100644 index 10ea9ea..0000000 --- a/tags/2.05/ini_VECT.c +++ /dev/null @@ -1,383 +0,0 @@ -#ifndef _WIN32 - -#pragma nop - -#endif - -#include "config.h" - -#ifndef _WIN32 -//#pragma interrupt INTWDTI fn_intwdti // gp -//#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̃_~[֐` */ -/****************************************************/ -__interrupt void fn_intwdti( ) -{ -#ifdef _irq_debug_ - while( 1 ) - { - NOP(); - } -#endif -} - -__interrupt void fn_intlvi( ) -{ -#ifdef _irq_debug_ - while( 1 ) - { - NOP(); - } -#endif -} - -__interrupt void fn_intp0(){ -#ifdef _irq_debug_ -while( 1 ) - { - NOP(); - } -#endif -} - -__interrupt void fn_intp1( ) -{ -#ifdef _irq_debug_ - while( 1 ) - { - NOP(); - } -#endif -} // -__interrupt void fn_intp2( ) -{ -#ifdef _irq_debug_ - while( 1 ) - { - NOP(); - } -#endif -} -__interrupt void fn_intp3( ) -{ -#ifdef _irq_debug_ - while( 1 ) - { - NOP(); - } -#endif -} - - -__interrupt void intp21_RFTx( ) -{ -#ifdef _irq_debug_ - while( 1 ) - { - NOP(); - } -#endif -} - - -//__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( ) -{ -#ifdef _irq_debug_ - while( 1 ) - { - NOP(); - } -#endif -} - -__interrupt void fn_intcmp1( ) -{ -#ifdef _irq_debug_ - while( 1 ) - { - NOP(); - } -#endif -} - -__interrupt void fn_intdma0( ) -{ -#ifdef _irq_debug_ - while( 1 ) - { - NOP(); - } -#endif -} - -//__interrupt void fn_intdma1(){} // i2c_mcu.cɂ - -__interrupt void fn_intst0( ) -{ -#ifdef _irq_debug_ - while( 1 ) - { - NOP(); - } -#endif -} - -/* __interrupt void fn_intcsi00(){} */ -__interrupt void fn_intsr0( ) -{ -#ifdef _irq_debug_ - while( 1 ) - { - NOP(); - } -#endif -} - -/* __interrupt void fn_intcsi01(){} */ -__interrupt void fn_intsre0( ) -{ -#ifdef _irq_debug_ - while( 1 ) - { - NOP(); - } -#endif -} - -__interrupt void fn_intst1( ) -{ -#ifdef _irq_debug_ - while( 1 ) - { - NOP(); - } -#endif -} - -/* __interrupt void fn_intcsi10(){} */ -//__interrupt void fn_intiic10(){ while(1){} } -__interrupt void fn_intsr1( ) -{ -#ifdef _irq_debug_ - while( 1 ) - { - NOP(); - } -#endif -} - -__interrupt void fn_intsre1( ) -{ -#ifdef _irq_debug_ - while( 1 ) - { - NOP(); - } -#endif -} - -//__interrupt void fn_intiica(){} // i2c.cɂ -/* __interrupt void fn_inttm00(){} *//* sub.cɂĒ` */ -__interrupt void fn_inttm01( ) -{ -#ifdef _irq_debug_ - while( 1 ) - { - NOP(); - } -#endif -} - -__interrupt void fn_inttm02( ) -{ -#ifdef _irq_debug_ - while( 1 ) - { - NOP(); - } -#endif -} -__interrupt void fn_inttm03( ) -{ -#ifdef _irq_debug_ - while( 1 ) - { - NOP(); - } -#endif -} - -//__interrupt void fn_intad(){ while(1){} } // adc.c -__interrupt void fn_intrtc( ) -{ -#ifdef _irq_debug_ - while( 1 ) - { - NOP(); - } -#endif -} - -//__interrupt void int_rtcint(){} // rtc.cɂ -//__interrupt void fn_intkr(){} // main.c -__interrupt void fn_intmd( ) -{ -#ifdef _irq_debug_ - while( 1 ) - { - NOP(); - } -#endif -} - -__interrupt void fn_inttm04( ) -{ -#ifdef _irq_debug_ - while( 1 ) - { - NOP(); - } -#endif -} - -__interrupt void fn_inttm05( ) -{ -#ifdef _irq_debug_ - while( 1 ) - { - NOP(); - } -#endif -} - -__interrupt void fn_inttm06( ) -{ -#ifdef _irq_debug_ - while( 1 ) - { - NOP(); - } -#endif -} - -__interrupt void fn_inttm07( ) -{ -#ifdef _irq_debug_ - 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/tags/2.05/jhl_defs.h b/tags/2.05/jhl_defs.h deleted file mode 100644 index b0b36c6..0000000 --- a/tags/2.05/jhl_defs.h +++ /dev/null @@ -1,29 +0,0 @@ -#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 - - -// typedef unsigned char err; - -#include "config.h" - -#define set_bit( cond, reg, pos ) \ -{ \ - if( cond ){ \ - reg |= pos; \ - }else{ \ - reg &= ~pos; \ - } \ -} - -#endif diff --git a/tags/2.05/led.c b/tags/2.05/led.c deleted file mode 100644 index 9dc9cc0..0000000 --- a/tags/2.05/led.c +++ /dev/null @@ -1,349 +0,0 @@ -/* ======================================================== - LED.c - ======================================================== */ -#ifndef _WIN32 - -#pragma sfr - -#endif - -#include "incs.h" -#include "led.h" - - - -// ======================================================== -// 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̃p^[f[^ -uni_info_LED info_LED; - - -bit info_led_off; -bit info_led_override; - - -// [dۂ -extern bit BT_IN_CHG_delayed_n; - - -// ======================================================== -#define led_fade_to( now, goal ) now = fade_to( now, goal ) - -/* ======================================================== - reg_ledgoalɂȂ܂ŃOf[V - Ƃ肠AXebvŒ - ====================================================== */ -u8 fade_to( u8 now, u8 goal ) -{ - if( now != goal ) - { - if( now > goal ) - { - now --; - } - else - { - now ++; - } - } - return( now ); -} - - - - -// ======================================================== -#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 - { - status->now = status->to; - } - } - return( status->now / 128 ); -} - - - - -// ======================================================== - - -// ======================================================== -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 - */ - 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 - -// system_status.info_fullcolor = 1; - - LED_duty_notify_red = 0; - LED_duty_notify_blu = 0; - LED_duty_notify_grn = 0; - LED_pow_red = 0; - LED_CAM = 0; - - if( system_status.reboot ) - { - vreg_ctr[VREG_C_LED_POW] = LED_POW_ILM_AUTO; - LED_duty_pow_blu = LED_BRIGHT_MAX; - } - info_led_off = false; - ledInitialized = true; -} - - - -void LED_stop( ) -{ - TT0 = 0x00EF; // Ē~iȂƂ߁j - TOE0 = 0x0000; // TOx^C}[W[H(GPIOɂȂ) - TAU0EN = 0; - LED_pow_red = 0; - LED_CAM = 0; - ledInitialized = false; -} - - - - - - - -/* ======================================================== - * 荞݂͎̂̂g܂ * - LED_Wifi 3 - ======================================================== */ -void tsk_led_wifi( ) -{ - static u8 task_interval; - static u8 state_wifi_tx; - static u8 flag_wifi_TX; - - 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 --; - } - 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 - ======================================================== */ -// Of[VvZȂ -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; -} - - -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; -} - - -// { -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/tags/2.05/led.h b/tags/2.05/led.h deleted file mode 100644 index e92d209..0000000 --- a/tags/2.05/led.h +++ /dev/null @@ -1,146 +0,0 @@ -#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 void tsk_led_cam(); - - - -// ==================================== -extern bit ledInitialized; -extern bit info_led_override; - - -#endif diff --git a/tags/2.05/led_cam.c b/tags/2.05/led_cam.c deleted file mode 100644 index 6e0d28a..0000000 --- a/tags/2.05/led_cam.c +++ /dev/null @@ -1,146 +0,0 @@ -/******************************************************//** - LED_Cam TO02 -\n BLINK,*_PLUSE ̎́A1͕K̏ԂɂȂ܂B -\n ̊Ԃ OFFBLINK ȂǂƁAOFF܂B - *********************************************************/ -#ifndef _WIN32 - -#pragma sfr - -#endif - -#include "incs.h" -#include "led.h" - - - -// ======================================================== -static u8 state_led_cam = 0; -static u16 task_interval; - -bit cam_led_update; - - - -// ======================================================== -static void cam_led_twl(); - - - -// ======================================================== -void tsk_led_cam( ) -{ - DI(); // WX^ւ݂̏ŋN邱Ƃ邽 - if( !cam_led_update ) - { - if( task_interval != 0 ) - { - task_interval --; - 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 ... -} - - - -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/tags/2.05/led_pow.c b/tags/2.05/led_pow.c deleted file mode 100644 index 5906ee8..0000000 --- a/tags/2.05/led_pow.c +++ /dev/null @@ -1,269 +0,0 @@ -/* ======================================================== - // dLED - LED_POW_B,R 6,7 - - TDR00@(0x03FFBTPS0250kHzŃJEgAbvB10bitȂ250HzʂɂȂ) - TDR0x@Duty 0ŏATDR00( =0x03FFȏ)œ_łB - - 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" - - -// ======================================================== -// 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; - - - -// ======================================================== -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] ); -} - - - -/* ======================================================== - z^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/tags/2.05/loader.c b/tags/2.05/loader.c deleted file mode 100644 index 85c7d4e..0000000 --- a/tags/2.05/loader.c +++ /dev/null @@ -1,380 +0,0 @@ -/* ======================================================== - MCU CTR BSR - 2009/03/30 - JZp c - - u[g[_[ - zXg̒ʐMƁAȏAt@[̃`FbNsB - - ======================================================== */ -#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 "magic.h" - - - -#define REG_BIT_RESF_WDT 0x10 -#define REG_BIT_RESF_TRAP 0x80 -#define REG_BIT_RESF_LVI 0x01 - - - -// ======================================================== -#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 void hdwinit2(); -static void chk_platform_type(); -static void chk_firm_broke(); - - -extern void main_loop(); - - - -// ======================================================== -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; - } -/* - else if(( my_resf & REG_BIT_RESF_LVI ) != 0 ) - { - vreg_ctr[ VREG_C_MCU_STATUS ] |= ( 1 << 2 ); - } -*/ - } - - 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(); -#endif - - // V䔻 - chk_platform_type(); - - // ʏ^] - main_loop( ); - } -} - - - -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 - } -} - - -/* ======================================================== - fobK‚ȂłƏɔłȂƂ܂B -CTRt@~ - DEV_DET(P12.[2:1]) - -CTR̊J@ - P40,41 !! fobOLP40LMCUN܂I - HH @ - HL NBDV - LH X^hAV - LL ISfobK -======================================================== */ -void chk_platform_type() -{ - // CTRt@~ // - system_status.family = (enum _family)( DEV_DET >> 1 ); /// ... - if( system_status.family == FAMILY_SPFL ) - { - pm_reg_bit_vddlcd = PM_REG_BIT_VDDLCD_AMO; - } - else - { - pm_reg_bit_vddlcd = PM_REG_BIT_VDDLCD_CGS; - } - - // CTR̊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 -} - - - - -// ======================================================== -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 = 0x01; /* BWX^ */ - 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/tags/2.05/pedo_alg_thre_det2.c b/tags/2.05/pedo_alg_thre_det2.c deleted file mode 100644 index 2dbf6c4..0000000 --- a/tags/2.05/pedo_alg_thre_det2.c +++ /dev/null @@ -1,574 +0,0 @@ -/* ******************************************************** - v - 3x̃A^Cf[^AxNg̃moA - 臒l𒴂鎞ԁAԊuAm̑傫臒l؂ւȂ -********************************************************* */ -#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(); - 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(); - 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(); - 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; -} - - - -/* ======================================================== -󔒂̎ԂK؂0ɂāA -܂ނPԂ̃f[^ʒuɃ|C^Hi߂ -======================================================== */ -void clear_hosu_hist() -{ - u8 hours = PEDOMETER_LOG_SIZE; - do - { - hours --; - pool.vreg_c_ext.pedo_log[ hours ] = 0xFFFF; - } - while( hours != 0 ); - - DI(); - vreg_ctr[ VREG_C_ACC_HOSU_L ] = 0; - vreg_ctr[ VREG_C_ACC_HOSU_M ] = 0; - vreg_ctr[ VREG_C_ACC_HOSU_H ] = 0; - p_record = 0; - pedolog_overflow = false; - EI(); -} - - -extern u8 iic_burst_state; -bit pedolog_read_msb; -/* ======================================================== - vqXgǂݏǒ㏈() - ǂݏo|C^̃NA -======================================================== */ -/* }Nɂ܂ -void hosu_read_end( ) -{ - pedolog_read_msb = 0; -} -*/ - - - -/* ======================================================== - ṽ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(); - 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/tags/2.05/pedo_lpf_coeff.c b/tags/2.05/pedo_lpf_coeff.c deleted file mode 100644 index 2e16755..0000000 --- a/tags/2.05/pedo_lpf_coeff.c +++ /dev/null @@ -1,83 +0,0 @@ - -#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/tags/2.05/pedo_lpf_coeff.h b/tags/2.05/pedo_lpf_coeff.h deleted file mode 100644 index f81d6c2..0000000 --- a/tags/2.05/pedo_lpf_coeff.h +++ /dev/null @@ -1,84 +0,0 @@ -#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/tags/2.05/pedometer.h b/tags/2.05/pedometer.h deleted file mode 100644 index 8760308..0000000 --- a/tags/2.05/pedometer.h +++ /dev/null @@ -1,36 +0,0 @@ -#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/tags/2.05/pm.c b/tags/2.05/pm.c deleted file mode 100644 index 93fc0c4..0000000 --- a/tags/2.05/pm.c +++ /dev/null @@ -1,1388 +0,0 @@ -/* ======================================================== - PMIC - cJZ - nintendo - '08 Dec - ======================================================== */ -#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" - - - -// ======================================================== -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[]; - - - -// ======================================================== -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(); - -// 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 - EPM_BT_AUTH AGPI in - EPM_CHARGE_n CCIC /CHG in - EPM_CHARGE_ERR_n /FLT in - EPM_EXTDC_n /DOK INTP4 in - EPM_CHARGE_EN_n /CEN out - - ȉ͊̕֌W肻łʂ̂ƂŎɊĎĂ܂B - ELED_Pow R, B, Charge tsk_LED - EBT_TEMP,_P tsk_ADC - - PM_EXTDC͊荞݃Cɂ邩 - ======================================================== */ -#define INTERVAL_TSK_BATT 60 -// 100Ə[dG[ɂ܂_łȂ̂ - -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(); // CCIC - - if( ! BT_IN_CHG_delayed_n ) // LEDɔf - { - LED_CHARGE = 1; - } - else - { - LED_CHARGE = 0; - } - - // A_v^‚ȂuԁA[dłb킴Ɠ_BdĂ邱Ƃ킩点邽߁B - if( chg_led_override != 0 ){ // 猩΂킩邪Au(NbN)鎖BC‚l邩ȁcH - chg_led_override --; - LED_CHARGE = 1; - } - - // WX^̏[drbgLEDɓ - set_bit( LED_CHARGE, vreg_ctr[VREG_C_STATUS], REG_BIT_BATT_CHARGE ); // set_bit̂݁B - - // 荞 - // tsk_misc󂯂 - - // drc // - BT_get_left(); -} - - -#define RAW_TEMP_LH 75 // 50 [degC] -#define RAW_TEMP_LL 61 // 55 -#define RAW_TEMP_HL 184 // 1 -#define RAW_TEMP_HH 189 // -1 -#define AVG_COUNT 40 - -/* ******************************************************* - x`FbN - xtqXeVX - ******************************************************* */ -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; - } -} - - - -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 - { - // "Jɒx" todo:Ƃ@H - if( !BT_CHG_Ena_n && vreg_ctr[ VREG_C_BT_REMAIN ] < 60 ) - { - BT_IN_CHG_delayed_n = 0; // [dƈB[dIĂ͂Ȃ - } - else - { - BT_IN_CHG_delayed_n = 1; - anti_chatter = 0; - } - } -} - - - -/******************************************************** -A_v^̗L`FbN - doff̃A_v^ŊOĂ΂邽ߕ - ***********************************************************/ -void pm_chk_adapter() -{ - static bit pm_extdc_old; - - 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_bit( 1, vreg_ctr[VREG_C_STATUS], REG_BIT_POW_SUPPLY ); - set_irq( VREG_C_IRQ1, REG_BIT_BT_DC_CONNECT ); - chg_led_override = (u8)( 3000 / INTERVAL_TSK_BATT ); // 덷~ςŎ4.5sec炢AȂ - } - else - { - u8 temp_v[2]; - - // - set_bit( 0, vreg_ctr[VREG_C_STATUS], REG_BIT_POW_SUPPLY ); - set_irq( VREG_C_IRQ1, REG_BIT_BT_DC_DISC ); - chg_led_override = 0; - - // 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; - -void BT_chk() -{ - BT_VENDER battery_manufacturer_old; - - battery_manufacturer_old = battery_manufacturer; - - BT_model_detect(); - bt_param_select(); // obecʕ␳p[^ȂǃZbg @łAƂ肠̒l(pi)wɂĂB - // ʂrcompvZ邪A|C^QƂ̂₾A@ȂvZȂƂʓ| - - 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Ă̂ŌĂт܂ėǂ@ȂƂɁcorz - if( (( battery_manufacturer_old == BT_VENDER_OPEN ) || - ( battery_manufacturer_old == BT_VENDER_NOT_CHECKED )) && - !system_status.reboot ) - { - BT_mgic_quick_start(); - } - BT_mgic_init(); // @픻s܂ - } - 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( 5 ); // dオ̂ɎԂ| - - raw_adc_temperature = get_adc( ADC_SEL_BATT_TEMP ); - temp = get_adc( ADC_SEL_BATT_DET ); - BT_DET_P = 0; - - system_status.captureBox = 0; - // vbgtH[ // - if( raw_adc_temperature > 0xF0 ) - { - // TS // - system_status.model = MODEL_TS_BOARD; - } - else if( raw_adc_temperature < 4 ) - { - // // - system_status.model = MODEL_SHIROBAKO; - - // āFLv`{[h // - if(( iic_mcu_read_a_byte( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_VERSION ) == 0x01 ) && - ( iic_mcu_result == ERR_OK )) - { - system_status.captureBox = 1; - } - } - else - { - // @AcIC NACK( obe܂͎cIC̏ ) - system_status.model = MODEL_JIKKI; // obe̎́ŏ㏑ - } - - // 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; - } -} - - - -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( 0x4000 ) ); - - wait_ms( 150 ); -} - - -#define MGIC_CMD_UNLOCK_KEY 0x4A57 -#define MGIC_CMD_RESET 0x5400 -static void BT_mgic_init() -{ - u8 origParam[4]; - - /* - // -1. ZbgĂ݂ - Ⴞ! - i2c_send_buff_2B._u16 = swap_endian_16( MGIC_CMD_RESET ); - send_cmd_mgic_2B( BT_GAUGE_REG_COMMAND ); // ‚NACKԂ - */ - - 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_ctr[ VREG_C_STATUS_1 ] |= REG_BIT_MGIC_ERR; - return; - // ܂ - } - - vreg_ctr[ VREG_C_STATUS_1 ] &= ~REG_BIT_MGIC_ERR; - - // wait_ms( 5 + 1 ); OɃEFCgĂ̂ŕsv - - // 2. p[^ꎞۑ - iic_mcu_read( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_RCOMP, 4, origParam ); - - // 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; - - // 16oCgƂɋ؂Ƃ̂Ɓ@imCY΍Ƃ񂾂ǁAӖ񂩁Hj - for( loop = 0; loop < 4; loop ++ ) - { - iic_mcu_set_wo_dma( ); - iic_mcu_write( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_BT_PARAM + loop*16, 16, p_bt_param->mg_param + loop*16 ); - } - } - - // 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 - - // 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(); - } - } - - // 10.RCOMPOCV߂ - iic_mcu_write( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_RCOMP, 4, origParam ); - - // 11. bN - send_cmd_mgic_2B( BT_GAUGE_REG_LOCK, swap_endian_16( 0x0000 ) ); // lock key -} - - - -extern u16 _dbg_rcomp; -/* ======================================================== - raw_adc_temperatureɓĂlɕϊƂƂɁA - EWX^ɃZbg - EcICɃ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_ctr[ VREG_C_STATUS_1 ] |= REG_BIT_MGIC_ERR; - } - } - } - return ( ERR_FINISED ); -} - - - -/********************************************************** - 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_SHIROBAKO ) - { - // 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_ctr[ VREG_C_STATUS_1 ] |= REG_BIT_MGIC_ERR; - bt_authorized = false; - reg_volatile_temp_bt_remain = 0; - force_off = true; - } - else - { - u16 temp_u16; - - // 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); - } - } - } - - // 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 ) - { - 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%ȏiCCICoOj - // = [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 - ======================================================== */ -// BSR // -err PM_LCD_on( ) -{ - u8 rv; - - PM_VDDLCD_on( ); - - if( system_status.family == FAMILY_SPFL ) - { - SPFL_LCD_AMOL_HV_CONT = 1; - } - - wait_ms( DELAY_PM_TSS_50B_AND_TCOM ); - - PM_TCOM_on( ); - - wait_ms( DELAY_PM_TCOM_TO_VCS ); - - PM_VCS_on( ); - - wait_ms( DELAY_PM_VCS_TO_BL ); - - rv = (u8)PM_chk_LDSW( ); - - if( rv != 0 ) // pX - { - // dNG[Ȃd؂Ă܂Bł̓PAȂ - vreg_ctr[VREG_C_STATUS] |= REG_BIT_LCD_POW; - set_irq( VREG_C_IRQ3, REG_BIT_LCD_ON ); - return ( ERR_SUCCESS ); - } - - return ( ERR_ERR ); -} - -// BSR // -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 ); - } - - - // td؂ // - SPFL_LCD_AMOL_HV_CONT = 0; // ̃t@~łLȂ̂ŕQȂ - - // 50msƂ҂‚AmF܂傤ˁc - if( read_pmic( PM_REG_ADRS_VDD_LCD ) != 0 ) - { - if( system_status.family == FAMILY_SPFL ) - { - wait_ms( 10 ); // At@X15V؂Ƃ̃EFCgB - } - - PM_TCOM_off(); - wait_ms( 1 ); - PM_TCOM_VCS_off( ); - wait_ms( DELAY_PM_LCD_OFF ); - - PM_VDDLCD_off( ); // cĂ̑S~߂܂B - vreg_ctr[VREG_C_STATUS] &= ~REG_BIT_LCD_POW; - } - - set_irq( VREG_C_IRQ3, REG_BIT_LCD_OFF ); // ɔB}XN΁B -} - - - -/* ======================================================== -@obNCǧ•on/off -@󂩂@on/off/ێ@̃tOȂ̂Ŗʓ| -@@Ⴆ΁ABL on/on ̏ԂŁAon/onɂƌĂAon/on荞݂܂B -======================================================== */ -err PM_BL_set( u8 dat ) -{ - u8 blset; - u8 intset = 0; - // RMWs - - // Read - blset = read_pmic( PM_REG_ADRS_BL ); - - // Modify - // ue - 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; - } - - // shita - 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( blset != 0 ) // BLtꍇ̓EFCg܂ȂPWMĂ炸 - // Vbg_E邱Ƃ - { - wait_ms( 16 + 10 ); - } - send_cmd_pmic( PM_REG_ADRS_BL, blset ); - -#if 0 -// SoCPWMo悤WX^ZbgĂxL邽߁AXe[^X -// XVĂ܂B -#endif - // 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܂Ƃ߂čŝŁA‚̊֐gps - { - 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 ( ERR_FINISED ); -} - - - -/* ======================================================== - V[PX̒ʂd𗧂グĂ䂫܂B - Ԓl 0 Ō܂ŐɊB - 1 V[gȂǂœd肫Ȃ - - ȉ̃s͎ɂőEĎ܂B - EPOW_CONT1,2 TEGd̂ - ======================================================== */ -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ƂɎĝł - - 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 ); - - // ZbgȂǁBVXeNI - PM_reset_neg(); - FCRAM_RST_neg; - RESET2_neg; - - codec_reg_init(); // CODEC s背WX^(reset2̌łȂƂȂ̂) - ntr_pm_reg_shadow = 0; // @V@ȂƂ... - - return ( ERR_SUCCESS ); -} - - - - -/* ======================================================== - dOFFV[PX - ======================================================== */ -void PM_sys_pow_off( ) -{ -// if( RESET1_n ) - if( PM_chk_LDSW() ) - { - // ُ펞͌Ă΂Ȃ - PM_BL_set( REG_BIT_CMD_BL_U_OFF | REG_BIT_CMD_BL_L_OFF ); - PM_LCD_off(); // TCOM,VCS OFF Ă܂B - wait_ms( 20 ); - - PM_reset_ast(); - } - - RESET2_ast; - FCRAM_RST_ast; - - wait_ms( 20 ); - - PM_off( ); - PM_LDSW_off( ); - - return; -} - - - -/*========================================================= - extDC荞 - dOFFNi[d̉xĎ̂߁ĵ - i̓|[O(pm) - =========================================================*/ -__interrupt void intp4_extdc( ) -{ -// chg_led_override = (u8)( 1000 / INTERVAL_TSK_BATT ); -// chg_led_override = 4; -} - - - -/*========================================================= - 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 ); - } -} - - -/* ======================================================== - PMIC̊荞݂󂯂ā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 ( ERR_FINISED ); - } - -// 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 ] & ~0x0C ) | ( ntr_pm_reg_shadow & 0x0C ); // 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; - } - -#if 0 - // obNCgݒ - // ɏĂ - /// ̂Ƃ낳ɍׂ͕Ȃǁc - if( ( ntr_pm_reg_shadow & ( REG_BIT_TWL_REQ_BL_U | REG_BIT_TWL_REQ_BL_U ) ) == 0 ) - { - vreg_ctr[ VREG_C_COMMAND2 ] = ( REG_BIT_CMD_BL_U_OFF | REG_BIT_CMD_BL_U_OFF ); - renge_task_immed_add( tski_PM_BL_set ); - } -#endif - - // 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 ) - { -#if 0 - // CODECoO - // ZbgPiłȂ疳 - if( ( reg1_old ^ ntr_pm_reg_shadow ) == REG_BIT_TWL_REQ_RST_REQ ) -#endif - { - 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 ( ERR_FINISED ); -} - - - -/********************************************************** - command2 tn -@ bp[IȕBERR_SUCCESSԂȂc -**********************************************************/ -task_status_immed tski_PM_LCD_on() -{ - PM_LCD_on(); - return( ERR_FINISED ); -} - -task_status_immed tski_PM_LCD_off() -{ - PM_LCD_off(); - return( ERR_FINISED ); -} - -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( ERR_FINISED ); -} - - - -/********************************************************** -@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 ) // Mobt@ -{ - u16 temp = dat; - 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[^̌ - ============================================================ */ -void bt_param_select() -{ - BT_TYPE bt_type_temp; - // ΉĂ番R[h‚ - if( battery_manufacturer <= BT_VENDER_3 ) - { - bt_type_temp = BT_PARAM_CTR_MAXELL; - } - else - { - bt_type_temp = BT_PARAM_CTR_PANA; - } - - if( system_status.family == FAMILY_SPFL ) - { - bt_type_temp += BT_PARAM_SPFL_MAXELL; // ItZbg cOȎŁcB - } - else if( system_status.family == FAMILY_SHRIMP ) - { - bt_type_temp += BT_PARAM_SHRIMP_MAXELL; - } - p_bt_param = &bt_param[ bt_type_temp ]; -} - - - -/* ============================================================ - TWLɓdrcʂĂ - ============================================================ */ -static void bt_batt_update_twl() -{ - if (vreg_ctr[VREG_C_BT_REMAIN] > 80) - { - vreg_twl[REG_TWL_INT_ADRS_POWER_INFO] = 0x0F; - } - else if (vreg_ctr[VREG_C_BT_REMAIN] > 50) - { - 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] > 0) - { - 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 ); - } - } -} - - -/* ======================================================== -========================================================= */ -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 ) ); - } -} - - -/* ======================================================== -========================================================= */ -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; - } -} diff --git a/tags/2.05/pm.h b/tags/2.05/pm.h deleted file mode 100644 index 423d771..0000000 --- a/tags/2.05/pm.h +++ /dev/null @@ -1,216 +0,0 @@ -#ifndef __PM__ -#define __PM__ - - - -#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 -}; - - -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 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_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Ⴄ) - - -//========================================================= -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(); - - -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 )) -#define PM_VDD50A_on() ( send_cmd_pmic( PM_REG_ADRS_VDD_SYS, ( PM_REG_BIT_VDD | PM_REG_BIT_VDD50A ))) -#define PM_VDD_off() ( send_cmd_pmic( PM_REG_ADRS_VDD_SYS, 0 )) -#define PM_off() PM_VDD_off() - -#define PM_VDD_normMode() ( send_cmd_pmic( PM_REG_ADRS_POW_SAVE, PM_REG_BIT_VDD1P_1R15 | PM_REG_BIT_VDD_PWM )) -#define PM_VDD_ecoMode() ( send_cmd_pmic( PM_REG_ADRS_POW_SAVE, PM_REG_BIT_VDD1P_0R90 | PM_REG_BIT_VDD_AUTO )) -// todo YŃRAdς邩Ȃ - -// ق // -#define PM_reset_neg() ( send_cmd_pmic( PM_REG_ADRS_CONT, ( PM_REG_BIT_LDSW | PM_REG_BIT_nRST1 ))) -#define PM_reset_ast() ( send_cmd_pmic( PM_REG_ADRS_CONT, ( PM_REG_BIT_LDSW ))) -#define PM_chk_LDSW() ( read_pmic( PM_REG_ADRS_CONT ) & PM_REG_BIT_LDSW ) -// 0 ƈُ - -// 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/tags/2.05/pool.h b/tags/2.05/pool.h deleted file mode 100644 index 81c8091..0000000 --- a/tags/2.05/pool.h +++ /dev/null @@ -1,24 +0,0 @@ -#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/tags/2.05/reboot.c b/tags/2.05/reboot.c deleted file mode 100644 index b784f15..0000000 --- a/tags/2.05/reboot.c +++ /dev/null @@ -1,24 +0,0 @@ -/********************************************************//* - - ނ胊u[g - - t@CɃCCAZuƁA - ̃W[SœKȂȂ邽ߒǂo - - **********************************************************/ -#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/tags/2.05/reboot.h b/tags/2.05/reboot.h deleted file mode 100644 index c20e11e..0000000 --- a/tags/2.05/reboot.h +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef __MYREBOOT__ -#define __MYREBOOT__ - -void my_reboot(); - -#endif diff --git a/tags/2.05/renge/renge.c b/tags/2.05/renge/renge.c deleted file mode 100644 index 1c7562a..0000000 --- a/tags/2.05/renge/renge.c +++ /dev/null @@ -1,315 +0,0 @@ -#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" - -#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; - -bit renge_task_interval_in_force; - - -#include "..\bsr_system.h" -extern system_status_ system_status; - - -//****************************************************************************** -static void renge_task_immed_init(); -static void renge_task_immed_del(); - - - -//****************************************************************************** -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 - *****************************************************************************/ -err renge_task_interval_run(){ - u8 i; - - // C^[oN - DI(); - if(( renge_flg_interval != 0 ) || - ( renge_task_interval_run_force )) /// ȁc - { - renge_task_interval_in_force = renge_task_interval_run_force; - 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@ERR_FINISED@^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 - **************************************/ -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(); - 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 - **************************************/ -err renge_task_immed_run(){ - u8 list_id; - -// while( tasks_immed[ 0 ] != TSK_IMM_EMPTY_ ) - if( tasks_immed[ 0 ] != TSK_IMM_EMPTY_ ) - { - DI(); - 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 ](); - if( rv == ERR_SUCCESS ) - { - tasks_immed[ list_id ] = TSK_IMM_DELETED_; - } - } - DI(); - } - // 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(); - 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/tags/2.05/renge/renge.h b/tags/2.05/renge/renge.h deleted file mode 100644 index ee1d9f9..0000000 --- a/tags/2.05/renge/renge.h +++ /dev/null @@ -1,28 +0,0 @@ -#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(); -err renge_task_immed_run(); -err renge_task_immed_add( task_status_immed (*p_task_func)() ); -// static err renge_task_immed_del( u8 ); - - - -//****************************************************************************** -err renge_task_interval_run(); -extern u8 renge_flg_interval; -extern bit renge_task_interval_run_force; // ^XNstO -extern bit renge_task_interval_in_force; // stO - -#endif diff --git a/tags/2.05/renge/renge_defs.h b/tags/2.05/renge/renge_defs.h deleted file mode 100644 index 0199d76..0000000 --- a/tags/2.05/renge/renge_defs.h +++ /dev/null @@ -1,55 +0,0 @@ -#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 -{ - ERR_FINISED = 0, - ERR_CONTINUE -}IMMED_TASK_ERR; - - - -/************************************** - C^[oN - *************************************/ -typedef void task_status; - - -/************************************** - Ñ^XNXg - p~ɂȂ邩Ȃ - *************************************/ -typedef IMMED_TASK_ERR task_status_immed; - - -#endif diff --git a/tags/2.05/renge/renge_task_config.rb b/tags/2.05/renge/renge_task_config.rb deleted file mode 100644 index c2de509..0000000 --- a/tags/2.05/renge/renge_task_config.rb +++ /dev/null @@ -1,59 +0,0 @@ -#!/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/tags/2.05/renge/renge_task_immediate.h b/tags/2.05/renge/renge_task_immediate.h deleted file mode 100644 index 7c5016d..0000000 --- a/tags/2.05/renge/renge_task_immediate.h +++ /dev/null @@ -1,25 +0,0 @@ -#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_hosu_set(); // 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/tags/2.05/renge/renge_task_intval.h b/tags/2.05/renge/renge_task_intval.h deleted file mode 100644 index 9b0d9ea..0000000 --- a/tags/2.05/renge/renge_task_intval.h +++ /dev/null @@ -1,37 +0,0 @@ -/*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/tags/2.05/renge/renge_tasks.txt b/tags/2.05/renge/renge_tasks.txt deleted file mode 100644 index 73af545..0000000 --- a/tags/2.05/renge/renge_tasks.txt +++ /dev/null @@ -1,11 +0,0 @@ -sw -adc -batt -led_pow -led_wifi -led_notify -led_cam -misc -status -debug -sys diff --git a/tags/2.05/rtc.c b/tags/2.05/rtc.c deleted file mode 100644 index a539a97..0000000 --- a/tags/2.05/rtc.c +++ /dev/null @@ -1,175 +0,0 @@ -/* ======================================================== - RTC - ======================================================== */ -#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 -} diff --git a/tags/2.05/rtc.h b/tags/2.05/rtc.h deleted file mode 100644 index 6b2d9f8..0000000 --- a/tags/2.05/rtc.h +++ /dev/null @@ -1,21 +0,0 @@ -#ifndef __rtc_h__ -#define __rtc_h__ - - -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() { RCLOE0 = 1; } -#define RTC_32k_off() { RCLOE0 = 0; } - - -// ------------------------------------ -extern bit rtc_alarm_dirty; - - -#endif diff --git a/tags/2.05/self_flash.c b/tags/2.05/self_flash.c deleted file mode 100644 index d1ff4dd..0000000 --- a/tags/2.05/self_flash.c +++ /dev/null @@ -1,608 +0,0 @@ -/* ======================================================== - ȃAbvf[^ - ======================================================== */ -#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 "pool.h" -#include "magic.h" - -#include "pm.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 P1.5 -#define LED_PM_POW1 PM1.5 -#else -#define LED_POW1 mcuRegP[ _P1_5 ] -#define LED_PM_POW1 mcuRegPM[ _P1_5 ] -#endif - -// ======================================================== -static void FSL_Open( void ); -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( ); - break; - } - } - - // EFCg - for( i = 1; i != 0; i++ ) - { - NOP(); - NOP(); - NOP(); - NOP(); - } - } - { - // ǁAǂ悤cB - - KRM = ( KR_SW_POW ); // Mask ł͂ȂAModeȂ̂B킵 - 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; - } - } - } - - - if( my_FSL_Init() != ERR_SUCCESS ){ - 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 - -/* -// u[g - if( FSL_InvertBootFlag() != ERR_SUCCESS ) - { - alert(3); - } -*/ - FSL_ForceReset(); // Zbg - // FSL_SwapBootCluster( ); // u[gXbvuɁvċNď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ւ -} - - - -/*----------------------------------------------------------------------------------------------*/ -/* leave the "user room" and restore previous conditions */ -/*----------------------------------------------------------------------------------------------*/ -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( __far u8 * p_rom, -// u8 block_dest ) -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 ); - -} - - - -/* ======================================================== - ======================================================== */ -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 ); -} - - -task_status_immed tski_mcu_reset() -{ - // ʂɍċN - my_FSL_Init(); - - FSL_ForceReset(); // Zbg - FSL_Close( ); - - // یH // - mcu_wdt_reset; - return( ERR_SUCCESS ); // no reach -} - - -#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; - } -} - - -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/tags/2.05/self_flash.h b/tags/2.05/self_flash.h deleted file mode 100644 index 768565e..0000000 --- a/tags/2.05/self_flash.h +++ /dev/null @@ -1,9 +0,0 @@ -#ifndef _self_flash_h_ -#define _self_flash_h_ - - -void firm_update(); - - -#endif - diff --git a/tags/2.05/sw.c b/tags/2.05/sw.c deleted file mode 100644 index 5fd74ed..0000000 --- a/tags/2.05/sw.c +++ /dev/null @@ -1,188 +0,0 @@ -#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; \ - } \ - } \ - } - - -#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Ȃǂ̌oȂ - ======================================================== */ -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 - { - 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; - } - } - } -} - diff --git a/tags/2.05/sw.h b/tags/2.05/sw.h deleted file mode 100644 index abe9715..0000000 --- a/tags/2.05/sw.h +++ /dev/null @@ -1,20 +0,0 @@ -#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/tags/2.05/task_debug.c b/tags/2.05/task_debug.c deleted file mode 100644 index 54b594b..0000000 --- a/tags/2.05/task_debug.c +++ /dev/null @@ -1,120 +0,0 @@ -#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 - -ӁI@^XNXgOĂ܂̂ŁAgȂ畜ĉI - -void tsk_debug( ) -{ -// u8 temp; - -#ifdef _DBG_PEDO_AUTO_ENABLE_ - if( system_status.pwr_state == ON_TRIG ){ - // vNonɂ - vreg_ctr[ VREG_C_ACC_CONFIG ] = 0x03; - renge_task_immed_add( tski_acc_hosu_set ); - } -#endif - - /* - 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ЂȌ` - ======================================================== */ -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^ ); -*/ -task_status_immed tski_hina( u8 * arg ) -{ - return ( ERR_FINISED ); - // ERR_FINISED ^XN폜 - // ERR_CONTINUE ɂȂ񂩊荞݂ȂA[U[ȂAVXe`bN - // Ƃɍēxs -} - - -#endif diff --git a/tags/2.05/task_misc.c b/tags/2.05/task_misc.c deleted file mode 100644 index bcc8696..0000000 --- a/tags/2.05/task_misc.c +++ /dev/null @@ -1,374 +0,0 @@ -#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 - - - -// ======================================================== -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(); - - - -/* ======================================================== - Xe[^XWX^Ȃ - ======================================================== */ -void tsk_misc( ) -{ - /* ======================================================== - xZT荞݃sIWi}CRɂ͖̂ - |[OB - vp - BSR}CRaccero.cŊ荞݃[`^XNo^܂B - ======================================================== */ - // 荞݂̎肱ڂH - if( ACC_VALID ) - { - if( renge_task_immed_add( tski_cbk_accero ) == ERR_SUCCESS ){ - // dbg_nop(); - } - } - - if( system_status.pwr_state == ON ) - { - /* ======================================================== - PM݊WX^ւ̏ - |[OĂȂB荞݁H - ======================================================== */ - 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(); - - if( reserve_pedo_increnent ) - { - reserve_pedo_increnent = 0; - hosu_increment_if_necessary(); - } - -} - - - -/* ======================================================== - TWLVol̂ƁAXC_̑삪obeBO - sN鎖Ah - TWLł8ʏ펞A{^8iKBɍ킹Ċ荞݂ꂽ - ======================================================== */ -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 ); - } -} - - - -// 3D_LED ///////////////////////////////////// -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 --; - } - } - } -} - - - -/* ======================================================== - N^XN - ======================================================== */ - -/* ======================================================== - COMMANDWX^ւ̏ -@ 0ȂĂ΂܂BPAsv - ======================================================== */ -task_status_immed tski_do_command0( ) -{ - u8 temp_command; - - // command0 {̓dȂ - DI(); - temp_command = vreg_ctr[VREG_C_COMMAND0]; - vreg_ctr[VREG_C_COMMAND0] = 0; - EI(); - - if( temp_command & REG_BIT_GOING_TO_SLEEP ) - { - going_to_sleep = true; - } - - 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 ( ERR_CONTINUE ); - } -*/ - return ( ERR_FINISED ); -} - - - -/* fobOEeXgp ============================== */ -u16 _dbg_rcomp; -extern u8 raw_adc_temperature; - -extern u8 iic_burst_state; -extern bit temp_zone_charge_disable; -extern bit bt_authorized; - - -/* ======================================================== -@fobOpɂ낢ǂł܂B -@Ԓ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 - ======================================================== */ - -#define KOUMOKU 19 - -static u8 infos_bits[2]; -static u8 infos_temp[5]; - -static const u8 *infos_table[] = { - &infos_temp[0], /* 0 */ - &pmic_version, - (u8*)&battery_manufacturer, - &mgic_version[0], - &mgic_version[1], - &infos_temp[1], /* 5 */ - &raw_adc_temperature, - &infos_temp[2], - &infos_temp[3], - (u8*)&system_status.family, -// LED_pow_red, /* 10 */ - &infos_bits[0], - (u8*)&LED_duty_pow_blu, - (u8*)&LED_duty_3d, - (u8*)&LED_duty_notify_red, - (u8*)&LED_duty_notify_grn, - (u8*)&LED_duty_notify_blu, /* 15 */ - &infos_bits[1], -// &LED_CAM, - (u8*)&LED_duty_WiFi, - &infos_temp[4] /* 18 */ - /* ڑƂ KOUMOKU ɒ */ -}; - - u8 extinfo_read(void) -{ - u8 ret = 0xFF; - - /* - * temp͌vZKvȃf[^Bɗ]TȂ̂ŌvZKv - * ϐ́Av/svɊւ炸vZ|V[ - */ - - if( iic_burst_state < KOUMOKU ) - { - infos_temp[0] = system_status.captureBox? MODEL_CAPTURE_BOX - : ( system_status.is_dev? MODEL_ISBAKO: (u8)system_status.model ); - infos_temp[1] = (u8)( _dbg_rcomp & 0xFF ); - infos_temp[2] = ( !temp_zone_charge_disable | ( bt_authorized << 1 ) ); - infos_temp[3] = 1; /* dlύXɂ1ŒɂȂ */ - infos_temp[4] = 0 -// | ( PM_EXTDC_n ? REG_BIT_HAL0_PM_EXTDC_n : 0 ) // status0ɂ - | ( RBR_RESET_n ? REG_BIT_HAL0_PM_EXTDC_n : 0 ) // 󂫂g킹Ă炤 - | ( 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ɂ - | ( RBR_FLIGHT ? REG_BIT_HAL0_SHELL_OPEN : 0 ) // 󂫂g킹Ă炤 - | ( SW_WIFI_n ? REG_BIT_HAL0_SW_WIFI_n : 0 ) - | ( SW_HOME_n ? REG_BIT_HAL0_SW_HOME_n : 0 ) - | ( SW_POW_n ? REG_BIT_HAL0_SW_POW_n : 0 ); - - infos_bits[0] = (u8)LED_pow_red; - infos_bits[1] = (u8)LED_CAM; - - ret = *infos_table[iic_burst_state]; - iic_burst_state ++; - } - - return ret; -} - - -#ifdef i2c_timeout_test -void i2c_mcu_error_monitor() -{ - LED_duty_pow_blu = 0xff; - LED_duty_3d = 0xff; - LED_duty_notify_red = 0xff; - LED_duty_notify_grn = 0xff; - LED_duty_notify_blu = 0xff; - LED_pow_red = 1; - LED_CAM = 1; -} -#endif - diff --git a/tags/2.05/task_status.c b/tags/2.05/task_status.c deleted file mode 100644 index 0d07510..0000000 --- a/tags/2.05/task_status.c +++ /dev/null @@ -1,84 +0,0 @@ -#ifndef _WIN32 - -#pragma SFR -#pragma NOP -#pragma HALT -#pragma STOP - -#endif - -#include "incs_loader.h" -#include "renge\renge.h" -#include "hal.h" - -#include "pm.h" - -#include "accero.h" -#include "adc.h" -#include "i2c_mcu.h" -#include "led.h" - - -// ======================================================== -#define INTERVAL_TSK_STATUS 4 - - -/* ======================================================== - Xe[^XWX^Ȃ - ======================================================== */ -void tsk_status( ) -{ - static u8 state_old; // Xe[^Xωo荞 ̈ - u8 diff; - - // WJ`FbN - set_bit( 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 - - 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ԂɈȉ - if( vreg_ctr[VREG_C_STATUS] & REG_BIT_BATT_CHARGE ) - { - 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( vreg_ctr[VREG_C_STATUS] & REG_BIT_ST_SHELL_OPEN ) - { - set_irq( VREG_C_IRQ0, REG_BIT_SHELL_OPEN ); - } - else - { - set_irq( VREG_C_IRQ0, REG_BIT_SHELL_CLOSE ); - } - } - } - } - return; -} - diff --git a/tags/2.05/task_sys.c b/tags/2.05/task_sys.c deleted file mode 100644 index f4c4e07..0000000 --- a/tags/2.05/task_sys.c +++ /dev/null @@ -1,637 +0,0 @@ -#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" - - -//========================================================= -#define WAIT_SHIROBAKO_POW_CONTROL 240 - - -//========================================================= -extern void nop8(); - - -static void chk_emergencyExit(); -static void force_off_check(); -static void send_getup_to_soc(); - - - -//========================================================= -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珬̂ - -/* ======================================================== - }CRŕKvȂ -Eȓd͂ɓ - @system_status.pwr_state == OFF_TRIG ŁÃ^XNĂ΂ƁA - ȓd̓[hɓ܂ - ======================================================== */ -void tsk_sys( ) -{ - static u8 pwsw_timeout = 0; // d{^`^OB@^CAEg܂łɓdm肵Ȃoffɖ߂ - - hal_update(); - - switch ( system_status.pwr_state ) - { - case ON_CHECK: //------------------------------------------------------- - // ̊荞݂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 > 100 ) - { - SW_pow_count = 0; - system_status.pwr_state = OFF_TRIG; // XCb`̓mCYBQB - renge_task_interval_run_force = true; - return; - } - } - else - { - BT_chk(); // v|[OBdrꌟô߁BiKvI2C_m_initĂł܂j - } - - 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 ) ) && PM_EXTDC_n ) // dr && A_v^Ȃ - ) - { - // 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 ) // ZbgĂ܂ - { // 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 - - 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 - IIC_ctr_Init( ); - IIC_twl_Init( ); - RTC_32k_on( ); - - 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 - - // todo Iɂ͊SɃWX^ - RBR_RESET_n = 1; - RBR_FLIGHT = 0; - - // u[gAXe[^XƂȂXV - if( system_status.reboot ) - { - u8 bl_status_temp; - - bl_status_temp = read_pmic( PM_REG_ADRS_BL ); - vreg_ctr[ VREG_C_STATUS ] |= (( bl_status_temp & 0x03 ) << 5 ); - set_bit( ( read_pmic( PM_REG_ADRS_VDD_LCD ) != 0 ), - vreg_ctr[ VREG_C_STATUS ], REG_BIT_LCD_POW ); - 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(); - -#ifndef _TAIKENDAI_SEISAN_SPECIAL_ - if( system_status.taikendai ) // A_v^hĂ玩œdon - { - if( PM_EXTDC_n ) - { - system_status.pwr_state = OFF_TRIG; - } - } - break; -#endif - - default: //--------------------------------------- - system_status.pwr_state = OFF_TRIG; // 蓾ȂXe[gBfobOp - /* 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_hosu_set(); - - // ̑ytF~ - LED_stop( ); - IIC_ctr_Stop( ); - IIC_twl_Stop( ); - RTC_32k_off(); - - // todo }Nɂł - RBR_RESET_n = 0; - RBR_FLIGHT = 0; - - // 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; - -// dI̊荞݃Zbg -// PWSW KR3 L -// BG24 KR4 -// ӂJ INTP5 ‚L -// ACA_v^ INTP4 A_v^L -// RTC - while( iic_mcu_busy ) - {;} - - KRM = ( KR_SW_POW ); // Mask ł͂ȂAModeȂ̂B킵 - MK0 = ~( INT_MSK0_EXTDC ); - MK1 = ~( INT_MSK1_KR | INT_MSK1_RTCINTVAL ); // INT_MSK1_RTCALARM | RTCA[ - MK2L = 0xFF; - - // 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; - - 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; - - // 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; - } - } - 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_ - { - // offpinݒ~X`FbN - 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 - CKC = bits8(0,0,0,0, 1,0,0,1); // 4MHzɗƂĂSTOPȂĂ͂ȂȂ - - if( PM_EXTDC_n ) // ǂ^C~Oő}N邱Ƃ - { - STOP(); - } - - // N // - // N - // EKeyReturn荞݁id{^j - // ERTCA[iݕj - - // NbNA - CKC = bits8(0,0,0,0, 1,0,0,0); - - renge_flg_interval = 0; - hal_update(); - - // 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 - - if( system_status.taikendai ) - { - system_status.pwr_state = OFF_TRIG; - } - - } - return; - -#if 0 - default: - NOP( ); // 蓾ȂXe[g -#endif - - } -} - - - -/*******************************************************//** - PMICdُŎ~߂mF - **********************************************************/ -static void chk_emergencyExit(){ - static u8 shirobako_power_control_count; - - if( shirobako_power_control_count == 0 ) - { - if( !RESET1_n ) // PM_chk_LDSW() I2C_mgpARXg - { - if( PM_chk_LDSW( ) == 0 ) - { - // 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; - } - } - } -} - - - -/* ======================================================== - Ed{^ - Edr؂ - Edr - ł̋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 -} - - - - -/* ======================================================== - firm_update() task_status_immed^ Ԃ悤ɂ΂̂ł... - ======================================================== */ -task_status_immed tski_firm_update(){ - firm_update(); - return( ERR_SUCCESS ); -} - diff --git a/tags/2.05/user_define.h b/tags/2.05/user_define.h deleted file mode 100644 index 701ee3a..0000000 --- a/tags/2.05/user_define.h +++ /dev/null @@ -1,234 +0,0 @@ -#ifndef _USER_DEF_ -#define _USER_DEF_ - - -#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; } -#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 ) - -#if 0 // PM_RESET1`g -# 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; } -#define RESET2_neg { PM0.1 = 1; } - -#define SLP_REQ P12.0 - -// CTR,SPFL,܂ʔh@ -#define DEV_DET ( P12 & 0x00000110 ) -#define DEV_CTR ( 0b00 << 1 ) -#define DEV_SPFL ( 0b01 << 1 ) -#define DEV_SHRIMP ( 0b10 << 1 ) -#define DEV_RSV2 ( 0b11 << 1 ) - -// FCRAM -#define FCRAM_RST P3.0 -#define FCRAM_RST_ast { P3.0 = 0; } -#define FCRAM_RST_neg { P3.0 = 1; } - -// CODEC -#define PM_IRQ_n P7.2 -// INTP6 - -// PM -#define PM_EXTDC_n_RAW P7.0 -// INTP7 -//#define BT_TEMP P15.0 -// ANI8 -//#define BT_DET P15.1 -// ANI9 -#define BT_DET_P P1.6 -#define BT_TEMP_P P1.7 - - -// SPFL̃At@XLCDŕKvȁ}15V̓dB -#define SPFL_LCD_AMOL_HV_CONT P20.2 - - -// [d(out) -// _łBӁB -#define BT_CHG_ENABLE() ( P4.3 = 0 ) -#define BT_CHG_DISABLE() ( P4.3 = 1 ) -#define BT_CHG_Ena_n ( P4.3 ) - -// [d(in) -#define BT_IN_CHG_n_RAW P5.1 -#define PM_BT_IN_CHG_n PM5.1 -#define PU_BT_IN_CHG_n PU5.1 - -#define SW_WIFI_n_RAW P7.4 -#define PM_SW_WIFI_n PM7.4 -// KR4 -#define SW_POW_n_RAW P7.3 -// KR3 -#define SW_SEL_n P2.3 -#define PM_SW_SEL_n PM2.3 -//#define VOL P2.7 -// ANI7 - -#define SW_HOME_n_JIKKI_RAW P20.4 -#define PM_SW_HOME_n_JIKKI PM20.4 -#define PU_SW_HOME_n_JIKKI PU20.4 - -// INTP22 -#define SW_HOME_n_TSBOARD_RAW P2.0 // TS}U[pull up(P2͓p.u.) -#define PM_SW_HOME_n_TSBOARD PM2.0 - -// WiFi -#define WL_TX P20.3 // INTP21 -#define PM_WL_TX PM20.3 // INTP21 - -// RBR -#define RBR_RESET_n P2.1 -#define RBR_FLIGHT P2.2 - -//#define LED_CAM P1.0 // TO02 -//#define LED_WIFI P1.1 // TO03 -//#define LED_NOTIFY P1.3 // TO05 -//#define LED_3D P5.2 // SLTO TO01 -//#define LED_POW2 P1.4 // TO06 ( ) -//#define LED_POW1 P1.5 // TO07 ( ) -//#define LED_CHARGE P2.4 - -// P5.3 ɉAP5.5, P140 P141 -// P140o͐pȂ̂... -#define I2C_PU_on() { P14 |= 0x03; PM5.3 = 0; PM3.3 = 0; } -#define I2C_PU_off() { PM5.3 = 1; PM3.3 = 1; P14 &= ~0x03; } - -#define GYRO_ENABLE() P5.0 = 0 -#define GYRO_DISABLE() P5.0 = 1 - -//#define I2C_M_SDA P3.1 // SDA10 -//#define I2C_M_SCL P3.2 // SCL10 - -//#define I2C_0_SCL P6.0 // IIC_TWL SCL0 -//#define I2C_0_SDA P6.1 // SDA0 - -//#define I2C_1_SCL P20.0 // IIC CTR SCL1 -//#define I2C_1_SDA P20.1 // SDA1 - -//#define 32kHz_O P1.2 // RTCCL -//#define 32k_I1 P12.3 // XT1 -//#define 32k_I2 P12.4 // XT2 - -// @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) - -#define ACC_VALID P20.5 -#define PM_ACC_VALID PM20.5 -#define ACCEL_INT1 P2.5 -#define PM_ACCEL_INT1 PM2.5 - - -#endif // _WIN32 - -// win32 sim‹Ƌ - -#define KR_SW_POW ( 1 << 3 ) -#define KR_SW_WIFI ( 1 << 4 ) - -/////////////////////////////////////////////////////////// - -#define INT_MSK0_IIC_M_DMA 1<<12 -#define INT_MSK0_SHELL 1<<7 -#define INT_MSK0_EXTDC 1<<6 -//#define INT_MSK0_SLP 1<<2 -#define INT_MSK0_RSV ~( INT_MSK0_IIC_M_DMA | INT_MSK0_SHELL | INT_MSK0_EXTDC ) - -#define INT_MSK1_KR 1<<11 -#define INT_MSK1_RTCINTVAL 1<<10 -#define INT_MSK1_RTCALARM 1<<9 -#define INT_MSK1_ADC 1<<8 -#define INT_MSK1_IIC_CTR 1<<3 -#define INT_MSK1_IIC_MCU 1<<0 -#define INT_MSK1_RSV ~( INT_MSK1_KR | INT_MSK1_RTCINTVAL | INT_MSK1_RTCALARM | INT_MSK1_ADC \ - | INT_MSK1_IIC_CTR | INT_MSK1_IIC_MCU ) - -#define INT_MSK2_WIFI_TX_KE3 1<<4 -#define INT_MSK2L_RSV ~( INT_MSK2_WIFI_TX_KE3 ) - -#define INT_MSK2_IIC_TWL 1<<8 -#define INT_MSK2_WIFI_TX_BSR 1<<10 -#define INT_MSK2_CODEC_PMIRQ 1<<3 -#define INT_MSK2_RSV ~( INT_MSK2_IIC_TWL | INT_MSK2_WIFI_TX_BSR | INT_MSK2_CODEC_PMIRQ ) - -#if 0 -#define INT_MSK0_IIC_M_DMA 0b0001000000000000 -#define INT_MSK0_SHELL 0b0000000010000000 -#define INT_MSK0_EXTDC 0b0000000001000000 -//#define INT_MSK0_SLP 0b0000000000000100 ) -//#define INT_MSK0_RSV 0b1110111100111011 ) -#define INT_MSK0_RSV 0b1110111100111111 - -#define INT_MSK1_KR 0b0000100000000000 -#define INT_MSK1_RTCINTVAL 0b0000010000000000 -#define INT_MSK1_RTCALARM 0b0000001000000000 -#define INT_MSK1_ADC 0b0000000100000000 -#define INT_MSK1_IIC_CTR 0b0000000000001000 -#define INT_MSK1_IIC_MCU 0b0000000000000001 -#define INT_MSK1_RSV 0b1111000011110110 - -#define INT_MSK2_WIFI_TX_KE3 0b00010000 -#define INT_MSK2L_RSV 0b11101111 - -#define INT_MSK2_IIC_TWL ( 0b0000000100000000 ) -#define INT_MSK2_WIFI_TX_BSR ( 0b0000010000000000 ) -#define INT_MSK2_CODEC_PMIRQ ( 0b0000000000001000 ) -#define INT_MSK2_RSV 0b1111101111110111 -#endif // 0 - -#endif // dupe include guard diff --git a/tags/2.05/voltable.c b/tags/2.05/voltable.c deleted file mode 100644 index 2aedcf0..0000000 --- a/tags/2.05/voltable.c +++ /dev/null @@ -1,48 +0,0 @@ -#include "incs.h" - -#define _10db_ - -#ifdef _10db_ -// max -10db -const u8 slider_to_codec[64] = -{ - 127, 126, 125, 124, 122, 121, 120, 119, - 118, 117, 116, 114, 113, 112, 111, 110, - 109, 108, 106, 105, 104, 103, 102, 101, - 100, 98, 97, 96, 95, 94, 93, 92, - 90, 89, 88, 87, 86, 85, 83, 82, - 81, 80, 79, 78, 77, 75, 74, 73, - 73, 72, 71, 70, 69, 67, 66, 65, - 64, 63, 62, 61, 59, 58, 57, 56 - }; -#endif - -#ifdef _15db_ -// max -15db -const u8 slider_to_codec[64] = -{ - 127, 127, 127, 127, 127, 126, 125, 123, - 122, 121, 120, 119, 118, 117, 116, 115, - 114, 113, 112, 110, 109, 108, 107, 106, - 105, 104, 103, 102, 101, 100, 99, 97, - 96, 95, 94, 93, 92, 91, 90, 89, - 88, 87, 86, 85, 84, 83, 82, 81, - 80, 79, 78, 77, 76, 75, 74, 73, - 71, 70, 69, 68, 67, 66, 66, 66 -}; -#endif - -#ifdef _4db_ -// max -4db -const u8 slider_to_codec[64] = -{ - 127, 127, 126, 125, 123, 122, 121, 119, - 118, 117, 115, 114, 112, 111, 110, 108, - 107, 106, 104, 103, 101, 100, 99, 97, - 96, 94, 93, 92, 90, 89, 88, 86, - 85, 83, 82, 81, 79, 78, 77, 75, - 74, 72, 71, 70, 68, 67, 66, 64, - 64, 63, 61, 60, 59, 57, 56, 54, - 53, 52, 50, 49, 48, 46, 44, 44 -}; -#endif diff --git a/tags/2.05/voltable.h b/tags/2.05/voltable.h deleted file mode 100644 index 6ff34ab..0000000 --- a/tags/2.05/voltable.h +++ /dev/null @@ -1,57 +0,0 @@ -#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/tags/2.05/vreg_ctr.c b/tags/2.05/vreg_ctr.c deleted file mode 100644 index b742281..0000000 --- a/tags/2.05/vreg_ctr.c +++ /dev/null @@ -1,568 +0,0 @@ -/* ======================================================== - -CTR MCU I2CWX^ - - ====================================================== */ -#include "incs.h" -#include "vreg_ctr.h" -#include "rtc.h" -#include "led.h" -#include "accero.h" -#include "pm.h" -#include "pool.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; - - - -// ******************************************************** -#ifdef _DBG_PEDO_AUTO_ENABLE_ -u8 vreg_ctr[VREG_C_ENDMARK_ + 16]; -#else -u8 vreg_ctr[VREG_C_ENDMARK_]; -#endif - -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(); - - - -// ******************************************************** -#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; - - vreg_ctr[ VREG_C_RBR_CONTROL ] = REG_BIT_RESET_n; // todo | REG_BIT_FLIGHT; -} - - -// ******************************************************** -// {̂̓dɃZbg܂ -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_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; -// vreg_ctr[ VREG_C_VOL_CAL_MIN ] = 0x36; ŏ_I -// vreg_ctr[ VREG_C_VOL_CAL_MAX ] = 0xFF - 0x36; d邽тɃftHglɂȂĂ܂ - { - u8 i; - for( i = 0; i < sizeof( uni_info_LED ); i++ ) - { - info_LED.bindata[ i ] = 0; - } - } -} - - - -// ******************************************************** -// 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_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; - - 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_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; - - /// 񓯊œĂ邽߂ł͏Ȃ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_hosu_set ); - 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_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 ++; - } - break; - - case ( VREG_CX_FREE_ADRS ): - vreg_free_adrs = data; - break; - - - case ( VREG_C_COMMAND3 ): - switch ( data ) - { - case ( 'r' ): - // 荞݃[`FSLCuĂԂ̂͋֎~ - // }CRċNB@WX^ނB - renge_task_immed_add( tski_mcu_reset ); - break; - -#ifdef _ENABLE_WDT_TEST_ - case ( 'w' ): - // WDTōċNieXgj - while(1) - { - NOP(); - } -// mcu_wdt_reset; // ̃R}hgӖȂłI - break; -#endif - case( 'p' ): - reserve_pedo_increnent = 1; - // ő₷ɂ̓X^bNȂBŗ\̂݁Atask_miscŏ -// hosu_increment_if_necessary(); // A - break; - } - -// vreg_ctr[ VREG_C_COMMAND3 ] = data; // KvȂ - break; - - case ( VREG_C_RBR_CONTROL ): - if(( data & REG_BIT_RESET_n ) != 0 ) - { - RBR_RESET_n = 1; - } - else - { - RBR_RESET_n = 0; - } - if(( data & REG_BIT_FLIGHT ) != 0 ) - { - RBR_FLIGHT = 1; - } - else - { - RBR_FLIGHT = 0; - } - vreg_ctr[ VREG_C_RBR_CONTROL ] = data; - break; - - // read only ////////////////////////////////////////// - case VREG_C_MCU_VER_MAJOR: - case VREG_C_MCU_VER_MINOR: - 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 ) - { - 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(); - 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 - *****************************************************************************/ -void set_irq( u8 irqreg, u8 irq_flg ) -{ - u8 tot; - - if(( system_status.pwr_state == ON ) || - ( system_status.pwr_state == SLEEP )) - { - // DI(); - if( ( vreg_ctr[ irqreg + 8 ] & irq_flg ) == 0 ){ - vreg_ctr[ irqreg ] |= irq_flg; - IRQ0_neg; // uグ... - // EI(); - tot = 0; - while( !IRQ0 && ( ++tot != 0 ) ){;} // O.D.Ȃ̂łƂ̂҂ IRQ_mcu LɔĂƍ(•s) - IRQ0_ast; // ƂB - } - } -// EI(); -} diff --git a/tags/2.05/vreg_ctr.h b/tags/2.05/vreg_ctr.h deleted file mode 100644 index a7ba785..0000000 --- a/tags/2.05/vreg_ctr.h +++ /dev/null @@ -1,299 +0,0 @@ -#ifndef __vreg_ctr__ -#define __vreg_ctr__ - - -#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 ) - -// 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 ) - -/* - 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, - - 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_ACC_CONFIG = 0x40, - VREG_C_ACC_R_ADRS, - VREG_C_ACC_RESERVE, - VREG_C_ACC_W_ADRS, - VREG_C_ACC_W_BUF, - - 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 ); - -#endif diff --git a/tags/2.05/vreg_twl.c b/tags/2.05/vreg_twl.c deleted file mode 100644 index 0bd0caa..0000000 --- a/tags/2.05/vreg_twl.c +++ /dev/null @@ -1,150 +0,0 @@ -/* ======================================================== - -TWL݊I2CWX^ - - ======================================================== */ -#include "incs.h" -#include "jhl_defs.h" -#include "led.h" - -#include "vreg_twl.h" -#include "vreg_ctr.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; - - -/* ======================================================== - 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(); - 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/tags/2.05/vreg_twl.h b/tags/2.05/vreg_twl.h deleted file mode 100644 index 63cdd94..0000000 --- a/tags/2.05/vreg_twl.h +++ /dev/null @@ -1,127 +0,0 @@ -#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/tags/2.05/yav_mcu_bsr.plg b/tags/2.05/yav_mcu_bsr.plg deleted file mode 100644 index 4fe4e9d..0000000 --- a/tags/2.05/yav_mcu_bsr.plg +++ /dev/null @@ -1,31 +0,0 @@ -C:\Windows\system32\cmd.exe /c c:\cygwin\bin\touch magic.c -"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\bin\cc78k0r.exe" -c9F0104 -y"c:\program files (x86)\nec electronics tools\dev" -_msgoff -irenge -i"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r" -ms -rd2 -qvjl2w -sainter_asm -zpb -no magic.c -Compilation complete, 0 error(s) and 0 warning(s) found. -"C:\Program Files (x86)\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"c:\program files (x86)\nec electronics tools\dev" -_msgoff inter_asm\magic.asm -Assembly complete, 0 error(s) and 0 warning(s) found. -"C:\Program Files (x86)\NEC Electronics Tools\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 -RA78K0R warning W3420: File 'loader.rel' already has had error(s)/warning(s) by 'CC78K' - Read Device File Directory : C:\PROGRAM FILES (X86)\NEC ELECTRONICS TOOLS\DEV\ -RA78K0R warning W3420: File 'pm.rel' already has had error(s)/warning(s) by 'CC78K' -RA78K0R warning W3420: File 'i2c_mcu.rel' already has had error(s)/warning(s) by 'CC78K' -RA78K0R warning W3420: File 'led.rel' already has had error(s)/warning(s) by 'CC78K' -RA78K0R warning W3420: File 'vreg_ctr.rel' already has had error(s)/warning(s) by 'CC78K' -RA78K0R warning W3420: File 'vreg_twl.rel' already has had error(s)/warning(s) by 'CC78K' -RA78K0R warning W3420: File 'adc.rel' already has had error(s)/warning(s) by 'CC78K' -RA78K0R warning W3420: File 'accero.rel' already has had error(s)/warning(s) by 'CC78K' -RA78K0R warning W3420: File 'self_flash.rel' already has had error(s)/warning(s) by 'CC78K' -RA78K0R warning W3420: File 'task_misc.rel' already has had error(s)/warning(s) by 'CC78K' -RA78K0R warning W3420: File 'task_sys.rel' already has had error(s)/warning(s) by 'CC78K' -RA78K0R warning W3420: File 'pedo_alg_thre_det2.rel' already has had error(s)/warning(s) by 'CC78K' -RA78K0R warning W3420: File 'led_pow.rel' already has had error(s)/warning(s) by 'CC78K' - -Link complete, 0 error(s) and 13 warning(s) found. -"C:\Program Files (x86)\NEC Electronics Tools\RA78K0R\W1.33\bin\oc78k0r.exe" -y"c:\program files (x86)\nec electronics tools\dev" -_msgoff -o.\bsr.hex -nu -ki bsr.lmf -Object Conversion Complete, 0 error(s) and 0 warning(s) found. -C:\Windows\system32\cmd.exe /c ruby nec_s_2_bsrbin2.rb bsr.hex -4 -intel-HEX to bsr bin converter - file converted! - - -Build Total error(s) : 0 Total warning(s) : 13 diff --git a/tags/2.05/yav_mcu_bsr.pri b/tags/2.05/yav_mcu_bsr.pri deleted file mode 100644 index aaeddd0..0000000 --- a/tags/2.05/yav_mcu_bsr.pri +++ /dev/null @@ -1,1028 +0,0 @@ -[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=ON -IRESET=OFF -WAIT=OFF -SysClock=None -SubClock=None -[Mapping] -Count=0 -[Main] -Geometry=39, 38, 1452, 1091 -Window=Normal -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="" -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=78, 84, 822, 815 -Window=Normal -DispStart=73 -CaretPos=74,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 -[Assemble] -Geometry=10, 12, 600, 947 -Window=Normal -DispStart=3446 -CaretPos=3446,27 -Address1= -Address2= -Address3= -Address4= -Address5= -Address6= -Address7= -Address8= -Address9= -Address10= -Address11= -Address12= -Address13= -Address14= -Address15= -Address16= -Data1=hdw -Data2= -Data3= -Data4= -Data5= -Data6= -Data7= -Data8= -Data9= -Data10= -Data11= -Data12= -Data13= -Data14= -Data15= -Data16= -Case=ON -Scan=OFF -Direction=Down -FindStart=0x0 -FindEnd=0x7FFFF -SaveRange=Screen -SaveStart= -SaveEnd= -[Assemble1] -Geometry=585, 65, 600, 400 -Window=Normal -DispStart=12181 -CaretPos=12209,27 -[Memory] -Geometry=24, 534, 550, 400 -Window=Normal -Boundary=163 -Format=Hex -Mode=Byte -Endian=Little -Ascii=OFF -Idtag=OFF -Address= -DispStart=000FFE70 -CaretPosData=50, 65509 -CaretPosAscii=0, 65487 -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=25, 25, 668, 937 -Window=Normal -Address1= -Address2= -Address3= -Address4= -Address5= -Address6= -Address7= -Address8= -Address9= -Address10= -Address11= -Address12= -Address13= -Address14= -Address15= -Address16= -Boundary=202, 89 -Mode=Hex -Attribute=Show -Sort=Unsort -Pickup=OFF -SelectSort=Address -Last Name=P0 -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=50, 50, 250, 400 -Window=Normal -Mode=Hex -Boundary=159 -Pickup=OFF -Name=Functional -Register Bank=0 -RP0=1 -RP1=1 -RP2=1 -RP3=1 -PC=1 -SP=1 -PSW=1 -ES=1 -CS=1 -[Event Manager] -Geometry=0, 0, 0, 0 -Window=Hide -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=935, 61, 440, 634 -Window=Normal -Boundary=13762700 -0=.SW_pow_count,P,N,A,+,1 -Line=1 -[Quick Watch] -0=RTCC0,B,A,1 -1=RTCC1,B,A,1 -2=PM12,B,A,1 -3=P12,B,A,1 -4=CMC,B,A,1 -5=CSC,P,A,1 -6=OSMC,P,A,1 -7=KRM,P,A,1 -8=MK0,P,A,1 -9=MK1,P,A,1 -10=PU7,B,A,1 -11=PM7,B,A,1 -12=P7,B,A,1 -13=system_status,P,A,1 -14=PWSW_POWON_TIME,P,A,1 -15=SW_pow_count,P,A,1 -[Software Break] -Geometry=914, 762, 500, 200 -Window=Normal -Width=150 30 200 100 -Name0=Swb00002 -Address0=task_sys.c#_tsk_sys+0x4d -Window0=ASM -Status0=ON -Name1=Swb00003 -Address1=task_sys.c#_tsk_sys+0x5c -Window1=ASM -Status1=OFF -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=75, 75, 856, 846 -Window=Hide -[Console] -Geometry=0, 0, 0, 0 -Window=Hide diff --git a/tags/2.05/yav_mcu_bsr.prj b/tags/2.05/yav_mcu_bsr.prj deleted file mode 100644 index 6647ec5..0000000 --- a/tags/2.05/yav_mcu_bsr.prj +++ /dev/null @@ -1,1066 +0,0 @@ -[ProjectManager] -Version=6.00 -Path=C:\78k_data\yav-mcu-basara\trunk\ -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 -KA=1 -KS=0 -KX=0 -LF=0 -LW=132 -LL=0 -LT=8 -Z=0 -CommandFile=0 -RA_OPT= -[Options.RA78K0R 3] -Version=100 -G=1 -GA=1 -E=0 -COMMON=0 -COMPATI=0 -P=1 -KA=1 -KS=0 -KX=0 -LF=0 -LW=132 -LL=0 -LT=8 -Z=0 -CommandFile=0 -RA_OPT= -[Options.RA78K0R 4] -Version=100 -G=1 -GA=1 -E=0 -COMMON=0 -COMPATI=0 -P=1 -KA=1 -KS=0 -KX=0 -LF=0 -LW=132 -LL=0 -LT=8 -Z=0 -CommandFile=0 -RA_OPT= -[Options.RA78K0R 5] -Version=100 -G=1 -GA=1 -E=0 -COMMON=0 -COMPATI=0 -P=1 -KA=1 -KS=0 -KX=0 -LF=0 -LW=132 -LL=0 -LT=8 -Z=0 -CommandFile=0 -RA_OPT= -[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=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= -[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 -[IncFile] -Include1=incs_loader.h -Include2=sim\simOnWin.h -Include3=sim\sfrAlias.h -Include4=config.h -Include5=jhl_defs.h -Include6=user_define.h -Include7=hal.h -Include8=bsr_system.h -Include9=renge\renge.h -Include10=renge\renge_defs.h -Include11=renge\renge_task_immediate.h -Include12=vreg_ctr.h -Include13=vreg_twl.h -Include14=loader.h -Include15=i2c_mcu.h -Include16=WDT.h -Include17=..\..\..\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r\fsl.h -Include18=fsl_user.h -Include19=i2c_ctr.h -Include20=pm.h -Include21=rtc.h -Include22=reboot.h -Include23=magic.h -Include24=incs.h -Include25=i2c_twl.h -Include26=accero.h -Include27=pedometer.h -Include28=sw.h -Include29=adc.h -Include30=led.h -Include31=batt_params.h -Include32=pool.h -Include33=i2c_twl_defs.h -Include34=renge\renge_task_intval.h -Include35=..\..\..\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r\math.h -Include36=self_flash.h -Include37=sim\sim_interrupt_decrare.c -[Options.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\trunk\bsr.lmf -[Options.LK78K0R 3] -Version=100 -O0=bsr_bsr.lmf -O1=bsr_k0r.lmf -O2=bsr.lmf -O3=flash.lmf -O4=a.lmf -G=1 -E=0 -E0=flash.elk -E1=a.elk -GO=1 -GOValue=85 -GOStart=FC00 -GOSizeValue=1024 -GI=1 -GIValue=FFFFFFFFFFFFFFFFFFFF -CCZA=0 -MemInfoCheck=1 -P=1 -P0=bsr_bsr.map -P1=bsr_k0r.map -P2=bsr.map -P3=flash.map -P4=a.map -MI=0 -GB=1 -GBValue=6EFBFF -KM=1 -KD=0 -KP=1 -KL=0 -LF=0 -LL=0 -B0=C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\lib78k0r\fsl.lib -D0=bsr_mcu.dr -D1=user_area.dr -S=1 -W=2 -SELFCheck=0 -SELF=0 -ZB= -Etcetera0= -Etcetera1=boot.lmf -CommandFile=0 -[Options.LK78K0R 4] -Version=100 -O0=bsr_k0r.lmf -O1=bsr.lmf -O2=flash.lmf -O3=a.lmf -G=1 -E=0 -E0=flash.elk -E1=a.elk -GO=1 -GOValue=85 -GOStart=FC00 -GOSizeValue=1024 -GI=1 -GIValue=FFFFFFFFFFFFFFFFFFFF -CCZA=0 -MemInfoCheck=1 -P=1 -P0=bsr_k0r.map -P1=bsr.map -P2=flash.map -P3=a.map -MI=0 -GB=1 -GBValue=6EFBFF -KM=1 -KD=0 -KP=1 -KL=0 -LF=0 -LL=0 -B0=C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\lib78k0r\fsl.lib -D0=bsr_mcu.dr -D1=user_area.dr -S=1 -W=0 -SELFCheck=1 -SELF=0 -ZB= -Etcetera0= -Etcetera1=boot.lmf -CommandFile=0 -[Options.LK78K0R 5] -Version=100 -O0=bsr_bsr.lmf -O1=bsr_k0r.lmf -O2=bsr.lmf -O3=flash.lmf -O4=a.lmf -G=1 -E=0 -E0=flash.elk -E1=a.elk -GO=1 -GOValue=85 -GOStart=FC00 -GOSizeValue=1024 -GI=1 -GIValue=FFFFFFFFFFFFFFFFFFFF -CCZA=0 -MemInfoCheck=1 -P=1 -P0=bsr_bsr.map -P1=bsr_k0r.map -P2=bsr.map -P3=flash.map -P4=a.map -MI=0 -GB=1 -GBValue=6EFBFF -KM=1 -KD=0 -KP=1 -KL=0 -LF=0 -LL=0 -B0=C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\lib78k0r\fsl.lib -D0=bsr_mcu.dr -D1=user_area.dr -S=1 -W=2 -SELFCheck=0 -SELF=0 -ZB= -Etcetera0= -Etcetera1=boot.lmf -CommandFile=0 -[Options.LCNV78K0R 0] -Version=100 -LCNV_GO=0 -E=0 -CommandFile=0 -[Options.LCNV78K0R 1] -Version=100 -LCNV_GO=0 -E=0 -CommandFile=0 -[Options.LCNV78K0R 2] -Version=100 -LCNV_GO=0 -O0=inter_asm -E=0 -CommandFile=0 -[Options.LCNV78K0R 3] -Version=100 -LCNV_GO=0 -E=0 -CommandFile=0 -[Options.LCNV78K0R 4] -Version=100 -LCNV_GO=0 -E=0 -CommandFile=0 -[Options.LCNV78K0R 5] -Version=100 -LCNV_GO=0 -E=0 -CommandFile=0 -[Options.78K0R] -BuildMode=2 -BuildMode2=K0R_dbg -BuildMode3=BSR_dbg -BuildMode4=BSR_rel -BuildMode5=BSR_WM0 -DefaultMode2=1 -DefaultMode3=1 -DefaultMode4=1 -DefaultMode5=1 diff --git a/tags/2.05/yav_mcu_bsr.prk b/tags/2.05/yav_mcu_bsr.prk deleted file mode 100644 index debf5e7..0000000 --- a/tags/2.05/yav_mcu_bsr.prk +++ /dev/null @@ -1,17 +0,0 @@ -[ProjectManager] -FrameMax=0 -FrameX=37 -FrameY=30 -FrameCX=1590 -FrameCY=1075 -OpenFile1=pm.c,0,373,197,1346,828,0,1,0,0 -OpenFile2=i2c_ctr.c,0,655,120,1628,751,0,1,0,0 -OpenFile3=kanaria_c.c,0,68,138,763,769,8,5,8,0 -OpenFile4=main.c,0,402,105,1713,812,11,53,11,0 -OpenFile5=OutputWindow -OutputPos=0,210,901,168,1473 -OpenFile6=ProjectWindow -PrjPos=0,0,706,0,291 -ActivePRJ=yav_mcu_bsr.prj -[ProjectWindow] -ProjectWindowDispType=0 diff --git a/tags/2.05/yav_mcu_bsr.prw b/tags/2.05/yav_mcu_bsr.prw deleted file mode 100644 index 7c0bbd6..0000000 --- a/tags/2.05/yav_mcu_bsr.prw +++ /dev/null @@ -1,8 +0,0 @@ -[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/tags/2.05/yav_mcu_bsr.sdb b/tags/2.05/yav_mcu_bsr.sdb deleted file mode 100644 index 27e6b29..0000000 --- a/tags/2.05/yav_mcu_bsr.sdb +++ /dev/null @@ -1,309 +0,0 @@ -[SdbInfo] -Ver=5 -[loader.c] -T=4e4248ee -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=magic.h -[pm.c] -T=4e4e011b -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 -[i2c_ctr.c] -T=4e409e63 -1=config.h -2=incs.h -[main.c] -T=4e4e254b -1=incs_loader.h -2=WDT.h -3=rtc.h -4=pm.h -5=accero.h -6=led.h -7=adc.h -8=pool.h -[magic.c] -T=4e4e2af0 -1=config.h -2=magic.h -[WDT.c] -T=4e424710 -1=incs_loader.h -[i2c_mcu.c] -T=4e4e1d71 -1=incs_loader.h -2=i2c_mcu.h -[i2c_twl.c] -T=4e4e1d71 -1=config.h -2=incs.h -3=i2c_twl_defs.h -4=i2c_twl.h -[led.c] -T=4e423830 -1=incs.h -2=led.h -[rtc.c] -T=4e423614 -1=incs.h -[vreg_ctr.c] -T=4e4e208a -1=incs.h -2=vreg_ctr.h -3=rtc.h -4=led.h -5=accero.h -6=pm.h -7=pool.h -8=..\..\..\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r\fsl.h -9=fsl_user.h -[vreg_twl.c] -T=4d5e3e6f -1=incs.h -2=jhl_defs.h -3=led.h -4=vreg_twl.h -5=vreg_ctr.h -[adc.c] -T=4e4cadc7 -1=incs.h -2=adc.h -3=pm.h -4=led.h -5=vreg_twl.h -[renge\renge.c] -T=4e40d459 -1=renge\renge.h -2=renge\renge_task_intval.h -3=renge\renge_task_immediate.h -4=WDT.h -5=config.h -6=user_define.h -7=sim\simOnWin.h -8=bsr_system.h -[accero.c] -T=4e422e91 -1=config.h -2=incs.h -3=..\..\..\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r\math.h -[self_flash.c] -T=4e409e18 -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=pool.h -6=magic.h -7=pm.h -[sw.c] -T=4e4251bb -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=4e409e1c -1=incs_loader.h -2=renge\renge.h -3=pm.h -4=accero.h -[task_misc.c] -T=4e409e61 -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=4e4e0120 -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 -[pedo_alg_thre_det2.c] -T=4e423b4a -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=4e409e1a -1=config.h -2=sim\sim_interrupt_decrare.c -[task_status.c] -T=4e409e1c -1=incs_loader.h -2=renge\renge.h -3=hal.h -4=pm.h -5=accero.h -6=adc.h -7=i2c_mcu.h -8=led.h -[led_cam.c] -T=4e409e1d -1=incs.h -2=led.h -[led_pow.c] -T=4e423450 -1=incs.h -2=led.h -[hal.c] -T=4e4db237 -1=incs_loader.h -[batt_params.c] -T=4e409e1b -1=jhl_defs.h -2=batt_params.h -[voltable.c] -T=4e422f23 -1=incs.h -[pedo_lpf_coeff.c] -T=4e422f1d -1=incs.h -[kanaria.asm] -T=4e4226a2 -[kanaria_c.c] -T=4e4e2c3d -[incs_loader.h] -T=4e409e1d -1=sim\simOnWin.h -2=jhl_defs.h -3=user_define.h -4=hal.h -5=bsr_system.h -6=renge\renge.h -7=vreg_ctr.h -8=vreg_twl.h -9=loader.h -10=i2c_mcu.h -11=WDT.h -[sim\simOnWin.h] -T=4e4cce4f -1=sim\sfrAlias.h -[sim\sfrAlias.h] -T=4e409e19 -1=config.h -[config.h] -T=4e4daac7 -[jhl_defs.h] -T=4df82cd1 -1=config.h -[user_define.h] -T=4e409e1d -[hal.h] -T=4e40c8f0 -[bsr_system.h] -T=4e409e1a -[renge\renge.h] -T=4cbf8235 -1=renge\renge_defs.h -2=renge\renge_task_immediate.h -[renge\renge_defs.h] -T=4c073c5a -[renge\renge_task_immediate.h] -T=4d37f8c8 -1=renge\renge_defs.h -[vreg_ctr.h] -T=4e409e1c -1=config.h -[vreg_twl.h] -T=4d42202e -[loader.h] -T=4c318e0f -[i2c_mcu.h] -T=4dde0033 -[WDT.h] -T=4c319dfc -[..\..\..\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r\fsl.h] -T=49a3bd4e -[fsl_user.h] -T=4e409e62 -[i2c_ctr.h] -T=4bf0d1e1 -[pm.h] -T=4e409e1c -[rtc.h] -T=4e409e1c -[reboot.h] -T=4bf0d1e1 -[magic.h] -T=4caab849 -[incs.h] -T=4e409e18 -1=sim\simOnWin.h -2=jhl_defs.h -3=user_define.h -4=hal.h -5=bsr_system.h -6=renge\renge.h -7=loader.h -8=vreg_ctr.h -9=vreg_twl.h -10=i2c_mcu.h -11=i2c_twl.h -12=rtc.h -13=accero.h -14=pm.h -15=sw.h -16=adc.h -17=WDT.h -[i2c_twl.h] -T=4bf4e29e -[accero.h] -T=4ca28964 -1=jhl_defs.h -2=pedometer.h -[pedometer.h] -T=4e409e19 -[sw.h] -T=4df2001a -1=config.h -[adc.h] -T=4dd5c8b2 -1=jhl_defs.h -[led.h] -T=4e409e1c -[batt_params.h] -T=4e409e1c -1=jhl_defs.h -[pool.h] -T=4c072cf1 -1=pedometer.h -[i2c_twl_defs.h] -T=4bf0d1e1 -[renge\renge_task_intval.h] -T=4d5e55a1 -1=renge\renge_defs.h -[..\..\..\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r\math.h] -T=45f12258 -[self_flash.h] -T=4bf0d1e0 -[sim\sim_interrupt_decrare.c] -T=4e409e19 diff --git a/tags/2.05/ベースからの変更.xls b/tags/2.05/ベースからの変更.xls deleted file mode 100644 index 5212dac6485080dca2bfd246e855585895ff82af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26624 zcmeHQ3v`s#oxk5?CYkV>@EBBtFudP*MT>4lMNow0#T!(r_r^@UZcEpYTy9&NSVMYq*each^l?dlfy9NS{Ezu*6U&k0!A)9&f^ z%*^?|`R?QU-~avJ|NCCTtFH`x=aDBz99LPNt5lx)U2mbv_tjf?p5>H_6xw@xS#*9c z#xtsNpZ`Y`D2!qu^CRlM#PLyHfAss#fjb2J5$_Q&xnQC;o3f z^8|+)i#Qwr<6UXxD+_gb>LJ_*sS5n{bJUBAW?gnUASk@M zJTzDO-6Qw0avy}drJj{{ej+s&tAu(J{d+felil;StczMRdN1isDBZhPKdWEVkLy3h zJ{!&w=i%!2&+EKT=~Em&Uq#eVrN&l|9XEa4IDG{ks%OY!ad;H;#reLrl@+PFFZeqY zs{$;Y`|?cfe;=jd@HiD!#lap~P^8;sYASV6G6CpQ6Eb`~S zbA&oi#UX^_%_OH>Q9apyuAWjH9u0br@V5%F0$mcI_=Rp4j^l%YBEd`mkVICWASCJd zjv59&Q|iBap*7skfduO*E>i!I)9~r_l>KT|!Sp059&bG@bd(mA3E4IMt_%=s~N zj;M)esGod>`usE0M^9VNkp!Q)e8ML@Ro1-#k5V6%THFjiEN0i=9}26YEsm`Y_XX3f1<`)X#fX8T-U%_VoM zuqwy*pcTahjq)8!ol=R!0d(rXb)JeqaMX=zK16exYS2&Xllq5xr~VJ!pcm_H`cAz- zH|w{c@PDZvT>16QYjl&g)Nmm28B8n>-|wRLH?)E}3_&SIMgrV-^*((_?@JwPu^^eI zYZ#ckp?7IsFe&IfSVf>uRHa&?7N`>SyOnPym43KlboZ{Co(C4s=#Gjm{la~lG2Uze z5?1~2-H-A95kPk9Zv(5t`UBvMbpXIH^lBb7=RjaqsA9MeQIRuWK|O5KP-F1H8iullRq0KEs6?mc&ym+%Bo07`4gsfICFA^KY2xkwS3E><(u zCF)W&S)Mc~RH~L@cF?oBXN=OTLGl`vR-LL*U4(m+YK6X;g|{@m&Xak^QUe4X4#`iR z8RFae6lj~>2yCd58p}^~li5gczLBS103Bb`AoN63M0;N=O>46@C3=P4h}lQ0<}|Lb zDNxvJsj>2M2={!f)^5F52>m!_Zpp0sVdnWN%-Pn|)}}hzvQf#i8|!MbS_TbJk@0vf zqt>eywLz!#I@N}!5#8^tZ>;LVoD%lfU?TMr#ytqO`v4VFV7q(K{iJM`=NeQ@f@ufFo-!WF|SOZ2F+`|OE@0DO)B4}&)bs=b)lN$}7~yz%cC z=wI-(Tfe0DV=yIy(Itw4k|8YbPz(&}!=kH?>Yqrxm$IPe4T*{A(*W=+0Q{2%hm$TH zsdb6$xfhtGrdhSg+Du1w>o67J$UD1^RaBQX=sQbKu3DzofHQxgpTlbJ$Fx4KzZR>t zOn(XDXu%M3e6o5JlQ|3wp3x^D4ipLiLJOrW1aTMyq%To_K5!%z&kIQft@N}o)>y>({x z(u0tZ8_++kR;xNySvK^+4=dC9w-2mp+1C8Zm!AYiX?;UQ-2)c%04ElP+zt^rf6^ZH zW&9r0-^AUl*fS8%=dgB$%kweO5Ja&M_d)oE;3`Be&l<1+19qoN)OG4wRif+eX$FPw z5-J<%zto=a00x!~2481}oK>Dsc!Y{90m$G2mg!>^WwMANO~Gi^C3n{9r0&wG z2Hu49c3ED0_S6vByAC%`-y+k9~wP` z+Q@LAV&;_AHCWeLW$7Q_^>69dDk;uGWI(D7OC17GTT!mUYg;$X{^Fz+6jhp&;7Wva zVQJ)Rv1E^4TD@)iGR!2}>lme<>k|Fg-)#Q7!roQ7T(3fDV!}dXW@dICtl1$jD3u;r z)f4b%P-EnD5A+{}eW!lamK8EC3EW>u9D`M|aM75>;ev}vqlIjQ=5A4+-1l%r(E7au zP!u{EwEl+cI4>@8b5O)!7>v}C!#v!~ayu)6kz~ve?ontL(q1g|`&*Ay7}ag;@@Ob) zzZHH?)PQ;2GPdIAge*manaZjioe=Gv+CX*hU!%7%3z{|qwWV*+@2$T}uhd4eZdsSsH01Mc`K!{P(tQ?cPHSV(M>pJ&9MRq7ih!j()JpV`<#+o8e4))Iv;fcA z#(j?|dz{rv*4CUx72E8zTOY@eX3ctZe#N^`zJ7Lk4QRX%@Kmhu5k33ir*;T# z3#UtOkwD5Jtd3wh7KA=ofr~R04ry#`2hu5IN!;^o8oRi+x2^BXeGmw$R8NmPnETZy zO$GI}GXpYp7z0qA4EVO1x>QGB=+ljMT?JLm>*M-G`t#6DPYa*-=pEbJQ=DQ*YxNV< zJ%=gptN82A+t)S2lU!gs%FAG-D^!_Uta|i?>APUDlX{V+J`QT&-C*RCuPw96=n9gn>qvygHrVxmH zp#8&e@i{j-4ZI5R92L=m$)=Ams$z7*_$4L!U(4onE!B714!YwAr8V1!S6b^+YlGeb zC5I;L4Ur-GC@k-`OYiG{gHUpgj%!5kjs&HmN08Q7x4tRel$iy3)2?x`9qmYj!w3k> zat%_dwy`-`-_+5XT;0*uoC+(|TGNysZ0g%vYBKe0Xv=JDPa)sX*w(o=*_5vBNVTTY znPgLaGM%bTb#~TtY=rYzgrVA13dXZd-2`aV2Rq)T0|1p z-<;ObuCLyF|MsQb3}jqiF0j%^zz0uajcEek0(~9>6$Z!x&`+Y=g>b3bnwHvRW82z} z&SYnMDqRP?#K6fh#e2Fo>)R1Bl!ZCMXc{NK3+e~%Sa7@!J`(`Z{QfdQisk!(Xes8}il;#Fjx>-DuNe7!-}8QeVM9j{*V8)-KqqpifR~ z@dsUqG{!m!Hx1E< zW}KiA_Oz*beCbVJSN_`v=tVcmljGLk*}72Vz(Ul`^^5@fVQ$92iyxj7_k%O=p7sb4 z$xtL;A+m+UJRz7*1m+{ndJe8$12JgSw*sy1F=?#Seyr6=tQ%2s5OEw6BIM*3{42Q+ z>*gPtei4m2kua=9k`;)0>L)8X0Creh51PQI#DlZ6p~t*>FRcGfd8&b$fC6O9qS1J7 zW4MTWv6`2Q8(BaxDU+f_2bh!{iW zl})}b7{)Pl3qgO5SPU3_*Wq z6X=x&l@5#8yoz{=SWq6$4F}`VNCMe0t!wP0S1@txMfAW2XwyP4ZkJdlRsOdX{|x?5 z>u+`}swvTXy0$`ZSb@w88Q5edOag8fq+}=9(tyjy`p~Um*lov?vM!w)JF_){o%5x) zbDCBJ)fE64?Onf}ZmBWk4f?87dh;rH7lpkN_IlPG1EyOuk{$x|i27fV~#>Cb^~( zspyZ^8P#f1q@R_+!_dY9B%*%>!x&%CQ2hv$D#=7vHkO&J(+|DL#F9bJz@z9C52I6U z#MAXRJK1!;6jBUVOi}~EK2z?Qv*=D=#un=esI3awO8PXhw&Mg7YdT)k3~Y{!Ut+mQ z_ZeLeu58x(TSx&X#p?K#CQfi-PLnv@A&l}oXu_D9X}!Hd4f~GkP@*v2N^DB@j3MJBKold&%(ljmm88a_ zPr!{ZMwetCJ~L--)-nRdVUC$}x;AjkOnonN|bWks%K%USh<=&{Sw`M?#{6eAMI%G7CDZUS8UtAUAx> zPTszDFf~rsJ1ok3jIkKp4`l4W1KISGy1wg%?hh*)ToGx9XVQu5Ev)0?NZ4%CqkAt) z&aN=_WeRqR$Zf`oF!@sid`Wjw$P=VJdJfzuN;J8Gju%}nDiF?*3dA^G{g819frE-s z-wRtGRlh-`1Aj!#EL3VP4zaw|PpJ=anyzV}Qa7XRftXT{A_wp@aHuPAW5uYZWv#e8riN$tZTHRCwK3>>In3`uJqLSBLi6@~>okW+*S zp8EQK{b=#(C08e916)gwFeu_6QAd)8F;qBiSjqq<&mMiTMKC9 zAMAf=^eSK-Q`2#D1lz?H{pM@%#vlG;aeVta9rQ%`y<--r<-q#v=5;z4rO}6n&TWb& z`df7vs{jtN^Wm|ZD2M;OpJ)`D<-SXSCLs_9*Pp@1Awej#Fl#n1{9)%8G2rR`p6iEi z;5x?_t^N<-y+g|KeV|(cAA62lsBq0ORp*dupxZeW7-!OJ4Otv*J`83x&hjuz(}8<6 zROl>xFTqs}$!f>lppFUb`lid%VOP@N@D!U)No<4P?V15>@;1%_$gE!Qt4oA=X)WKWoQ%8Rzdkm&2v+HP4 zv+L*|W!J$w>r=j#q4lX_M3vnS9$cR~y4KnK;Nb=8K7qf?PfR%9l<0_ZJy;?G z#=zmGL=HrZo1cMgJ2MogG zJB)a^+U6ZfT?}5FQwn2qguKe0#17JcJ0Wmq)IebHW8~8GB7|1=oiIuq+q6YcB3)VH z{Nm6V1|CmU7ES`3pJ5;{eHBBv;q)Q|hpxz=phP|-1X3W5 zsNc+jA&Y^)><7bLrxzi#xg|oNL>dUBD|wS8QZ9}Nz`!GK8F=K67}EMqFF#edx-q0Y zOdILT!(;{m&*~Tm45VVnT06b`5c&&*gxls{X=)-59ojpC|tJ0r%E*RqB@ z>)}Bu5)Qrwe**N@Er$i{1xg|ech5<@U zqC}2|14bx0Qb6hVU{XiM5sw;}%xuNr**YaZ%(%e3+->v2q}K2xi`&MA1BMH{zp&ro z!6$F+h6_9d>awo1TLuC#=Eg}}UE#J7E1qI8ZG_^;`*{N8O1F(zF@?sS)I=W4^8+xM zTZ}2B2<)DI%+42>bKN#SOzJIfrWd#~HR+RU>~}7ZnL1kS0)aQrZ6iEK*HhPdIPy?f z95IE#YJ}i;ty?0F4$Kh(^E$VUFc;V*+BpyAg#vS-+s1i+&Mo<2UMMiHciRZ_2D?Oj zy?HYmYgTxq;OM{`8JPD-fmh-}AiPC(iQMSH^f@w>^kcH>^kcG>^kcE z>^f@w>^f@v>^f@Z>^f@X>^f@V>^kbz>^kbc?7A7JshfG4I%@Rncd4Io#>c`B7BeO? zoxo!pTS#UV6SBIMZiy?r+%5T~07n_nw#;qwOBUC}gE=MubBu6JmHpnB0N0EOz(oER zBRJAJ2EJzur?d>7T;aG{;g-nNpLa{ddZk+;){Y(=Dwcsh22JQYVS#7N6{S6ar)yd8Ms1M?m)@ak-MI5OjdM}G9+@gS^`-w6Wm z8vC6I0eBMxUai~arz3gUgU54T2Hr%0x7vPZVgTMmf#<9>{_&R&KgxjzZ;}gdlE6#Z z@Fod_dbdOf4JdsF_J>jv$Jde)<;5#eQcQ`KiZT+%;RHk5Y3^9eN5`;(X5dk3ymzL{ z$X~SEC_Nr@%8gf|#CRpjiYdJguWwUWskv4acJZj6mdJM=^clYsVWrH|RiPp3oB4QA z&E?Jhi~??XGk_w{hI50b&<9{wQtI5vuow*gN7=178!`y;&h(w%KR6j& zg8dO6e%Fii0=7!BKU|o1?)dv({kp8NX!n<+YTBfye@sExiz|wY?F(^18Xy9uZWVqR z47B5domY3_8i4C7xCY{S7#H3A$8d4Poq0+^L&E#Y{QGab|B2I=i_pHfskWo7v#map zxNbvjszuF3-IkF@S8V*;_bhon@B zv@o}$+Ho=N-++rT`xab`_n8OahF3Q(<^jHji+O>AxcqqlzGLzLU0=EP8+Uzh@2lqY zP;3(aF|GNW>9-g!Gu|)2W&TE(_c+UYyhIH^M-Ix}5F&HieOp)FR(jiwxHkxdT-E?o z$$fGZ$Wb6ifgA;L6v$B^M}Zs#aumo>AV+~51^&z^z&M`aFr!}XJCFWM!!;e(3|u^{!y`Hx7u!F<#oyfL+$m6j195Hm z2YCtn?E~{qZa0FeXaB)pShk!|$w!GO?@AqzyPVlGPq-Hynz4Fc$@eU-l~cJ4qj%sR zp{y1>nw{#i{>1@vcYNY;wl6+(jp-S|-xXSmWBRQ)sMmqNB5*yZP%k*KCWE77{3|YJ q{!GUBlp)H`*^WPk;3z!!MBINI%)he36*xD1F8^Q5p9kxl@&5;(Pb&og