歩数計アルゴリズム変更、ファイルを分割
 フィルタ処理が重たい…
電源投入時にCODECに音量を書きに行く
TS対応
 スリープ
 HOME
 コア電圧1.15V
 TS向けはバージョンが4Xになる
SVR2のふらつき防止を変更
TWL側I2Cレジスタ変更
 SiFi削除(要望により)
CTR側レジスタ追加
 sub_sec
 フリー増量・アドレス移動


git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-05-23%20-%20ctr.7z%20+%20svn_v1.068.zip/ctr/svn/ctr_mcu@98 013db118-44a6-b54f-8bf7-843cb86687b1
This commit is contained in:
fujita_ryohei 2010-03-09 11:21:43 +00:00
parent f0d4b2ed8f
commit 447be796c2
25 changed files with 1618 additions and 1268 deletions

View File

@ -14,7 +14,6 @@
#pragma MUL
#pragma BCD
#include "incs.h"
#include <math.h>
@ -49,15 +48,12 @@
#define VREG_BITMASK_ACC_CONF_HOSU ( 1 << 1 )
#define VREG_BITMASK_ACC_CONF_ACQ ( 1 << 0 )
// ========================================================
extern u16 pool[];
// ========================================================
task_status tsk_soft_int( );
static void hosu_increment();
u16 get_long_hour();
/* ========================================================
@ -96,300 +92,15 @@ task_status_immed tsk_cbk_accero( )
}
}
// 歩数計 /////////////////////////////////////////////
// offでなければ、電源off中でも計測
// if( ( vreg_ctr[VREG_C_ACC_CONFIG] & VREG_BITMASK_ACC_CONF_HOSU ) != 0x00 )
{
static s16 th_H = 0x3300; // 閾値。暫定。動的変更とかしたい…ので変数
static s16 th_L = 0x2C00;
static u16 acc_norm[3]; // 加速度の大きさのヒストリ。数字が大きい方が古い
static u8 interval_hh; // 山-山間の時間。短過ぎたらはじく。
static u8 time_l; // 前回の極小からの経過時間
static u16 peak_l; // 谷の深さ
static u16 peak_h; // 山の高さ
static u16 norm_avg[8];
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] );
norm_avg[7] = norm_avg[6]; // 最近8サンプルの移動平均
norm_avg[6] = norm_avg[5];
norm_avg[5] = norm_avg[4];
norm_avg[4] = norm_avg[3];
norm_avg[3] = norm_avg[2];
norm_avg[2] = norm_avg[1];
norm_avg[1] = norm_avg[0];
norm_avg[0] = sqrt( (long)sx16 * ( sx16 / 2 ) +
(long)sy16 * ( sy16 / 2 ) +
(long)sz16 * ( sz16 / 2 ) );
acc_norm[2] = acc_norm[1]; // 移動平均結果のヒストリ
acc_norm[1] = acc_norm[0];
acc_norm[0] =
// norm_avg[7] /8 + norm_avg[6] /8 + norm_avg[5] /8 + norm_avg[4] /8 +
norm_avg[3] /4 + norm_avg[2] /4 + norm_avg[1] /4 + norm_avg[0] /4;
// ここから共通
if( acc_norm[2] <= acc_norm[1] && acc_norm[1] > acc_norm[0]
&& acc_norm[0] > th_H )
// 極大で、閾値を超えていた
{
if(( 15 < interval_hh ) && ( interval_hh < 80 ))
// 前回の極大からの間隔がほどよい
{
if( time_l < interval_hh )
// 谷を挟んでいる
{
if( acc_norm[0] - peak_l > 4000 ){
// 一歩増えました
hosu_increment();
}
}
}
interval_hh = 0;
}
else
{
interval_hh += ( interval_hh != 255 ) ? 1: 0; // 飽和加算って楽に書けたらいいのに
}
// (2) 直近の極小からの時間
if( acc_norm[2] >= acc_norm[1] && acc_norm[1] < acc_norm[0]
&& acc_norm[0] < th_L )
{
// 極小を検出
time_l = 0;
peak_l = acc_norm[0];
}
else
{
time_l += ( time_l != 255 ) ? 1: 0;
}
{
static u8 i = 0;
vreg_ctr[VREG_C_ACC_DBG_0] = i;
vreg_ctr[VREG_C_ACC_DBG_1] = (u8)( acc_norm[0] / 256 & 0x00FF );
vreg_ctr[VREG_C_ACC_DBG_2] = (u8)( acc_norm[0] & 0x00FF );
vreg_ctr[VREG_C_ACC_DBG_3] = 0;
vreg_ctr[VREG_C_ACC_DBG_4] = interval_hh;
vreg_ctr[VREG_C_ACC_DBG_5] = 0;
vreg_ctr[VREG_C_ACC_DBG_6] = time_l;
vreg_ctr[VREG_C_ACC_DBG_7] = vreg_ctr[ VREG_C_ACC_HOSU_L ];
vreg_ctr[VREG_C_ACC_DBG_8] = (u8)( peak_l / 256 & 0x00FF );
vreg_ctr[VREG_C_ACC_DBG_9] = (u8)( peak_l & 0x00FF );
vreg_ctr[VREG_C_ACC_DBG_A] = (u8)( norm_avg[0] / 256 & 0x00FF );
vreg_ctr[VREG_C_ACC_DBG_B] = (u8)( norm_avg[0] & 0x00FF );
}
// ここまで
}
DBG_LED_WIFI_2_on;
pedometer(); // •à<E280A2>”Œv
DBG_LED_WIFI_2_off;
return ( ERR_SUCCESS );
}
/*=========================================================
 
  
 
========================================================*/
u8 p_record;
u8 last_hour = 0x23; // 履歴の最新は何時?
u8 last_day = 0x30;
u8 last_month = 0x12;
u8 last_year = 0x99;
static void hosu_increment()
{
static u16 last_hour_fny;
// 累積の更新 //
// いろいろ失敗した...
if( ++vreg_ctr[ VREG_C_ACC_HOSU_L ] == 0 )
{
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; // カンスト orz
vreg_ctr[ VREG_C_ACC_HOSU_M ] = 255;
vreg_ctr[ VREG_C_ACC_HOSU_H ] = 255;
}
}
}
{
// 毎時履歴の更新 /////////////////////////////
// 空白の時間を考慮する。1時間以上放置されたなど。
u16 now_hour;
u8 now_year;
// 時計を止める必要が有るので↓は一気に行って下さい
DI();
RWAIT = 1;
while( !RWST ){;}
now_year = bcdtob( YEAR );
last_hour = HOUR; // 履歴読み出し時に使用。BCDのままでよい
last_day = DAY;
last_month = MONTH;
now_hour = get_long_hour();
// RWAIT = 0; ↑で行っています
// EI(); 〃
// 歩数計が止まっていた時間を考慮して必要なら進める //
if( last_year == now_year )
{
if( now_hour > last_hour_fny )
{
fill_hosu_hist_hours( now_hour - last_hour_fny );
}
}
else if( last_year == ( now_year -1 ) )
{
// 年をまたいでいるとき
u16 temp_hours = ( ( 365 + (( now_year & 0x03 ) == 1 ? 1: 0 )) * 24 ) - last_hour_fny + now_hour;
fill_hosu_hist_hours( temp_hours );
}
else if( last_year < now_year )
{
// 数年放置
fill_hosu_hist_hours( 0 );
}
else
{
// カレンダーが巻き戻るなど
// ノーケアでよい
}
last_year = now_year;
last_hour_fny = now_hour;
// 実際にインクリメント
if( pool[ p_record ] != 0xFFFE )
{
pool[ p_record ] += 1;
}
}
}
/* ========================================================
0
======================================================== */
void fill_hosu_hist_hours( u16 hours )
{
if( hours > 255 )
{
hours = 0;
}
// 空白の数時間の設定
do
{
p_record += 1;
pool[ p_record ] = 0;
hours -= 1;
}
while( hours != 0 );
}
/* ========================================================
0
======================================================== */
void clear_hosu_hist()
{
u8 hours = 0;
// 空白の数時間の設定
do
{
pool[ hours ] = 0xFFFF;
hours -= 1;
}
while( hours != 0 );
}
u8 hosu_read_state;
bit record_read_msb_lsb;
/* ========================================================
()
======================================================== */
void hosu_read_end( )
{
record_read_msb_lsb = 0;
hosu_read_state = 0;
}
/* ========================================================
...
======================================================== */
u8 hosu_read( )
{
u8 dat;
u16 temp;
static u8 p_record_buffer;
switch( hosu_read_state ){
case( 0 ):
p_record_buffer = p_record;
hosu_read_state += 1;
return( last_hour );
case( 1 ):
hosu_read_state += 1;
return( last_day );
case( 2 ):
hosu_read_state += 1;
return( last_month );
case( 3 ):
hosu_read_state += 1;
return( btobcd(last_year) );
case( 4 ):
hosu_read_state += 1;
return( 0x55 ); // reserved dummy
case( 5 ):
hosu_read_state += 1;
return( 0xAA ); // reserved. dummy
default:
temp = pool[ p_record_buffer ];
if( record_read_msb_lsb == 0 )
{
dat = (u8)( temp & 0x00FF );
}
else
{
dat = (u8)(( temp >> 8 ) & 0x00FF );
p_record_buffer -= 1;
}
record_read_msb_lsb += 1;
return( dat );
}
}
/*=======================================================
@ -516,50 +227,3 @@ __interrupt void intp23_ACC_ready( )
}
}
/* ========================================================
(hour)
u16 long_hour
======================================================== */
static const u16 DAYS_FROM_HNY[] = {
0,
0, 31, 31+28, 59+31, 90+30,
120+31, 151+30, 181+31, 212+31, 243+30,
273+31, 304+30 };
u16 get_long_hour()
{
u16 long_hour;
u8 year_hex;
u8 month_hex;
u8 day_hex;
u8 hour_hex;
year_hex = bcdtob( YEAR );
month_hex = bcdtob( MONTH );
day_hex = bcdtob( DAY );
hour_hex = bcdtob( HOUR );
RWAIT = 0;
EI();
// まず日数の部分
long_hour = DAYS_FROM_HNY[ month_hex ];
if(( ( year_hex & 0x03 ) == 0 ) && ( ( 3 <= month_hex )
|| (( 2 == month_hex ) && ( day_hex == 29 )) ))
{
// 閏年で、閏日より後
long_hour += 1;
}
long_hour += day_hex - 1;
long_hour *= 24; // 日数→時間
long_hour += hour_hex;
return( long_hour );
}

