歩数レジスタのインクリメントをアトミック処理にした。

歩数計算に使う加速度データの読み出しをアトミックにした。


git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-05-23%20-%20ctr.7z%20+%20svn_v1.068.zip/ctr/svn/ctr_mcu@357 013db118-44a6-b54f-8bf7-843cb86687b1
This commit is contained in:
n2232 2011-08-01 02:41:54 +00:00
parent 3de2b9b362
commit e55363d036
2 changed files with 13 additions and 4 deletions

Binary file not shown.

View File

@ -91,9 +91,13 @@ void pedometer()
u8 i;
u16 sx16 = abs( (u16)vreg_ctr[VREG_C_ACC_XH] * 256 + vreg_ctr[VREG_C_ACC_XL] );
u16 sy16 = abs( (u16)vreg_ctr[VREG_C_ACC_YH] * 256 + vreg_ctr[VREG_C_ACC_YL] );
u16 sz16 = abs( (u16)vreg_ctr[VREG_C_ACC_ZH] * 256 + vreg_ctr[VREG_C_ACC_ZL] );
u16 sx16,sy16,sz16;
DI();
sx16 = abs( (u16)vreg_ctr[VREG_C_ACC_XH] * 256 + vreg_ctr[VREG_C_ACC_XL] );
sy16 = abs( (u16)vreg_ctr[VREG_C_ACC_YH] * 256 + vreg_ctr[VREG_C_ACC_YL] );
sz16 = abs( (u16)vreg_ctr[VREG_C_ACC_ZH] * 256 + vreg_ctr[VREG_C_ACC_ZL] );
EI();
// ベクトルのノルム
#ifdef _mcu_
@ -281,6 +285,7 @@ void hosu_increment_if_necessary()
}
// 累積の更新 //
DI();
if( ++vreg_ctr[ VREG_C_ACC_HOSU_L ] == 0 ) // カンストチェック
{
if( ++vreg_ctr[ VREG_C_ACC_HOSU_M ] == 0 )
@ -292,6 +297,7 @@ void hosu_increment_if_necessary()
}
}
}
EI();
}
@ -347,11 +353,14 @@ void clear_hosu_hist()
pool.vreg_c_ext.pedo_log[ hours ] = 0xFFFF;
}
while( hours != 0 );
DI();
vreg_ctr[ VREG_C_ACC_HOSU_L ] = 0;
vreg_ctr[ VREG_C_ACC_HOSU_M ] = 0;
vreg_ctr[ VREG_C_ACC_HOSU_H ] = 0;
p_record = 0;
pedolog_overflow = false;
EI();
}