歩数計で年明けの、boundary越え時にログが飛ぶのを修正。

電源off中に、アダプタを差して、抜いて、電源onにすると充電LEDが点灯してしまうのを修正。
 電池を抜いて、検出端子さわさわ に対する耐性は弱くなったと思うが、特殊なシチュエーションなのでよし
壊れたファーム(フォーマット的に)が書かれたときなど、バックアップしたファームをリストアするのを失敗していた
 正確には、リストア後のリブート処理がまずかった。 ブートセクタ交換をせずにbootswapしてはいけないらしい
 強制リセット&リセットフラグTRAPで対処


git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-05-23%20-%20ctr.7z%20+%20svn_v1.068.zip/ctr/svn/ctr_mcu@219 013db118-44a6-b54f-8bf7-843cb86687b1
This commit is contained in:
N2232 2010-08-04 12:54:34 +00:00
parent 1023dcacab
commit 6d52b06373
10 changed files with 86 additions and 84 deletions

View File

@ -521,9 +521,6 @@ void tsk_led_notify( )
LED_duty_notify_blu = 0;
LED_duty_notify_red = 0;
LED_duty_notify_grn = 0;
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.now = 0;
LED_dim_status_info_G.now = 0;
LED_dim_status_info_B.now = 0;

View File

@ -128,18 +128,16 @@ void main( )
{
volatile u8 my_resf = RESF; // ←読むと消え、生存区間の関係
if( ( my_resf & REG_BIT_RESF_WDT ) != 0 )
// 0x80 : TRAP
{
vreg_ctr[ VREG_C_MCU_STATUS ] |= REG_BIT_STATUS_WDT_RESET;
// set_irq( VREG_C_IRQ0, REG_BIT_IRQ_WDT_RESET );
// ↑I2Cの初期化後に行う
system_status.reboot = 1;
}
/*
else if(( my_resf & REG_BIT_RESF_TRAP ) != 0 ) // 'r'で再起動
else if( ( my_resf & REG_BIT_RESF_TRAP ) != 0 ) // ( FSL_ForceReset, 'r' )
{
system_status.reboot = 1;
}
*/
/*
else if(( my_resf & REG_BIT_RESF_LVI ) != 0 )
{

View File

@ -191,6 +191,8 @@ u8 last_month = 0x12;
u8 last_year = 0x99;
u8 now_min;
u8 now_sec;
u8 log_year;
#define HOSU_NODATA 0xFFFF
#define HOSU_MAX 0xFFFE
@ -223,7 +225,7 @@ static void hosu_increment()
DI();
RWAIT = 1;
while( !RWST ){;}
now_year = bcdtob( YEAR );
log_year = now_year = bcdtob( YEAR );
// 履歴読み出し時に使用。BCDのままでよい
last_hour = HOUR;
@ -240,6 +242,7 @@ static void hosu_increment()
if( now_longhour == 65535 )
{
now_longhour = ( ( 365 + (( now_year & 0x03 ) == 1 ? 1: 0 )) * 24 ) -1;
now_year -= 1;
}
// 歩数計が止まっていた時間を考慮して必要なら進める //
@ -372,7 +375,7 @@ u8 hosu_read( )
case( 3 ):
iic_burst_state += 1;
return( btobcd( last_year ) );
return( btobcd( log_year ) );
case( 4 ):
iic_burst_state += 1;

View File

@ -83,38 +83,24 @@ void tsk_batt( )
// アダプタステータス更新 /////////
{
static u8 anti_chatter;
static bit pm_extdc_old;
u8 temp_EXT_DC;
static u8 pm_extdc_old;
u8 temp_pm_extdc;
temp_EXT_DC = !PM_EXTDC_n; // volatileのため
if( pm_extdc_old == temp_EXT_DC )
temp_pm_extdc = !PM_EXTDC_n; // volatileのため
if( pm_extdc_old != temp_pm_extdc )
{
anti_chatter = 0;
}
else
{
if( anti_chatter < 4 ) // 電池無しでアダプタさすとCHG_ENがぱたぱたするので
pm_extdc_old = temp_pm_extdc;
if( temp_pm_extdc )
{
anti_chatter++;
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)( 1000 / INTERVAL_TSK_BATT / SYS_INTERVAL_TICK );
}
else
{
// アダプタの情報など更新
pm_extdc_old = temp_EXT_DC;
if( pm_extdc_old )
{
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)( 1000 / INTERVAL_TSK_BATT / SYS_INTERVAL_TICK );
}
else
{
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;
}
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;
}
}
}
@ -182,7 +168,7 @@ void tsk_batt( )
}
else
{
if( anti_chatter < 4 ) // 電池無しでアダプタさして、電極をさわさわ
if( anti_chatter < 2 ) // 電池無しでアダプタさして、電極をさわさわ
{ // すると充電LEDががさがさするので
anti_chatter++;
}
@ -983,7 +969,7 @@ err PM_sys_pow_off( )
__interrupt void intp4_extdc( )
{
// chg_led_override = (u8)( 1000 / INTERVAL_TSK_BATT / SYS_INTERVAL_TICK );
chg_led_override = 4;
// chg_led_override = 4;
}

View File

@ -36,7 +36,7 @@ const u8 fsl_low_voltage_u08 = 1;
#define INACTIVE_BOOTSECT_TOP 4
#define FIRM_TOP 8
#define FIRM_SIZE 12
#define ALTERNATE_FIRM_BLOCK_TOP ( FIRM_TOP + FIRM_SIZE )
#define ALTERNATE_FIRMTOP 20
#ifdef _MCU_BSR_
@ -90,6 +90,7 @@ extern uni_pool pool;
// 0.D以降 新アップデータ向け
// 新ファームは大丈夫?
#define N_MGC_L 0x1FF6
#define N_MGC_T 0x4FF6
@ -116,13 +117,13 @@ void firm_update( )
0x5000 - 0x7FFF ( 20 - 31)
*/
firm_duplicate( FIRM_TOP,
ALTERNATE_FIRM_BLOCK_TOP );
ALTERNATE_FIRMTOP );
// 全ブロック削除 /////////////////////////////////////
// 電源断を判定するため、最初に全クラスタ消去する
//(新ファームが書かれるところに残ってる、以前のファームのフッタを消したい)
for( target_block = INACTIVE_BOOTSECT_TOP;
target_block < ALTERNATE_FIRM_BLOCK_TOP;
target_block < ALTERNATE_FIRMTOP;
target_block += 1 )
{
FSL_Erase( target_block );
@ -132,7 +133,7 @@ void firm_update( )
// ●ストップコンディションが来るまで続ける
// ●終わったら、スタートアップルーチンに飛ぶ
for( target_block = INACTIVE_BOOTSECT_TOP;
target_block < ALTERNATE_FIRM_BLOCK_TOP;
target_block < ALTERNATE_FIRMTOP;
target_block += 1 )
{
/* すでに消してある。でないと中断されたとき終了してるか判別出来ない
@ -176,8 +177,9 @@ void firm_update( )
alert(1);
// 書き込み後のチェックエラー
// リストア
firm_duplicate( ALTERNATE_FIRM_BLOCK_TOP, FIRM_TOP );
FSL_SwapBootCluster( ); // リセットせずに頭から。FSL_Closeは不要
firm_duplicate( ALTERNATE_FIRMTOP, FIRM_TOP );
FSL_ForceReset(); // リセット
// FSL_SwapBootCluster( ); // ブートスワップ「せずに」再起動って出来ないらしい
// 戻ってこない //
}
@ -187,8 +189,9 @@ void firm_update( )
alert(2);
// 再度消去→書き込み ベリファイを繰り返すだけじゃダメでした... todo…
// リストア
firm_duplicate( ALTERNATE_FIRM_BLOCK_TOP, FIRM_TOP );
FSL_SwapBootCluster( ); // リセットせずに頭から。FSL_Closeは不要
firm_duplicate( ALTERNATE_FIRMTOP, FIRM_TOP );
FSL_ForceReset(); // リセット
// FSL_SwapBootCluster( ); // ブートスワップ「せずに」再起動って出来ないらしい
// 戻ってこない //
}
@ -214,15 +217,17 @@ void firm_update( )
{
// OK!
FSL_InvertBootFlag( );
FSL_SwapBootCluster( ); // リセットせずに頭から。FSL_Closeは不要
}
else
{
// データ(マジックナンバーしか見てない)エラー
// リストア
alert(3);
firm_duplicate( ALTERNATE_FIRM_BLOCK_TOP, FIRM_TOP );
firm_duplicate( ALTERNATE_FIRMTOP, FIRM_TOP );
FSL_ForceReset(); // リセット
// FSL_SwapBootCluster( ); // ブートスワップ「せずに」再起動って出来ないらしい
}
FSL_SwapBootCluster( ); // リセットせずに頭から。FSL_Closeは不要
// 戻ってこない //
}
}
@ -343,7 +348,7 @@ void firm_restore( )
0x4800 - 0x7FFF ( 18 - 27)
0x2000 - 0x47FF ( 8 - 17)
*/
if( firm_duplicate( ALTERNATE_FIRM_BLOCK_TOP, FIRM_TOP ) != ERR_SUCCESS )
if( firm_duplicate( ALTERNATE_FIRMTOP, FIRM_TOP ) != ERR_SUCCESS )
{
alert(2);
}
@ -356,7 +361,8 @@ void firm_restore( )
{
alert(3);
}
FSL_SwapBootCluster();
FSL_ForceReset(); // リセット
// FSL_SwapBootCluster( ); // ブートスワップ「せずに」再起動って出来ないらしい
}

View File

@ -1,20 +1,37 @@
C:\WINDOWS\system32\cmd.exe /c touch magic.c
"C:\Program Files\NEC Electronics Tools\CC78K0R\W2.10\bin\cc78k0r.exe" -c9F0104 -y"C:\Program Files\NEC Electronics Tools\DEV" -_msgoff -irenge -i"C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r" -ms -qvjl2w -sainter_asm -zpb -no pm.c
pm.c(89) : CC78K0R warning W0401: Conversion may lose significant digits
pm.c(160) : CC78K0R warning W0401: Conversion may lose significant digits
pm.c(247) : CC78K0R warning W0510: Pointer mismatch in function 'renge_task_immed_add'
pm.c(467) : CC78K0R warning W0401: Conversion may lose significant digits
pm.c(567) : CC78K0R warning W0401: Conversion may lose significant digits
pm.c(568) : CC78K0R warning W0401: Conversion may lose significant digits
pm.c(674) : CC78K0R warning W0401: Conversion may lose significant digits
pm.c(710) : CC78K0R warning W0401: Conversion may lose significant digits
pm.c(748) : CC78K0R warning W0401: Conversion may lose significant digits
pm.c(832) : CC78K0R warning W0401: Conversion may lose significant digits
pm.c(840) : CC78K0R warning W0401: Conversion may lose significant digits
pm.c(995) : CC78K0R warning W0510: Pointer mismatch in function 'renge_task_immed_add'
pm.c(1062) : CC78K0R warning W0401: Conversion may lose significant digits
pm.c(1065) : CC78K0R warning W0401: Conversion may lose significant digits
batt_params.h(97) : CC78K0R warning W0401: Conversion may lose significant digits
batt_params.h(97) : CC78K0R warning W0401: Conversion may lose significant digits
batt_params.h(98) : CC78K0R warning W0401: Conversion may lose significant digits
batt_params.h(98) : CC78K0R warning W0401: Conversion may lose significant digits
batt_params.h(99) : CC78K0R warning W0401: Conversion may lose significant digits
batt_params.h(99) : CC78K0R warning W0401: Conversion may lose significant digits
batt_params.h(100) : CC78K0R warning W0401: Conversion may lose significant digits
batt_params.h(101) : CC78K0R warning W0401: Conversion may lose significant digits
batt_params.h(102) : CC78K0R warning W0401: Conversion may lose significant digits
batt_params.h(103) : CC78K0R warning W0401: Conversion may lose significant digits
Compilation complete, 0 error(s) and 24 warning(s) found.
"C:\Program Files\NEC Electronics Tools\RA78K0R\W1.31\bin\ra78k0r.exe" -c9F0104 -y"C:\Program Files\NEC Electronics Tools\DEV" -_msgoff inter_asm\pm.asm
Assembly complete, 0 error(s) and 0 warning(s) found.
"C:\Program Files\NEC Electronics Tools\CC78K0R\W2.10\bin\cc78k0r.exe" -c9F0104 -y"C:\Program Files\NEC Electronics Tools\DEV" -_msgoff -irenge -i"C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r" -ms -qvjl2w -sainter_asm -zpb -no magic.c
Compilation complete, 0 error(s) and 0 warning(s) found.
"C:\Program Files\NEC Electronics Tools\RA78K0R\W1.31\bin\ra78k0r.exe" -c9F0104 -y"C:\Program Files\NEC Electronics Tools\DEV" -_msgoff inter_asm\magic.asm
Assembly complete, 0 error(s) and 0 warning(s) found.
"C:\Program Files\NEC Electronics Tools\CC78K0R\W2.10\bin\cc78k0r.exe" -c9F0104 -y"C:\Program Files\NEC Electronics Tools\DEV" -_msgoff -irenge -i"C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r" -ms -qvjl2w -sainter_asm -zpb -no led.c
led.c(108) : CC78K0R warning W0745: Expected function prototype
led.c(244) : CC78K0R warning W0401: Conversion may lose significant digits
led.c(249) : CC78K0R warning W0401: Conversion may lose significant digits
led.c(311) : CC78K0R warning W0401: Conversion may lose significant digits
led.c(370) : CC78K0R warning W0401: Conversion may lose significant digits
led.c(396) : CC78K0R warning W0401: Conversion may lose significant digits
led.c(573) : CC78K0R warning W0401: Conversion may lose significant digits
Compilation complete, 0 error(s) and 7 warning(s) found.
"C:\Program Files\NEC Electronics Tools\RA78K0R\W1.31\bin\ra78k0r.exe" -c9F0104 -y"C:\Program Files\NEC Electronics Tools\DEV" -_msgoff inter_asm\led.asm
Assembly complete, 0 error(s) and 0 warning(s) found.
"C:\Program Files\NEC Electronics Tools\RA78K0R\W1.31\bin\lk78k0r.exe" -y"C:\Program Files\NEC Electronics Tools\DEV" -_msgoff -obsr.lmf "..\..\..\Program Files\NEC Electronics Tools\CC78K0R\W2.10\lib78k0r\s0rm.rel" -go85h,0FC00h,1024 -pbsr_k0r.map -nkd -gb7EFFFFh -b"C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\lib78k0r\fsl.lib" -bcl0rdm.lib -bcl0rm.lib -bcl0rmf.lib -i"C:\Program Files\NEC Electronics Tools\CC78K0R\W2.10\lib78k0r" -dbsr_mcu.dr -s -w0 loader.rel pm.rel i2c_ctr.rel main.rel magic.rel WDT.rel i2c_mcu.rel i2c_twl.rel led.rel rtc.rel vreg_ctr.rel vreg_twl.rel adc.rel renge.rel accero.rel self_flash.rel sw.rel task_debug.rel task_misc.rel task_sys.rel pedo_alg_thre_det2.rel ini_VECT.rel task_status.rel
"C:\Program Files\NEC Electronics Tools\RA78K0R\W1.31\bin\lk78k0r.exe" -y"C:\Program Files\NEC Electronics Tools\DEV" -_msgoff -obsr.lmf "..\..\..\Program Files\NEC Electronics Tools\CC78K0R\W2.10\lib78k0r\s0rm.rel" -go85h,0FC00h,1024 -gi10A84B295BE95C03D45Bh -pbsr_k0r.map -nkd -gb7EFFFFh -b"C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\lib78k0r\fsl.lib" -bcl0rdm.lib -bcl0rm.lib -bcl0rmf.lib -i"C:\Program Files\NEC Electronics Tools\CC78K0R\W2.10\lib78k0r" -dbsr_mcu.dr -s -w0 loader.rel pm.rel i2c_ctr.rel main.rel magic.rel WDT.rel i2c_mcu.rel i2c_twl.rel led.rel rtc.rel vreg_ctr.rel vreg_twl.rel adc.rel renge.rel accero.rel self_flash.rel sw.rel task_debug.rel task_misc.rel task_sys.rel pedo_alg_thre_det2.rel ini_VECT.rel task_status.rel
Link complete, 0 error(s) and 0 warning(s) found.
"C:\Program Files\NEC Electronics Tools\RA78K0R\W1.31\bin\oc78k0r.exe" -y"C:\Program Files\NEC Electronics Tools\DEV" -_msgoff -o.\bsr.hex -ki -U0FFH -R bsr.lmf
Object Conversion Complete, 0 error(s) and 0 warning(s) found.
@ -24,4 +41,4 @@ intel-HEX to bsr bin converter
file converted!
Build Total error(s) : 0 Total warning(s) : 7
Build Total error(s) : 0 Total warning(s) : 24

View File

@ -22,7 +22,7 @@ SubClock=None
[Mapping]
Count=0
[Main]
Geometry=92, 176, 1200, 882
Geometry=-1211, 40, 1200, 882
Window=Max
MDI_MAX=OFF
Button=ON
@ -78,10 +78,10 @@ Symbol Type=OFF
Language=C
Kanji=SJIS
[Source]
Geometry=406, 215, 757, 775
Geometry=43, 34, 757, 775
Window=Normal
DispStart=41
CaretPos=79,0
DispStart=70
CaretPos=71,0
Mode=Normal
DispFile=
Address1=
@ -998,15 +998,7 @@ Line=16
Geometry=1049, 744, 445, 260
Window=Normal
Width=150 30 200 100
Name0=Swb00001
Address0=pm.c#_tsk_batt+0xd9
Window0=ASM
Status0=ON
Name1=Swb00003
Address1=pm.c#_tsk_batt+0xcd
Window1=ASM
Status1=ON
Count=2
Count=0
[Reset]
Debugger=ON
Symbol=OFF

View File

@ -844,7 +844,7 @@ GO=1
GOValue=85
GOStart=FC00
GOSizeValue=1024
GI=0
GI=1
GIValue=10A84B295BE95C03D45B
CCZA=0
MemInfoCheck=1

View File

@ -1,14 +1,17 @@
[ProjectManager]
FrameMax=0
FrameX=0
FrameY=55
FrameX=21
FrameY=37
FrameCX=1299
FrameCY=1044
OpenFile1=ProjectWindow
PrjPos=0,2,754,3,253
OpenFile2=task_sys.c,0,110,110,1354,867,0,329,0,0
OpenFile3=task_misc.c,0,352,352,1596,1109,0,219,0,0
OpenFile4=OutputWindow
OpenFile4=led.c,0,154,154,1133,791,25,566,0,0
OpenFile5=self_flash.c,0,220,220,1199,857,42,223,42,0
OpenFile6=pedo_alg_thre_det2.c,0,298,260,1277,897,9,217,9,0
OpenFile7=OutputWindow
OutputPos=0,73,1018,56,1365
ActivePRJ=yav_mcu_bsr.prj
[ProjectWindow]

View File

@ -12,7 +12,7 @@ T=4c3fc60e
8=reboot.h
9=magic.h
[pm.c]
T=4c5769ce
T=4c592153
1=incs.h
2=adc.h
3=led.h
@ -36,7 +36,7 @@ T=4c3c0229
7=adc.h
8=pool.h
[magic.c]
T=4c58c413
T=4c59305d
1=config.h
[WDT.c]
T=4bf0d1e1
@ -52,7 +52,7 @@ T=4c29c700
3=i2c_twl_defs.h
4=i2c_twl.h
[led.c]
T=4c58fedd
T=4c591e8a
1=incs.h
2=led.h
[rtc.c]
@ -98,7 +98,7 @@ T=4c525844
2=incs.h
3=..\..\..\Program Files\NEC Electronics Tools\CC78K0R\W2.10\inc78k0r\math.h
[self_flash.c]
T=4c502289
T=4c592fc3
1=incs_loader.h
2=..\..\..\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r\fsl.h
3=fsl_user.h
@ -143,7 +143,7 @@ T=4c3ea0de
9=adc.h
10=self_flash.h
[pedo_alg_thre_det2.c]
T=4c3fdc7e
T=4c59304d
1=incs.h
2=..\..\..\Program Files\NEC Electronics Tools\CC78K0R\W2.10\inc78k0r\math.h
3=accero.h