View File

@ -3,16 +3,12 @@
#include "jhl_defs.h"
#include "pedometer.h"
///////////////////////////////////////////////////////////
task_status_immed tsk_cbk_accero( );
task_status_immed acc_hosu_set( );
void hosu_read_end( );
u8 hosu_read( );
void fill_hosu_hist_hours( u16 );
void clear_hosu_hist();
#endif

View File

@ -14,9 +14,10 @@ bit adc_updated;
u8 adc_raw_vol;
u8 adc_raw_dep;
u8 vol_old;
#define INTERVAL_TSK_ADC 16
#define INTERVAL_TSK_ADC 3
/* ========================================================
ADC設定と
@ -69,29 +70,61 @@ void tsk_adc( )
{
// Tune ///////////////////////////////////////
{
// 似非ヒステリシスを付けて64段
// 似非ヒステリシス V2
// ガリオームには適さない
#define KIKAN 32
static u8 old_value;
static s8 diffs;
u8 temp;
if( abs( adc_raw_dep - old_value ) >= 2 )
{
vreg_ctr[ VREG_C_TUNE ] = ( adc_raw_dep & 0xFC );
// 大きく離れた
vreg_ctr[ VREG_C_TUNE ] = adc_raw_dep;
old_value = adc_raw_dep;
#if 0
;
;
set_irq( VREG_C_IRQ0, REG_BIT_VR_TUNE_CHANGE );
#endif
vreg_ctr[ VREG_C_DBG1 ] = vreg_ctr[ VREG_C_TUNE ];
diffs = 0;
}
else
{
// 近所の値でも、ある期間でいっぱい偏っていたらそっちに寄せる
static u8 kikan_count = KIKAN;
if( old_value < adc_raw_dep )
{
diffs += 1;
}
else if( old_value > adc_raw_dep )
{
diffs -= 1;
}
if( --kikan_count == 0 )
{
if( diffs >= KIKAN && ( diffs < 64 ))
{
old_value += 1;
}
else if( ( diffs <= ( 256 - KIKAN )) && ( diffs > ( 128 + 64 ) )) // あらー?
{
old_value -= 1;
}
vreg_ctr[ VREG_C_TUNE ] = old_value;
kikan_count = KIKAN;
diffs = 0;
}
}
vreg_ctr[ VREG_C_DBG2 ] = adc_raw_dep; // dbg
}
vreg_ctr[ VREG_C_DBG1 ] = vreg_ctr[ VREG_C_TUNE ];
vreg_ctr[ VREG_C_DBG2 ] = adc_raw_dep; // dbg
// Volume /////////////////////////////////////
{
// 似非ヒステリシスを付けて64段
static u8 vol_old;
u8 temp;
if( abs( adc_raw_vol - vol_old ) >= 2 )
@ -202,7 +235,6 @@ __interrupt void int_adc( )
static u8 hist_snd_vol[3];
static u8 hist_bt_temp[3];
static u8 index;
u8 temp;
EI( );
switch ( ADS )

View File

@ -33,6 +33,10 @@
///////////////////////////////////////
extern u8 vol_old;
///////////////////////////////////////
u8 get_adc( u8 ch );

View File

@ -2,7 +2,7 @@
#define __config__
#define _debug_
//#define _debug_led_
#define _debug_led_
#define MCU_VER_MAJOR 0x00
@ -43,13 +43,10 @@
#define _MCU_BSR_
#endif
/*
#ifdef _MODEL_CTR_
#define _PMIC_CTR_
#define _MCU_BSR_
#define _SW_HOME_ENABLE_
#endif
*/
#endif

