From bc1947d73b5c1c5bc4a29f25305a70abc897edd0 Mon Sep 17 00:00:00 2001 From: n2232 Date: Mon, 29 Aug 2011 08:03:31 +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@391 013db118-44a6-b54f-8bf7-843cb86687b1 --- tags/2.08/OMakefile | 159 --- tags/2.08/OMakeroot | 4 - tags/2.08/WDT.c | 2 - tags/2.08/WDT.h | 20 - tags/2.08/accero.c | 275 ----- tags/2.08/accero.h | 14 - tags/2.08/adc.c | 450 -------- tags/2.08/adc.h | 48 - tags/2.08/batt_params.c | 84 -- tags/2.08/batt_params.h | 49 - tags/2.08/bsr.hex | 1015 ----------------- tags/2.08/bsr.lmf | Bin 181384 -> 0 bytes tags/2.08/bsr_k0r.map | 830 -------------- tags/2.08/bsr_mcu.dr | 46 - tags/2.08/bsr_system.h | 67 -- tags/2.08/config.h | 92 -- tags/2.08/fsl.h | 362 ------ tags/2.08/fsl_user.h | 113 -- tags/2.08/hal.c | 177 --- tags/2.08/hal.h | 16 - tags/2.08/hoge.bin | Bin 16387 -> 0 bytes tags/2.08/i2c_ctr.c | 297 ----- tags/2.08/i2c_ctr.h | 210 ---- tags/2.08/i2c_mcu.c | 650 ----------- tags/2.08/i2c_mcu.h | 40 - tags/2.08/i2c_twl.c | 231 ---- tags/2.08/i2c_twl.h | 7 - tags/2.08/i2c_twl_defs.h | 196 ---- tags/2.08/incs.h | 58 - tags/2.08/incs_loader.h | 47 - tags/2.08/ini_VECT.c | 383 ------- tags/2.08/jhl_defs.h | 29 - tags/2.08/led.c | 349 ------ tags/2.08/led.h | 142 --- tags/2.08/led_cam.c | 151 --- tags/2.08/led_pow.c | 269 ----- tags/2.08/loader.c | 381 ------- tags/2.08/loader.h | 7 - tags/2.08/magic.c | 29 - tags/2.08/magic.h | 24 - tags/2.08/main.c | 101 -- tags/2.08/nec_s_2_bsrbin2.rb | 82 -- tags/2.08/pedo_alg_thre_det2.c | 575 ---------- tags/2.08/pedo_lpf_coeff.c | 83 -- tags/2.08/pedo_lpf_coeff.h | 84 -- tags/2.08/pedometer.h | 36 - tags/2.08/pm.c | 1396 ----------------------- tags/2.08/pm.h | 216 ---- tags/2.08/pool.h | 24 - tags/2.08/reboot.c | 24 - tags/2.08/reboot.h | 6 - tags/2.08/renge/renge.c | 315 ------ tags/2.08/renge/renge.h | 27 - tags/2.08/renge/renge_defs.h | 55 - tags/2.08/renge/renge_task_config.rb | 59 - tags/2.08/renge/renge_task_immediate.h | 25 - tags/2.08/renge/renge_task_intval.h | 37 - tags/2.08/renge/renge_tasks.txt | 11 - tags/2.08/rtc.c | 175 --- tags/2.08/rtc.h | 21 - tags/2.08/self_flash.c | 608 ---------- tags/2.08/self_flash.h | 9 - tags/2.08/sw.c | 188 ---- tags/2.08/sw.h | 20 - tags/2.08/task_debug.c | 120 -- tags/2.08/task_misc.c | 379 ------- tags/2.08/task_status.c | 79 -- tags/2.08/task_sys.c | 657 ----------- tags/2.08/user_define.h | 234 ---- tags/2.08/voltable.c | 48 - tags/2.08/voltable.h | 57 - tags/2.08/vreg_ctr.c | 594 ---------- tags/2.08/vreg_ctr.h | 299 ----- tags/2.08/vreg_twl.c | 156 --- tags/2.08/vreg_twl.h | 127 --- tags/2.08/yav_mcu_bsr.plg | 221 ---- tags/2.08/yav_mcu_bsr.pri | 510 --------- tags/2.08/yav_mcu_bsr.prj | 1407 ------------------------ tags/2.08/yav_mcu_bsr.prk | 17 - tags/2.08/yav_mcu_bsr.prw | 8 - tags/2.08/yav_mcu_bsr.sdb | 309 ------ tags/2.08/ベースからの変更.xls | Bin 26624 -> 0 bytes 82 files changed, 16722 deletions(-) delete mode 100644 tags/2.08/OMakefile delete mode 100644 tags/2.08/OMakeroot delete mode 100644 tags/2.08/WDT.c delete mode 100644 tags/2.08/WDT.h delete mode 100644 tags/2.08/accero.c delete mode 100644 tags/2.08/accero.h delete mode 100644 tags/2.08/adc.c delete mode 100644 tags/2.08/adc.h delete mode 100644 tags/2.08/batt_params.c delete mode 100644 tags/2.08/batt_params.h delete mode 100644 tags/2.08/bsr.hex delete mode 100644 tags/2.08/bsr.lmf delete mode 100644 tags/2.08/bsr_k0r.map delete mode 100644 tags/2.08/bsr_mcu.dr delete mode 100644 tags/2.08/bsr_system.h delete mode 100644 tags/2.08/config.h delete mode 100644 tags/2.08/fsl.h delete mode 100644 tags/2.08/fsl_user.h delete mode 100644 tags/2.08/hal.c delete mode 100644 tags/2.08/hal.h delete mode 100644 tags/2.08/hoge.bin delete mode 100644 tags/2.08/i2c_ctr.c delete mode 100644 tags/2.08/i2c_ctr.h delete mode 100644 tags/2.08/i2c_mcu.c delete mode 100644 tags/2.08/i2c_mcu.h delete mode 100644 tags/2.08/i2c_twl.c delete mode 100644 tags/2.08/i2c_twl.h delete mode 100644 tags/2.08/i2c_twl_defs.h delete mode 100644 tags/2.08/incs.h delete mode 100644 tags/2.08/incs_loader.h delete mode 100644 tags/2.08/ini_VECT.c delete mode 100644 tags/2.08/jhl_defs.h delete mode 100644 tags/2.08/led.c delete mode 100644 tags/2.08/led.h delete mode 100644 tags/2.08/led_cam.c delete mode 100644 tags/2.08/led_pow.c delete mode 100644 tags/2.08/loader.c delete mode 100644 tags/2.08/loader.h delete mode 100644 tags/2.08/magic.c delete mode 100644 tags/2.08/magic.h delete mode 100644 tags/2.08/main.c delete mode 100755 tags/2.08/nec_s_2_bsrbin2.rb delete mode 100644 tags/2.08/pedo_alg_thre_det2.c delete mode 100644 tags/2.08/pedo_lpf_coeff.c delete mode 100644 tags/2.08/pedo_lpf_coeff.h delete mode 100644 tags/2.08/pedometer.h delete mode 100644 tags/2.08/pm.c delete mode 100644 tags/2.08/pm.h delete mode 100644 tags/2.08/pool.h delete mode 100644 tags/2.08/reboot.c delete mode 100644 tags/2.08/reboot.h delete mode 100644 tags/2.08/renge/renge.c delete mode 100644 tags/2.08/renge/renge.h delete mode 100644 tags/2.08/renge/renge_defs.h delete mode 100644 tags/2.08/renge/renge_task_config.rb delete mode 100644 tags/2.08/renge/renge_task_immediate.h delete mode 100644 tags/2.08/renge/renge_task_intval.h delete mode 100644 tags/2.08/renge/renge_tasks.txt delete mode 100644 tags/2.08/rtc.c delete mode 100644 tags/2.08/rtc.h delete mode 100644 tags/2.08/self_flash.c delete mode 100644 tags/2.08/self_flash.h delete mode 100644 tags/2.08/sw.c delete mode 100644 tags/2.08/sw.h delete mode 100644 tags/2.08/task_debug.c delete mode 100644 tags/2.08/task_misc.c delete mode 100644 tags/2.08/task_status.c delete mode 100644 tags/2.08/task_sys.c delete mode 100644 tags/2.08/user_define.h delete mode 100644 tags/2.08/voltable.c delete mode 100644 tags/2.08/voltable.h delete mode 100644 tags/2.08/vreg_ctr.c delete mode 100644 tags/2.08/vreg_ctr.h delete mode 100644 tags/2.08/vreg_twl.c delete mode 100644 tags/2.08/vreg_twl.h delete mode 100644 tags/2.08/yav_mcu_bsr.plg delete mode 100644 tags/2.08/yav_mcu_bsr.pri delete mode 100644 tags/2.08/yav_mcu_bsr.prj delete mode 100644 tags/2.08/yav_mcu_bsr.prk delete mode 100644 tags/2.08/yav_mcu_bsr.prw delete mode 100644 tags/2.08/yav_mcu_bsr.sdb delete mode 100644 tags/2.08/ベースからの変更.xls diff --git a/tags/2.08/OMakefile b/tags/2.08/OMakefile deleted file mode 100644 index 42baad6..0000000 --- a/tags/2.08/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.08/OMakeroot b/tags/2.08/OMakeroot deleted file mode 100644 index 16f4b11..0000000 --- a/tags/2.08/OMakeroot +++ /dev/null @@ -1,4 +0,0 @@ -# -# Include the OMakefile in this directory. -# -.SUBDIRS: . diff --git a/tags/2.08/WDT.c b/tags/2.08/WDT.c deleted file mode 100644 index 436a51c..0000000 --- a/tags/2.08/WDT.c +++ /dev/null @@ -1,2 +0,0 @@ -#include "incs_loader.h" - diff --git a/tags/2.08/WDT.h b/tags/2.08/WDT.h deleted file mode 100644 index 2e28e9d..0000000 --- a/tags/2.08/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.08/accero.c b/tags/2.08/accero.c deleted file mode 100644 index 4b5a176..0000000 --- a/tags/2.08/accero.c +++ /dev/null @@ -1,275 +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 - -#define ACC_REG_FLG_BURST_ACCESS 0x80 - -// rbgʒu -#define ACC_bP_PM0 5 -#define ACC_bP_DR0 3 - -// rbgݒl -#define ACC_BITS_PM_PDN 0 -#define ACC_BITS_PM_NORM 1 -#define ACC_BITS_PM_LP0R5 2 -#define ACC_BITS_PM_LP1 3 -#define ACC_BITS_PM_LP2 4 -#define ACC_BITS_PM_LP5 5 -#define ACC_BITS_PM_LP10 6 - -#define ACC_BITS_DR_50Hz 0 -#define ACC_BITS_DR_100Hz 1 -#define ACC_BITS_DR_400Hz 2 -#define ACC_BITS_DR_1000Hz 3 - -#define ACC_BITS_ALL_AXIS_ON 7 - - -#define VREG_BITMASK_ACC_CONF_ACQ ( 1 << 0 ) -#define VREG_BITMASK_ACC_CONF_HOSU ( 1 << 1 ) - - - -// ======================================================== -#define ACC_RAW_DATA_SIZE 6 - - - -// ======================================================== -task_status tsk_soft_int( ); - -extern void DI_wt_chk(); - - - -/* ======================================================== -@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 | ACC_REG_FLG_BURST_ACCESS ), 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_setup(); - 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 | ACC_REG_FLG_BURST_ACCESS ), 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_setup( ) -{ - - // x on/offݒ肷 - { - u8 str_send_buf[4]; - - str_send_buf[1] = 0x00; // ctrl2 HPF:normal, filterd, HPF for IRQ : dis/dis, HPF coeff:norm - - // sŝ߁ATSƂȊOiHႢjʂĐݒ - if( system_status.model == MODEL_TS_BOARD ) - { - str_send_buf[2] = bits8(0,0,0,0, 0,0,1,0); - } - else - { - str_send_buf[2] = bits8(0,0,0,1, 0,0,0,0); - } - str_send_buf[3] = 0x80; // ctrl3 block update:enable, MSB first, scale: +-2G(default), selftest: dis - - { - u8 acc_setting_sent = ( vreg_ctr[VREG_C_ACC_CONFIG] & - ( VREG_BITMASK_ACC_CONF_HOSU | VREG_BITMASK_ACC_CONF_ACQ )); - - do{ - EI(); - if( acc_setting_sent == 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 ); - } - - // ݌AʐMłtOXV - if( iic_mcu_write( IIC_SLA_ACCEL, ( ACC_REG_CTRL1 | ACC_REG_FLG_BURST_ACCESS ), 4, str_send_buf ) == I2C_ERR_NOSLAVE ) - { - vreg_ctr[ VREG_C_STATUS_1 ] |= REG_BIT_ACCERO_ERR; - }else{ - vreg_ctr[ VREG_C_STATUS_1 ] &= ~REG_BIT_ACCERO_ERR; - } - - // Jǂ݁BÕS~ǂݎ̂ - if( ACC_VALID ) - { - if( system_status.pwr_state == ON ) - { - u8 temp[ACC_RAW_DATA_SIZE]; - iic_mcu_read( IIC_SLA_ACCEL, ( ACC_REG_X | ACC_REG_FLG_BURST_ACCESS ), 6, temp ); - } - } - - // ZTɏɂĂŒSoC܂Ă܂Ȃ - DI_wt_chk(); - }while( acc_setting_sent != ( vreg_ctr[VREG_C_ACC_CONFIG] & - ( VREG_BITMASK_ACC_CONF_HOSU | VREG_BITMASK_ACC_CONF_ACQ )) ); - - } - } - - // DIԂ̂܂܋A - 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.08/accero.h b/tags/2.08/accero.h deleted file mode 100644 index fbf80d6..0000000 --- a/tags/2.08/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_setup( ); - - -#endif diff --git a/tags/2.08/adc.c b/tags/2.08/adc.c deleted file mode 100644 index 73a1cb6..0000000 --- a/tags/2.08/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.08/adc.h b/tags/2.08/adc.h deleted file mode 100644 index 6f4ad04..0000000 --- a/tags/2.08/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.08/batt_params.c b/tags/2.08/batt_params.c deleted file mode 100644 index 74d87df..0000000 --- a/tags/2.08/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.08/batt_params.h b/tags/2.08/batt_params.h deleted file mode 100644 index 343b3f4..0000000 --- a/tags/2.08/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.08/bsr.hex b/tags/2.08/bsr.hex deleted file mode 100644 index f74f205..0000000 --- a/tags/2.08/bsr.hex +++ /dev/null @@ -1,1015 +0,0 @@ -:020000006E0D83 -:040010002248244816 -:02001C00D049C9 -:02002400774A19 -:02002A00C24AC8 -:08003400EF4B924BEB4B6A4EBF -:02004A00264846 -:02005A006048FC -:02006200EF4D60 -:06008000834CBC4C064D50 -:0400C0007EFBFF04C0 -:0A00C4001B339499E033F240BFAA09 -:1000CE00C7C1FBF8FFCEABACC736F00071F4C6610A -:1000DE00D8710006F98EA89C018C015C10D1DD0A46 -:1000EE007110A6FB710006F9EF0B8C015C80D161DB -:1000FE00E8710006F98F06F931030EF6B1BBF66111 -:10010E004900DD05618900EFF5FDD701FD2801FDF0 -:10011E008001FD6702EFAEC0C6D7C7360000674C40 -:10012E0009DE3F318E04F60FC1317B9EFDC411896D -:10013E007267318E04F64F14896142DF03F6EF01C8 -:10014E00E660610667318E124900207267318E04B7 -:10015E00F64F14896142DF03F6EF01E66061068710 -:10016E00EFBC40F84F3A61E88666D161E8FDDA06E9 -:10017E00C6D751105B0C319E609F08F94008F901FB -:10018E00DF05CD3705EF03CD37078F06F95CE39F0B -:10019E0006F951035B04318EE7240000DD1023DDE8 -:1001AE000823DF0E712006F9D7713006F9D771409A -:1001BE0006F9D7717BFACEA010CEA180E5F3000030 -:1001CE000000CEA408F5AAFFD78F06F9310508CD99 -:1001DE000003CD0307EF03CD030ECE23F88F06F9F0 -:1001EE0031030BCD0408CD0508F690BFB401CF1135 -:1001FE0005F8F521FFCE22E9CE24F3CE25FACE2640 -:10020E00FCCE275FCE2EFCCF120511CF350002CFCC -:10021E00370019CF530006CBEEFEFFCE3831CE3964 -:10022E0070CF38050A308700BF1801BF1A01BF1CF6 -:10023E0001BF1E01D7C7C1C1FBF8FFCEABAC8C020C -:10024E00D1DD12616902305C03BBF6614900DDEE5F -:10025E00618900EFF51004C6D7FD390AFD7009FD5E -:10026E000C2FFDC337FDD404717AFAFDA223F504D9 -:10027E00F98F06F93105135003FD372B625C01D15E -:10028E0061E8CF04F902CFAFFB64FDEC2FFDCF4345 -:10029E00711295712BE7618461A461EDEFF8D7FDC2 -:1002AE001548D2717BFAD7D7C7F616FDD404FDAD2B -:1002BE000231229308712293717AFAEF0C717AFA55 -:1002CE00A7F647DFE95203EF01F2C6D7C7C1C1FB5C -:1002DE00F8FF17A1C1E0C18C0A70C18C0270FDFB42 -:1002EE00021006629D508C01721004C6D7C7C1FB66 -:1002FE00F8FFFDB602D2DD045203EF618B70FD27CD -:10030E0004D2DD077123935202EF528C0870FD3D2B -:10031E0004FD88048B6C0170FD3D04300400BF2485 -:10032E0001301740BF1C01300400BF22018C0A911E -:10033E00DF04F6BF2A01710BE2CE44FF3182E202E6 -:10034E00EFFAAC0C148E449961790C61690A8C0A2F -:10035E00D1DFDAFDB104710BE2712393F2C0C6D77F -:10036E00C7C1FBF8FFFDB602D2DD045203EF2571C3 -:10037E000AE68B70FD2704D2DD077123935202EF3C -:10038E00138C0870FD3D048C0A70FD3D04FDB10414 -:10039E00712393F2C0C6D7C7C1FBF8FFFDB602D2D8 -:1003AE00DD045203EF70710AE6710BE28B70FD27CC -:1003BE0004D2DD077123935202EF5B710BE231120F -:1003CE009344C73422FBAC0C1652048B99A5A7920A -:1003DE00DFF9C68B9D4D8C089D4E8C0A9D4F318446 -:1003EE00BD02EFFA717ABDCEB144CBB422FB8C0ABA -:1003FE00318EBEB8CEBB48714BE1714BE5710ABD73 -:10040E008C089E44EF0F710BE68C089E448C0A9D5F -:10041E004CAC0CBD4AF2C0C6D7C716FD600417FD22 -:10042E003D04D2DD07FDB1045202EF01F2C6D7C77B -:10043E0016710AE6710BE2669E443182E202EFFA11 -:10044E00F6420401DD09AF0401BF0C01E2EF01F237 -:10045E00C6D7AF2801085CFB08BF2801FDB502AF67 -:10046E0028015CFBBF2801300400BF2A0130178031 -:10047E00BF1C01300400BF2201D7AF2401086C0459 -:10048E0008BF2401AF28016C0F086C0B08BF2801B0 -:10049E00FDB502AF2A01085CFB08BF2A01FDB502BB -:1004AE00ED6004300400BF2401F6BF2A01300B0BAF -:1004BE00BF2801FDB502300B0FBF2801FDB502307C -:1004CE000F0FBF2801D731349301D77122936A0ED3 -:1004DE0003713B25713B23E0FD43027120F000FDCB -:1004EE00B502F6BF26015024BF1401CB44001430D0 -:1004FE000F0FBF2801711393710BE2710AE6FD60B5 -:10050E0004CE44FF3182E202EFFAFDB104AF0401E2 -:10051E00BF0C01712393713293D731249302EFFAFA -:10052E00FD8804713A25713A235A0EFC7128F000A9 -:10053E00713393D7C7880616FDB602D2DD04520377 -:10054E00EF36710AE650A4FD2704D2DD077123931E -:10055E005202EF2417FD3D046770FD3D04FD880433 -:10056E0050A4FD3D045020FD3D04D851FD3D04A492 -:10057E0051FDB104712393F2C6D7C72008FBF8FFD3 -:10058E00FDD8085014C15008FD0A08C0CC07048CD1 -:10059E00074C14DE0C8C07318EFD500A615907EFA3 -:1005AE00EECC07048C074C1461C8ED7606CC060021 -:1005BE008C064C0461C8ED5506300AF9BC02F6BB38 -:1005CE00CEABAC31B2D109C73641057184C6DEF36C -:1005DE00F1C73641057184C661DC9C05713BD1AC17 -:1005EE0002148F40059971505005617902617900AE -:1005FE00F0E1614900DD09C73641057184C6DEC3ED -:10060E00F1C73641057184C661DC0E059C0550406C -:10061E00C18C07318E31AD128C06318E318D03BDFA -:10062E00D831FFBDDADADAADD8FD1C0DC0D2DD0C43 -:10063E005008C15014FD0A08C0FDD90B8C05D1DF3E -:10064E0006615906EDBE058C07318EFD540AD2DDCA -:10065E000C5008C15014FD0A08C0FDD90B8C05D1F1 -:10066E00DF06615907EDB20571605005CC0400CC70 -:10067E0005008C054C09DE2B8C05318E04F61FC14E -:10068E00317B9EFDC41189728C05318E04F64F1498 -:10069E00896142DF03F6EF01E6600E049C046159A6 -:1006AE0005EFCF41001140F81F3A61E86159048C03 -:1006BE0004D1DF08FDDA0BFDEC0CEF0C5008C15035 -:1006CE0014FD0A08C0FDD90B1008C6D7C72004FBBD -:1006DE00F8FF715B21CC0100F6BC02AC02440900AC -:1006EE00DE3EAC0204F60F144100118972AC020C0E -:1006FE005014896142DF03F6EF01E6600E019C01A2 -:10070E00AC021249005072AC0204F67F14896142A9 -:10071E00DF03F6EF01E6600E019C01617902EFBB8B -:10072E0040F67FFF61F86159018C01D161F8EDD877 -:10073E0007CC0100717AFAFDD404711300711B20ED -:10074E00710303710205E0C15003FD262BC0501347 -:10075E00FD4302500FC1E0FD262BC0CEABAC61595C -:10076E00018C0191DD068C014C03DF03E6EF01F6EF -:10077E006061FB7151018C014C0861F8CC010031B4 -:10078E00320705A024FCEF03F524FC4024FC11DC09 -:10079E000DF524FCF0C15003FD262BC0EF12E6BC74 -:1007AE0002F6614902DDB400000000617902EFF14A -:1007BE00CE3708CBE4FFFFCBE6FFF7CED4FFCF3723 -:1007CE000008F5120561FDF5ABFFFDD808D2500803 -:1007DE00C15014FD0A08C0D2FDD90B1004C6D73182 -:1007EE0084BD02EFFA717BBDCBE4FFFFCBE6FFFFCA -:1007FE00CBD4FFFF717ABED7717BBED7C7C1200C99 -:10080E00FBF8FF8C0C318E31ADC1317B9DD4C0BC59 -:10081E00068DD49C088C149C0B8C14318E040C0009 -:10082E00128C0B318EBDD813FDAB0F61C8EDD30802 -:10083E00CEABACCC05068C0B318EFD4C0AD2DD1541 -:10084E008C0B318EFD500A6169058C05D1DFE7FDF9 -:10085E000608E2EF71CC0A008C0A4C04DE54F6BC9A -:10086E0002300AF9BBAC06148C089EFD118972ABDE -:10087E00146299AC06A1BC06617900617902F0E1BF -:10088E00614902DFE05040C18C0B318E31AD128CCC -:10089E000A318E318D03BDD831FFBDDADADAADD82B -:1008AE00FD1C0DC0D2DD06FD0608E2EF1961590AE6 -:1008BE00EFA68C0B318EFD540AD2DD03E2EF0761F9 -:1008CE00590BED2708F2100EC6D7C7717B9D717BB1 -:1008DE00FAFDED07300AF9FDFF0AFD8A0AC6D7FDBB -:1008EE00D808FDD90BFD0608F5ABFFF2D7C731745A -:1008FE0096067110B3FBEF047118B3FB8FB3FB7B3D -:10090E008A76D1DD5B8FB3FB9D8A4004F903DF222B -:10091E00665C10D1DD1C8FB3FB5C10D1DD0B5080FB -:10092E00C15011FD1B34C0EF095040C15011FD1BC9 -:10093E0034C04004F903DD064004F904DF22665C8E -:10094E0002D1DD1C8FB3FB5C02D1DD0B5040C150D8 -:10095E0010FD1B34C0EF095020C15010FD1B34C0D8 -:10096E00C6D7C7360000665C80D1DD10675C80D1CB -:10097E00DF05712396EF0B712296EF067104077156 -:10098E002196665C40D1DD10675C40D1DF05713386 -:10099E0096EF0B713296EF06711405713196665C07 -:1009AE0001D1DD10675C01D1DF05714396EF0B714C -:1009BE004296EF06713407714196665C02D1DD10E6 -:1009CE00675C02D1DF05715396EF1D715296EF18D9 -:1009DE004007F901DF08710402715196EF0AC7361C -:1009EE00100571C4C6715196665C04D1DD10675C4A -:1009FE0004D1DF05716396EF0B716296EF067144B9 -:100A0E0007716196665C08D1DD10675C08D1DF0561 -:100A1E00717396EF0B717296EF06711407717196E2 -:100A2E00665C10D161E8715AD1C6D7F5F6FBF5F8C0 -:0E0A3E00FBCFFEFBFFCFFAFBFFCFFBFBFFD78A -:100A4C005208EF065203EF025206FEE600FE1B00B0 -:100A5C00DC16089F03088F0408089F040862FE2414 -:100A6C0000089F0408EEBF00EEBA00C1C514410E89 -:100A7C0011D9D0FF118FD1FF312E45C4C0D7F2311F -:100A8C00A2C401E2D79DE261DD4C09DF12717BFA51 -:100A9C00C18F06089F25FDC0CF060800EE27003148 -:100AAC00F2FA04CF0608004C00DF05D50008DD166D -:100ABC0061DD717BFAD50608DD0ACDE31F61CD61DE -:100ACC00CDEE160061CDFED40061FFFE9A00FCF85D -:100ADC00FF0EFEB20061CDFED5004C09DF0EC18FBA -:100AEC0006086F25FD9F0608C0EE0400CF0608001F -:100AFC00F8E3D75200EF025202FE3700CF24FD007C -:100B0C00CF060800BF0408C716629F0008410011F9 -:100B1C008F1A209B4100118F1B209F0108C651008A -:100B2C00FE62FFEF025205CF060800C1510CFE0A0F -:100B3C0000C0D7C1511DFE0200C0D761DD717BFA28 -:100B4C0070CEC0A59EC47CFF9EC4609EC461CDD7F0 -:100B5C0061DD717BFAC18EC45C1BFED6FFCF06082B -:100B6C0001FED7FFC061CDD731F2FA1AC1AEE4BF96 -:100B7C0016FDAEE6BF18FDAED4BF1AFD30FFFFBEAA -:100B8C00E4BEE6BED4C0D731F2FA11C1AF16FDBE39 -:100B9C00E4AF18FDBEE6AF1AFDBED4C0D7C1BF1C72 -:100BAC00FD13BF1EFD15BF20FD17BF22FDC0D7AF23 -:100BBC001CFDDB1EFDEB20FDFB22FDD7534B305201 -:100BCC005430324E323030475631323000FFC15043 -:100BDC00FEFEAB0061DD717BFACF060800FE0A0059 -:100BEC00FEA4FF61CDF8E3EECF00C7FB0408BF16EF -:100BFC00FD8FC0009C05C5C337040600BF18FD352A -:100C0C00363E0C300000522BFE6600C2C4C630ECDF -:100C1C000BB800300000B8022004AF18FDB800304B -:100C2C000F00B802AF16FD61FF520AFE3AFFECF856 -:100C3C00FF0E717BFAC1C7FB04088C05C65C80FEF5 -:100C4C000200C0D761DD717BFA70CFC0FFA59FC0D9 -:100C5C00007CFF9FC000609FC00061CDD7618BFE00 -:100C6C00E2FF717BBE410011FB000017CEFC00615E -:100C7C00CB089EFDF31161C999A58392DFF7D7FECE -:100C8C00B1FED524FDDF23C1CF0308035109FEF4C7 -:100C9C00FDC0D2DF37FE3800A20408CF030807518D -:100CAC0009FEE1FDD2B20408DF22C7FB0408318340 -:100CBC0002C6D7C6510AFECCFD624C1FDF06CF24FC -:100CCC00FD01EF04CF24FD00C0EE5BFEC0EE55FE2F -:100CDC00C7C1FB04088B31196C0161589BC0C6D786 -:100CEC00717BFAFE4DFEAF0408040600C1143650A9 -:100CFC000C300000522DF3FE77FF8FC000FE2BFE50 -:100D0C0061CF5C807C8073C0041900CEFC0F61CB7A -:100D1C00C55404EF03C55417FE18FEC7360008BBB4 -:100D2C00629C0288089C03D1DD334C41DE2F70F1AC -:100D3C00312DB161090033081C000851FF612A41B3 -:100D4C000E118FD0FF613B118FD1FF6138DC0E8B00 -:100D5C005C03DF0964C6C4FE2BFDEECAFDC6C4EEFF -:020D6C00C3FDC5 -:100D6E0061CF5100718C7109FECBF800FEFCC10100 -:100D7E0000F6BF00F953C0F693935820FEDFF941F9 -:100D8E0000367A4E34CCFCEF05118B99A7A517448B -:100D9E00C44EDFF53602F930CCFCEF04CC0000A7D0 -:100DAE0047DFF9410036C44E3420FEEF05118B9912 -:100DBE00A7A51744D44EDFF53630FE3092FEEF0471 -:100DCE00CC0000A747DFF9FCCE0000EFFE61DD711D -:100DDE007BFABEF0ADD8BEF200AEF661CDD7C361E0 -:100DEE00DD717BFABEF0ADD8BEF200DBF6FFADDCF6 -:100DFE00BEF000AEF6BDD8AEF40312ADDABEF20010 -:100E0E00AEF661CD03BDDAC2D7C3F33174D9088310 -:100E1E00C1F626D8BDD8C031750683C312F623C2DB -:100E2E00FD390E93DF0312F623C2D7440000DD26F0 -:100E3E0061DD717BFACFE80080BEF6F6BEF4BEF23D -:100E4E00ADD8BEF0CFE800818FE8003103FAAEF0E6 -:100E5E00F5E80061CDD7B1D7C3F33174D90883C19A -:100E6E00F626D8BDD8C0317505C312F623C2FD874C -:100E7E000E93DF0312F623C2D7440000DD2761DD97 -:100E8E00717BFACFE80080BEF6F6BEF4BEF2ADD8A6 -:100E9E00BEF0CFE800818FE8003103FAAFE000F535 -:100EAE00E80061CDD7ADD8D7C3F33174DB0F83C162 -:100EBE00F626D8BDD861317026DABDDAC031750D8F -:100ECE0083C312F626DCBDDC61317023C2FDEF0E4A -:100EDE0093DF0CF626D8BDD861317026DABDDAC2A2 -:100EEE00D7C161686BDC6BDDC0DD2F61DD717BFA14 -:100EFE00CFE80080BEF4ADDCBEF6ADD8BEF0ADDA04 -:100F0E00BEF2CFE800818FE8003103FAAEF0BDD813 -:100F1E00AEF2BDDAF5E80061CDD7F6BDD8BDDAD7B1 -:100F2E008292DD2B61DD717BFACFE80080BEF0F698 -:100F3E00BEF2BEF46208BEF6CFE800818FE8003143 -:100F4E0003FAAFE0006072AEF0F5E80061CDD76055 -:100F5E0072F6B1D706DABDDAADDC06D8BDD861D8E7 -:100F6E00A6DAD7D1DD17C1C3DAD89DD8ADDA311CD8 -:100F7E0061EEB4D8DFF8BDDA13BDD8C2C0D7D1DD6B -:100F8E001BC1C3DADA9DDAADD8311E33311E33718F -:100F9E00F9B4DADFF4BDD813BDDAC2C0D746D8DD56 -:100FAE000771FF7177D971C0D75BDB9DDB605BDAB0 -:100FBE009DDAADDC5BD9085BD808BDD8D7C3C7F3C3 -:100FCE00728EFDC162314C410036704E1161A072BD -:070FDE00C09EFD62C6C2D7F0 -:0A0FF60031343A32363A3537000044 -:0A20000031343A32363A3537000029 -: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 -:10228C008D3AB43AD1DF52CD3A1EFD3B23FDE62206 -:10229C003132920D3104920931229605713304EFDB -:1022AC0003713204FD172331229205714202EF03B0 -:1022BC00714302D432DD11B4328FB2FB5C01D1DD3B -:1022CC0004F432EF03714202314402067140B3FB55 -:1022DC00EF047148B3FBFD0526D74A304BDC114A9D -:1022EC0030B9DE0C4A3B28DE03A43BD7713392D7BE -:1022FC004A303EDC054A30BDDC0C4A3C28DE03A4E7 -:10230C003CD7713292D7F43BF43CD73132960C4A1D -:10231C003D02DE03A43DD7712392D73132040A402B -:10232C00AFFB3CDE04712392D7712292F43DD7C7E8 -:10233C00C1FBF8FF714492712796DE577124967198 -:10234C004192312296127130B3FB5002C15011FDF3 -:10235C001B34C0CD3232EF3B7138B3FBE0C15011AE -:10236C00FD1B34C0F43217C15002FD0E2BC0D2DF5E -:10237C000D8B318E318D080E01081C00BD34AD342F -:10238C0044009BDC05D5AFFBDF095020C15011FD8B -:10239C001B34C0C0C6D7C78D2076FDE323FD422B6E -:1023AC00D507F9DD05710392EF2B664B2061F831EF -:1023BC0054921A715392FDD404664C07DD0381DFED -:1023CC00098F06F9310303FD6C24FD802471029200 -:1023DC003063256194C6D7C77162017172015005D3 -:1023EC00FD43025008FD9836629D305009FD983629 -:1023FC006276716301711806F94A30F1DC05E50764 -:10240C00F9EF224A3004DE1ACF07F9025008C15006 -:10241C006CFDDA02C092DF0DD450DF09711006F9A1 -:10242C00EF03F507F94007F901DF05710A22EF0602 -:10243C00710B22710302CD20075700674C08DE1088 -:10244C0073090A20614EDC05679D20EF0387EFEBD3 -:10245C004A2007DF09D507F961F8CF07F903C6D77A -:10246C00500AFD4302304000C15006FDF12AC05015 -:10247C0096ED4302C72006FBF8FFD507F961E8ED9E -:10248C005F25304A57C1503EFDF12AC0D2DD07719D -:10249C0000B2FBED5F257108B2FB17040200C150BE -:1024AC0004C1500CC1506CFDFB021006EA38AA485E -:1024BC00318D12AA48318E616B08616A08C1500EC9 -:1024CC00FDF12AC0F690C1500CFDF12AC0CC0100E0 -:1024DC008C014C04DE2831249302EFFA711293EA3A -:1024EC00388C015010D605C15010C18C01D6044057 -:1024FC0000C1506CFDA5031006615901EFD250A527 -:10250C00FD4302EA38AA48318D12AA48318E616B1C -:10251C0008616A08C1500EFDF12AC050A5FD4302A6 -:10252C005004C1506CFDDA02C0629C01EA388A4B3F -:10253C004E0161C3048A4A4E0117040200C15004C3 -:10254C00C1500CC1506CFDA5031006F6C1503EFDE8 -:10255C00F12AC01006C6D7C78D3E4B3061F8ED028C -:10256C00264A4028DE05A440ED0226F4408D309D1D -:10257C003E8D305070D612307351230480001231CE -:10258C00FF318E039D3F9FAEFBF68D3F7C804C95BB -:10259C00DC1B8D3F318F241400EA38BDD8AA44FDD2 -:1025AC00DB0D1231FF318E03318F16EF198D3F3158 -:1025BC008F241400EA38BDD8AA46FDDB0D1231FF7A -:1025CC00318E03318F16EA388A427217F3031644A0 -:1025DC00000171FE61C836FF001701DE02F6161706 -:1025EC00BD78C7500CFDF12AC0D2DF068D309D3E60 -:1025FC00EF047100B2FBF2C6D7C72008FBF8FF400E -:10260C0007F901DD064007F902DF1C17040600FD7F -:10261C00E92BD2DF0A8C069C058C079C04EF4ACC74 -:10262C000563CC0400EF4217040600FDE92BD2DD54 -:10263C000F7100B2FB710392CC0500710293EF296C -:10264C008C06318E318D080E07081C00BBEA388AC7 -:10265C004072ABFD2E0FBB8C019C05D1DF08CC0565 -:10266C0001CC0400EF038B9C0417040600FDF42B33 -:10267C00D2DD06CC06C8CC07008C069FB1FB8C06BD -:10268C00318E318D080E07081C00BD34AD34440169 -:10269C00A5DC08CC0364F6BD42EF48AD34264244B9 -:1026AC0001A0DC08CC031EF6BD42EF37AD344481EB -:1026BC009DDC09CC030AC942F401EF27AD34440177 -:1026CC009BDC09CC0305C942F401EF17AD3444017E -:1026DC0091DC09CC0300C942F401EF07710293C9E4 -:1026EC0042F4013132040C31249208CC0564CC0440 -:1026FC0000EF0D8C034E05DE078C039C05CC04000B -:10270C008C059FAFFB8C049FB0FBFD762B8D444E4C -:10271C0005DD2840AFFB0BDE054A440BDE1440AF51 -:10272C00FB06DE054A4406DE09D5AFFBDF0DD444BB -:10273C00DD095020C15011FD1B34C08FAFFB9D44EF -:10274C00FDB32B1008C6D7C7D837C15002FD262BB6 -:10275C00C04008F90161F8712010055012FD4302C8 -:10276C008D376C0870C15002FD262BC05003FD4301 -:10277C00028D376C1870C15002FD262BC05016FD0F -:10278C0043025003FD372B625C01D1DD107170B335 -:10279C00FB5002C15013FD1B34C0F2EF01E2C6D74F -:1027AC00C75004FD372B625C03D1DD405014FD4350 -:1027BC002834B3FB895C9F998A0C7CFF50FF5C1416 -:1027CC00D1DD228A0C7CFF5C147234B7FB89616A00 -:1027DC00997162075600316207058666D1DFF77181 -:1027EC006307716B2734C6FB895CEB997128100564 -:1027FC005002FD372BD2DD354008F901DF05500AB8 -:10280C00FD43028D376C1070C15002FD262BC0E0C9 -:10281C00FD4302D837C15002FD262BC05033FD4377 -:10282C0002F0C15002FD262BC07178B3FBE0C15001 -:10283C0013FD1B34C0C6D7C7C12004FBF8FFCC0264 -:10284C00005004FD372B629C038C045C20D1DD0E00 -:10285C008C036C019C038C026C209C02EF138C0487 -:10286C005C10D1DD0C8C035CFE9C038C026C109C08 -:10287C00028C045C08D1DD0E8C036C029C038C0270 -:10288C006C089C02EF138C045C04D1DD0C8C035C93 -:10289C00FD9C038C026C049C028C03D1DD05501A48 -:1028AC00FD43028C0370C15004FD262BC08FB3FB7B -:1028BC005C9F728C03318E316D148C03318E314DD3 -:1028CC00616D08616C5C606162629FB3FB8FBFFBE2 -:1028DC007CFF50FF5E02D1DD278FBFFB7CFF5E02C9 -:1028EC007234B7FB89616A99716207CC010031625D -:1028FC0007086159018C01D1DFF4716307716B27F3 -:10290C00F21006C6D7D9A7FBC15006FD262BC0D99D -:10291C00A8FBC15007FD262BC0D7FD1129F2D7C744 -:10292C00711300711B20710303710205E0C1500388 -:10293C00FD262BC05013FD4302F0C15005FD262B84 -:10294C00C0500FC1E0FD262BC0500AFD430271039D -:10295C00055008FD4302501FC1E0FD262BC050124C -:10296C00FD43025003FD372B625C01D1DF03E2EF24 -:10297C0024F0FD372B629D363602F9C75008FD0E48 -:10298C002BC05003C1FD262BC0710203711A20FD10 -:10299C00CE2AF431F2C6D75003FD372B625C01D13D -:1029AC00DD155014FD4328FDAC275014FD4302E007 -:1029BC00C15003FD262BC0711300711B2071030342 -:1029CC005014FD4302F0C1E0FD262BC0F0C15003B2 -:1029DC00FD262BC0D7C72004FBF8FFCC02008D319D -:1029EC009C035010C150A4FDDA02C0629D31D4503A -:1029FC00DD04F2EDAB2A8C037B315C08D1DD0F8D4D -:102A0C00315C08D1DF05CC0210EF03CC02208C0323 -:102A1C007B315C04D1DD158D315C04D1DF088C0277 -:102A2C006C049C02EF068C026C089C028FB2FB5C5F -:102A3C00F3728D315C0C6162629FB2FB8FBEFB7CCA -:102A4C00FF50FF5E029C02D1DD1F34B6FB896E0283 -:102A5C0099716207CC0100316207086159018C0140 -:102A6C00D1DFF4716307716B278D315C40D1DD09C7 -:102A7C005002C15012FD1B34C08D315C01D1DD08F8 -:102A8C00E0C15012FD1B34C0717AFA8D315C41D11A -:102A9C00DD0C5A31BED831C15010FD4205C0F210C8 -:102AAC0004C6D7FD5327F2D7FDAC27F2D7C78FC684 -:102ABC00FB7617FD4328664FC6FBDFF2F5C6FBF22B -:102ACC00C6D75064FD4302FDFF2B6261FB7111926E -:102ADC00F171149261DC70C15012FD4205C0FDC948 -:102AEC0035CD5F03D7C7C1C1FBF8FFAC0ABB17C11B -:102AFC005002C18C0270C1506CFDA503100610046D -:102B0C00C6D7C7C1FBF8FFAC08C15002C18B70C15E -:102B1C00506CFDFB021006C0C6D7C788061667703E -:102B2C00C1C75084FD6E031004C6D7C716C75084A6 -:102B3C00FDDA02C0C6D7C74A2004DE045600EF02F5 -:102B4C0056014008F901DF048686EF0A4008F902B5 -:102B5C00DF045104610666318F12504CD633514C50 -:102B6C00D6610A045420BD38C6D740AFFB51DC05F2 -:102B7C00CF04FC0FD740AFFB33DC05CF04FC0BD7E5 -:102B8C0040AFFB0BDC05CF04FC07D740AFFB066165 -:102B9C00D831320405CF04FC03D7D5AFFBDD04E5F7 -:102BAC0004FCD7F504FCD7D504F9DF04716392D784 -:102BBC00FDFF2B6261FB71719271149271779261BE -:102BCC00C831629217716292717492711192F171A3 -:102BDC00749261DC70C15012FD4205C0D7C716C794 -:102BEC005004FD0E2BC0C6D7C716C75002FD0E2BC6 -:102BFC00C0C6D740AFFB0BDE02E2D7F2D7710001A3 -:102C0C000571785005713AD5713BD18F10055CFC7C -:102C1C009F1005CF54054AE542057110420571001D -:102C2C004205714850057130500571205005CF5345 -:102C3C000505CF52050A7130510571205105713BC4 -:102C4C00D5717050058F11055CFC9F1105F422D7CE -:102C5C007178500571080105D77140F0007178301A -:102C6C0002713AE6713BE2713BEA713BEE8F100563 -:102C7C005CFC9F1005CF34024AE552FF711A527169 -:102C8C000A52714830027130300271203002CF3359 -:102C9C000205CF32020A71303102713BE67170309D -:102CAC00028F11055CFC9F110571603002D77178A1 -:102CBC0030027148F000D7C788061666614FDD09EF -:102CCC0067614EDE0396EF01866672C6D7C716178C -:102CDC0014AA0412A943DD29AA0412A923FDD44E77 -:102CEC00C3AC02FDD44E13C2BDD813FDAB0FDE0C2A -:102CFC001714AA0212AA0403BA04EF051714A9BAEE -:102D0C0004AC041231FF319E03317F087208C6D720 -:102D1C007100F200304400BFB601300188BF900151 -:102D2C00300984BF9E01BF9C01BF9A01BF9801BFAF -:102D3C009601BF9401BF9201F53CFF30FE00BFBE6F -:102D4C0001F6BFBC01BFB80150EEBFBA01A1BFB2C2 -:102D5C0001C918FE00F6BE6EBE64BE6A7123047112 -:102D6C0053078F06F9310507F5CDFBCB6CFF0071CE -:102D7C006393715293D730EF00BFB401F6BFBA0121 -:102D8C007108F200712304715307715393D78D525C -:102D9C00B452D1DF6931D4D105715BD1E454D45430 -:102DAC00DD2E7140B2FBD853F1E734020023DD066F -:102DBC0025DD0325DF05F6BE66EF06D9CCFBF1BE9B -:102DCC0066A4534A5320DF04F453B454CD5219D79C -:102DDC00CD521E7148B2FBD5CEFBDF04F6BE66D7D2 -:102DEC00D9CCFBF14266FFDD15D9CCFBF112AE66F6 -:102DFC0043DE05A266FFEF03B266FFCD5203D7C7D1 -:102E0C00161714F6B9AA0412F6231231FF31AE03C9 -:102E1C00316FBA02C6D7C7C1FBF8FF8C085080D6F9 -:102E2C0012AB1413B9AB14AA0412A92312D927FBA1 -:102E3C00F133BDD813FD170EBA02C0C6D731749347 -:102E4C0001D74004F902DF10F6BE64BE6EBE6ABF45 -:102E5C008EFBBF94FBBF9AFB31649314308AFBFD4D -:102E6C000B2E3090FBFD0B2E3096FBFD0B2EEF71D5 -:102E7C003104940D7103947108D2FBF456F455EFA0 -:102E8C0060D455DF5A8F26FB9D554A561FDC1771AF -:102E9C0000D2FB4028FBFFDD1CA4578F28FB4B57AF -:102EAC00DE13F456EF0FD856F1A1605C1F9D5671DE -:102EBC0008D2FBF457E856092AFB70C1308AFBFD97 -:102ECC00222EC0E856094AFB70C13090FBFD222E21 -:102EDC00C0E856096AFB70C13096FBFD222EC0B4C7 -:102EEC0055308AFBFDD92CF313BE6E3090FBFDD907 -:102EFC002CF313BE6A3096FBFDD92CF313BE64D7AA -:102F0C00C736F00071F4DC297170F000CE9D08CE4C -:102F1C009EC0CE9F80F594FFF593FFF592FFE59749 -:102F2C00FFE596FFE595FFE598FFCE9C7F7100A627 -:102F3C00FB711BE3712BE3711AE7712BE7717A9D1F -:102F4C00710A9E31929E02EFFA710B9E711394716D -:102F5C002394713394C6D7C73112941E7112947195 -:102F6C000A9E31929E02EFFA34D4FB3692FF52073E -:102F7C008B99A5A792DFF9710B9EC6D7C788061649 -:102F8C0031229415712294C7349CFB3092FF165257 -:102F9C00078B99A5A792DFF9C6667367189CFBC6C9 -:102FAC00D7C77113943124941E712394710A9E31E6 -:102FBC00929E02EFFA3492FF369CFB52078B99A536 -:102FCC00A792DFF9710B9E31349413713394717B9A -:102FDC009E8FDCFB9E9A8FDDFB9E9B717A9EC6D7E3 -:102FEC00CFA7FB5CCFA8FB5FCFC8FB5DCFFCFB364C -:102FFC00CFFDFBC9E5D3FBD7C7CFA4FB12CFA5FBF5 -:10300C0008CFCCFBFFF5CDFBF5CEFBF5CFFBF5D018 -:10301C00FB5600664C64DE08723826FB0086EFF324 -:10302C00C6D7C788061617F1E73403002361E3ED12 -:10303C0053332361F8ED1F31B12361E3ED293125C1 -:10304C0061F8ED3731B1240D0061D8ED5333240B09 -:10305C000061F8ED57312361F8ED9A312361F8EDF9 -:10306C006A312361F8ED4E3324060061F8ED03322A -:10307C00B12561D8ED1F3224000061F8ED2C32230C -:10308C0061F8ED53332361F8ED2C33B12361E3ED9B -:10309C004F322361F8ED60322361F8ED7132236118 -:1030AC00F8ED60322361F8ED82322361F8ED933252 -:1030BC002361F8EDA2322361F8EDC4322361F8EDFF -:1030CC00D0322361F8EDDC322361F8EDE4322402D6 -:1030DC00002361E3ED533324020061F8EDEC32235D -:1030EC0061F8EDF7322561F8ED0233B12406006189 -:1030FC00D8ED533324000061F8ED55332561F8ED1C -:10310C000D3324120061F8ED27332361F8ED1833E9 -:10311C00ED553334A6FB89615F99ED5F3330262979 -:10312C00619466736718A4FBED5F3340A9FB6ADFFB -:10313C001340AAFB68DF0D674C6CDF0830CB3F6196 -:10314C0094713AD5679FABFBED5F3367D1DD0C30E3 -:10315C00F43A619434C4FB89616F99ED5F33675C19 -:10316C0002D1DD0730AF2A6194EF0B675C01D1DD32 -:10317C000530B42A6194675C3CD1DD0F30B92A610B -:10318C0094675C3C7266736218A4FBED5F3367D185 -:10319C00DD625C01D1DD05300800EF01F6609F01B6 -:1031AC00FC675C02D1DD03E6EF01F63401FC8961BA -:1031BC006899675C04D1DD04E6A1EF01F63401FCEB -:1031CC0089616899675C08D1DD05302000EF01F654 -:1031DC003401FC89616899675C10D1DD0530100001 -:1031EC00EF01F63401FC89616899675C20D161E8D4 -:1031FC00716001FCED5F33D446DF08679FCDFBA403 -:10320C0046EF0D4A4605DE08E846671811FDA44650 -:10321C00ED5F33675C0F7266736218A4FBED5F336E -:10322C004A4664DE1B4A4601DF0667D161F8570146 -:10323C00E846671826FBA4464A460561C871029405 -:10324C00ED5F33675C7F70C117F1243000FD882F70 -:10325C00C0ED5F33675C3F70C117F1243000FD880F -:10326C002FC0ED5F33675C0770C117F1243000FD90 -:10327C00882FC0ED5F33675C1F70C117F1243000DD -:10328C00FD882FC0ED5F336770C117F1243000FD4E -:10329C00882FC0ED5F33CEABAC710A9E31929E028B -:1032AC00EFFAD592FFDF05710B9EEFED679E9971DA -:1032BC000B9E9FDBFBED5F33713294675C7F9FDC71 -:1032CC00FBED5F33713294675C3F9FDDFBED5F3349 -:1032DC00675C3F9FDEFBEF7B675C1F9FDFFBEF7341 -:1032EC0030B3386194679FE4FBEF68306E386194BB -:1032FC00679FE5FBEF5D3090386194679FE8FBEFCB -:10330C0052675C01D1DD4CFDCF43EF474A58C8DE14 -:10331C0042E85867185AFAA458EF38679D58EF33AB -:10332C00675C01D1DD05711202EF03711302675C5A -:10333C0002D1DD05712202EF03712302679FD3FBDB -:10334C00EF1167318EEF0CEF0A664C5BDE0573678D -:10335C0018A4FBC6D7C716664C30DC094C37DE0503 -:10336C00FD632FEF6B664C02DF1F8FA6FB5C0372B5 -:10337C008F03FC5C03318E316D08616A08128F0378 -:10338C00FC5C80312A6162EF56664C3DDF08AE90E2 -:10339C00BD5AF85AEF49664C3EDF04F85BEF4066C5 -:1033AC004C4FDF05FDF743EF36664C61DF08E858FC -:1033BC00095AFA72EF29664C7FDF05FD6A3BEF1F55 -:1033CC00664C4EDF0B317495045210EF12F2EF0F76 -:1033DC00664C5BDC0452FFEF06667309A4FB72C6F5 -:1033EC00D7C788061617F1241000240500DC072423 -:1033FC004C00DD17EF17FDAD0217F104A4FB148987 -:10340C00617F99717AFA714294EF02A458C6D7C7BA -:10341C00C1C1FBF8FF4004F903DD064004F904DFE9 -:10342C0038717BFA8C027309ACFB5E0AD1DF278CF6 -:10343C0002318E04A4FB14896E0A99716207717AA9 -:10344C00FACC0100316207086159018C01D1DFF41B -:10345C00716307716B27717AFA1004C6D7CF03FC1E -:10346C0003F501FCF505FCF507FCD7C78806161714 -:10347C00F1E734020025DD3D23DD1725DD1C23DDBE -:10348C000523DD2BEF3B717294679F06FCCD5F0328 -:10349C00EF2F675C839F03FCEF27675C039F05FCA2 -:1034AC00675C034C0261F8711296FDE545EF1267FB -:1034BC009F07FCEF0C6791DF08E0C15012FD1B3435 -:1034CC00C0C6D7C71617F1E7240000DD2A23DD1E7E -:1034DC00240300DD0724FB00DD24EF2531229605B3 -:1034EC00308000EF01F6086F04FC7208EF198F01B1 -:1034FC00FCF501FC72EF107142955235EF09F2EFB9 -:10350C000666730900FC72C6D7C71617F1E72400CC -:10351C0000DD38241000DD1C23DD1C23DD30240EDF -:10352C0000DD18241100DD1B240F00DD12243000F7 -:10353C00DD15EF1EE2EF1D5202EF195204EF15528A -:10354C0006EF115205EF0D5207EF09F2EF06520389 -:10355C00EF0252FFC6D7C7315494377153948D5E26 -:10356C009FACFB8D5D9FCBFB36D2FCC7D85DFDC9F4 -:10357C0036618A70618AFD0E37C0D862F1312F60D6 -:10358C009D618D5C4B61DD0A7162948D619D5CCD9A -:10359C005F034A5F05DE0830D3356194CD5F6BB4B1 -:1035AC005F7150F000CE300BCF170006CE3106FD08 -:1035BC00B502717A30710BE3710BE7C6D78D619D43 -:1035CC005C8D619FADFBD74004F903DF064004F925 -:1035DC0004DF02F2D73164940C7163947103958DFE -:1035EC00619D63EF313174941F717394710295D5A1 -:1035FC0006FCDF04F464EF0A8F06FC5002D6A160CF -:10360C009D648D649D63EF0E310495068D649D63FE -:10361C00EF048D619D638D639FADFBD863FD3B36DD -:10362C00E863091C2270C15013FD4205C0F2D7C7D4 -:10363C00C1C1FBF8FF8C02D1DF05F506FCEF1A8C3B -:10364C00024C05DE06CF06FC02EF0E8C02318E1208 -:10365C0031FE03311F609F06FC8D654F06FCDD2893 -:10366C00CC011F8F06FC9D65CC00008B4C08DE1432 -:10367C008B730912204F06FCDC058B9C01EF056156 -:10368C005900EFE78C019D601004C6D7C716710A6C -:10369C00E7710BE37150F000CE300BCF17000666CC -:1036AC009E31FDB502717A30710BE33182E302EF8A -:1036BC00FA8D1F7158F000710BE772C6D7C7C1C1E4 -:1036CC00FBF8FF8FFCFB4E02DC03F2EF318C024F58 -:1036DC00FDFBDC0452FFEF268C022FFCFB706131EA -:1036EC00318D128FFDFB2FFCFB70613133BDD81374 -:1036FC00FD390EBB440001DC03F690BB8B72100449 -:10370C00C6D7C7C1FBF8FFAC0814A91489708B612C -:10371C0028706131FDD44E1344030071FEDC23ACE0 -:10372C0008148A04819A04AC08148A044C11DC1025 -:10373C00A9148B99AC0814CA0200AC0814CA031063 -:10374C00EF72AC0814CA0400AC0814A914894DDE3D -:10375C000AAC08148A02819A02EF12AC0814A9145C -:10376C00894D61D308AC08148A02919A02AC0814F2 -:10377C008A03919A03D1DF3CAC08148A024C10DF07 -:10378C0010A91489318EA112AC0814A9146299EFF6 -:10379C0017AC08148A024CF0DF0EA91489318EB1D3 -:1037AC0012AC0814A9146299AC0814CA0200AC0833 -:1037BC0014CA0310C0C6D7EDC637C75600664C0AEC -:1037CC00DE0BF0317E12F67810FC86EFF0C6D7C710 -:1037DC00200CFBF8FF17040600C15006C150A8C10D -:1037EC005030FDFB021006D2DD1BA4684A6808DECF -:1037FC0003E2EF6A34E4FB895CFC99FDB338711089 -:10380C00B2FBF2EF59300600C117040600C130E9D3 -:10381C00FBFDDC4E1004F4688FE4FB5C01D1DD266B -:10382C004004F903DF205010C180FD1B34C0C736A3 -:10383C00100571D4C6DE0F17C15006C150A8C15077 -:10384C0030FDFB0210064004F901DD114004F905BE -:10385C00DD0B8FE4FB5C02D161E8FD1141F2100C31 -:10386C00C6D7D9E5FBC15030FDDA02C0629FE8FB38 -:10387C007130B5FB8FBDFB5C08D1DF06716307713E -:10388C006B27F2D7D9E8FBC1D9E7FBC15030FD6EED -:10389C000310047130B5FB8FBDFB5C08D1DF0671E2 -:1038AC006307716B27F2D7C7200CFBF8FFCC09001C -:1038BC004007F901DF05CC0A02EF03CC0A10CC0B50 -:1038CC00808FE4FB5C039C07717AFA8C07D1DF08CC -:1038DC00717AD5CC0807EF06717BD5CC082F17046D -:1038EC000800C15004C150A0C15030FDA503100602 -:1038FC00624C02DF067110B2FBEF047118B2FBC709 -:10390C0036100571D4C6DE164004F903DF1017A17A -:10391C00C15006C150A8C15030FDFB021006FDADD0 -:10392C00028FE4FB5C034E07DF9EF2100CC6D7D56A -:10393C0004F9DF03F6BD6A4004F901DD0AD474DD35 -:10394C0003B474D7CD74038F04F9318FE723DD0BE7 -:10395C0024020024030061C8ED603A8F06F931237C -:10396C003E301B00466ADF0AE0C15010FD1B34C01C -:10397C00EF1D307701466ADF165002C15010FD1B57 -:10398C0034C0F64670DF088FC8FB5010D6BD70F6F9 -:10399C004670DD36B6704670DF30710293EF2B3017 -:1039AC001B00466ADF13F64672DF18E0C15010FDAB -:1039BC001B34C0C9725307EF0A307701466A61F8AD -:1039CC00710293F6467261E8B6723144960871330F -:1039DC0095F6BD6AEF1431349505F6BD6AEF0BA66A -:1039EC006AF6466A61F8C96AFFFF315296194A6C49 -:1039FC0005DE16A46C4A6C05DF0FA46C5004C15094 -:103A0C0010FD1B34C0EF02F46C315496194A6E054C -:103A1C00DE16A46E4A6E05DF0FA46E5008C150105E -:103A2C00FD1B34C0EF02F46ED46FDD03B46FD731DD -:103A3C006296174A6D05DE14A46D4A6D05DF0DA460 -:103A4C006D5010C1FD1B34C0EF02F46D4A6D066160 -:103A5C00F8CD6F25D7C736100571D4DE0630DB37AD -:103A6C006194D24004F903DF1C3122070530E129AF -:103A7C0061943144950C7143955080C15012FD1BDB -:103A8C0034C0FDA03AFDC63A31649506716395FDCC -:103A9C00C942C6D78F03FC5C01D1DD1DD477DD0391 -:103AAC00B477D7CD77098D604B76DD0D8D609D7623 -:103ABC005040C15012FD1B34C0D74004F903DD0443 -:103ACC00F6BD1AD7D5D0FBDF08F6461ADD19B61AA3 -:103ADC00D7D9CCFBF1461ADD0ED9CCFB12AD1A436B -:103AEC00DE03A61AD7B61AD7C7FDAD028FC4FB7674 -:103AFC00F5C4FB717AFA5C10D161E8715295665C81 -:103B0C000FD1DD57665C01D1DD05F504F9EF4C668C -:103B1C005C02D1DD11E0C15003FD262BC0711300F6 -:103B2C00711B20710303665C04D1DD1171130071EC -:103B3C001B20D503FC61F8710303FD6934665C0836 -:103B4C00D161E87103035005FD4302710203500378 -:103B5C00C1FD262BC0711A20FDCE2AF2C6D7C7563E -:103B6C00FF4A461361C8ED443C8F06F93115053008 -:103B7C000400EF0F8F06F9314505300500EF04D92D -:103B8C0007F9F1609F28FC8D789F29FC713492E62F -:103B9C0061301271049261DC31196162629F2AFCFE -:103BAC00E52BFC31140205308000EF01F6C13134F5 -:103BBC009605304000EF01F6C2616B08616A08C1DE -:103BCC0031340405302000EF01F6C2616B08616AE4 -:103BDC0008C131240205300800EF01F6C2616B0800 -:103BEC00616A08C131649605300400EF01F6C261C8 -:103BFC006B08616A08C131549604E6A1EF01F6C264 -:103C0C00616B08616A08C131449603E6EF01F6C2A4 -:103C1C00616B08616A9F2CFCF171240461DC9F26A6 -:103C2C00FCF171540761DC9F27FCD846F10104ECD0 -:103C3C00FC14A9148976A4466672C6D7C7FD700910 -:103C4C008F04F9318FE724000061F8ED263E23DD67 -:103C5C001B2361F8ED303D2361F8EDAC3D2361F899 -:103C6C00EDF53D2361F8EDC93EED233EF6BD7071D7 -:103C7C0003934005F901DF2C3124961B466ADD04C1 -:103C8C00F424EF02A4244A2465DC0FF6BD6AF50483 -:103C9C00F9711295ED4E3FFDA223AD6A440A006105 -:103CAC00D8ED4E3F713295FDD404715392FDA22391 -:103CBC004007F903DF09711295F504F9ED4E3FFD4C -:103CCC00052640B1FB9BDE0D31249609711295F54A -:103CDC0004F9ED4E3F714A27714011057130110501 -:103CEC00713A22715A2271501105FD2B29D2DD092E -:103CFC00711295F504F9ED4E3F71103500CF370078 -:103D0C001D714012054005F901DD064005F903DF80 -:103D1C0005F5CDFBEF04CFCDFB03CF04F902FD116C -:103D2C0029ED4E3FFD092CFD652C714A9DFD693432 -:103D3C00FD0430F537FF712BE0F505F9711295CBC9 -:103D4C00E43FEFCBE6F6F0FDD404713BD4711202E4 -:103D5C007123028F06F93105285004FD372B625C64 -:103D6C0003318E315D34B3FB896168995002FD37A4 -:103D7C002BD2DD067170B3FBEF047178B3FBFDA29F -:103D8C0023FD1C2D710806F9CF04F9038FA6FB5CEB -:103D9C0002D1DD095080C15010FD1B34C0ED4E3FE7 -:103DAC00FD503F3154952FA47AD47ADD0831A4E02C -:103DBC000A31020C06712BE0FDBC3F31A4E0173137 -:103DCC00040C13712BE05027C15005FD262BC0CFDE -:103DDC0004F904711295FDB13F8F06F931250731B5 -:103DEC00249603F504F9ED4E3FFD503F31020C14BF -:103DFC00F0C15005FD262BC05005FD4302FDBC3F14 -:103E0C00CF04F903FDB13F8F06F931250731249614 -:103E1C0003F504F9ED4E3FF504F9CFCDFB03F5CED8 -:103E2C00FBF5D0FB716293F6426CFF61E8ED4E3FFF -:103E3C00F6BD70710393F5E4FBFDB338717AFAFDAE -:103E4C00822DFD5C2CFDBA2C714B9D7113027123DC -:103E5C0002F5B4FBF5B5FBF5B6FBF5B7FB312493D6 -:103E6C0002EFFACE3708CBE4BFFFCBE6FFF3CED49C -:103E7C00FFCF37000971481205F6BEE0BEE2BED096 -:103E8C00716A27FDA329714307714B2771481005EF -:103E9C0071481105713810057138110571330271B3 -:103EAC003B22715302715B22715810057158110538 -:103EBC00CF04F905713295F6BD6AFD390AF505F99D -:103ECC00F42431249604D432DD20E505F9E504F917 -:103EDC008F06F931256CF5F8FBF5F6FB502EFD43FA -:103EEC0002CF05F903E504F9EF58FD2805FD3B2346 -:103EFC0071730171320471430271039271529231E8 -:103F0C00949E02EFFA712AE7FDD03FCEA409F5F397 -:103F1C00003104070261FDCFF30080F466FD7009E7 -:103F2C00CEA40831229606CF04F905EF097133951A -:103F3C00E505F9E504F9712BE78F06F9312503F551 -:103F4C0004F9C6D7D47BDF19310200585003FD3772 -:103F5C002B625C01D1DF07F504F9711295D7E47B74 -:103F6C00D74A7BF0DF073104003AF47BD74A7BC891 -:103F7C00DF0AF504F9711295CD7BF0D731020008F8 -:103F8C004A7BFFDD1FA47BD7F0C15004FD262BC05C -:103F9C008FB3FB5C9F9FB3FB7110C4FB30F43A6191 -:103FAC0094CD7BF0D731049306F504F9711295D7B3 -:103FBC00715395F47A717207FDB502717307D7FDD1 -:103FCC008805F2D7C72018FBF8FF8F30005F20FF61 -:103FDC00708D000872087CFF50FF6152629C0C8F40 -:103FEC0031005F21FF708D010872087CFF50FF616A -:103FFC0052629C0DCC0E008F33005F23FF708D033B -:10400C000872087CFF50FF6152629C0F8F34005F76 -:10401C0024FF708D040872087CFF50FF6152629C73 -:10402C00108F35005F25FF708D050872087CFF50DE -:10403C00FF6152629C11CC12008F37005F27FF701A -:10404C008D070872087CFF50FF6152629C138F3CF5 -:10405C00005F2CFF708D0C0872087CFF50FF6152C2 -:10406C00629C148F3E005F2EFF708D0E0872087CD0 -:10407C00FF50FF6152629C15CC16008F12055F1128 -:10408C0005708F10050872087CFF50FF6152629C0E -:10409C00178E207CFF5B009B8E217CFF5B019C01BB -:1040AC008E227CFF5B029C028E237CFF5B03708F55 -:1040BC0053000872087CFF50FF6152629C038E24EF -:1040CC007CFF5B049C048E257CFF5B059C058E2687 -:1040DC007CFF5B069C068E277CFF5B079C078E2C67 -:1040EC007CFF5B0C9C088E2E7CFF5B0E9C098E2F3C -:1040FC007CFF5B0F9C0A8F11057CFF5F10059C0BEE -:10410C00001018C6D7C7200CFBF8FFFDAD028FEAD4 -:10411C00FBF0F9E9FBF303FDD44E13BC048FECFB6D -:10412C00F0F9EBFBF303FDD44E13BC028FEEFBF066 -:10413C00F9EDFBF303FDD44E13BB717AFAAC04BD5D -:10414C00D8F6BDDAAC04311EBDDCF6BDDEFDEC0DDF -:10415C00ADD8BDDCADDABDDEAC02BDD8F6BDDAAC97 -:10416C0002311EDADCC3DADEC3BDDCF6BDDEFDECEB -:10417C000DC0BDDEC0BDDCADDEFD620FADD8BDDC5B -:10418C00ADDABDDEABBDD8F6BDDAAB311EDADCC3C1 -:10419C00DADEC3BDDCF6BDDEFDEC0DC0BDDEC0BDA0 -:1041AC00DCADDEFD620FDADAADD8FDE044C3C58DBF -:1041BC00885C3FF0317E0440FC14C2C0B9A488F680 -:1041CC00BC08BC0A9C078C074C2EDD3D8D880E0765 -:1041DC0070F161DC605C3FF0317E127940FCBDD83F -:1041EC00F6BDDA8C0773095C22318FBDDC70BDDE45 -:1041FC00FDEC0DAC08BDDCAC0AFD620FADDABC0AFF -:10420C00ADD8BC08615907EFBDAC08BDD8AC0ABD30 -:10421C00DAC9DC0004F6FDB60EC9DCFFFFF6FDB70B -:10422C000FADD8BD82AF3AFC4682DD11AF3CFCBF6E -:10423C003EFCAF3AFCBF3CFCAD82BF3AFCAF3CFC51 -:10424C00423EFCDC46AF3AFC423CFCDE3EAD264234 -:10425C003AFCDE374A2A16DC1A4A2AA0DE138D8471 -:10426C004B2ADE0DAF3AFC268644691061C8FDC9A5 -:10427C0042F42AAF3AFC445146DC0AAF3AFC241013 -:10428C0027BD28EF0DC928F82AEF074A2AFF61E855 -:10429C00A42AAF3EFC423CFCDC18AF3CFC423AFC8E -:1042AC00DE10AF3AFC4628DE09F484AF3AFCBD863A -:1042BC00EF074A84FF61E8A484100CC6D7C7FDAD94 -:1042CC0002710A9E31929E02EFFA8E949F34FC8EFC -:1042DC00969F35FC8E979F36FC8E989F37FC8E935D -:1042EC009F38FC8E929F39FC710B9E717AFA8F3736 -:1042FC00FCFDCB0F76FD5E4413BD80D5EFFBDF0AD2 -:10430C00D5F0FBDF05D5F1FBDD25F6B14680DF11DD -:10431C00C9803722665C0391DF060A80181A810077 -:10432C009617FD814513FDA14331749502EF61523F -:10433C000692926934FC682EFCDFF6AD80BD7EF8E7 -:10434C007CF3311C790AF944FEFFDD44D87CF10181 -:10435C00040AF914A944FFFFDF04E6B9EF0BD87C7B -:10436C00F101040AF914A9A1B9FDAD02A0EFFBD526 -:10437C00EFFBDF1CA0F0FBD5F0FBDF14A0F1FBD5AD -:10438C00F1FBDF0CCFEFFBFFCFF0FBFFCFF1FBFF1F -:10439C00C6717AFAD7C716D87CF10744A800DC0599 -:1043AC00717295EF1CF647DD18A47C4A7CA8DC05DD -:1043BC00717295EF0CF87CF3311CF6780AF9B7EFB3 -:1043CC00E4C6D7C756A89666F0317E12F6B1780AC5 -:1043DC00F966D1DFF1FDAD02F5EFFBF5F0FBF5F180 -:1043EC00FBF47C717395C6717AFAD7C72004FBF87D -:1043FC00FFD446DF168D7C9D89FDAD02520692924C -:10440C00692EFC68C0FCDFF6717AFA4A4606DE0EAD -:10441C00E84609C0FC9C03A4468C0372EF30F88973 -:10442C00F3311C790AF9BB310296058B9C03EF0F13 -:10443C008C019C03D489DF05CD89A7EF02B4897167 -:10444C008071079661DC61FB7101968C037210041C -:10445C00C6D7C72008FBF8FF8F37FCFDCB0F9C0796 -:10446C008F36FCFDCB0F9C068F35FCFDCB0F9C05CE -:10447C008F34FCFDCB0F9C048F38FC9C038F39FCD4 -:10448C009C028C06318E0112791A20BB8C075C03BE -:10449C00D1DF098C064C0361C86179008C05318E23 -:1044AC00B1610900BB313D120103BB8B0E04708C52 -:1044BC00011C00BB8FF4FB4E03DC0E8C034FF4FB92 -:1044CC00DC0B8C024FF5FBDC04AB12EF03ABB1122F -:1044DC001008C6D7C7C3C12008FBF8FFF661490A0C -:1044EC0061F8614908DF07F7340000ED7D45E6BC53 -:1044FC0004F6BC06AC0ABC02AC08BBAC06614902B3 -:10450C00AC0461F8614900DE28AC04BDD8AC06BD32 -:10451C00DAE1FD710FADDABC06ADD8BC04ABBDD889 -:10452C00AC02BDDAE1FD8C0FADDABC02ADD8BBEF4D -:10453C00CAAC06BC02AC04BBAC08BDD8AC0ABDDA34 -:10454C00AC04BDDCAC06FDEF0EAC04BDDCAC06FD72 -:10455C00620FE1FD8C0FADDABC06ADD8BC04AC0625 -:10456C00614902AC0461F8614900DCC5AC0214ABD2 -:10457C0012100CC6D7C7C12004FBF8FF8F31FCFD0D -:10458C00CB0F9C034E04DF1CAD7E4680DE07AD8056 -:10459C00267E12EF40F64680DF07467EDD03E7EF0E -:1045AC0034F7EF318C04318EB1128C03318E43DF32 -:1045BC0018303822267E0680BB8C045C0391DF0504 -:1045CC00AB041800BBAB12EF0C8C034E04DE0532AF -:1045DC00A900EF01F71006C6D7FDAD023112960BFC -:1045EC00F6468CDD06B68C717AFAD7711396717A11 -:1045FC00FA4004F904DF06715307F42CD7D9CFFB2A -:10460C00F1E7240000DD0F23DD1823DD0F23DD4C43 -:10461C0023DD2423DD33715307F42CD7715207F4B7 -:10462C002CD7D42CDF07715207E42CEF05715307FC -:10463C00F42CC98CFA00D7D42CDF0A715207E42C65 -:10464C00C98CFA00D7F5CFFBD7D42CDF0A715307EE -:10465C00E42CC98CFA00D7CFCFFB02D7FD6C46D720 -:10466C00D905FCF1E7240000DD0923DD2123DD0958 -:10467C0023EF1B715307F42CD7D42CDF077152078F -:10468C00E42CEF05715307F42CC98C2D01D7715212 -:10469C0007E42CD731529301D7717393D9CDFBF129 -:1046AC00E7240000DD1223DD1923DD1123DD262391 -:1046BC00DD3423DD3923DD3FFD2C47EF3DFD4D4738 -:1046CC00EF38D9CCFBC1AE6CFDC32CC0F313BE6C60 -:1046DC00712304EF25F0C1AE6CFDC32CC0F313BEE7 -:1046EC006C712304EF14F6BE6C712204EF0CCB6CCE -:1046FC00FF00712304EF03FDC1474004F905DD06FB -:10470C004004F901DF067123047173933174930F24 -:10471C00F6BE64BE6A31220402EF02F690BE6ED77A -:10472C00CD2E47F48EAE6C317DBFCAFCFD9647D2C0 -:10473C00DF0ED9CCFBC1AE6CFDC32CC0F313BE6C29 -:10474C00D7FD9647D2DD0DCD2E47F48EAE6C317D64 -:10475C00BFCAFCD7E88E0934205080D6BFC6FC22D5 -:10476C00CAFCBDD8304700FD170EBFC8FC30C6FCD4 -:10477C00FDD92CF313BE6CB42ED42EDF0CCD2E47EA -:10478C00A48E4A8E1F61C8F48ED740AFFB0BDC059C -:10479C00712304F2D740AFFB0661D831229211F09D -:1047AC00C1AE6CFDC32CC0F313BE6C712204EF03BD -:1047BC00FDC147E2D7717293F0C1AE6CFDC32CC042 -:1047CC00F313BE6CA48F4A8F40DC37F48FD890F172 -:1047DC00313F0412FD14D890F1BDD85008FD660E7F -:1047EC00087208E6D2DD040192DFFC896158D1DD44 -:1047FC0005712204EF03712304A4904A902061C830 -:10480C00F490D7C73026FDC6D77180717DFADE03D0 -:06481C005201D75200D743 -:1048220061FC61FCC1C3C5C7520C929269D4FEC13E -:10483200DFF88EFD708EFCC1717AFA4004F903DF55 -:104842000530E1296194C09EFC609EFD34D4FE5285 -:1048520006C0B9A5A592DFF9C6C4C2C061FC61DF7A -:10486200520C929269D4FEC1DFF88EFD708EFCC1AB -:104872008F4105775C04D1DD06675C01D1DD5031E3 -:104882004494367162077143948FB4FB5FBCFBD1D1 -:10489200DF1B8FB5FB5FBDFBD1DF128FB6FB5FBEA7 -:1048A200FBD1DF098FB7FB5FBFFBD1DD0C316207A4 -:1048B20002EFFA716307716B27710396FDAD2FF456 -:1048C200227148500571605005717AFAEDBC496752 -:1048D2005C02D1DD16D422DD124A2202DD0DF42261 -:1048E2007148500571605005717AFA717AFA8D2219 -:1048F200318FE7240000DD0823DD1423DD2CEF4A8D -:10490200F4467140500571505005E422EDBC498FC8 -:1049120040059D47715050058D479D49D847FD611F -:1049220033629D48CD2202EDBC49675C02D1DD179E -:10493200675C10D1DD05CD2203EF0F714850057180 -:10494200605005F422EF73CD22044A2203DF108D5A -:10495200489F4005D848C1D847FDED33C0EF1F8FAF -:10496200400576717447DC054A4702DE06716050E5 -:1049720005EF47C7D847FD2E30C071505005D849C2 -:10498200F1242900DD27240400DD22242200DD1D7C -:10499200241100DD0C240100DD13241E00DD0EEFC6 -:1049A2000A4A4760DF07CD4761EF02A4474A220364 -:1049B200DF08D847FD6133629D48C09EFC609EFDC2 -:1049C20034D4FE5206C0B9A5A592DFF961FCC1C379 -:1049D200C5C7520C929269D4FEC1DFF88EFD708E6B -:1049E200FCC1717AFA51405F0401D1DD06F616A7C7 -:1049F20047DFF2300400BF2401F6BF2A01300B0B5F -:104A0200BF2801FDB502300B0FBF2801FDB50230F2 -:104A12000F0FBF2801710AE6F6420C01DD33AF0425 -:104A220001BF0C0131429329714293710BE2D84DBF -:104A3200FD27043184BD02EFFACBB422FBD84FF13B -:104A4200BEB8714BE1714BE5710ABD8D4E9E44EFCC -:104A52000C714393714AE5717BBD712393C09EFC37 -:104A6200609EFD34D4FE5206C0B9A5A592DFF9C6F8 -:104A7200C4C2C061FCC1C5717AFAD44CDD0BEA4AEA -:104A8200899E44A64AB44CEF33710AE6300400BF53 -:104A92002401F6BF2A01300B0BBF280100000000E1 -:104AA20000000000510FBF280100000000000000BC -:104AB20000500FBF2801711393712393C4C061FC8E -:104AC20061EF520C929269D4FEC1DFF88EFD708EB6 -:104AD200FCC12006FBF8FF71503002CEABACCC0417 -:104AE20000F6BB31B2E210617900F6614900DFF3F2 -:104AF20071603002ED7C4B8E519C03713BE28C0362 -:104B02005C02D1DD1E8C035C08D1DF0971503002DA -:104B1200CC0400EFCC8C0570FDCF34629E50CC04E7 -:104B220002EFBE8C035C03D1DF408E509C027150B9 -:104B320030028C04D1DF0E8C0270FD1535629C05AB -:104B4200CC0401EF328C044C02DF0671603002EFBC -:104B520029CF34025A716030028C0270C18C057008 -:104B6200FD7734C0CF34024AEF108C035C01D1DDF3 -:104B72000671603002EF03EDE34A1006C09EFC604E -:104B82009EFD34D4FE5206C0B9A5A592DFF961FCA0 -:104B9200C1C3C5C7520C929269D4FEC1DFF88EFD23 -:104BA200708EFCC1710A9E31929E02EFFA8FDEFB7B -:104BB2004F96FFDF198FDFFB4F97FFDF118FE0FB6F -:104BC2004F98FFDF095004C15011FD1B34C0710B17 -:104BD2009EC09EFC609EFD34D4FE5206C0B9A5A5BF -:104BE20092DFF9C6C4C2C061FCA46661FCC1C3C540 -:104BF200C7520C929269D4FEC1DFF88EFD708EFC12 -:104C0200C1C1FBF8FF8D1F9C018E31318EE7240656 -:104C120000DD0823DD0E23DD22EF38717AFA8C01E4 -:104C22009D5EEF2F717AFA4007F901DF068C019D34 -:104C32005DEF2051FF2E019D5DEF18717AFA8C0114 -:104C42009D304004F903DD064004F904DF053063BA -:104C52002561944031FF09DE05A031FFEF0771584D -:104C6200F000715294710BE3C0C09EFC609EFD3453 -:104C7200D4FE5206C0B9A5A592DFF9C6C4C2C0616E -:104C8200FCC7FDAD02D46661F83114952771139506 -:104C9200D466DD05B466CEABAC717AFA5600664CCA -:104CA2000ADD1172F3311C79D8FCCEFC0061CA61B5 -:104CB200A486EFEA717AFAF2C6D7C7C1C1FBF8FF40 -:104CC200CC01008C014C0ADE36FDAD028C01F031C4 -:104CD2007E0410FC14A96168DF09AC02B9717AFA8A -:104CE200F2EF1D8C01F0317E127910FC614902DF76 -:104CF20006717AFAE2EF09717AFA615901EFC4E2B8 -:104D02001004C6D7C72004FBF8FFF64210FC61F876 -:104D1200EDE94DFDAD02CC03008C034C0ADE3C8C68 -:104D220003F0317E0410FC14A96168DF05717AFA80 -:104D3200EF29717AFA8C0372F3311C7910FCCEFCE4 -:104D42000061CA629C02D1DF0A8C03F0317E12E656 -:104D52007810FCFDAD02615903EFBECC0200CC011C -:104D6200018C02F0317E0410FC14A96168DD788C9C -:104D720002F0317E127910FCE743DF658C014C0AA8 -:104D8200DE5F8C01F0317E127910FCE743DD4DFDD0 -:104D9200AD028C01F0317E0410FC14A96168DF18A9 -:104DA2006169018C01F0317E12F67810FC8C024EA2 -:104DB20001DCED717AFAEF2F8C01F0317E0410FCE8 -:104DC20014A9128C02F0317E337810FC8C01F03180 -:104DD2007E12E67810FC615902717AFA615901EF8C -:104DE2009B615902ED634D00F21004C6D761FF5278 -:104DF2000C929269D4FEC1DFF88EFD708EFCC171F7 -:104E02007AFA8FE4FB5C03D1DD184004F903DD0676 -:104E12004004F904DF0C36100571D4DE0530DB37AF -:104E22006194C09EFC609EFD34D4FE5206C0B9A5BA -:104E3200A592DFF961FC61FC61FC61FC61FC61FC33 -:104E420061FC61FC61FC61FC61FC61FC61FC61FC78 -:104E520061FC61FC61FC61FC61FC61FC61FC61FC68 -:0E4E620061FC61FC61FC61FC61FC61FC61FCB7 -:0A4E700000060C12181E242A30362A -:104E7A00ACFB0000000062FE000000003B39623516 -:104E8A008C22A0469A2D492EE545613AFB08483CFA -:104E9A0028FC36FE20FE02F903F929FC30FE2AFC22 -:104EAA002BFC08F926FC6CFF1AFF6EFF6AFF64FFF1 -:0A4EBA0027FC66FF2CFC55555555EA -:104EC400FF0000000000983AF82AFF0000004700A5 -:104ED400317503F7332312D714AEF8C716AC061294 -:104EE400C5AC0416F643DD078B99A7A5B3EFF5C24D -:024EF400C6D71F -:024FF400323851 -:0A4FF60031343A32363A3537000004 -:00000001FF - \ No newline at end of file diff --git a/tags/2.08/bsr.lmf b/tags/2.08/bsr.lmf deleted file mode 100644 index 3da17513941938fcb38b50a988a7a83680ce3e89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 181384 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 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.08/fsl_user.h b/tags/2.08/fsl_user.h deleted file mode 100644 index 1018689..0000000 --- a/tags/2.08/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.08/hal.c b/tags/2.08/hal.c deleted file mode 100644 index e321719..0000000 --- a/tags/2.08/hal.c +++ /dev/null @@ -1,177 +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.08/hal.h b/tags/2.08/hal.h deleted file mode 100644 index 245be75..0000000 --- a/tags/2.08/hal.h +++ /dev/null @@ -1,16 +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.08/hoge.bin b/tags/2.08/hoge.bin deleted file mode 100644 index 2adf190b7abf84c71e23308b4312c212852532e4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16387 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 diff --git a/tags/2.08/i2c_ctr.c b/tags/2.08/i2c_ctr.c deleted file mode 100644 index f37a4f9..0000000 --- a/tags/2.08/i2c_ctr.c +++ /dev/null @@ -1,297 +0,0 @@ -/* ======================================================== - SoC VK`l I2CʐM - cJZ.nintendo - '09 Apr - ======================================================== */ - -#include "config.h" - -// TS̓}U{ŃeRAWM͉H}eRŌLjvc - -#ifndef _WIN32 -#pragma interrupt INTIICA1 int_iic_ctr RB1 -#endif - - -#include "incs.h" - -#ifdef _MCU_BSR_ -// #ifdef _MODEL_TS0_ || _MODEL_WM0_ - -// [LOfI2Ct -// TEG͉H}ŃeR -#define ACKD ACKD1 -#define ACKE ACKE1 -#define COI COI1 -#define IICAEN IICA1EN -#define IICRSV IICRSV1 -#define IICA IICA1 -#define IICAIF IICAIF1 -#define IICAMK IICAMK1 -#define IICAPR0 IICAPR11 -#define IICAPR1 IICAPR01 -#define IICCTL0 IICCTL10 -#define IICE IICE1 -#define IICF IICF1 -#define IICS IICS1 -#define IICWH IICWH1 -#define IICWL IICWL1 -#define LREL LREL1 -#define SPD SPD1 -#define SPIE SPIE1 -#define STCEN STCEN1 -#define STD STD1 -#define SVA SVA1 -#define WREL WREL1 -#define WTIM WTIM1 -#define TRC TRC1 -#define SMC SMC1 -#define DFC DFC1 - -#endif - - - -// ============================================== -enum en_IIC_STATE -{ - IIC_IDLE = 0, - IIC_RCV_REG_ADRS, - IIC_TX_OR_RX, - IIC_TX, - IIC_RX -}; - - - -// ============================================== -extern bit irq_readed; // ꂩIRQWX^ǂ܂ꂽ - -u8 iic_burst_state; -static enum en_IIC_STATE state = IIC_IDLE; - -#define bit_iics_spd (i2c_stat & (1<<0)) -#define bit_iics_std (i2c_stat & (1<<1)) -#define bit_iics_ackd (i2c_stat & (1<<2)) -#define bit_iics_trc (i2c_stat & (1<<3)) -#define bit_iics_coi (i2c_stat & (1<<4)) - -// ============================================== -__interrupt void int_iic_ctr( ) -{ - static u8 reg_adrs; - static u8 tx_buf; - u8 rx_buf; - static u8 adrs_access_from; // o[XgANZX̎Ɏg - - u8 i2c_stat = IICS1; // volatilê - - // ǂݏoI - if( !bit_iics_ackd // 荞ݗvNAKif[^M̍Ōj - || bit_iics_spd ) // XgbvRfBV(!ACKD ɗƂ͊荞ݗȂ (SPIE = 0)) - { - /* - I2C̔xẴtOOSTDĂ܂Ƃ - ǁAȂ삷‚ - */ - - // WX^[hŁA荞݃slQ[g - // ܂ǂ܂ĂȂ荞݂΁AēxAT[g - if( irq_readed ) - { - IRQ0_neg; - irq_readed = false; - if( !( (( vreg_ctr[VREG_C_IRQ0] & vreg_ctr[VREG_C_IRQ_MASK0 ] ) == 0 ) - && (( vreg_ctr[VREG_C_IRQ1] & vreg_ctr[VREG_C_IRQ_MASK1 ] ) == 0 ) - && (( vreg_ctr[VREG_C_IRQ2] & vreg_ctr[VREG_C_IRQ_MASK2 ] ) == 0 ) - && (( vreg_ctr[VREG_C_IRQ3] & vreg_ctr[VREG_C_IRQ_MASK3 ] ) == 0 ) )) - { - while( !IRQ0 ){;} // ԉ҂sv - IRQ0_ast; - } - } - - // I2CIɉ镨 // - hosu_read_end( ); // vǂݏoI - rtc_unlock( ); - - state = IIC_IDLE; - SPIE = 0; - LREL = 1; - EI(); - return; - } - - if( bit_iics_std ) // 荞ݗvFX^[gRfBV - { - if( !( state == IIC_IDLE || state == IIC_TX_OR_RX )) - { - // sp/nack 葹˂ -// dbg_nop(); // Ȃ͂... -/* - // pPbg̐擪stƌȂB - // ʂɑs - state = IIC_IDLE; -/*/ - // gCĂ炤 - state = IIC_IDLE; - SPIE = 0; - LREL = 1; - EI(); -//*/ - } - // ʏ - } - - EI(); - - switch ( state ) - { - case ( IIC_IDLE ): - // njĂяoɉB - // Ȃ - iic_burst_state = 0; - SPIE = 1; - WREL = 1; // EFCg - state = IIC_RCV_REG_ADRS; - return; - - case ( IIC_RCV_REG_ADRS ): // QoCgځiWX^AhXjMɗ - // WX^AhXM - reg_adrs = IICA; - - WREL = 1; - adrs_access_from = reg_adrs; - tx_buf = vreg_ctr_read( reg_adrs ); // f[^̏Ă - state = IIC_TX_OR_RX; - return; - - case ( IIC_TX_OR_RX ): // ̎ɗ銄荞݁BSTȂ瑗MAf[^珑܂ - // if( TRC ) // MtO ŋʂ̂́A荞ݒxɕsN肦 - if( bit_iics_std ) - { // X^[gRfBVotO - // [h - if( bit_iics_coi ) - { // AhXvtO - state = IIC_TX; - // no break, no return // - } - else - { - // X^[gňႤfoCXĂ΂ꂽI - SPIE = 0; - LREL = 1; // EFCg? - state = IIC_IDLE; // I - return; - } - } - else - { - state = IIC_RX; // f[^1oCgM̊荞݂ - // no break, no return // - } - /* FALLTHROUGH */ - - default: // o[Xg R/W łĂ΂邱ƂɂȂ - if( state == IIC_TX ) - { // M - IICA = tx_buf; - vreg_ctr_after_read( reg_adrs, tx_buf ); // ǂ񂾂NAȂǂ̏ - } - else - { // M - rx_buf = IICA; - -#ifdef _I2C_ERR_ABORT_ - if( reg_adrs >= 0x80 || reg_adrs <= 1 ) - { - LREL = 1; // Ȃ񂩃f[^̂ŒʐMI nakԂ̂Ȃc - return; - } -#endif - vreg_ctr_write( reg_adrs, rx_buf ); - WREL = 1; - } - - // WX^AhX̃CNg - /// ANZX|C^i߂ȂȃWX^ - switch( adrs_access_from ) - { - case( VREG_C_ACC_HOSU_HIST ): - case( VREG_C_LED_NOTIFY_DATA ): - case( VREG_C_LED_POW ): - case( VREG_CX_INFO ): - case( VREG_CX_FREE_DATA ): - break; - case( VREG_CX_FREE_ADRS ): - if( reg_adrs == VREG_CX_FREE_ADRS ) - { - reg_adrs = VREG_CX_FREE_DATA; - } - break; - default: - reg_adrs ++; - } - - if( state == IIC_TX ) - { // ɂ‚ɑf[^̏VeINBSPĎgȂȂ - tx_buf = vreg_ctr_read( reg_adrs ); - } - break; - } -} - - - -// ======================================================== -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.08/i2c_ctr.h b/tags/2.08/i2c_ctr.h deleted file mode 100644 index 16234ff..0000000 --- a/tags/2.08/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.08/i2c_mcu.c b/tags/2.08/i2c_mcu.c deleted file mode 100644 index 4713123..0000000 --- a/tags/2.08/i2c_mcu.c +++ /dev/null @@ -1,650 +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 i2c_err iic_mcu_send_a_byte( u8 ); -static i2c_err iic_mcu_call_slave( u8 slave ); -extern void DI_wt_chk(); - - - - -// ======================================================== -bit iic_mcu_wo_dma; -volatile bit iic_mcu_busy; -static volatile bit iic_mcu_initialized; - - -static u8 iic_send_work[4]; -static u8 *p_iic_send_wo_dma_dat; -static u8 iic_send_wo_dma_len; - -// f[^G[iROHMxZTjgĈ -/// Ƃ肠ADMAgp}`oCgCg ̎ɂ@\Ȃ -static u8 last_slave, last_reg_adrs, last_size; - -i2c_err iic_mcu_result; // ꕶ[h̎̓f[^ԂB - -#ifdef i2c_timeout_test -extern bit i2c_mcu_time_out_error; -#endif - -// ======================================================== -void nop8() -{ - // ɗ call 3clk, return 6clk -} - - -static i2c_err iic_mcu_wait_free() -{ - u16 tot = 0; - - iic_mcu_start( ); - while( 1 ) - { - DI_wt_chk(); - if( !iic_mcu_busy ) - { - iic_mcu_busy = true; - EI(); - break; - } - EI(); - if( ++tot == 0 ) - { -#ifdef i2c_timeout_test - i2c_mcu_time_out_error = true; -#endif - return( I2C_ERR_TIMEOUT ); - } - } - return( I2C_ERR_OK ); -} - - -/* ======================================================== - X[u w1x [h - Ԓlf[^̂̂łB - ======================================================== */ -u8 iic_mcu_read_a_byte( u8 SLA, u8 adrs ) -{ - u8 dat; - - iic_mcu_result = iic_mcu_read( SLA, adrs, 1, &dat ); - - return ( dat ); -} - - - -/* ======================================================== - X[ũ[h - 0 I - 1 X[uȂ - 2 oXNɐLĂă^CAEg - 3 ӖsG[ - yz - X[uEFCgRfBVoƂ͋֎~łB - ̏ꍇłG[oȂǂł܂ - ======================================================== */ -i2c_err iic_mcu_read( u8 slave, u8 adrs, u8 len, u8 * dest ) -{ - -#if 1 - if( iic_mcu_wait_free() != I2C_ERR_OK ) - { - // (^CAEg) - return( I2C_ERR_TIMEOUT ); - } -#else - // gpȂA -#endif - - // X^[gRfBVƃX[ǔĂяoAWX^AhX̑M - if( iic_mcu_call_slave( slave ) != 0 ) - { - iic_mcu_busy = false; - return ( I2C_ERR_NOSLAVE ); - } - - // WX^AhX̑M - iic_mcu_send_a_byte( adrs ); // I܂ŋAĂȂ - - // ΂NAKAĂȂO - - // f[^M // - iic_mcu_send_re_st( ); // X^[gRfBV - iic_mcu_send_a_byte( slave | 0x01 ); // M܂Ŗ߂Ă܂B - - // f[^M - ST0 = 0x0004; // M[hɐݒς̂ŃWbN~ - SCR02 = RXE0 | 1 << SLC02 | 7 << DLS02; // Mݒ - SS0 = 0x0004; // ʐMҋ@ - - do - { - if( len == 1 ) - { - SOE0 = 0x0000; // ŌNAK - } - IICIF10 = 0; - SIO10 = 0xFF; // _~[f[^ƎMJn - while( IICIF10 == 0 ) - {;} // M҂ - - *dest = SIO10; - dest++; - len--; - } - while( len != 0 ); - - iic_mcu_send_sp( ); - - IICIF10 = 0; - iic_mcu_busy = false; - return ( I2C_ERR_OK ); -} - - - - -/* ======================================================== - X[u wPoCgx Cg - O̓]Î҂āACg܂B - Ԓl@iic_mcu_write@ɓ - ======================================================== */ -i2c_err iic_mcu_write_a_byte( u8 SLA, u8 adrs, u8 dat ) -{ - // P̎DMAƂNȂłƏI点 - if( iic_mcu_wait_free() != I2C_ERR_OK ) - { - return( I2C_ERR_TIMEOUT ); - } - - // X^[gRfBVƃX[ǔĂяo... - IICMK10 = 1; - if( iic_mcu_call_slave( SLA ) != I2C_ERR_OK ) - { - iic_mcu_busy = false; - return( I2C_ERR_NOSLAVE ); - } - iic_mcu_send_a_byte( adrs ); - iic_mcu_send_a_byte( dat ); - iic_mcu_send_sp( ); - iic_mcu_busy = false; - return ( I2C_ERR_OK ); -} - - - -/* ======================================================== - X[uփCg - WX^ adrs 擪ɁA - *str - len܂B - - I2C_ERR_OK I - I2C_ERR_NAK X[uȂ - I2C_ERR_TIMEOUT dCȈŁH^CAEg - // I2C_ERR_ OɎwꂽʐM܂IĂȂ - yz - X[uEFCgRfBVoƂ͋֎~łB - ̏ꍇłG[oȂǂł܂ - DMA1gp܂B - ******************************************************************************/ -i2c_err iic_mcu_write( u8 slave, u8 adrs, u8 len, void * src ) -{ - if( iic_mcu_wait_free() != I2C_ERR_OK ) - { - return( I2C_ERR_TIMEOUT ); - } -#if 0 - // gpȂA -#endif - - // X^[gRfBVƃX[ǔĂяo... - IICMK10 = 1; - IICIF10 = 0; - if( iic_mcu_call_slave( slave ) != I2C_ERR_OK ) - { - iic_mcu_busy = false; - return ( I2C_ERR_NOSLAVE ); - } - - IICIF10 = 0; - if( !iic_mcu_wo_dma ) - { - // DMAgpiʏj// - - // WX^AhX𑗂Af[^̏ - memcpy( iic_send_work, src, 4 ); //obt@Ƃ4oCgpӂĖ߁B - - // gĈ - last_slave = slave; - last_reg_adrs = adrs; - last_size = len; - - // DMAZbg - while( DST1 ) - {;} - - DEN1 = 1; - DSA1 = (u8)( &SIO10 ); - DRA1 = (u16)( &iic_send_work[0] ); - DBC1 = len; - DMC1 = DRS | 8; // RAM -> SFR, 8bit, IRQ, IIC10 - - DMAIF1 = 0; - DMAMK1 = 0; - DST1 = 1; // DEN1 = 12clkȏJ - - SIO10 = adrs; // ςȂI 荞݂DMAX^[g - // c͊荞݃[` - } - else - { - // DMAgpȂ // - - // WX^AhX̑M - IICMK10 = 0; - SIO10 = adrs; - - iic_send_wo_dma_len = len; - p_iic_send_wo_dma_dat = (u8*)src; - // c͊荞݃[` - } - - return ( I2C_ERR_OK ); -} - - - - -/* ======================================================== - DMAP]I荞 - IIC_mcu ̑MR[obN֐̂悤Ȃ - FDMA]IŁAI2C̓]͏IĂ܂ -@ 荞ݒȂǂŁADMA1̏xꍇA - IIC10̊荞݂̏łɁA荞݂𔭐ȂȂ - ꂪ܂B܂A@ɂ܂B - @̂߁ADMAdl̍ق́AŌ̃oCg͑M - tÕ|[OŊmF܂B - ======================================================== */ -__interrupt void int_dma1( ) -{ - static bit in_retry; - - EI(); - - // Ō̃oCg̑M҂ - while( ( SSR02L & TSF0 ) != 0 ) - { - u16 i = 0; - if( ++i == 0 ) // ^CAEgH - { - break; - } - } - - // XgbvRfBVs -// iic_mcu_send_sp(); // ISRŊO̊֐ĂԂ͓̂siėpWX^ҔĵœWJ - { - ST0 = 0x0004; - SOE0 = 0; // M̎͂ƑOɁuvݒ肵ĂB(NACKo) - SO0 = 0x0000 | TAUS_MASK; // SCL - nop8(); //. |ȂBO̊֐Ă -/* - NOP(); NOP(); NOP(); NOP(); - NOP(); NOP(); NOP(); NOP(); -*/ - SO0 = 0x0400 | TAUS_MASK; // SCL - nop8(); -/* - NOP(); NOP(); NOP(); NOP(); - NOP(); NOP(); NOP(); NOP(); -*/ - SO0 = 0x0404 | TAUS_MASK; - } - - IICMK10 = 1; - - // f[^̓r NAK AxgCB - /// 蔲 - if( SIR02 != 0 ) - { - SIR02 = SSR02; - - if( !in_retry ) - { - in_retry = true; - - IICIF10 = 0; - iic_mcu_call_slave( last_slave ); // NAK͍mPA - - while( DST1 ){;} - DRA1 = (u16)( &iic_send_work[0] ); // CNgĂ܂Ă̂ōăZbg - DBC1 = last_size; // fNgĂ܂Ă̂ōăZbg - // ق̐ݒ͑Ô܂ - - DMAIF1 = 0; - DMAMK1 = 0; - DST1 = 1; - - SIO10 = last_reg_adrs; // ςȂI 荞݂DMAX^[g - return; - // ܂@܂ˁI // - } - else - { - // G[xځBmȂ - dbg_nop(); - // ̂܂܏I - } - } - - // I - in_retry = false; - DMAMK1 = 1; - DEN1 = 0; - iic_mcu_busy = false; -} - - - -/* ======================================================== - IIC MCŨoCgo荞 - DMAgp͎gp܂B - @̊荞ݏDMÅ荞݂ɂ΂ȂꍇA - @IIC荞݂̃ZbgԂɍ킸邱Ƃ܂B - ======================================================== */ -__interrupt void int_iic10( ) -{ - EI(); - if( iic_send_wo_dma_len != 0 ) // ܂MĂȂH - { - SIO10 = *p_iic_send_wo_dma_dat; - p_iic_send_wo_dma_dat ++; - iic_send_wo_dma_len --; - return; - // ܂ // - } - - // Ō̃oCgMAXgbvRfBVs - IICMK10 = 1; -// iic_mcu_send_sp(); // ISRŊO̊֐ĂԂ͓̂siėpWX^ҔĵœWJ - { - ST0 = 0x0004; - SOE0 = 0; // M̎͂ƑOɁuvݒ肵ĂB(NACKo) - SO0 = 0x0000 | TAUS_MASK; // clear SCL - NOP(); NOP(); NOP(); NOP(); // NOP8Ăł͂ - NOP(); NOP(); NOP(); NOP(); - SO0 = 0x0400 | TAUS_MASK; // set SCL - NOP(); NOP(); NOP(); NOP(); - NOP(); NOP(); NOP(); NOP(); - SO0 = 0x0404 | TAUS_MASK; // set CSL adn SDA - } - - iic_mcu_wo_dma = false; - iic_mcu_busy = false; -} - - - -/* ======================================================== - X[ǔĂяo -@X[uAhXĂŁAACK̊mFB - ACK@@@@@@@@@@@@@@@@@@ԁF0 -@NACK @XgbvRfBVoB@ԁF1 - ======================================================== */ -static i2c_err iic_mcu_call_slave( u8 slave ) -{ - iic_mcu_send_st( ); - -// SIR02 = SSR02; // NAKG[̃tONA - // todo ÕG[`FbNH - if( iic_mcu_send_a_byte( slave ) != I2C_ERR_OK ) - { - iic_mcu_send_sp( ); - return ( I2C_ERR_NOSLAVE ); // w̃X[uȂ - } - - return ( I2C_ERR_OK ); -} - - - -/* ======================================================== - قƂɂPoCĝ - I܂ŋA܂ - ======================================================== */ -static i2c_err iic_mcu_send_a_byte( u8 dat ) -{ - IICMK10 = 1; - IICIF10 = 0; - SIO10 = dat; - while( IICIF10 == 0 ) - { -// NOP( ); - } // ʐM - - if( SSR02 != 0 ) // 炩G[? - { - SIR02 = SSR02; // G[NA - return( I2C_ERR_NAK ); - } - return( I2C_ERR_OK ); -} - - - -/* ======================================================== - X^[gRfBV𔭍s - \tgEFA - ======================================================== */ -static void iic_mcu_send_st( ) -{ - SO0 &= ~0x0004; // SDA - nop8(); - - SO0 &= ~0x0400; // SCL - SOE0 = 0x0004; // n[h - - SCR02 = TXE0 | 1 << SLC02 | 7 << DLS02; // MAf[^͂WrbgP - SS0 = 0x0004; // ʐMҋ@ -} - - - -/* ======================================================== - X^[gs - ======================================================== */ -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; - - I2C_PU_on(); -// DEN1 = 0; // DST1 = 0 2clḱADSTn==0|[OĂ - - wait_ms( 1 ); // オ̂50usʂ - - SAU0EN = 1; - nop8(); - - SPS0 = 0x0000; // VAjbg̃NbNOB(8M/2)/1 - SMR02 = bSMR0n_FIXEDBIT | bMD0n2; // ȈI2Cɐݒ - SDR02 = 10 << 9; // {[[gݒ 8M/1/(x+1)/2 - - SO0 = 0x0404 | TAUS_MASK; // ŏHH - iic_mcu_wo_dma = false; - - - // oX̃Zbg - { - IICIF10 = 0; - IICMK10 = 1; - - iic_mcu_send_st(); - - SIO10 = 0xFF; - while( IICIF10 == 0 ){;} // ʐM - iic_mcu_send_sp(); - - SIR02 = SSR02; - } - - iic_mcu_busy = false; - iic_mcu_initialized = true; -} - - - -/* ======================================================== - W[̒~ - ēxgƂ͏Kv - ======================================================== */ -void iic_mcu_stop( ) -{ - while( iic_mcu_busy ) - {;} // DMA쒆͂҂ - iic_mcu_send_re_st( ); // SCL,SDALLɂ - I2C_PU_off(); - SAU0EN = 0; - iic_mcu_initialized = false; -} - - - - -/* ======================================================== - R[fbN wPoCgx Cg - iic_mcu_write_a_byte CODECs[NAEh - ======================================================== */ -i2c_err iic_mcu_write_a_byte_codec( u8 adrs, u8 dat ) -{ - static u8 count; - - // P̎DMAƂNȂłƏI点 - if( iic_mcu_wait_free() !=I2C_ERR_OK ) - { - return( I2C_ERR_TIMEOUT ); - } - - // X^[gRfBVƃX[ǔĂяo... - IICMK10 = 1; - if( iic_mcu_call_slave( IIC_SLA_CODEC ) != I2C_ERR_OK ) - { - iic_mcu_busy = false; - return ( I2C_ERR_NOSLAVE ); - } - iic_mcu_send_a_byte( adrs ); - iic_mcu_send_a_byte( dat ); - - // [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 ( I2C_ERR_OK ); -} diff --git a/tags/2.08/i2c_mcu.h b/tags/2.08/i2c_mcu.h deleted file mode 100644 index 16eeba8..0000000 --- a/tags/2.08/i2c_mcu.h +++ /dev/null @@ -1,40 +0,0 @@ -#ifndef __ic2_mcu__ -#define __ic2_mcu__ - - -// ======================================================== -typedef enum{ - I2C_ERR_OK = 0, - I2C_ERR_NAK, - I2C_ERR_NOSLAVE, - I2C_ERR_TIMEOUT, - I2C_ERR_UNDEF = 0xFF -}i2c_err; - - - -// ======================================================== -extern volatile bit iic_mcu_busy; -extern bit iic_mcu_wo_dma; - -extern i2c_err iic_mcu_result; - - -// ======================================================== -i2c_err iic_mcu_read( u8 SLA, u8 adrs, u8 len, u8 * dest ); -u8 iic_mcu_read_a_byte( u8 SLA, u8 adrs ); - -i2c_err iic_mcu_write( u8 SLA, u8 adrs, u8 len, void * src ); -i2c_err iic_mcu_write_a_byte( u8 SLA, u8 adrs, u8 dat ); - -i2c_err iic_mcu_write_a_byte_codec( u8 adrs, u8 dat ); // codecoO@\t - - -// ̒ʐM܂B -#define iic_mcu_set_wo_dma() { while( iic_mcu_busy ){;} iic_mcu_wo_dma = true; } - -void iic_mcu_start( ); -void iic_mcu_stop( ); - - -#endif diff --git a/tags/2.08/i2c_twl.c b/tags/2.08/i2c_twl.c deleted file mode 100644 index 48c1447..0000000 --- a/tags/2.08/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.08/i2c_twl.h b/tags/2.08/i2c_twl.h deleted file mode 100644 index 0f608b0..0000000 --- a/tags/2.08/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.08/i2c_twl_defs.h b/tags/2.08/i2c_twl_defs.h deleted file mode 100644 index be5d566..0000000 --- a/tags/2.08/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.08/incs.h b/tags/2.08/incs.h deleted file mode 100644 index cd33a79..0000000 --- a/tags/2.08/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.08/incs_loader.h b/tags/2.08/incs_loader.h deleted file mode 100644 index 4bb13b5..0000000 --- a/tags/2.08/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.08/ini_VECT.c b/tags/2.08/ini_VECT.c deleted file mode 100644 index 10ea9ea..0000000 --- a/tags/2.08/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.08/jhl_defs.h b/tags/2.08/jhl_defs.h deleted file mode 100644 index b0b36c6..0000000 --- a/tags/2.08/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.08/led.c b/tags/2.08/led.c deleted file mode 100644 index 9dc9cc0..0000000 --- a/tags/2.08/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.08/led.h b/tags/2.08/led.h deleted file mode 100644 index ce8541f..0000000 --- a/tags/2.08/led.h +++ /dev/null @@ -1,142 +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 bit ledInitialized; -extern bit info_led_override; - - -#endif diff --git a/tags/2.08/led_cam.c b/tags/2.08/led_cam.c deleted file mode 100644 index 80224a7..0000000 --- a/tags/2.08/led_cam.c +++ /dev/null @@ -1,151 +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(); -extern void DI_wt_chk(); - - - - -// ======================================================== -// C^[os^XNƁAtwlWX^ւ݂̏̂QJ -// Ă΂܂B -void tsk_led_cam( ) -{ - DI_wt_chk(); // WX^ւ݂̏ŋN邱Ƃ邽 - if( !cam_led_update ) - { - if( task_interval != 0 ) - { - task_interval --; - EI(); - return; - } - } - - cam_led_update = false; // TWL ̃uNݒiꔭ_ĵ - EI(); - - if( system_status.pwr_state == SLEEP ) // sleepA - { - LED_CAM = 0; - state_led_cam = 0; - } - else - { - // uN̂悤ɑ҂ƂȊO͖TN - // (WX^̕ύXɂɔ) - switch ( vreg_ctr[VREG_C_LED_CAM] ) - { - case ( CAM_LED_OFF ): - default: - LED_CAM = 0; - state_led_cam = 0; - break; - - case ( CAM_LED_ON ): - LED_CAM = 1; - state_led_cam = 0; - break; - - case ( CAM_LED_BLINK ): - if( state_led_cam == 0 ) - { - LED_CAM = 1; - state_led_cam = 1; - } - else - { - LED_CAM = 0; - state_led_cam = 0; - } - task_interval = 250; - break; - - case ( CAM_LED_ON_PLUSE ): - if( state_led_cam == 0 ) - { - LED_CAM = 1; - state_led_cam = 1; - task_interval = 250; - } - else - { - vreg_ctr[VREG_C_LED_CAM] = CAM_LED_OFF; - } - break; - - case ( CAM_LED_OFF_PLUSE ): - if( state_led_cam == 0 ) - { - LED_CAM = 0; - state_led_cam = 1; - task_interval = 250; - } - else - { - vreg_ctr[VREG_C_LED_CAM] = CAM_LED_ON; - } - break; - - case( CAM_LED_BY_TWL ): - cam_led_twl(); - } - } // if( system_status.pwr_state == sleep ) ... else ... -} - - - -static void cam_led_twl() -{ - // TWL݊ // - switch ( vreg_twl[ REG_TWL_INT_ADRS_CAM ] ){ - case( TWL_CAMLED_OFF ): - LED_CAM = 0; - state_led_cam = 0; - break; - - case( TWL_CAMLED_BLINK ): - if( state_led_cam == 0 ) - { - LED_CAM = 1; - state_led_cam = 1; - } - else - { - LED_CAM = 0; - state_led_cam = 0; - } - task_interval = (u8)( 600 / SYS_INTERVAL_TICK ) + 250; - break; - - case( TWL_CAMLED_ON ): - case( TWL_CAMLED_DEF_ON ): - default: - LED_CAM = 1; - state_led_cam = 1; - break; - } -} diff --git a/tags/2.08/led_pow.c b/tags/2.08/led_pow.c deleted file mode 100644 index 5906ee8..0000000 --- a/tags/2.08/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.08/loader.c b/tags/2.08/loader.c deleted file mode 100644 index b6b5f72..0000000 --- a/tags/2.08/loader.c +++ /dev/null @@ -1,381 +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; - } -/* LVIgp - else if(( my_resf & REG_BIT_RESF_LVI ) != 0 ) - { - vreg_ctr[ VREG_C_MCU_STATUS ] |= ( 1 << 2 ); - } -*/ - } -//* ROMǂɂȂȂA]̏RgAEg - if( !system_status.reboot ) - { - // ʏ̓d - // drڑAƑ҂Ă݂(`^O΍) - u16 pwup_delay0; - for( pwup_delay0 = 0xFFFF; pwup_delay0 != 0; pwup_delay0 -- ){;}; - } -//*/ - hdwinit2( ); - -#ifndef _WIN32 - // t@[̐`FbN // - chk_firm_broke(); // ĂAĂȂ -#endif - - // 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^ */ - NOP();NOP();NOP(); // 3clkJ - CKC = bits8(0,0,0,0, 1,0,0,0); /* CPU/ӃNbN=fMAINAfMAIN=fMXAfCLK=fMX */ - - /*--- doH̐ݒ ---*/ - /* Zbg̃ftHǵAIvVEoCgɂĎw肳 */ - LVIS = 0x00; /* VLVI = 4.22}0.1V */ -// LVIM = 0x00; /* LVI֎~ */ - /* dd(VDD)od(VLVI)Ɋ */ - /* dd(VDD)od tempA[0][1], "offset" => tempA[0][2], "type" => tempA[0][3], "data" => tempA[0][4], "CRC" => tempA[0][5] } - - break if src_in["type"].hex == 01 - break if src_in["len"].hex == 00 - # next if src_in["type"].hex != 00 - if( src_in["type"].hex != 00 ) -# p dat - next - end - - offset = src_in["offset"].hex - next if(( 0x1000 <= offset ) && ( offset < 0x2000 )) - - dataTemp = src_in["data"].scan(/\w\w/) - - ( 0...(src_in["len"].to_s.hex) ).each{|i| - bindata[ offset + i ] = ( dataTemp[ i ] ).to_s.hex - } -end - -### debug enable bit check ############# -# fobO‚ɂȂĂISfobKŋNȂiMCU삵Ȃj -p bindata[0xC3] -if( bindata[0xC3] != 0x04 ) - print( "!E debug enable!!" ) - exit( 1 ) -end - - -### format data and output ############# -4096.times{ - bindata.delete_at(4096) -} -dest.write( bindata[0..(0x4FFF - 0x1000)].pack("c*") ) -dest.close - -printf( "intel-HEX to bsr bin converter\n file converted!\n\n" ) diff --git a/tags/2.08/pedo_alg_thre_det2.c b/tags/2.08/pedo_alg_thre_det2.c deleted file mode 100644 index a7a13e2..0000000 --- a/tags/2.08/pedo_alg_thre_det2.c +++ /dev/null @@ -1,575 +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 ); -extern void DI_wt_chk(); - - - -// ======================================================== -bit pedolog_overflow; // 192ԋL^ς݃tO(i2cœǂ߂) -extern uni_pool pool; // O͂̍\̂̒ -static u8 p_record; // Ȍ݈ʒu -static st_calender cal_log_latest; // ŌɕXV -static u16 last_hour_fny; // fny:from new year -static st_calender cal_temp; -static u16 now_longhour; - - - - - - -// ======================================================== -#define _use_my_sqrt_ -#ifdef _use_my_sqrt_ -static unsigned long my_sqrt( unsigned long ); -#endif - -// N͉[NH -#define is_leapyear( y ) (( y & 0x03 ) == 0 ) -// uNv͉[NH -#define is_firstyear( y ) (( y & 0x03 ) == 1 ) - - -// xZTlFIR-LPFɒʂB̌W -extern const s8 lpf_coeff[]; -#define TAP 64 -#define FIL_COEFF_QUANT 10 - - - -/*========================================================= -@v - ========================================================*/ -void pedometer() -{ - static s16 th_H = 15000; // 臒lBIύX܂ - static s16 th_L = 11000; - static u16 acc_norm[3]; // x̑傫̃qXgB傫 - static u16 acc_norm_temp; - static u8 interval_hh = 0xFF; // R-RԂ̎ԁBZ߂͂B - static u8 time_l; // Őɏ̌oߎ - static u16 peak_l; // J̐[ - static u16 norm_hist[TAP]; - - static u8 hist_indx; - - signed long filterd; - - u8 i; - - u16 sx16,sy16,sz16; - - DI_wt_chk(); - sx16 = abs( (u16)vreg_ctr[VREG_C_ACC_XH] * 256 + vreg_ctr[VREG_C_ACC_XL] ); - sy16 = abs( (u16)vreg_ctr[VREG_C_ACC_YH] * 256 + vreg_ctr[VREG_C_ACC_YL] ); - sz16 = abs( (u16)vreg_ctr[VREG_C_ACC_ZH] * 256 + vreg_ctr[VREG_C_ACC_ZL] ); - EI(); - - // xNg̃m -#ifdef _mcu_ -# ifndef _use_my_sqrt_ - norm_hist[ hist_indx & TAP-1 ] = sqrt( (long)sx16 * ( sx16 / 2 ) + - (long)sy16 * ( sy16 / 2 ) + - (long)sz16 * ( sz16 / 2 ) - ); -# else - norm_hist[ hist_indx & TAP-1 ] = my_sqrt( (long)sx16 * ( sx16 / 2 ) + - (long)sy16 * ( sy16 / 2 ) + - (long)sz16 * ( sz16 / 2 ) - ); -# endif -#endif - -#ifdef _pc_ - norm_hist[ hist_indx & TAP-1 ] = normh * 256 + norml; -#endif - - hist_indx ++; - - // qXgɃtB^(fir)|āA̒l߂ // - filterd = 0; -// for( i = 8; i != 55; i++ ) // WO΂̂ - for( i = 0; i != 46; i++ ) // We[u܂Bp[^ - { - filterd += (signed long)norm_hist[ ( hist_indx + i ) & TAP-1 ] * lpf_coeff[ i ]; - } - - filterd += (4096)*512; // DCZ...Ǝv - acc_norm_temp = (s16)( filterd /1024 & 0xFFFF ); // FIL_COEFF_QUANT琳K -/* - if( acc_norm[0] < acc_norm_temp ) - { - t_rise ++; - if( t_rise == 0 ) - t_rise == 254; - } - else - { - t_rise = 0; - } -*/ - if( acc_norm[0] != acc_norm_temp ) - { - acc_norm[2] = acc_norm[1]; // qXg - acc_norm[1] = acc_norm[0]; - acc_norm[0] = acc_norm_temp; - } - - if( acc_norm[2] <= acc_norm[1] && acc_norm[1] > acc_norm[0] - && acc_norm[0] > th_H ) - // ɑŁA臒l𒴂Ă - { - if( 21 < interval_hh ) - // Őɑ傩̊Ԋuقǂ悢 - { - if(( interval_hh < 160 ) && ( time_l < interval_hh )) - // Jł - { - if( acc_norm[0] - peak_l > 4200 ){ - // ܂ - hosu_increment_if_necessary(); - } - } - interval_hh = 0; - } - // Ȃ񂿂臒l̓IύX - if( acc_norm[0] > 18000 ) - { - th_L = acc_norm[0] - 10000; - } - else - { - th_L = 11000; - } - } - else - { - if( interval_hh != 255 ) // OaZĊyɏ炢̂ - { - interval_hh ++; - } - } - - // (2) ߂̋ɏ̎ - if( acc_norm[2] >= acc_norm[1] && acc_norm[1] < acc_norm[0] - && acc_norm[0] < th_L ) - { - // ɏo - time_l = 0; - peak_l = acc_norm[0]; - } - else - { - if( time_l != 255 ) - { - time_l ++; - } - } -} - - -/*========================================================= -@{P -@@ݐςCNg - @XV - *2011/01/20 - dlύX@OςɂȂ炻Ŏ~߂ - ========================================================*/ - - -#define HOSU_NODATA 0xFFFF -#define HOSU_MAX 0xFFFE - -void hosu_increment_if_necessary() -{ - u8 year_compd; // hourE␳ς݌ݔNBcomp(ensation -ed) - - // ݎ擾 - DI_wt_chk(); - RWAIT = 1; - while( !RWST ){;} - - cal_temp.hour_bcd = HOUR; - cal_temp.day_bcd = DAY; - cal_temp.month_bcd = MONTH; - cal_temp.year_bcd = YEAR; - cal_temp.min_bcd = MIN; - cal_temp.sec_bcd = SEC; - - RWAIT = 0; - EI(); - - year_compd = bcdtob( cal_temp.year_bcd ); - - now_longhour = get_long_hour(); - - // ݃|C^̍XV - if( ! ( vreg_ctr[ VREG_C_ACC_HOSU_L ] == 0 && // vonAŏ̈܂ł͑O񂩂̌oߎԂvZȂ - vreg_ctr[ VREG_C_ACC_HOSU_M ] == 0 && - vreg_ctr[ VREG_C_ACC_HOSU_H ] == 0 )) //. SrbgORŃ[肷̂̓fW^H݂̕ - { - // v~܂ĂԂlĕKvȂi߂ - // ␳vZ@U뎞ōɂȂꍇAA23ɏ㏑ - if( now_longhour == (u16)-1 ) // NA23䈵̂ƂAvZʂ -1 ɂȂĂ - { - now_longhour = 365 * 24 -1; - if( is_firstyear(year_compd) ) - { - now_longhour += 24; - } - year_compd --; - } - fill_hosu_hist_hours( calc_hours_spend( year_compd ) ); // ݃|C^̍XVs - - // OӂŋL^~H - if( pedolog_overflow ) - { - return; - // ܂BO̍XVȂB - } - } - - // CNgėǂ - cal_log_latest = cal_temp; // OXV - last_hour_fny = now_longhour; - - // O@CNg - if( pool.vreg_c_ext.pedo_log[ p_record ] == HOSU_MAX ) - { - // Ȃł܂ - //. v̍vƗ݌vȂȂ̂邽߂낤ǁAǂȂ́H - return; - } - else if( pool.vreg_c_ext.pedo_log[ p_record ] == HOSU_NODATA ) // ̎ԑэŏ̃JEg̎ - { // ꂵȂ1Ȃ - pool.vreg_c_ext.pedo_log[ p_record ] = 1; - } - else - { - // ʏpX - pool.vreg_c_ext.pedo_log[ p_record ] ++; - } - - // ݐς̍XV // - DI_wt_chk(); - if( ++vreg_ctr[ VREG_C_ACC_HOSU_L ] == 0 ) // JXg`FbN - { - if( ++vreg_ctr[ VREG_C_ACC_HOSU_M ] == 0 ) - { - if( ++vreg_ctr[ VREG_C_ACC_HOSU_H ] == 0 ){ - vreg_ctr[ VREG_C_ACC_HOSU_L ] = 255; //. 낢뎸s... - vreg_ctr[ VREG_C_ACC_HOSU_M ] = 255; - vreg_ctr[ VREG_C_ACC_HOSU_H ] = 255; - } - } - } - EI(); -} - - - -/* ======================================================== -󔒂̎ԂK؂0ɂāA -܂ނPԂ̃f[^ʒuɃ|C^Hi߂ -======================================================== */ -static void fill_hosu_hist_hours( u16 hours ) -{ - // OӂH - if( (u16)p_record + hours >= PEDOMETER_LOG_SIZE ) - { - pedolog_overflow = true; - return; - } - - // 󔒂̐Ԃ̐ݒ - while( hours != 0 ) - { - // Vdl@ςŒ~ - p_record ++; -#if 1 // debug - if( p_record >= PEDOMETER_LOG_SIZE ) - { - pedolog_overflow = true; -// dbg_nop(); // ɗ悤ƃoO - break; - } - else -#endif - { - pool.vreg_c_ext.pedo_log[ p_record ] = 0; - } - hours --; - } - - return; -} - - - -/* ======================================================== -󔒂̎Ԃ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_wt_chk(); - vreg_ctr[ VREG_C_ACC_HOSU_L ] = 0; - vreg_ctr[ VREG_C_ACC_HOSU_M ] = 0; - vreg_ctr[ VREG_C_ACC_HOSU_H ] = 0; - p_record = 0; - pedolog_overflow = false; - EI(); -} - - -extern u8 iic_burst_state; -bit pedolog_read_msb; -/* ======================================================== - 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_wt_chk(); - cal_buff = cal_log_latest; - EI(); - } - - if( iic_burst_state <= 5 ) - { - rv = *( (u8*)&cal_buff + iic_burst_state ); // - iic_burst_state ++; - return( rv ); - } - else - { - u16 temp; - // 16rbgŋL^Ă̂ł΂炵đ /// Ɗy@񂶂 - temp = pool.vreg_c_ext.pedo_log[ p_record_buffer ]; - if( !pedolog_read_msb ) - { - rv = (u8)( temp & 0x00FF ); - } - else - { - rv = (u8)(( temp >> 8 ) & 0x00FF ); - if( p_record_buffer == 0 ) - { - p_record_buffer = PEDOMETER_LOG_SIZE-1; - } - else - { - p_record_buffer --; - } - } - pedolog_read_msb ^= 1; - return( rv ); - } - -} - - - -/* ======================================================== - ŇǓoߎ(hour)ԂB - - Ԓl u16 long_hour -======================================================== */ -const u16 DAYS_FROM_HNY[] = { - 0, - 31, - 31+28, // =59B@cRO͂PTX - 31+28+31, - 31+28+31+30, - 31+28+31+30+31, - 31+28+31+30+31+30, - 31+28+31+30+31+30+31, - 31+28+31+30+31+30+31+31, - 31+28+31+30+31+30+31+31+30, - 31+28+31+30+31+30+31+31+30+31, - 31+28+31+30+31+30+31+31+30+31+30 - }; - -static u16 get_long_hour() -{ - u8 year = bcdtob( cal_temp.year_bcd ); - u8 month = bcdtob( cal_temp.month_bcd ); - u8 day = bcdtob( cal_temp.day_bcd ); - u8 hour = bcdtob( cal_temp.hour_bcd ); - u8 min_bcd = cal_temp.min_bcd; // 召rȂ̂bcd̂܂܂ł悢 - u8 sec_bcd = cal_temp.sec_bcd; - u16 long_hour; - - // ܂̕ - long_hour = DAYS_FROM_HNY[ month -1 ]; // -1̓CfbNX킹 - if( is_leapyear(year) && ( 3 <= month )) - { - // [NŁA[ - long_hour ++; - } - long_hour += day - 1; - long_hour *= 24; // - - long_hour += hour; - - // EȆOHH - if( ( min_bcd > vreg_ctr[ VREG_C_ACC_HOSU_HOUR_BOUNDARY ] ) - || ( ( min_bcd >= vreg_ctr[ VREG_C_ACC_HOSU_HOUR_BOUNDARY ] ) - && ( sec_bcd >= vreg_ctr[ VREG_C_ACC_HOSU_HOUR_BOUNDARY_SEC ] )) - ) - { - return( long_hour ); - } - else - { - return( long_hour -1 ); // 1ԑOɊ܂߂ ӁFUōNɂƂB-1 ɂȂ - } -} - - - -/* ======================================================== -@yʕB -@Kv\Ȑxőł؂ - pcŃV~[Vđv -======================================================== */ -static unsigned long my_sqrt(unsigned long x) -{ - unsigned long s, t; - - if (x <= 0) return 0; - - s = 1; - t = x; - while (s < t) - { - s <<= 1; - t >>= 1; - } - do - { - t = s; - s = (x / s + s) >> 1; - } while (s < t); - - return t; -} - - - - -/* ======================================================== -@‚ OĂ΂ꂽƁAݎ̍߂BԂ̂fill_hosu_hist_hours ɂ̂܂ܓn - //. year_bcd Ȃ̂Ƃ₾... -======================================================== */ -static u16 calc_hours_spend( u8 year ) -{ - u8 cal_log_latest_year = bcdtob( cal_log_latest.year_bcd ); - - // N̓ - if( cal_log_latest_year == year ) - { - if( now_longhour > last_hour_fny ) - { - return( now_longhour - last_hour_fny ); - } - else if( now_longhour == 0 && last_hour_fny != 0 ) - { - // N΂ŁAEzځBȂƍNŌɉZĂ܂B - return( 1 ); - } - else - { - return( 0 ); // ԑ(ƁA߂B@ǂȂĂmȂ) - } - } - else if( cal_log_latest_year == ( year -1 ) ) - { - // N܂łƂ - u16 temp = 365 * 24 - last_hour_fny + now_longhour; - if( is_firstyear(year) ) - { - temp += 24; - } - return( temp ); - } - else if( cal_log_latest_year < year ) - { - // Nu - return( PEDOMETER_LOG_SIZE +1 ); - } - else - { - // J_[߂Ȃ - // m[PAł悢cAslƂ킯ɂȂ - return( 0 ); - } -} diff --git a/tags/2.08/pedo_lpf_coeff.c b/tags/2.08/pedo_lpf_coeff.c deleted file mode 100644 index 2e16755..0000000 --- a/tags/2.08/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.08/pedo_lpf_coeff.h b/tags/2.08/pedo_lpf_coeff.h deleted file mode 100644 index f81d6c2..0000000 --- a/tags/2.08/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.08/pedometer.h b/tags/2.08/pedometer.h deleted file mode 100644 index 8760308..0000000 --- a/tags/2.08/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.08/pm.c b/tags/2.08/pm.c deleted file mode 100644 index 767b82c..0000000 --- a/tags/2.08/pm.c +++ /dev/null @@ -1,1396 +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ɔfBbt_get_charge_status()ōXV܂B - { - 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 --; - - if(( vreg_ctr[ VREG_C_STATUS_1 ] & REG_BIT_MGIC_ERR ) != 0 ) // A_v^LAdrłɏB - { - chg_led_override = 0; - } - else - { - 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 == I2C_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ĂقƂ̗vB -#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܂Ƃ߂čŝŁAset_irq()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.08/pm.h b/tags/2.08/pm.h deleted file mode 100644 index 423d771..0000000 --- a/tags/2.08/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.08/pool.h b/tags/2.08/pool.h deleted file mode 100644 index 81c8091..0000000 --- a/tags/2.08/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.08/reboot.c b/tags/2.08/reboot.c deleted file mode 100644 index b784f15..0000000 --- a/tags/2.08/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.08/reboot.h b/tags/2.08/reboot.h deleted file mode 100644 index c20e11e..0000000 --- a/tags/2.08/reboot.h +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef __MYREBOOT__ -#define __MYREBOOT__ - -void my_reboot(); - -#endif diff --git a/tags/2.08/renge/renge.c b/tags/2.08/renge/renge.c deleted file mode 100644 index ac90db3..0000000 --- a/tags/2.08/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; - - -#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 ] )(); -void DI_wt_chk(); - - - - -/****************************************************************************** - -E^XNVXe̓Ȉ -EC^[o^C} - *****************************************************************************/ -void renge_init(){ - renge_task_immed_init(); - /* - Cxg^C}̃ZbgȂ - RTC𗬗pĂ̂ŃRgAEg - #define renge_tick 19xxxxxxx [ms] - renge_interval_init(); RTC_init(); - */ -} - - - -/****************************************************************************** - VXe`bNi߂ - *****************************************************************************/ -/* -void renge_interval(){ -// RTCĂ -__interrupt void int_rtc_int(); -} -*/ - - - -/****************************************************************************** - RpCɌ܂ĂAC^[oÑ^XN - ̂ANƍ邩ȂB - *****************************************************************************/ -__callt err renge_task_interval_run(){ - u8 i; - - // C^[oN - DI_wt_chk(); - if(( renge_flg_interval != 0 ) || - ( renge_task_interval_run_force )) /// ȁc - { - renge_task_interval_run_force = false; // N^XNA荞ރ^XNŃtO‚Ȃ̂ - if( renge_flg_interval != 0 ) - { - renge_flg_interval --; - WDT_Restart( ); - } - EI(); - for( i = 0; i != TSK_LAST; i ++ ) - { - tasks[ i ](); - // N^XNԂɋ - renge_task_immed_run(); - } - } - EI(); - return( ERR_SUCCESS ); -} - - - -/***************************************************************************** - N^XN - - task_immed Ԃ֐B - VXetickA炩̊荞݁iI2CʐMȂǁj - X[v畜A^C~OŎs܂B - -Ԓl@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 - **************************************/ -__callt err renge_task_immed_add( task_status_immed (*new_task)() ){ - u8 i; - - // Xg̋󂫂̐擪ɓo^ - // 폜΂̃^XŃA폜}[N(TSK_IMM_DELETED_)ƂȂA󂫂Ƃ͖Iɋʂ - // do^ - for( i = 0; i < TASK_IMMED_RUN_LIST_MAX; i ++ ) - { - DI_wt_chk(); - if( tasks_immed[ i ] == TSK_IMM_EMPTY_ ) - { - // 󂫂‚ - tasks_immed[ i ] = new_task; - EI(); - return( ERR_SUCCESS ); - } - else - { - // do^`FbN - /// ɂȂĂȂAOl߂ĂO - if( tasks_immed[ i ] == new_task ) - { - // do^͂Ȃ - EI(); - return( ERR_ERR ); - } - } - EI(); - } - // ^XNo^(͂ - return( ERR_ERR ); -} - - - -/************************************** - s^XN̎s - **************************************/ -__callt err renge_task_immed_run(){ - u8 list_id; - -// while( tasks_immed[ 0 ] != TSK_IMM_EMPTY_ ) - if( tasks_immed[ 0 ] != TSK_IMM_EMPTY_ ) - { - DI_wt_chk(); - for( list_id = 0; list_id < TASK_IMMED_RUN_LIST_MAX; list_id ++ ){ - if( tasks_immed[ list_id ] == TSK_IMM_EMPTY_ ){ - // Xg - EI(); - break; - } -#ifdef _renge_test_ - else if( tasks_immed[ list_id ] == TSK_IMM_DELETED_ ) - { - EI(); - NOP(); - // ^XNǗ̕s - // ݂Ȃ^XNs悤Ƃ - // ^XN̍폜̏܂ - // \Ȃ^C~O immed_run Ă΂ꂽ - } -#endif - else - { - u8 rv; - - EI(); - rv = tasks_immed[ list_id ](); // ^XNs - if( rv == ERR_SUCCESS ) - { - tasks_immed[ list_id ] = TSK_IMM_DELETED_; - } - // ǂ^C~Oœ^XN̓o^ƍ̂DIԂłė鎖 - } - DI_wt_chk(); - } - // Xg̃^XNʂs - - // ^XN폜 // - { - u8 i = 0; // Xg̕בւ - u8 j = 1; - - // K i < jAj < TASK_IMMED_RUN_LIST_MAX (łȂƃ^XNӂ) - while( 1 ) - { - if( tasks_immed[ i ] == TSK_IMM_EMPTY_ ) - { - // Olߊ && Xg - // break; - goto imm_list_sort_fin; - } - else if( tasks_immed[ i ] == TSK_IMM_DELETED_ ) - { - for( ; j < TASK_IMMED_RUN_LIST_MAX; j++ ) - { - if( tasks_immed[ j ] == TSK_IMM_DELETED_ ) - { - // ׁiHj폜Ώۂ - // next j - } - else - { - DI_wt_chk(); - if( tasks_immed[ j ] == TSK_IMM_EMPTY_ ) - { - do{ - j --; - tasks_immed[ j ] = TSK_IMM_EMPTY_; - // XgOlߊ - }while( i < j ); - EI(); - goto imm_list_sort_fin; - } - else - { - // Ol߂ׂ^XN‚ - tasks_immed[ i ] = tasks_immed[ j ]; - tasks_immed[ j ] = TSK_IMM_DELETED_; - i ++; - EI(); - } - } - } - } - else - { - // ̃^XNAؗ - } - i ++; - } - } - } - -imm_list_sort_fin: - // ܂łŊSɑOl߂Ă -#ifdef _renge_test_ - /// ق? - { - u8 a,b; - - a = 0; - for( b = 0 ; b < TASK_IMMED_RUN_LIST_MAX; b++ ) - { - if( tasks_immed[ b ] == TSK_IMM_EMPTY_ ) - { - a = 1; - } - else - { - if( a != 0 ) - { - NOP(); // EMPTYɃ^XNdeletedL - } - } - } - } -#else - NOP(); // Ȃ񂩖ƃJ{ -#endif -// } - return( ERR_SUCCESS ); -} - - diff --git a/tags/2.08/renge/renge.h b/tags/2.08/renge/renge.h deleted file mode 100644 index 941a005..0000000 --- a/tags/2.08/renge/renge.h +++ /dev/null @@ -1,27 +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(); -__callt err renge_task_immed_run(); -__callt err renge_task_immed_add( task_status_immed (*p_task_func)() ); -// static err renge_task_immed_del( u8 ); - - - -//****************************************************************************** -__callt err renge_task_interval_run(); -extern u8 renge_flg_interval; -extern bit renge_task_interval_run_force; // ^XNstO - -#endif diff --git a/tags/2.08/renge/renge_defs.h b/tags/2.08/renge/renge_defs.h deleted file mode 100644 index 0199d76..0000000 --- a/tags/2.08/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.08/renge/renge_task_config.rb b/tags/2.08/renge/renge_task_config.rb deleted file mode 100644 index c2de509..0000000 --- a/tags/2.08/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.08/renge/renge_task_immediate.h b/tags/2.08/renge/renge_task_immediate.h deleted file mode 100644 index 9ac3bd2..0000000 --- a/tags/2.08/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_setup(); // accero.h -extern task_status_immed tski_mcu_reset(); -extern task_status_immed tski_vol_update(); - - -// ************************************* -#define TSK_IMM_EMPTY_ ( void * )( 0x0000 ) -#define TSK_IMM_DELETED_ ( void * )( 0x0001 ) - - - -#endif diff --git a/tags/2.08/renge/renge_task_intval.h b/tags/2.08/renge/renge_task_intval.h deleted file mode 100644 index 9b0d9ea..0000000 --- a/tags/2.08/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.08/renge/renge_tasks.txt b/tags/2.08/renge/renge_tasks.txt deleted file mode 100644 index 73af545..0000000 --- a/tags/2.08/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.08/rtc.c b/tags/2.08/rtc.c deleted file mode 100644 index a539a97..0000000 --- a/tags/2.08/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.08/rtc.h b/tags/2.08/rtc.h deleted file mode 100644 index 6b2d9f8..0000000 --- a/tags/2.08/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.08/self_flash.c b/tags/2.08/self_flash.c deleted file mode 100644 index d1ff4dd..0000000 --- a/tags/2.08/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.08/self_flash.h b/tags/2.08/self_flash.h deleted file mode 100644 index 768565e..0000000 --- a/tags/2.08/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.08/sw.c b/tags/2.08/sw.c deleted file mode 100644 index 5fd74ed..0000000 --- a/tags/2.08/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.08/sw.h b/tags/2.08/sw.h deleted file mode 100644 index abe9715..0000000 --- a/tags/2.08/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.08/task_debug.c b/tags/2.08/task_debug.c deleted file mode 100644 index f00d613..0000000 --- a/tags/2.08/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_setup ); - } -#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.08/task_misc.c b/tags/2.08/task_misc.c deleted file mode 100644 index 50d1a7a..0000000 --- a/tags/2.08/task_misc.c +++ /dev/null @@ -1,379 +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 - -// ======================================================== -extern void f(); - - -// ======================================================== -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(); -extern void DI_wt_chk(); - - - -/* ======================================================== - 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(); - } - - //. eXg -// f(); -} - - - -/* ======================================================== - 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_wt_chk(); - 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.08/task_status.c b/tags/2.08/task_status.c deleted file mode 100644 index 521b880..0000000 --- a/tags/2.08/task_status.c +++ /dev/null @@ -1,79 +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" - - -/* ======================================================== - Xe[^XWX^fE荞 - ======================================================== */ -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Ԕf - if( vreg_ctr[VREG_C_STATUS] & REG_BIT_BATT_CHARGE ) // set_irqʁXɌĂԕRpNg - { - set_irq( VREG_C_IRQ1, REG_BIT_BT_CHG_START ); - } - else - { - set_irq( VREG_C_IRQ1, REG_BIT_BT_CHG_STOP ); - } - } - } - - if(( system_status.pwr_state == ON ) || - ( system_status.pwr_state == SLEEP ) - ) - { - if( diff & REG_BIT_ST_SHELL_OPEN ) - { - // W̊J‚ - if( 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 ); - } - } - } - } -} - diff --git a/tags/2.08/task_sys.c b/tags/2.08/task_sys.c deleted file mode 100644 index 2c40c02..0000000 --- a/tags/2.08/task_sys.c +++ /dev/null @@ -1,657 +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(); -#ifdef _DBG_CHK_OFF_LEAK_ -static void leak_check(); -#endif - - - -//========================================================= -extern bit info_led_off; -extern bit going_to_sleep; -extern bit bt_authorized; - -static u8 timeout_sleep; -extern u8 chg_led_override; - -#ifdef i2c_timeout_test -extern bit i2c_mcu_time_out_error; -#endif - - -//========================================================= -#define PWSW_POWON_TIME (u8)( 20 / SYS_INTERVAL_TICK ) // [ms] // INTERVAL_TSK_SW ŊȂBl珬̂ - -/* ======================================================== - }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: //------------------------------------------------------- - // dfJEg_E^C}NA - clear_pow_off_countdown(); - - // ̊荞݂HALT(X[v) ^@A_v^L - - // dXCb`HALT // - if( system_status.poweron_reason == RSN_PWSW ) - { - if( PM_EXTDC_n ) - { - // A_v^Ȃ - if( SW_pow_count != 0 ) - { - pwsw_timeout = 0; - } - else - { - pwsw_timeout ++; - } - - if( pwsw_timeout > 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(); -// leak_check(); - -#ifndef _TAIKENDAI_SEISAN_SPECIAL_ - if( system_status.taikendai ) // A_v^玩œdoff - { - if( PM_EXTDC_n ) - { - system_status.pwr_state = OFF_TRIG; - } - } - break; // ł悢B -#else - /* FALLTHROUGH */ -#endif - - default: //--------------------------------------- - system_status.pwr_state = OFF_TRIG; // 蓾ȂXe[gBfobOp - /* FALLTHROUGH */ - - case OFF_TRIG: //--------------------------------------- - // LED҂ - vreg_ctr[ VREG_C_LED_POW ] = LED_POW_ILM_OFF; - vreg_ctr[ VREG_C_LED_WIFI ] = WIFI_LED_OFF; - vreg_ctr[ VREG_C_LED_3D ] = LED_3D_ILM_OFF; - info_led_off = true; - if( LED_duty_pow_blu != 0 ) - { - return; - } - - // dfJEg_E^C}NA - clear_pow_off_countdown(); - - // xZT~ - vreg_ctr[ VREG_C_ACC_CONFIG ] = 0x00; - tski_acc_setup(); - EI(); // DIԂłė̂ŁAI2C_mcu ̂ɕKv - - // ̑ytF~ - LED_stop( ); - IIC_ctr_Stop( ); - IIC_twl_Stop( ); - RTC_32k_off(); - - // 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_ - leak_check(); -#endif - CKC = bits8(0,0,0,0, 1,0,0,1); // 4MHzɗƂĂSTOPȂĂ͂ȂȂ - OSMC = bits8(0,0,0,0, 0,0,0,0); // 5MHzȉ[hցB - - if( PM_EXTDC_n_RAW ) // ǂ^C~Oő}N邱ƂBHALʂȂׂioffłj - { - STOP(); - } - - // N // - // N - // EKeyReturn荞݁id{^j - // ERTCA[iݕj - - // NbNA - OSMC = bits8(1,0,0,0, 0,0,0,0); // 8MHz쏀 - - renge_flg_interval = 0; - hal_update(); - - CKC = bits8(0,0,0,0, 1,0,0,0); // FSEL = 1 3clkȏJ - - // NŔH - if( !PM_EXTDC_n ){ - system_status.pwr_state = OFF; // ĂāAON_CHECKɍs - } -/* // RTCA[B - else if( vreg_ctr[ VREG_C_IRQ1 ] & REG_BIT_RTC_ALARM ) - { - system_status.poweron_reason = RSN_RTC_ALARM; - system_status.pwr_state = ON_CHECK; - } - // else if( ̊荞݂œdon ){ - // 󑼂̗vł͋NȂ - // } -*/ - else // if( !SW_POW_n ) // iȊOȂjd{^ŋN - { - SW_pow_mask = false; - system_status.poweron_reason = RSN_PWSW; - system_status.pwr_state = ON_CHECK; - } - - RTCIMK = 0; // sys tick ^C}[L - - 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 ); -} - - - -#ifdef _DBG_CHK_OFF_LEAK_ -/* ======================================================== - pinݒ~X`FbN - ======================================================== */ -static void leak_check() -{ - volatile u8 ports_i[12]; - volatile u8 ports_o[12]; - - ports_i[0] = ( PM0 & PU0 & ~P0 ); // vAbv؂YH - ports_i[1] = ( PM1 & PU1 & ~P1 ); - ports_i[2] = 0; - ports_i[3] = ( PM3 & PU3 & ~P3 ); - ports_i[4] = ( PM4 & PU4 & ~P4 ); - ports_i[5] = ( PM5 & PU5 & ~P5 ); - ports_i[6] = 0; - ports_i[7] = ( PM7 & PU7 & ~P7 ); - ports_i[8] = ( PM12 & PU12 & ~P12 ); - ports_i[9] = ( PM14 & PU14 & ~P14 ); - ports_i[10] = 0; - ports_i[11] = ( PM20 & PU20 & ~P20 ); - - ports_o[0] = ( ~PM0 & P0 ); // H o͂Ă邩 - ports_o[1] = ( ~PM1 & P1 ); - ports_o[2] = ( ~PM2 & P2 ); - ports_o[3] = ( ~PM3 & P3 & ~POM3 ); - ports_o[4] = ( ~PM4 & P4 ); // bit3chg_enȂ̂1ł悢 - ports_o[5] = ( ~PM5 & P5 ); - ports_o[6] = ( ~PM6 & P6 ); - ports_o[7] = ( ~PM7 & P7 ); - ports_o[8] = ( ~PM12 & P12 ); - ports_o[9] = ( ~PM14 & P14 ); - ports_o[10] = ( ~PM15 & P15 ); - ports_o[11] = ( ~PM20 & P20 ); - NOP(); // u[Nu -} -#endif _DBG_CHK_OFF_LEAK_ diff --git a/tags/2.08/user_define.h b/tags/2.08/user_define.h deleted file mode 100644 index 701ee3a..0000000 --- a/tags/2.08/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.08/voltable.c b/tags/2.08/voltable.c deleted file mode 100644 index 2aedcf0..0000000 --- a/tags/2.08/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.08/voltable.h b/tags/2.08/voltable.h deleted file mode 100644 index 6ff34ab..0000000 --- a/tags/2.08/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.08/vreg_ctr.c b/tags/2.08/vreg_ctr.c deleted file mode 100644 index caa82a1..0000000 --- a/tags/2.08/vreg_ctr.c +++ /dev/null @@ -1,594 +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(); -extern unsigned char get_ei(); -extern void DI_wt_chk(); - - - -// ******************************************************** -#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_setup ); - vreg_ctr[ VREG_C_ACC_CONFIG ] = data; - break; - - case ( VREG_C_ACC_R_ADRS ): - renge_task_immed_add( tski_acc_read ); - vreg_ctr[ VREG_C_ACC_R_ADRS ] = data; - break; - - case ( VREG_C_ACC_W_BUF ): - renge_task_immed_add( tski_acc_write ); - vreg_ctr[ VREG_C_ACC_W_BUF ] = data; - break; - - case ( VREG_C_ACC_HOSU_SETTING ): - if( ( data & 0x01 ) != 0 ) - { - clear_hosu_hist(); // NA - } - break; - - case ( VREG_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_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; - - case ( VREG_C_COMMAND3 ): - switch ( data ) - { -#ifdef _ENABLE_COMMAND3_ - case ( 'r' ): - // 荞݃[`FSLCuĂԂ̂͋֎~ - // }CRċNB@WX^ނB - renge_task_immed_add( tski_mcu_reset ); - break; - - case ( 'w' ): - // WDTōċNieXgj -// mcu_wdt_reset; // ̃R}hgӖȂłI - while(1) - { - dbg_NOP(); - } - break; -#endif //_ENABLE_COMMAND3_ - -#ifdef _ENABLE_HAL_ - case( 'p' ): - reserve_pedo_increnent = 1; - // ő₷ɂ̓X^bNȂBŗ\̂݁Atask_miscŏ -// hosu_increment_if_necessary(); // A - break; -#endif //_ENABLE_HAL_ - - } -// vreg_ctr[ VREG_C_COMMAND3 ] = data; // KvȂ - break; - - // 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_wt_chk(); - vreg_ctr[ adrs ] ^= data; - EI(); - irq_readed = true; - break; - - case VREG_CX_FREE_DATA: - vreg_free_adrs ++; - break; - - default: - break; - } -} - - - - - - -/****************************************************************************** - 荞݂ - - @}XNĂAtOuĂȂvA荞ݓȂB - @荞݂AǂݏoOɃ}XNƂ́ASoC̏L[ɂ - IRQǂރ^XNςł̂ŁAǂ݂ɂ͗B - @ƁAÔ߁A}XNƂ͋ǂ݂Ă炤B - łDĨ`FbNsvB - @DIɗ̂I2C_twlARTC_A[B̒ŖڒEIĎgpȂ - *****************************************************************************/ -void set_irq( u8 irqreg, u8 irq_flg ) -{ - u8 tot; -//0 u8 ei_orig; // EItOۑ - - if(( system_status.pwr_state == ON ) || - ( system_status.pwr_state == SLEEP )) - { -/*0 łDIԂȂPAKvȂ - ei_orig = get_ei(); - - //. debug - if( !ei_orig ) - { - dbg_nop(); - } - - DI_wt_chk(); -*/ - DI(); - if( ( vreg_ctr[ irqreg + 8 ] & irq_flg ) == 0 ){ - vreg_ctr[ irqreg ] |= irq_flg; - IRQ0_neg; // uグ... -//0 if( ei_orig ) - { - EI(); - } - tot = 0; - while( !IRQ0 && ( ++tot != 0 ) ){;} // O.D.Ȃ̂łƂ̂҂ IRQ_mcu LɔĂƍ(•s) - IRQ0_ast; // ƂBiGbW荞ׁ݂̈j - } -//0 if( ei_orig ) - { - EI(); - } - } -} - diff --git a/tags/2.08/vreg_ctr.h b/tags/2.08/vreg_ctr.h deleted file mode 100644 index a7ba785..0000000 --- a/tags/2.08/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.08/vreg_twl.c b/tags/2.08/vreg_twl.c deleted file mode 100644 index 15e971a..0000000 --- a/tags/2.08/vreg_twl.c +++ /dev/null @@ -1,156 +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; - - -// ======================================================== -extern void tsk_led_cam(); - - - - -/* ======================================================== - zWX^̏ - ======================================================== */ -void vreg_twl_init( ) -{ - vreg_twl[ REG_TWL_INT_ADRS_MODE ] = 0x03; - vreg_twl[ REG_TWL_INT_ADRS_IRQ ] = 0; - vreg_twl[ REG_TWL_INT_ADRS_CAM ] = 0; - vreg_twl[ REG_TWL_INT_ADRS_TEMP0 ] = 0; -} - -// ======================================================== -// I2CzWX^ɏEANV -//@ adrs ͓AhX -// @݂ȂAhXɃANZXꍇA܂B -void vreg_twl_write( u8 adrs, u8 data ) -{ - switch ( adrs ) - { - case ( REG_TWL_INT_ADRS_VOL ): - { - vol_changed_by_twl = true; - vreg_twl[ REG_TWL_INT_ADRS_VOL ] = data; - //renge_task_immed_add( tski_vol_update ); - vol_polling = 3; - break; - } - - case ( REG_TWL_INT_ADRS_MODE ): - vreg_twl[ REG_TWL_INT_ADRS_MODE ] = ( data & 0x83 ); // [8]vol32 [1:0]nand - break; - - case ( REG_TWL_INT_ADRS_CAM ): - vreg_twl[ REG_TWL_INT_ADRS_CAM ] = ( data & 0x03 ); - if( ( data & 0x03 ) == TWL_CAMLED_BLINK ) - { - cam_led_update = true; // łȂƈꔭɕs邽 - } - tsk_led_cam(); // uN̓sŋN - break; - - case ( REG_TWL_INT_ADRS_TEMP0 ): - vreg_twl[ REG_TWL_INT_ADRS_TEMP0 ] = data; - break; - - case ( REG_TWL_INT_ADRS_COMMAND ): -/* - if( data <= 2 ){ - if( ( data & REG_BIT_TWL_OFF_REQ ) != 0 ) - { - set_irq( VREG_C_IRQ2, REG_BIT_TWL_OFF_REQ ); // OFFĂ炵B - break; - } - else if( ( data & REG_BIT_TWL_RESET_REQ ) != 0 ) - { - set_irq( VREG_C_IRQ2, REG_BIT_TWL_RESET_REQ ); //ZbgȂB̂́ASPI痈܂B - break; - } - } -*/ - if( data == REG_BIT_TWL_RESET_REQ ) - { - set_irq( VREG_C_IRQ2, REG_BIT_TWL_RESET_REQ ); //ZbgȂB̂́ASPI痈܂B - break; - } - } - return; -} - - - -// ======================================================== -// I2CzWX^ǂ݂܂B -//@ adrs O猩Ƃ́AAhX -//@߂ xx f[^ -// @݂ȂAhXɃANZXꍇA߂l0x5A -u8 vreg_twl_read( u8 phy_adrs ) -{ - u8 temp; - - switch( phy_adrs ){ - // 10%ȉŐԂɂȂ - case( REG_TWL_INT_ADRS_POWER_INFO ): - // x̃Zbg get_batt_left()ixĖłj - return( vreg_twl[ REG_TWL_INT_ADRS_POWER_INFO ] | ( !PM_EXTDC_n ? 0x80: 0x00 ) ); // A_v^bit(A_v^L) - - case( REG_TWL_INT_ADRS_IRQ ): - temp = vreg_twl[ REG_TWL_INT_ADRS_IRQ ]; - vreg_twl[ REG_TWL_INT_ADRS_IRQ ]= 0; - return( temp ); - - case( REG_TWL_INT_ADRS_VER_INFO ): -// set_irq( VREG_C_IRQ2, REG_BIT_TWL_VER_READ ); // xIɖȂ̂ - twl_ver_read = true; - return( TWL_REG_VER_INFO ); - - case( REG_TWL_ADRS_NON_EXIST ): - return( 0x00 ); - - default: - return( vreg_twl[ phy_adrs ] ); - } -} - - - -// ======================================================== -// O猩钎HAhXA̘AAhXɓǂݑւ -// 0xFF݂͑ȂAhXB -u8 adrs_table_twl_ext2int( u8 img ) -{ - switch( img ){ - case( REG_TWL_ADRS_IRQ ): return( REG_TWL_INT_ADRS_IRQ ); - case( REG_TWL_ADRS_COMMAND ): return( REG_TWL_INT_ADRS_COMMAND ); - case( REG_TWL_ADRS_POWER_INFO ): return( REG_TWL_INT_ADRS_POWER_INFO ); - case( REG_TWL_ADRS_VOL ): return( REG_TWL_INT_ADRS_VOL ); - case( REG_TWL_ADRS_CAM ): return( REG_TWL_INT_ADRS_CAM ); - case( REG_TWL_ADRS_TEMP0 ): return( REG_TWL_INT_ADRS_TEMP0 ); - case( REG_TWL_ADRS_VER_INFO ): return( REG_TWL_INT_ADRS_VER_INFO ); - case( REG_TWL_ADRS_MODE ): return( REG_TWL_INT_ADRS_MODE ); - default: return( REG_TWL_ADRS_NON_EXIST ); -// 0ǂ߂΂悢AȂėǂ -// case( REG_TWL_ADRS_WIFI ): return( REG_TWL_INT_ADRS_WIFI ); - } -} diff --git a/tags/2.08/vreg_twl.h b/tags/2.08/vreg_twl.h deleted file mode 100644 index 63cdd94..0000000 --- a/tags/2.08/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.08/yav_mcu_bsr.plg b/tags/2.08/yav_mcu_bsr.plg deleted file mode 100644 index 659dfff..0000000 --- a/tags/2.08/yav_mcu_bsr.plg +++ /dev/null @@ -1,221 +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 -rd2s2 -qvjl2w -sainter_asm -zpb -no loader.c -loader.c(139) : CC78K0R warning W0401: Conversion may lose significant digits -loader.c(140) : CC78K0R warning W0401: Conversion may lose significant digits -loader.c(172) : CC78K0R warning W0401: Conversion may lose significant digits -Compilation complete, 0 error(s) and 3 warning(s) found. -"C:\Program Files (x86)\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"c:\program files (x86)\nec electronics tools\dev" -_msgoff -pinter_asm -ks -kx inter_asm\loader.asm -Assembly complete, 0 error(s) and 0 warning(s) found. -"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\bin\cc78k0r.exe" -c9F0104 -y"c:\program files (x86)\nec electronics tools\dev" -_msgoff -irenge -i"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r" -ms -rd2s2 -qvjl2w -sainter_asm -zpb -no pm.c -pm.c(492) : CC78K0R warning W0401: Conversion may lose significant digits -pm.c(785) : CC78K0R warning W0401: Conversion may lose significant digits -pm.c(789) : CC78K0R warning W0401: Conversion may lose significant digits -pm.c(819) : CC78K0R warning W0401: Conversion may lose significant digits -pm.c(840) : CC78K0R warning W0401: Conversion may lose significant digits -pm.c(906) : CC78K0R warning W0401: Conversion may lose significant digits -pm.c(915) : CC78K0R warning W0401: Conversion may lose significant digits -pm.c(1118) : CC78K0R warning W0401: Conversion may lose significant digits -pm.c(1120) : CC78K0R warning W0401: Conversion may lose significant digits -Compilation complete, 0 error(s) and 9 warning(s) found. -"C:\Program Files (x86)\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"c:\program files (x86)\nec electronics tools\dev" -_msgoff -pinter_asm -ks -kx inter_asm\pm.asm -Assembly complete, 0 error(s) and 0 warning(s) found. -"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\bin\cc78k0r.exe" -c9F0104 -y"c:\program files (x86)\nec electronics tools\dev" -_msgoff -irenge -i"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r" -ms -rd2s2 -qvjl2w -sainter_asm -zpb -no i2c_ctr.c -Compilation complete, 0 error(s) and 0 warning(s) found. -"C:\Program Files (x86)\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"c:\program files (x86)\nec electronics tools\dev" -_msgoff -pinter_asm -ks -kx inter_asm\i2c_ctr.asm -Assembly complete, 0 error(s) and 0 warning(s) found. -"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\bin\cc78k0r.exe" -c9F0104 -y"c:\program files (x86)\nec electronics tools\dev" -_msgoff -irenge -i"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r" -ms -rd2s2 -qvjl2w -sainter_asm -zpb -no main.c -Compilation complete, 0 error(s) and 0 warning(s) found. -"C:\Program Files (x86)\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"c:\program files (x86)\nec electronics tools\dev" -_msgoff -pinter_asm -ks -kx inter_asm\main.asm -Assembly complete, 0 error(s) and 0 warning(s) found. -"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\bin\cc78k0r.exe" -c9F0104 -y"c:\program files (x86)\nec electronics tools\dev" -_msgoff -irenge -i"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r" -ms -rd2s2 -qvjl2w -sainter_asm -zpb -no magic.c -Compilation complete, 0 error(s) and 0 warning(s) found. -"C:\Program Files (x86)\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"c:\program files (x86)\nec electronics tools\dev" -_msgoff -pinter_asm -ks -kx inter_asm\magic.asm -Assembly complete, 0 error(s) and 0 warning(s) found. -"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\bin\cc78k0r.exe" -c9F0104 -y"c:\program files (x86)\nec electronics tools\dev" -_msgoff -irenge -i"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r" -ms -rd2s2 -qvjl2w -sainter_asm -zpb -no WDT.c -Compilation complete, 0 error(s) and 0 warning(s) found. -"C:\Program Files (x86)\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"c:\program files (x86)\nec electronics tools\dev" -_msgoff -pinter_asm -ks -kx inter_asm\WDT.asm -Assembly complete, 0 error(s) and 0 warning(s) found. -"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\bin\cc78k0r.exe" -c9F0104 -y"c:\program files (x86)\nec electronics tools\dev" -_msgoff -irenge -i"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r" -ms -rd2s2 -qvjl2w -sainter_asm -zpb -no i2c_mcu.c -i2c_mcu.c(170) : CC78K0R warning W0401: Conversion may lose significant digits -Compilation complete, 0 error(s) and 1 warning(s) found. -"C:\Program Files (x86)\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"c:\program files (x86)\nec electronics tools\dev" -_msgoff -pinter_asm -ks -kx inter_asm\i2c_mcu.asm -Assembly complete, 0 error(s) and 0 warning(s) found. -"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\bin\cc78k0r.exe" -c9F0104 -y"c:\program files (x86)\nec electronics tools\dev" -_msgoff -irenge -i"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r" -ms -rd2s2 -qvjl2w -sainter_asm -zpb -no i2c_twl.c -Compilation complete, 0 error(s) and 0 warning(s) found. -"C:\Program Files (x86)\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"c:\program files (x86)\nec electronics tools\dev" -_msgoff -pinter_asm -ks -kx inter_asm\i2c_twl.asm -Assembly complete, 0 error(s) and 0 warning(s) found. -"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\bin\cc78k0r.exe" -c9F0104 -y"c:\program files (x86)\nec electronics tools\dev" -_msgoff -irenge -i"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r" -ms -rd2s2 -qvjl2w -sainter_asm -zpb -no led.c -led.c(82) : CC78K0R warning W0745: Expected function prototype -led.c(331) : CC78K0R warning W0401: Conversion may lose significant digits -Compilation complete, 0 error(s) and 2 warning(s) found. -"C:\Program Files (x86)\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"c:\program files (x86)\nec electronics tools\dev" -_msgoff -pinter_asm -ks -kx inter_asm\led.asm -Assembly complete, 0 error(s) and 0 warning(s) found. -"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\bin\cc78k0r.exe" -c9F0104 -y"c:\program files (x86)\nec electronics tools\dev" -_msgoff -irenge -i"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r" -ms -rd2s2 -qvjl2w -sainter_asm -zpb -no rtc.c -Compilation complete, 0 error(s) and 0 warning(s) found. -"C:\Program Files (x86)\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"c:\program files (x86)\nec electronics tools\dev" -_msgoff -pinter_asm -ks -kx inter_asm\rtc.asm -Assembly complete, 0 error(s) and 0 warning(s) found. -"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\bin\cc78k0r.exe" -c9F0104 -y"c:\program files (x86)\nec electronics tools\dev" -_msgoff -irenge -i"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r" -ms -rd2s2m -qvjl2w -sainter_asm -zpb -no vreg_ctr.c -vreg_ctr.c(167) : CC78K0R warning W0401: Conversion may lose significant digits -vreg_ctr.c(168) : CC78K0R warning W0401: Conversion may lose significant digits -vreg_ctr.c(170) : CC78K0R warning W0401: Conversion may lose significant digits -vreg_ctr.c(172) : CC78K0R warning W0401: Conversion may lose significant digits -vreg_ctr.c(173) : CC78K0R warning W0401: Conversion may lose significant digits -vreg_ctr.c(221) : CC78K0R warning W0401: Conversion may lose significant digits -vreg_ctr.c(221) : CC78K0R warning W0401: Conversion may lose significant digits -vreg_ctr.c(226) : CC78K0R warning W0401: Conversion may lose significant digits -vreg_ctr.c(226) : CC78K0R warning W0401: Conversion may lose significant digits -vreg_ctr.c(230) : CC78K0R warning W0401: Conversion may lose significant digits -vreg_ctr.c(230) : CC78K0R warning W0401: Conversion may lose significant digits -vreg_ctr.c(234) : CC78K0R warning W0401: Conversion may lose significant digits -vreg_ctr.c(234) : CC78K0R warning W0401: Conversion may lose significant digits -vreg_ctr.c(238) : CC78K0R warning W0401: Conversion may lose significant digits -Compilation complete, 0 error(s) and 14 warning(s) found. -"C:\Program Files (x86)\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"c:\program files (x86)\nec electronics tools\dev" -_msgoff -pinter_asm -ks -kx inter_asm\vreg_ctr.asm -Assembly complete, 0 error(s) and 0 warning(s) found. -"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\bin\cc78k0r.exe" -c9F0104 -y"c:\program files (x86)\nec electronics tools\dev" -_msgoff -irenge -i"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r" -ms -rd2s2m -qvjl2w -sainter_asm -zpb -no vreg_twl.c -vreg_twl.c(61) : CC78K0R warning W0401: Conversion may lose significant digits -vreg_twl.c(65) : CC78K0R warning W0401: Conversion may lose significant digits -Compilation complete, 0 error(s) and 2 warning(s) found. -"C:\Program Files (x86)\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"c:\program files (x86)\nec electronics tools\dev" -_msgoff -pinter_asm -ks -kx inter_asm\vreg_twl.asm -Assembly complete, 0 error(s) and 0 warning(s) found. -"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\bin\cc78k0r.exe" -c9F0104 -y"c:\program files (x86)\nec electronics tools\dev" -_msgoff -irenge -i"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r" -ms -rd2s2 -qvjl2w -sainter_asm -zpb -no adc.c -adc.c(102) : CC78K0R warning W0401: Conversion may lose significant digits -adc.c(183) : CC78K0R warning W0401: Conversion may lose significant digits -adc.c(229) : CC78K0R warning W0401: Conversion may lose significant digits -adc.c(288) : CC78K0R warning W0401: Conversion may lose significant digits -adc.c(409) : CC78K0R warning W0745: Expected function prototype -adc.c(438) : CC78K0R warning W0401: Conversion may lose significant digits -adc.c(443) : CC78K0R warning W0401: Conversion may lose significant digits -Compilation complete, 0 error(s) and 7 warning(s) found. -"C:\Program Files (x86)\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"c:\program files (x86)\nec electronics tools\dev" -_msgoff -pinter_asm -ks -kx inter_asm\adc.asm -Assembly complete, 0 error(s) and 0 warning(s) found. -"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\bin\cc78k0r.exe" -c9F0104 -y"c:\program files (x86)\nec electronics tools\dev" -_msgoff -irenge -i"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r" -ms -rd2s2m -qvjl2w -sainter_asm -zpb -no renge\renge.c -Compilation complete, 0 error(s) and 0 warning(s) found. -"C:\Program Files (x86)\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"c:\program files (x86)\nec electronics tools\dev" -_msgoff -pinter_asm -ks -kx inter_asm\renge.asm -Assembly complete, 0 error(s) and 0 warning(s) found. -"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\bin\cc78k0r.exe" -c9F0104 -y"c:\program files (x86)\nec electronics tools\dev" -_msgoff -irenge -i"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r" -ms -rd2s2 -qvjl2w -sainter_asm -zpb -no accero.c -accero.c(113) : CC78K0R warning W0745: Expected function prototype -Compilation complete, 0 error(s) and 1 warning(s) found. -"C:\Program Files (x86)\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"c:\program files (x86)\nec electronics tools\dev" -_msgoff -pinter_asm -ks -kx inter_asm\accero.asm -Assembly complete, 0 error(s) and 0 warning(s) found. -"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\bin\cc78k0r.exe" -c9F0104 -y"c:\program files (x86)\nec electronics tools\dev" -_msgoff -irenge -i"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r" -ms -rd2 -qvjl2w -sainter_asm -zpb -no self_flash.c -self_flash.c(280) : CC78K0R warning W0401: Conversion may lose significant digits -self_flash.c(281) : CC78K0R warning W0401: Conversion may lose significant digits -Compilation complete, 0 error(s) and 2 warning(s) found. -"C:\Program Files (x86)\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"c:\program files (x86)\nec electronics tools\dev" -_msgoff -pinter_asm -ks -kx inter_asm\self_flash.asm -Assembly complete, 0 error(s) and 0 warning(s) found. -"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\bin\cc78k0r.exe" -c9F0104 -y"c:\program files (x86)\nec electronics tools\dev" -_msgoff -irenge -i"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r" -ms -rd2s2 -qvjl2w -sainter_asm -zpb -no sw.c -Compilation complete, 0 error(s) and 0 warning(s) found. -"C:\Program Files (x86)\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"c:\program files (x86)\nec electronics tools\dev" -_msgoff -pinter_asm -ks -kx inter_asm\sw.asm -Assembly complete, 0 error(s) and 0 warning(s) found. -"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\bin\cc78k0r.exe" -c9F0104 -y"c:\program files (x86)\nec electronics tools\dev" -_msgoff -irenge -i"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r" -ms -rd2s2 -qvjl2w -sainter_asm -zpb -no task_debug.c -Compilation complete, 0 error(s) and 0 warning(s) found. -"C:\Program Files (x86)\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"c:\program files (x86)\nec electronics tools\dev" -_msgoff -pinter_asm -ks -kx inter_asm\task_debug.asm -Assembly complete, 0 error(s) and 0 warning(s) found. -"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\bin\cc78k0r.exe" -c9F0104 -y"c:\program files (x86)\nec electronics tools\dev" -_msgoff -irenge -i"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r" -ms -rd2s2 -qvjl2w -sainter_asm -zpb -no task_misc.c -task_misc.c(340) : CC78K0R warning W0401: Conversion may lose significant digits -task_misc.c(342) : CC78K0R warning W0401: Conversion may lose significant digits -task_misc.c(354) : CC78K0R warning W0401: Conversion may lose significant digits -Compilation complete, 0 error(s) and 3 warning(s) found. -"C:\Program Files (x86)\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"c:\program files (x86)\nec electronics tools\dev" -_msgoff -pinter_asm -ks -kx inter_asm\task_misc.asm -Assembly complete, 0 error(s) and 0 warning(s) found. -"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\bin\cc78k0r.exe" -c9F0104 -y"c:\program files (x86)\nec electronics tools\dev" -_msgoff -irenge -i"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r" -ms -rd2s2 -qvjl2w -sainter_asm -zpb -no task_sys.c -task_sys.c(225) : CC78K0R warning W0401: Conversion may lose significant digits -task_sys.c(565) : CC78K0R warning W0401: Conversion may lose significant digits -task_sys.c(630) : CC78K0R warning W0401: Conversion may lose significant digits -task_sys.c(631) : CC78K0R warning W0401: Conversion may lose significant digits -task_sys.c(633) : CC78K0R warning W0401: Conversion may lose significant digits -task_sys.c(634) : CC78K0R warning W0401: Conversion may lose significant digits -task_sys.c(635) : CC78K0R warning W0401: Conversion may lose significant digits -task_sys.c(637) : CC78K0R warning W0401: Conversion may lose significant digits -task_sys.c(638) : CC78K0R warning W0401: Conversion may lose significant digits -task_sys.c(639) : CC78K0R warning W0401: Conversion may lose significant digits -task_sys.c(641) : CC78K0R warning W0401: Conversion may lose significant digits -task_sys.c(643) : CC78K0R warning W0401: Conversion may lose significant digits -task_sys.c(644) : CC78K0R warning W0401: Conversion may lose significant digits -task_sys.c(645) : CC78K0R warning W0401: Conversion may lose significant digits -task_sys.c(646) : CC78K0R warning W0401: Conversion may lose significant digits -task_sys.c(647) : CC78K0R warning W0401: Conversion may lose significant digits -task_sys.c(648) : CC78K0R warning W0401: Conversion may lose significant digits -task_sys.c(649) : CC78K0R warning W0401: Conversion may lose significant digits -task_sys.c(650) : CC78K0R warning W0401: Conversion may lose significant digits -task_sys.c(651) : CC78K0R warning W0401: Conversion may lose significant digits -task_sys.c(652) : CC78K0R warning W0401: Conversion may lose significant digits -task_sys.c(653) : CC78K0R warning W0401: Conversion may lose significant digits -task_sys.c(654) : CC78K0R warning W0401: Conversion may lose significant digits -Compilation complete, 0 error(s) and 23 warning(s) found. -"C:\Program Files (x86)\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"c:\program files (x86)\nec electronics tools\dev" -_msgoff -pinter_asm -ks -kx inter_asm\task_sys.asm -Assembly complete, 0 error(s) and 0 warning(s) found. -"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\bin\cc78k0r.exe" -c9F0104 -y"c:\program files (x86)\nec electronics tools\dev" -_msgoff -irenge -i"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r" -ms -rd2s2 -qvjl2w -sainter_asm -zpb -no pedo_alg_thre_det2.c -pedo_alg_thre_det2.c(103) : CC78K0R warning W0745: Expected function prototype -pedo_alg_thre_det2.c(119) : CC78K0R warning W0401: Conversion may lose significant digits -Compilation complete, 0 error(s) and 2 warning(s) found. -"C:\Program Files (x86)\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"c:\program files (x86)\nec electronics tools\dev" -_msgoff -pinter_asm -ks -kx inter_asm\pedo_alg_thre_det2.asm -Assembly complete, 0 error(s) and 0 warning(s) found. -"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\bin\cc78k0r.exe" -c9F0104 -y"c:\program files (x86)\nec electronics tools\dev" -_msgoff -irenge -i"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r" -ms -rd2s2 -qvjl2w -sainter_asm -zpb -no ini_VECT.c -Compilation complete, 0 error(s) and 0 warning(s) found. -"C:\Program Files (x86)\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"c:\program files (x86)\nec electronics tools\dev" -_msgoff -pinter_asm -ks -kx inter_asm\ini_VECT.asm -Assembly complete, 0 error(s) and 0 warning(s) found. -"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\bin\cc78k0r.exe" -c9F0104 -y"c:\program files (x86)\nec electronics tools\dev" -_msgoff -irenge -i"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r" -ms -rd2s2 -qvjl2w -sainter_asm -zpb -no task_status.c -Compilation complete, 0 error(s) and 0 warning(s) found. -"C:\Program Files (x86)\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"c:\program files (x86)\nec electronics tools\dev" -_msgoff -pinter_asm -ks -kx inter_asm\task_status.asm -Assembly complete, 0 error(s) and 0 warning(s) found. -"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\bin\cc78k0r.exe" -c9F0104 -y"c:\program files (x86)\nec electronics tools\dev" -_msgoff -irenge -i"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r" -ms -rd2s2 -qvjl2w -sainter_asm -zpb -no led_cam.c -Compilation complete, 0 error(s) and 0 warning(s) found. -"C:\Program Files (x86)\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"c:\program files (x86)\nec electronics tools\dev" -_msgoff -pinter_asm -ks -kx inter_asm\led_cam.asm -Assembly complete, 0 error(s) and 0 warning(s) found. -"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\bin\cc78k0r.exe" -c9F0104 -y"c:\program files (x86)\nec electronics tools\dev" -_msgoff -irenge -i"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r" -ms -rd2s2 -qvjl2w -sainter_asm -zpb -no led_pow.c -led_pow.c(99) : CC78K0R warning W0401: Conversion may lose significant digits -led_pow.c(104) : CC78K0R warning W0401: Conversion may lose significant digits -led_pow.c(155) : CC78K0R warning W0401: Conversion may lose significant digits -led_pow.c(215) : CC78K0R warning W0401: Conversion may lose significant digits -led_pow.c(244) : CC78K0R warning W0401: Conversion may lose significant digits -Compilation complete, 0 error(s) and 5 warning(s) found. -"C:\Program Files (x86)\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"c:\program files (x86)\nec electronics tools\dev" -_msgoff -pinter_asm -ks -kx inter_asm\led_pow.asm -Assembly complete, 0 error(s) and 0 warning(s) found. -"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\bin\cc78k0r.exe" -c9F0104 -y"c:\program files (x86)\nec electronics tools\dev" -_msgoff -irenge -i"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r" -ms -rd2s2 -qvjl2w -sainter_asm -zpb -no hal.c -Compilation complete, 0 error(s) and 0 warning(s) found. -"C:\Program Files (x86)\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"c:\program files (x86)\nec electronics tools\dev" -_msgoff -pinter_asm -ks -kx inter_asm\hal.asm -Assembly complete, 0 error(s) and 0 warning(s) found. -"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\bin\cc78k0r.exe" -c9F0104 -y"c:\program files (x86)\nec electronics tools\dev" -_msgoff -irenge -i"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r" -ms -rd2s2 -qvjl2w -sainter_asm -zpb -no batt_params.c -Compilation complete, 0 error(s) and 0 warning(s) found. -"C:\Program Files (x86)\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"c:\program files (x86)\nec electronics tools\dev" -_msgoff -pinter_asm -ks -kx inter_asm\batt_params.asm -Assembly complete, 0 error(s) and 0 warning(s) found. -"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\bin\cc78k0r.exe" -c9F0104 -y"c:\program files (x86)\nec electronics tools\dev" -_msgoff -irenge -i"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r" -ms -rd2s2 -qvjl2w -sainter_asm -zpb -no voltable.c -Compilation complete, 0 error(s) and 0 warning(s) found. -"C:\Program Files (x86)\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"c:\program files (x86)\nec electronics tools\dev" -_msgoff -pinter_asm -ks -kx inter_asm\voltable.asm -Assembly complete, 0 error(s) and 0 warning(s) found. -"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\bin\cc78k0r.exe" -c9F0104 -y"c:\program files (x86)\nec electronics tools\dev" -_msgoff -irenge -i"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r" -ms -rd2s2 -qvjl2w -sainter_asm -zpb -no pedo_lpf_coeff.c -Compilation complete, 0 error(s) and 0 warning(s) found. -"C:\Program Files (x86)\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"c:\program files (x86)\nec electronics tools\dev" -_msgoff -pinter_asm -ks -kx inter_asm\pedo_lpf_coeff.asm -Assembly complete, 0 error(s) and 0 warning(s) found. -"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\bin\cc78k0r.exe" -c9F0104 -y"c:\program files (x86)\nec electronics tools\dev" -_msgoff -irenge -i"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r" -ms -rd2s2 -qvjl2w -sainter_asm -zpb -no kanaria_c.c -Compilation complete, 0 error(s) and 0 warning(s) found. -"C:\Program Files (x86)\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"c:\program files (x86)\nec electronics tools\dev" -_msgoff -pinter_asm -ks -kx inter_asm\kanaria_c.asm -Assembly complete, 0 error(s) and 0 warning(s) found. -"C:\Program Files (x86)\NEC Electronics Tools\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) : 87 diff --git a/tags/2.08/yav_mcu_bsr.pri b/tags/2.08/yav_mcu_bsr.pri deleted file mode 100644 index 41888bf..0000000 --- a/tags/2.08/yav_mcu_bsr.pri +++ /dev/null @@ -1,510 +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=OFF -IRESET=OFF -WAIT=OFF -SysClock=None -SubClock=None -[Mapping] -Count=0 -[Main] -Geometry=264, 264, 1200, 858 -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=0, 0, 600, 400 -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=0, 0, 0, 0 -Window=Hide -DispStart=847627264 -CaretPos=0,0 -Address1= -Address2= -Address3= -Address4= -Address5= -Address6= -Address7= -Address8= -Address9= -Address10= -Address11= -Address12= -Address13= -Address14= -Address15= -Address16= -Data1= -Data2= -Data3= -Data4= -Data5= -Data6= -Data7= -Data8= -Data9= -Data10= -Data11= -Data12= -Data13= -Data14= -Data15= -Data16= -Case=ON -Scan=OFF -Direction=Down -FindStart= -FindEnd= -SaveRange=Screen -SaveStart= -SaveEnd= -[Memory] -Geometry=0, 0, 0, 0 -Window=Hide -Boundary=0 -Format=Hex -Mode=Byte -Endian= -Ascii=OFF -Idtag=OFF -Address= -DispStart=FFFFFFFF -CaretPosData=0, 0 -CaretPosAscii=0, 0 -Address1= -Address2= -Address3= -Address4= -Address5= -Address6= -Address7= -Address8= -Address9= -Address10= -Address11= -Address12= -Address13= -Address14= -Address15= -Address16= -Data1= -Data2= -Data3= -Data4= -Data5= -Data6= -Data7= -Data8= -Data9= -Data10= -Data11= -Data12= -Data13= -Data14= -Data15= -Data16= -Binary=ON -Scan=OFF -Direction=DOWN -FindStart= -FindEnd= -Unit=Byte -SaveRange=Screen -SaveStart= -SaveEnd= -Accumulative=ON -[Memory fill] -Scope=0, 0 -Code=0 -[Memory copy] -Scope=0, 0 -To=0 -[Memory compare] -Source=0, 0 -Destination=0 -[I/O Port] -Line=0 -[Stack] -Geometry=0, 0, 0, 0 -Window=Hide -Boundary=0 -Mode=Proper -[Sfr] -Geometry=704, 55, 400, 400 -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=ON -SelectSort=Name -Last Name=P2 -Line=27 -L1=P0 -L2=P1 -L3=P2 -L4=P3 -L5=P4 -L6=P5 -L7=P6 -L8=P7 -L9=P12 -L10=P14 -L11=P15 -L12=P20 -L13=PER0 -L14=PER2 -L15=PER3 -L16=PM0 -L17=PM1 -L18=PM12 -L19=PM14 -L20=PM15 -L21=PM2 -L22=PM20 -L23=PM3 -L24=PM4 -L25=PM5 -L26=PM6 -L27=PM7 -[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=25, 25, 250, 400 -Window=Hide -Mode=Hex -Boundary=159 -Pickup=OFF -Name=Functional -Register Bank=0 -RP0=3 -RP1=3 -RP2=3 -RP3=3 -PC=3 -SP=3 -PSW=3 -ES=3 -CS=3 -[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=0, 0, 0, 0 -Window=Hide -Boundary=0 -Line=0 -[Quick Watch] -0= -1= -2= -3= -4= -5= -6= -7= -8= -9= -10= -11= -12= -13= -14= -15= -[Software Break] -Geometry=0, 0, 0, 0 -Window=Hide -Width=150 30 200 100 -Count=0 -[Reset] -Debugger=ON -Symbol=OFF -Target CPU=OFF -[Extended Option] -OnClick Software Break=ON -TraceTimetag=x1 -Redraw=500 -Break When Access Function=OFF -Break When Access Whole=Select -Verify=ON -Break Sound=ON -TraceAutoClear=OFF -RRM Clock=Internal -CKC Register Value=0x09 -RRM Internal Clock Frequency=8.000 -[About] -Version=Program -[Pseudo Emulation] -Geometry=0, 0, 0, 0 -Window=Hide -[Data Flash Option] -Data Flash Emulation=OFF -[List] -Geometry=0, 0, 0, 0 -Window=Hide -[Console] -Geometry=0, 0, 0, 0 -Window=Hide diff --git a/tags/2.08/yav_mcu_bsr.prj b/tags/2.08/yav_mcu_bsr.prj deleted file mode 100644 index 8d026dc..0000000 --- a/tags/2.08/yav_mcu_bsr.prj +++ /dev/null @@ -1,1407 +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 -[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.RA78K0R 0] -Version=100 -G=1 -GA=1 -E=0 -COMMON=0 -COMPATI=0 -P=1 -KA=1 -KS=0 -KX=0 -LF=0 -LW=132 -LL=0 -LT=8 -Z=0 -CommandFile=0 -RA_OPT= -[Options.RA78K0R 1] -Version=100 -G=0 -GA=0 -E=0 -COMMON=0 -COMPATI=0 -P=1 -KA=1 -KS=0 -KX=0 -LF=0 -LW=132 -LL=0 -LT=8 -Z=0 -CommandFile=0 -RA_OPT= -[Options.RA78K0R 2] -Version=100 -O0= -O1=obj -G=1 -GA=1 -E=0 -COMMON=0 -COMPATI=0 -P=1 -P0=inter_asm -KA=1 -KS=1 -KX=1 -LF=0 -LW=132 -LL=0 -LT=8 -Z=0 -CommandFile=0 -RA_OPT=-pinter_asm -ks -kx -[Options.RA78K0R 3] -Version=100 -G=1 -GA=1 -E=0 -COMMON=0 -COMPATI=0 -P=1 -KA=1 -KS=0 -KX=0 -LF=0 -LW=132 -LL=0 -LT=8 -Z=0 -CommandFile=0 -RA_OPT= -[Options.RA78K0R 4] -Version=100 -G=1 -GA=1 -E=0 -COMMON=0 -COMPATI=0 -P=1 -KA=1 -KS=0 -KX=0 -LF=0 -LW=132 -LL=0 -LT=8 -Z=0 -CommandFile=0 -RA_OPT= -[Options.RA78K0R 5] -Version=100 -G=1 -GA=1 -E=0 -COMMON=0 -COMPATI=0 -P=1 -KA=1 -KS=0 -KX=0 -LF=0 -LW=132 -LL=0 -LT=8 -Z=0 -CommandFile=0 -RA_OPT= -[Options.CC78K0R 0] -Version=210 -Include0=renge,C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r -Include1=C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r -Memorymodel=1 -Flashobj=0 -FlashStartadr= -FlashBranchStartadr= -Mirror=0 -Saddrglobalchk=0 -Saddrglobal=1066 -Saddrstaticchk=0 -Saddrstatic=1072 -Bitfieldmsb=0 -Onebytechk=0 -Pacstructchk=0 -AssignROMchk=0 -AssignROM=0 -Maxoptimizechk=0 -Maxoptimize=1104 -Charunexpandchk=1 -Unsignedchar=0 -Usesaddrchk=0 -Autoallocationchk=1 -Jumpoptimize=1 -Librarycallchk=0 -Librarycall=1129 -Aggressivechk=1 -Relativebranchchk=1 -Debugoptchk=0 -Outdebugchk=1 -Outdebug=1153 -Outasmsrccmb0=inter_asm -Outasmsrccmb1=bsr.asm -Outasmsrcchk=1 -Outasmsrc=1158 -Outasmoptall=1 -Common=0 -Outerrlistchk=0 -Outerrlist=1174 -Xreference=0 -Preprocess=0 -Prenocomment=0 -Predefine=0 -Preifdef=1 -Preinclude=0 -Preline=1 -Prenumber=1 -Formfeed=0 -Columns=132 -Lines=0 -Tablength=8 -Ansi=0 -Cpraspras=1 -Commentnest=0 -Intunexpand=0 -Kanjicode=1210 -Verbose=0 -CommandFile=0 -Warninglevel=0 -Startupchk=1 -Fixation=1 -FarROMization=0 -Objectsel=1305 -Librarychk=1 -Floatingpoint=0 -Muldivunit=1 -Mulunit=1 -Startup=s0rml.rel -Library1=cl0rdm.lib -Library2=cl0rm.lib -Library3=cl0rmf.lib -VfiFileBoot0= -VfiFileBoot1=boot.vfi -VF78K0Rchk=0 -VF78K0Rvs= -[Options.CC78K0R 1] -Version=210 -Memorymodel=2 -Flashobj=0 -FlashStartadr= -FlashBranchStartadr= -Mirror=0 -Saddrglobalchk=0 -Saddrglobal=1066 -Saddrstaticchk=0 -Saddrstatic=1072 -Bitfieldmsb=0 -Onebytechk=0 -Pacstructchk=0 -AssignROMchk=0 -AssignROM=0 -Maxoptimizechk=0 -Maxoptimize=1104 -Charunexpandchk=1 -Unsignedchar=0 -Usesaddrchk=0 -Autoallocationchk=1 -Jumpoptimize=1 -Librarycallchk=1 -Librarycall=1128 -Aggressivechk=1 -Relativebranchchk=0 -Debugoptchk=0 -Outdebugchk=0 -Outdebug=1153 -Outasmsrcchk=0 -Outasmsrc=1157 -Outasmoptall=1 -Common=0 -Outerrlistchk=0 -Outerrlist=1173 -Xreference=0 -Preprocess=0 -Prenocomment=0 -Predefine=0 -Preifdef=1 -Preinclude=0 -Preline=1 -Prenumber=1 -Formfeed=0 -Columns=132 -Lines=0 -Tablength=8 -Ansi=0 -Cpraspras=0 -Commentnest=0 -Intunexpand=0 -Kanjicode=1210 -Verbose=0 -CommandFile=0 -Warninglevel=1 -Startupchk=1 -Fixation=1 -FarROMization=1 -Objectsel=1305 -Librarychk=1 -Floatingpoint=0 -Muldivunit=1 -Mulunit=1 -Startup=s0rll.rel -Library1=cl0rdm.lib -Library2=cl0rm.lib -Library3=cl0rmf.lib -VF78K0Rchk=0 -VF78K0Rvs= -[Options.CC78K0R 2] -Version=210 -Define0= -Define1=_debug_,_TEG_,proc_is_ke3 -Define2=_debug_,_TEG_,proc_is_ke3,%time% -Define3=_TEG_,proc_is_ke3 -Define4=proc_is_ke3 -Include0=renge,C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r -Include1=renge,C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r -Include2=C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r -Memorymodel=1 -Flashobj=0 -FlashStartadr= -FlashBranchStartadr= -Mirror=0 -Saddrglobalchk=1 -Saddrglobal=1063 -Saddrstaticchk=1 -Saddrstatic=1069 -Bitfieldmsb=0 -Onebytechk=0 -Pacstructchk=0 -AssignROMchk=0 -AssignROM=0 -Maxoptimizechk=0 -Maxoptimize=1104 -Charunexpandchk=0 -Unsignedchar=0 -Usesaddrchk=0 -Autoallocationchk=1 -Jumpoptimize=1 -Librarycallchk=1 -Librarycall=1129 -Aggressivechk=1 -Relativebranchchk=0 -Debugoptchk=0 -Outdebugchk=1 -Outdebug=1153 -Outobjectcmb0= -Outobjectcmb1=obj -Outasmsrccmb0=inter_asm -Outasmsrccmb1=bsr.asm -Outasmsrcchk=1 -Outasmsrc=1158 -Outasmoptall=1 -Common=0 -Outerrlistchk=0 -Outerrlist=1174 -Xreference=0 -Preprocess=0 -Prenocomment=0 -Predefine=0 -Preifdef=1 -Preinclude=1 -Preline=1 -Prenumber=1 -Formfeed=0 -Columns=132 -Lines=0 -Tablength=8 -Ansi=0 -Cpraspras=1 -Commentnest=0 -Intunexpand=1 -Kanjicode=1210 -Verbose=0 -CommandFile=0 -Warninglevel=1 -Startupchk=1 -Fixation=0 -FarROMization=0 -Objectsel=1305 -Librarychk=1 -Floatingpoint=0 -Muldivunit=1 -Mulunit=1 -Startup=s0rm.rel -Library1=cl0rdm.lib -Library2=cl0rm.lib -Library3=cl0rmf.lib -VfiFileBoot0= -VfiFileBoot1=boot.vfi -VF78K0Rchk=0 -VF78K0Rvs= -[Options.CC78K0R 3] -Version=210 -Define0=_debug_,proc_is_bsr,_TEG_ -Define1=_debug_,proc_is_bsr -Define2=proc_is_bsr -Define3=_TEG_,proc_is_ke3 -Define4=proc_is_ke3 -Include0=renge,C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r -Include1=C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r -Memorymodel=1 -Flashobj=0 -FlashStartadr= -FlashBranchStartadr= -Mirror=0 -Saddrglobalchk=0 -Saddrglobal=1066 -Saddrstaticchk=0 -Saddrstatic=1072 -Bitfieldmsb=0 -Onebytechk=0 -Pacstructchk=0 -AssignROMchk=0 -AssignROM=0 -Maxoptimizechk=0 -Maxoptimize=1104 -Charunexpandchk=1 -Unsignedchar=0 -Usesaddrchk=0 -Autoallocationchk=1 -Jumpoptimize=1 -Librarycallchk=0 -Librarycall=1129 -Aggressivechk=1 -Relativebranchchk=1 -Debugoptchk=0 -Outdebugchk=1 -Outdebug=1153 -Outasmsrccmb0=inter_asm -Outasmsrccmb1=bsr.asm -Outasmsrcchk=1 -Outasmsrc=1158 -Outasmoptall=1 -Common=0 -Outerrlistchk=0 -Outerrlist=1174 -Xreference=0 -Preprocess=0 -Prenocomment=0 -Predefine=0 -Preifdef=1 -Preinclude=0 -Preline=1 -Prenumber=1 -Formfeed=0 -Columns=132 -Lines=0 -Tablength=8 -Ansi=0 -Cpraspras=1 -Commentnest=0 -Intunexpand=0 -Kanjicode=1210 -Verbose=0 -CommandFile=0 -Warninglevel=0 -Startupchk=1 -Fixation=1 -FarROMization=0 -Objectsel=1305 -Librarychk=1 -Floatingpoint=0 -Muldivunit=1 -Mulunit=1 -Startup=s0rml.rel -Library1=cl0rdm.lib -Library2=cl0rm.lib -Library3=cl0rmf.lib -VfiFileBoot0= -VfiFileBoot1=boot.vfi -VF78K0Rchk=0 -VF78K0Rvs= -[Options.CC78K0R 4] -Version=210 -Define0=proc_is_bsr -Include0=renge,C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r -Include1=C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r -Memorymodel=1 -Flashobj=0 -FlashStartadr= -FlashBranchStartadr= -Mirror=0 -Saddrglobalchk=0 -Saddrglobal=1066 -Saddrstaticchk=0 -Saddrstatic=1072 -Bitfieldmsb=0 -Onebytechk=0 -Pacstructchk=0 -AssignROMchk=0 -AssignROM=0 -Maxoptimizechk=0 -Maxoptimize=1104 -Charunexpandchk=1 -Unsignedchar=0 -Usesaddrchk=0 -Autoallocationchk=1 -Jumpoptimize=1 -Librarycallchk=0 -Librarycall=1129 -Aggressivechk=1 -Relativebranchchk=1 -Debugoptchk=0 -Outdebugchk=1 -Outdebug=1153 -Outasmsrccmb0=inter_asm -Outasmsrccmb1=bsr.asm -Outasmsrcchk=1 -Outasmsrc=1158 -Outasmoptall=1 -Common=0 -Outerrlistchk=0 -Outerrlist=1174 -Xreference=0 -Preprocess=0 -Prenocomment=0 -Predefine=0 -Preifdef=1 -Preinclude=0 -Preline=1 -Prenumber=1 -Formfeed=0 -Columns=132 -Lines=0 -Tablength=8 -Ansi=0 -Cpraspras=1 -Commentnest=0 -Intunexpand=0 -Kanjicode=1210 -Verbose=0 -CommandFile=0 -Warninglevel=0 -Startupchk=1 -Fixation=1 -FarROMization=0 -Objectsel=1305 -Librarychk=1 -Floatingpoint=0 -Muldivunit=1 -Mulunit=1 -Startup=s0rml.rel -Library1=cl0rdm.lib -Library2=cl0rm.lib -Library3=cl0rmf.lib -VfiFileBoot0= -VfiFileBoot1=boot.vfi -VF78K0Rchk=0 -VF78K0Rvs= -[Options.CC78K0R 5] -Version=210 -Define0= -Define1=_debug_,proc_is_bsr,_TEG_,_WM0_ -Define2=_debug_,proc_is_bsr,_TEG_,_WM0 -Define3=_debug_,proc_is_bsr,_TEG_ -Define4=_debug_,proc_is_bsr -Include0=renge,C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r -Include1=C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r -Memorymodel=1 -Flashobj=0 -FlashStartadr= -FlashBranchStartadr= -Mirror=0 -Saddrglobalchk=0 -Saddrglobal=1066 -Saddrstaticchk=0 -Saddrstatic=1072 -Bitfieldmsb=0 -Onebytechk=0 -Pacstructchk=0 -AssignROMchk=0 -AssignROM=0 -Maxoptimizechk=0 -Maxoptimize=1104 -Charunexpandchk=1 -Unsignedchar=0 -Usesaddrchk=0 -Autoallocationchk=1 -Jumpoptimize=1 -Librarycallchk=0 -Librarycall=1129 -Aggressivechk=1 -Relativebranchchk=1 -Debugoptchk=0 -Outdebugchk=1 -Outdebug=1153 -Outasmsrccmb0=inter_asm -Outasmsrccmb1=bsr.asm -Outasmsrcchk=1 -Outasmsrc=1158 -Outasmoptall=1 -Common=0 -Outerrlistchk=0 -Outerrlist=1174 -Xreference=0 -Preprocess=0 -Prenocomment=0 -Predefine=0 -Preifdef=1 -Preinclude=0 -Preline=1 -Prenumber=1 -Formfeed=0 -Columns=132 -Lines=0 -Tablength=8 -Ansi=0 -Cpraspras=1 -Commentnest=0 -Intunexpand=0 -Kanjicode=1210 -Verbose=0 -CommandFile=0 -Warninglevel=0 -Startupchk=1 -Fixation=1 -FarROMization=0 -Objectsel=1305 -Librarychk=1 -Floatingpoint=0 -Muldivunit=1 -Mulunit=1 -Startup=s0rml.rel -Library1=cl0rdm.lib -Library2=cl0rm.lib -Library3=cl0rmf.lib -VfiFileBoot0= -VfiFileBoot1=boot.vfi -VF78K0Rchk=0 -VF78K0Rvs= -[Options.CC78K0R 2 self_flash.c] -Version=210 -Define0= -Define1=_debug_,_TEG_,proc_is_ke3 -Define2=_debug_,_TEG_,proc_is_ke3,%time% -Undefine0= -Include0=renge,C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r -Include1=renge,C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r -Include2=renge,C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r -Include3=renge,C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r -Include4=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 2 vreg_twl.c] -Version=210 -Define0= -Define1=_debug_,_TEG_,proc_is_ke3 -Define2=_debug_,_TEG_,proc_is_ke3,%time% -Undefine0= -Include0=renge,C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r -Include1=renge,C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r -Include2=renge,C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r -Include3=renge,C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r -Include4=C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r -Memorymodel=1 -Flashobj=0 -FlashStartadr= -FlashBranchStartadr= -Mirror=0 -Saddrglobalchk=1 -Saddrglobal=1063 -Saddrstaticchk=1 -Saddrstatic=1075 -Bitfieldmsb=0 -Onebytechk=0 -Pacstructchk=0 -AssignROMchk=0 -AssignROM=0 -Maxoptimizechk=0 -Maxoptimize=1104 -Charunexpandchk=0 -Unsignedchar=0 -Usesaddrchk=0 -Autoallocationchk=1 -Jumpoptimize=1 -Librarycallchk=1 -Librarycall=1129 -Aggressivechk=1 -Relativebranchchk=0 -Debugoptchk=0 -Outdebugchk=1 -Outdebug=1153 -Outobjectcmb0= -Outobjectcmb1=obj -Outasmsrccmb0=inter_asm -Outasmsrccmb1=bsr.asm -Outasmsrcchk=1 -Outasmsrc=1158 -Outasmoptall=1 -Common=0 -Outerrlistchk=0 -Outerrlist=1174 -Xreference=0 -Preprocess=0 -Prenocomment=0 -Predefine=0 -Preifdef=1 -Preinclude=1 -Preline=1 -Prenumber=1 -Formfeed=0 -Columns=132 -Lines=0 -Tablength=8 -Ansi=0 -Cpraspras=1 -Commentnest=0 -Intunexpand=1 -Kanjicode=1210 -Verbose=0 -CommandFile=0 -Warninglevel=1 -Startupchk=1 -Fixation=0 -FarROMization=0 -Objectsel=1305 -Librarychk=1 -Floatingpoint=0 -Muldivunit=1 -Mulunit=1 -Startup=s0rm.rel -Library1=cl0rdm.lib -Library2=cl0rm.lib -Library3=cl0rmf.lib -VfiFileBoot0= -VfiFileBoot1=boot.vfi -VF78K0Rchk=0 -VF78K0Rvs= -[Options.CC78K0R 2 renge.c] -Version=210 -Define0= -Define1=_debug_,_TEG_,proc_is_ke3 -Define2=_debug_,_TEG_,proc_is_ke3,%time% -Undefine0= -Include0=renge,C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r -Include1=renge,C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r -Include2=renge,C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r -Include3=renge,C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r -Include4=C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r -Memorymodel=1 -Flashobj=0 -FlashStartadr= -FlashBranchStartadr= -Mirror=0 -Saddrglobalchk=1 -Saddrglobal=1063 -Saddrstaticchk=1 -Saddrstatic=1075 -Bitfieldmsb=0 -Onebytechk=0 -Pacstructchk=0 -AssignROMchk=0 -AssignROM=0 -Maxoptimizechk=0 -Maxoptimize=1104 -Charunexpandchk=0 -Unsignedchar=0 -Usesaddrchk=0 -Autoallocationchk=1 -Jumpoptimize=1 -Librarycallchk=1 -Librarycall=1129 -Aggressivechk=1 -Relativebranchchk=0 -Debugoptchk=0 -Outdebugchk=1 -Outdebug=1153 -Outobjectcmb0= -Outobjectcmb1=obj -Outasmsrccmb0=inter_asm -Outasmsrccmb1=bsr.asm -Outasmsrcchk=1 -Outasmsrc=1158 -Outasmoptall=1 -Common=0 -Outerrlistchk=0 -Outerrlist=1174 -Xreference=0 -Preprocess=0 -Prenocomment=0 -Predefine=0 -Preifdef=1 -Preinclude=1 -Preline=1 -Prenumber=1 -Formfeed=0 -Columns=132 -Lines=0 -Tablength=8 -Ansi=0 -Cpraspras=1 -Commentnest=0 -Intunexpand=1 -Kanjicode=1210 -Verbose=0 -CommandFile=0 -Warninglevel=1 -Startupchk=1 -Fixation=0 -FarROMization=0 -Objectsel=1305 -Librarychk=1 -Floatingpoint=0 -Muldivunit=1 -Mulunit=1 -Startup=s0rm.rel -Library1=cl0rdm.lib -Library2=cl0rm.lib -Library3=cl0rmf.lib -VfiFileBoot0= -VfiFileBoot1=boot.vfi -VF78K0Rchk=0 -VF78K0Rvs= -[Options.CC78K0R 2 vreg_ctr.c] -Version=210 -Define0= -Define1=_debug_,_TEG_,proc_is_ke3 -Define2=_debug_,_TEG_,proc_is_ke3,%time% -Undefine0= -Include0=renge,C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r -Include1=renge,C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r -Include2=renge,C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r -Include3=renge,C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r -Include4=C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r -Memorymodel=1 -Flashobj=0 -FlashStartadr= -FlashBranchStartadr= -Mirror=0 -Saddrglobalchk=1 -Saddrglobal=1063 -Saddrstaticchk=1 -Saddrstatic=1075 -Bitfieldmsb=0 -Onebytechk=0 -Pacstructchk=0 -AssignROMchk=0 -AssignROM=0 -Maxoptimizechk=0 -Maxoptimize=1104 -Charunexpandchk=0 -Unsignedchar=0 -Usesaddrchk=0 -Autoallocationchk=1 -Jumpoptimize=1 -Librarycallchk=1 -Librarycall=1129 -Aggressivechk=1 -Relativebranchchk=0 -Debugoptchk=0 -Outdebugchk=1 -Outdebug=1153 -Outobjectcmb0= -Outobjectcmb1=obj -Outasmsrccmb0=inter_asm -Outasmsrccmb1=bsr.asm -Outasmsrcchk=1 -Outasmsrc=1158 -Outasmoptall=1 -Common=0 -Outerrlistchk=0 -Outerrlist=1174 -Xreference=0 -Preprocess=0 -Prenocomment=0 -Predefine=0 -Preifdef=1 -Preinclude=1 -Preline=1 -Prenumber=1 -Formfeed=0 -Columns=132 -Lines=0 -Tablength=8 -Ansi=0 -Cpraspras=1 -Commentnest=0 -Intunexpand=1 -Kanjicode=1210 -Verbose=0 -CommandFile=0 -Warninglevel=1 -Startupchk=1 -Fixation=0 -FarROMization=0 -Objectsel=1305 -Librarychk=1 -Floatingpoint=0 -Muldivunit=1 -Mulunit=1 -Startup=s0rm.rel -Library1=cl0rdm.lib -Library2=cl0rm.lib -Library3=cl0rmf.lib -VfiFileBoot0= -VfiFileBoot1=boot.vfi -VF78K0Rchk=0 -VF78K0Rvs= -[Options.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.08/yav_mcu_bsr.prk b/tags/2.08/yav_mcu_bsr.prk deleted file mode 100644 index debf5e7..0000000 --- a/tags/2.08/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.08/yav_mcu_bsr.prw b/tags/2.08/yav_mcu_bsr.prw deleted file mode 100644 index 7c0bbd6..0000000 --- a/tags/2.08/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.08/yav_mcu_bsr.sdb b/tags/2.08/yav_mcu_bsr.sdb deleted file mode 100644 index 27e6b29..0000000 --- a/tags/2.08/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.08/ベースからの変更.xls b/tags/2.08/ベースからの変更.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