From 9d533dcf4826889b847353e733e3ca8540b237c6 Mon Sep 17 00:00:00 2001 From: n2232 Date: Thu, 26 May 2011 08:19:37 +0000 Subject: [PATCH] =?UTF-8?q?=E3=81=8A=E7=9F=A5=E3=82=89=E3=81=9B=E3=83=A9?= =?UTF-8?q?=E3=83=B3=E3=83=97=E3=80=80=E3=82=B0=E3=83=A9=E3=83=87=E3=83=BC?= =?UTF-8?q?=E3=82=B7=E3=83=A7=E3=83=B3=E8=A8=88=E7=AE=97=E3=81=AA=E3=81=A9?= =?UTF-8?q?=E3=83=AA=E3=83=95=E3=82=A1=E3=82=AF=E3=82=BF=E3=83=AA=E3=83=B3?= =?UTF-8?q?=E3=82=B0=E3=80=80=E3=81=A0=E3=81=84=E3=81=B6ROM=E7=AF=80?= =?UTF-8?q?=E7=B4=84=E3=80=82=E5=8B=95=E3=81=84=E3=81=A6=E3=81=84=E3=82=8B?= =?UTF-8?q?=E6=A8=A1=E6=A7=98=E3=80=82=20=E3=83=90=E3=83=83=E3=83=86?= =?UTF-8?q?=E3=83=AA=E3=83=91=E3=83=A9=E3=83=A1=E3=83=BC=E3=82=BFSPFL?= =?UTF-8?q?=E5=AF=BE=E5=BF=9C=E3=80=80=E6=AE=8B=E5=BF=B5=E3=81=AA=E6=84=9F?= =?UTF-8?q?=E3=81=98=E3=81=AA=E3=81=AE=E3=81=A7=E6=9B=B8=E3=81=8D=E7=9B=B4?= =?UTF-8?q?=E3=81=99=20ext=20status=20=E3=81=AE9=E3=83=90=E3=82=A4?= =?UTF-8?q?=E3=83=88=E7=9B=AE=E3=81=ABspfl=E7=AD=89=E8=AD=98=E5=88=A5?= =?UTF-8?q?=E3=82=92=E8=BF=BD=E5=8A=A0?= 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@334 013db118-44a6-b54f-8bf7-843cb86687b1 --- trunk/batt_params.h | 20 +- trunk/bsr.lmf | Bin 165832 -> 166184 bytes trunk/bsr_k0r.map | 888 ++++++++++++++++++++++-------------------- trunk/config.h | 5 +- trunk/hoge.bin | Bin 3 -> 16387 bytes trunk/led.c | 48 ++- trunk/pm.c | 206 ++++++---- trunk/task_misc.c | 13 +- trunk/yav_mcu_bsr.pri | 49 ++- trunk/yav_mcu_bsr.prj | 126 +++--- trunk/yav_mcu_bsr.prk | 15 +- 11 files changed, 736 insertions(+), 634 deletions(-) diff --git a/trunk/batt_params.h b/trunk/batt_params.h index 31d565d..e4fd0d0 100644 --- a/trunk/batt_params.h +++ b/trunk/batt_params.h @@ -1,6 +1,7 @@ #ifndef _bt_params_h_ #define _bt_params_h_ + /* ======================================================== 各社バッテリーパラメータ ======================================================== */ @@ -102,29 +103,28 @@ const st_bt_comp BT_COMP[] = { { 92, (u8)(-256* 0.79), (u8)(-256* 4.35) }, // dummy(M ) { 171, (u8)(-256* 1.00), (u8)(-256* 2.60) }, // dummy( P) { 171, (u8)(-256* 1.00), (u8)(-256* 2.60) }, // dummy( P) - { 171, (u8)(-256* 1.00), (u8)(-256* 2.60) }, // panasonic - { 171, (u8)(-256* 1.00), (u8)(-256* 2.60) } // dummy( P) + { 171, (u8)(-256* 1.00), (u8)(-256* 2.60) } // panasonic }; const u16 BT_OCV[] = { - { 0xD800 }, { 0xD800 }, { 0xD800 }, // maxell, dummy, dummy, - { 0xDA20 }, { 0xDA20 }, { 0xDA20 }, { 0xDA20 } // dummy, dummy, panaso, dummy + { 0xD800 }, { 0xD800 }, { 0xD800 }, // maxell, dummy, dummy, + { 0xDA20 }, { 0xDA20 }, { 0xDA20 } // dummy, dummy, pana }; const u8 BT_VERIFY_H[] = { - 0xEA, 0xEA, 0xEA, // maxell, dummy, dummy, - 0x69, 0x69, 0x69, 0x69 // dummy, dummy, panaso, dummy + 0xEA, 0xEA, 0xEA, // maxell, dummy, dummy, + 0x69, 0x69, 0x69 // dummy, dummy, pana }; const u8 BT_VERIFY_L[] = { - 0xE8, 0xE8, 0xE8, // maxell, dummy, dummy, - 0x67, 0x67, 0x67, 0x67 // dummy, dummy, panaso, dummy + 0xE8, 0xE8, 0xE8, // maxell, dummy, dummy, + 0x67, 0x67, 0x67 // dummy, dummy, pana }; const u8 BT_RCOMP_SCALE[] = { - 2, 2, 2, // maxell, dummy, dummy, - 1, 1, 1, 1 // dummy, dummy, panaso, dummy + 2, 2, 2, // maxell, dummy, dummy, + 1, 1, 1 // dummy, dummy, panaso }; diff --git a/trunk/bsr.lmf b/trunk/bsr.lmf index 1d6db33c9a082c910701f8a72d80f4239c331a23..7c3a118e3ed7caeef6b90b408a755842d534bc67 100644 GIT binary patch literal 166184 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 E7uNVkD*ylh literal 165832 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 diff --git a/trunk/bsr_k0r.map b/trunk/bsr_k0r.map index 22f58d8..cc14ec5 100644 --- a/trunk/bsr_k0r.map +++ b/trunk/bsr_k0r.map @@ -1,7 +1,7 @@ -78K0R Linker W1.33 Date:18 Feb 2011 Page: 1 +78K0R Linker W1.33 Date:26 May 2011 Page: 1 Command: -yc:\program files (x86)\nec electronics tools\dev -_msgoff - obsr.lmf ..\..\..\Program Files (x86)\NEC Electronics Tools\C @@ -14,7 +14,7 @@ Command: -yc:\program files (x86)\nec electronics tools\dev -_msgoff - wl.rel led.rel rtc.rel vreg_ctr.rel vreg_twl.rel adc.rel reng e.rel accero.rel self_flash.rel sw.rel task_debug.rel task_mi sc.rel task_sys.rel pedo_alg_thre_det2.rel ini_VECT.rel task_ - status.rel + status.rel led_cam.rel led_pow.rel Para-file: Out-file: bsr.lmf Map-file: bsr_k0r.map @@ -23,9 +23,9 @@ Direc-file:bsr_mcu.dr *** Link information *** - 63 output segment(s) - 3EE5H byte(s) real data - 5497 symbol(s) defined + 65 output segment(s) + 3E40H byte(s) real data + 5756 symbol(s) defined *** Memory map *** @@ -98,53 +98,53 @@ Direc-file:bsr_mcu.dr LDR_CODL task_status 000C4H 00000H ?CSEGSI 000C4H 0000AH CSEG - LDR_CODE 000CEH 00944H CSEG - LDR_CODE loader 000CEH 00207H - LDR_CODE main 002D5H 00046H - LDR_CODE WDT 0031BH 00000H - LDR_CODE i2c_mcu 0031BH 002F0H + LDR_CODE 000CEH 00955H CSEG + LDR_CODE loader 000CEH 00218H + LDR_CODE main 002E6H 00046H + LDR_CODE WDT 0032CH 00000H + LDR_CODE i2c_mcu 0032CH 002F0H LDR_CODE self_flash - 0060BH 0037FH + 0061CH 0037FH LDR_CODE task_debug - 0098AH 00000H + 0099BH 00000H LDR_CODE task_status - 0098AH 00088H - FSL_CODE 00A12H 00322H CSEG + 0099BH 00088H + FSL_CODE 00A23H 00322H CSEG FSL_CODE fsl_block_cmd - 00A12H 0002BH + 00A23H 0002BH FSL_CODE fsl_block_check - 00A3DH 00013H + 00A4EH 00013H FSL_CODE fsl_common - 00A50H 0014FH + 00A61H 0014FH FSL_CODE fsl_reset - 00B9FH 00001H + 00BB0H 00001H FSL_CODE fsl_si_ibf - 00BA0H 00064H + 00BB1H 00064H FSL_CODE fsl_phySwap - 00C04H 0004DH + 00C15H 0004DH FSL_CODE fsl_si_common - 00C51H 00061H - FSL_CODE fsl_swap 00CB2H 00030H + 00C62H 00061H + FSL_CODE fsl_swap 00CC3H 00030H FSL_CODE fsl_write - 00CE2H 00052H - @@LCODE 00D34H 00277H CSEG - @@LCODE @cstart 00D34H 0006DH - @@LCODE @imul 00DA1H 00011H - @@LCODE @lumul 00DB2H 0002BH - @@LCODE @isdiv 00DDDH 00022H - @@LCODE @iudiv 00DFFH 0002DH - @@LCODE @isrem 00E2CH 00021H - @@LCODE @iurem 00E4DH 0002FH - @@LCODE @lsdiv 00E7CH 00039H - @@LCODE @ludiv 00EB5H 0003FH - @@LCODE @divuw 00EF4H 00034H - @@LCODE @ladd 00F28H 0000FH - @@LCODE @llsh 00F37H 0001BH - @@LCODE @lursh 00F52H 0001FH - @@LCODE @iscmp 00F71H 0000CH - @@LCODE @lband 00F7DH 00014H - @@LCODE @bcdtob 00F91H 0001AH -* gap * 00FABH 0004BH + 00CF3H 00052H + @@LCODE 00D45H 00277H CSEG + @@LCODE @cstart 00D45H 0006DH + @@LCODE @imul 00DB2H 00011H + @@LCODE @lumul 00DC3H 0002BH + @@LCODE @isdiv 00DEEH 00022H + @@LCODE @iudiv 00E10H 0002DH + @@LCODE @isrem 00E3DH 00021H + @@LCODE @iurem 00E5EH 0002FH + @@LCODE @lsdiv 00E8DH 00039H + @@LCODE @ludiv 00EC6H 0003FH + @@LCODE @divuw 00F05H 00034H + @@LCODE @ladd 00F39H 0000FH + @@LCODE @llsh 00F48H 0001BH + @@LCODE @lursh 00F63H 0001FH + @@LCODE @iscmp 00F82H 0000CH + @@LCODE @lband 00F8EH 00014H + @@LCODE @bcdtob 00FA2H 0001AH +* gap * 00FBCH 0003AH MGC_LOAD 00FF6H 0000AH CSEG AT MGC_LOAD magic 00FF6H 0000AH @@ -154,262 +154,282 @@ Direc-file:bsr_mcu.dr SEGMENT SEGMENT MODULE ADDRESS MGC_MIMI 02000H 0000AH CSEG AT MGC_MIMI magic 02000H 0000AH - @@CNST 0200AH 002C6H CSEG + @@CNST 0200AH 0027CH CSEG @@CNST @cstart 0200AH 00000H @@CNST loader 0200AH 00000H - @@CNST pm 0200AH 00214H - @@CNST i2c_ctr 0221EH 00000H - @@CNST main 0221EH 00000H - @@CNST magic 0221EH 00000H - @@CNST WDT 0221EH 00000H - @@CNST i2c_mcu 0221EH 00000H - @@CNST i2c_twl 0221EH 00000H - @@CNST led 0221EH 00020H - @@CNST rtc 0223EH 00000H - @@CNST vreg_ctr 0223EH 00000H - @@CNST vreg_twl 0223EH 00000H - @@CNST adc 0223EH 00048H - @@CNST renge 02286H 00000H - @@CNST accero 02286H 00000H + @@CNST pm 0200AH 001CAH + @@CNST i2c_ctr 021D4H 00000H + @@CNST main 021D4H 00000H + @@CNST magic 021D4H 00000H + @@CNST WDT 021D4H 00000H + @@CNST i2c_mcu 021D4H 00000H + @@CNST i2c_twl 021D4H 00000H + @@CNST led 021D4H 00000H + @@CNST rtc 021D4H 00000H + @@CNST vreg_ctr 021D4H 00000H + @@CNST vreg_twl 021D4H 00000H + @@CNST adc 021D4H 00048H + @@CNST renge 0221CH 00000H + @@CNST accero 0221CH 00000H @@CNST self_flash - 02286H 00002H - @@CNST sw 02288H 00000H + 0221CH 00002H + @@CNST sw 0221EH 00000H @@CNST task_debug - 02288H 00000H + 0221EH 00000H @@CNST task_misc - 02288H 00000H - @@CNST task_sys 02288H 00000H + 0221EH 00000H + @@CNST task_sys 0221EH 00000H @@CNST pedo_alg_thre_det2 - 02288H 00048H - @@CNST ini_VECT 022D0H 00000H + 0221EH 00048H + @@CNST ini_VECT 02266H 00000H @@CNST task_status - 022D0H 00000H - ROM_CODE 022D0H 027EEH CSEG - ROM_CODE pm 022D0H 00AA4H - ROM_CODE i2c_ctr 02D74H 00060H - ROM_CODE i2c_twl 02DD4H 0005EH - ROM_CODE led 02E32H 00546H - ROM_CODE rtc 03378H 000E0H - ROM_CODE vreg_ctr 03458H 00481H - ROM_CODE vreg_twl 038D9H 000FAH - ROM_CODE adc 039D3H 002FCH - ROM_CODE renge 03CCFH 00190H - ROM_CODE accero 03E5FH 0013DH - ROM_CODE sw 03F9CH 00120H + 02266H 00000H + @@CNST led_cam 02266H 00000H + @@CNST led_pow 02266H 00020H + ROM_CODE 02286H 02780H CSEG + ROM_CODE pm 02286H 00A93H + ROM_CODE i2c_ctr 02D19H 00060H + ROM_CODE i2c_twl 02D79H 0005EH + ROM_CODE led 02DD7H 00265H + ROM_CODE rtc 0303CH 000E0H + ROM_CODE vreg_ctr 0311CH 00481H + ROM_CODE vreg_twl 0359DH 000FAH + ROM_CODE adc 03697H 002FCH + ROM_CODE renge 03993H 00190H + ROM_CODE accero 03B23H 0013DH + ROM_CODE sw 03C60H 0013DH ROM_CODE task_misc - 040BCH 00175H - ROM_CODE task_sys 04231H 0038BH + 03D9DH 0017FH + ROM_CODE task_sys 03F1CH 0038BH ROM_CODE pedo_alg_thre_det2 - 045BCH 00502H - @@BASE 04ABEH 004C6H CSEG BASE - @@BASE loader 04ABEH 00000H - @@BASE pm 04ABEH 0003FH - @@BASE i2c_ctr 04AFDH 0018DH - @@BASE main 04C8AH 00000H - @@BASE magic 04C8AH 00000H - @@BASE WDT 04C8AH 00000H - @@BASE i2c_mcu 04C8AH 0009CH - @@BASE i2c_twl 04D26H 000CBH - @@BASE led 04DF1H 00000H - @@BASE rtc 04DF1H 0005EH - @@BASE vreg_ctr 04E4FH 00000H - @@BASE vreg_twl 04E4FH 00000H - @@BASE adc 04E4FH 000B3H - @@BASE renge 04F02H 00000H - @@BASE accero 04F02H 0004AH + 042A7H 00502H + ROM_CODE led_cam 047A9H 000DBH + ROM_CODE led_pow 04884H 00182H + @@BASE 04A06H 004C6H CSEG BASE + @@BASE loader 04A06H 00000H + @@BASE pm 04A06H 0003FH + @@BASE i2c_ctr 04A45H 0018DH + @@BASE main 04BD2H 00000H + @@BASE magic 04BD2H 00000H + @@BASE WDT 04BD2H 00000H + @@BASE i2c_mcu 04BD2H 0009CH + @@BASE i2c_twl 04C6EH 000CBH + @@BASE led 04D39H 00000H + @@BASE rtc 04D39H 0005EH + @@BASE vreg_ctr 04D97H 00000H + @@BASE vreg_twl 04D97H 00000H + @@BASE adc 04D97H 000B3H + @@BASE renge 04E4AH 00000H + @@BASE accero 04E4AH 0004AH @@BASE self_flash - 04F4CH 00000H - @@BASE sw 04F4CH 00000H + 04E94H 00000H + @@BASE sw 04E94H 00000H @@BASE task_debug - 04F4CH 00000H + 04E94H 00000H @@BASE task_misc - 04F4CH 00000H - @@BASE task_sys 04F4CH 00000H + 04E94H 00000H + @@BASE task_sys 04E94H 00000H @@BASE pedo_alg_thre_det2 - 04F4CH 00000H - @@BASE ini_VECT 04F4CH 00038H + 04E94H 00000H + @@BASE ini_VECT 04E94H 00038H @@BASE task_status - 04F84H 00000H - @@CNSTL 04F84H 00000H CSEG PAGE64KP - @@CNSTL @cstart 04F84H 00000H - @@CNSTL 04F84H 00000H CSEG PAGE64KP - @@CNSTL pm 04F84H 00000H - @@CNSTL 04F84H 00000H CSEG PAGE64KP - @@CNSTL i2c_ctr 04F84H 00000H - @@CNSTL 04F84H 00000H CSEG PAGE64KP - @@CNSTL i2c_twl 04F84H 00000H - @@CNSTL 04F84H 00000H CSEG PAGE64KP - @@CNSTL led 04F84H 00000H - @@CNSTL 04F84H 00000H CSEG PAGE64KP - @@CNSTL rtc 04F84H 00000H - @@CNSTL 04F84H 00000H CSEG PAGE64KP - @@CNSTL vreg_ctr 04F84H 00000H - @@CNSTL 04F84H 00000H CSEG PAGE64KP - @@CNSTL vreg_twl 04F84H 00000H - @@CNSTL 04F84H 00000H CSEG PAGE64KP - @@CNSTL adc 04F84H 00000H - @@CNSTL 04F84H 00000H CSEG PAGE64KP - @@CNSTL renge 04F84H 00000H - @@CNSTL 04F84H 00000H CSEG PAGE64KP - @@CNSTL accero 04F84H 00000H - @@CNSTL 04F84H 00000H CSEG PAGE64KP - @@CNSTL sw 04F84H 00000H - @@CNSTL 04F84H 00000H CSEG PAGE64KP + 04ECCH 00000H + @@BASE led_cam 04ECCH 00000H + @@BASE led_pow 04ECCH 00000H + @@CNSTL 04ECCH 00000H CSEG PAGE64KP + @@CNSTL @cstart 04ECCH 00000H + @@CNSTL 04ECCH 00000H CSEG PAGE64KP + @@CNSTL pm 04ECCH 00000H + @@CNSTL 04ECCH 00000H CSEG PAGE64KP + @@CNSTL i2c_ctr 04ECCH 00000H + @@CNSTL 04ECCH 00000H CSEG PAGE64KP + @@CNSTL i2c_twl 04ECCH 00000H + @@CNSTL 04ECCH 00000H CSEG PAGE64KP + @@CNSTL led 04ECCH 00000H + @@CNSTL 04ECCH 00000H CSEG PAGE64KP + @@CNSTL rtc 04ECCH 00000H + @@CNSTL 04ECCH 00000H CSEG PAGE64KP + @@CNSTL vreg_ctr 04ECCH 00000H + @@CNSTL 04ECCH 00000H CSEG PAGE64KP + @@CNSTL vreg_twl 04ECCH 00000H + @@CNSTL 04ECCH 00000H CSEG PAGE64KP + @@CNSTL adc 04ECCH 00000H + @@CNSTL 04ECCH 00000H CSEG PAGE64KP + @@CNSTL renge 04ECCH 00000H + @@CNSTL 04ECCH 00000H CSEG PAGE64KP + @@CNSTL accero 04ECCH 00000H + @@CNSTL 04ECCH 00000H CSEG PAGE64KP + @@CNSTL sw 04ECCH 00000H + @@CNSTL 04ECCH 00000H CSEG PAGE64KP @@CNSTL task_misc - 04F84H 00000H - @@CNSTL 04F84H 00000H CSEG PAGE64KP - @@CNSTL task_sys 04F84H 00000H - @@CNSTL 04F84H 00000H CSEG PAGE64KP + 04ECCH 00000H + @@CNSTL 04ECCH 00000H CSEG PAGE64KP + @@CNSTL task_sys 04ECCH 00000H + @@CNSTL 04ECCH 00000H CSEG PAGE64KP @@CNSTL pedo_alg_thre_det2 - 04F84H 00000H - @@CNSTL 04F84H 00000H CSEG PAGE64KP - @@CNSTL ini_VECT 04F84H 00000H - @@CNSTL 04F84H 0000AH CSEG PAGE64KP - @@CNSTL @bcdtob 04F84H 0000AH - @@R_INIT 04F8EH 00036H CSEG UNIT64KP - @@R_INIT @cstart 04F8EH 00000H - @@R_INIT loader 04F8EH 00000H - @@R_INIT pm 04F8EH 00002H - @@R_INIT i2c_ctr 04F90H 00002H - @@R_INIT main 04F92H 00000H - @@R_INIT magic 04F92H 00000H - @@R_INIT WDT 04F92H 00000H - @@R_INIT i2c_mcu 04F92H 00000H - @@R_INIT i2c_twl 04F92H 00000H - @@R_INIT led 04F92H 00006H - @@R_INIT rtc 04F98H 00000H - @@R_INIT vreg_ctr 04F98H 00000H - @@R_INIT vreg_twl 04F98H 00000H - @@R_INIT adc 04F98H 0000CH - @@R_INIT renge 04FA4H 00014H - @@R_INIT accero 04FB8H 00000H + 04ECCH 00000H + @@CNSTL 04ECCH 00000H CSEG PAGE64KP + @@CNSTL ini_VECT 04ECCH 00000H + @@CNSTL 04ECCH 00000H CSEG PAGE64KP + @@CNSTL led_cam 04ECCH 00000H + @@CNSTL 04ECCH 00000H CSEG PAGE64KP + @@CNSTL led_pow 04ECCH 00000H + @@CNSTL 04ECCH 0000AH CSEG PAGE64KP + @@CNSTL @bcdtob 04ECCH 0000AH + @@R_INIT 04ED6H 00038H CSEG UNIT64KP + @@R_INIT @cstart 04ED6H 00000H + @@R_INIT loader 04ED6H 00000H + @@R_INIT pm 04ED6H 00002H + @@R_INIT i2c_ctr 04ED8H 00002H + @@R_INIT main 04EDAH 00000H + @@R_INIT magic 04EDAH 00000H + @@R_INIT WDT 04EDAH 00000H + @@R_INIT i2c_mcu 04EDAH 00000H + @@R_INIT i2c_twl 04EDAH 00000H + @@R_INIT led 04EDAH 00000H + @@R_INIT rtc 04EDAH 00000H + @@R_INIT vreg_ctr 04EDAH 00000H + @@R_INIT vreg_twl 04EDAH 00000H + @@R_INIT adc 04EDAH 0000CH + @@R_INIT renge 04EE6H 00014H + @@R_INIT accero 04EFAH 00000H @@R_INIT self_flash - 04FB8H 00000H - @@R_INIT sw 04FB8H 00002H + 04EFAH 00000H + @@R_INIT sw 04EFAH 00002H @@R_INIT task_debug - 04FBAH 00000H + 04EFCH 00000H @@R_INIT task_misc - 04FBAH 00000H - @@R_INIT task_sys 04FBAH 00002H + 04EFCH 00000H + @@R_INIT task_sys 04EFCH 00002H @@R_INIT pedo_alg_thre_det2 - 04FBCH 00006H - @@R_INIT ini_VECT 04FC2H 00000H + 04EFEH 00006H + @@R_INIT ini_VECT 04F04H 00000H @@R_INIT task_status - 04FC2H 00002H - @@R_INIT @rom 04FC4H 00000H - @@R_INIS 04FC4H 00000H CSEG UNIT64KP - @@R_INIS @cstart 04FC4H 00000H - @@R_INIS loader 04FC4H 00000H - @@R_INIS pm 04FC4H 00000H - @@R_INIS i2c_ctr 04FC4H 00000H - @@R_INIS main 04FC4H 00000H - @@R_INIS magic 04FC4H 00000H - @@R_INIS WDT 04FC4H 00000H - @@R_INIS i2c_mcu 04FC4H 00000H - @@R_INIS i2c_twl 04FC4H 00000H - @@R_INIS led 04FC4H 00000H - @@R_INIS rtc 04FC4H 00000H - @@R_INIS vreg_ctr 04FC4H 00000H - @@R_INIS vreg_twl 04FC4H 00000H - @@R_INIS adc 04FC4H 00000H - @@R_INIS renge 04FC4H 00000H - @@R_INIS accero 04FC4H 00000H + 04F04H 00002H + @@R_INIT led_cam 04F06H 00002H + @@R_INIT led_pow 04F08H 00006H + @@R_INIT @rom 04F0EH 00000H + @@R_INIS 04F0EH 00000H CSEG UNIT64KP + @@R_INIS @cstart 04F0EH 00000H + @@R_INIS loader 04F0EH 00000H + @@R_INIS pm 04F0EH 00000H + @@R_INIS i2c_ctr 04F0EH 00000H + @@R_INIS main 04F0EH 00000H + @@R_INIS magic 04F0EH 00000H + @@R_INIS WDT 04F0EH 00000H + @@R_INIS i2c_mcu 04F0EH 00000H + @@R_INIS i2c_twl 04F0EH 00000H + @@R_INIS led 04F0EH 00000H + @@R_INIS rtc 04F0EH 00000H + @@R_INIS vreg_ctr 04F0EH 00000H + @@R_INIS vreg_twl 04F0EH 00000H + @@R_INIS adc 04F0EH 00000H + @@R_INIS renge 04F0EH 00000H + @@R_INIS accero 04F0EH 00000H @@R_INIS self_flash - 04FC4H 00000H - @@R_INIS sw 04FC4H 00000H + 04F0EH 00000H + @@R_INIS sw 04F0EH 00000H @@R_INIS task_debug - 04FC4H 00000H + 04F0EH 00000H @@R_INIS task_misc - 04FC4H 00000H - @@R_INIS task_sys 04FC4H 00000H + 04F0EH 00000H + @@R_INIS task_sys 04F0EH 00000H @@R_INIS pedo_alg_thre_det2 - 04FC4H 00000H - @@R_INIS ini_VECT 04FC4H 00000H + 04F0EH 00000H + @@R_INIS ini_VECT 04F0EH 00000H @@R_INIS task_status - 04FC4H 00000H - @@R_INIS @rom 04FC4H 00000H - @@CALT 04FC4H 00000H CSEG - @@CALT @cstart 04FC4H 00000H - @@CALT loader 04FC4H 00000H - @@CALT pm 04FC4H 00000H - @@CALT i2c_ctr 04FC4H 00000H - @@CALT main 04FC4H 00000H - @@CALT magic 04FC4H 00000H - @@CALT WDT 04FC4H 00000H - @@CALT i2c_mcu 04FC4H 00000H - @@CALT i2c_twl 04FC4H 00000H - @@CALT led 04FC4H 00000H - @@CALT rtc 04FC4H 00000H - @@CALT vreg_ctr 04FC4H 00000H - @@CALT vreg_twl 04FC4H 00000H - @@CALT adc 04FC4H 00000H - @@CALT renge 04FC4H 00000H - @@CALT accero 04FC4H 00000H + 04F0EH 00000H + @@R_INIS led_cam 04F0EH 00000H + @@R_INIS led_pow 04F0EH 00000H + @@R_INIS @rom 04F0EH 00000H + @@CALT 04F0EH 00000H CSEG + @@CALT @cstart 04F0EH 00000H + @@CALT loader 04F0EH 00000H + @@CALT pm 04F0EH 00000H + @@CALT i2c_ctr 04F0EH 00000H + @@CALT main 04F0EH 00000H + @@CALT magic 04F0EH 00000H + @@CALT WDT 04F0EH 00000H + @@CALT i2c_mcu 04F0EH 00000H + @@CALT i2c_twl 04F0EH 00000H + @@CALT led 04F0EH 00000H + @@CALT rtc 04F0EH 00000H + @@CALT vreg_ctr 04F0EH 00000H + @@CALT vreg_twl 04F0EH 00000H + @@CALT adc 04F0EH 00000H + @@CALT renge 04F0EH 00000H + @@CALT accero 04F0EH 00000H @@CALT self_flash - 04FC4H 00000H - @@CALT sw 04FC4H 00000H + 04F0EH 00000H + @@CALT sw 04F0EH 00000H @@CALT task_debug - 04FC4H 00000H + 04F0EH 00000H @@CALT task_misc - 04FC4H 00000H - @@CALT task_sys 04FC4H 00000H + 04F0EH 00000H + @@CALT task_sys 04F0EH 00000H @@CALT pedo_alg_thre_det2 - 04FC4H 00000H - @@CALT ini_VECT 04FC4H 00000H + 04F0EH 00000H + @@CALT ini_VECT 04F0EH 00000H @@CALT task_status - 04FC4H 00000H - @@RLINIT 04FC4H 00000H CSEG UNIT64KP - @@RLINIT loader 04FC4H 00000H - @@RLINIT pm 04FC4H 00000H - @@RLINIT i2c_ctr 04FC4H 00000H - @@RLINIT main 04FC4H 00000H - @@RLINIT magic 04FC4H 00000H - @@RLINIT WDT 04FC4H 00000H - @@RLINIT i2c_mcu 04FC4H 00000H - @@RLINIT i2c_twl 04FC4H 00000H - @@RLINIT led 04FC4H 00000H - @@RLINIT rtc 04FC4H 00000H - @@RLINIT vreg_ctr 04FC4H 00000H - @@RLINIT vreg_twl 04FC4H 00000H - @@RLINIT adc 04FC4H 00000H - @@RLINIT renge 04FC4H 00000H - @@RLINIT accero 04FC4H 00000H + 04F0EH 00000H + @@CALT led_cam 04F0EH 00000H + @@CALT led_pow 04F0EH 00000H + @@RLINIT 04F0EH 00000H CSEG UNIT64KP + @@RLINIT loader 04F0EH 00000H + @@RLINIT pm 04F0EH 00000H + @@RLINIT i2c_ctr 04F0EH 00000H + @@RLINIT main 04F0EH 00000H + @@RLINIT magic 04F0EH 00000H + @@RLINIT WDT 04F0EH 00000H + @@RLINIT i2c_mcu 04F0EH 00000H + @@RLINIT i2c_twl 04F0EH 00000H + @@RLINIT led 04F0EH 00000H + @@RLINIT rtc 04F0EH 00000H + @@RLINIT vreg_ctr 04F0EH 00000H + @@RLINIT vreg_twl 04F0EH 00000H + @@RLINIT adc 04F0EH 00000H + @@RLINIT renge 04F0EH 00000H + @@RLINIT accero 04F0EH 00000H @@RLINIT self_flash - 04FC4H 00000H - @@RLINIT sw 04FC4H 00000H + 04F0EH 00000H + @@RLINIT sw 04F0EH 00000H @@RLINIT task_debug - 04FC4H 00000H + 04F0EH 00000H @@RLINIT task_misc - 04FC4H 00000H - @@RLINIT task_sys 04FC4H 00000H + 04F0EH 00000H + @@RLINIT task_sys 04F0EH 00000H @@RLINIT pedo_alg_thre_det2 - 04FC4H 00000H - @@RLINIT ini_VECT 04FC4H 00000H + 04F0EH 00000H + @@RLINIT ini_VECT 04F0EH 00000H @@RLINIT task_status - 04FC4H 00000H - @@RLINIT @rom 04FC4H 00000H - @@CODEL 04FC4H 00000H CSEG - @@CODEL pm 04FC4H 00000H - @@CODEL i2c_ctr 04FC4H 00000H - @@CODEL magic 04FC4H 00000H - @@CODEL i2c_twl 04FC4H 00000H - @@CODEL led 04FC4H 00000H - @@CODEL rtc 04FC4H 00000H - @@CODEL vreg_ctr 04FC4H 00000H - @@CODEL vreg_twl 04FC4H 00000H - @@CODEL adc 04FC4H 00000H - @@CODEL renge 04FC4H 00000H - @@CODEL accero 04FC4H 00000H - @@CODEL sw 04FC4H 00000H + 04F0EH 00000H + @@RLINIT led_cam 04F0EH 00000H + @@RLINIT led_pow 04F0EH 00000H + @@RLINIT @rom 04F0EH 00000H + @@CODEL 04F0EH 00000H CSEG + @@CODEL pm 04F0EH 00000H + @@CODEL i2c_ctr 04F0EH 00000H + @@CODEL magic 04F0EH 00000H + @@CODEL i2c_twl 04F0EH 00000H + @@CODEL led 04F0EH 00000H + @@CODEL rtc 04F0EH 00000H + @@CODEL vreg_ctr 04F0EH 00000H + @@CODEL vreg_twl 04F0EH 00000H + @@CODEL adc 04F0EH 00000H + @@CODEL renge 04F0EH 00000H + @@CODEL accero 04F0EH 00000H + @@CODEL sw 04F0EH 00000H @@CODEL task_misc - 04FC4H 00000H - @@CODEL task_sys 04FC4H 00000H + 04F0EH 00000H + @@CODEL task_sys 04F0EH 00000H @@CODEL pedo_alg_thre_det2 - 04FC4H 00000H - @@CODEL ini_VECT 04FC4H 00000H - @@LCODEL 04FC4H 00008H CSEG - @@LCODEL abs 04FC4H 00008H -* gap * 04FCCH 0002AH + 04F0EH 00000H + @@CODEL ini_VECT 04F0EH 00000H + @@CODEL led_cam 04F0EH 00000H + @@CODEL led_pow 04F0EH 00000H + @@LCODEL 04F0EH 00008H CSEG + @@LCODEL abs 04F0EH 00008H +* gap * 04F16H 000E0H MGC_TAIL 04FF6H 0000AH CSEG AT MGC_TAIL magic 04FF6H 0000AH @@ -417,194 +437,206 @@ Direc-file:bsr_mcu.dr BASE ADDRESS=FF900H SIZE=00500H OUTPUT INPUT INPUT BASE SIZE SEGMENT SEGMENT MODULE ADDRESS - @@DATA FF900H 00430H DSEG BASEP + @@DATA FF900H 00434H DSEG BASEP @@DATA @cstart FF900H 00002H @@DATA loader FF902H 00000H @@DATA pm FF902H 0001AH @@DATA i2c_ctr FF91CH 00006H - @@DATA main FF922H 0021CH - @@DATA magic FFB3EH 00000H - @@DATA WDT FFB3EH 00000H - @@DATA i2c_mcu FFB3EH 0000AH - @@DATA i2c_twl FFB48H 00000H - @@DATA led FFB48H 00088H - @@DATA rtc FFBD0H 00008H - @@DATA vreg_ctr FFBD8H 0005EH - @@DATA vreg_twl FFC36H 00010H - @@DATA adc FFC46H 0001AH - @@DATA renge FFC60H 00016H - @@DATA accero FFC76H 00002H + @@DATA main FF922H 0021EH + @@DATA magic FFB40H 00000H + @@DATA WDT FFB40H 00000H + @@DATA i2c_mcu FFB40H 0000AH + @@DATA i2c_twl FFB4AH 00000H + @@DATA led FFB4AH 0007CH + @@DATA rtc FFBC6H 00008H + @@DATA vreg_ctr FFBCEH 0005EH + @@DATA vreg_twl FFC2CH 00010H + @@DATA adc FFC3CH 0001AH + @@DATA renge FFC56H 00016H + @@DATA accero FFC6CH 00002H @@DATA self_flash - FFC78H 00002H - @@DATA sw FFC7AH 00008H + FFC6EH 00002H + @@DATA sw FFC70H 0000AH @@DATA task_debug - FFC82H 00000H + FFC7AH 00000H @@DATA task_misc - FFC82H 00004H - @@DATA task_sys FFC86H 00002H + FFC7AH 00004H + @@DATA task_sys FFC7EH 00002H @@DATA pedo_alg_thre_det2 - FFC88H 000A6H - @@DATA ini_VECT FFD2EH 00000H + FFC80H 000A6H + @@DATA ini_VECT FFD26H 00000H @@DATA task_status - FFD2EH 00002H - @@DATA @rom FFD30H 00000H - @@INIT FFD30H 00036H DSEG BASEP - @@INIT @cstart FFD30H 00000H - @@INIT loader FFD30H 00000H - @@INIT pm FFD30H 00002H - @@INIT i2c_ctr FFD32H 00002H - @@INIT main FFD34H 00000H - @@INIT magic FFD34H 00000H - @@INIT WDT FFD34H 00000H - @@INIT i2c_mcu FFD34H 00000H - @@INIT i2c_twl FFD34H 00000H - @@INIT led FFD34H 00006H - @@INIT rtc FFD3AH 00000H - @@INIT vreg_ctr FFD3AH 00000H - @@INIT vreg_twl FFD3AH 00000H - @@INIT adc FFD3AH 0000CH - @@INIT renge FFD46H 00014H - @@INIT accero FFD5AH 00000H + FFD26H 00002H + @@DATA led_cam FFD28H 00002H + @@DATA led_pow FFD2AH 0000AH + @@DATA @rom FFD34H 00000H + @@INIT FFD34H 00038H DSEG BASEP + @@INIT @cstart FFD34H 00000H + @@INIT loader FFD34H 00000H + @@INIT pm FFD34H 00002H + @@INIT i2c_ctr FFD36H 00002H + @@INIT main FFD38H 00000H + @@INIT magic FFD38H 00000H + @@INIT WDT FFD38H 00000H + @@INIT i2c_mcu FFD38H 00000H + @@INIT i2c_twl FFD38H 00000H + @@INIT led FFD38H 00000H + @@INIT rtc FFD38H 00000H + @@INIT vreg_ctr FFD38H 00000H + @@INIT vreg_twl FFD38H 00000H + @@INIT adc FFD38H 0000CH + @@INIT renge FFD44H 00014H + @@INIT accero FFD58H 00000H @@INIT self_flash - FFD5AH 00000H - @@INIT sw FFD5AH 00002H + FFD58H 00000H + @@INIT sw FFD58H 00002H @@INIT task_debug - FFD5CH 00000H + FFD5AH 00000H @@INIT task_misc - FFD5CH 00000H - @@INIT task_sys FFD5CH 00002H + FFD5AH 00000H + @@INIT task_sys FFD5AH 00002H @@INIT pedo_alg_thre_det2 - FFD5EH 00006H - @@INIT ini_VECT FFD64H 00000H + FFD5CH 00006H + @@INIT ini_VECT FFD62H 00000H @@INIT task_status - FFD64H 00002H - @@INIT @rom FFD66H 00000H - @@INIS FFD66H 00000H DSEG UNITP - @@INIS @cstart FFD66H 00000H - @@INIS loader FFD66H 00000H - @@INIS pm FFD66H 00000H - @@INIS i2c_ctr FFD66H 00000H - @@INIS main FFD66H 00000H - @@INIS magic FFD66H 00000H - @@INIS WDT FFD66H 00000H - @@INIS i2c_mcu FFD66H 00000H - @@INIS i2c_twl FFD66H 00000H - @@INIS led FFD66H 00000H - @@INIS rtc FFD66H 00000H - @@INIS vreg_ctr FFD66H 00000H - @@INIS vreg_twl FFD66H 00000H - @@INIS adc FFD66H 00000H - @@INIS renge FFD66H 00000H - @@INIS accero FFD66H 00000H + FFD62H 00002H + @@INIT led_cam FFD64H 00002H + @@INIT led_pow FFD66H 00006H + @@INIT @rom FFD6CH 00000H + @@INIS FFD6CH 00000H DSEG UNITP + @@INIS @cstart FFD6CH 00000H + @@INIS loader FFD6CH 00000H + @@INIS pm FFD6CH 00000H + @@INIS i2c_ctr FFD6CH 00000H + @@INIS main FFD6CH 00000H + @@INIS magic FFD6CH 00000H + @@INIS WDT FFD6CH 00000H + @@INIS i2c_mcu FFD6CH 00000H + @@INIS i2c_twl FFD6CH 00000H + @@INIS led FFD6CH 00000H + @@INIS rtc FFD6CH 00000H + @@INIS vreg_ctr FFD6CH 00000H + @@INIS vreg_twl FFD6CH 00000H + @@INIS adc FFD6CH 00000H + @@INIS renge FFD6CH 00000H + @@INIS accero FFD6CH 00000H @@INIS self_flash - FFD66H 00000H - @@INIS sw FFD66H 00000H + FFD6CH 00000H + @@INIS sw FFD6CH 00000H @@INIS task_debug - FFD66H 00000H + FFD6CH 00000H @@INIS task_misc - FFD66H 00000H - @@INIS task_sys FFD66H 00000H + FFD6CH 00000H + @@INIS task_sys FFD6CH 00000H @@INIS pedo_alg_thre_det2 - FFD66H 00000H - @@INIS ini_VECT FFD66H 00000H + FFD6CH 00000H + @@INIS ini_VECT FFD6CH 00000H @@INIS task_status - FFD66H 00000H - @@INIS @rom FFD66H 00000H - @@DATS FFD66H 00000H DSEG UNITP - @@DATS @cstart FFD66H 00000H - @@DATS loader FFD66H 00000H - @@DATS pm FFD66H 00000H - @@DATS i2c_ctr FFD66H 00000H - @@DATS main FFD66H 00000H - @@DATS magic FFD66H 00000H - @@DATS WDT FFD66H 00000H - @@DATS i2c_mcu FFD66H 00000H - @@DATS i2c_twl FFD66H 00000H - @@DATS led FFD66H 00000H - @@DATS rtc FFD66H 00000H - @@DATS vreg_ctr FFD66H 00000H - @@DATS vreg_twl FFD66H 00000H - @@DATS adc FFD66H 00000H - @@DATS renge FFD66H 00000H - @@DATS accero FFD66H 00000H + FFD6CH 00000H + @@INIS led_cam FFD6CH 00000H + @@INIS led_pow FFD6CH 00000H + @@INIS @rom FFD6CH 00000H + @@DATS FFD6CH 00000H DSEG UNITP + @@DATS @cstart FFD6CH 00000H + @@DATS loader FFD6CH 00000H + @@DATS pm FFD6CH 00000H + @@DATS i2c_ctr FFD6CH 00000H + @@DATS main FFD6CH 00000H + @@DATS magic FFD6CH 00000H + @@DATS WDT FFD6CH 00000H + @@DATS i2c_mcu FFD6CH 00000H + @@DATS i2c_twl FFD6CH 00000H + @@DATS led FFD6CH 00000H + @@DATS rtc FFD6CH 00000H + @@DATS vreg_ctr FFD6CH 00000H + @@DATS vreg_twl FFD6CH 00000H + @@DATS adc FFD6CH 00000H + @@DATS renge FFD6CH 00000H + @@DATS accero FFD6CH 00000H @@DATS self_flash - FFD66H 00000H - @@DATS sw FFD66H 00000H + FFD6CH 00000H + @@DATS sw FFD6CH 00000H @@DATS task_debug - FFD66H 00000H + FFD6CH 00000H @@DATS task_misc - FFD66H 00000H - @@DATS task_sys FFD66H 00000H + FFD6CH 00000H + @@DATS task_sys FFD6CH 00000H @@DATS pedo_alg_thre_det2 - FFD66H 00000H - @@DATS ini_VECT FFD66H 00000H + FFD6CH 00000H + @@DATS ini_VECT FFD6CH 00000H @@DATS task_status - FFD66H 00000H - @@DATS @rom FFD66H 00000H - FSL_DATA FFD66H 00010H DSEG UNITP + FFD6CH 00000H + @@DATS led_cam FFD6CH 00000H + @@DATS led_pow FFD6CH 00000H + @@DATS @rom FFD6CH 00000H + FSL_DATA FFD6CH 00010H DSEG UNITP FSL_DATA fsl_common - FFD66H 00010H - @@INITL FFD76H 00000H DSEG UNIT64KP - @@INITL loader FFD76H 00000H - @@INITL pm FFD76H 00000H - @@INITL i2c_ctr FFD76H 00000H - @@INITL main FFD76H 00000H - @@INITL magic FFD76H 00000H - @@INITL WDT FFD76H 00000H - @@INITL i2c_mcu FFD76H 00000H - @@INITL i2c_twl FFD76H 00000H - @@INITL led FFD76H 00000H - @@INITL rtc FFD76H 00000H - @@INITL vreg_ctr FFD76H 00000H - @@INITL vreg_twl FFD76H 00000H - @@INITL adc FFD76H 00000H - @@INITL renge FFD76H 00000H - @@INITL accero FFD76H 00000H + FFD6CH 00010H + @@INITL FFD7CH 00000H DSEG UNIT64KP + @@INITL loader FFD7CH 00000H + @@INITL pm FFD7CH 00000H + @@INITL i2c_ctr FFD7CH 00000H + @@INITL main FFD7CH 00000H + @@INITL magic FFD7CH 00000H + @@INITL WDT FFD7CH 00000H + @@INITL i2c_mcu FFD7CH 00000H + @@INITL i2c_twl FFD7CH 00000H + @@INITL led FFD7CH 00000H + @@INITL rtc FFD7CH 00000H + @@INITL vreg_ctr FFD7CH 00000H + @@INITL vreg_twl FFD7CH 00000H + @@INITL adc FFD7CH 00000H + @@INITL renge FFD7CH 00000H + @@INITL accero FFD7CH 00000H @@INITL self_flash - FFD76H 00000H - @@INITL sw FFD76H 00000H + FFD7CH 00000H + @@INITL sw FFD7CH 00000H @@INITL task_debug - FFD76H 00000H + FFD7CH 00000H @@INITL task_misc - FFD76H 00000H - @@INITL task_sys FFD76H 00000H + FFD7CH 00000H + @@INITL task_sys FFD7CH 00000H @@INITL pedo_alg_thre_det2 - FFD76H 00000H - @@INITL ini_VECT FFD76H 00000H + FFD7CH 00000H + @@INITL ini_VECT FFD7CH 00000H @@INITL task_status - FFD76H 00000H - @@INITL @rom FFD76H 00000H - @@DATAL FFD76H 00000H DSEG UNIT64KP - @@DATAL loader FFD76H 00000H - @@DATAL pm FFD76H 00000H - @@DATAL i2c_ctr FFD76H 00000H - @@DATAL main FFD76H 00000H - @@DATAL magic FFD76H 00000H - @@DATAL WDT FFD76H 00000H - @@DATAL i2c_mcu FFD76H 00000H - @@DATAL i2c_twl FFD76H 00000H - @@DATAL led FFD76H 00000H - @@DATAL rtc FFD76H 00000H - @@DATAL vreg_ctr FFD76H 00000H - @@DATAL vreg_twl FFD76H 00000H - @@DATAL adc FFD76H 00000H - @@DATAL renge FFD76H 00000H - @@DATAL accero FFD76H 00000H + FFD7CH 00000H + @@INITL led_cam FFD7CH 00000H + @@INITL led_pow FFD7CH 00000H + @@INITL @rom FFD7CH 00000H + @@DATAL FFD7CH 00000H DSEG UNIT64KP + @@DATAL loader FFD7CH 00000H + @@DATAL pm FFD7CH 00000H + @@DATAL i2c_ctr FFD7CH 00000H + @@DATAL main FFD7CH 00000H + @@DATAL magic FFD7CH 00000H + @@DATAL WDT FFD7CH 00000H + @@DATAL i2c_mcu FFD7CH 00000H + @@DATAL i2c_twl FFD7CH 00000H + @@DATAL led FFD7CH 00000H + @@DATAL rtc FFD7CH 00000H + @@DATAL vreg_ctr FFD7CH 00000H + @@DATAL vreg_twl FFD7CH 00000H + @@DATAL adc FFD7CH 00000H + @@DATAL renge FFD7CH 00000H + @@DATAL accero FFD7CH 00000H @@DATAL self_flash - FFD76H 00000H - @@DATAL sw FFD76H 00000H + FFD7CH 00000H + @@DATAL sw FFD7CH 00000H @@DATAL task_debug - FFD76H 00000H + FFD7CH 00000H @@DATAL task_misc - FFD76H 00000H - @@DATAL task_sys FFD76H 00000H + FFD7CH 00000H + @@DATAL task_sys FFD7CH 00000H @@DATAL pedo_alg_thre_det2 - FFD76H 00000H - @@DATAL ini_VECT FFD76H 00000H + FFD7CH 00000H + @@DATAL ini_VECT FFD7CH 00000H @@DATAL task_status - FFD76H 00000H - @@DATAL @rom FFD76H 00000H -* gap * FFD76H 0008AH + FFD7CH 00000H + @@DATAL led_cam FFD7CH 00000H + @@DATAL led_pow FFD7CH 00000H + @@DATAL @rom FFD7CH 00000H +* gap * FFD7CH 00084H MEMORY=RAM2 BASE ADDRESS=FFE20H SIZE=000C0H @@ -620,26 +652,28 @@ Direc-file:bsr_mcu.dr @@BITS WDT FFE21H.0 00000H.0 @@BITS i2c_mcu FFE21H.0 00000H.3 @@BITS i2c_twl FFE21H.3 00000H.0 - @@BITS led FFE21H.3 00000H.5 - @@BITS rtc FFE22H.0 00000H.3 - @@BITS vreg_ctr FFE22H.3 00000H.1 - @@BITS vreg_twl FFE22H.4 00000H.0 - @@BITS adc FFE22H.4 00000H.4 - @@BITS renge FFE23H.0 00000H.3 - @@BITS accero FFE23H.3 00000H.0 + @@BITS led FFE21H.3 00000H.4 + @@BITS rtc FFE21H.7 00000H.3 + @@BITS vreg_ctr FFE22H.2 00000H.1 + @@BITS vreg_twl FFE22H.3 00000H.0 + @@BITS adc FFE22H.3 00000H.4 + @@BITS renge FFE22H.7 00000H.3 + @@BITS accero FFE23H.2 00000H.0 @@BITS self_flash - FFE23H.3 00000H.0 - @@BITS sw FFE23H.3 00000H.2 + FFE23H.2 00000H.0 + @@BITS sw FFE23H.2 00000H.2 @@BITS task_debug - FFE23H.5 00000H.0 + FFE23H.4 00000H.0 @@BITS task_misc - FFE23H.5 00000H.2 - @@BITS task_sys FFE23H.7 00000H.0 + FFE23H.4 00000H.2 + @@BITS task_sys FFE23H.6 00000H.0 @@BITS pedo_alg_thre_det2 - FFE23H.7 00000H.2 - @@BITS ini_VECT FFE24H.1 00000H.0 + FFE23H.6 00000H.2 + @@BITS ini_VECT FFE24H.0 00000H.0 @@BITS task_status - FFE24H.1 00000H.0 + FFE24H.0 00000H.0 + @@BITS led_cam FFE24H.0 00000H.1 + @@BITS led_pow FFE24H.1 00000H.0 * gap * FFE25H 000AFH @@SEGREG FFED4H 00004H DSEG AT @@SEGREG @SEGREG FFED4H 00004H diff --git a/trunk/config.h b/trunk/config.h index 04e2fe1..157b419 100644 --- a/trunk/config.h +++ b/trunk/config.h @@ -20,7 +20,7 @@ #define MCU_VER_MAJOR 0x01 -#define MCU_VER_MINOR 0x34 +#define MCU_VER_MINOR 0x36 // ↑改訂の時は↓気をつけないと体験台の生産できないからね! #ifdef _TAIKENDAI_SEISAN_SPECIAL_ @@ -50,8 +50,6 @@ #define _MODEL_CTR_ // ↑TS board, WM1,1 TS-CTRC, 実機 -// 特殊仕様 // -//#define _SW_HOME_ENABLE_ // ---------------------------------- // #ifdef _MODEL_TEG2_ @@ -71,7 +69,6 @@ unsupported! #ifdef _MODEL_CTR_ #define _PMIC_CTR_ #define _MCU_BSR_ -#define _SW_HOME_ENABLE_ #endif #endif diff --git a/trunk/hoge.bin b/trunk/hoge.bin index a252c7fa05b646dbdb109fd6d0fd66bda715be6b..9ffe93cae9f941a93b6860780f23006641ede9df 100644 GIT binary patch literal 16387 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 F{}NXeE~lJ diff --git a/trunk/led.c b/trunk/led.c index af0f16a..36b52b1 100644 --- a/trunk/led.c +++ b/trunk/led.c @@ -242,10 +242,29 @@ void tsk_led_wifi( ) + + bit info_led_pattern_updated; /* ======================================================== お知らせLED ======================================================== */ +// グラデーション計算など +void calc_info_led_fade_out( st_LED_dim_status* tgt_led ) +{ + tgt_led -> to = 0; + tgt_led -> delta = ( 0 - tgt_led -> now ) / 64; +} + + +void calc_info_led_next_frame( st_LED_dim_status* tgt_led, u8 color ) +{ + tgt_led -> to = color * 128; + // グラデーションのデルタを計算 + 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; @@ -272,12 +291,9 @@ void tsk_led_notify( ) if( info_led_off ) // ←電源off時など強制off { // フェードアウトさせる - LED_dim_status_info_R.to = 0; - LED_dim_status_info_G.to = 0; - LED_dim_status_info_B.to = 0; - LED_dim_status_info_R.delta = ( 0 - LED_dim_status_info_R.now ) / 64; - LED_dim_status_info_G.delta = ( 0 - LED_dim_status_info_G.now ) / 64; - LED_dim_status_info_B.delta = ( 0 - LED_dim_status_info_B.now ) / 64; + 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 { @@ -315,21 +331,17 @@ void tsk_led_notify( ) loops = 0; } - LED_dim_status_info_R.to = info_LED.info_LED.red[frame] * 128; - LED_dim_status_info_G.to = info_LED.info_LED.grn[frame] * 128; - LED_dim_status_info_B.to = info_LED.info_LED.blu[frame] * 128; - - // グラデーションのデルタを計算 - LED_dim_status_info_R.delta = (( LED_dim_status_info_R.to - LED_dim_status_info_R.now ) ) / info_LED.info_LED.fade_time; - LED_dim_status_info_G.delta = (( LED_dim_status_info_G.to - LED_dim_status_info_G.now ) ) / info_LED.info_LED.fade_time; - LED_dim_status_info_B.delta = (( LED_dim_status_info_B.to - LED_dim_status_info_B.now ) ) / info_LED.info_LED.fade_time; - + // グラデーション計算 + 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 -= 1; } } - led_fade_to2( LED_duty_notify_blu, &LED_dim_status_info_B ); - 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 ); + led_fade_to2( LED_duty_notify_red, &LED_dim_status_info_R ); + led_fade_to2( LED_duty_notify_grn, &LED_dim_status_info_G ); } diff --git a/trunk/pm.c b/trunk/pm.c index 92a425b..3095951 100644 --- a/trunk/pm.c +++ b/trunk/pm.c @@ -22,17 +22,19 @@ // ======================================================== u8 raw_adc_temperature; BT_VENDER battery_manufacturer = BT_VENDER_NOT_CHECKED; -st_bt_comp bt_comp; // バッテリパラメータ構造体 -u8 reg_shadow; // NTR PMIC レジスタミラー +static st_bt_comp bt_comp; // バッテリパラメータ構造体 +static u8 reg_shadow; // NTR PMIC レジスタミラー bit bt_authorized; // バッテリパラメータ送信済。充電開始許可 u8 chg_led_override; // アダプタ差したとき、充電するしないに関わらずしばらく点灯させる -u16 bt_volt16; +static u16 bt_volt16; -bit ntr_pm_bt_low_old; +static bit ntr_pm_bt_low_old; bit BT_CHG_STAT_Change; bit BT_IN_CHG_delayed_n; +bit temp_zone_charge_disable; // 温度で充電停止する時にヒステリシスを付けるため + u8 pmic_version; u8 mgic_version[2]; @@ -41,7 +43,8 @@ u8 mgic_version[2]; 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(); // ======================================================== @@ -54,6 +57,7 @@ const u8 BT_MANUF_BORDER[] = { 5, 33, 79, 123, 158, 197, 233 }; + /* ======================================================== 電池の管理 @@ -73,11 +77,9 @@ const u8 BT_MANUF_BORDER[] = { #define INTERVAL_TSK_BATT 60 // ↑100だと充電エラー時にうまく点滅しないので -bit temp_zone_charge_disable; // 温度で充電停止する時にヒステリシスを付けるため void tsk_batt( ) { static u8 task_interval = 0; - static u8 heikinka_h,heikinka_l; if( system_status.pwr_state != OFF_TRIG ) { @@ -91,11 +93,53 @@ void tsk_batt( ) } } - // アダプタステータス更新 ///////// + // アダプタステータス更新 // pm_chk_adapter(); - // 充電 /////////////////////////// - // 温度付きヒステリシス + // 充電 // + bt_chk_temparature(); // 温度チェック + if( !temp_zone_charge_disable && bt_authorized && !PM_EXTDC_n ) + { + BT_CHG_ENABLE(); // 温度範囲OKで充電再開 + } + else + { + BT_CHG_DISABLE(); // 温度危険! 充電停止 + } + + bt_get_charge_status(); // CCIC制御 + + LED_CHARGE = ( ! BT_IN_CHG_delayed_n )? 1: 0; // LEDに反映 + + // アダプタつないだ瞬間、満充電でも数秒わざと点灯させる。給電してることをわからせるため。 + if( chg_led_override != 0 ){ // ↑から見ればわかるが、瞬間(数クロック)消える事がある。気がつく人いるかな…? + chg_led_override -= 1; + LED_CHARGE = 1; + } + + // レジスタの充電中ビットはLEDに同期する + set_bit( LED_CHARGE, vreg_ctr[VREG_C_STATUS], REG_BIT_BATT_CHARGE ); // set_bitのみ。 + + // 割り込み + // tsk_miscが引き受ける + + // 電池残量 // + if( system_status.pwr_state != ON_CHECK ) + { + BT_get_left(); + } +} + + + +/* ******************************************************* + 温度チェック + 温度付きヒステリシス + ******************************************************* */ +void bt_chk_temparature() +{ + static u8 heikinka_h,heikinka_l; + if(( 75 <= raw_adc_temperature ) && ( raw_adc_temperature <= 184 )) { @@ -126,65 +170,39 @@ void tsk_batt( ) heikinka_h = 0; heikinka_l = 0; } +} - if( !temp_zone_charge_disable && bt_authorized && !PM_EXTDC_n ) + + +void bt_get_charge_status() +{ + // CCICの不具合回避のため、/CHGのネゲートをちょっと丁寧に遅延させる + static u8 anti_chatter; + + if( !BT_IN_CHG_n ) { - BT_CHG_ENABLE(); // 温度範囲OKで充電再開 + // さらにチャタリング除去 + if( anti_chatter < 2 ) // 電池無しでアダプタさして、電極をさわさわ + { // すると充電LEDががさがさするので + anti_chatter++; + } + else + { + BT_IN_CHG_delayed_n = 0; // 充電中 + } } else { - BT_CHG_DISABLE(); // 温度危険! 充電停止 - } - - // 充電 // - // →割り込み。 - // CCICの不具合回避のため、/CHGのネゲートをちょっと丁寧に遅延させる - { - static u8 anti_chatter; - - if( !BT_IN_CHG_n ) - { - // さらにチャタリング除去 - if( anti_chatter < 2 ) // 電池無しでアダプタさして、電極をさわさわ - { // すると充電LEDががさがさするので - anti_chatter++; - } - else - { - BT_IN_CHG_delayed_n = 0; // 充電中 - } - } - else - { - // "丁寧に遅延" todo:もっといい方法? - if( !BT_CHG_Ena_n && vreg_ctr[ VREG_C_BT_REMAIN ] < 60 ) - { - BT_IN_CHG_delayed_n = 0; // 充電中と扱う。充電が終わっているはずがない - } - else - { - BT_IN_CHG_delayed_n = 1; - anti_chatter = 0; - } - } - - LED_CHARGE = ( ! BT_IN_CHG_delayed_n )? 1: 0; // LEDに反映 - } - - // アダプタつないだ瞬間、満充電でも数秒わざと点灯させる。給電してることをわからせるため。 - if( chg_led_override != 0 ){ // ↑から見ればわかるが、瞬間(数クロック)消える事がある。気がつく人いるかな…? - chg_led_override -= 1; - LED_CHARGE = 1; - } - - // レジスタの充電中ビットはLEDに同期する - set_bit( LED_CHARGE, vreg_ctr[VREG_C_STATUS], REG_BIT_BATT_CHARGE ); // set_bitのみ。 - // 割り込みはmiscが引き受ける - - // 電池残量 // - if( system_status.pwr_state != ON_CHECK ) - { - BT_get_left(); + // "丁寧に遅延" todo:もっといい方法? + if( !BT_CHG_Ena_n && vreg_ctr[ VREG_C_BT_REMAIN ] < 60 ) + { + BT_IN_CHG_delayed_n = 0; // 充電中と扱う。充電が終わっているはずがない + } + else + { + BT_IN_CHG_delayed_n = 1; + anti_chatter = 0; + } } } @@ -331,14 +349,14 @@ void BT_model_detect() // 電池メーカーの識別 // { - BT_VENDER i; + u8 i; - battery_manufacturer = BT_VENDER_OPEN; + battery_manufacturer = BT_VENDER_OPEN; // デフォルト値 for(i=0; i<=7; i++) { if( temp <= BT_MANUF_BORDER[ i ] ) { - battery_manufacturer = i; + battery_manufacturer = (BT_VENDER)i; break; /* BT_VENDER_MAXELL; // = 0 @@ -404,6 +422,7 @@ static void BT_mgic_init() /* // -1. リセットをかけてみる + かけちゃだめ! dat_16._u16 = swap_endian_16( 0x5400 ); // reset iic_mcu_write( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_COMMAND, 2, &dat_16 ); // こいつはNACKを返す */ @@ -441,15 +460,36 @@ static void BT_mgic_init() // 5.メーカー別パラメータのロード { - // 16バイトごとに区切れとのこと - iic_mcu_set_wo_dma( ); - iic_mcu_write( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_BT_PARAM, 16, &BT_PARAM[ battery_manufacturer ] ); - iic_mcu_set_wo_dma( ); - iic_mcu_write( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_BT_PARAM +16, 16, &BT_PARAM[ battery_manufacturer ][16] ); - iic_mcu_set_wo_dma( ); - iic_mcu_write( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_BT_PARAM +32, 16, &BT_PARAM[ battery_manufacturer ][32] ); - iic_mcu_set_wo_dma( ); - iic_mcu_write( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_BT_PARAM +48, 16, &BT_PARAM[ battery_manufacturer ][48] ); + // 苦肉の策... 誤判定耐性が下がるわけではないし + u8* p_batt_param; + BT_VENDER bt_manuf_temp = battery_manufacturer; + u8 loop; + + /* 埋蔵金をつかってしまったが ↓の苦肉の策でまるめられてしまう + if( battery_manufacturer == 6 ) + { + battery_manufacturer = 5; + } + */ + + if( bt_manuf_temp > BT_VENDER_4 ) + { + bt_manuf_temp = BT_VENDER_3; // 白箱はどうでもよし + } + + if( system_status.family == FAMILY_SPFL ) + { + bt_manuf_temp += 1; + } + + p_batt_param = BT_PARAM[bt_manuf_temp]; + + // 16バイトごとに区切れとのこと (ノイズ対策とか言うんだけど、意味あるんか?) + for( loop = 0; loop < 4; loop++ ) + { + iic_mcu_set_wo_dma( ); + iic_mcu_write( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_BT_PARAM, 16, p_batt_param + loop*16 ); + } } // 6. 150ms以上待つ @@ -583,7 +623,7 @@ void BT_get_left(){ else if( system_status.model == MODEL_SHIROBAKO ) { // 白箱 // - // 電池残量 + // 電池残量 if( iic_mcu_read( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_SOC, 2, temp_fuel ) != ERR_SUCCESS ) { // エミュレーション機能がおかしい @@ -594,8 +634,9 @@ void BT_get_left(){ vreg_ctr[ VREG_C_BT_REMAIN ] = temp_fuel[0]; vreg_ctr[ VREG_C_BT_REMAIN_FINE ] = temp_fuel[1]; } - // 電池電圧 + //* + // 電池電圧 if( iic_mcu_read( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_VCELL, 2, temp_fuel ) == ERR_SUCCESS ) { vreg_ctr[ VREG_C_BT_VOLTAGE ] = temp_fuel[0]; @@ -915,7 +956,6 @@ err PM_BL_set( u8 dat ) // シャットダウンすることがある { wait_ms( 16 + 10 ); -// wait_ms( 84 ); ミツミの1stバグ回避 } iic_mcu_write_a_byte( IIC_SLA_PMIC, PM_REG_ADRS_BL, blset ); @@ -923,10 +963,12 @@ err PM_BL_set( u8 dat ) // SoCがPWMを出すようレジスタをセットしてから遅延が有るため、ステータスを先に // 更新してしまう。 #endif + // PMICのBLのビットと、MCUのSTATUSレジスタのビット位置が逆なため入れ替え vreg_ctr[VREG_C_STATUS] = (( vreg_ctr[VREG_C_STATUS] & 0b10011111 ) | ( (( blset << 6 ) | ( blset << 4 )) & 0b01100000 )); - // PMICのBLのビットと、MCUのSTATUSレジスタのビット位置が逆なため入れ替え + // 割り込み + /// 複数ビットまとめて行うので、いつもの関数使用不可 { u8 tot; @@ -935,7 +977,7 @@ err PM_BL_set( u8 dat ) vreg_ctr[ VREG_C_IRQ3 ] |= ( intset & ~vreg_ctr[ VREG_C_IRQ_MASK3 ] ); IRQ0_neg; tot = 0; - while( !IRQ0 && ( ++tot != 0 ) ){;} // 割り込みを入れ直す + while( !IRQ0 && ( ++tot != 0 ) ){;} IRQ0_ast; } } @@ -1019,7 +1061,7 @@ err PM_sys_pow_on( ) codec_reg_init(); // CODEC 不定レジスタ初期化(reset2の後でないといけないので) reg_shadow = 0; //  〃 こんなところで... - return ( ERR_SUCCESS ); + return ( ERR_SUCCESS ); } diff --git a/trunk/task_misc.c b/trunk/task_misc.c index ef5dc9a..a2f4bbe 100644 --- a/trunk/task_misc.c +++ b/trunk/task_misc.c @@ -266,15 +266,18 @@ extern bit bt_authorized; 6) ( rcomp & 0xFF ) 7) raw_adc_temperature 8) ( !temp_zone_charge_disable | ( bt_authorized << 1 ) ) - 9) + 9) お知らせLEDはフルカラー? + 10) system_status.family ======================================================== */ + +#define KOUMOKU 9 u8 extinfo_read() { - u8 infos[10]; + u8 infos[ KOUMOKU +1 ]; - if( iic_burst_state > 8 ) + if( iic_burst_state > KOUMOKU ) { - return( 0xAA ); + return( 0x73 ); } // static でとるほどのものでないので毎回スタックからとってくる @@ -289,6 +292,8 @@ u8 extinfo_read() infos[6] = raw_adc_temperature; infos[7] = ( !temp_zone_charge_disable | ( bt_authorized << 1 ) ); infos[8] = 1; // system_status.info_fullcolor; + infos[9] = system_status.family; + // 項目足すときは気をつけてね!! // iic_burst_state++; return( infos[ iic_burst_state -1 ] ); diff --git a/trunk/yav_mcu_bsr.pri b/trunk/yav_mcu_bsr.pri index 9cb435b..af75f32 100644 --- a/trunk/yav_mcu_bsr.pri +++ b/trunk/yav_mcu_bsr.pri @@ -22,7 +22,7 @@ SubClock=None [Mapping] Count=0 [Main] -Geometry=13, 66, 1440, 858 +Geometry=154, 154, 1080, 635 Window=Max MDI_MAX=OFF Button=ON @@ -78,10 +78,10 @@ Symbol Type=OFF Language=C Kanji=SJIS [Source] -Geometry=0, 0, 725, 753 +Geometry=344, 62, 733, 655 Window=Normal -DispStart=435 -CaretPos=436,0 +DispStart=40 +CaretPos=81,0 Mode=Normal DispFile= Address1= @@ -140,17 +140,17 @@ SaveStart= SaveEnd= Accumulative=ON [Source1] -Geometry=139, 70, 725, 684 +Geometry=25, 25, 600, 750 Window=Normal -DispStart=153 -CaretPos=121,9 +DispStart=292 +CaretPos=281,5 Mode=Normal DispFile=\\Tsclient\c\78k_data\yav-mcu-basara\trunk\led.c Accumulative=ON [Assemble] Geometry=0, 0, 0, 0 Window=Hide -DispStart=847434752 +DispStart=847627264 CaretPos=0,0 Address1= Address2= @@ -193,7 +193,7 @@ SaveRange=Screen SaveStart= SaveEnd= [Memory] -Geometry=856, 20, 550, 400 +Geometry=0, 0, 0, 0 Window=Hide Boundary=0 Format=Hex @@ -202,7 +202,7 @@ Endian= Ascii=OFF Idtag=OFF Address= -DispStart=00000000 +DispStart=FFFFFFFF CaretPosData=0, 0 CaretPosAscii=0, 0 Address1= @@ -965,16 +965,17 @@ Detail=OFF Last Name= Count=0 [Variable] -Geometry=908, 128, 510, 614 +Geometry=981, 20, 440, 300 Window=Normal Boundary=13762700 -0=.vreg_ctr,P,N,A,+,1 -Line=1 +0=+info_LED.info_LED,.,N,A,-,1 +1=+LED_dim_status_info_R,.,N,A,-,1 +Line=2 [Quick Watch] -0=vreg_ctr,P,A,1 -1=system=status,P,A,1 -2= -3= +0=LED_dim_status_info_G,P,A,1 +1=LED_dim_status_info_B,P,A,1 +2=LED_dim_status_info_R,P,A,1 +3=info_LED.info_LED,P,A,1 4= 5= 6= @@ -988,10 +989,18 @@ Line=1 14= 15= [Software Break] -Geometry=0, 0, 0, 0 -Window=Hide +Geometry=75, 75, 500, 200 +Window=Normal Width=150 30 200 100 -Count=0 +Name0=Swb00001 +Address0=led.c#_tsk_led_notify+0x84 +Window0=ASM +Status0=OFF +Name1=Swb00002 +Address1=led.c#_tsk_led_notify+0x47 +Window1=ASM +Status1=OFF +Count=2 [Reset] Debugger=ON Symbol=OFF diff --git a/trunk/yav_mcu_bsr.prj b/trunk/yav_mcu_bsr.prj index b603d96..b2461ce 100644 --- a/trunk/yav_mcu_bsr.prj +++ b/trunk/yav_mcu_bsr.prj @@ -696,6 +696,68 @@ 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 +[IncFile] +Include1=incs_loader.h +Include2=jhl_defs.h +Include3=config.h +Include4=user_define.h +Include5=bsr_system.h +Include6=renge\renge.h +Include7=renge\renge_defs.h +Include8=renge\renge_task_immediate.h +Include9=vreg_ctr.h +Include10=vreg_twl.h +Include11=loader.h +Include12=i2c_mcu.h +Include13=WDT.h +Include14=..\..\..\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r\fsl.h +Include15=fsl_user.h +Include16=i2c_ctr.h +Include17=pm.h +Include18=rtc.h +Include19=reboot.h +Include20=magic.h +Include21=incs.h +Include22=i2c_twl.h +Include23=accero.h +Include24=pedometer.h +Include25=sw.h +Include26=adc.h +Include27=led.h +Include28=batt_params.h +Include29=pool.h +Include30=i2c_twl_defs.h +Include31=voltable.h +Include32=renge\renge_task_intval.h +Include33=..\..\..\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r\math.h +Include34=self_flash.h +Include35=pedo_lpf_coeff.h [Options.LK78K0R 0] Version=100 O0=bsr_k0r.lmf @@ -780,7 +842,7 @@ G=1 E=0 E0=flash.elk E1=a.elk -GO=1 +GO=0 GOValue=85 GOStart=FC00 GOSizeValue=1024 @@ -989,65 +1051,3 @@ DefaultMode2=1 DefaultMode3=1 DefaultMode4=1 DefaultMode5=1 -[SrcFile] -Source1=loader.c -Source2=pm.c -Source3=i2c_ctr.c -Source4=main.c -Source5=magic.c -Source6=WDT.c -Source7=i2c_mcu.c -Source8=i2c_twl.c -Source9=led.c -Source10=rtc.c -Source11=vreg_ctr.c -Source12=vreg_twl.c -Source13=adc.c -Source14=renge\renge.c -Source15=accero.c -Source16=self_flash.c -Source17=sw.c -Source18=task_debug.c -Source19=task_misc.c -Source20=task_sys.c -Source21=pedo_alg_thre_det2.c -Source22=ini_VECT.c -Source23=task_status.c -Source24=led_cam.c -Source25=led_pow.c -[IncFile] -Include1=incs_loader.h -Include2=jhl_defs.h -Include3=config.h -Include4=user_define.h -Include5=bsr_system.h -Include6=renge\renge.h -Include7=renge\renge_defs.h -Include8=renge\renge_task_immediate.h -Include9=vreg_ctr.h -Include10=vreg_twl.h -Include11=loader.h -Include12=i2c_mcu.h -Include13=WDT.h -Include14=..\..\..\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r\fsl.h -Include15=fsl_user.h -Include16=i2c_ctr.h -Include17=pm.h -Include18=rtc.h -Include19=reboot.h -Include20=magic.h -Include21=incs.h -Include22=i2c_twl.h -Include23=accero.h -Include24=pedometer.h -Include25=sw.h -Include26=adc.h -Include27=led.h -Include28=batt_params.h -Include29=pool.h -Include30=i2c_twl_defs.h -Include31=voltable.h -Include32=renge\renge_task_intval.h -Include33=..\..\..\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r\math.h -Include34=self_flash.h -Include35=pedo_lpf_coeff.h diff --git a/trunk/yav_mcu_bsr.prk b/trunk/yav_mcu_bsr.prk index 6be1f72..6914776 100644 --- a/trunk/yav_mcu_bsr.prk +++ b/trunk/yav_mcu_bsr.prk @@ -1,14 +1,17 @@ [ProjectManager] FrameMax=1 -FrameX=304 -FrameY=108 +FrameX=75 +FrameY=75 FrameCX=1440 FrameCY=850 -OpenFile1=ProjectWindow +OpenFile1=batt_params.h,0,596,19,1842,741,0,19,0,0 +OpenFile2=led.c,0,100,100,1295,581,2,168,45,0 +OpenFile3=ProjectWindow PrjPos=0,0,706,0,291 -OpenFile2=batt_params.h,0,596,19,1842,741,0,19,0,0 -OpenFile3=config.h,0,442,428,1557,1029,63,10,0,0 -OpenFile4=OutputWindow +OpenFile4=led_cam.c,0,125,125,1320,606,0,24,0,0 +OpenFile5=led_pow.c,0,150,150,1345,631,0,205,0,0 +OpenFile6=config.h,0,442,428,1557,1029,29,23,29,0 +OpenFile7=OutputWindow OutputPos=0,34,740,376,1323 ActivePRJ=yav_mcu_bsr.prj [ProjectWindow]