View File

@ -12,6 +12,8 @@
#ifndef _incs_h_
#define _incs_h_
#define _mcu_
#include "jhl_defs.h"
#include "user_define.h"

View File

@ -2,9 +2,9 @@
#define __jhl_defs_h__
typedef unsigned char u8;
typedef char s8;
typedef signed char s8;
typedef unsigned short u16;
typedef short s16;
typedef signed short s16;
typedef unsigned char err;

400
trunk/pedo_alg_thre_det2.c Normal file
View File

@ -0,0 +1,400 @@
/* ********************************************************
********************************************************* */
#pragma MUL
#pragma BCD
#include "incs.h"
#include <math.h>
#include "accero.h"
#include "pedometer.h"
static void hosu_increment();
u16 get_long_hour();
extern u16 pool[];
/*=========================================================
 
========================================================*/
void pedometer()
{
static s16 th_H = 15500; // 閾値。暫定。動的変更とかしたい…ので変数
static s16 th_L = 15000;
static u16 acc_norm[3]; // 加速度の大きさのヒストリ。数字が大きい方が古い
static u16 acc_norm_temp;
static u8 interval_hh; // 山-山間の時間。短過ぎたらはじく。
static u8 time_l; // 前回の極小からの経過時間
static u16 peak_l; // 谷の深さ
static u16 peak_h; // 山の高さ
static u16 norm_hist[TAP];
static u8 hist_indx;
static u8 t_rise;
signed long filterd;
u8 i;
signed long temp1,temp2,temp3;
signed long temp4,temp5,temp6;
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] );
// ベクトルのノルム
#ifdef _mcu_
norm_hist[ hist_indx & TAP-1 ] = sqrt( (long)sx16 * ( sx16 / 2 ) +
(long)sy16 * ( sy16 / 2 ) +
(long)sz16 * ( sz16 / 2 )
);
#endif
#ifdef _pc_
norm_hist[ hist_indx & TAP-1 ] = normh * 256 + norml;
#endif
hist_indx += 1;
// ヒストリにフィルタを掛けて、今回の値を求める
filterd = 0;
for( i = 0; i != 64; i++ ) // 係数が0ばかりのため
{
filterd += (signed long)norm_hist[ ( hist_indx + i ) & TAP-1 ] * lpf_coeff[ i ];
}
filterd += (4096)*512;
acc_norm_temp = (s16)( filterd /1024 & 0xFFFF ); // ←FIL_COEFF_QUANTから正規化
/*
if( acc_norm[0] < acc_norm_temp )
{
t_rise += 1;
if( t_rise == 0 )
t_rise == 254;
}
else
{
t_rise = 0;
}
*/
if( acc_norm[0] != acc_norm_temp )
{
acc_norm[2] = acc_norm[1]; // ヒストリ
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 )
// 極大で、閾値を超えていた
{
if( 21 < interval_hh )
// 前回の極大からの間隔がほどよい
{
if(( interval_hh < 160 ) && ( time_l < interval_hh ))
// 谷を挟んでいる
{
if( acc_norm[0] - peak_l > 4200 ){
// 一歩増えました
hosu_increment();
}
}
interval_hh = 0;
}
if( acc_norm[0] > 18000 )
{
th_L = acc_norm[0] - 6000;
}
else
{
th_L = acc_norm[0] - 3500;
}
}
else
{
interval_hh += ( interval_hh != 255 ) ? 1: 0; // 飽和加算って楽に書けたらいいのに
}
// (2) 直近の極小からの時間
if( acc_norm[2] >= acc_norm[1] && acc_norm[1] < acc_norm[0]
&& acc_norm[0] < th_L )
{
// 極小を検出
time_l = 0;
peak_l = acc_norm[0];
}
else
{
time_l += ( time_l != 255 ) ? 1: 0;
}
{
static u8 i = 0;
vreg_ctr[VREG_C_FREE_0] = i++;
vreg_ctr[VREG_C_FREE_1] = (u8)( acc_norm[0] / 256 & 0x00FF );
vreg_ctr[VREG_C_FREE_2] = (u8)( acc_norm[0] & 0x00FF );
vreg_ctr[VREG_C_FREE_3] = (u8)( norm_hist[ hist_indx -1 & TAP-1 ] / 256 & 0xFF );
vreg_ctr[VREG_C_FREE_4] = (u8)( norm_hist[ hist_indx -1 & TAP-1 ] & 0xFF );
vreg_ctr[VREG_C_FREE_5] = interval_hh;
vreg_ctr[VREG_C_FREE_6] = time_l;
vreg_ctr[VREG_C_FREE_7] = vreg_ctr[ VREG_C_ACC_HOSU_L ];
vreg_ctr[VREG_C_FREE_8] = (u8)( peak_l / 256 & 0x00FF );
vreg_ctr[VREG_C_FREE_9] = (u8)( peak_l & 0x00FF );
// vreg_ctr[VREG_C_FREE_A] = (u8)( norm_avg[0] / 256 & 0x00FF );
// vreg_ctr[VREG_C_FREE_B] = (u8)( norm_avg[0] & 0x00FF );
}
}
/*=========================================================
 
  
 
========================================================*/
u8 p_record;
u8 last_hour = 0x23; // 履歴の最新は何時?
u8 last_day = 0x30;
u8 last_month = 0x12;
u8 last_year = 0x99;
static void hosu_increment()
{
static u16 last_hour_fny;
// 累積の更新 //
// いろいろ失敗した...
if( ++vreg_ctr[ VREG_C_ACC_HOSU_L ] == 0 )
{
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; // カンスト orz
vreg_ctr[ VREG_C_ACC_HOSU_M ] = 255;
vreg_ctr[ VREG_C_ACC_HOSU_H ] = 255;
}
}
}
{
// 毎時履歴の更新 /////////////////////////////
// 空白の時間を考慮する。1時間以上放置されたなど。
u16 now_hour;
u8 now_year;
// 時計を止める必要が有るので↓は一気に行って下さい
DI();
RWAIT = 1;
while( !RWST ){;}
now_year = bcdtob( YEAR );
last_hour = HOUR; // 履歴読み出し時に使用。BCDのままでよい
last_day = DAY;
last_month = MONTH;
now_hour = get_long_hour();
// RWAIT = 0; ↑で行っています
// EI(); 〃
// 歩数計が止まっていた時間を考慮して必要なら進める //
if( last_year == now_year )
{
if( now_hour > last_hour_fny )
{
fill_hosu_hist_hours( now_hour - last_hour_fny );
}
}
else if( last_year == ( now_year -1 ) )
{
// 年をまたいでいるとき
u16 temp_hours = ( ( 365 + (( now_year & 0x03 ) == 1 ? 1: 0 )) * 24 ) - last_hour_fny + now_hour;
fill_hosu_hist_hours( temp_hours );
}
else if( last_year < now_year )
{
// 数年放置
fill_hosu_hist_hours( 0 );
}
else
{
// カレンダーが巻き戻るなど
// ノーケアでよい
}
last_year = now_year;
last_hour_fny = now_hour;
// 実際にインクリメント
if( pool[ p_record ] != 0xFFFE )
{
pool[ p_record ] += 1;
}
}
}
/* ========================================================
0
======================================================== */
void fill_hosu_hist_hours( u16 hours )
{
if( hours > 255 )
{
hours = 0;
}
// 空白の数時間の設定
do
{
p_record += 1;
pool[ p_record ] = 0;
hours -= 1;
}
while( hours != 0 );
}
/* ========================================================
0
======================================================== */
void clear_hosu_hist()
{
u8 hours = 0;
// 空白の数時間の設定
do
{
pool[ hours ] = 0xFFFF;
hours -= 1;
}
while( hours != 0 );
}
u8 hosu_read_state;
bit record_read_msb_lsb;
/* ========================================================
()
======================================================== */
void hosu_read_end( )
{
record_read_msb_lsb = 0;
hosu_read_state = 0;
}
/* ========================================================
...
======================================================== */
u8 hosu_read( )
{
u8 dat;
u16 temp;
static u8 p_record_buffer;
switch( hosu_read_state ){
case( 0 ):
p_record_buffer = p_record;
hosu_read_state += 1;
return( last_hour );
case( 1 ):
hosu_read_state += 1;
return( last_day );
case( 2 ):
hosu_read_state += 1;
return( last_month );
case( 3 ):
hosu_read_state += 1;
return( btobcd(last_year) );
case( 4 ):
hosu_read_state += 1;
return( 0x55 ); // reserved dummy
case( 5 ):
hosu_read_state += 1;
return( 0xAA ); // reserved. dummy
default:
temp = pool[ p_record_buffer ];
if( record_read_msb_lsb == 0 )
{
dat = (u8)( temp & 0x00FF );
}
else
{
dat = (u8)(( temp >> 8 ) & 0x00FF );
p_record_buffer -= 1;
}
record_read_msb_lsb += 1;
return( dat );
}
}
/* ========================================================
(hour)
u16 long_hour
======================================================== */
static const u16 DAYS_FROM_HNY[] = {
0,
0, 31, 31+28, 59+31, 90+30,
120+31, 151+30, 181+31, 212+31, 243+30,
273+31, 304+30 };
u16 get_long_hour()
{
u16 long_hour;
u8 year_hex;
u8 month_hex;
u8 day_hex;
u8 hour_hex;
year_hex = bcdtob( YEAR );
month_hex = bcdtob( MONTH );
day_hex = bcdtob( DAY );
hour_hex = bcdtob( HOUR );
RWAIT = 0;
EI();
// まず日数の部分
long_hour = DAYS_FROM_HNY[ month_hex ];
if(( ( year_hex & 0x03 ) == 0 ) && ( ( 3 <= month_hex )
|| (( 2 == month_hex ) && ( day_hex == 29 )) ))
{
// 閏年で、閏日より後
long_hour += 1;
}
long_hour += day_hex - 1;
long_hour *= 24; // 日数→時間
long_hour += hour_hex;
return( long_hour );
}

