デバッグ用のコードを ifdef で追い出した(割り込み禁止期間を短く

git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-05-23%20-%20ctr.7z%20+%20svn_v1.068.zip/ctr/svn/ctr_mcu@70 013db118-44a6-b54f-8bf7-843cb86687b1
This commit is contained in:
fujita_ryohei 2009-12-25 02:28:48 +00:00
parent c31ec53407
commit a8f5504152
7 changed files with 208 additions and 125 deletions

View File

@ -79,8 +79,8 @@ void main_loop( void )
renge_task_interval_run( ); // 内部で、システムtickまたは強制起動します
while( renge_task_interval_run_force != 0 )
{
renge_task_interval_run_force = 0;
renge_task_interval_run( );
renge_task_immed_run( );
}
WDT_Restart( );
renge_task_immed_run( ); // ここのループが廻る度に実行されます

View File

@ -18,6 +18,9 @@
#include "..\config.h"
#include "..\user_define.h"
// #define _renge_test_
//******************************************************************************
bit renge_flg_interval;
bit renge_task_interval_run_force;
@ -26,7 +29,6 @@ u8 system_time;
#include "..\bsr_system.h"
extern system_status_ system_status;
@ -80,11 +82,14 @@ err renge_task_interval_run(){
u8 i;
// インターバル起動
if( renge_flg_interval == 1 ){
renge_flg_interval = 0;
for( i = 0; i != TSK_LAST; i += 1 )
if(( renge_flg_interval == 1 )
|| ( renge_task_interval_run_force != 0 )) // todo 統合
{
renge_task_interval_run_force = 0;
renge_flg_interval = 0;
for( i = 0; i != TSK_LAST; i += 1 )
{
tasks[ i ]();
tasks[ i ]();
}
}
return( ERR_SUCCESS );
@ -135,15 +140,13 @@ err renge_task_immed_add( task_status* new_task ){
if( tasks_immed[ i ] == new_task )
{
// 重複登録はしない
NOP();
// NOP();
return( ERR_ERR );
}
}
else
{
// 空きを見つけた
DI();
DBG_LED_WIFI_2_on;
// もたもたしているうちに割り込み等から割り込まれるのを考慮
// 滅多にないはずだが
for( ; i < TASK_IMMED_RUN_LIST_MAX; i += 1 )
@ -151,23 +154,25 @@ err renge_task_immed_add( task_status* new_task ){
if( tasks_immed[ i ] == TSK_IMM_EMPTY_ )
{
tasks_immed[ i ] = new_task;
DBG_LED_WIFI_2_off;
EI();
return( ERR_SUCCESS );
}
}
// 割り込まれてタスク登録できなくなった
DBG_LED_WIFI_2_off;
EI();
return( ERR_ERR );
}
}
// タスク登録しすぎ(無いはず
NOP(); // デバッガで捕まえるため
// NOP(); // デバッガで捕まえるため
return( ERR_ERR );
}
/**************************************
**************************************/
@ -180,6 +185,7 @@ err renge_task_immed_run(){
for( list_id = 0; list_id < TASK_IMMED_RUN_LIST_MAX; list_id += 1 ){
if( tasks_immed[ list_id ] != TSK_IMM_EMPTY_ ){
#ifdef _renge_test_
if( tasks_immed[ list_id ] == TSK_IMM_DELETED_ )
{
NOP();
@ -189,6 +195,7 @@ err renge_task_immed_run(){
// 予期しないタイミングで immed_run が呼ばれた
}
else
#endif
{
if( tasks_immed[ list_id ]() == ERR_SUCCESS )
{
@ -197,6 +204,20 @@ err renge_task_immed_run(){
last_task_id = list_id;
}
}
#ifdef _renge_test_
else
{
list_id += 1;
for( ; list_id < TASK_IMMED_RUN_LIST_MAX; list_id++ )
{
if( tasks_immed[ list_id ] != TSK_IMM_EMPTY_ )
{
NOP(); // ?
}
}
break;
}
#endif
}
// タスク削除
@ -205,46 +226,105 @@ err renge_task_immed_run(){
{
u8 i,j;
#ifdef _renge_test_
if ( tasks_immed[ 1 ] != 0 ){
NOP();
}
#endif
// リスト前詰め
for( i = 0; i < TASK_IMMED_RUN_LIST_MAX; i++)
{
if( tasks_immed[ i ] == TSK_IMM_DELETED_ )
{
tasks_immed[ i ] = TSK_IMM_EMPTY_;
}
}
i = 0; // 前詰め後リストの最後尾
j = 0; // リストの後ろの方のタスクを探す
for( j = 0; j < TASK_IMMED_RUN_LIST_MAX; j++)
// for( ; j <= last_task_id; j++) // 間で割り込まれたときに困る
j = 1; // リストの後ろの方のタスクを探す
for( ; j < TASK_IMMED_RUN_LIST_MAX; j++ )
{
DI();
DBG_LED_WIFI_2_on;
if( tasks_immed[ i ] == TSK_IMM_EMPTY_ )
if( tasks_immed[ i ] == TSK_IMM_DELETED_ )
{
// 前詰めできるスペースを見つけた
if(( tasks_immed[ j ] != TSK_IMM_EMPTY_ )
&& ( tasks_immed[ j ] != TSK_IMM_DELETED_ ))
if( tasks_immed[ j ] == TSK_IMM_EMPTY_ )
{
// リストの最後だった
for( ; i < j ; i += 1 )
{
tasks_immed[ i ] = TSK_IMM_EMPTY_;
}
#ifdef _renge_test_
/// ほんと?
j += 1;
for( ; j < TASK_IMMED_RUN_LIST_MAX; j++ )
{
if( tasks_immed[ j ] != TSK_IMM_EMPTY_ )
{
NOP(); // ?
}
}
#endif
DBG_LED_WIFI_2_off;
EI();
break;
}
if( tasks_immed[ j ] != TSK_IMM_DELETED_ )
{
// 探索隊が前詰めすべきタスクを見つけた
tasks_immed[ i ] = tasks_immed[ j ];
tasks_immed[ j ] = TSK_IMM_EMPTY_;
tasks_immed[ j ] = TSK_IMM_DELETED_;
i += 1;
}
}
else
{
// 実行すべきタスクが滞留することになった
#ifdef _renge_test_
// タスクが滞留
if( tasks_immed[ i ] == TSK_IMM_EMPTY_ )
{
NOP();
// そんなはずない
}
#endif
i += 1;
}
DBG_LED_WIFI_2_off;
EI();
if( tasks_immed[ i ] == TSK_IMM_EMPTY_ )
{
#ifdef _renge_test_
NOP();
#endif
break;
// リストの最後だった
}
}
DI();
DBG_LED_WIFI_2_on;
// ここまでで完全に前詰めされている
for( j = 0; j < TASK_IMMED_RUN_LIST_MAX; j++ )
{
if( tasks_immed[ j ] == TSK_IMM_EMPTY_ )
{
#ifdef _renge_test_
NOP();
j += 1;
for( ; j < TASK_IMMED_RUN_LIST_MAX; j++ )
{
if( tasks_immed[ j ] != TSK_IMM_EMPTY_ )
{
NOP(); // ?
}
}
#endif
break;
// リストの最後
}
if( tasks_immed[ j ] == TSK_IMM_DELETED_ )
{
tasks_immed[ j ] = TSK_IMM_EMPTY_;
}
}
DBG_LED_WIFI_2_off;
EI();
}
}
}
while( last_task_id != 0xFF ); // タスクが残っていたら再実行

View File

@ -1,7 +1,6 @@
#ifndef _USER_DEF_
#define _USER_DEF_
#define IIC_SLV_ADDR_MONITOR 0x6E
#define IIC_T_SLAVEADDRESS 0x4A
#define IIC_C_SLAVEADDRESS 0x4A

View File

@ -3,10 +3,6 @@ C:\WINDOWS\system32\cmd.exe /c touch 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 -quvjl3wt -sainter_asm -zp -no renge\renge.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\renge.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 -gi0FFFFFFFFFFFFFFFFFFFFh -pbsr_k0r.map -nkd -kp -gb6EFBFFh -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 ini_VECT.rel led.rel rtc.rel vreg_ctr.rel vreg_twl.rel adc.rel renge.rel accero.rel self_flash.rel reboot.rel sw.rel task_debug.rel task_misc.rel task_sys.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 -nu -ki bsr.lmf

View File

@ -78,10 +78,10 @@ Symbol Type=OFF
Language=C
Kanji=SJIS
[Source]
Geometry=310, 103, 974, 1014
Geometry=235, 74, 1025, 1014
Window=Normal
DispStart=262
CaretPos=263,0
DispStart=33
CaretPos=89,0
Mode=Normal
DispFile=
Address1=
@ -140,26 +140,26 @@ SaveStart=
SaveEnd=
Accumulative=ON
[Source1]
Geometry=35, 10, 974, 1014
Geometry=34, 50, 1025, 1014
Window=Normal
DispStart=8
CaretPos=157,0
DispStart=73
CaretPos=94,0
Mode=Normal
DispFile=task_misc.c
DispFile=vreg_ctr.c
Accumulative=ON
[Source2]
Geometry=119, 82, 974, 1014
Geometry=135, 144, 1025, 1014
Window=Normal
DispStart=145
CaretPos=216,0
DispStart=111
CaretPos=200,0
Mode=Normal
DispFile=loader.c
DispFile=task_misc.c
Accumulative=ON
[Assemble]
Geometry=605, 2, 600, 400
Window=Normal
DispStart=16229
CaretPos=16229,27
DispStart=687
CaretPos=687,27
Address1=
Address2=
Address3=
@ -793,7 +793,7 @@ RP2=3
RP3=3
PC=3
SP=3
PSW=3
PSW=7
ES=3
CS=3
[Event Manager]
@ -871,78 +871,80 @@ Detail=OFF
Last Name=
Count=0
[Variable]
Geometry=1225, 6, 354, 536
Geometry=1225, 6, 354, 1082
Window=Normal
Boundary=13762700
0=.P0.0,P,S,A,+,1
1=.p3.0,P,S,A,+,1
2=.P0.1,P,S,A,+,1
3=.system_status,.,N,A,+,1
4=.last_task_id,P,N,A,+,1
5=.i,P,N,A,+,1
6=.j,P,N,A,+,1
7=.list_id,P,N,A,+,1
8=+tasks_immed,P,N,A,-,1
9=.reg_shadow,P,N,A,+,1
Line=10
3=.rtcen,P,S,A,+,1
4=.rtcif,P,S,A,+,1
5=.RTCIMK,P,S,A,+,1
6=.tasks,P,N,A,+,1
7=.new_task,.,N,A,+,1
8=.SEC,P,S,A,+,1
9=.wdte,P,S,A,+,1
10=.system_status,.,N,A,+,1
11=.last_task_id,P,N,A,+,1
12=.i,P,N,A,+,1
13=.j,P,N,A,+,1
14=.list_id,P,N,A,+,1
15=.renge_flg_interval,P,N,A,+,1
16=+vreg_twl,P,N,A,-,1
17=+vreg_ctr,P,N,A,-,1
18=.tasks_immed,P,N,A,+,1
19=.reg_shadow,P,N,A,+,1
Line=20
[Quick Watch]
0=P2.4,B,A,1
1=ADPC,P,A,1
2=task_immed_run_list,P,A,1
3=tasks_immed,P,A,1
4=last_task_id,P,A,1
5=j,P,A,1
6=system_status,P,A,1
7=RESET1_n,P,A,1
8=P0.0,P,A,1
9=P0.1,P,A,1
10=p14.0,P,A,1
11=reg_shadow,P,A,1
12=list_id,P,A,1
13=p[14,P,A,1
14=p14,P,A,1
15=p3.0,P,A,1
0=list_id,P,A,1
1=p[14,P,A,1
2=p14,P,A,1
3=p3.0,P,A,1
4=new_task,P,A,1
5=tasks,P,A,1
6=RTCIMK,P,A,1
7=rtcen,P,A,1
8=renge_flg_interval,P,A,1
9=rtccmk,P,A,1
10=rtciimk,P,A,1
11=wdte,P,A,1
12=SEC,P,A,1
13=rtcif,P,A,1
14=vreg_ctr,P,A,1
15=vreg_twl,P,A,1
[Software Break]
Geometry=1204, 674, 500, 428
Window=Normal
Width=150 30 200 100
Name0=Swb00002
Address0=renge.c#_renge_task_immed_add+0x59
Name0=Swb00001
Address0=task_misc.c#_do_command+0x15
Window0=ASM
Status0=ON
Name1=Swb00003
Address1=renge.c#_renge_task_immed_add+0x4e
Name1=Swb00002
Address1=task_misc.c#_do_command+0x37
Window1=ASM
Status1=ON
Name2=Swb00009
Address2=renge.c#_renge_task_immed_run+0x25
Name2=Swb00003
Address2=task_misc.c#_do_command+0x4a
Window2=ASM
Status2=ON
Name3=Swb00005
Address3=pm.c#_ntr_pmic_comm+0x86
Address3=task_misc.c#_do_command+0x8
Window3=ASM
Status3=ON
Name4=Swb00006
Address4=task_misc.c#_do_command+0x8
Name4=Swb00004
Address4=vreg_twl.c#_vreg_twl_write+0x43
Window4=ASM
Status4=ON
Name5=Swb00001
Address5=task_misc.c#_do_command+0x15
Name5=Swb00007
Address5=vreg_ctr.c#_vreg_ctr_write+0x10d
Window5=ASM
Status5=ON
Name6=Swb00004
Address6=task_misc.c#_do_command+0x34
Name6=Swb00006
Address6=vreg_ctr.c#_vreg_ctr_write+0x11c
Window6=ASM
Status6=ON
Name7=Swb00007
Address7=task_misc.c#_do_command+0x44
Window7=ASM
Status7=ON
Name8=Swb00008
Address8=pm.c#_PM_sys_pow_on+0x6f
Window8=ASM
Status8=ON
Count=9
Count=7
[Reset]
Debugger=ON
Symbol=OFF

View File

@ -1,23 +1,28 @@
[ProjectManager]
FrameMax=0
FrameX=142
FrameY=100
FrameMax=1
FrameX=-1187
FrameY=33
FrameCX=1299
FrameCY=1043
OpenFile1=accero.c,0,272,165,1516,922,26,119,26,0
OpenFile2=task_sys.c,0,521,328,1765,1085,25,250,25,0
OpenFile3=bsr_mcu.dr,0,198,198,1177,834,0,54,0,0
OpenFile4=adc.c,0,220,220,1199,856,0,112,0,0
OpenFile5=loader.c,0,266,31,1510,788,23,43,23,0
OpenFile6=sw.c,0,132,132,1376,889,0,166,17,0
OpenFile7=pm.c,0,421,154,1400,790,25,271,0,0
OpenFile8=config.h,0,282,262,1526,1019,0,19,0,0
OpenFile9=ProjectWindow
OpenFile1=task_sys.c,0,521,328,1765,1085,25,250,25,0
OpenFile2=bsr_mcu.dr,0,198,198,1177,834,0,54,0,0
OpenFile3=loader.c,0,266,31,1510,788,23,43,23,0
OpenFile4=sw.c,0,132,132,1376,889,0,166,17,0
OpenFile5=pm.c,0,421,154,1400,790,25,271,0,0
OpenFile6=config.h,0,282,262,1526,1019,0,19,0,0
OpenFile7=vreg_ctr.c,0,159,252,1138,888,30,201,38,0
OpenFile8=ProjectWindow
PrjPos=0,2,754,3,253
OpenFile10=vreg_ctr.c,0,264,264,1243,900,0,344,0,0
OpenFile11=renge\renge.c,0,286,286,1265,922,0,136,0,0
OpenFile12=OutputWindow
OutputPos=0,229,1000,411,1513
OpenFile9=renge\renge_task_immediate.h,0,308,308,1276,933,0,23,0,0
OpenFile10=renge\renge_task_intval.h,0,0,0,968,625,37,23,37,0
OpenFile11=renge\renge_defs.h,0,22,22,990,647,0,50,0,0
OpenFile12=adc.c,0,220,220,1199,856,0,73,0,0
OpenFile13=accero.c,0,272,165,1516,922,0,114,13,0
OpenFile14=main.c,0,66,66,1034,691,0,70,0,0
OpenFile15=renge\renge.c,0,285,287,1264,923,15,225,0,0
OpenFile16=task_misc.c,0,88,88,1056,713,0,147,0,0
OpenFile17=OutputWindow
OutputPos=0,79,487,55,1164
ActivePRJ=yav_mcu_bsr.prj
[ProjectWindow]
ProjectWindowDispType=0

View File

@ -11,17 +11,18 @@ T=4b3081f8
7=rtc.h
8=reboot.h
[pm.c]
T=4b2f0666
T=4b333a0b
1=incs.h
2=adc.h
3=led.h
4=pm.h
5=renge\renge.h
[i2c_ctr.c]
T=4b2611c9
1=incs.h
2=accero.h
[main.c]
T=4b25f14b
T=4b3321f7
1=incs_loader.h
2=WDT.h
3=rtc.h
@ -30,7 +31,7 @@ T=4b25f14b
6=led.h
7=adc.h
[magic.c]
T=4b30a8db
T=4b333500
1=config.h
[WDT.c]
T=4afd21ca
@ -77,7 +78,7 @@ T=4b308310
3=pm.h
4=led.h
[renge\renge.c]
T=4b30a8e8
T=4b333374
1=renge\renge_defs.h
2=renge\renge_task_intval.h
3=renge\renge_task_immediate.h
@ -86,7 +87,7 @@ T=4b30a8e8
6=user_define.h
7=bsr_system.h
[accero.c]
T=4b309c03
T=4b32f7f3
1=incs.h
2=..\..\Program Files\NEC Electronics Tools\CC78K0R\W2.10\inc78k0r\math.h
[self_flash.c]
@ -114,7 +115,7 @@ T=4b3056a4
3=pm.h
4=accero.h
[task_misc.c]
T=4b277423
T=4b333a0b
1=incs.h
2=renge\renge.h
3=pm.h
@ -144,19 +145,19 @@ T=4b25f1a9
T=4b023fdb
1=config.h
[user_define.h]
T=4b307b06
T=4b333a0b
[config.h]
T=4b306830
[bsr_system.h]
T=4b3064de
[renge\renge.h]
T=4b024862
T=4b32c168
1=renge\renge_defs.h
2=renge\renge_task_immediate.h
[renge\renge_defs.h]
T=4b30a8e8
T=4b32f836
[renge\renge_task_immediate.h]
T=4afa8168
T=4b32f91f
1=renge\renge_defs.h
[vreg_ctr.h]
T=4b277ab7
@ -202,7 +203,7 @@ T=4b25e782
[i2c_twl_defs.h]
T=4afd21ca
[renge\renge_task_intval.h]
T=4ac9ab84
T=4b32f777
1=renge\renge_defs.h
[i2c_twl.h]
T=4b309c28