96
trunk/pedometer.h Normal file
View File

@ -0,0 +1,96 @@
#ifndef _pedo_
#define _pedo_
void hosu_read_end( );
u8 hosu_read( );
void fill_hosu_hist_hours( u16 );
void clear_hosu_hist();
// =========================================================
#define TAP 64
#define FIL_COEFF_QUANT 10
static 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
};
// */
// =========================================================
void pedometer();
static void hosu_increment();
#endif

View File

@ -527,7 +527,7 @@ err PM_sys_pow_on( )
// Žc—ÊŠm”F
temp = 99;
if( temp < ( 255 * 0.03 ) )
if( temp < 5 )
{
return ( ERR_ERR );
}

View File

@ -124,9 +124,8 @@ task_status_immed tski_PM_BL_set();
#define PM_off() ( iic_mcu_write_a_byte( IIC_SLA_PMIC, PM_REG_ADRS_VDD_SYS, 0 ))
#ifdef _model_CTR_
#define PM_VDD_ecoMode() ( iic_mcu_write_a_byte( IIC_SLA_PMIC, PM_REG_ADRS_POW_SAVE, 0x27 ))
#define PM_VDD_normMode() ( iic_mcu_write_a_byte( IIC_SLA_PMIC, PM_REG_ADRS_POW_SAVE, 0x00 ))
// todo コア電圧を下げる
#define PM_VDD_normMode() ( iic_mcu_write_a_byte( IIC_SLA_PMIC, PM_REG_ADRS_POW_SAVE, PM_REG_BIT_VDD1P_1R15 | PM_REG_BIT_VDD_PWM ))
#define PM_VDD_ecoMode() ( iic_mcu_write_a_byte( IIC_SLA_PMIC, PM_REG_ADRS_POW_SAVE, PM_REG_BIT_VDD1P_0R90 | PM_REG_BIT_VDD_AUTO ))
#else
// 本番チップ待ち
@ -135,9 +134,7 @@ task_status_immed tski_PM_BL_set();
#define PM_VDD_normMode() ( iic_mcu_write_a_byte( IIC_SLA_PMIC, PM_REG_ADRS_POW_SAVE, PM_REG_BIT_VDD1P_1R10 | PM_REG_BIT_VDD_PWM ))
#else
//#define PM_VDD_ecoMode() ( iic_mcu_write_a_byte( IIC_SLA_PMIC, PM_REG_ADRS_POW_SAVE, PM_REG_BIT_VDD1P_1R05 | PM_REG_BIT_VDD_AUTO ))
#define PM_VDD_ecoMode() ( iic_mcu_write_a_byte( IIC_SLA_PMIC, PM_REG_ADRS_POW_SAVE, PM_REG_BIT_VDD1P_1R05 | PM_REG_BIT_VDD_PWM ))
#define PM_VDD_ecoMode() ( iic_mcu_write_a_byte( IIC_SLA_PMIC, PM_REG_ADRS_POW_SAVE, PM_REG_BIT_VDD1P_1R05 | PM_REG_BIT_VDD_AUTO ))
#define PM_VDD_normMode() ( iic_mcu_write_a_byte( IIC_SLA_PMIC, PM_REG_ADRS_POW_SAVE, PM_REG_BIT_VDD1P_1R05 | PM_REG_BIT_VDD_PWM ))
#endif

View File

@ -12,18 +12,15 @@
******************************************************************************/
/*
#include "jhl_defs.h"
/*/
typedef unsigned char u8;
typedef char s8;
typedef unsigned short u16;
typedef short s16;
typedef unsigned char u8;
typedef signed char s8;
typedef unsigned short u16;
typedef signed short s16;
typedef unsigned char err;
typedef unsigned char err;
//*/
// ************************************
#define SYS_INTERVAL_TICK 1.953
@ -41,7 +38,7 @@ typedef enum{
ERR_CONTINUE
}IMMED_TASK_ERR;
/**************************************

View File

@ -94,16 +94,24 @@ void tsk_sw( )
{
if( ( CLICK_THRESHOLD < SW_pow_count ) && ( SW_pow_count <= HOLD_THREASHOLD ) )
{
#ifdef _SW_HOME_ENABLE_
set_irq( VREG_C_IRQ0, REG_BIT_SW_POW_CLICK );
#else
set_irq( VREG_C_IRQ0, REG_BIT_SW_HOME_CLICK );
#endif
}
}
else if( SW_pow_count == HOLD_THREASHOLD )
{
#ifdef _SW_HOME_ENABLE_
set_irq( VREG_C_IRQ0, REG_BIT_SW_POW_HOLD );
#else
set_irq( VREG_C_IRQ0, REG_BIT_SW_HOME_HOLD );
#endif
}
else if( SW_pow_count == ( HOLD_THREASHOLD * 4 ) )
{ // todo
// vreg_ctr[ VREG_C_LED_POW ] = LED_POW_ONLY_RED;
vreg_ctr[ VREG_C_LED_POW ] = LED_POW_ILM_ONLY_RED;
system_status.pwr_state = OFF_TRIG;
renge_task_interval_run_force = 1;
}
@ -114,8 +122,9 @@ void tsk_sw( )
cnt_force_off += 1;
if( cnt_force_off >= 13 )
{ // …返事がない。強制的に切る。
system_status.pwr_state = OFF_TRIG;
renge_task_interval_run_force = 1;
vreg_ctr[ VREG_C_LED_POW ] = LED_POW_ILM_ONLY_RED;
system_status.pwr_state = OFF_TRIG;
renge_task_interval_run_force = 1;
}
}
else
@ -154,7 +163,7 @@ if( ( system_status.pwr_state == ON )
{
count_sw_n( SW_POW_n, SW_pow_count, SW_pow_mask );
#ifdef _SW_HOME_ENABLE_
#ifdef _SW_HOME_ENABLE_
count_sw_n( SW_HOME_n, SW_home_count, SW_home_mask );
#endif
count_sw_n( SW_WIFI_n, SW_wifi_count, SW_wifi_mask );

View File

@ -49,10 +49,9 @@ void tsk_debug2( )
str[1] = vreg_ctr[ VREG_C_STATUS ];
str[0] = vreg_ctr[ VREG_C_RTC_SEC ];
*/
str[3] = vreg_ctr[ VREG_C_DBG1 ];
str[2] = vreg_ctr[ VREG_C_DBG2 ];
str[1] = vreg_ctr[ VREG_C_IRQ2 ];
// str[1] = MIN;
str[3] = vreg_ctr[ VREG_C_SND_VOL ];
str[2] = vreg_ctr[ VREG_C_TUNE ];
str[1] = vreg_ctr[ VREG_C_ACC_CONFIG ];
str[0] = SEC;
// iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 2, vreg_ctr[ VREG_C_IRQ1 ] );
@ -71,6 +70,7 @@ void tsk_debug2( )
}
#if 0
/* ========================================================

View File

@ -12,6 +12,7 @@
#include "pm.h"
#include "rtc.h"
#include "sw.h"
#include "adc.h"
@ -131,6 +132,9 @@ void tsk_sys( )
system_status.poweron_reason = NONE;
renge_task_interval_run_force = 1;
vreg_ctr[ VREG_C_SND_VOL ] = 0xFF;
vol_old = 0xFF; // volの値を書く。CODECは忘れてしまうため。
MK0 = INT_MSK0_RSV;
MK1 = INT_MSK1_RSV;
#ifdef _MCU_BSR_

View File

@ -3,7 +3,7 @@
#define IIC_SLV_ADDR_MONITOR 0x6E
#define IIC_T_SLAVEADDRESS 0x4A
#define IIC_C_SLAVEADDRESS 0x4A
#define IIC_C_SLAVEADDRESS 0x4A
#define IIC_SLA_DCP 0x50
@ -22,8 +22,8 @@
#endif
#ifdef _debug_led_
#define DBG_LED_WIFI_2_on ( P2.4 = 1 )
#define DBG_LED_WIFI_2_off ( P2.4 = 0 )
#define DBG_LED_WIFI_2_on { PM2.4 = 0; P2.4 = 1; }
#define DBG_LED_WIFI_2_off { PM2.4 = 1; P2.4 = 0; }
#define DBG_LED_WIFI_2_toggle ( P2.4 ^= 1 )
#else
@ -194,7 +194,7 @@
#define ACCEL_INT1 P2.5
#endif
#ifdef _MODEL_TS0_
#ifdef _MODEL_TS0_ || _MODEL_CTR_
#define ACC_VALID P20.5
#define ACCEL_INT1 P2.5
#endif
@ -205,6 +205,11 @@
#define ACCEL_INT1 P2.5
#endif
#ifdef _MODEL_CTR_
#define ACC_VALID P20.5
#define ACCEL_INT1 P2.5
#endif
#define DBG_M_n P2.1

View File

@ -40,10 +40,10 @@ void vreg_ctr_init( )
vreg_ctr[VREG_C_MCU_VER_MAJOR] = MCU_VER_MAJOR;
#ifdef _MODEL_WM0_
vreg_ctr[VREG_C_MCU_VER_MAJOR] += 0x20;
vreg_ctr[VREG_C_MCU_VER_MAJOR] |= 0x20;
#endif
#ifdef _MODEL_TS0_
vreg_ctr[VREG_C_MCU_VER_MAJOR] += 0x10;
vreg_ctr[VREG_C_MCU_VER_MAJOR] |= 0x10;
#endif
vreg_ctr[VREG_C_MCU_VER_MINOR] = MCU_VER_MINOR;
@ -64,6 +64,9 @@ void vreg_ctr_init( )
// を使用しないと、I2C_mcu使用中でエラー終了した場合にリトライしません。
void vreg_ctr_write( u8 adrs, u8 data )
{
if( adrs >= VREG_C_ENDMARK_ )
return;
switch ( adrs )
{
@ -147,10 +150,29 @@ void vreg_ctr_write( u8 adrs, u8 data )
}
break;
case ( VREG_C_FREE0 ):
case ( VREG_C_FREE1 ):
case ( VREG_C_FREE2 ):
case ( VREG_C_FREE3 ):
case ( VREG_C_DBG20 ):
case ( VREG_C_DBG21 ):
case ( VREG_C_DBG22 ):
case ( VREG_C_DBG23 ):
vreg_ctr[adrs] = data;
break;
case ( VREG_C_FREE_0 ):
case ( VREG_C_FREE_1 ):
case ( VREG_C_FREE_2 ):
case ( VREG_C_FREE_3 ):
case ( VREG_C_FREE_4 ):
case ( VREG_C_FREE_5 ):
case ( VREG_C_FREE_6 ):
case ( VREG_C_FREE_7 ):
case ( VREG_C_FREE_8 ):
case ( VREG_C_FREE_9 ):
case ( VREG_C_FREE_A ):
case ( VREG_C_FREE_B ):
case ( VREG_C_FREE_C ):
case ( VREG_C_FREE_D ):
case ( VREG_C_FREE_E ):
case ( VREG_C_FREE_F ):
vreg_ctr[adrs] = data;
break;
@ -296,15 +318,15 @@ u8 vreg_ctr_read( u8 adrs )
{
return( hosu_read() );
}
else if( adrs == VREG_C_ACC_DBG_E )
else if( adrs == VREG_C_RTC_SEC_FINE_L )
{
rsub_temp = RSUBC;
return( (u8)( ( rsub_temp >> 8 ) & 0xFF ) );
}
else if( adrs == VREG_C_ACC_DBG_F )
{
return( (u8)( rsub_temp & 0xFF ) );
}
else if( adrs == VREG_C_RTC_SEC_FINE_H )
{
return( (u8)( ( rsub_temp >> 8 ) & 0xFF ) );
}
#if 1
if( adrs >= VREG_C_ENDMARK_ )

View File

@ -40,10 +40,10 @@
#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_POW_HOLD ( 1 << 3 )
#define REG_BIT_SW_POW_CLICK ( 1 << 2 )
#define REG_BIT_SW_HOME_HOLD ( 1 << 1 )
#define REG_BIT_SW_HOME_CLICK ( 1 << 0 )
#define REG_BIT_SW_HOME_HOLD ( 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 )
@ -182,10 +182,10 @@ enum VREG_C
VREG_C_COMMAND2,
VREG_C_COMMAND3, // 'r' でマイコンリセット
VREG_C_FREE0 = 0x24,
VREG_C_FREE1,
VREG_C_FREE2,
VREG_C_FREE3,
VREG_C_DBG20 = 0x24,
VREG_C_DBG21,
VREG_C_DBG22,
VREG_C_DBG23,
VREG_C_LED_BRIGHT = 0x28,
VREG_C_LED_POW,
@ -210,6 +210,9 @@ enum VREG_C
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,
@ -232,22 +235,22 @@ enum VREG_C
// VREG_C_AMBIENT_BRIGHTNESS = 0x60,
// 歩数計の評価のため...
VREG_C_ACC_DBG_0 = 0x50,
VREG_C_ACC_DBG_1,
VREG_C_ACC_DBG_2,
VREG_C_ACC_DBG_3,
VREG_C_ACC_DBG_4,
VREG_C_ACC_DBG_5,
VREG_C_ACC_DBG_6,
VREG_C_ACC_DBG_7,
VREG_C_ACC_DBG_8,
VREG_C_ACC_DBG_9,
VREG_C_ACC_DBG_A,
VREG_C_ACC_DBG_B,
VREG_C_ACC_DBG_C,
VREG_C_ACC_DBG_D,
VREG_C_ACC_DBG_E,
VREG_C_ACC_DBG_F,
VREG_C_FREE_0 = 0x50,
VREG_C_FREE_1,
VREG_C_FREE_2,
VREG_C_FREE_3,
VREG_C_FREE_4,
VREG_C_FREE_5,
VREG_C_FREE_6,
VREG_C_FREE_7,
VREG_C_FREE_8,
VREG_C_FREE_9,
VREG_C_FREE_A,
VREG_C_FREE_B,
VREG_C_FREE_C,
VREG_C_FREE_D,
VREG_C_FREE_E,
VREG_C_FREE_F,
VREG_C_ENDMARK_

View File

@ -12,8 +12,7 @@ TWL
// ========================================================
#define TWL_REG_VER_INFO 0x35
#define NON_EXIST_REG 0xFF
// ========================================================
u8 vreg_twl[_REG_TWL_INT_ADRS_ENDMARK];
@ -51,7 +50,6 @@ void vreg_twl_write( u8 adrs, u8 data )
tsk_led_cam(); // todo å<E28098>ä•v<E280A2>H
break;
case ( REG_TWL_INT_ADRS_WIFI ):
case ( REG_TWL_INT_ADRS_TEMP0 ):
vreg_twl[adrs] = data;
break;
@ -120,7 +118,7 @@ u8 vreg_twl_read( u8 phy_adrs )
default:
return( vreg_twl[ phy_adrs ] );
case( 0xFF ):
case( REG_TWL_ADRS_NON_EXIST ):
return( 0x00 );
}
}
@ -136,12 +134,13 @@ u8 adrs_table_twl_ext2int( u8 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_WIFI ): return( REG_TWL_INT_ADRS_WIFI );
case( REG_TWL_ADRS_CAM ): return( REG_TWL_INT_ADRS_CAM );
case( REG_TWL_ADRS_VOL ): return( REG_TWL_INT_ADRS_VOL );
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( 0xFF );
default: return( REG_TWL_ADRS_NON_EXIST );
// 0が読めればよい、書けなくて良い
// case( REG_TWL_ADRS_WIFI ): return( REG_TWL_INT_ADRS_WIFI );
}
}

View File

@ -52,6 +52,7 @@ enum REG_TWL_ADRS
REG_TWL_ADRS_TIME_PWSW_THRESHOLD
};
#define REG_TWL_ADRS_NON_EXIST 0xFF
/*
*
@ -67,7 +68,7 @@ enum REG_TWL_ADRS_INT
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_WIFI, // 0x30,
REG_TWL_INT_ADRS_CAM,
REG_TWL_INT_ADRS_VOL, // 0x40,
// REG_TWL_INT_ADRS_BL,
@ -92,7 +93,6 @@ enum REG_TWL_ADRS_INT
/* ========================================================================= */
#define is_TWL ( vregs[ REG_TWL_INT_ADRS_MODE ] & 0x01 )
#define with_NAND ( vregs[ REG_TWL_INT_ADRS_MODE ] & 0x02 )

View File

@ -1,13 +1,14 @@
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 -quvjl3wt -sainter_asm -zp -no i2c_ctr.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\i2c_ctr.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 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 -qvjl3wt -sainter_asm -zp -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\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 -gb7EFBFFh -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
"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 -qvjl3wt -sainter_asm -zp -no task_sys.c
task_sys.c(328) : CC78K0R warning W0401: Conversion may lose significant digits
Compilation complete, 0 error(s) and 1 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\task_sys.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 -gb7EFBFFh -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 pedo_alg_thre_det2.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
Object Conversion Complete, 0 error(s) and 0 warning(s) found.
@ -17,4 +18,4 @@ intel-HEX to bsr bin converter
file converted!
Build Total error(s) : 0 Total warning(s) : 0
Build Total error(s) : 0 Total warning(s) : 1

File diff suppressed because it is too large Load Diff

View File

@ -115,29 +115,6 @@ ZF=0
S=1
E=0
CommandFile=0
[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=ini_VECT.c
Source10=led.c
Source11=rtc.c
Source12=vreg_ctr.c
Source13=vreg_twl.c
Source14=adc.c
Source15=renge\renge.c
Source16=accero.c
Source17=self_flash.c
Source18=reboot.c
Source19=sw.c
Source20=task_debug.c
Source21=task_misc.c
Source22=task_sys.c
[Options.RA78K0R 0]
Version=100
G=1
@ -246,6 +223,354 @@ LT=8
Z=0
CommandFile=0
RA_OPT=
[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
[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=ini_VECT.c
Source10=led.c
Source11=rtc.c
Source12=vreg_ctr.c
Source13=vreg_twl.c
Source14=adc.c
Source15=renge\renge.c
Source16=accero.c
Source17=self_flash.c
Source18=reboot.c
Source19=sw.c
Source20=task_debug.c
Source21=task_misc.c
Source22=task_sys.c
Source23=pedo_alg_thre_det2.c
[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=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=7EFBFF
KM=1
KD=0
KP=0
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=0
SELF=0
ZB=
Etcetera0=
Etcetera1=boot.lmf
CommandFile=0
OFILE=C:\78k_data\yav-mcu-basara\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.78K0R]
BuildMode=2
BuildMode2=K0R_dbg
BuildMode3=BSR_dbg
BuildMode4=BSR_rel
BuildMode5=BSR_WM0
DefaultMode2=1
DefaultMode3=1
DefaultMode4=1
DefaultMode5=1
[IncFile]
Include1=incs_loader.h
Include2=jhl_defs.h
Include3=user_define.h
Include4=config.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=loader.h
Include11=i2c_mcu.h
Include12=WDT.h
Include13=fsl.h
Include14=fsl_user.h
Include15=i2c_ctr.h
Include16=pm.h
Include17=rtc.h
Include18=adc.h
Include19=led.h
Include20=incs.h
Include21=vreg_twl.h
Include22=accero.h
Include23=i2c_twl_defs.h
Include24=renge\renge_task_intval.h
Include25=i2c_twl.h
Include26=..\..\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r\fsl.h
Include27=reboot.h
Include28=sw.h
Include29=..\..\Program Files\NEC Electronics Tools\CC78K0R\W2.10\inc78k0r\math.h
Include30=batt_params.h
Include31=pedometer.h
[Options.CC78K0R 0]
Version=210
Include0=renge,C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r
@ -418,7 +743,7 @@ AssignROM=0
Maxoptimizechk=0
Maxoptimize=1104
Charunexpandchk=0
Unsignedchar=1
Unsignedchar=0
Usesaddrchk=0
Autoallocationchk=1
Jumpoptimize=1
@ -712,329 +1037,6 @@ VfiFileBoot0=
VfiFileBoot1=boot.vfi
VF78K0Rchk=0
VF78K0Rvs=
[IncFile]
Include1=incs_loader.h
Include2=jhl_defs.h
Include3=user_define.h
Include4=config.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=loader.h
Include11=i2c_mcu.h
Include12=WDT.h
Include13=fsl.h
Include14=fsl_user.h
Include15=i2c_ctr.h
Include16=pm.h
Include17=rtc.h
Include18=adc.h
Include19=led.h
Include20=incs.h
Include21=vreg_twl.h
Include22=accero.h
Include23=i2c_twl_defs.h
Include24=renge\renge_task_intval.h
Include25=i2c_twl.h
Include26=..\..\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r\fsl.h
Include27=reboot.h
Include28=sw.h
Include29=..\..\Program Files\NEC Electronics Tools\CC78K0R\W2.10\inc78k0r\math.h
Include30=batt_params.h
[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=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=7EFBFF
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=0
SELF=0
ZB=
Etcetera0=
Etcetera1=boot.lmf
CommandFile=0
OFILE=C:\78k_data\yav-mcu-basara\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
[ToolSet]
ToolSetName=(•Ï<E280A2>X)78K0R Software Package V1.10
Tool1=CC78K0R|W2.10

View File

@ -1,21 +1,25 @@
[ProjectManager]
FrameMax=0
FrameX=82
FrameY=140
FrameX=41
FrameY=39
FrameCX=1299
FrameCY=1044
OpenFile1=renge\renge.h,0,502,637,1746,1394,29,16,29,0
OpenFile2=pm.c,0,154,154,1133,791,0,792,0,0
OpenFile3=self_flash.c,0,154,154,1133,791,44,112,0,0
OpenFile4=vreg_ctr.h,0,220,220,1464,977,20,214,29,0
OpenFile5=ProjectWindow
OpenFile2=user_define.h,0,330,330,1574,1056,0,172,0,0
OpenFile3=jhl_defs.h,0,250,539,1494,1265,0,10,8,0
OpenFile4=renge\\renge_defs.h,0,293,307,1537,1033,18,37,18,0
OpenFile5=renge\renge_defs.h,0,667,22,1514,748,0,16,0,0
OpenFile6=pedometer.h,0,586,125,1830,851,11,74,11,0
OpenFile7=sw.c,0,264,264,1508,990,0,105,0,0
OpenFile8=pedo_alg_thre_det2.c,0,347,41,1231,551,32,73,19,0
OpenFile9=adc.c,0,286,286,1530,1012,24,134,50,0
OpenFile10=config.h,0,257,193,1501,919,0,21,0,0
OpenFile11=task_misc.c,0,308,308,1552,1034,0,1,0,0
OpenFile12=ProjectWindow
PrjPos=0,2,754,3,253
OpenFile6=vreg_ctr.c,0,198,198,1442,955,27,303,22,0
OpenFile7=accero.c,0,132,132,1133,760,70,186,69,0
OpenFile8=adc.c,0,242,242,1486,999,0,116,25,0
OpenFile9=config.h,0,268,24,1247,661,0,33,29,0
OpenFile10=OutputWindow
OutputPos=0,421,829,388,1497
OpenFile13=task_sys.c,0,330,330,1574,1056,22,136,37,0
OpenFile14=OutputWindow
OutputPos=0,605,1071,70,1128
ActivePRJ=yav_mcu_bsr.prj
[ProjectWindow]
ProjectWindowDispType=0

View File

@ -11,7 +11,7 @@ T=4b68f956
7=rtc.h
8=reboot.h
[pm.c]
T=4b6ba554
T=4b95eb6d
1=incs.h
2=adc.h
3=led.h
@ -19,7 +19,7 @@ T=4b6ba554
5=renge\renge.h
6=batt_params.h
[i2c_ctr.c]
T=4b690471
T=4b7decbc
1=incs.h
2=accero.h
[main.c]
@ -32,7 +32,7 @@ T=4b68d913
6=led.h
7=adc.h
[magic.c]
T=4b7bd688
T=4b962756
1=config.h
[WDT.c]
T=4afd21ca
@ -56,7 +56,7 @@ T=4b4438bb
T=4b6a6fa4
1=incs.h
[vreg_ctr.c]
T=4b724017
T=4b95fb8d
1=incs.h
2=vreg_ctr.h
3=rtc.h
@ -66,14 +66,14 @@ T=4b724017
7=..\..\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r\fsl.h
8=fsl_user.h
[vreg_twl.c]
T=4b6907de
T=4b8b5f7f
1=incs.h
2=jhl_defs.h
3=vreg_twl.h
4=vreg_ctr.h
5=renge\renge_task_intval.h
[adc.c]
T=4b723615
T=4b96108e
1=incs.h
2=adc.h
3=pm.h
@ -88,7 +88,7 @@ T=4b5d73b9
6=user_define.h
7=bsr_system.h
[accero.c]
T=4b7bd680
T=4b8f1c98
1=incs.h
2=..\..\Program Files\NEC Electronics Tools\CC78K0R\W2.10\inc78k0r\math.h
[self_flash.c]
@ -101,7 +101,7 @@ T=4b6fb909
T=4afd21cb
1=incs_loader.h
[sw.c]
T=4b4d6c9b
T=4b95fcac
1=incs.h
2=i2c_twl.h
3=i2c_ctr.h
@ -110,7 +110,7 @@ T=4b4d6c9b
6=pm.h
7=rtc.h
[task_debug.c]
T=4b6bc508
T=4b95d5a4
1=incs.h
2=renge\renge.h
3=pm.h
@ -122,7 +122,7 @@ T=4b6a6fb1
3=pm.h
4=accero.h
[task_sys.c]
T=4b663267
T=4b962889
1=incs.h
2=i2c_twl.h
3=i2c_ctr.h
@ -131,6 +131,13 @@ T=4b663267
6=pm.h
7=rtc.h
8=sw.h
9=adc.h
[pedo_alg_thre_det2.c]
T=4b9603bf
1=incs.h
2=..\..\Program Files\NEC Electronics Tools\CC78K0R\W2.10\inc78k0r\math.h
3=accero.h
4=pedometer.h
[incs_loader.h]
T=4b25f1a9
1=jhl_defs.h
@ -143,12 +150,12 @@ T=4b25f1a9
8=i2c_mcu.h
9=WDT.h
[jhl_defs.h]
T=4b023fdb
T=4b90c1b8
1=config.h
[user_define.h]
T=4b690aa2
T=4b95fc65
[config.h]
T=4b7cf1c7
T=4b95fce7
[bsr_system.h]
T=4b3064de
[renge\renge.h]
@ -156,12 +163,12 @@ T=4b32c168
1=renge\renge_defs.h
2=renge\renge_task_immediate.h
[renge\renge_defs.h]
T=4b32f836
T=4b90c2bc
[renge\renge_task_immediate.h]
T=4b42ee65
1=renge\renge_defs.h
[vreg_ctr.h]
T=4b6bc3cc
T=4b95fb8d
1=config.h
[loader.h]
T=4afd21ca
@ -177,16 +184,16 @@ T=4afd21cb
[i2c_ctr.h]
T=4afd21cb
[pm.h]
T=4b68df75
T=4b8f1beb
[rtc.h]
T=4b6a6fa4
[adc.h]
T=4b25ee1e
T=4b96108e
1=jhl_defs.h
[led.h]
T=4b4438a1
[incs.h]
T=4b25e780
T=4b8f2e8c
1=jhl_defs.h
2=user_define.h
3=bsr_system.h
@ -197,10 +204,11 @@ T=4b25e780
8=rtc.h
9=accero.h
[vreg_twl.h]
T=4b690471
T=4b8b6b9b
[accero.h]
T=4b66ac04
T=4b8f11ef
1=jhl_defs.h
2=pedometer.h
[i2c_twl_defs.h]
T=4afd21ca
[renge\renge_task_intval.h]
@ -218,3 +226,5 @@ T=4afd21cb
T=45f12258
[batt_params.h]
T=4b663897
[pedometer.h]
T=4b9601d1