mirror of
https://github.com/rvtr/ctr_mcu.git
synced 2025-06-18 16:45:33 -04:00
branch/sim からマージ(自動でログが残らない? /branch/sim と差分を見ると良い)
(全般) ・マジックナンバーを文字列に ・外から読まない物をstaticに batt_params.c voltable.c ・定数テーブルを.hではなく.cにおいて、externで読むことに。 hal.c ・数カ所から呼ぶので、hal_reset()追加 i2c_ctr ・スタックが心配なので、割り込み優先を下げ、多重割り込みをしない。見積もりツールで確認すると大丈夫そう sw.c 電源on時、カウント時間が短いのでtask_swのインターバルを短くしてみた。…が、戻す予定 git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-05-23%20-%20ctr.7z%20+%20svn_v1.068.zip/ctr/svn/ctr_mcu@365 013db118-44a6-b54f-8bf7-843cb86687b1
This commit is contained in:
parent
04622cbf03
commit
88ed91ab1c
@ -1,5 +1,2 @@
|
||||
#pragma sfr
|
||||
|
||||
|
||||
#include "incs_loader.h"
|
||||
|
||||
|
125
trunk/accero.c
125
trunk/accero.c
@ -5,6 +5,8 @@
|
||||
・加速度センサ割り込みからタスクを登録して下さい。(I2Cの競合回避などがあるので)
|
||||
|
||||
======================================================== */
|
||||
#ifndef _WIN32
|
||||
|
||||
#pragma SFR
|
||||
#pragma NOP
|
||||
#pragma HALT
|
||||
@ -14,11 +16,13 @@
|
||||
#pragma MUL
|
||||
#pragma BCD
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
#include "config.h"
|
||||
#ifdef _MCU_BSR_
|
||||
#ifndef _WIN32
|
||||
|
||||
#pragma interrupt INTP23 intp23_ACC_ready RB3 // 加速度センサ、データ準備完了
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@ -65,7 +69,7 @@
|
||||
task_status tsk_soft_int( );
|
||||
|
||||
|
||||
|
||||
#define ACC_RAW_DATA_SIZE 6
|
||||
/* ========================================================
|
||||
・割り込みを確認してデータを吸い上げ、レジスタに書き出します
|
||||
・本当であればコールバック関数を登録しておけばいいじゃんとなるのですが、
|
||||
@ -75,12 +79,13 @@ task_status tsk_soft_int( );
|
||||
task_status_immed tski_cbk_accero( )
|
||||
{ // (疑似)isrから登録されます
|
||||
static u8 err_count;
|
||||
u8 acc_dat_buff[ ACC_RAW_DATA_SIZE ];
|
||||
|
||||
// 加速度センサデータレジスタへの反映
|
||||
if( iic_mcu_read( IIC_SLA_ACCEL, ( ACC_REG_X | 0x80 ), 6, &vreg_ctr[VREG_C_ACC_XL] )
|
||||
if( iic_mcu_read( IIC_SLA_ACCEL, ( ACC_REG_X | 0x80 ), ACC_RAW_DATA_SIZE, acc_dat_buff )
|
||||
!= ERR_SUCCESS )
|
||||
{
|
||||
err_count += 1;
|
||||
err_count ++;
|
||||
if( err_count < 8 )
|
||||
{
|
||||
// リトライ
|
||||
@ -97,6 +102,8 @@ task_status_immed tski_cbk_accero( )
|
||||
}
|
||||
else
|
||||
{
|
||||
memcpy( &vreg_ctr[VREG_C_ACC_XL], acc_dat_buff, ACC_RAW_DATA_SIZE );
|
||||
|
||||
err_count = 0;
|
||||
// 正常時パス //
|
||||
// 加速度更新&割り込み
|
||||
@ -108,8 +115,8 @@ task_status_immed tski_cbk_accero( )
|
||||
// ゴミデータのカラ読み
|
||||
if( ACC_VALID )
|
||||
{
|
||||
u8 temp[6];
|
||||
iic_mcu_read( IIC_SLA_ACCEL, ( ACC_REG_X | 0x80 ), 6, temp );
|
||||
u8 temp[ACC_RAW_DATA_SIZE];
|
||||
iic_mcu_read( IIC_SLA_ACCEL, ( ACC_REG_X | 0x80 ), ACC_RAW_DATA_SIZE, temp );
|
||||
}
|
||||
}
|
||||
if(( system_status.pwr_state != ON_CHECK )
|
||||
@ -167,58 +174,74 @@ task_status_immed tski_acc_write( )
|
||||
========================================================*/
|
||||
task_status_immed tski_acc_hosu_set( )
|
||||
{
|
||||
u8 str_send_buf[4];
|
||||
|
||||
iic_mcu_read_a_byte( IIC_SLA_ACCEL, ACC_REG_WHOAMI );
|
||||
if( iic_mcu_result == ERR_NOSLAVE )
|
||||
{
|
||||
vreg_ctr[ VREG_C_STATUS_1 ] |= REG_BIT_ACCERO_ERR;
|
||||
return ( ERR_FINISED ); // とりあえず、タスクは削除しなくてはならない
|
||||
}else{
|
||||
vreg_ctr[ VREG_C_STATUS_1 ] &= ~REG_BIT_ACCERO_ERR;
|
||||
}
|
||||
|
||||
str_send_buf[1] = 0x00; // ctrl2 HPF:normal, filterd, HPF for IRQ : dis/dis, HPF coeff:norm
|
||||
/*
|
||||
if( system_status.model == MODEL_TS_BOARD )
|
||||
{
|
||||
// TS Final SoC
|
||||
str_send_buf[2] = 0x02; // 3 IRQ pol :Active HI, Drive:Pushpull,
|
||||
}
|
||||
else
|
||||
{
|
||||
// 実機&派生種、白箱
|
||||
str_send_buf[2] = 0x10; // 3 IRQ pol :Active HI, Drive:Pushpull,
|
||||
}
|
||||
*/
|
||||
str_send_buf[2] = 0b00010010; // 面倒なので両方...。
|
||||
str_send_buf[3] = 0x80; // ctrl3 block update:enable, MSB first, scale: +-2G(default), selftest: dis
|
||||
// iic_mcu_read_a_byte( IIC_SLA_ACCEL, ACC_REG_WHOAMI ); // スタックが足りないので展開…
|
||||
// if( iic_mcu_result == ERR_NOSLAVE )
|
||||
{
|
||||
u8 dummy;
|
||||
|
||||
if( ( vreg_ctr[VREG_C_ACC_CONFIG] &
|
||||
( VREG_BITMASK_ACC_CONF_HOSU | VREG_BITMASK_ACC_CONF_ACQ ) ) == 0 )
|
||||
{
|
||||
PMK23 = 1;
|
||||
// 完全停止
|
||||
str_send_buf[0] =
|
||||
( ACC_BITS_PM_PDN << ACC_bP_PM0 | 0 << ACC_bP_DR0 | ACC_BITS_ALL_AXIS_ON );
|
||||
}
|
||||
else
|
||||
{
|
||||
PMK23 = 0;
|
||||
// 100Hz 自動取り込み
|
||||
str_send_buf[0] =
|
||||
( ACC_BITS_PM_NORM << ACC_bP_PM0
|
||||
| ACC_BITS_DR_100Hz << ACC_bP_DR0
|
||||
| ACC_BITS_ALL_AXIS_ON );
|
||||
}
|
||||
iic_mcu_write( IIC_SLA_ACCEL, ( ACC_REG_CTRL1 | 0x80 ), 4, str_send_buf );
|
||||
if( iic_mcu_read( IIC_SLA_ACCEL, ACC_REG_WHOAMI, 1, &dummy ) == ERR_NOSLAVE )
|
||||
{
|
||||
vreg_ctr[ VREG_C_STATUS_1 ] |= REG_BIT_ACCERO_ERR;
|
||||
return ( ERR_FINISED ); // とりあえず、タスクは削除しなくてはならない
|
||||
// おしまい
|
||||
}else{
|
||||
vreg_ctr[ VREG_C_STATUS_1 ] &= ~REG_BIT_ACCERO_ERR;
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
u8 str_send_buf[4];
|
||||
|
||||
str_send_buf[1] = 0x00; // ctrl2 HPF:normal, filterd, HPF for IRQ : dis/dis, HPF coeff:norm
|
||||
/*
|
||||
if( system_status.model == MODEL_TS_BOARD )
|
||||
{
|
||||
// TS Final SoC
|
||||
str_send_buf[2] = 0x02; // 3 IRQ pol :Active HI, Drive:Pushpull,
|
||||
}
|
||||
else
|
||||
{
|
||||
// 実機&派生種、白箱
|
||||
str_send_buf[2] = 0x10; // 3 IRQ pol :Active HI, Drive:Pushpull,
|
||||
}
|
||||
*/
|
||||
if( system_status.model == MODEL_TS_BOARD )
|
||||
{
|
||||
str_send_buf[2] = bits8(0,0,0,0, 0,0,1,0); // ピン不足のため、ちゃんと分ける
|
||||
}
|
||||
else
|
||||
{
|
||||
str_send_buf[2] = bits8(0,0,0,1, 0,0,0,0);
|
||||
}
|
||||
str_send_buf[3] = 0x80; // ctrl3 block update:enable, MSB first, scale: +-2G(default), selftest: dis
|
||||
|
||||
if( ( vreg_ctr[VREG_C_ACC_CONFIG] &
|
||||
( VREG_BITMASK_ACC_CONF_HOSU | VREG_BITMASK_ACC_CONF_ACQ ) ) == 0 )
|
||||
{
|
||||
PMK23 = 1;
|
||||
// 完全停止
|
||||
str_send_buf[0] =
|
||||
( ACC_BITS_PM_PDN << ACC_bP_PM0 | 0 << ACC_bP_DR0 | ACC_BITS_ALL_AXIS_ON );
|
||||
}
|
||||
else
|
||||
{
|
||||
PMK23 = 0;
|
||||
// 100Hz 自動取り込み
|
||||
str_send_buf[0] =
|
||||
( ACC_BITS_PM_NORM << ACC_bP_PM0
|
||||
| ACC_BITS_DR_100Hz << ACC_bP_DR0
|
||||
| ACC_BITS_ALL_AXIS_ON );
|
||||
}
|
||||
iic_mcu_write( IIC_SLA_ACCEL, ( ACC_REG_CTRL1 | 0x80 ), 4, str_send_buf );
|
||||
}
|
||||
|
||||
// カラ読み
|
||||
if( ACC_VALID )
|
||||
{
|
||||
if( system_status.pwr_state == ON )
|
||||
{
|
||||
u8 temp[6];
|
||||
u8 temp[ACC_RAW_DATA_SIZE];
|
||||
iic_mcu_read( IIC_SLA_ACCEL, ( ACC_REG_X | 0x80 ), 6, temp );
|
||||
}
|
||||
}
|
||||
|
254
trunk/adc.c
254
trunk/adc.c
@ -11,25 +11,24 @@
|
||||
|
||||
#include "vreg_twl.h"
|
||||
|
||||
#define _10db_
|
||||
#include "voltable.h"
|
||||
|
||||
// ===================================================== //
|
||||
static bit adc_updated;
|
||||
static bit vol_changed_by_ctr;
|
||||
bit vol_changed_by_twl;
|
||||
static u8 vol_old;
|
||||
|
||||
static u8 adc_raw_vol;
|
||||
static u8 adc_raw_dep;
|
||||
|
||||
u8 vol_polling;
|
||||
u8 vol_level_twl;
|
||||
|
||||
extern const u8 slider_to_codec[];
|
||||
|
||||
|
||||
|
||||
// ===================================================== //
|
||||
bit adc_updated;
|
||||
bit vol_changed_by_ctr;
|
||||
bit vol_changed_by_twl;
|
||||
u8 vol_old;
|
||||
|
||||
|
||||
u8 adc_raw_vol;
|
||||
u8 adc_raw_dep;
|
||||
|
||||
u8 vol_polling;
|
||||
|
||||
u8 vol_level_twl;
|
||||
|
||||
|
||||
typedef struct filter_work
|
||||
{
|
||||
u8* value_used;
|
||||
@ -39,14 +38,14 @@ typedef struct filter_work
|
||||
}filter_work;
|
||||
|
||||
|
||||
filter_work work_vr_3d = {
|
||||
static const filter_work work_vr_3d = {
|
||||
&vreg_ctr[ VREG_C_3D ]
|
||||
};
|
||||
|
||||
|
||||
u8 vol_data_ctr;
|
||||
u8 vol_data_ctr_tmp;
|
||||
filter_work work_vr_vol = {
|
||||
static u8 vol_data_ctr;
|
||||
static u8 vol_data_ctr_tmp;
|
||||
static const filter_work work_vr_vol = {
|
||||
&vol_data_ctr_tmp
|
||||
};
|
||||
|
||||
@ -56,7 +55,7 @@ filter_work work_vr_vol = {
|
||||
twl内の32 -> 8 テーブル
|
||||
0~1,~4,~8,~13,~18,~23,~28,31
|
||||
*/
|
||||
const u8 TWL_VOL_BOUNDARY[] = {
|
||||
static const u8 TWL_VOL_BOUNDARY[] = {
|
||||
1, 4, 8, 13, 18, 23, 28, 31
|
||||
};
|
||||
|
||||
@ -64,6 +63,7 @@ const u8 TWL_VOL_BOUNDARY[] = {
|
||||
extern void nop8();
|
||||
static void adc_filter( u8 new_val, filter_work* work );
|
||||
static u8 adc_scaling( u8 );
|
||||
static void update_twl_vol( u8 sent_index );
|
||||
|
||||
|
||||
|
||||
@ -85,10 +85,6 @@ static u8 adc_scaling( u8 );
|
||||
======================================================== */
|
||||
void tsk_adc( )
|
||||
{
|
||||
static u8 old_3D;
|
||||
static u8 sndvol_codec;
|
||||
static u8 bt_temp_old;
|
||||
|
||||
if( adc_updated )
|
||||
{
|
||||
adc_updated = false;
|
||||
@ -120,18 +116,18 @@ void tsk_adc( )
|
||||
if( vol_polling < 5 )
|
||||
{
|
||||
renge_task_immed_add( tski_vol_update );
|
||||
vol_polling = 200 / SYS_INTERVAL_TICK + 5; // 5回/sec
|
||||
vol_polling = (u8)(200 / SYS_INTERVAL_TICK) + 5; // 5回/sec
|
||||
}
|
||||
vol_polling -= 1;
|
||||
vol_polling --;
|
||||
|
||||
|
||||
ADCEN = 1;
|
||||
ADM = 0b00001011; // セレクトモード、昇圧、fCLK/6 ///ここから ↓
|
||||
ADM = bits8(0,0,0,0, 1,0,1,1); // セレクトモード、昇圧、fCLK/6 // ここから ↓
|
||||
|
||||
ADPC = 0x06; // ADCポートのセレクト
|
||||
ADS = ADC_SEL_3D;
|
||||
nop8();
|
||||
ADCS = 1; // AD開始。 /// ここまで ↑ までに1us=8clk以上開ける
|
||||
ADCS = 1; // AD開始。 // ここまで ↑ までに1us=8clk以上開ける
|
||||
|
||||
ADIF = 0;
|
||||
ADMK = 0;
|
||||
@ -156,8 +152,7 @@ void vol_reset()
|
||||
task_status_immed tski_vol_update()
|
||||
{
|
||||
static u8 sent_index, sent_index_twl;
|
||||
static u8 sent_data;
|
||||
static bit last_modifyer_is_twl; // 0 = ctr
|
||||
static bit last_modifyer_is_twl; // false = ctr
|
||||
|
||||
if( !( system_status.pwr_state == ON ) ||
|
||||
( system_status.pwr_state == SLEEP )){
|
||||
@ -165,15 +160,7 @@ task_status_immed tski_vol_update()
|
||||
}
|
||||
|
||||
// どの音量にするの? //
|
||||
if( vreg_ctr[ VREG_C_VOL_OPTION ] & ( REG_BIT_VOL_UPDATE_TO_SLIDER ) )
|
||||
{
|
||||
// debug //
|
||||
NOP();
|
||||
// 最優先 スライダに上書き
|
||||
sent_index = vol_data_ctr;
|
||||
vreg_ctr[ VREG_C_VOL_OPTION ] &= ~REG_BIT_VOL_UPDATE_TO_SLIDER;
|
||||
}
|
||||
else if( vol_changed_by_ctr )
|
||||
if( vol_changed_by_ctr )
|
||||
{
|
||||
// スライダ
|
||||
vol_changed_by_ctr = false;
|
||||
@ -211,6 +198,21 @@ task_status_immed tski_vol_update()
|
||||
|
||||
// レジスタの更新 //
|
||||
vreg_ctr[ VREG_C_SND_VOL ] = sent_index;
|
||||
|
||||
// twl側更新
|
||||
update_twl_vol( sent_index );
|
||||
|
||||
// codecに伝える
|
||||
/// 同値でも書く
|
||||
iic_mcu_write_a_byte_codec( CODEC_REG_VOL, slider_to_codec[ sent_index ] );
|
||||
|
||||
// set_irq( VREG_C_IRQ0, REG_BIT_VR_SNDVOL_CHANGE ); // 割り込み廃止
|
||||
return( ERR_FINISED );
|
||||
}
|
||||
|
||||
|
||||
static void update_twl_vol( u8 sent_index )
|
||||
{
|
||||
// スケーリング
|
||||
if( sent_index == 0 )
|
||||
{
|
||||
@ -218,7 +220,7 @@ task_status_immed tski_vol_update()
|
||||
}
|
||||
else if( sent_index <= 4 )
|
||||
{
|
||||
vreg_twl[ REG_TWL_INT_ADRS_VOL ] = 2;
|
||||
vreg_twl[ REG_TWL_INT_ADRS_VOL ] = 2; // 1はミッシングで正解
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -248,52 +250,6 @@ task_status_immed tski_vol_update()
|
||||
vol_level_twl = new_level;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// CODECに書きに行く?
|
||||
if( vreg_ctr[ VREG_C_VOL_OPTION ] & REG_BIT_VOL_BY_SPI )
|
||||
{
|
||||
return( ERR_FINISED );
|
||||
// by SPI ならここまででおしまい //
|
||||
}
|
||||
|
||||
// codecに伝える
|
||||
/// 同値でも書く
|
||||
iic_mcu_write_a_byte_codec( CODEC_REG_VOL, slider_to_codec[ sent_index ] );
|
||||
|
||||
// set_irq( VREG_C_IRQ0, REG_BIT_VR_SNDVOL_CHANGE ); // 割り込み廃止
|
||||
return( ERR_FINISED );
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* ========================================================
|
||||
過去3つのminでもMAXでもない値を返す
|
||||
突発的なノイズを除く。
|
||||
運が悪いと振動するよ
|
||||
======================================================== */
|
||||
static u8 getmean3( u8 * hist )
|
||||
{
|
||||
if( *hist > *( hist + 1 ) )
|
||||
{
|
||||
if( *hist > *( hist + 2 ) )
|
||||
{
|
||||
return( ( *( hist + 1 ) > *( hist + 2 ) ) ? *( hist + 1 ) : *( hist + 2 ) );
|
||||
}
|
||||
else
|
||||
{
|
||||
return( *hist );
|
||||
}
|
||||
}else{
|
||||
if( *hist > *( hist + 2 ) )
|
||||
{
|
||||
return( *hist );
|
||||
}
|
||||
else
|
||||
{
|
||||
return( ( *( hist + 1 ) < *( hist + 2 ) ) ? *( hist + 1 ) : *( hist + 2 ) );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -304,14 +260,7 @@ static u8 getmean3( u8 * hist )
|
||||
======================================================== */
|
||||
__interrupt void int_adc( )
|
||||
{
|
||||
static u8 hist_3D[3];
|
||||
static u8 hist_snd_vol[3];
|
||||
static u8 hist_bt_temp[3];
|
||||
static u8 index;
|
||||
|
||||
volatile u8 adc_data;
|
||||
|
||||
adc_data = ADCRH;
|
||||
volatile u8 adc_data = ADCRH;
|
||||
|
||||
switch ( ADS )
|
||||
{
|
||||
@ -341,15 +290,16 @@ case ( ADC_SEL_AMB_BRIT ): //
|
||||
|
||||
case ( ADC_SEL_BATT_TEMP ):
|
||||
EI();
|
||||
raw_adc_temperature = adc_data;
|
||||
#ifdef _DEBUG_BT_TEMP_
|
||||
if( vreg_ctr[ VREG_C_COMMAND3 ] == 't' )
|
||||
{
|
||||
raw_adc_temperature = vreg_ctr[ VREG_C_DBG01 ];
|
||||
}
|
||||
#endif
|
||||
if( vreg_ctr[ VREG_C_HAL_OVW_TEMPERATURE ] == 0xFF )
|
||||
{
|
||||
raw_adc_temperature = adc_data;
|
||||
}
|
||||
else
|
||||
{
|
||||
raw_adc_temperature = vreg_ctr[ VREG_C_HAL_OVW_TEMPERATURE ];
|
||||
}
|
||||
|
||||
if( (( vreg_ctr[ VREG_C_STATUS_1 ] & REG_BIT_MGIC_ERR ) == 0 ) &&
|
||||
if(// (( vreg_ctr[ VREG_C_STATUS_1 ] & REG_BIT_MGIC_ERR ) == 0 ) &&
|
||||
(( system_status.pwr_state == ON ) ||
|
||||
( system_status.pwr_state == SLEEP )
|
||||
)
|
||||
@ -374,7 +324,6 @@ case ( ADC_SEL_AMB_BRIT ): //
|
||||
{
|
||||
ADCEN = 0; // 止めてしまう
|
||||
adc_updated = true;
|
||||
index = ( index == 2 ) ? 0 : ( index + 1 ); // ノイズ取りの配列インデックス
|
||||
}
|
||||
ADIF = 0; // ←これをしないと、いっこ前のチャンネルのデータの完了で直後に割り込む可能性がある
|
||||
}
|
||||
@ -392,7 +341,7 @@ u8 get_adc( u8 ch )
|
||||
ADIF = 0;
|
||||
|
||||
ADCEN = 1;
|
||||
ADM = 0b00001011; // セレクトモード、昇圧、fCLK/6 ///ここから↓
|
||||
ADM = bits8(0,0,0,0, 1,0,1,1); // セレクトモード、昇圧、fCLK/6 ///ここから↓
|
||||
|
||||
ADPC = 0x06; // ADCポートのセレクト
|
||||
ADS = ch;
|
||||
@ -451,11 +400,10 @@ static u8 adc_scaling( u8 orig_val )
|
||||
#define KIKAN 16
|
||||
static void adc_filter( u8 new_val, filter_work *work )
|
||||
{
|
||||
u8 temp;
|
||||
if( abs( new_val - *( work -> value_used )) > 2 )
|
||||
{
|
||||
// 大きく離れた
|
||||
work -> large_diff_count += 1;
|
||||
work -> large_diff_count ++;
|
||||
if( work -> large_diff_count > 16 )
|
||||
{
|
||||
*( work -> value_used ) = new_val;
|
||||
@ -469,11 +417,11 @@ static void adc_filter( u8 new_val, filter_work *work )
|
||||
// 近所の値でも、ある期間でいっぱい偏っていたらそっちに寄せる
|
||||
if( *( work -> value_used ) < new_val )
|
||||
{
|
||||
work -> diffs += 1;
|
||||
work -> diffs ++;
|
||||
}
|
||||
else if( *( work -> value_used ) > new_val )
|
||||
{
|
||||
work -> diffs -= 1;
|
||||
work -> diffs --;
|
||||
}
|
||||
|
||||
if( --( work -> kikan ) == 0 )
|
||||
@ -494,91 +442,3 @@ static void adc_filter( u8 new_val, filter_work *work )
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
#if 0
|
||||
// getmean使用 //
|
||||
__interrupt void int_adc( )
|
||||
{
|
||||
static u8 hist_3D[3];
|
||||
static u8 hist_snd_vol[3];
|
||||
static u8 hist_bt_temp[3];
|
||||
static u8 index;
|
||||
|
||||
volatile u8 adc_data;
|
||||
|
||||
adc_data = ADCRH;
|
||||
|
||||
switch ( ADS )
|
||||
{
|
||||
/*
|
||||
case ( ADC_SEL_AMB_BRIT ): // 環境明るさ
|
||||
vreg_ctr[ VREG_C_AMBIENT_BRIGHTNESS ] = adc_data;
|
||||
break;
|
||||
*/
|
||||
|
||||
case ( ADC_SEL_3D ):
|
||||
hist_3D[index] = adc_data;
|
||||
EI();
|
||||
#ifdef _MODEL_WM0_
|
||||
adc_raw_dep = 255 - getmean3( hist_3D );
|
||||
#else
|
||||
adc_raw_dep = getmean3( hist_3D );
|
||||
#endif
|
||||
break;
|
||||
|
||||
case ( ADC_SEL_VOL ):
|
||||
hist_snd_vol[index] = adc_data;
|
||||
EI();
|
||||
#ifdef _MODEL_CTR_
|
||||
if( system_status.model == MODEL_TS_BOARD )
|
||||
{
|
||||
adc_raw_vol = getmean3( hist_snd_vol );
|
||||
}
|
||||
else
|
||||
{
|
||||
adc_raw_vol = ( 255 - getmean3( hist_snd_vol ));
|
||||
}
|
||||
#else
|
||||
adc_raw_vol = getmean3( hist_snd_vol );
|
||||
#endif
|
||||
|
||||
break;
|
||||
|
||||
case ( ADC_SEL_BATT_TEMP ):
|
||||
hist_bt_temp[index] = adc_data;
|
||||
EI();
|
||||
raw_adc_temperature = getmean3( hist_bt_temp );
|
||||
if( (( vreg_ctr[ VREG_C_STATUS_1 ] & REG_BIT_MGIC_ERR ) == 0 ) &&
|
||||
(( system_status.pwr_state == ON ) ||
|
||||
( system_status.pwr_state == SLEEP )
|
||||
)
|
||||
)
|
||||
{
|
||||
renge_task_immed_add( tski_BT_temp_update );
|
||||
}
|
||||
break;
|
||||
/* 呼ばれません
|
||||
case ( ADC_SEL_BATT_DET ):
|
||||
break;
|
||||
*/
|
||||
}
|
||||
|
||||
// もっとまともな書き方がありそうだ
|
||||
if( ADS < ADC_SEL_BATT_DET )
|
||||
{
|
||||
ADS += 1; // 次のチャンネル
|
||||
ADIF = 0; // ←これをしないと、いっこ前のチャンネルのデータの完了で直後に割り込む可能性がある
|
||||
}
|
||||
else
|
||||
{
|
||||
ADCEN = 0; // 止めてしまう
|
||||
adc_updated = true;
|
||||
index = ( index == 2 ) ? 0 : ( index + 1 ); // ノイズ取りの配列インデックス
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
|
84
trunk/batt_params.c
Normal file
84
trunk/batt_params.c
Normal file
@ -0,0 +1,84 @@
|
||||
#include "jhl_defs.h"
|
||||
|
||||
#include "batt_params.h"
|
||||
|
||||
/* ========================================================
|
||||
各社バッテリーパラメータ
|
||||
======================================================== */
|
||||
const bt_param_ bt_param[ _BT_PARAM_NUM_ ] =
|
||||
{
|
||||
// ctr ////////////////////////////////////////////////
|
||||
// BT_PARAM_CTR_MAXELL
|
||||
{
|
||||
{
|
||||
0xAE, 0xF0, 0xB4, 0x30, 0xB7, 0x40, 0xBA, 0x30,
|
||||
0xBB, 0x50, 0xBB, 0xB0, 0xBC, 0x50, 0xBD, 0x10,
|
||||
0xBD, 0x60, 0xBD, 0xB0, 0xBF, 0xE0, 0xC2, 0xB0,
|
||||
0xC4, 0x20, 0xC7, 0xB0, 0xCA, 0xE0, 0xCE, 0x10,
|
||||
0x01, 0xF0, 0x14, 0x10, 0x14, 0x20, 0x06, 0x30,
|
||||
0x63, 0x90, 0x49, 0x00, 0x6E, 0x00, 0x77, 0x70,
|
||||
0x7B, 0x00, 0x19, 0x00, 0x19, 0x00, 0x17, 0xF0,
|
||||
0x1C, 0x60, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00
|
||||
},
|
||||
2,
|
||||
{ 92, (u8)(-256* 0.79), (u8)(-256* 4.35) },
|
||||
0xD800,
|
||||
{ 0xEA, 0xE8 }
|
||||
},
|
||||
|
||||
// BT_PARAM_CTR_PANA
|
||||
{
|
||||
{
|
||||
0x8C, 0x30, 0x9C, 0x10, 0xA5, 0xE0, 0xB0, 0x40,
|
||||
0xB1, 0xC0, 0xB2, 0x00, 0xB2, 0x50, 0xB3, 0x10,
|
||||
0xB4, 0x90, 0xB6, 0x20, 0xB8, 0x60, 0xBA, 0x50,
|
||||
0xBF, 0xA0, 0xC6, 0xB0, 0xCE, 0x90, 0xD0, 0x20,
|
||||
0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20,
|
||||
0x7B, 0x30, 0x68, 0x60, 0x20, 0x00, 0x17, 0x00,
|
||||
0x17, 0x30, 0x12, 0xF0, 0x0D, 0xE0, 0x07, 0xF0,
|
||||
0x07, 0x00, 0x09, 0x30, 0x01, 0xC0, 0x01, 0xC0
|
||||
},
|
||||
1,
|
||||
{ 171, (u8)(-256* 1.00), (u8)(-256* 2.60) },
|
||||
0xDA20,
|
||||
{ 0x69, 0x67 },
|
||||
},
|
||||
|
||||
// spfl ///////////////////////////////////////////////
|
||||
// BT_PARAM_SPFL_MAXELL
|
||||
{
|
||||
{
|
||||
0xA1, 0x20, 0xB7, 0x50, 0xB9, 0xD0, 0xBB, 0x00,
|
||||
0xBC, 0x30, 0xBC, 0x60, 0xBC, 0xA0, 0xBD, 0x10,
|
||||
0xBD, 0xC0, 0xBE, 0x70, 0xBF, 0xD0, 0xC2, 0xA0,
|
||||
0xC4, 0x00, 0xC8, 0x50, 0xCC, 0x80, 0xD0, 0xB0,
|
||||
0x01, 0xA0, 0x25, 0x10, 0x18, 0xB0, 0x17, 0xC0,
|
||||
0x95, 0x20, 0x6F, 0xE0, 0x7C, 0x60, 0x35, 0x10,
|
||||
0x35, 0x00, 0x37, 0xF0, 0x16, 0xF0, 0x1C, 0xA0,
|
||||
0x17, 0x30, 0x11, 0xD0, 0x11, 0xF0, 0x11, 0xF0
|
||||
},
|
||||
2,
|
||||
{ 94, (u8)(-256* 0.35), (u8)(-256* 3.85) },
|
||||
0xDAB0,
|
||||
{ 0xF5, 0xF3 }
|
||||
},
|
||||
|
||||
// BT_PARAM_SPFL_PANA !!dummy!!
|
||||
{
|
||||
{
|
||||
0x8C, 0x30, 0x9C, 0x10, 0xA5, 0xE0, 0xB0, 0x40,
|
||||
0xB1, 0xC0, 0xB2, 0x00, 0xB2, 0x50, 0xB3, 0x10,
|
||||
0xB4, 0x90, 0xB6, 0x20, 0xB8, 0x60, 0xBA, 0x50,
|
||||
0xBF, 0xA0, 0xC6, 0xB0, 0xCE, 0x90, 0xD0, 0x20,
|
||||
0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20,
|
||||
0x7B, 0x30, 0x68, 0x60, 0x20, 0x00, 0x17, 0x00,
|
||||
0x17, 0x30, 0x12, 0xF0, 0x0D, 0xE0, 0x07, 0xF0,
|
||||
0x07, 0x00, 0x09, 0x30, 0x01, 0xC0, 0x01, 0xC0
|
||||
},
|
||||
1,
|
||||
{ 171, (u8)(-256* 1.00), (u8)(-256* 2.60) },
|
||||
0xDA20,
|
||||
{ 0x69, 0x67 },
|
||||
}
|
||||
};
|
||||
|
@ -36,7 +36,7 @@ typedef struct
|
||||
u8 hi,low;
|
||||
} verify_;
|
||||
|
||||
typedef struct
|
||||
typedef struct
|
||||
{
|
||||
u8 mg_param[64];
|
||||
u8 v_scale;
|
||||
@ -46,49 +46,4 @@ typedef struct
|
||||
} bt_param_;
|
||||
|
||||
|
||||
|
||||
|
||||
/* ========================================================
|
||||
各社バッテリーパラメータ
|
||||
======================================================== */
|
||||
const bt_param_ bt_param[ _BT_PARAM_NUM_ ] =
|
||||
{
|
||||
// BT_PARAM_CTR_MAXELL
|
||||
{
|
||||
{
|
||||
0xAE, 0xF0, 0xB4, 0x30, 0xB7, 0x40, 0xBA, 0x30,
|
||||
0xBB, 0x50, 0xBB, 0xB0, 0xBC, 0x50, 0xBD, 0x10,
|
||||
0xBD, 0x60, 0xBD, 0xB0, 0xBF, 0xE0, 0xC2, 0xB0,
|
||||
0xC4, 0x20, 0xC7, 0xB0, 0xCA, 0xE0, 0xCE, 0x10,
|
||||
0x01, 0xF0, 0x14, 0x10, 0x14, 0x20, 0x06, 0x30,
|
||||
0x63, 0x90, 0x49, 0x00, 0x6E, 0x00, 0x77, 0x70,
|
||||
0x7B, 0x00, 0x19, 0x00, 0x19, 0x00, 0x17, 0xF0,
|
||||
0x1C, 0x60, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00
|
||||
},
|
||||
2,
|
||||
{ 92, (u8)(-256* 0.79), (u8)(-256* 4.35) },
|
||||
0xD800,
|
||||
{ 0xEA, 0xE8 }
|
||||
},
|
||||
|
||||
// BT_PARAM_CTR_PANA
|
||||
{
|
||||
{
|
||||
0x8C, 0x30, 0x9C, 0x10, 0xA5, 0xE0, 0xB0, 0x40,
|
||||
0xB1, 0xC0, 0xB2, 0x00, 0xB2, 0x50, 0xB3, 0x10,
|
||||
0xB4, 0x90, 0xB6, 0x20, 0xB8, 0x60, 0xBA, 0x50,
|
||||
0xBF, 0xA0, 0xC6, 0xB0, 0xCE, 0x90, 0xD0, 0x20,
|
||||
0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20,
|
||||
0x7B, 0x30, 0x68, 0x60, 0x20, 0x00, 0x17, 0x00,
|
||||
0x17, 0x30, 0x12, 0xF0, 0x0D, 0xE0, 0x07, 0xF0,
|
||||
0x07, 0x00, 0x09, 0x30, 0x01, 0xC0, 0x01, 0xC0
|
||||
},
|
||||
1,
|
||||
{ 171, (u8)(-256* 1.00), (u8)(-256* 2.60) },
|
||||
0xDA20,
|
||||
{ 0x69, 0x67 },
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
|
2020
trunk/bsr.hex
2020
trunk/bsr.hex
File diff suppressed because it is too large
Load Diff
BIN
trunk/bsr.lmf
BIN
trunk/bsr.lmf
Binary file not shown.
1106
trunk/bsr_k0r.map
1106
trunk/bsr_k0r.map
File diff suppressed because it is too large
Load Diff
@ -40,9 +40,7 @@ MERGE @@R_INIT: =ROM ; ROM
|
||||
; RAM1,RAM2領域はユーザープログラムで使用しても良いですが、セルフプログラム時は
|
||||
; セルフプログラムのライブラリが使用するため、値は破壊されます。
|
||||
;
|
||||
memory RAM2 : (0FFE20H, 00C0H) ; セルフプログラム時、使用禁止領域
|
||||
;memory SLF_RAM : (0FFE00H, 0020H) ; Slef Program予約領域[使用禁止]
|
||||
memory RAM : (0FF900H, 0500H) ; ユーザーRAM領域
|
||||
;memory SLF_RAM : (0FF900H, 0020H) ; Slef Program予約領域[使用禁止]
|
||||
|
||||
|
||||
memory RAM2 : (0FFE20H, 00C0H) ; セルフプログラム時、使用禁止領域
|
||||
;memory SLF_RAM : (0FFE00H, 0020H) ; Slef Program予約領域[使用禁止]
|
||||
|
@ -17,7 +17,11 @@ enum pwr_state_
|
||||
enum poweron_reason_
|
||||
{
|
||||
NONE = 0,
|
||||
PWSW
|
||||
RSN_PWSW,
|
||||
RSN_RTC_ALARM,
|
||||
RSN_TRIAL, // ‘ÌŒ±‘ä
|
||||
RSN_RSV4,
|
||||
RSN_RSV5
|
||||
};
|
||||
|
||||
|
||||
|
@ -2,19 +2,30 @@
|
||||
#define __config__
|
||||
|
||||
|
||||
#define MCU_VER_MAJOR 0x02
|
||||
#define MCU_VER_MINOR 0x03
|
||||
|
||||
|
||||
// デバッグ向けスイッチ
|
||||
|
||||
//#define _debug_led_
|
||||
//#define _ALLOW_NOBATT_
|
||||
//#define _DEBUG_BT_FUEL_
|
||||
//#define _DEBUG_BT_TEMP_
|
||||
//#define _DBG_PEDO_AUTO_ENABLE_
|
||||
//#define _DBG_LED_PRINT_
|
||||
//#define _DBG_FORCE_FULLCOLOR_
|
||||
//#define _PMIC_TEST_
|
||||
//#define _debug_led_ // LED print デバッグをしたいとき
|
||||
//#define _ALLOW_NOBATT_ // 実機電池なし(=アダプタのみ)での起動を許可
|
||||
//#define _DBG_PEDO_AUTO_ENABLE_ // 電源投入の瞬間から歩数計on
|
||||
//#define _DBG_LED_PRINT_ // LED print デバッグをしたいとき(自己アップデート用)
|
||||
//#define _ENABLE_WDT_TEST_
|
||||
//#define _FORCE_TAIKENDAI_
|
||||
//#define _FORCE_TAIKENDAI_NBD_
|
||||
//#define _DBG_CHK_OFF_LEAK_ // OFF時リーク電流のチェック(デバッガで確認)
|
||||
#define _DBG_NOP_ // ブレークを貼るためにNOP()を有効にしたいとき
|
||||
|
||||
#define _I2C_ERR_ABORT_
|
||||
|
||||
|
||||
#ifdef _DBG_NOP_
|
||||
# define dbg_nop() NOP()
|
||||
#else
|
||||
# define dbg_nop() ;
|
||||
#endif
|
||||
|
||||
|
||||
// 特殊仕様ファーム
|
||||
@ -26,9 +37,6 @@
|
||||
// デバッガアタッチ時にターゲットリセットで電源が切れてしまうのを回避
|
||||
|
||||
|
||||
#define MCU_VER_MAJOR 0x01
|
||||
#define MCU_VER_MINOR 0x37
|
||||
|
||||
// ↑改訂の時は↓気をつけないと体験台の生産できないからね!
|
||||
#ifdef _TAIKENDAI_SEISAN_SPECIAL_
|
||||
#define MCU_VER_MINOR 0x80
|
||||
|
@ -55,7 +55,7 @@
|
||||
|
||||
|
||||
/* specify the CPU frequency in [Hz], only 2MHz....20MHz allowed */
|
||||
#define FSL_SYSTEM_FREQUENCY 4000000
|
||||
#define FSL_SYSTEM_FREQUENCY 8000000
|
||||
|
||||
/* define whether low-voltage mode is used or not */
|
||||
/* #define FSL_LOW_VOLTAGE_MODE */
|
||||
@ -94,8 +94,13 @@
|
||||
|
||||
|
||||
/* FLMD0 control bit */
|
||||
#ifndef _WIN32
|
||||
#define FSL_FLMD0_HIGH {BECTL.7 = 1;}
|
||||
#define FSL_FLMD0_LOW {BECTL.7 = 0;}
|
||||
#else
|
||||
#define FSL_FLMD0_HIGH {BECTL_7 = 1;}
|
||||
#define FSL_FLMD0_LOW {BECTL_7 = 0;}
|
||||
#endif
|
||||
|
||||
|
||||
/*----------------------------------------------------------------------------------------------*/
|
||||
|
171
trunk/hal.c
Normal file
171
trunk/hal.c
Normal file
@ -0,0 +1,171 @@
|
||||
#ifndef _WIN32
|
||||
#pragma SFR
|
||||
#endif
|
||||
|
||||
#include "incs_loader.h"
|
||||
|
||||
|
||||
#define WIFI_txLatch PIF21 // 電波送信パルス 本来 led.h で定義
|
||||
|
||||
|
||||
// HALでかぶせるの ////////////////////////////////////////
|
||||
// こんな事するなら正論理にすr...いや何でもない
|
||||
bit PM_EXTDC_n;
|
||||
bit BT_IN_CHG_n;
|
||||
bit SW_POW_n;
|
||||
bit SW_HOME_n;
|
||||
bit SW_WIFI_n;
|
||||
bit SHELL_OPEN;
|
||||
|
||||
/*
|
||||
#define REG_BIT_HAL0_PM_EXTDC_n ( 1 << 7 )
|
||||
#define REG_BIT_HAL0_BT_IN_CHG_n ( 1 << 6 )
|
||||
//#define REG_BIT_HAL0_PM_IRQ_n ( 1 << 5 ) // 使わない
|
||||
#define REG_BIT_HAL0_WL_TX ( 1 << 4 )
|
||||
#define REG_BIT_HAL0_SHELL_OPEN ( 1 << 3 )
|
||||
#define REG_BIT_HAL0_SW_WIFI_n ( 1 << 2 )
|
||||
#define REG_BIT_HAL0_SW_HOME_n ( 1 << 1 )
|
||||
#define REG_BIT_HAL0_SW_POW_n ( 1 << 0 )
|
||||
|
||||
#define REG_BIT_HAL1_DIPSW_1 ( 1 << 3 )
|
||||
#define REG_BIT_HAL1_DIPSW_0 ( 1 << 2 )
|
||||
#define REG_BIT_HAL1_HW_DET_1 ( 1 << 1 )
|
||||
#define REG_BIT_HAL1_HW_DET_0 ( 1 << 0 )
|
||||
*/
|
||||
|
||||
|
||||
// 載せ替え
|
||||
// チャタリング除去ならここでやったり(押し時間カウントは別)
|
||||
void hal_update()
|
||||
{
|
||||
u8 temp_conf = vreg_ctr[ VREG_C_HAL_OVW_CONT0 ];
|
||||
u8 temp_dat = vreg_ctr[ VREG_C_HAL_OVW_DAT0 ];
|
||||
|
||||
// アダプタ有無
|
||||
if( temp_conf & REG_BIT_HAL0_PM_EXTDC_n )
|
||||
{
|
||||
// 三項式はなんだか大きくなりがち
|
||||
if(( temp_dat & REG_BIT_HAL0_PM_EXTDC_n ) == 0 )
|
||||
{
|
||||
PM_EXTDC_n = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
PM_EXTDC_n = 1;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
PM_EXTDC_n = PM_EXTDC_n_RAW;
|
||||
}
|
||||
|
||||
// 充電中?
|
||||
if( temp_conf & REG_BIT_HAL0_BT_IN_CHG_n )
|
||||
{
|
||||
if(( temp_dat & REG_BIT_HAL0_BT_IN_CHG_n ) == 0 )
|
||||
{
|
||||
BT_IN_CHG_n = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
BT_IN_CHG_n = 1;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
BT_IN_CHG_n = BT_IN_CHG_n_RAW;
|
||||
}
|
||||
|
||||
// 電源釦
|
||||
if( temp_conf & REG_BIT_HAL0_SW_POW_n )
|
||||
{
|
||||
if(( temp_dat & REG_BIT_HAL0_SW_POW_n ) == 0 )
|
||||
{
|
||||
SW_POW_n = 0 ;
|
||||
}
|
||||
else
|
||||
{
|
||||
SW_POW_n = 1;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
SW_POW_n = SW_POW_n_RAW;
|
||||
}
|
||||
|
||||
// 実家釦
|
||||
if( temp_conf & REG_BIT_HAL0_SW_HOME_n )
|
||||
{
|
||||
if(( temp_dat & REG_BIT_HAL0_SW_HOME_n ) == 0 )
|
||||
{
|
||||
SW_HOME_n = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
SW_HOME_n = 1;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if( system_status.model == MODEL_TS_BOARD )// 接続先のポートが違うため
|
||||
{
|
||||
SW_HOME_n = SW_HOME_n_TSBOARD_RAW;
|
||||
}
|
||||
else
|
||||
{
|
||||
SW_HOME_n = SW_HOME_n_JIKKI_RAW;
|
||||
}
|
||||
}
|
||||
|
||||
// 無線開閉
|
||||
if( temp_conf & REG_BIT_HAL0_SW_WIFI_n )
|
||||
{
|
||||
if(( temp_dat & REG_BIT_HAL0_SW_WIFI_n ) == 0 )
|
||||
{
|
||||
SW_WIFI_n = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
SW_WIFI_n = 1;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
SW_WIFI_n = SW_WIFI_n_RAW;
|
||||
}
|
||||
|
||||
// 蝶番
|
||||
if( temp_conf & REG_BIT_HAL0_SHELL_OPEN )
|
||||
{
|
||||
if(( temp_dat & REG_BIT_HAL0_SHELL_OPEN ) == 0 )
|
||||
{
|
||||
SHELL_OPEN = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
SHELL_OPEN = 1;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
SHELL_OPEN = SHELL_OPEN_RAW;
|
||||
}
|
||||
|
||||
// 無線電波発射
|
||||
if( temp_conf & REG_BIT_HAL0_WL_TX )
|
||||
{
|
||||
WIFI_txLatch = 1;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
void hal_reset()
|
||||
{
|
||||
vreg_ctr[ VREG_C_HAL_OVW_CONT0 ] = 0;
|
||||
vreg_ctr[ VREG_C_HAL_OVW_CONT1 ] = 0;
|
||||
vreg_ctr[ VREG_C_HAL_OVW_TEMPERATURE ] = 0xFF;
|
||||
vreg_ctr[ VREG_C_HAL_OVW_BT_FUEL ] = 0xFF;
|
||||
vreg_ctr[ VREG_C_HAL_OVW_BT_VOLTAGE ] = 0xFF;
|
||||
}
|
17
trunk/hal.h
Normal file
17
trunk/hal.h
Normal file
@ -0,0 +1,17 @@
|
||||
#ifndef _hal_h_
|
||||
#define _hal_h_
|
||||
|
||||
|
||||
extern bit PM_EXTDC_n;
|
||||
extern bit BT_IN_CHG_n;
|
||||
extern bit SW_POW_n;
|
||||
extern bit SW_HOME_n;
|
||||
extern bit SW_WIFI_n;
|
||||
extern bit SHELL_OPEN;
|
||||
|
||||
|
||||
// ========================================================
|
||||
void hal_update();
|
||||
void hal_reset();
|
||||
|
||||
#endif
|
BIN
trunk/hoge.bin
BIN
trunk/hoge.bin
Binary file not shown.
140
trunk/i2c_ctr.c
140
trunk/i2c_ctr.c
@ -6,10 +6,9 @@
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#ifdef _MCU_KE3_
|
||||
#pragma interrupt INTIICA int_iic_ctr // CTR側
|
||||
#else
|
||||
// TSはマザボでテレコ、WMは回路図がテレコで結局一致…
|
||||
|
||||
#ifndef _WIN32
|
||||
#pragma interrupt INTIICA1 int_iic_ctr RB1
|
||||
#endif
|
||||
|
||||
@ -49,18 +48,12 @@
|
||||
#define SMC SMC1
|
||||
#define DFC DFC1
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
// ==============================================
|
||||
extern bit irq_readed; // いずれかのIRQレジスタが読まれた
|
||||
|
||||
u8 iic_burst_state;
|
||||
|
||||
|
||||
/* ========================================================
|
||||
======================================================== */
|
||||
enum IIC_STATE
|
||||
enum en_IIC_STATE
|
||||
{
|
||||
IIC_IDLE = 0,
|
||||
IIC_RCV_REG_ADRS,
|
||||
@ -70,24 +63,37 @@ enum IIC_STATE
|
||||
};
|
||||
|
||||
|
||||
// 1バイト送受の度に割り込みが発生するバージョン
|
||||
|
||||
// ==============================================
|
||||
extern bit irq_readed; // いずれかのIRQレジスタが読まれた
|
||||
|
||||
u8 iic_burst_state;
|
||||
static enum en_IIC_STATE state = IIC_IDLE;
|
||||
|
||||
#define bit_iics_spd (i2c_stat & (1<<0))
|
||||
#define bit_iics_std (i2c_stat & (1<<1))
|
||||
#define bit_iics_ackd (i2c_stat & (1<<2))
|
||||
#define bit_iics_trc (i2c_stat & (1<<3))
|
||||
#define bit_iics_coi (i2c_stat & (1<<4))
|
||||
|
||||
// ==============================================
|
||||
__interrupt void int_iic_ctr( )
|
||||
{
|
||||
static u8 state = IIC_IDLE;
|
||||
static u8 reg_adrs;
|
||||
static u8 reg_adrs_internal;
|
||||
static u8 tx_buf;
|
||||
u8 rx_buf;
|
||||
static u8 adrs_access_from;
|
||||
static u8 adrs_access_from; // バーストアクセスの時に使う
|
||||
|
||||
EI();
|
||||
u8 i2c_stat = IICS1; // volatileのため
|
||||
|
||||
// 読み出し終了
|
||||
if( !ACKD ) // 割り込み要因はNAK(データ送信の最後)
|
||||
if( !bit_iics_ackd // 割り込み要因はNAK(データ送信の最後)
|
||||
|| bit_iics_spd ) // ストップコンディション(!ACKD に来たときは割り込み来ない (SPIE = 0))
|
||||
{
|
||||
state = IIC_IDLE;
|
||||
SPIE = 0;
|
||||
LREL = 1;
|
||||
/*
|
||||
I2Cの反応が遅くてこのフラグを処理する前にSTDがきてしまうことがある
|
||||
けど、問題なく動作するつもり
|
||||
*/
|
||||
|
||||
// レジスタリードで、割り込みピンをネゲート
|
||||
// まだ読まれてない割り込みがあれば、再度アサート
|
||||
@ -104,58 +110,68 @@ __interrupt void int_iic_ctr( )
|
||||
IRQ0_ast;
|
||||
}
|
||||
}
|
||||
|
||||
// I2C終了時に何かする物 //
|
||||
hosu_read_end( ); // 歩数計読み出し終了
|
||||
rtc_unlock( );
|
||||
iic_burst_state = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
if( SPD ) // 割り込み要因はストップコンディション
|
||||
// 通信の最後。↑の !ACKD に来たときは割り込み来ない (SPIE = 0 のため )
|
||||
{
|
||||
state = IIC_IDLE;
|
||||
SPIE = 0;
|
||||
// I2C終了時に何かする物 //
|
||||
rtc_unlock( );
|
||||
LREL = 1;
|
||||
EI();
|
||||
return;
|
||||
}
|
||||
|
||||
if( STD ) // 割り込み要因:スタートコンディション
|
||||
if( bit_iics_std ) // 割り込み要因:スタートコンディション
|
||||
{
|
||||
if( ( state == IIC_TX ) || ( state == IIC_RX )
|
||||
|| ( state == IIC_RCV_REG_ADRS )
|
||||
)
|
||||
if( !( state == IIC_IDLE || state == IIC_TX_OR_RX ))
|
||||
{
|
||||
// sp/nack 取り損ねた
|
||||
dbg_nop(); // こないはず...
|
||||
/*
|
||||
// パケットの先頭のstと見なす。
|
||||
// 普通に続行
|
||||
state = IIC_IDLE;
|
||||
// no break //
|
||||
}
|
||||
}
|
||||
/*/
|
||||
// リトライしてもらう
|
||||
state = IIC_IDLE;
|
||||
SPIE = 0;
|
||||
LREL = 1;
|
||||
EI();
|
||||
//*/
|
||||
}
|
||||
// 通常
|
||||
}
|
||||
|
||||
EI();
|
||||
|
||||
switch ( state )
|
||||
{
|
||||
case ( IIC_IDLE ):
|
||||
// 自局呼び出しに応答。
|
||||
// 初期化など
|
||||
iic_burst_state = 0;
|
||||
SPIE = 1;
|
||||
state = IIC_RCV_REG_ADRS;
|
||||
WREL = 1; // ウェイト解除
|
||||
break;
|
||||
state = IIC_RCV_REG_ADRS;
|
||||
return;
|
||||
|
||||
case ( IIC_RCV_REG_ADRS ): // 2バイト目(レジスタアドレス)受信後に来る
|
||||
// レジスタアドレス受信
|
||||
reg_adrs = IICA;
|
||||
|
||||
WREL = 1;
|
||||
adrs_access_from = reg_adrs;
|
||||
tx_buf = vreg_ctr_read( reg_adrs ); // データの準備をしておく
|
||||
state = IIC_TX_OR_RX;
|
||||
WREL = 1;
|
||||
break;
|
||||
return;
|
||||
|
||||
case ( IIC_TX_OR_RX ): // ↑の次に来る割り込み。STなら送信準備、データが来たら書き込まれ
|
||||
// if( TRC ){ // 送信方向フラグ で区別するのは、割り込み遅延時に不具合が起こりえる
|
||||
if( STD )
|
||||
// if( TRC ) // 送信方向フラグ で区別するのは、割り込み遅延時に不具合が起こりえる
|
||||
if( bit_iics_std )
|
||||
{ // スタートコンディション検出フラグ
|
||||
// リードされる
|
||||
if( COI )
|
||||
if( bit_iics_coi )
|
||||
{ // アドレス一致フラグ
|
||||
state = IIC_TX;
|
||||
// no break, no return //
|
||||
@ -163,9 +179,9 @@ __interrupt void int_iic_ctr( )
|
||||
else
|
||||
{
|
||||
// リスタートで違うデバイスが呼ばれた!
|
||||
state = IIC_IDLE; // 終了処理
|
||||
SPIE = 0;
|
||||
LREL = 1; // ウェイト解除?
|
||||
state = IIC_IDLE; // 終了処理
|
||||
return;
|
||||
}
|
||||
}
|
||||
@ -174,6 +190,7 @@ __interrupt void int_iic_ctr( )
|
||||
state = IIC_RX; // データ1バイト受信の割り込みだった
|
||||
// no break, no return //
|
||||
}
|
||||
/* FALLTHROUGH */
|
||||
|
||||
default: // バースト R/W でここが何回も呼ばれることになる
|
||||
if( state == IIC_TX )
|
||||
@ -184,11 +201,19 @@ __interrupt void int_iic_ctr( )
|
||||
else
|
||||
{ // 受信
|
||||
rx_buf = IICA;
|
||||
vreg_ctr_write( reg_adrs, rx_buf );
|
||||
WREL = 1;
|
||||
}
|
||||
|
||||
// レジスタアドレスのインクリメント
|
||||
#ifdef _I2C_ERR_ABORT_
|
||||
if( reg_adrs >= 0x80 || reg_adrs <= 1 )
|
||||
{
|
||||
LREL = 1; // なんかデータ化けたので通信終了 nakが返るのがなぁ…
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
vreg_ctr_write( reg_adrs, rx_buf );
|
||||
WREL = 1;
|
||||
}
|
||||
|
||||
// レジスタアドレスのインクリメント
|
||||
/// アクセスポインタを進めない特殊なレジスタ
|
||||
switch( adrs_access_from )
|
||||
{
|
||||
@ -205,8 +230,7 @@ __interrupt void int_iic_ctr( )
|
||||
}
|
||||
break;
|
||||
default:
|
||||
iic_burst_state = 0; // 保険
|
||||
reg_adrs += 1;
|
||||
reg_adrs ++;
|
||||
}
|
||||
|
||||
if( state == IIC_TX )
|
||||
@ -230,14 +254,10 @@ void IIC_ctr_Init( void )
|
||||
IICAMK = 1; /* INTIICA disable */
|
||||
IICAIF = 0; /* clear INTIICA interrupt flag */
|
||||
|
||||
IICAPR0 = 1; /* set INTIICA high priority */
|
||||
IICAPR1 = 0; /* set INTIICA high priority */
|
||||
// IICAPR0 = 1; /* set INTIICA high priority */
|
||||
// IICAPR1 = 0; /* set INTIICA high priority */ スタック不足
|
||||
|
||||
#ifdef _MODEL_TEG2_
|
||||
P6 &= ~0x3;
|
||||
#else
|
||||
P20 &= ~0x3;
|
||||
#endif
|
||||
|
||||
SVA = IIC_C_SLAVEADDRESS;
|
||||
IICF = 0x01;
|
||||
@ -247,7 +267,7 @@ void IIC_ctr_Init( void )
|
||||
|
||||
SPIE = 0; // ストップコンディションでの割り込みを禁止
|
||||
WTIM = 1; // 自動でACKを返した後clkをLに固定する
|
||||
ACKE = 1; // ダメCPUは無視して次の通信をはじめるかもしれないんで早くclkを開放しないといけない
|
||||
ACKE = 1;
|
||||
|
||||
IICWH = 5;
|
||||
IICWL = 10; // L期間の長さ
|
||||
@ -259,11 +279,9 @@ void IIC_ctr_Init( void )
|
||||
|
||||
IICE = 1;
|
||||
|
||||
#ifdef _MODEL_TEG2_
|
||||
PM6 &= ~0x3; /* set clock pin for IICA */
|
||||
#else
|
||||
PM20 &= ~0x3; /* set clock pin for IICA */
|
||||
#endif
|
||||
|
||||
state = IIC_IDLE;
|
||||
}
|
||||
|
||||
|
||||
|
@ -3,17 +3,18 @@
|
||||
de JHL 藤田@開技
|
||||
'09 Feb -
|
||||
======================================================== */
|
||||
#ifndef _WIN32
|
||||
#pragma sfr
|
||||
#pragma di
|
||||
#pragma ei
|
||||
#pragma nop
|
||||
#pragma inline // memcpy()をインライン展開する(の方が小さい!)
|
||||
#endif
|
||||
|
||||
#include "incs_loader.h"
|
||||
#include "i2c_mcu.h"
|
||||
|
||||
|
||||
|
||||
// ========================================================
|
||||
// レジスタのビット名
|
||||
// プリフィックスbだが、一部のビット名がレジスタ名にかぶるため...
|
||||
@ -42,14 +43,13 @@
|
||||
#define TSF0 ( 1 << 6 )
|
||||
|
||||
// SOn
|
||||
#define TAUS_MASK 0b0000101100001011;
|
||||
#define TAUS_MASK 0x0B0B;
|
||||
|
||||
// DMCn
|
||||
#define DRS ( 1 << 6 )
|
||||
|
||||
|
||||
|
||||
|
||||
// ========================================================
|
||||
static void iic_mcu_send_st( );
|
||||
static void iic_mcu_send_re_st( );
|
||||
@ -62,12 +62,12 @@ static err iic_mcu_call_slave( u8 slave );
|
||||
// ========================================================
|
||||
bit iic_mcu_wo_dma;
|
||||
volatile bit iic_mcu_busy;
|
||||
volatile bit iic_mcu_initialized;
|
||||
static volatile bit iic_mcu_initialized;
|
||||
|
||||
|
||||
u8 iic_send_work[4];
|
||||
u8 *p_iic_send_wo_dma_dat;
|
||||
u8 iic_send_wo_dma_len;
|
||||
static u8 iic_send_work[4];
|
||||
static u8 *p_iic_send_wo_dma_dat;
|
||||
static u8 iic_send_wo_dma_len;
|
||||
|
||||
u8 iic_mcu_result; // 一文字リードの時はデータを返す。
|
||||
// ステータスが必要ならこっちを呼んで
|
||||
@ -79,7 +79,7 @@ extern bit i2c_mcu_time_out_error;
|
||||
// ========================================================
|
||||
void nop8()
|
||||
{
|
||||
// 実は nop11 位なのだが
|
||||
// ここに来る call に3clk, return に 6clk
|
||||
}
|
||||
|
||||
|
||||
@ -419,8 +419,8 @@ __interrupt void int_iic10( )
|
||||
if( iic_send_wo_dma_len != 0 )
|
||||
{
|
||||
SIO10 = *p_iic_send_wo_dma_dat;
|
||||
p_iic_send_wo_dma_dat++;
|
||||
iic_send_wo_dma_len--;
|
||||
p_iic_send_wo_dma_dat ++;
|
||||
iic_send_wo_dma_len --;
|
||||
return;
|
||||
}
|
||||
|
||||
@ -562,7 +562,7 @@ void iic_mcu_start( )
|
||||
DEN1 = 0;
|
||||
|
||||
I2C_PU_on();
|
||||
wait_ms( 20 ); // 立ち上がるのに50us位かかる
|
||||
wait_ms( 1 ); // 立ち上がるのに50us位かかる
|
||||
|
||||
SAU0EN = 1;
|
||||
nop8();
|
||||
@ -647,7 +647,7 @@ err iic_mcu_write_a_byte_codec( u8 adrs, u8 dat )
|
||||
iic_mcu_send_a_byte( 0x20 );
|
||||
iic_mcu_send_a_byte( count );
|
||||
|
||||
count++;
|
||||
count ++;
|
||||
|
||||
iic_mcu_send_sp( );
|
||||
iic_mcu_busy = false;
|
||||
|
@ -1,13 +1,18 @@
|
||||
#ifndef _WIN32
|
||||
|
||||
#pragma sfr /* 特殊機能レジスタ使用 */
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
/*============================================================================*/
|
||||
|
||||
#include "config.h"
|
||||
#ifdef _MCU_KE3_
|
||||
#else
|
||||
|
||||
#ifndef _WIN32
|
||||
|
||||
#pragma interrupt INTIICA0 int_iic_twl RB2
|
||||
|
||||
#endif
|
||||
|
||||
#include "incs.h"
|
||||
@ -47,7 +52,7 @@ extern u8 vreg_twl[];
|
||||
#define SMC SMC0
|
||||
#define TRC TRC0
|
||||
|
||||
#endif
|
||||
#endif // _MCU_BSR_
|
||||
|
||||
#ifndef _MCU_BSR_
|
||||
|
||||
@ -58,7 +63,7 @@ void IIC_twl_Stop( void )
|
||||
void IIC_twl_Init( void )
|
||||
{
|
||||
}
|
||||
#else
|
||||
#else // _MCU_BSR_
|
||||
|
||||
|
||||
|
||||
@ -77,7 +82,7 @@ enum IIC_TWL_STATE{
|
||||
#define wait_next { \
|
||||
tot = 0; \
|
||||
while( IICAIF != 1 ){ \
|
||||
tot++; \
|
||||
tot ++; \
|
||||
if( tot == 0 ){ \
|
||||
LREL = 1; \
|
||||
return; \
|
||||
@ -89,9 +94,6 @@ enum IIC_TWL_STATE{
|
||||
__interrupt void int_iic_twl( )
|
||||
{
|
||||
u8 vreg_adrs;
|
||||
u8 pre_dat;
|
||||
u8 rcvd;
|
||||
u16 tot;
|
||||
u8 state;
|
||||
|
||||
// ①
|
||||
@ -103,9 +105,12 @@ __interrupt void int_iic_twl( )
|
||||
{
|
||||
u8 my_iics;
|
||||
|
||||
wait_next; // 1バイト受信完了を待つ
|
||||
{
|
||||
u16 tot;
|
||||
wait_next; // 1バイト受信完了を待つ
|
||||
}
|
||||
|
||||
my_iics = IICS;
|
||||
my_iics = IICS;
|
||||
IICAIF = 0;
|
||||
|
||||
if( my_iics & 0x02 ) // ( STD && !SPD )
|
||||
@ -129,6 +134,8 @@ __interrupt void int_iic_twl( )
|
||||
}
|
||||
else if( ( my_iics & 0x03 ) == 0 ) // ( !STD && !SPD )
|
||||
{
|
||||
u8 rcvd;
|
||||
|
||||
// 何らか受信
|
||||
rcvd = IICA;
|
||||
WREL = 1;
|
||||
|
@ -1,19 +1,20 @@
|
||||
#ifndef _WIN32
|
||||
#pragma SFR
|
||||
#pragma di
|
||||
#pragma ei
|
||||
#pragma nop
|
||||
#pragma stop
|
||||
#pragma halt
|
||||
#endif
|
||||
|
||||
#ifndef _WIN32
|
||||
#pragma section @@CODE ROM_CODE
|
||||
//#pragma section @@CNST ROM_CNST
|
||||
#endif
|
||||
|
||||
# ifdef _WIN32
|
||||
#ifdef _WIN32
|
||||
// VCの赤線をどうにかする
|
||||
#include "sim/simOnWin.h"
|
||||
|
||||
# endif
|
||||
|
||||
|
||||
@ -28,6 +29,8 @@
|
||||
#include "jhl_defs.h"
|
||||
#include "user_define.h"
|
||||
|
||||
#include "hal.h"
|
||||
|
||||
#include "bsr_system.h"
|
||||
#include "renge\renge.h"
|
||||
#include "loader.h"
|
||||
|
@ -1,3 +1,4 @@
|
||||
#ifndef _WIN32
|
||||
#pragma SFR
|
||||
#pragma di
|
||||
#pragma ei
|
||||
@ -13,12 +14,20 @@
|
||||
//#pragma section @@CNST FSL_CNST // セットしてくれない
|
||||
#pragma section @@CNSTL LDR_CNSL
|
||||
|
||||
#endif
|
||||
|
||||
# ifdef _WIN32
|
||||
// VCの赤線をどうにかする
|
||||
#include "sim/simOnWin.h"
|
||||
# endif
|
||||
|
||||
|
||||
//=========================================================
|
||||
#include "jhl_defs.h"
|
||||
#include "user_define.h"
|
||||
|
||||
#include "hal.h"
|
||||
|
||||
#include "bsr_system.h"
|
||||
#include "renge\renge.h"
|
||||
|
||||
|
@ -1,8 +1,12 @@
|
||||
#ifndef _WIN32
|
||||
|
||||
#pragma nop
|
||||
|
||||
#endif
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#ifndef _WIN32
|
||||
//#pragma interrupt INTWDTI fn_intwdti // 未使用
|
||||
//#pragma interrupt INTLVI fn_intlvi // 未使用
|
||||
|
||||
@ -48,19 +52,10 @@
|
||||
|
||||
|
||||
/*
|
||||
それぞれの .c へ
|
||||
#ifdef _MCU_KE3_
|
||||
#pragma interrupt INTIICA int_iic_ctr RB1 // CTR側
|
||||
#else
|
||||
// TSはマザボでテレコ、WMは回路図がテレコで結局一致…
|
||||
#pragma interrupt INTIICA1 int_iic_ctr RB1
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef _MCU_KE3_
|
||||
#else
|
||||
#pragma interrupt INTIICA0 int_iic_twl RB2
|
||||
#endif
|
||||
*/
|
||||
|
||||
//#pragma interrupt INTTM00 fn_inttm00
|
||||
@ -79,6 +74,7 @@
|
||||
//#pragma interrupt INTTM06 fn_inttm06
|
||||
//#pragma interrupt INTTM07 fn_inttm07
|
||||
|
||||
|
||||
//#define _irq_debug_
|
||||
/****************************************************/
|
||||
/* 未使用時のダミー関数定義 */
|
||||
@ -379,4 +375,9 @@ __interrupt void intp5( )
|
||||
}
|
||||
|
||||
|
||||
#else
|
||||
|
||||
#include "sim/sim_interrupt_decrare.c"
|
||||
|
||||
#endif
|
||||
|
||||
|
38
trunk/led.c
38
trunk/led.c
@ -1,8 +1,11 @@
|
||||
/* ========================================================
|
||||
LED.c
|
||||
======================================================== */
|
||||
#ifndef _WIN32
|
||||
|
||||
#pragma sfr
|
||||
|
||||
#endif
|
||||
|
||||
#include "incs.h"
|
||||
#include "led.h"
|
||||
@ -54,11 +57,11 @@ u8 fade_to( u8 now, u8 goal )
|
||||
{
|
||||
if( now > goal )
|
||||
{
|
||||
now -= 1;
|
||||
now --;
|
||||
}
|
||||
else
|
||||
{
|
||||
now += 1;
|
||||
now ++;
|
||||
}
|
||||
}
|
||||
return( now );
|
||||
@ -119,14 +122,14 @@ void LED_init( )
|
||||
1 << BIT_CKS0 | 0 << BIT_CCS0 | 0 << BIT_MASTER0 | 4 << BIT_STS0 | 0
|
||||
<< BIT_CIS0 | 4 << BIT_MD123 | 1 << BIT_MD0;
|
||||
ISC = 0;
|
||||
TOM0 = 0b0000000011111110; // 出力モード。4はPWM出力しないが1にしないとTO5以降にクロックが届かない
|
||||
TOM0 = 0x00FE; // 出力モード。4はPWM出力しないが1にしないとTO5以降にクロックが届かない
|
||||
|
||||
TOL0 = 0b0000000000000000; // 出力を反転させるかフラグ
|
||||
TOL0 = 0x0000; // 出力を反転させるかフラグ
|
||||
|
||||
TO0 = 0; // タイマー動作中で、タイマー出力にしてないときのピンのラッチ。タイマー出力を使わないなら0
|
||||
TOE0 = 0b0000000011101110; // TOxをタイマーモジュールが制御?
|
||||
TO0 = 0x0000; // タイマー動作中で、タイマー出力にしてないときのピンのラッチ。タイマー出力を使わないなら0
|
||||
TOE0 = 0x00EE; // TOxをタイマーモジュールが制御?
|
||||
|
||||
TS0 = 0b0000000011101111; // 動作開始
|
||||
TS0 = 0x00EF; // 動作開始
|
||||
|
||||
TDR00 = LED_BRIGHT_MAX - 1; // 周期 10bit
|
||||
|
||||
@ -151,8 +154,8 @@ void LED_init( )
|
||||
|
||||
void LED_stop( )
|
||||
{
|
||||
TT0 = 0b0000000011101111; // 一斉停止(しないとだめ)
|
||||
TOE0 = 0b0000000000000000; // TOxをタイマーモジュールが制御?(GPIOになる)
|
||||
TT0 = 0x00EF; // 一斉停止(しないとだめ)
|
||||
TOE0 = 0x0000; // TOxをタイマーモジュールが制御?(GPIOになる)
|
||||
TAU0EN = 0;
|
||||
LED_pow_red = 0;
|
||||
LED_CAM = 0;
|
||||
@ -201,11 +204,11 @@ void tsk_led_wifi( )
|
||||
default:
|
||||
LED_duty_WiFi = vreg_ctr[VREG_C_LED_BRIGHT];
|
||||
}
|
||||
state_wifi_tx++;
|
||||
state_wifi_tx ++;
|
||||
if( state_wifi_tx == 32 ) // ←点滅後、点灯している期間の長さ
|
||||
{
|
||||
state_wifi_tx = 0;
|
||||
flag_wifi_TX -= 1;
|
||||
flag_wifi_TX --;
|
||||
}
|
||||
task_interval = 25;
|
||||
return;
|
||||
@ -228,11 +231,11 @@ void tsk_led_wifi( )
|
||||
}
|
||||
else if( LED_duty_WiFi < vreg_ctr[VREG_C_LED_BRIGHT] )
|
||||
{
|
||||
LED_duty_WiFi += 1;
|
||||
LED_duty_WiFi ++;
|
||||
}
|
||||
else
|
||||
{
|
||||
LED_duty_WiFi -= 1;
|
||||
LED_duty_WiFi --;
|
||||
}
|
||||
}
|
||||
task_interval = 3;
|
||||
@ -243,20 +246,19 @@ void tsk_led_wifi( )
|
||||
|
||||
|
||||
|
||||
|
||||
bit info_led_pattern_updated;
|
||||
/* ========================================================
|
||||
お知らせLED
|
||||
======================================================== */
|
||||
// グラデーション計算など
|
||||
void calc_info_led_fade_out( st_LED_dim_status* tgt_led )
|
||||
static 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 )
|
||||
static void calc_info_led_next_frame( st_LED_dim_status* tgt_led, u8 color )
|
||||
{
|
||||
tgt_led -> to = color * 128;
|
||||
// グラデーションのデルタを計算
|
||||
@ -317,7 +319,7 @@ void tsk_led_notify( )
|
||||
vreg_ctr[ VREG_C_LED_NOTIFY_FLAG ] |= REG_BIT_IN_LOOP;
|
||||
if( info_LED.info_LED.last_loop != 255 ) // 255:無限ループ
|
||||
{
|
||||
loops++;
|
||||
loops ++;
|
||||
if( loops > info_LED.info_LED.last_loop )
|
||||
{
|
||||
frame = 0;
|
||||
@ -337,7 +339,7 @@ void tsk_led_notify( )
|
||||
calc_info_led_next_frame( &LED_dim_status_info_B, info_LED.info_LED.blu[frame] );
|
||||
|
||||
}
|
||||
time_to_next_frame -= 1;
|
||||
time_to_next_frame --;
|
||||
}
|
||||
}
|
||||
|
||||
|
12
trunk/led.h
12
trunk/led.h
@ -17,9 +17,13 @@
|
||||
#define LED_duty_notify_blu TDR02
|
||||
|
||||
// これらはduty変えられません
|
||||
#ifndef _WIN32
|
||||
#define LED_pow_red P4.2
|
||||
#define LED_CAM P7.5
|
||||
|
||||
#else
|
||||
#define LED_pow_red mcuRegP[ _P4_2 ]
|
||||
#define LED_CAM mcuRegP[ _P7_5 ]
|
||||
#endif
|
||||
|
||||
#define NOTIFY_LED_TERM 32
|
||||
|
||||
@ -27,11 +31,7 @@
|
||||
#define LED_BRIGHT_MAX 0x00FF
|
||||
|
||||
// ====================================
|
||||
#ifdef _MCU_BSR_ // 電波送信パルス
|
||||
#define WIFI_txLatch PIF21
|
||||
#else
|
||||
#define WIFI_txLatch PIF7
|
||||
#endif
|
||||
#define WIFI_txLatch PIF21 // 電波送信パルス
|
||||
|
||||
|
||||
|
||||
|
@ -3,8 +3,12 @@
|
||||
\n BLINK,*_PLUSE の時は、1周期分は必ずその状態になります。
|
||||
\n その間に OFF→BLINK などされると、OFFが無視されます。
|
||||
*********************************************************/
|
||||
#ifndef _WIN32
|
||||
|
||||
#pragma sfr
|
||||
|
||||
#endif
|
||||
|
||||
#include "incs.h"
|
||||
#include "led.h"
|
||||
|
||||
@ -31,11 +35,12 @@ void tsk_led_cam( )
|
||||
{
|
||||
if( task_interval != 0 )
|
||||
{
|
||||
task_interval -= 1;
|
||||
task_interval --;
|
||||
return;
|
||||
}
|
||||
}
|
||||
cam_led_update = false; // TWL のブリンク設定(一発だけ点灯)のため
|
||||
|
||||
cam_led_update = false; // TWL のブリンク設定(一発だけ点灯)のため
|
||||
EI();
|
||||
|
||||
if( system_status.pwr_state == SLEEP ) // sleep中、強制消灯
|
||||
@ -128,7 +133,7 @@ void cam_led_twl()
|
||||
LED_CAM = 0;
|
||||
state_led_cam = 0;
|
||||
}
|
||||
task_interval = 600 / SYS_INTERVAL_TICK + 250;
|
||||
task_interval = (u8)( 600 / SYS_INTERVAL_TICK ) + 250;
|
||||
break;
|
||||
|
||||
case( TWL_CAMLED_ON ):
|
||||
|
@ -20,8 +20,12 @@ enum LED_ILUM_MODE{
|
||||
LED_POW_ILM_CEOFF
|
||||
};
|
||||
======================================================== */
|
||||
#ifndef _WIN32
|
||||
|
||||
#pragma sfr
|
||||
|
||||
#endif
|
||||
|
||||
#include "incs.h"
|
||||
#include "led.h"
|
||||
|
||||
@ -60,9 +64,9 @@ extern u8 fade_to2( st_LED_dim_status* status );
|
||||
|
||||
// ========================================================
|
||||
// 電源LEDのスリープパターンのステータス類
|
||||
u8 time_to_next_frame_sleep = LED_SLEEP_FRAME_LEN;
|
||||
u8 frame_sleep;
|
||||
st_LED_dim_status LED_dim_status_sleep;
|
||||
static u8 time_to_next_frame_sleep = LED_SLEEP_FRAME_LEN;
|
||||
static u8 frame_sleep;
|
||||
static st_LED_dim_status LED_dim_status_sleep;
|
||||
|
||||
extern bit ledInitialized;
|
||||
extern bit BT_IN_CHG_delayed_n;
|
||||
@ -126,7 +130,7 @@ void tsk_led_pow( )
|
||||
{
|
||||
LED_duty_notify_blu = 0;
|
||||
LED_duty_notify_grn = 0;
|
||||
LED_duty_notify_red = LED_pow_red ? 255: 0;
|
||||
LED_duty_notify_red = ( LED_pow_red == 0 )? 0 : 255;
|
||||
}
|
||||
}
|
||||
|
||||
@ -175,12 +179,12 @@ static void led_pow_sleep( )
|
||||
led_fade_to2( LED_duty_pow_blu, &LED_dim_status_sleep );
|
||||
|
||||
// 次のフレームに進める?
|
||||
time_to_next_frame_sleep -= 1;
|
||||
time_to_next_frame_sleep --;
|
||||
if( time_to_next_frame_sleep == 0 )
|
||||
{
|
||||
time_to_next_frame_sleep = LED_SLEEP_FRAME_LEN;
|
||||
|
||||
frame_sleep += 1;
|
||||
frame_sleep ++;
|
||||
if( frame_sleep >= LED_SLEEP_FRAME_NUM -1 )
|
||||
{
|
||||
frame_sleep = 0;
|
||||
@ -240,7 +244,7 @@ static void led_pow_bt_empty()
|
||||
led_fade_to( LED_duty_pow_blu, 0 );
|
||||
|
||||
// 赤の点滅パターンも指定できる
|
||||
delay += 1;
|
||||
delay ++;
|
||||
if( delay < 64 ) // フレームの保持時間稼ぎ
|
||||
{
|
||||
return;
|
||||
@ -255,7 +259,7 @@ static void led_pow_bt_empty()
|
||||
{
|
||||
LED_pow_red = 0;
|
||||
}
|
||||
red_blink_poi += 1;
|
||||
red_blink_poi ++;
|
||||
if( red_blink_poi >= 32 )
|
||||
{
|
||||
red_blink_poi = 0;
|
||||
|
186
trunk/loader.c
186
trunk/loader.c
@ -7,6 +7,8 @@
|
||||
ホストの通信と、自己書き換え、ファームのチェックを行う。
|
||||
|
||||
======================================================== */
|
||||
#ifndef _WIN32
|
||||
|
||||
#pragma SFR
|
||||
#pragma di
|
||||
#pragma ei
|
||||
@ -15,7 +17,7 @@
|
||||
#pragma halt
|
||||
#pragma opc
|
||||
|
||||
|
||||
#endif
|
||||
#include "incs_loader.h"
|
||||
|
||||
#include <fsl.h>
|
||||
@ -57,15 +59,13 @@ static fsl_u08 fsl_MK2H_bak_u08; /* }
|
||||
|
||||
|
||||
// ========================================================
|
||||
void FSL_Open( void );
|
||||
void FSL_Close( void );
|
||||
void hdwinit( void );
|
||||
static void hdwinit2( );
|
||||
static void chk_platform_type();
|
||||
static void chk_firm_broke();
|
||||
void hdwinit();
|
||||
static void hdwinit2();
|
||||
static void chk_platform_type();
|
||||
static void chk_firm_broke();
|
||||
|
||||
|
||||
extern void main_loop( );
|
||||
extern void main_loop();
|
||||
|
||||
|
||||
|
||||
@ -107,13 +107,15 @@ void main( )
|
||||
// 通常の電源投入
|
||||
// 電池接続時、ちょっと待ってみる(チャタリング対策)
|
||||
u16 pwup_delay0;
|
||||
for( pwup_delay0 = 0xFFFF; pwup_delay0 != 0; pwup_delay0-- ){;};
|
||||
for( pwup_delay0 = 0xFFFF; pwup_delay0 != 0; pwup_delay0 -- ){;};
|
||||
}
|
||||
|
||||
hdwinit2( );
|
||||
|
||||
#ifndef _WIN32
|
||||
// ファームの整合性チェック //
|
||||
chk_firm_broke();
|
||||
#endif
|
||||
|
||||
// 試遊台判定
|
||||
chk_platform_type();
|
||||
@ -140,7 +142,7 @@ void chk_firm_broke()
|
||||
|
||||
if( *( u8 * )( MGC_FOOT +2 ) != ':' ) // 消去済のまま
|
||||
{
|
||||
comp += 1;
|
||||
comp ++;
|
||||
}
|
||||
|
||||
if( comp != 0 )
|
||||
@ -168,6 +170,14 @@ void chk_platform_type()
|
||||
{
|
||||
// ●CTRファミリ //
|
||||
system_status.family = (enum _family)( DEV_DET >> 1 ); /// あぁ...
|
||||
if( system_status.family == FAMILY_SPFL )
|
||||
{
|
||||
pm_reg_bit_vddlcd = PM_REG_BIT_VDDLCD_AMO;
|
||||
}
|
||||
else
|
||||
{
|
||||
pm_reg_bit_vddlcd = PM_REG_BIT_VDDLCD_CGS;
|
||||
}
|
||||
|
||||
// ●CTR&その開発機材 //
|
||||
// 一応初期化
|
||||
@ -206,15 +216,15 @@ void hdwinit( void )
|
||||
{ // スタートアップルーチンが勝手に呼びます
|
||||
DI( ); /* マスタ割り込み禁止 */
|
||||
|
||||
CMC = 0b00010000; /* X1発振せず(入力ポート)、XT1使用、超低電力発振は不安定に付き通常で */
|
||||
CSC = 0b10000000; /* X1発振なし、XT1発振あり、高速内蔵発振動作 */
|
||||
CMC = bits8(0,0,0,1, 0,0,0,0); /* X1発振せず(入力ポート)、XT1使用、超低電力発振は不安定に付き通常で */
|
||||
CSC = bits8(1,0,0,0, 0,0,0,0); /* X1発振なし、XT1発振あり、高速内蔵発振動作 */
|
||||
OSMC = 0x01; /* 隠しレジスタ */
|
||||
CKC = 0b00001000; /* CPU/周辺クロック=fMAIN、fMAIN=fMX、fCLK=fMX */
|
||||
CKC = bits8(0,0,0,0, 1,0,0,0); /* CPU/周辺クロック=fMAIN、fMAIN=fMX、fCLK=fMX */
|
||||
|
||||
/*--- 低電圧検出回路の設定 ---*/
|
||||
/* リセット解除時のデフォルトは、オプション・バイトにて指定される */
|
||||
LVIS = 0b00000000; /* VLVI = 4.22±0.1V */
|
||||
LVIM = 0b00000000; /* LVI動作禁止 */
|
||||
LVIS = 0x00; /* VLVI = 4.22±0.1V */
|
||||
// LVIM = 0x00; /* LVI動作禁止 */
|
||||
/* 電源電圧(VDD)<検出電圧(VLVI)時に割込発生 */
|
||||
/* 電源電圧(VDD)≧検出電圧<VLVI)、または動作禁止時に低電圧検出 */
|
||||
}
|
||||
@ -224,130 +234,128 @@ void hdwinit( void )
|
||||
/* ********************************************************
|
||||
リブート時とで動きが違うもの
|
||||
********************************************************** */
|
||||
void hdwinit2( )
|
||||
static void hdwinit2( )
|
||||
{
|
||||
// リセット後の初期値が保証されているのは省略
|
||||
// ポート設定 //
|
||||
if( system_status.reboot ) // リセットピンだけはすぐにセットする
|
||||
{
|
||||
P0 = 0b00000011;
|
||||
P3 = 0b00000111; // 簡易I2Cは出力ラッチを1にする
|
||||
P14 = 0b00000000;
|
||||
P0 = bits8(0,0,0,0, 0,0,1,1);
|
||||
P3 = bits8(0,0,0,0, 0,1,1,1); // 簡易I2Cは出力ラッチを1にする
|
||||
}
|
||||
else
|
||||
{
|
||||
P0 = 0b00000000;
|
||||
P3 = 0b00000110; // 簡易I2Cは出力ラッチを1にする
|
||||
P14 = 0b00000000;
|
||||
// P0 = bits8(0,0,0,0, 0,0,0,0); // -,-,-,-, -,-,/reset2,/reset1
|
||||
P3 = bits8(0,0,0,0, 1,1,1,0); // -,-,-,-, i2c_pu,scl_m,sda_m,/fcr_rst // 簡易I2Cは出力ラッチを1にする
|
||||
}
|
||||
|
||||
PM0 = 0b11111111; // BSRマイコンでは、reset1は監視のみになる。
|
||||
PM3 = 0b11110000; // P31,32は簡易I2C
|
||||
PM14 = 0b11111100; // debugger[1] とりあえず出力
|
||||
// PM0 = bits8(1,1,1,1, 1,1,1,1); // BSRマイコンでは、reset1は監視のみになる。
|
||||
PM3 = bits8(1,1,1,1, 1,0,0,0); // P31,32は簡易I2C
|
||||
|
||||
if( !system_status.reboot ) // リセットピンだけはすぐにセットする
|
||||
if( !system_status.reboot )
|
||||
{
|
||||
P20 = 0b00000000;
|
||||
|
||||
P1 = 0b11000000;
|
||||
P2 = 0b00000000;
|
||||
P4 = 0b00001000;
|
||||
P5 = 0b00000000;
|
||||
P6 = 0b00000000;
|
||||
P7 = 0b01000000;
|
||||
P12 = 0b00000000;
|
||||
P15 = 0b00000000;
|
||||
// リセット後の初期値0が保証されているのは省略
|
||||
// P1 = bits8(0,0,0,0, 0,0,0,0); // bt_temp_p,bt_det_p,led_info_r,led_pow_b led_info_g,32khz_o,led_wifi,led_info_b
|
||||
// P2 = bits8(0,0,0,0, 0,0,0,0); // ad_vol,ad_3d,acc_int1,led_chg, (sw_sel),(rbr_flight),(/rbr_rst),(ext_vdd33)
|
||||
P4 = bits8(0,0,0,0, 1,0,0,0); // -,-,-,-, /chg_en, led_pow_r, dipsw[1,0]
|
||||
P5 = bits8(0,0,0,0, 1,0,0,0); // -,-,-,-, i2c_pu,led_3d,/chg,/gyro_cs
|
||||
// P6 = bits8(0,0,0,0, 0,0,0,0); // -,-,-,-, -,-,sda2,scl2
|
||||
// P7 = bits8(0,0,0,0, 0,0,0,0); // slp_o,/irq,led_cam,sw_wifi, sw_pow,pm_irw,shell_close,/extdc
|
||||
// P12 = bits8(0,0,0,0, 0,0,0,0); // -,-,-,xtal, xtal,dip(機種判定)[1,0],slp_i
|
||||
// P14 = bits8(0,0,0,0, 0,0,0,0); // -,-,-,-, -,-,i2c_pu,i2c_pu // i2c_puのポート設定はちゃんと専用関数を使って順番に。
|
||||
// P15 = bits8(0,0,0,0, 0,0,0,0); // -,-,-,-, -,-,ad_bt_det,ad_bt_temp // ADはどっちでも
|
||||
// P20 = bits8(0,0,0,0, 0,0,0,0); // -,-,accel2,sw_home, wl_tx,amoled_hv,sda1,sda2。 // spfl reboot時の液晶電源のケアは後ほど
|
||||
|
||||
/*--- タイマ・アレイ・ユニットの動作停止 ---*/
|
||||
TAU0EN = 0; /* タイマ・アレイ・ユニットへのクロック供給停止 */
|
||||
// TAU0EN = 0; /* タイマ・アレイ・ユニットへのクロック供給停止 */
|
||||
TT0 = 0x00ff; /* 全タイマ・チャネルの動作停止 */
|
||||
|
||||
/*--- RTCの動作停止 ---*/
|
||||
// 別途初期化関数
|
||||
// RTCEN = 0; /* RTCへのクロック供給停止 */
|
||||
// RTCC0 = 0b00000000; /* カウンタ動作停止 */
|
||||
}
|
||||
|
||||
/*--- 割り込み設定 ---------*/
|
||||
IF0 = 0x0000; /* 割り込み要求フラグクリア */
|
||||
IF1 = 0x0000;
|
||||
IF2 = 0x0000;
|
||||
MK0 = 0xFFFF; /* 割り込み禁止 */
|
||||
MK1 = 0xFFFF;
|
||||
MK2 = 0xFFFF;
|
||||
// IF0 = 0x0000; /* 割り込み要求フラグクリア */
|
||||
// IF1 = 0x0000;
|
||||
// IF2 = 0x0000;
|
||||
// MK0 = 0xFFFF; /* 割り込み禁止 */
|
||||
// MK1 = 0xFFFF;
|
||||
// MK2 = 0xFFFF;
|
||||
|
||||
|
||||
PM20 = 0b11111100;
|
||||
PM1 = 0b00000000;
|
||||
PM2 = 0b11101001;
|
||||
PM20 = bits8(1,1,1,1, 1,0,0,0); // p20.2はこれよりも前にLにしておくこと
|
||||
PM1 = bits8(0,0,0,0, 0,0,0,0);
|
||||
PM2 = bits8(1,1,1,0, 1,0,0,1);
|
||||
|
||||
PM4 = 0b11110011;
|
||||
PM5 = 0b11110010;
|
||||
PM6 = 0b11111100; // I2CのラインがL出力になってしまうが、システムがOFFなのでかまわない
|
||||
PM7 = 0b01011111;
|
||||
PM12 = 0b11111111; // 32kHzクロックのピン設定はどっちでもよい
|
||||
PM15 = 0b11111111;
|
||||
PM4 = bits8(1,1,1,1, 0,0,1,1);
|
||||
PM5 = bits8(1,1,1,1, 1,0,1,0);
|
||||
PM6 = bits8(1,1,1,1, 1,1,0,0); // I2CのラインがL出力になってしまうが、システムがOFFなのでかまわない
|
||||
PM7 = bits8(0,1,0,1, 1,1,1,1);
|
||||
// PM12 = bits8(1,1,1,1, 1,1,1,1); // 32kHzクロックのピン設定はどっちでもよい
|
||||
PM14 = bits8(1,1,1,1, 1,1,0,0);
|
||||
// PM15 = bits8(1,1,1,1, 1,1,1,1);
|
||||
|
||||
PU20 = 0b00010001;
|
||||
PU0 = 0b00000000; // バッテリ認証後にそれぞれセット
|
||||
PU1 = 0b00000000;
|
||||
PU3 = 0b00000000; // 外部でプルアップしないと具合が悪い。CPUがプルアップする
|
||||
PU4 = 0b00000000; // 外部でプルアップしてほしいtool0,1)
|
||||
PU5 = 0b00000010;
|
||||
PU7 = 0b00011001;
|
||||
PU12 = 0b00000000;
|
||||
PU14 = 0b00000000;
|
||||
PU20 = bits8(0,0,0,1, 0,0,0,1);
|
||||
// PU0 = bits8(0,0,0,0, 0,0,0,0); // バッテリ認証後にそれぞれセット
|
||||
// PU1 = bits8(0,0,0,0, 0,0,0,0);
|
||||
// PU3 = bits8(0,0,0,0, 0,0,0,0); // 外部でプルアップしないと具合が悪い。CPUがプルアップする
|
||||
// PU4 = bits8(0,0,0,0, 0,0,0,0); // 外部でプルアップしてほしいtool0,1)
|
||||
PU5 = bits8(0,0,0,0, 0,0,1,0);
|
||||
PU7 = bits8(0,0,0,1, 1,0,0,1); // irq(7.6)cpuがpu
|
||||
// PU12 = bits8(0,0,0,0, 0,0,0,0);
|
||||
// PU14 = bits8(0,0,0,0, 0,0,0,0);
|
||||
|
||||
// ポート入力モード・レジスタ設定 /////////////////////
|
||||
// [0:通常入力バッファ 1:TTL入力バッファ]
|
||||
PIM3 = 0b00000000;
|
||||
PIM7 = 0b00000000;
|
||||
// PIM3 = bits8(0,0,0,0, 0,0,0,0);
|
||||
// PIM7 = bits8(0,0,0,0, 0,0,0,0);
|
||||
|
||||
// ポート出力モード・レジスタ設定
|
||||
// [0:通常出力モード 1:N-chオープン・ドレーン出力]
|
||||
POM3 = 0b00000110;
|
||||
POM7 = 0b00000000;
|
||||
POM3 = bits8(0,0,0,0, 0,1,1,0);
|
||||
// POM7 = bits8(0,0,0,0, 0,0,0,0);
|
||||
|
||||
/* 割り込み優先順位、全て低位(LV3) */
|
||||
PR00 = 0xFFFF;
|
||||
PR01 = 0xFFFF;
|
||||
PR10 = 0xFFFF;
|
||||
// PR00 = 0xFFFF;
|
||||
// PR01 = 0xFFFF;
|
||||
// PR10 = 0xFFFF;
|
||||
PR11 = 0xFFFE;
|
||||
PR02L = 0xFF;
|
||||
PR12L = 0xFF;
|
||||
// PR02 = 0xFFFF;
|
||||
// PR12 = 0xFFFF;
|
||||
|
||||
/*--- 外部割込の有効エッジ設定 ---*/
|
||||
EGP0 = 0b00110001;
|
||||
EGN0 = 0b01110000;
|
||||
EGP2 = 0b00001010;
|
||||
EGN2 = 0b00000000;
|
||||
EGP0 = bits8(0,0,1,1, 0,0,0,1);
|
||||
EGN0 = bits8(0,1,1,1, 0,0,0,0);
|
||||
EGP2 = bits8(0,0,0,0, 1,0,1,0);
|
||||
// EGN2 = bits8(0,0,0,0, 0,0,0,0);
|
||||
|
||||
/*--- キー割り込み設定 ---*/
|
||||
KRM = 0b00000000; /* 全キー割り込み信号を検出しない */
|
||||
// KRM = bits8(0,0,0,0, 0,0,0,0); /* 全キー割り込み信号を検出しない */
|
||||
|
||||
/*--- ADCの動作停止 ---*/
|
||||
ADCEN = 0; /* ADCへのクロック供給停止 */
|
||||
ADM = 0b00000000; /* 変換動作停止 */
|
||||
// ADCEN = 0; /* ADCへのクロック供給停止 */
|
||||
// ADM = bits8(0,0,0,0, 0,0,0,0); /* 変換動作停止 */
|
||||
|
||||
/*--- シリアル・アレイ・ユニットの動作停止 ---*/
|
||||
SAU0EN = 0; /* シリアル・アレイ・ユニット0へのクロック供給停止 */
|
||||
// SAU0EN = 0; /* シリアル・アレイ・ユニット0へのクロック供給停止 */
|
||||
SCR00 = 0x0087; /* 各チャンネルの通信禁止 */
|
||||
SCR01 = 0x0087;
|
||||
SCR02 = 0x0087;
|
||||
SCR03 = 0x0087;
|
||||
|
||||
// IICの動作停止
|
||||
IICA0EN = 0; /* IICA0(CTR)へのクロック供給停止 */
|
||||
IICCTL00 = 0x00; /* IICA1動作停止 */
|
||||
IICA1EN = 0; // IICA1(TWL)へのクロック供給停止
|
||||
IICCTL01 = 0x00; // IICA1動作停止
|
||||
// IICA0EN = 0; /* IICA0(CTR)へのクロック供給停止 */
|
||||
// IICCTL00 = 0x00; /* IICA1動作停止 */
|
||||
// IICA1EN = 0; // IICA1(TWL)へのクロック供給停止
|
||||
// IICCTL01 = 0x00; // IICA1動作停止
|
||||
|
||||
/*--- DMAの動作停止 ---*/
|
||||
DRC0 = 0b00000000; /* DMAチャネル0の動作禁止 */
|
||||
DRC1 = 0b00000000; /* DMAチャネル1の動作禁止 */
|
||||
// DRC0 = bits8(0,0,0,0, 0,0,0,0); /* DMAチャネル0の動作禁止 */
|
||||
// DRC1 = bits8(0,0,0,0, 0,0,0,0); /* DMAチャネル1の動作禁止 */
|
||||
|
||||
/*--- クロック出力/ブザー出力停止 ---*/
|
||||
CKS0 = 0b00000000;
|
||||
CKS1 = 0b00000000;
|
||||
// CKS0 = bits8(0,0,0,0, 0,0,0,0);
|
||||
// CKS1 = bits8(0,0,0,0, 0,0,0,0);
|
||||
}
|
||||
|
||||
|
||||
@ -366,7 +374,7 @@ void wait_ms( u8 ms ){
|
||||
ms--;
|
||||
fine = 860;
|
||||
while( fine != 0 ){
|
||||
fine -= 1;
|
||||
fine --;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -6,7 +6,8 @@
|
||||
#include "config.h"
|
||||
#include "magic.h"
|
||||
|
||||
// V0.5 (ニセ0.1改)
|
||||
#ifndef _WIN32
|
||||
|
||||
#pragma section @@CNSTL MGC_LOAD AT 0x0FF6
|
||||
__far const unsigned char MGC_LOADd[] = __TIME__;
|
||||
|
||||
@ -22,51 +23,7 @@ const unsigned char MGC_HEADd[] = __TIME__;
|
||||
#pragma section @@CNST MGC_TAIL AT 0x4FF6
|
||||
const unsigned char MGC_TAILd[] = __TIME__;
|
||||
|
||||
#pragma section @@CNST MGC_VER AT 0x4FF4
|
||||
const unsigned char MCU_VER[2] = { MCU_VER_MAJOR, MCU_VER_MINOR };
|
||||
|
||||
// 0Dまでこれを使用
|
||||
// #define SIG { 0x30, 0x38, 0x3A, 0x34, 0x35, 0x3A, 0x33, 0x39, 0x00, 0x00 }
|
||||
|
||||
|
||||
// あーあ。
|
||||
/*
|
||||
// V0.5 (ニセ0.1改)
|
||||
#define SIG { 0x30, 0x38, 0x3A, 0x34, 0x35, 0x3A, 0x33, 0x39, 0x00, 0x00 }
|
||||
*/
|
||||
|
||||
/*
|
||||
メモ
|
||||
(未使用)
|
||||
V0.2の署名 31 34 3A 33 35 3A 33 35 00 00
|
||||
#define SIG { 0x31, 0x34, 0x3A, 0x33, 0x35, 0x3A, 0x33, 0x35, 0x00, 0x00 };
|
||||
|
||||
ctr_wm0
|
||||
31373A30353A32310000
|
||||
#define SIG { 0x31, 0x37, 0x3A, 0x30, 0x35, 0x3A, 0x32, 0x31, 0x00, 0x00 };
|
||||
|
||||
ctr_wm0_2
|
||||
31303A34393A35390000
|
||||
#define SIG { 0x31, 0x30, 0x3A, 0x34, 0x39, 0x3A, 0x35, 0x39, 0x00, 0x00 };
|
||||
|
||||
bsr_V0.2_090828_WM2
|
||||
31323A35393A32350000
|
||||
#define SIG { 0x31, 0x32, 0x3A, 0x35, 0x39, 0x3A, 0x32, 0x35, 0x00, 0x00 };
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
// V0.1の署名(日付) 30 38 3A 34 35 3A 33 39 00 00
|
||||
#pragma section @@CNSTL MGC_LOAD AT 0x0FF6
|
||||
__far static const unsigned char MGC_LOAD[] =
|
||||
#define SIG { 0x30, 0x38, 0x3A, 0x34, 0x35, 0x3A, 0x33, 0x39, 0x00, 0x00 }
|
||||
|
||||
|
||||
// V0.4以降
|
||||
#pragma section @@CNSTL MGC_LOAD AT 0x0FF6
|
||||
__far const unsigned char MGC_LOAD[] = __TIME__;
|
||||
|
||||
#pragma section @@CNST MGC_MIMI AT 0x2100
|
||||
const unsigned char MGC_HEAD[] = __TIME__;
|
||||
|
||||
#pragma section @@CNST MGC_TAIL AT 0x47F6
|
||||
const unsigned char MGC_TAIL[] = __TIME__;
|
||||
*/
|
||||
#endif
|
||||
|
@ -28,6 +28,7 @@ bit i2c_mcu_time_out_error; // I2C
|
||||
extern void i2c_mcu_error_monitor();
|
||||
#endif
|
||||
|
||||
|
||||
/* ========================================================
|
||||
本当のエントリ関数は loader.c にあります
|
||||
======================================================== */
|
||||
@ -37,7 +38,11 @@ void main_loop( void )
|
||||
i2c_mcu_time_out_error = false;
|
||||
#endif
|
||||
|
||||
// 電池投入時、ファームアップデート後のみ
|
||||
// HALデバッグリセット
|
||||
hal_reset();
|
||||
hal_update();
|
||||
|
||||
// 電池投入時、ファームアップデート後のみ
|
||||
RTC_init( ); // 内部でリブートか判定しています
|
||||
|
||||
renge_init( );
|
||||
@ -66,7 +71,6 @@ void main_loop( void )
|
||||
|
||||
RTCIMK = 0; /* 割り込み(アラーム&インターバル)許可 */
|
||||
|
||||
|
||||
// メインループ //
|
||||
while( 1 )
|
||||
{ // システムtick、または割り込みで廻ります。
|
||||
|
@ -3,10 +3,14 @@
|
||||
3軸加速度のリアルタイムデータから、ベクトルのノルムを出し、
|
||||
閾値を超える時間、間隔、ノルムの大きさで閾値を切り替えるなど
|
||||
********************************************************* */
|
||||
#ifndef _WIN32
|
||||
|
||||
#pragma mul
|
||||
#pragma div
|
||||
#pragma bcd
|
||||
|
||||
#endif
|
||||
|
||||
#include "incs.h"
|
||||
|
||||
#ifndef _WIN32
|
||||
@ -16,7 +20,6 @@
|
||||
#include "accero.h"
|
||||
#include "pedometer.h"
|
||||
|
||||
#include "pedo_lpf_coeff.h"
|
||||
#include "pool.h"
|
||||
|
||||
// ========================================================
|
||||
@ -35,7 +38,6 @@ typedef struct{
|
||||
|
||||
|
||||
// ========================================================
|
||||
static void hosu_increment_if_necessary();
|
||||
static u16 get_long_hour();
|
||||
static u16 calc_hours_spend( u8 );
|
||||
|
||||
@ -58,7 +60,7 @@ static u16 now_longhour;
|
||||
// ========================================================
|
||||
#define _use_my_sqrt_
|
||||
#ifdef _use_my_sqrt_
|
||||
unsigned long my_sqrt();
|
||||
static unsigned long my_sqrt( unsigned long );
|
||||
#endif
|
||||
|
||||
// 今年は閏年?
|
||||
@ -67,6 +69,12 @@ unsigned long my_sqrt();
|
||||
#define is_firstyear( y ) (( y & 0x03 ) == 1 )
|
||||
|
||||
|
||||
// 加速度センサ値をFIR-LPFに通す。それの係数
|
||||
extern const s8 lpf_coeff[];
|
||||
#define TAP 64
|
||||
#define FIL_COEFF_QUANT 10
|
||||
|
||||
|
||||
|
||||
/*=========================================================
|
||||
歩数計
|
||||
@ -88,9 +96,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_
|
||||
@ -111,7 +123,7 @@ void pedometer()
|
||||
norm_hist[ hist_indx & TAP-1 ] = normh * 256 + norml;
|
||||
#endif
|
||||
|
||||
hist_indx += 1;
|
||||
hist_indx ++;
|
||||
|
||||
// ヒストリにフィルタ(fir)を掛けて、今回の値を求める //
|
||||
filterd = 0;
|
||||
@ -126,7 +138,7 @@ void pedometer()
|
||||
/*
|
||||
if( acc_norm[0] < acc_norm_temp )
|
||||
{
|
||||
t_rise += 1;
|
||||
t_rise ++;
|
||||
if( t_rise == 0 )
|
||||
t_rise == 254;
|
||||
}
|
||||
@ -171,7 +183,10 @@ void pedometer()
|
||||
}
|
||||
else
|
||||
{
|
||||
interval_hh += ( interval_hh != 255 ) ? 1: 0; // 飽和加算って楽に書けたらいいのに
|
||||
if( interval_hh != 255 ) // 飽和加算って楽に書けたらいいのに
|
||||
{
|
||||
interval_hh ++;
|
||||
}
|
||||
}
|
||||
|
||||
// (2) 直近の極小からの時間
|
||||
@ -184,12 +199,14 @@ void pedometer()
|
||||
}
|
||||
else
|
||||
{
|
||||
time_l += ( time_l != 255 ) ? 1: 0;
|
||||
if( time_l != 255 )
|
||||
{
|
||||
time_l ++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*=========================================================
|
||||
歩数+1
|
||||
累積をインクリメント
|
||||
@ -202,7 +219,7 @@ void pedometer()
|
||||
#define HOSU_NODATA 0xFFFF
|
||||
#define HOSU_MAX 0xFFFE
|
||||
|
||||
static void hosu_increment_if_necessary()
|
||||
void hosu_increment_if_necessary()
|
||||
{
|
||||
u8 year_compd; // hour境界補正済み現在年。comp(ensation -ed)
|
||||
|
||||
@ -232,10 +249,14 @@ static void hosu_increment_if_necessary()
|
||||
{
|
||||
// 歩数計が止まっていた時間を考慮して必要なら進める
|
||||
// 補正計算 元旦零時台で昨日扱いになった場合、大晦日の23時台に上書き
|
||||
if( now_longhour == (u16)-1 ) // マジックナンバーとかではなくて実際に計算結果が-1
|
||||
if( now_longhour == (u16)-1 ) // 昨年大晦日の23時台扱いのとき、計算結果が -1 になってる
|
||||
{
|
||||
now_longhour = ( ( 365 + ( is_firstyear(year_compd) ? 1: 0 )) * 24 ) -1;
|
||||
year_compd -= 1;
|
||||
now_longhour = 365 * 24 -1;
|
||||
if( is_firstyear(year_compd) )
|
||||
{
|
||||
now_longhour += 24;
|
||||
}
|
||||
year_compd --;
|
||||
}
|
||||
fill_hosu_hist_hours( calc_hours_spend( year_compd ) ); // ■書き込みポインタの更新も行う
|
||||
|
||||
@ -265,10 +286,11 @@ static void hosu_increment_if_necessary()
|
||||
else
|
||||
{
|
||||
// 通常パス
|
||||
pool.vreg_c_ext.pedo_log[ p_record ] += 1;
|
||||
pool.vreg_c_ext.pedo_log[ p_record ] ++;
|
||||
}
|
||||
|
||||
// 累積の更新 //
|
||||
DI();
|
||||
if( ++vreg_ctr[ VREG_C_ACC_HOSU_L ] == 0 ) // カンストチェック
|
||||
{
|
||||
if( ++vreg_ctr[ VREG_C_ACC_HOSU_M ] == 0 )
|
||||
@ -280,6 +302,7 @@ static void hosu_increment_if_necessary()
|
||||
}
|
||||
}
|
||||
}
|
||||
EI();
|
||||
}
|
||||
|
||||
|
||||
@ -301,12 +324,12 @@ static void fill_hosu_hist_hours( u16 hours )
|
||||
while( hours != 0 )
|
||||
{
|
||||
// 新仕様 いっぱいで停止
|
||||
p_record += 1;
|
||||
p_record ++;
|
||||
#if 1 // debug
|
||||
if( p_record >= PEDOMETER_LOG_SIZE )
|
||||
{
|
||||
pedolog_overflow = true;
|
||||
// NOP(); // ここに来るようだとバグ
|
||||
// dbg_nop(); // ここに来るようだとバグ
|
||||
break;
|
||||
}
|
||||
else
|
||||
@ -314,7 +337,7 @@ static void fill_hosu_hist_hours( u16 hours )
|
||||
{
|
||||
pool.vreg_c_ext.pedo_log[ p_record ] = 0;
|
||||
}
|
||||
hours -= 1;
|
||||
hours --;
|
||||
}
|
||||
|
||||
return;
|
||||
@ -331,15 +354,18 @@ void clear_hosu_hist()
|
||||
u8 hours = PEDOMETER_LOG_SIZE;
|
||||
do
|
||||
{
|
||||
hours -= 1;
|
||||
hours --;
|
||||
pool.vreg_c_ext.pedo_log[ hours ] = 0xFFFF;
|
||||
}
|
||||
while( hours != 0 );
|
||||
vreg_ctr[ VREG_C_ACC_HOSU_L ] = 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();
|
||||
}
|
||||
|
||||
|
||||
@ -379,13 +405,13 @@ u8 hosu_read( )
|
||||
if( iic_burst_state <= 5 )
|
||||
{
|
||||
rv = *( (u8*)&cal_buff + iic_burst_state ); // あうあう
|
||||
iic_burst_state += 1;
|
||||
iic_burst_state ++;
|
||||
return( rv );
|
||||
}
|
||||
else
|
||||
{
|
||||
u16 temp;
|
||||
// 16ビットで記録してあるのでばらして送る todo: もっと楽する方法があるんじゃ
|
||||
// 16ビットで記録してあるのでばらして送る /// もっと楽する方法があるんじゃ
|
||||
temp = pool.vreg_c_ext.pedo_log[ p_record_buffer ];
|
||||
if( !pedolog_read_msb )
|
||||
{
|
||||
@ -400,7 +426,7 @@ u8 hosu_read( )
|
||||
}
|
||||
else
|
||||
{
|
||||
p_record_buffer -= 1;
|
||||
p_record_buffer --;
|
||||
}
|
||||
}
|
||||
pedolog_read_msb ^= 1;
|
||||
@ -446,7 +472,7 @@ static u16 get_long_hour()
|
||||
if( is_leapyear(year) && ( 3 <= month ))
|
||||
{
|
||||
// 閏年で、閏日より後
|
||||
long_hour += 1;
|
||||
long_hour ++;
|
||||
}
|
||||
long_hour += day - 1;
|
||||
long_hour *= 24; // 日数→時間
|
||||
@ -472,6 +498,7 @@ static u16 get_long_hour()
|
||||
/* ========================================================
|
||||
軽量平方根。
|
||||
必要十分な精度で打ち切る
|
||||
pc上でシミュレーションして大丈夫そう
|
||||
======================================================== */
|
||||
static unsigned long my_sqrt(unsigned long x)
|
||||
{
|
||||
@ -526,7 +553,12 @@ static u16 calc_hours_spend( u8 year )
|
||||
else if( cal_log_latest_year == ( year -1 ) )
|
||||
{
|
||||
// 年をまたいでいるとき
|
||||
return( ( ( 365 + ( is_firstyear(year) ? 1: 0 )) * 24 ) - last_hour_fny + now_longhour );
|
||||
u16 temp = 365 * 24 - last_hour_fny + now_longhour;
|
||||
if( is_firstyear(year) )
|
||||
{
|
||||
temp += 24;
|
||||
}
|
||||
return( temp );
|
||||
}
|
||||
else if( cal_log_latest_year < year )
|
||||
{
|
||||
|
83
trunk/pedo_lpf_coeff.c
Normal file
83
trunk/pedo_lpf_coeff.c
Normal file
@ -0,0 +1,83 @@
|
||||
|
||||
#include "incs.h"
|
||||
|
||||
// =========================================================
|
||||
#define TAP 64
|
||||
#define FIL_COEFF_QUANT 10
|
||||
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
|
||||
*/
|
||||
};
|
@ -1,8 +1,14 @@
|
||||
#ifndef _pedo_
|
||||
#define _pedo_
|
||||
|
||||
#ifdef WIN32
|
||||
typedef unsigned char bit;
|
||||
typedef unsigned char u8;
|
||||
typedef unsigned short u16;
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
// =========================================================
|
||||
extern bit pedolog_read_msb;
|
||||
@ -14,6 +20,7 @@ extern bit pedolog_read_msb;
|
||||
#define hosu_read_end() pedolog_read_msb = 0
|
||||
|
||||
u8 hosu_read( );
|
||||
void hosu_increment_if_necessary();
|
||||
void fill_hosu_hist_hours( u16 );
|
||||
void clear_hosu_hist();
|
||||
void pedometer();
|
||||
|
465
trunk/pm.c
465
trunk/pm.c
@ -4,8 +4,12 @@
|
||||
nintendo
|
||||
'08 Dec
|
||||
======================================================== */
|
||||
#ifndef _WIN32
|
||||
|
||||
#pragma nop
|
||||
|
||||
#endif
|
||||
|
||||
#include "incs.h"
|
||||
#include "adc.h"
|
||||
#include "led.h"
|
||||
@ -20,27 +24,27 @@
|
||||
|
||||
|
||||
// ========================================================
|
||||
u8 raw_adc_temperature;
|
||||
BT_VENDER battery_manufacturer = BT_VENDER_NOT_CHECKED;
|
||||
static u8 ntr_pm_reg_shadow; // NTR PMIC レジスタミラー
|
||||
bit bt_authorized; // バッテリパラメータ送信済。充電開始許可
|
||||
u8 chg_led_override; // アダプタ差したとき、充電するしないに関わらずしばらく点灯させる
|
||||
u8 raw_adc_temperature;
|
||||
BT_VENDER battery_manufacturer = BT_VENDER_NOT_CHECKED;
|
||||
static u8 ntr_pm_reg_shadow; // NTR PMIC レジスタミラー
|
||||
bit bt_authorized; // バッテリパラメータ送信済。充電開始許可
|
||||
u8 chg_led_override; // アダプタ差したとき、充電するしないに関わらずしばらく点灯させる
|
||||
|
||||
static u16 bt_volt16;
|
||||
static u16 bt_volt16;
|
||||
|
||||
static bit ntr_pm_bt_low_old;
|
||||
bit BT_CHG_STAT_Change;
|
||||
bit BT_IN_CHG_delayed_n;
|
||||
static bit ntr_pm_bt_low_old;
|
||||
|
||||
bit temp_zone_charge_disable; // 温度で充電停止する時にヒステリシスを付けるため
|
||||
bit BT_IN_CHG_delayed_n;
|
||||
bit temp_zone_charge_disable; // 温度で充電停止する時にヒステリシスを付けるため
|
||||
|
||||
u8 pmic_version;
|
||||
u8 mgic_version[2];
|
||||
u8 pmic_version;
|
||||
u8 mgic_version[2];
|
||||
|
||||
static bt_param_* p_bt_param;
|
||||
u8 pm_reg_bit_vddlcd;
|
||||
|
||||
static bt_param_* p_bt_param;
|
||||
extern const bt_param_ bt_param[];
|
||||
|
||||
static err send_cmd_mgic_2B( u8 reg, u16 dat );
|
||||
static err read_mgic_2B( u8 reg, u8* dat );
|
||||
|
||||
|
||||
// ========================================================
|
||||
@ -53,6 +57,13 @@ static void bt_param_select();
|
||||
static void bt_batt_update_twl();
|
||||
static void bt_batt_update_ntr();
|
||||
|
||||
// ラッパー
|
||||
static err send_cmd_mgic_2B( u8 reg, u16 dat );
|
||||
static err read_mgic_2B( u8 reg, u8* dat );
|
||||
static err read_BT_SOC( u8* dest );
|
||||
static err read_BT_voltage( u8* dest );
|
||||
static u8 conv_ctr_bt_to_twl_bt();
|
||||
|
||||
|
||||
|
||||
// ========================================================
|
||||
@ -66,6 +77,7 @@ const u8 BT_MANUF_BORDER[] = {
|
||||
};
|
||||
|
||||
|
||||
|
||||
/* ========================================================
|
||||
電池の管理
|
||||
|
||||
@ -87,18 +99,15 @@ const u8 BT_MANUF_BORDER[] = {
|
||||
|
||||
void tsk_batt( )
|
||||
{
|
||||
static u8 task_interval = 0;
|
||||
static u8 task_interval;
|
||||
|
||||
if( system_status.pwr_state != OFF_TRIG )
|
||||
if( task_interval -- != 0 )
|
||||
{
|
||||
if( task_interval-- != 0 )
|
||||
{
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
task_interval = (u8)( INTERVAL_TSK_BATT / SYS_INTERVAL_TICK );
|
||||
}
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
task_interval = (u8)( INTERVAL_TSK_BATT / SYS_INTERVAL_TICK );
|
||||
}
|
||||
|
||||
// アダプタステータス更新 //
|
||||
@ -117,11 +126,18 @@ void tsk_batt( )
|
||||
|
||||
bt_get_charge_status(); // CCIC制御
|
||||
|
||||
LED_CHARGE = ( ! BT_IN_CHG_delayed_n )? 1: 0; // LEDに反映
|
||||
if( ! BT_IN_CHG_delayed_n ) // LEDに反映
|
||||
{
|
||||
LED_CHARGE = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
LED_CHARGE = 0;
|
||||
}
|
||||
|
||||
// アダプタつないだ瞬間、満充電でも数秒わざと点灯させる。給電してることをわからせるため。
|
||||
if( chg_led_override != 0 ){ // ↑から見ればわかるが、瞬間(数クロック)消える事がある。気がつく人いるかな…?
|
||||
chg_led_override -= 1;
|
||||
chg_led_override --;
|
||||
LED_CHARGE = 1;
|
||||
}
|
||||
|
||||
@ -132,17 +148,14 @@ void tsk_batt( )
|
||||
// tsk_miscが引き受ける
|
||||
|
||||
// 電池残量 //
|
||||
if( system_status.pwr_state != ON_CHECK )
|
||||
{
|
||||
BT_get_left();
|
||||
}
|
||||
BT_get_left();
|
||||
}
|
||||
|
||||
|
||||
#define RAW_TEMP_LH 75
|
||||
#define RAW_TEMP_LL 61
|
||||
#define RAW_TEMP_HL 184
|
||||
#define RAW_TEMP_HH 189
|
||||
#define RAW_TEMP_LH 75 // 50 [degC]
|
||||
#define RAW_TEMP_LL 61 // 55
|
||||
#define RAW_TEMP_HL 184 // 1
|
||||
#define RAW_TEMP_HH 189 // -1
|
||||
#define AVG_COUNT 40
|
||||
|
||||
/* *******************************************************
|
||||
@ -227,19 +240,17 @@ void bt_get_charge_status()
|
||||
***********************************************************/
|
||||
void pm_chk_adapter()
|
||||
{
|
||||
static u8 pm_extdc_old;
|
||||
u8 temp_pm_extdc;
|
||||
static bit pm_extdc_old;
|
||||
|
||||
temp_pm_extdc = (u8)!PM_EXTDC_n; // volatileのため
|
||||
if( pm_extdc_old != temp_pm_extdc )
|
||||
if( pm_extdc_old != PM_EXTDC_n ) // HAL を通すため、 PM_EXTDC_n の volatile にする心配なし
|
||||
{
|
||||
pm_extdc_old = temp_pm_extdc;
|
||||
if( temp_pm_extdc )
|
||||
pm_extdc_old = PM_EXTDC_n;
|
||||
if( !PM_EXTDC_n )
|
||||
{
|
||||
// 刺さった
|
||||
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)( 3000 / INTERVAL_TSK_BATT );
|
||||
chg_led_override = (u8)( 3000 / INTERVAL_TSK_BATT ); // 誤差蓄積で実測4.5secぐらいだが、もういじらない
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -296,6 +307,9 @@ void BT_chk()
|
||||
battery_manufacturer_old = battery_manufacturer;
|
||||
|
||||
BT_model_detect();
|
||||
bt_param_select(); // バッテリ残量補正パラメータなどセット 非実機でも、とりあえずの値(パナ)指定にしておく。
|
||||
// 無駄にrcomp計算させるが、未初期化ポインタを参照するのいやだし、非実機なら計算しないとか面倒
|
||||
|
||||
if( system_status.model != MODEL_JIKKI )
|
||||
{
|
||||
bt_authorized = false;
|
||||
@ -303,8 +317,6 @@ void BT_chk()
|
||||
// おしまい
|
||||
}
|
||||
|
||||
bt_param_select(); // バッテリ残量補正パラメータなどセット
|
||||
|
||||
if(( battery_manufacturer_old != battery_manufacturer ) ||
|
||||
bt_force_update )
|
||||
{
|
||||
@ -319,7 +331,7 @@ void BT_chk()
|
||||
BT_mgic_init(); // 機種判定も行います
|
||||
}
|
||||
bt_authorized = true;
|
||||
renge_task_immed_add( tski_BT_temp_update ); // 電池温度監視スタート
|
||||
renge_task_immed_add( tski_BT_temp_update ); // 電池温度監視
|
||||
}
|
||||
|
||||
|
||||
@ -362,6 +374,17 @@ void BT_model_detect()
|
||||
system_status.model = MODEL_JIKKI; // バッテリ無しの時は↓で上書きする
|
||||
}
|
||||
|
||||
// TSのhomeボタン、実機は未接続なので要端子処理 /// gndにしとけばよかった…
|
||||
if( system_status.model == MODEL_TS_BOARD )
|
||||
{
|
||||
PM_SW_HOME_n_TSBOARD = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
PM_SW_HOME_n_TSBOARD = 0;
|
||||
SW_HOME_n_TSBOARD_RAW = 0; /// 実機open どっちでもいいんだけど
|
||||
}
|
||||
|
||||
// 電池メーカーの識別 //
|
||||
{
|
||||
u8 i;
|
||||
@ -413,7 +436,6 @@ static void BT_mgic_quick_start()
|
||||
#define MGIC_CMD_RESET 0x5400
|
||||
static void BT_mgic_init()
|
||||
{
|
||||
u8 temp;
|
||||
u8 origParam[4];
|
||||
|
||||
/*
|
||||
@ -456,7 +478,7 @@ static void BT_mgic_init()
|
||||
u8 loop;
|
||||
|
||||
// 16バイトごとに区切れとのこと (ノイズ対策とか言うんだけど、意味あるんか?)
|
||||
for( loop = 0; loop < 4; loop++ )
|
||||
for( loop = 0; loop < 4; loop ++ )
|
||||
{
|
||||
iic_mcu_set_wo_dma( );
|
||||
iic_mcu_write( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_BT_PARAM + loop*16, 16, p_bt_param->mg_param + loop*16 );
|
||||
@ -473,14 +495,16 @@ static void BT_mgic_init()
|
||||
wait_ms( 150 + 15 );
|
||||
|
||||
// 9. SOCを読む。ベリファイのため。
|
||||
temp = iic_mcu_read_a_byte( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_SOC );
|
||||
{ u8 temp;
|
||||
temp = iic_mcu_read_a_byte( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_SOC );
|
||||
|
||||
if(( p_bt_param->verify.low <= temp ) && ( temp <= p_bt_param->verify.hi ))
|
||||
{
|
||||
// カスタムモデル書き込みOK!
|
||||
}else{
|
||||
// 失敗だったらリトライするのか?
|
||||
// NOP();
|
||||
if(( p_bt_param->verify.low <= temp ) && ( temp <= p_bt_param->verify.hi ))
|
||||
{
|
||||
// カスタムモデル書き込みOK!
|
||||
}else{
|
||||
// 失敗だったらリトライするのか?
|
||||
// dbg_nop();
|
||||
}
|
||||
}
|
||||
|
||||
// 10.元のRCOMPとOCVを書き戻す
|
||||
@ -516,7 +540,7 @@ task_status_immed tski_BT_temp_update( )
|
||||
{
|
||||
if( heikinka < 40 )
|
||||
{
|
||||
heikinka++;
|
||||
heikinka ++;
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -570,151 +594,138 @@ task_status_immed tski_BT_temp_update( )
|
||||
BT_chk()が実行されている必要があります。
|
||||
**********************************************************/
|
||||
void BT_get_left(){
|
||||
u8 temp_fuel[2];
|
||||
static u16 hysteresis;
|
||||
u8 temp[2];
|
||||
u8 reg_volatile_temp_bt_remain,reg_volatile_temp_bt_remain_fine; // I2Cの非同期読み込みでのちらつき防止 キャップ処理の所為
|
||||
u8 fuel_cap_by_voltage; // 電圧でキャップに使う
|
||||
|
||||
#ifdef _DEBUG_BT_FUEL_
|
||||
if( vreg_ctr[ VREG_C_COMMAND3 ] == 'd' )
|
||||
// 電池残量
|
||||
if( system_status.model == MODEL_TS_BOARD
|
||||
|| system_status.model == MODEL_SHIROBAKO )
|
||||
{
|
||||
vreg_ctr[ VREG_C_BT_REMAIN ] = vreg_ctr[ VREG_C_DBG01 ];
|
||||
}
|
||||
else
|
||||
#endif
|
||||
{
|
||||
if( system_status.model == MODEL_TS_BOARD )
|
||||
// TS & 白箱 //
|
||||
if( read_BT_SOC( temp ) == ERR_SUCCESS )
|
||||
{
|
||||
// TS //
|
||||
vreg_ctr[ VREG_C_BT_REMAIN ] = 99;
|
||||
vreg_ctr[ VREG_C_BT_VOLTAGE ] = 200;
|
||||
}
|
||||
else if( system_status.model == MODEL_SHIROBAKO )
|
||||
{
|
||||
// 白箱 //
|
||||
// 電池残量
|
||||
if( read_mgic_2B( BT_GAUGE_REG_SOC, temp_fuel ) != ERR_SUCCESS )
|
||||
{
|
||||
// エミュレーション機能がおかしい
|
||||
vreg_ctr[ VREG_C_BT_REMAIN ] = 99;
|
||||
}
|
||||
else
|
||||
{
|
||||
vreg_ctr[ VREG_C_BT_REMAIN ] = temp_fuel[0];
|
||||
vreg_ctr[ VREG_C_BT_REMAIN_FINE ] = temp_fuel[1];
|
||||
}
|
||||
|
||||
//*
|
||||
// 電池電圧
|
||||
if( read_mgic_2B( BT_GAUGE_REG_VCELL, temp_fuel ) == ERR_SUCCESS )
|
||||
{
|
||||
vreg_ctr[ VREG_C_BT_VOLTAGE ] = temp_fuel[0];
|
||||
}
|
||||
else
|
||||
//*/
|
||||
{
|
||||
vreg_ctr[ VREG_C_BT_VOLTAGE ] = 200;
|
||||
}
|
||||
reg_volatile_temp_bt_remain = temp[0];
|
||||
reg_volatile_temp_bt_remain_fine = temp[1];
|
||||
}
|
||||
else
|
||||
{
|
||||
// 実機 //
|
||||
u8 temp_v[2];
|
||||
u8 temp_force_fuel_left;
|
||||
|
||||
// 残量リード
|
||||
if( read_mgic_2B( BT_GAUGE_REG_SOC, temp_fuel ) != ERR_SUCCESS )
|
||||
{
|
||||
// 残量ICがNACK …バッテリはずれた
|
||||
vreg_ctr[ VREG_C_STATUS_1 ] |= REG_BIT_MGIC_ERR;
|
||||
bt_authorized = false;
|
||||
vreg_ctr[ VREG_C_BT_REMAIN ] = 0;
|
||||
force_off = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
// バッテリパラメータの関係でビットシフトが必要
|
||||
bt_volt16 = temp_fuel[0] * 256 + temp_fuel[1];
|
||||
bt_volt16 /= p_bt_param->v_scale;
|
||||
temp_fuel[0] = (u8)(( bt_volt16 >> 8 ) & 0xFF);
|
||||
if( temp_fuel[0] == 0 )
|
||||
{
|
||||
// 0%台の時は1.00%に上げ底
|
||||
// 充電開始後もしばらくは電池残量が減るので
|
||||
// 0%に到達してしまうことがあるのだ
|
||||
temp_fuel[0] = 1;
|
||||
temp_fuel[1] = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
temp_fuel[1] = (u8)(bt_volt16 & 0xFF);
|
||||
}
|
||||
|
||||
|
||||
// 電圧でキャップ
|
||||
if( read_mgic_2B( BT_GAUGE_REG_VCELL, temp_v ) == ERR_SUCCESS )
|
||||
{
|
||||
vreg_ctr[ VREG_C_BT_VOLTAGE ] = temp_v[0];
|
||||
|
||||
bt_volt16 = ( temp_v[0] * 256 + temp_v[1] );
|
||||
|
||||
if( bt_volt16 > V_TH_30 )
|
||||
{
|
||||
temp_force_fuel_left = 100;
|
||||
hysteresis = 0;
|
||||
}
|
||||
else if( bt_volt16 - hysteresis > V_TH_LO )
|
||||
{
|
||||
temp_force_fuel_left = 30;
|
||||
hysteresis = 0;
|
||||
}
|
||||
else if( bt_volt16 > V_TH_EMPTY )
|
||||
{
|
||||
temp_force_fuel_left = BATT_TH_LO; // ここから赤
|
||||
hysteresis = 500;
|
||||
}
|
||||
else if( bt_volt16 > V_TH_ZERO )
|
||||
{
|
||||
temp_force_fuel_left = BATT_TH_EMPTY;
|
||||
hysteresis = 500;
|
||||
}
|
||||
else if( bt_volt16 > V_TH_FORCE_OFF )
|
||||
{
|
||||
temp_force_fuel_left = 0;
|
||||
hysteresis = 500;
|
||||
}
|
||||
else
|
||||
{
|
||||
force_off = true;
|
||||
hysteresis = 500;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 充電許可(=アダプタも刺さってる)のに充電してない
|
||||
// かつ、(少なくとも)素の電池残量が60%以上(CCICバグ回避)
|
||||
// = 充電完了。電池がへたってくるとMGICが100%を返さない
|
||||
if( !BT_CHG_Ena_n && BT_IN_CHG_delayed_n ){
|
||||
vreg_ctr[ VREG_C_BT_REMAIN ] = 100;
|
||||
vreg_ctr[ VREG_C_BT_REMAIN_FINE ] = 0;
|
||||
}
|
||||
else
|
||||
{ // 少ない方にキャップ
|
||||
if( temp_force_fuel_left > temp_fuel[0] )
|
||||
{
|
||||
vreg_ctr[ VREG_C_BT_REMAIN ] = temp_fuel[0];
|
||||
vreg_ctr[ VREG_C_BT_REMAIN_FINE ] = temp_fuel[1];
|
||||
}
|
||||
else
|
||||
{
|
||||
vreg_ctr[ VREG_C_BT_REMAIN ] = temp_force_fuel_left;
|
||||
vreg_ctr[ VREG_C_BT_REMAIN_FINE ] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
if( system_status.taikendai_nbd )
|
||||
{
|
||||
vreg_ctr[ VREG_C_BT_REMAIN ] = 100;
|
||||
// エミュレーション機能がおかしい
|
||||
// それで電源断は不便すぎるだろう
|
||||
reg_volatile_temp_bt_remain = 99;
|
||||
reg_volatile_temp_bt_remain_fine = 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// 実機 //
|
||||
// 残量リード
|
||||
if( read_BT_SOC( temp ) != ERR_SUCCESS )
|
||||
{
|
||||
// 残量ICがNACK …バッテリはずれた
|
||||
vreg_ctr[ VREG_C_STATUS_1 ] |= REG_BIT_MGIC_ERR;
|
||||
bt_authorized = false;
|
||||
reg_volatile_temp_bt_remain = 0;
|
||||
force_off = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
u16 temp_u16;
|
||||
|
||||
// バッテリパラメータの関係でビットシフトが必要
|
||||
temp_u16 = temp[0] * 256 + temp[1];
|
||||
temp_u16 /= p_bt_param->v_scale;
|
||||
reg_volatile_temp_bt_remain = (u8)(( temp_u16 >> 8 ) & 0xFF );
|
||||
if( reg_volatile_temp_bt_remain == 0 )
|
||||
{
|
||||
// 0%台の時は1.00%に上げ底
|
||||
// 充電開始後もしばらくは電池残量が減るので
|
||||
// 0%に到達してしまうことがあるのだ
|
||||
reg_volatile_temp_bt_remain = 1;
|
||||
reg_volatile_temp_bt_remain_fine = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
reg_volatile_temp_bt_remain_fine = (u8)(temp_u16 & 0xFF);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 電池電圧
|
||||
{
|
||||
if( read_BT_voltage( temp ) != ERR_SUCCESS ) // 2byte read
|
||||
{
|
||||
temp[0] = (u8)( V_BT_4000MV / 256 ); // 電池電圧読めなかったら4000mVだったことにしておく。
|
||||
temp[1] = 0;
|
||||
}
|
||||
vreg_ctr[ VREG_C_BT_VOLTAGE ] = temp[0];
|
||||
bt_volt16 = ( temp[0] * 256 + temp[1] );
|
||||
}
|
||||
|
||||
|
||||
// 電圧でキャップ...の準備
|
||||
{
|
||||
static u16 hysteresis;
|
||||
|
||||
if( bt_volt16 > V_TH_30 )
|
||||
{
|
||||
fuel_cap_by_voltage = 100;
|
||||
hysteresis = 0;
|
||||
}
|
||||
else if( bt_volt16 - hysteresis > V_TH_LO )
|
||||
{
|
||||
fuel_cap_by_voltage = 30;
|
||||
hysteresis = 0;
|
||||
}
|
||||
else if( bt_volt16 > V_TH_EMPTY )
|
||||
{
|
||||
fuel_cap_by_voltage = BATT_TH_LO; // ここから赤
|
||||
hysteresis = 500;
|
||||
}
|
||||
else if( bt_volt16 > V_TH_ZERO )
|
||||
{
|
||||
fuel_cap_by_voltage = BATT_TH_EMPTY;
|
||||
hysteresis = 500;
|
||||
}
|
||||
else if( bt_volt16 > V_TH_FORCE_OFF )
|
||||
{
|
||||
fuel_cap_by_voltage = 0;
|
||||
hysteresis = 500;
|
||||
}
|
||||
else
|
||||
{
|
||||
force_off = true;
|
||||
hysteresis = 500;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// 充電許可(=アダプタも刺さってる)のに充電してない
|
||||
// かつ、(少なくとも)素の電池残量が60%以上(CCICバグ回避)
|
||||
// = 充電完了。電池がへたってくるとMGICが100%を返さない
|
||||
if( !BT_CHG_Ena_n && BT_IN_CHG_delayed_n ){
|
||||
reg_volatile_temp_bt_remain = 100;
|
||||
reg_volatile_temp_bt_remain_fine = 0;
|
||||
}
|
||||
else
|
||||
{ // 電圧でのキャップを掛けるか?
|
||||
if( fuel_cap_by_voltage < reg_volatile_temp_bt_remain )
|
||||
{
|
||||
reg_volatile_temp_bt_remain = fuel_cap_by_voltage;
|
||||
reg_volatile_temp_bt_remain_fine = 0;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
十分に問題ない電圧が供給されてるらしいのでケアせずでよし
|
||||
if( system_status.taikendai_nbd && system_status.model != MODEL_TS_BOARD ) // 電池端子に電源がつながってて値が不正なため上書き。
|
||||
{
|
||||
reg_volatile_temp_bt_remain = 100;
|
||||
}
|
||||
*/
|
||||
|
||||
vreg_ctr[ VREG_C_BT_REMAIN ] = reg_volatile_temp_bt_remain;
|
||||
vreg_ctr[ VREG_C_BT_REMAIN_FINE ] = reg_volatile_temp_bt_remain_fine;
|
||||
|
||||
// twlのレジスタ更新 (CTRに割り込み入れる前に更新しないと割り込みのタイミングがまずいかもしれない)
|
||||
bt_batt_update_twl();
|
||||
@ -723,7 +734,7 @@ void BT_get_left(){
|
||||
{
|
||||
static u8 bt_remain_old_ctr;
|
||||
|
||||
if( bt_remain_old_ctr != vreg_ctr[ VREG_C_BT_REMAIN ] )
|
||||
if( bt_remain_old_ctr != reg_volatile_temp_bt_remain )
|
||||
// CTRに通知
|
||||
{
|
||||
if( (( vreg_ctr[ VREG_C_BT_REMAIN ] <= BATT_TH_LO ) && ( BATT_TH_LO < bt_remain_old_ctr ))||
|
||||
@ -793,7 +804,7 @@ void PM_LCD_off()
|
||||
u8 tot;
|
||||
|
||||
PM_BL_set( REG_BIT_CMD_BL_U_OFF | REG_BIT_CMD_BL_L_OFF );
|
||||
vreg_ctr[VREG_C_STATUS] &= 0b10011111;
|
||||
vreg_ctr[VREG_C_STATUS] &= bits8(1,0,0,1, 1,1,1,1);
|
||||
|
||||
if( (( REG_BIT_BL_U_OFF | REG_BIT_BL_L_OFF ) & ~vreg_ctr[ VREG_C_IRQ_MASK3 ] ) != 0 )
|
||||
{
|
||||
@ -808,14 +819,14 @@ void PM_LCD_off()
|
||||
|
||||
|
||||
// 液晶電源切る //
|
||||
SPFL_LCD_AMOL_HV_CONT = 0; // 他のファミリでも弊害ないし
|
||||
SPFL_LCD_AMOL_HV_CONT = 0; // 他のファミリでもL縛りなので弊害なし
|
||||
|
||||
// 50msとか待つし、確認しましょうかね…
|
||||
if( read_pmic( PM_REG_ADRS_VDD_LCD ) != 0 )
|
||||
{
|
||||
if( system_status.family == FAMILY_SPFL )
|
||||
{
|
||||
wait_ms( 10 ); // アモルファス15Vを切ったときのウェイト。数字は暫定
|
||||
wait_ms( 10 ); // アモルファス15Vを切ったときのウェイト。
|
||||
}
|
||||
|
||||
PM_TCOM_off();
|
||||
@ -883,8 +894,8 @@ err PM_BL_set( u8 dat )
|
||||
// 更新してしまう。
|
||||
#endif
|
||||
// PMICのBLのビットと、MCUのSTATUSレジスタのビット位置が逆なため入れ替え
|
||||
vreg_ctr[VREG_C_STATUS] = (( vreg_ctr[VREG_C_STATUS] & 0b10011111 )
|
||||
| ( (( blset << 6 ) | ( blset << 4 )) & 0b01100000 ));
|
||||
vreg_ctr[VREG_C_STATUS] = (( vreg_ctr[VREG_C_STATUS] & bits8(1,0,0,1, 1,1,1,1) )
|
||||
| ( (( blset << 6 ) | ( blset << 4 )) & bits8(0,1,1,0, 0,0,0,0) ));
|
||||
|
||||
// 割り込み
|
||||
/// 複数ビットまとめて行うので、いつもの関数使用不可
|
||||
@ -1022,7 +1033,7 @@ void PM_sys_pow_off( )
|
||||
=========================================================*/
|
||||
__interrupt void intp4_extdc( )
|
||||
{
|
||||
// chg_led_override = (u8)( 1000 / INTERVAL_TSK_BATT / SYS_INTERVAL_TICK );
|
||||
// chg_led_override = (u8)( 1000 / INTERVAL_TSK_BATT );
|
||||
// chg_led_override = 4;
|
||||
}
|
||||
|
||||
@ -1193,7 +1204,8 @@ void codec_reg_init()
|
||||
{
|
||||
wait_ms( 100 );
|
||||
|
||||
ntr_pm_bt_low_old = ( vreg_ctr[ VREG_C_BT_REMAIN ] <= BATT_TH_LO )? NTR_PM_BT_EMPTY: NTR_PM_BT_ENOUGH; // 1で電池切れ
|
||||
ntr_pm_bt_low_old = conv_ctr_bt_to_twl_bt();
|
||||
|
||||
iic_mcu_write_a_byte_codec( CODEC_REG_BT, (u8)ntr_pm_bt_low_old ); // SoC から書けず
|
||||
|
||||
vol_reset();
|
||||
@ -1305,7 +1317,7 @@ static void bt_batt_update_ntr()
|
||||
else
|
||||
{
|
||||
|
||||
flag = (( vreg_ctr[ VREG_C_BT_REMAIN ] <= BATT_TH_LO )? NTR_PM_BT_EMPTY: NTR_PM_BT_ENOUGH ); // 1で電池切れ
|
||||
flag = conv_ctr_bt_to_twl_bt();
|
||||
|
||||
if(( ntr_pm_bt_low_old != flag ) || !initialized )
|
||||
{
|
||||
@ -1315,3 +1327,54 @@ static void bt_batt_update_ntr()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* ========================================================
|
||||
========================================================= */
|
||||
static err read_BT_SOC( u8* dest )
|
||||
{
|
||||
if( vreg_ctr[ VREG_C_HAL_OVW_BT_FUEL ] != 0xFF )
|
||||
{
|
||||
*dest = vreg_ctr[ VREG_C_HAL_OVW_BT_FUEL ];
|
||||
*(dest+1) = 0x00;
|
||||
return ERR_SUCCESS;
|
||||
}
|
||||
else
|
||||
{
|
||||
return( read_mgic_2B( BT_GAUGE_REG_SOC, dest ) );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* ========================================================
|
||||
========================================================= */
|
||||
static err read_BT_voltage( u8* dest )
|
||||
{
|
||||
if( vreg_ctr[ VREG_C_HAL_OVW_BT_VOLTAGE ] != 0xFF )
|
||||
{
|
||||
*dest = vreg_ctr[ VREG_C_HAL_OVW_BT_VOLTAGE ];
|
||||
// *(dest+1) = 0x00; // 使わないよ けど2バイトリード関数しか用意してないのです
|
||||
return ERR_SUCCESS;
|
||||
}
|
||||
else
|
||||
{
|
||||
return( read_mgic_2B( BT_GAUGE_REG_VCELL, dest ) );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* ========================================================
|
||||
電池残量をtwlにフラグにして返す
|
||||
========================================================= */
|
||||
static u8 conv_ctr_bt_to_twl_bt()
|
||||
{
|
||||
// ntr_pm_bt_low_old = ( vreg_ctr[ VREG_C_BT_REMAIN ] <= BATT_TH_LO )? NTR_PM_BT_EMPTY: NTR_PM_BT_ENOUGH; // 1で電池切れ
|
||||
if( vreg_ctr[ VREG_C_BT_REMAIN ] <= BATT_TH_LO )
|
||||
{
|
||||
return NTR_PM_BT_EMPTY;
|
||||
}
|
||||
else
|
||||
{
|
||||
return NTR_PM_BT_ENOUGH;
|
||||
}
|
||||
}
|
||||
|
45
trunk/pm.h
45
trunk/pm.h
@ -15,16 +15,20 @@
|
||||
#define BATT_TH_EMPTY 5
|
||||
|
||||
// 電圧レジスタと直接比較できる用にオフセット
|
||||
#define V_TH_30 (u16)( 3300 * 12.8 )
|
||||
#define V_TH_LO (u16)( 3200 * 12.8 )
|
||||
#define V_TH_EMPTY (u16)( 3150 * 12.8 )
|
||||
#define V_TH_ZERO (u16)( 3100 * 12.8 )
|
||||
#define V_TH_FORCE_OFF (u16)( 2900 * 12.8 )
|
||||
#define V_BT_4000MV (u16)( 4000 * 12.8 ) // 電圧読み出し失敗用 4000mV設定
|
||||
#define V_TH_30 (u16)( 3300 * 12.8 ) // 30%
|
||||
#define V_TH_LO (u16)( 3200 * 12.8 ) // 10%
|
||||
#define V_TH_EMPTY (u16)( 3150 * 12.8 ) // 5%
|
||||
#define V_TH_ZERO (u16)( 3100 * 12.8 ) // 0%
|
||||
#define V_TH_FORCE_OFF (u16)( 2900 * 12.8 ) // 2.9V 最終強制断
|
||||
|
||||
|
||||
//=========================================================
|
||||
#ifdef _WIN32
|
||||
#define LED_CHARGE mcuRegP[ _P2_4 ]
|
||||
#else
|
||||
#define LED_CHARGE P2.4
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
//=========================================================
|
||||
@ -101,7 +105,8 @@ enum NTR_PM_BT_STATUS{
|
||||
#define PM_REG_BIT_VDD50A ( 1 << 4 )
|
||||
|
||||
// 0x02 pw cnt2
|
||||
#define PM_REG_BIT_VDDLCD 0x07
|
||||
#define PM_REG_BIT_VDDLCD_CGS 0x07
|
||||
#define PM_REG_BIT_VDDLCD_AMO 0x05
|
||||
#define PM_REG_BIT_LCD_VCS ( 0x01 << 4 )
|
||||
#define PM_REG_BIT_LCD_TCOM ( 0x01 << 3 )
|
||||
|
||||
@ -111,11 +116,11 @@ enum NTR_PM_BT_STATUS{
|
||||
|
||||
|
||||
// 0x05 pow save
|
||||
#define PM_REG_BIT_VDD1P_1R15 0b00000000
|
||||
#define PM_REG_BIT_VDD1P_1R05 0b00001000
|
||||
#define PM_REG_BIT_VDD1P_0R90 0b00100000
|
||||
#define PM_REG_BIT_VDD_AUTO 0b00000111
|
||||
#define PM_REG_BIT_VDD_PWM 0b00000000
|
||||
#define PM_REG_BIT_VDD1P_1R15 bits8(0,0,0,0, 0,0,0,0)
|
||||
#define PM_REG_BIT_VDD1P_1R05 bits8(0,0,0,0, 1,0,0,0)
|
||||
#define PM_REG_BIT_VDD1P_0R90 bits8(0,0,1,0, 0,0,0,0)
|
||||
#define PM_REG_BIT_VDD_AUTO bits8(0,0,0,0, 0,1,1,1)
|
||||
#define PM_REG_BIT_VDD_PWM bits8(0,0,0,0, 0,0,0,0)
|
||||
|
||||
|
||||
#define DELAY_PM_TW_PWUP 16 + 2
|
||||
@ -134,6 +139,8 @@ extern bit bt_force_update;
|
||||
extern u8 pmic_version;
|
||||
extern u8 mgic_version[];
|
||||
|
||||
extern u8 pm_reg_bit_vddlcd; // アモルファス対応(電源シーケンスが違う)
|
||||
|
||||
|
||||
//=========================================================
|
||||
err PM_sys_pow_on( );
|
||||
@ -153,7 +160,6 @@ void pm_chk_adapter();
|
||||
void codec_reg_init();
|
||||
|
||||
|
||||
|
||||
task_status_immed tski_BT_temp_update( );
|
||||
task_status_immed tski_vcom_set( );
|
||||
task_status_immed tski_PM_LCD_on();
|
||||
@ -166,8 +172,6 @@ u8 read_pmic( u8 reg );
|
||||
|
||||
|
||||
#define PM_Chg_Stop() { BT_TEMP_P = 0; BT_CHG_DISABLE(); LED_CHARGE = 0; bt_authorized = false; }
|
||||
|
||||
|
||||
// これを呼ぶ前に、現在温度を教えておく必要があります。
|
||||
#define PM_reset() ( send_cmd_pmic( PM_REG_ADRS_CONT, 0x00 ) )
|
||||
|
||||
@ -184,10 +188,11 @@ u8 read_pmic( u8 reg );
|
||||
#define PM_VDD_on() ( send_cmd_pmic( PM_REG_ADRS_VDD_SYS, PM_REG_BIT_VDD ))
|
||||
#define PM_VDD50A_on() ( send_cmd_pmic( PM_REG_ADRS_VDD_SYS, ( PM_REG_BIT_VDD | PM_REG_BIT_VDD50A )))
|
||||
#define PM_VDD_off() ( send_cmd_pmic( PM_REG_ADRS_VDD_SYS, 0 ))
|
||||
#define PM_off() ( send_cmd_pmic( PM_REG_ADRS_VDD_SYS, 0 ))
|
||||
#define PM_off() PM_VDD_off()
|
||||
|
||||
#define PM_VDD_normMode() ( send_cmd_pmic( PM_REG_ADRS_POW_SAVE, PM_REG_BIT_VDD1P_1R15 | PM_REG_BIT_VDD_PWM ))
|
||||
#define PM_VDD_ecoMode() ( send_cmd_pmic( PM_REG_ADRS_POW_SAVE, PM_REG_BIT_VDD1P_0R90 | PM_REG_BIT_VDD_AUTO ))
|
||||
// todo Yでコア電圧が変わるかもしれない
|
||||
|
||||
// ほか //
|
||||
#define PM_reset_neg() ( send_cmd_pmic( PM_REG_ADRS_CONT, ( PM_REG_BIT_LDSW | PM_REG_BIT_nRST1 )))
|
||||
@ -196,10 +201,10 @@ u8 read_pmic( u8 reg );
|
||||
// ↑ 0 だと異常
|
||||
|
||||
// 液晶系電源 //
|
||||
#define PM_VDDLCD_on() ( send_cmd_pmic( PM_REG_ADRS_VDD_LCD, PM_REG_BIT_VDDLCD ))
|
||||
#define PM_TCOM_on() ( send_cmd_pmic( PM_REG_ADRS_VDD_LCD, ( PM_REG_BIT_VDDLCD | PM_REG_BIT_LCD_TCOM )))
|
||||
#define PM_VCS_on() ( send_cmd_pmic( PM_REG_ADRS_VDD_LCD, ( PM_REG_BIT_VDDLCD | PM_REG_BIT_LCD_VCS | PM_REG_BIT_LCD_TCOM )))
|
||||
#define PM_TCOM_off() ( send_cmd_pmic( PM_REG_ADRS_VDD_LCD, ( PM_REG_BIT_VDDLCD | PM_REG_BIT_LCD_VCS )))
|
||||
#define PM_VDDLCD_on() ( send_cmd_pmic( PM_REG_ADRS_VDD_LCD, pm_reg_bit_vddlcd ))
|
||||
#define PM_TCOM_on() ( send_cmd_pmic( PM_REG_ADRS_VDD_LCD, ( pm_reg_bit_vddlcd | PM_REG_BIT_LCD_TCOM )))
|
||||
#define PM_VCS_on() ( send_cmd_pmic( PM_REG_ADRS_VDD_LCD, ( pm_reg_bit_vddlcd | PM_REG_BIT_LCD_VCS | PM_REG_BIT_LCD_TCOM )))
|
||||
#define PM_TCOM_off() ( send_cmd_pmic( PM_REG_ADRS_VDD_LCD, ( pm_reg_bit_vddlcd | PM_REG_BIT_LCD_VCS )))
|
||||
#define PM_TCOM_VCS_off() PM_VDDLCD_on()
|
||||
#define PM_VDDLCD_off() ( send_cmd_pmic( PM_REG_ADRS_VDD_LCD, 0 ) )
|
||||
|
||||
|
@ -1,9 +1,19 @@
|
||||
#ifndef _WIN32
|
||||
|
||||
#pragma section @@CODE ROM_CODE
|
||||
#pragma nop
|
||||
#pragma ei
|
||||
#pragma di
|
||||
#pragma sfr
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef _WIN32
|
||||
typedef unsigned char bit;
|
||||
typedef unsigned char u8;
|
||||
#endif
|
||||
|
||||
/******************************************************************************
|
||||
タスクシステム?
|
||||
なるほど、iTRONにはコンフィギュレータがあるはずだ。
|
||||
@ -17,7 +27,9 @@
|
||||
#include "..\config.h"
|
||||
#include "..\user_define.h"
|
||||
|
||||
|
||||
#ifdef _WIN32
|
||||
#include "../sim/simOnWin.h"
|
||||
#endif
|
||||
//#define _renge_test_
|
||||
|
||||
#define true 1
|
||||
@ -31,12 +43,10 @@ bit renge_task_immediate_not_empty;
|
||||
bit renge_task_interval_in_force;
|
||||
|
||||
|
||||
|
||||
#include "..\bsr_system.h"
|
||||
extern system_status_ system_status;
|
||||
|
||||
|
||||
|
||||
//******************************************************************************
|
||||
static void renge_task_immed_init();
|
||||
static void renge_task_immed_del();
|
||||
@ -87,17 +97,17 @@ err renge_task_interval_run(){
|
||||
// インターバル起動
|
||||
DI();
|
||||
if(( renge_flg_interval != 0 ) ||
|
||||
( renge_task_interval_run_force )) // todo 統合
|
||||
( renge_task_interval_run_force )) /// 統合したかったな…
|
||||
{
|
||||
renge_task_interval_in_force = renge_task_interval_run_force;
|
||||
renge_task_interval_run_force = false; // 今から起動するタスク、割り込むタスクでフラグが立つかもなので
|
||||
if( renge_flg_interval != 0 )
|
||||
{
|
||||
renge_flg_interval -= 1;
|
||||
renge_flg_interval --;
|
||||
WDT_Restart( );
|
||||
}
|
||||
EI();
|
||||
for( i = 0; i != TSK_LAST; i += 1 )
|
||||
for( i = 0; i != TSK_LAST; i ++ )
|
||||
{
|
||||
tasks[ i ]();
|
||||
// 逐次起動タスクがあったら間に挟む
|
||||
@ -145,7 +155,7 @@ err renge_task_immed_add( task_status_immed (*new_task)() ){
|
||||
// リストの空きの先頭に登録
|
||||
// 削除したばかりのタスクは、削除マーク(TSK_IMM_DELETED_)となり、空きとは明示的に区別される
|
||||
// 重複登録を避ける
|
||||
for( i = 0; i < TASK_IMMED_RUN_LIST_MAX; i += 1 )
|
||||
for( i = 0; i < TASK_IMMED_RUN_LIST_MAX; i ++ )
|
||||
{
|
||||
DI();
|
||||
if( tasks_immed[ i ] == TSK_IMM_EMPTY_ )
|
||||
@ -184,7 +194,7 @@ err renge_task_immed_run(){
|
||||
if( tasks_immed[ 0 ] != TSK_IMM_EMPTY_ )
|
||||
{
|
||||
DI();
|
||||
for( list_id = 0; list_id < TASK_IMMED_RUN_LIST_MAX; list_id += 1 ){
|
||||
for( list_id = 0; list_id < TASK_IMMED_RUN_LIST_MAX; list_id ++ ){
|
||||
if( tasks_immed[ list_id ] == TSK_IMM_EMPTY_ ){
|
||||
// リスト完了
|
||||
EI();
|
||||
@ -245,12 +255,11 @@ err renge_task_immed_run(){
|
||||
if( tasks_immed[ j ] == TSK_IMM_EMPTY_ )
|
||||
{
|
||||
do{
|
||||
j -= 1;
|
||||
DI();
|
||||
j --;
|
||||
tasks_immed[ j ] = TSK_IMM_EMPTY_;
|
||||
// リスト前詰め完了
|
||||
EI();
|
||||
}while( i < j );
|
||||
EI();
|
||||
goto imm_list_sort_fin;
|
||||
}
|
||||
else
|
||||
@ -258,7 +267,7 @@ err renge_task_immed_run(){
|
||||
// 前詰めすべきタスクを見つけた
|
||||
tasks_immed[ i ] = tasks_immed[ j ];
|
||||
tasks_immed[ j ] = TSK_IMM_DELETED_;
|
||||
i += 1;
|
||||
i ++;
|
||||
EI();
|
||||
}
|
||||
}
|
||||
@ -268,7 +277,7 @@ err renge_task_immed_run(){
|
||||
{
|
||||
// このタスク、滞留
|
||||
}
|
||||
i += 1;
|
||||
i ++;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -297,7 +306,7 @@ imm_list_sort_fin:
|
||||
}
|
||||
}
|
||||
#else
|
||||
NOP(); // リンカが怒る
|
||||
NOP(); // なんか無いとリンカが怒る
|
||||
#endif
|
||||
// }
|
||||
return( ERR_SUCCESS );
|
||||
|
30
trunk/rtc.c
30
trunk/rtc.c
@ -1,18 +1,21 @@
|
||||
/* ========================================================
|
||||
RTC
|
||||
======================================================== */
|
||||
#ifndef _WIN32
|
||||
|
||||
#pragma sfr
|
||||
#pragma inline
|
||||
|
||||
#endif
|
||||
|
||||
#include "incs.h"
|
||||
|
||||
|
||||
|
||||
#define RTC_DATA_SIZE 7
|
||||
// ========================================================
|
||||
u8 rtc_work[7];
|
||||
bit rtc_lock;
|
||||
bit rtc_dirty;
|
||||
static u8 rtc_work[RTC_DATA_SIZE];
|
||||
static bit rtc_lock;
|
||||
static bit rtc_dirty;
|
||||
bit rtc_alarm_dirty;
|
||||
|
||||
|
||||
@ -28,9 +31,12 @@ void RTC_init( void )
|
||||
RTCEN = 1; // モジュールON
|
||||
|
||||
// RTC設定
|
||||
RTCC0 = 0b00001000; /* 動作停止、24時間制、32k出力「まだなし」、定周期割り込みなし */
|
||||
RTCC1 = 0b11000000; /* アラーム割り込み有効&動作開始 */
|
||||
RTCC2 = 0b10000000; /* インターバル:32k/2^6=2ms、RTCDIV出力なし */
|
||||
RTCC0 = bits8(0,0,0,0, 1,0,0,0); /* 動作停止、24時間制、32k出力「まだなし」、定周期割り込みなし */
|
||||
// (RTCE 0 RCLOE1 RCLOE0 AMPM CT2 CT1 CT0)
|
||||
RTCC1 = bits8(1,1,0,0, 0,0,0,0); /* アラーム割り込み有効&動作開始 */
|
||||
// (WALE WALIE 0 WAFG RIFG 0 RWST RWAIT)
|
||||
RTCC2 = bits8(1,0,0,0, 0,0,0,0); /* インターバル:32k/2^6=2ms、RTCDIV出力なし */
|
||||
// (RINTE RCLOE2 RCKDIV 0 0 ICT2 ICT1 ICT0)
|
||||
|
||||
HOUR = 0x00;
|
||||
MIN = 0x00;
|
||||
@ -88,7 +94,7 @@ __interrupt void int_rtc( )
|
||||
RTC のリード
|
||||
レジスタは、sec,min,hour,week,day,month,year の順
|
||||
======================================================== */
|
||||
void rtc_buf_reflesh( )
|
||||
void rtc_buf_refresh( )
|
||||
{
|
||||
if( !rtc_lock )
|
||||
{
|
||||
@ -97,7 +103,7 @@ void rtc_buf_reflesh( )
|
||||
while( !RWST )
|
||||
{;}
|
||||
|
||||
memcpy( &vreg_ctr[VREG_C_RTC_SEC], &SEC, 7 );
|
||||
memcpy( &vreg_ctr[VREG_C_RTC_SEC], &SEC, RTC_DATA_SIZE );
|
||||
RWAIT = 0;
|
||||
// renge_task_immed_add( tski_rtc_close );
|
||||
}
|
||||
@ -116,7 +122,7 @@ void set_rtc( u8 adrs, u8 data )
|
||||
if( !rtc_dirty )
|
||||
{
|
||||
rtc_dirty = true;
|
||||
memcpy( rtc_work, &SEC, 7 );
|
||||
memcpy( rtc_work, &SEC, RTC_DATA_SIZE );
|
||||
// renge_task_immed_add( tski_rtc_close ); // I2C終了時に行う
|
||||
}
|
||||
rtc_work[adrs] = data;
|
||||
@ -140,7 +146,7 @@ void rtc_unlock( )
|
||||
RWAIT = 1;
|
||||
while( !RWST )
|
||||
{;}
|
||||
memcpy( &SEC, rtc_work, 7 );
|
||||
memcpy( &SEC, rtc_work, RTC_DATA_SIZE );
|
||||
RWAIT = 0;
|
||||
}
|
||||
|
||||
@ -165,5 +171,5 @@ void rtc_unlock( )
|
||||
======================================================== */
|
||||
__interrupt void int_rtc_int( )
|
||||
{
|
||||
renge_flg_interval += 1; // インクリメント/デクリメント命令を使うので DI()不要
|
||||
renge_flg_interval ++; // インクリメント/デクリメント命令を使うので DI()不要
|
||||
}
|
||||
|
@ -3,7 +3,7 @@
|
||||
|
||||
|
||||
void RTC_init( void );
|
||||
void rtc_buf_reflesh( );
|
||||
void rtc_buf_refresh( );
|
||||
void set_rtc( u8 adrs, u8 data );
|
||||
|
||||
//task_status_immed tski_rtc_close();
|
||||
|
@ -1,6 +1,8 @@
|
||||
/* ========================================================
|
||||
自己アップデータ
|
||||
======================================================== */
|
||||
#ifndef _WIN32
|
||||
|
||||
#pragma SFR
|
||||
#pragma di
|
||||
#pragma ei
|
||||
@ -8,6 +10,7 @@
|
||||
#pragma stop
|
||||
#pragma halt
|
||||
|
||||
#endif
|
||||
|
||||
#include "incs_loader.h"
|
||||
|
||||
@ -66,7 +69,13 @@ const u8 fsl_low_voltage_u08 = 1;
|
||||
#define WTIM WTIM1
|
||||
#endif
|
||||
|
||||
|
||||
#ifndef _WIN32
|
||||
#define LED_POW1 P1.5
|
||||
#define LED_PM_POW1 PM1.5
|
||||
#else
|
||||
#define LED_POW1 mcuRegP[ _P1_5 ]
|
||||
#define LED_PM_POW1 mcuRegPM[ _P1_5 ]
|
||||
#endif
|
||||
|
||||
// ========================================================
|
||||
static void FSL_Open( void );
|
||||
@ -124,7 +133,7 @@ void firm_update( )
|
||||
//(新ファームが書かれるところに残ってる、以前のファームのフッタを消したい)
|
||||
for( target_block = INACTIVE_BOOTSECT_TOP;
|
||||
target_block < ALTERNATE_FIRMTOP;
|
||||
target_block += 1 )
|
||||
target_block ++ )
|
||||
{
|
||||
FSL_Erase( target_block );
|
||||
}
|
||||
@ -135,7 +144,7 @@ void firm_update( )
|
||||
// ●終わったら、スタートアップルーチンに飛ぶ
|
||||
for( target_block = INACTIVE_BOOTSECT_TOP;
|
||||
target_block < ALTERNATE_FIRMTOP;
|
||||
target_block += 1 )
|
||||
target_block ++ )
|
||||
{
|
||||
u8 my_spd;
|
||||
|
||||
@ -146,7 +155,7 @@ void firm_update( )
|
||||
// 分割書き込み
|
||||
for( split_write_count = 0;
|
||||
split_write_count < SELF_UPDATE_SPLIT_WRITE_NUM;
|
||||
split_write_count += 1 )
|
||||
split_write_count ++ )
|
||||
{
|
||||
u8* p_buffer = &pool.self_update_work[0];
|
||||
u16 buff_written_size = 0;
|
||||
@ -162,8 +171,8 @@ void firm_update( )
|
||||
IICAIF = 0;
|
||||
*p_buffer = IICA;
|
||||
WREL = 1;
|
||||
p_buffer += 1;
|
||||
buff_written_size += 1;
|
||||
p_buffer ++;
|
||||
buff_written_size ++;
|
||||
}
|
||||
while( ( buff_written_size != SELF_UPDATE_BUFF_SIZE )
|
||||
&& !SPD );
|
||||
@ -196,7 +205,7 @@ void firm_update( )
|
||||
// 1ブロック書き込み完了。内部ベリファイを行う
|
||||
if( FSL_IVerify( target_block ) != FSL_OK ){
|
||||
alert(2);
|
||||
// 再度消去→書き込み ベリファイを繰り返すだけじゃダメでした... todo…?
|
||||
// 再度消去→書き込み ベリファイを繰り返すだけじゃダメでした... /// 再書き込みすべき?
|
||||
// リストア
|
||||
firm_duplicate( ALTERNATE_FIRMTOP, FIRM_TOP );
|
||||
FSL_ForceReset(); // リセット
|
||||
@ -224,7 +233,7 @@ void firm_update( )
|
||||
}
|
||||
if( *( __far u8 * )( N_MGC_L +2 ) != ':' ) // 消去済のまま
|
||||
{
|
||||
comp += 1;
|
||||
comp ++;
|
||||
}
|
||||
|
||||
if( comp == 0 )
|
||||
@ -259,7 +268,7 @@ void firm_update( )
|
||||
void firm_restore( )
|
||||
{
|
||||
DBG_LED_on;
|
||||
PM1.5 = 0;
|
||||
LED_PM_POW1 = 0;
|
||||
|
||||
// バックアップは正常? //
|
||||
{
|
||||
@ -273,7 +282,7 @@ void firm_restore( )
|
||||
}
|
||||
if( *( u8 * )( MGC_FOOT_BKUP ) == 0xFF )
|
||||
{
|
||||
comp += 1;
|
||||
comp ++;
|
||||
}
|
||||
|
||||
if( comp != 0 )
|
||||
@ -298,7 +307,7 @@ void firm_restore( )
|
||||
{
|
||||
// 赤LED ピコピコ
|
||||
comp++;
|
||||
P1.5 = ( comp == 1 || comp == 3 )? 1: 0;
|
||||
LED_POW1 = ( comp == 1 || comp == 3 )? 1: 0;
|
||||
if( comp == 8 )
|
||||
{
|
||||
comp = 0;
|
||||
@ -309,7 +318,7 @@ void firm_restore( )
|
||||
// 電源ボタンで電源off
|
||||
static u8 sw_hold_count;
|
||||
|
||||
if( !SW_POW_n )
|
||||
if( !SW_POW_n_RAW )
|
||||
{
|
||||
sw_hold_count++;
|
||||
}
|
||||
@ -345,8 +354,8 @@ void firm_restore( )
|
||||
MK2L = 0xFF;
|
||||
|
||||
// PU5 そのまま
|
||||
PU7 = 0b00001000; // PWSWI
|
||||
PU20 = 0x00; // SW_HOME 停止
|
||||
PU7 = bits8(0,0,0,0, 1,0,0,0); // PWSWI
|
||||
PU20 = bits8(0,0,0,0, 0,0,0,0);; // SW_HOME 停止
|
||||
|
||||
STOP( );
|
||||
|
||||
@ -370,8 +379,7 @@ void firm_restore( )
|
||||
}
|
||||
DBG_LED_off;
|
||||
|
||||
// todo
|
||||
// リストア失敗したら、LEDちかちかとかさせて、サービス送りにしてもらう?
|
||||
// todo リストア失敗したら、LEDちかちかとかさせて、サービス送りにしてもらう?
|
||||
|
||||
/*
|
||||
// リブート
|
||||
@ -412,9 +420,9 @@ static void FSL_Open( void )
|
||||
MK1 = 0xFFFF;
|
||||
MK2 = 0xFFFF;
|
||||
/*
|
||||
LVIM = 0b00000010;
|
||||
LVIS = 0x08;
|
||||
LVIM = 0b10000010;
|
||||
LVIM = bits8(0,0,0,0, 0,0,1,0);
|
||||
LVIS = bits8(0,0,0,0, 1,0,0,0);
|
||||
LVIM = bits8(1,0,0,0, 0,0,1,0);
|
||||
*/
|
||||
FSL_FLMD0_HIGH; // フラッシュ書き替え許可
|
||||
}
|
||||
@ -464,7 +472,7 @@ static err firm_duplicate( u8 block_src,
|
||||
// 書き込み先ブロックの数だけ繰り返す
|
||||
for( target_block = block_dest;
|
||||
target_block < ( block_dest + FIRM_SIZE );
|
||||
target_block += 1 )
|
||||
target_block ++ )
|
||||
{
|
||||
led_print(2);
|
||||
WDT_Restart( );
|
||||
@ -474,7 +482,7 @@ static err firm_duplicate( u8 block_src,
|
||||
{
|
||||
led_print(3);
|
||||
FSL_Erase( target_block );
|
||||
if( --retry_error == 0 )
|
||||
if( -- retry_error == 0 )
|
||||
{
|
||||
// フラッシュ寿命?
|
||||
FSL_Close( );
|
||||
@ -486,7 +494,7 @@ static err firm_duplicate( u8 block_src,
|
||||
// 分割書き込み分繰り返す
|
||||
for( split_write_count = 0;
|
||||
split_write_count < SELF_UPDATE_SPLIT_WRITE_NUM;
|
||||
split_write_count += 1 )
|
||||
split_write_count ++ )
|
||||
{
|
||||
u16 buff_written_size;
|
||||
u8* p_buff;
|
||||
@ -497,9 +505,9 @@ static err firm_duplicate( u8 block_src,
|
||||
do
|
||||
{
|
||||
*p_buff = *p_src;
|
||||
p_src += 1;
|
||||
p_buff += 1;
|
||||
buff_written_size +=1;
|
||||
p_src ++;
|
||||
p_buff ++;
|
||||
buff_written_size ++;
|
||||
}
|
||||
while( buff_written_size != SELF_UPDATE_BUFF_SIZE );
|
||||
|
||||
@ -574,13 +582,13 @@ void alert( u8 num )
|
||||
while(1)
|
||||
{
|
||||
WDT_Restart();
|
||||
P1.5 = 1;
|
||||
LED_POW1 = 1;
|
||||
for( i = 0; i < num; i++ )
|
||||
{
|
||||
DBG_LED_on;
|
||||
DBG_LED_off;
|
||||
}
|
||||
P1.5 = 0;
|
||||
LED_POW1 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
@ -592,8 +600,8 @@ void led_print( u8 num )
|
||||
DBG_LED_on;
|
||||
for( i = 0; i < num; i++ )
|
||||
{
|
||||
P1.5 = 1;
|
||||
P1.5 = 0;
|
||||
LED_POW1 = 1;
|
||||
LED_POW1 = 0;
|
||||
}
|
||||
DBG_LED_off;
|
||||
}
|
||||
|
96
trunk/sw.c
96
trunk/sw.c
@ -1,8 +1,12 @@
|
||||
#ifndef _WIN32
|
||||
|
||||
#pragma SFR
|
||||
#pragma NOP
|
||||
#pragma HALT
|
||||
#pragma STOP
|
||||
|
||||
#endif
|
||||
|
||||
#include "incs.h"
|
||||
|
||||
#include "i2c_twl.h"
|
||||
@ -16,27 +20,25 @@
|
||||
//=========================================================
|
||||
/*
|
||||
vreg_ctrから読みたいのでヘッダへ
|
||||
#define INTERVAL_TSK_SW 8
|
||||
#define CLICK_THRESHOLD 2
|
||||
#define INTERVAL_TSK_SW
|
||||
#define CLICK_THRESHOLD
|
||||
|
||||
#define HOLD_THREASHOLD (u8)( 2000 / INTERVAL_TSK_SW )
|
||||
#define FORCEOFF_THREASHOLD (u8)( 4000 / INTERVAL_TSK_SW )
|
||||
#define HOLD_THREASHOLD
|
||||
#define FORCEOFF_THREASHOLD
|
||||
*/
|
||||
#define TIME_MUKAN (u8)( 300 / INTERVAL_TSK_SW )
|
||||
#define TIME_MUKAN_PWSW (u16)( 8000 / INTERVAL_TSK_SW )
|
||||
#define TIME_MUKAN ( u8)( 300 / INTERVAL_TSK_SW )
|
||||
#define TIME_MUKAN_PWSW_RED_TRIAL (u16)( 15000 / INTERVAL_TSK_SW ) // 試遊台、homeマスク時間
|
||||
|
||||
//=========================================================
|
||||
u16 SW_pow_count;
|
||||
bit SW_pow_mask;
|
||||
|
||||
u8 SW_home_count, SW_wifi_count, SW_home_count_rel;
|
||||
u8 sw_wifi_mukan_time;
|
||||
static u8 SW_home_count, SW_wifi_count, SW_home_count_rel;
|
||||
static u8 sw_wifi_mukan_time;
|
||||
|
||||
bit SW_HOME_n;
|
||||
u16 off_timeout_timer;
|
||||
|
||||
u16 off_timeout_timer;
|
||||
|
||||
u16 sw_pwsw_mukan_time;
|
||||
static u16 sw_pwsw_mukan_time;
|
||||
|
||||
//=========================================================
|
||||
// 押した時間を数える。押しっぱなしでも0に戻らない
|
||||
@ -50,7 +52,7 @@ u16 sw_pwsw_mukan_time;
|
||||
if( mask != 0 ){ \
|
||||
counter = 0; \
|
||||
}else{ \
|
||||
counter += 1; \
|
||||
counter ++; \
|
||||
if( counter == 0 ) counter = -1; \
|
||||
} \
|
||||
} \
|
||||
@ -60,14 +62,14 @@ u16 sw_pwsw_mukan_time;
|
||||
#define chk_clicked( button, count, irq_bit_name ) \
|
||||
if( !button ) \
|
||||
{ \
|
||||
if( count <= CLICK_THRESHOLD ) \
|
||||
if( count < CLICK_THRESHOLD ) \
|
||||
{ \
|
||||
count += 1; \
|
||||
} \
|
||||
if( count == CLICK_THRESHOLD ) \
|
||||
{ \
|
||||
count += 1; \
|
||||
set_irq( VREG_C_IRQ0, irq_bit_name ); \
|
||||
count ++; \
|
||||
if( count == CLICK_THRESHOLD ) \
|
||||
{ \
|
||||
count ++; \
|
||||
set_irq( VREG_C_IRQ0, irq_bit_name ); \
|
||||
} \
|
||||
} \
|
||||
} \
|
||||
else \
|
||||
@ -83,22 +85,26 @@ u16 sw_pwsw_mukan_time;
|
||||
======================================================== */
|
||||
void tsk_sw( )
|
||||
{
|
||||
static u8 task_interval = 1;
|
||||
static u8 task_interval;
|
||||
|
||||
if( system_status.pwr_state == ON_TRIG )
|
||||
if( system_status.pwr_state == OFF_TRIG )
|
||||
{
|
||||
SW_pow_count = 0; // カウントクリア
|
||||
SW_pow_count = 0; // 電源投入に備えてクリア
|
||||
// task_interval = 0;
|
||||
}
|
||||
|
||||
if( --task_interval != 0 )
|
||||
{
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
task_interval = (u8)( INTERVAL_TSK_SW / SYS_INTERVAL_TICK );
|
||||
}
|
||||
if( system_status.pwr_state != ON_CHECK ) // 測定時間(PWSW_POWON_TIME)が短いのでプリスケーラ無し でないとチャタ除去があまりきかない
|
||||
{
|
||||
if( task_interval != 0 )
|
||||
{
|
||||
task_interval--;
|
||||
return;
|
||||
// おしまい
|
||||
}
|
||||
|
||||
task_interval = (u8)( INTERVAL_TSK_SW / SYS_INTERVAL_TICK ) -1; // プリスケーラ代わりに使ってますね…
|
||||
// -1はポストデクリメントのための調整
|
||||
}
|
||||
|
||||
// 8ms 毎にきます
|
||||
switch ( system_status.pwr_state )
|
||||
@ -127,14 +133,15 @@ void tsk_sw( )
|
||||
|
||||
if( off_timeout_timer != 0 ) // 長押し割り込み後、タイムアウトで強制オフ。
|
||||
{
|
||||
off_timeout_timer -= 1;
|
||||
if( off_timeout_timer == 1 )
|
||||
off_timeout_timer --;
|
||||
if( off_timeout_timer == 0 )
|
||||
{
|
||||
force_off = true;
|
||||
}
|
||||
}
|
||||
|
||||
}else{
|
||||
// スタンドアロン試遊台
|
||||
// 電源スイッチの監視 //
|
||||
if( SW_pow_count == ( TIME_PWSW_CLICK ) )
|
||||
{
|
||||
@ -142,7 +149,7 @@ void tsk_sw( )
|
||||
{
|
||||
set_irq( VREG_C_IRQ0, REG_BIT_SW_POW_CLICK );
|
||||
// いやなタイミングでPWSWを押すとHOMEメニューに入れてしまうのを回避するためのマスクタイマー
|
||||
sw_pwsw_mukan_time = TIME_MUKAN_PWSW;
|
||||
sw_pwsw_mukan_time = TIME_MUKAN_PWSW_RED_TRIAL;
|
||||
}
|
||||
}
|
||||
else if( SW_pow_count == ( HOLD_THREASHOLD ) )
|
||||
@ -158,26 +165,12 @@ void tsk_sw( )
|
||||
|
||||
count_sw_n( SW_POW_n, SW_pow_count, SW_pow_mask ); // ボタン押し時間のカウント
|
||||
|
||||
// HOME スイッチ //
|
||||
switch( system_status.model )
|
||||
{
|
||||
case( MODEL_JIKKI ):
|
||||
case( MODEL_SHIROBAKO ):
|
||||
SW_HOME_n = SW_HOME_n_JIKKI; // 接続先のポートが違うため
|
||||
break;
|
||||
case( MODEL_TS_BOARD ):
|
||||
SW_HOME_n = SW_HOME_n_TSBOARD;
|
||||
break;
|
||||
default:
|
||||
SW_HOME_n = 1; // 放されてる状態
|
||||
}
|
||||
|
||||
|
||||
chk_clicked( SW_HOME_n, SW_home_count, REG_BIT_SW_HOME_CLICK );
|
||||
// HOME sw //
|
||||
chk_clicked( SW_HOME_n, SW_home_count, REG_BIT_SW_HOME_CLICK );
|
||||
chk_clicked( !SW_HOME_n, SW_home_count_rel, REG_BIT_SW_HOME_RELEASE );
|
||||
|
||||
// wifi sw //
|
||||
/// 最悪な実装なのはわかっているが、メモリ不足と、市場に出てしまった不良スイッチを救うため
|
||||
/// 最悪な実装なのはわかっているが、市場に出てしまった不良スイッチを救うため
|
||||
if( sw_wifi_mukan_time != 0 )
|
||||
{
|
||||
sw_wifi_mukan_time--;
|
||||
@ -192,3 +185,4 @@ void tsk_sw( )
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,8 +1,12 @@
|
||||
#ifndef _WIN32
|
||||
|
||||
#pragma SFR
|
||||
#pragma NOP
|
||||
#pragma HALT
|
||||
#pragma STOP
|
||||
|
||||
#endif
|
||||
|
||||
#include "incs_loader.h"
|
||||
//#include "incs.h"
|
||||
#include "renge\renge.h"
|
||||
@ -39,20 +43,13 @@ void tsk_debug( )
|
||||
static u8 count = 0;
|
||||
// ƒfƒoƒbƒOLED<45>i8bit<69>j‚Ì<E2809A>‰Šú‰»
|
||||
temp = iic_mcu_read_a_byte( IIC_SLA_8LEDS, IIC_8LEDS_REG_DO );
|
||||
count += 1;
|
||||
count ++;
|
||||
iic_mcu_write_a_byte( IIC_SLA_8LEDS, IIC_8LEDS_REG_DO, count );
|
||||
iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 3, count );
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
#ifdef _PMIC_TEST_
|
||||
if( ( system_status.pwr_state == ON ) || ( system_status.pwr_state == SLEEP ) )
|
||||
{
|
||||
iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 0x03, 0 );
|
||||
}
|
||||
#endif
|
||||
|
||||
// iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 2, vreg_ctr[ VREG_C_IRQ1 ] );
|
||||
// iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 1, boot_ura );
|
||||
// iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 1, vreg_ctr[ VREG_C_SND_VOL ] );
|
||||
@ -103,7 +100,7 @@ task_interval tsk_hina( )
|
||||
default:
|
||||
}
|
||||
|
||||
return ( 次の起 ・ョまでのシ ・X ・e ・ tick ・・); // 毎 tic 呼ばれることになります
|
||||
return; // 毎 tic 呼ばれることになります
|
||||
}
|
||||
|
||||
|
||||
|
@ -1,8 +1,12 @@
|
||||
#ifndef _WIN32
|
||||
|
||||
#pragma SFR
|
||||
#pragma NOP
|
||||
#pragma HALT
|
||||
#pragma STOP
|
||||
|
||||
#endif
|
||||
|
||||
#include "incs.h"
|
||||
#include "renge\renge.h"
|
||||
#include "pm.h"
|
||||
@ -48,12 +52,19 @@
|
||||
|
||||
|
||||
// ========================================================
|
||||
bit twl_ver_read;
|
||||
bit going_to_sleep;
|
||||
bit twl_ver_read; // twl home menuがverを読んだら互換カーネルに割り込みを入れるため
|
||||
bit going_to_sleep; // SoCから、sleepに入る通知をもらう。slp_i のH期間が0になると
|
||||
// スリープから復帰できなくなるのを防ぐため
|
||||
|
||||
|
||||
void update_LED_3D();
|
||||
void check_twl_vol_irq();
|
||||
// 自動テスト用
|
||||
bit reserve_pedo_increnent;
|
||||
|
||||
|
||||
// ========================================================
|
||||
static void update_LED_3D();
|
||||
static void check_twl_vol_irq();
|
||||
|
||||
|
||||
|
||||
/* ========================================================
|
||||
@ -71,7 +82,7 @@ void tsk_misc( )
|
||||
if( ACC_VALID )
|
||||
{
|
||||
if( renge_task_immed_add( tski_cbk_accero ) == ERR_SUCCESS ){
|
||||
// NOP();
|
||||
// dbg_nop();
|
||||
}
|
||||
}
|
||||
|
||||
@ -84,7 +95,7 @@ void tsk_misc( )
|
||||
if( !PM_IRQ_n )
|
||||
{
|
||||
renge_task_immed_add( tski_ntr_pmic_comm );
|
||||
// NOP();
|
||||
// dbg_nop();
|
||||
}
|
||||
|
||||
/* ========================================================
|
||||
@ -102,6 +113,13 @@ void tsk_misc( )
|
||||
|
||||
// 3D ƒ‰ƒ“ƒv<C692>X<EFBFBD>V //
|
||||
update_LED_3D();
|
||||
|
||||
if( reserve_pedo_increnent )
|
||||
{
|
||||
reserve_pedo_increnent = 0;
|
||||
hosu_increment_if_necessary();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -153,7 +171,7 @@ void update_LED_3D()
|
||||
{
|
||||
if( LED_duty_3d != 0 )
|
||||
{
|
||||
LED_duty_3d -= 1;
|
||||
LED_duty_3d --;
|
||||
}
|
||||
}
|
||||
else
|
||||
@ -162,12 +180,12 @@ void update_LED_3D()
|
||||
{
|
||||
if( LED_duty_3d < vreg_ctr[VREG_C_LED_BRIGHT] )
|
||||
{
|
||||
LED_duty_3d += 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
LED_duty_3d -= 1;
|
||||
}
|
||||
LED_duty_3d ++;
|
||||
}
|
||||
else
|
||||
{
|
||||
LED_duty_3d --;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -184,9 +202,13 @@ void update_LED_3D()
|
||||
======================================================== */
|
||||
task_status_immed tski_do_command0( )
|
||||
{
|
||||
// command0 本体電源など
|
||||
u8 temp_command = vreg_ctr[VREG_C_COMMAND0];
|
||||
u8 temp_command;
|
||||
|
||||
// command0 本体電源など
|
||||
DI();
|
||||
temp_command = vreg_ctr[VREG_C_COMMAND0];
|
||||
vreg_ctr[VREG_C_COMMAND0] = 0;
|
||||
EI();
|
||||
|
||||
if( temp_command & REG_BIT_GOING_TO_SLEEP )
|
||||
{
|
||||
@ -243,11 +265,7 @@ task_status_immed tski_do_command0( )
|
||||
|
||||
|
||||
|
||||
/* ========================================================
|
||||
互換向け、TWLアプリへの割り込み
|
||||
仮想レジスタの書き込み時に行います。
|
||||
======================================================== */
|
||||
|
||||
/* デバッグ・自動テスト用 ============================== */
|
||||
u16 _dbg_rcomp;
|
||||
extern u8 raw_adc_temperature;
|
||||
|
||||
@ -272,45 +290,85 @@ extern bit bt_authorized;
|
||||
10) system_status.family
|
||||
======================================================== */
|
||||
|
||||
#define KOUMOKU 9
|
||||
u8 extinfo_read()
|
||||
{
|
||||
u8 infos[ KOUMOKU +1 ];
|
||||
#define KOUMOKU 19
|
||||
|
||||
if( iic_burst_state > KOUMOKU )
|
||||
static u8 infos_bits[2];
|
||||
static u8 infos_temp[5];
|
||||
|
||||
static const u8 *infos_table[] = {
|
||||
&infos_temp[0], /* 0 */
|
||||
&pmic_version,
|
||||
(u8*)&battery_manufacturer,
|
||||
&mgic_version[0],
|
||||
&mgic_version[1],
|
||||
&infos_temp[1], /* 5 */
|
||||
&raw_adc_temperature,
|
||||
&infos_temp[2],
|
||||
&infos_temp[3],
|
||||
(u8*)&system_status.family,
|
||||
// LED_pow_red, /* 10 */
|
||||
&infos_bits[0],
|
||||
(u8*)&LED_duty_pow_blu,
|
||||
(u8*)&LED_duty_3d,
|
||||
(u8*)&LED_duty_notify_red,
|
||||
(u8*)&LED_duty_notify_grn,
|
||||
(u8*)&LED_duty_notify_blu, /* 15 */
|
||||
&infos_bits[1],
|
||||
// &LED_CAM,
|
||||
(u8*)&LED_duty_WiFi,
|
||||
&infos_temp[4] /* 18 */
|
||||
/* 項目足すときは KOUMOKU に注意 */
|
||||
};
|
||||
|
||||
u8 extinfo_read(void)
|
||||
{
|
||||
u8 ret = 0xFF;
|
||||
|
||||
/*
|
||||
* tempは計算処理が必要なデータ。メモリに余裕がないので計算が必要な
|
||||
* 変数は、要/不要に関わらず計算するポリシー
|
||||
*/
|
||||
|
||||
if( iic_burst_state < KOUMOKU )
|
||||
{
|
||||
return( 0x73 );
|
||||
infos_temp[0] = system_status.captureBox? MODEL_CAPTURE_BOX
|
||||
: ( system_status.is_dev? MODEL_ISBAKO: (u8)system_status.model );
|
||||
infos_temp[1] = (u8)( _dbg_rcomp & 0xFF );
|
||||
infos_temp[2] = ( !temp_zone_charge_disable | ( bt_authorized << 1 ) );
|
||||
infos_temp[3] = 1; /* 仕様変更により1固定になった */
|
||||
infos_temp[4] = 0
|
||||
// | ( PM_EXTDC_n ? REG_BIT_HAL0_PM_EXTDC_n : 0 ) // status0にある
|
||||
| ( RBR_RESET_n ? REG_BIT_HAL0_PM_EXTDC_n : 0 ) // ↑空きを使わせてもらう
|
||||
| ( BT_IN_CHG_n ? REG_BIT_HAL0_BT_IN_CHG_n : 0 )
|
||||
| ( BT_CHG_Ena_n ? REG_BIT_HAL0_RSV_5 : 0 ) // 空きビット使用,out pin
|
||||
| 0 // WL_TX 使えない
|
||||
// | ( SHELL_OPEN ? REG_BIT_HAL0_SHELL_OPEN : 0 ) // status0にある
|
||||
| ( RBR_FLIGHT ? REG_BIT_HAL0_SHELL_OPEN : 0 ) // ↑空きを使わせてもらう
|
||||
| ( SW_WIFI_n ? REG_BIT_HAL0_SW_WIFI_n : 0 )
|
||||
| ( SW_HOME_n ? REG_BIT_HAL0_SW_HOME_n : 0 )
|
||||
| ( SW_POW_n ? REG_BIT_HAL0_SW_POW_n : 0 );
|
||||
|
||||
infos_bits[0] = (u8)LED_pow_red;
|
||||
infos_bits[1] = (u8)LED_CAM;
|
||||
|
||||
ret = *infos_table[iic_burst_state];
|
||||
iic_burst_state ++;
|
||||
}
|
||||
|
||||
// static でとるほどのものでないので毎回スタックからとってくる
|
||||
// switchとかにするとromが困る... なんだかなぁ。
|
||||
infos[0] = system_status.captureBox? MODEL_CAPTURE_BOX
|
||||
: ( system_status.is_dev? MODEL_ISBAKO: (u8)system_status.model );
|
||||
infos[1] = pmic_version;
|
||||
infos[2] = battery_manufacturer;
|
||||
infos[3] = mgic_version[0];
|
||||
infos[4] = mgic_version[1];
|
||||
infos[5] = (u8)( _dbg_rcomp & 0xFF );
|
||||
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 ] );
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
#ifdef i2c_timeout_test
|
||||
void i2c_mcu_error_monitor()
|
||||
{
|
||||
LED_duty_pow_blu = 0xff;
|
||||
LED_duty_3d = 0xff;
|
||||
LED_duty_notify_red = 0xff;
|
||||
LED_duty_notify_grn = 0xff;
|
||||
LED_duty_notify_blu = 0xff;
|
||||
LED_pow_red = 1;
|
||||
LED_CAM = 1;
|
||||
}
|
||||
{
|
||||
LED_duty_pow_blu = 0xff;
|
||||
LED_duty_3d = 0xff;
|
||||
LED_duty_notify_red = 0xff;
|
||||
LED_duty_notify_grn = 0xff;
|
||||
LED_duty_notify_blu = 0xff;
|
||||
LED_pow_red = 1;
|
||||
LED_CAM = 1;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -1,45 +1,37 @@
|
||||
#ifndef _WIN32
|
||||
|
||||
#pragma SFR
|
||||
#pragma NOP
|
||||
#pragma HALT
|
||||
#pragma STOP
|
||||
|
||||
#endif
|
||||
|
||||
#include "incs_loader.h"
|
||||
#include "renge\renge.h"
|
||||
#include "hal.h"
|
||||
|
||||
#include "pm.h"
|
||||
|
||||
#include "accero.h"
|
||||
#include "adc.h"
|
||||
#include "i2c_mcu.h"
|
||||
|
||||
#include "led.h"
|
||||
|
||||
|
||||
// ========================================================
|
||||
#define INTERVAL_TSK_STATUS 4
|
||||
|
||||
|
||||
extern bit BT_CHG_STAT_Change;
|
||||
|
||||
|
||||
/* ========================================================
|
||||
ステータスレジスタなど
|
||||
======================================================== */
|
||||
void tsk_status( )
|
||||
{
|
||||
static u8 interval_task_status = 0;
|
||||
static u8 state_old; // ステータス変化検出→割り込み の為
|
||||
u8 diff;
|
||||
|
||||
if( interval_task_status != 0 )
|
||||
{
|
||||
interval_task_status -= 1;
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
interval_task_status = (u8)( INTERVAL_TSK_STATUS / SYS_INTERVAL_TICK );
|
||||
}
|
||||
|
||||
// 蓋開けチェック
|
||||
// 蓋開けチェック
|
||||
set_bit( SHELL_OPEN, vreg_ctr[VREG_C_STATUS], REG_BIT_ST_SHELL_OPEN );
|
||||
|
||||
// ステータスレジスタ関係 → 割り込み //
|
||||
@ -57,8 +49,6 @@ void tsk_status( )
|
||||
{
|
||||
if( diff & REG_BIT_BATT_CHARGE )
|
||||
{
|
||||
BT_CHG_STAT_Change = true;
|
||||
|
||||
// 充電状態に以下略
|
||||
if( vreg_ctr[VREG_C_STATUS] & REG_BIT_BATT_CHARGE )
|
||||
{
|
||||
|
319
trunk/task_sys.c
319
trunk/task_sys.c
@ -1,8 +1,12 @@
|
||||
#ifndef _WIN32
|
||||
|
||||
#pragma SFR
|
||||
#pragma NOP
|
||||
#pragma HALT
|
||||
#pragma STOP
|
||||
|
||||
#endif
|
||||
|
||||
#include "incs.h"
|
||||
|
||||
#include "i2c_twl.h"
|
||||
@ -42,6 +46,10 @@ extern u8 chg_led_override;
|
||||
extern bit i2c_mcu_time_out_error;
|
||||
#endif
|
||||
|
||||
|
||||
//=========================================================
|
||||
#define PWSW_POWON_TIME (u8)( 20 / SYS_INTERVAL_TICK ) // [ms] // INTERVAL_TSK_SW で割らない。値が元から小さいので
|
||||
|
||||
/* ========================================================
|
||||
マイコン内部で必要なもの
|
||||
・省電力に入れる
|
||||
@ -50,59 +58,58 @@ extern bit i2c_mcu_time_out_error;
|
||||
======================================================== */
|
||||
void tsk_sys( )
|
||||
{
|
||||
static u8 timeout = 0;
|
||||
static u8 pwsw_timeout = 0; // 電源ボタンチャタリング回避。 タイムアウトするまでに電源投入確定しないとoffに戻る
|
||||
|
||||
switch ( system_status.pwr_state )
|
||||
hal_update();
|
||||
|
||||
switch ( system_status.pwr_state )
|
||||
{
|
||||
case ON_CHECK: //-------------------------------------------------------
|
||||
// スイッチ操作などで割り込みが発生し、スリープが解除されるとここに来ます。
|
||||
// 他の割り込みでHALT(スリープ)が解除 / アダプタ有時
|
||||
|
||||
if( system_status.poweron_reason == NONE )
|
||||
// 電源スイッチでHALT解除 //
|
||||
if( system_status.poweron_reason == RSN_PWSW )
|
||||
{
|
||||
// スイッチで電源on
|
||||
if( SW_pow_count != 0 )
|
||||
{
|
||||
timeout = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
timeout += 1;
|
||||
}
|
||||
if( PM_EXTDC_n )
|
||||
{
|
||||
// アダプタなし
|
||||
if( SW_pow_count != 0 )
|
||||
{
|
||||
pwsw_timeout = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
pwsw_timeout ++;
|
||||
}
|
||||
|
||||
if( timeout > 100 )
|
||||
{
|
||||
system_status.pwr_state = OFF; // スイッチはノイズだった。寝る。
|
||||
renge_task_interval_run_force = true;
|
||||
return;
|
||||
}
|
||||
if( pwsw_timeout > 100 )
|
||||
{
|
||||
SW_pow_count = 0;
|
||||
system_status.pwr_state = OFF_TRIG; // スイッチはノイズだった。寝る。
|
||||
renge_task_interval_run_force = true;
|
||||
return;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
BT_chk(); // 要ポーリング。電池抜かれ検出のため。(必要だったらI2C_m_init呼んでます)
|
||||
}
|
||||
|
||||
if( SW_pow_count < 10 )
|
||||
{
|
||||
// もう少しスイッチの様子を見る
|
||||
return;
|
||||
}
|
||||
// 電源投入
|
||||
system_status.poweron_reason = PWSW;
|
||||
if( SW_pow_count < PWSW_POWON_TIME )
|
||||
{
|
||||
// 押し時間が短くて電源onに到達していない
|
||||
return;
|
||||
}
|
||||
}
|
||||
// else { if( system_status.poweron_reason == RSN_TRIAL、… ) 電源投入 }
|
||||
|
||||
SW_pow_mask = true;
|
||||
|
||||
timeout = 0;
|
||||
|
||||
// for debug
|
||||
#ifdef _DEBUG_BT_FUEL_
|
||||
vreg_ctr[ VREG_C_DBG01 ] = 99;
|
||||
#endif
|
||||
#ifdef _DEBUG_BT_TEMP_
|
||||
vreg_ctr[ VREG_C_DBG01 ] = 0x80;
|
||||
#endif
|
||||
vreg_ctr[ VREG_C_COMMAND3 ] = 0;
|
||||
SW_pow_mask = true; // pwsw押しっぱなしで電源入/切 を繰り返さないように
|
||||
|
||||
// 電源投入 //
|
||||
iic_mcu_start( );
|
||||
|
||||
bt_force_update = false;
|
||||
BT_chk(); // 実機やバッテリの判定、電池残量ICの設定
|
||||
BT_chk(); // 実機やバッテリの判定、電池残量ICの設定
|
||||
|
||||
#ifndef _ALLOW_NOBATT_
|
||||
if( system_status.model == MODEL_JIKKI_NOBATT )
|
||||
@ -117,8 +124,8 @@ void tsk_sys( )
|
||||
BT_get_left(); // 先に、BT_chk()が実行されている必要があります。
|
||||
if(
|
||||
// ( vreg_ctr[VREG_C_BT_REMAIN] < 1 ) // こっちで判定すると電池がほとんど無いときに
|
||||
// && // アダプタ差しても数分起動できなくなっちゃう
|
||||
( vreg_ctr[VREG_C_BT_VOLTAGE] < ( V_TH_ZERO / 256 ) )
|
||||
// // アダプタ差しても数分起動できなくなっちゃう
|
||||
(( vreg_ctr[VREG_C_BT_VOLTAGE] < ( V_TH_ZERO / 256 ) ) && PM_EXTDC_n ) // 電池空っぽ && アダプタなし
|
||||
)
|
||||
{
|
||||
// 電池が少ないので起動させない(電圧チェックもされてる)
|
||||
@ -127,15 +134,15 @@ void tsk_sys( )
|
||||
return;
|
||||
}
|
||||
|
||||
// ポートの設定 電源入れる前に。
|
||||
PM7.4 = 1; // SW_wifi
|
||||
PM20.4 = 1; // sw_home
|
||||
PM20.3 = 1; // wl_tx
|
||||
PM2.3 = 1; // key_sel
|
||||
PM2.5 = 1; // acc_valid1
|
||||
PM14.1 = 1; // acc_valid2
|
||||
// ポートの方向設定 電源入れる前に。
|
||||
PM_SW_WIFI_n = 1;
|
||||
PM_SW_HOME_n_JIKKI = 1;
|
||||
PM_WL_TX = 1;
|
||||
PM_SW_SEL_n = 1;
|
||||
PM_ACCEL_INT1 = 1;
|
||||
PM_ACC_VALID = 1;
|
||||
|
||||
if( PM_sys_pow_on( ) != ERR_SUCCESS )
|
||||
if( PM_sys_pow_on( ) != ERR_SUCCESS ) // リセット解除もしてきます
|
||||
{ // 電源起動不可エラー
|
||||
renge_task_interval_run_force = true;
|
||||
system_status.pwr_state = OFF_TRIG;
|
||||
@ -143,12 +150,13 @@ void tsk_sys( )
|
||||
}
|
||||
|
||||
// ここまで来ると、電源投入確定 //
|
||||
// プルアップon
|
||||
PU_BT_IN_CHG_n = 1;
|
||||
PU7 = bits8(0,0,0,1, 1,1,0,1); // 4:SW_WIFI 3:SW_PWSW 2:PM_IRQ 0:PM_EXTDC_n
|
||||
PU_SW_HOME_n_JIKKI = 1; // SW_HOME
|
||||
|
||||
PU5.1 = 1; // 1:PM_CHARGE
|
||||
PU7 = 0b00011101; // 4:SW_WIFI 3:SW_PWSW 2:PM_IRQ 0:PM_EXTDC_n
|
||||
PU20.4 = 1; // SW_HOME
|
||||
|
||||
if( system_status.poweron_reason == PWSW )
|
||||
if( system_status.poweron_reason == RSN_PWSW ||
|
||||
system_status.poweron_reason == RSN_TRIAL )
|
||||
{
|
||||
// 電源ボタンでのonの時は、LEDを点灯させる
|
||||
vreg_ctr[VREG_C_LED_POW] = LED_POW_ILM_AUTO;
|
||||
@ -183,7 +191,7 @@ void tsk_sys( )
|
||||
vreg_twl_init( );
|
||||
vreg_ctr_reset( );
|
||||
|
||||
KRM = 0b00000000;
|
||||
KRM = bits8(0,0,0,0, 0,0,0,0);
|
||||
PIF0 = 0;
|
||||
|
||||
system_status.poweron_reason = NONE;
|
||||
@ -194,13 +202,13 @@ void tsk_sys( )
|
||||
|
||||
iic_mcu_start();
|
||||
|
||||
#ifdef _MCU_BSR_
|
||||
// MK2 = ~( INT_MSK2_IIC_TWL | INT_MSK2_WIFI_TX_BSR | INT_MSK2_CODEC_PMIRQ );
|
||||
// PMK21 = 0; // wifi 使わない
|
||||
PMK6 = 0; // pm_irq
|
||||
#else
|
||||
MK2L = ~INT_MSK2_WIFI_TX_KE3;
|
||||
#endif
|
||||
|
||||
// todo 将来的には完全にレジスタ制御に
|
||||
RBR_RESET_n = 1;
|
||||
RBR_FLIGHT = 0;
|
||||
|
||||
// リブート時、ステータスを何となく更新
|
||||
if( system_status.reboot )
|
||||
@ -236,7 +244,7 @@ void tsk_sys( )
|
||||
// SLP監視
|
||||
if( going_to_sleep ) // 絶対に SLP_REQ の前に予告が来る
|
||||
{
|
||||
timeout_sleep += 1;
|
||||
timeout_sleep ++;
|
||||
if( timeout_sleep == 0 || // オーバーフローを期待。sleepするって言ったけど一瞬で起きて気がつかなかった
|
||||
( PIF0 && !SLP_REQ )) // slp割り込みが入った気がしたが、もう起きてしまった
|
||||
{
|
||||
@ -290,9 +298,10 @@ void tsk_sys( )
|
||||
#endif
|
||||
|
||||
default: //---------------------------------------
|
||||
system_status.pwr_state = OFF_TRIG;
|
||||
// no break //
|
||||
case OFF_TRIG: //---------------------------------------
|
||||
system_status.pwr_state = OFF_TRIG; // あり得ないステート。デバッグ用
|
||||
/* FALLTHROUGH */
|
||||
|
||||
case OFF_TRIG: //---------------------------------------
|
||||
// LED消灯を待つ
|
||||
vreg_ctr[ VREG_C_LED_POW ] = LED_POW_ILM_OFF;
|
||||
vreg_ctr[ VREG_C_LED_WIFI ] = WIFI_LED_OFF;
|
||||
@ -313,7 +322,11 @@ void tsk_sys( )
|
||||
IIC_twl_Stop( );
|
||||
RTC_32k_off();
|
||||
|
||||
vreg_ctr[VREG_C_IRQ0] = 0;
|
||||
// todo マクロにでもするよ
|
||||
RBR_RESET_n = 0;
|
||||
RBR_FLIGHT = 0;
|
||||
|
||||
vreg_ctr[VREG_C_IRQ0] = 0;
|
||||
vreg_ctr[VREG_C_IRQ1] = 0;
|
||||
vreg_ctr[VREG_C_IRQ2] = 0;
|
||||
vreg_ctr[VREG_C_IRQ3] = 0;
|
||||
@ -329,12 +342,12 @@ void tsk_sys( )
|
||||
|
||||
KRM = ( KR_SW_POW ); // Mask ではなく、Modeなのだそうだ。紛らわしい
|
||||
MK0 = ~( INT_MSK0_EXTDC );
|
||||
MK1 = ~( INT_MSK1_KR | INT_MSK1_RTCALARM | INT_MSK1_RTCINTVAL );
|
||||
MK2L = 0b11111111;
|
||||
MK1 = ~( INT_MSK1_KR | INT_MSK1_RTCINTVAL ); // INT_MSK1_RTCALARM | RTCアラーム封印中
|
||||
MK2L = 0xFF;
|
||||
|
||||
// PU5 そのまま
|
||||
PU7 = 0b00001001; // PWSWI,PM_EXTTDC,( IRQ0_deactive(), PM_IRQ_deactive )
|
||||
PU20.4 = 0; // SW_HOME 停止
|
||||
PU7 = bits8(0,0,0,0, 1,0,0,1); // PWSWI,PM_EXTTDC,( IRQ0_deactive(), PM_IRQ_deactive )
|
||||
PU_SW_HOME_n_JIKKI = 0; // SW_HOME 停止
|
||||
|
||||
IF0 = 0;
|
||||
IF1 = 0;
|
||||
@ -342,68 +355,62 @@ void tsk_sys( )
|
||||
|
||||
IRQ0_disable;
|
||||
|
||||
PM_sys_pow_off( );
|
||||
PM_sys_pow_off( ); // 電源カットオフ
|
||||
|
||||
P7.4 = 0; // SW_wifi
|
||||
PM7.4 = 0;
|
||||
// ポート類を停止モードに。こういう回路でも、L出力にしなきゃだめだそうな。
|
||||
SW_WIFI_n_RAW = 0;
|
||||
PM_SW_WIFI_n = 0;
|
||||
|
||||
P20.4 = 0; // sw_home
|
||||
PM20.4 = 0;
|
||||
SW_HOME_n_JIKKI_RAW = 0;
|
||||
PM_SW_HOME_n_JIKKI = 0;
|
||||
|
||||
P20.3 = 0; // WL_TX
|
||||
PM20.3 = 0;
|
||||
WL_TX = 0;
|
||||
PM_WL_TX = 0;
|
||||
|
||||
P2.3 = 0; // KEY_SEL
|
||||
PM2.3 = 0;
|
||||
P2.5 = 0; // ACC_ready1
|
||||
PM2.5 = 0;
|
||||
P14.1 = 0; // ACC_ready2
|
||||
PM14.1 = 0;
|
||||
SW_SEL_n = 0;
|
||||
PM_SW_SEL_n = 0;
|
||||
|
||||
iic_mcu_stop( );
|
||||
ACCEL_INT1 = 0;
|
||||
PM_ACCEL_INT1 = 0;
|
||||
ACC_VALID = 0;
|
||||
PM_ACC_VALID = 0;
|
||||
|
||||
system_status.pwr_state = OFF;
|
||||
SW_pow_mask = true;
|
||||
SW_pow_count = 0;
|
||||
|
||||
|
||||
// no break //
|
||||
// HALデバッグリセット 忘れると電源on出来なくなることが…
|
||||
hal_reset();
|
||||
/* FALLTHROUGH */
|
||||
|
||||
case OFF:
|
||||
system_status.poweron_reason = NONE;
|
||||
if( !PM_EXTDC_n )
|
||||
// 注:現状では電源ボタンしか電源投入はありません。
|
||||
|
||||
system_status.poweron_reason = NONE;
|
||||
pwsw_timeout = 0;
|
||||
|
||||
if( !PM_EXTDC_n
|
||||
|| chg_led_override != 0 ) // これがゼロになるまで待つ
|
||||
{
|
||||
// アダプタが刺さってるときはこのブロックを繰り返す。
|
||||
BT_chk(); // 要ポーリング(電池抜かれ検出のため)
|
||||
// ↑の中で必要だったらI2C_m_init呼んでます
|
||||
// アダプタ有り /////////////////////////////// または、アダプタさして3秒は充電LEDを点けている期間
|
||||
|
||||
// アダプタ有り:充電温度監視
|
||||
if( SW_pow_count >= 10 ) // 電源スイッチが押されるのを待つ
|
||||
{
|
||||
// 電源投入
|
||||
system_status.pwr_state = ON_CHECK;
|
||||
}
|
||||
|
||||
if( system_status.model != MODEL_JIKKI )
|
||||
{
|
||||
iic_mcu_stop( );
|
||||
}
|
||||
// 電源ボタン押しチェックへ
|
||||
SW_pow_mask = false;
|
||||
system_status.poweron_reason = RSN_PWSW;
|
||||
system_status.pwr_state = ON_CHECK;
|
||||
|
||||
// 試遊台なら自動で電源再投入
|
||||
if( system_status.taikendai )
|
||||
{
|
||||
// 電源投入
|
||||
wait_ms(46);
|
||||
system_status.poweron_reason = PWSW;
|
||||
vreg_ctr[ VREG_C_HAL_OVW_CONT0 ] = vreg_ctr[ VREG_C_HAL_OVW_CONT1 ] = 0;
|
||||
wait_ms(46); // pmicの電源再投入仕様のため
|
||||
system_status.poweron_reason = RSN_TRIAL;
|
||||
system_status.pwr_state = ON_CHECK;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// アダプタなし
|
||||
if( chg_led_override != 0 ) // これがゼロになるまで待つ
|
||||
{
|
||||
return;
|
||||
};
|
||||
// アダプタなし ///////////////////////////////
|
||||
|
||||
// 省電力へ移行
|
||||
iic_mcu_stop( );
|
||||
@ -415,36 +422,84 @@ void tsk_sys( )
|
||||
{;}
|
||||
|
||||
// 割り込み待ちで寝る //
|
||||
RTCIMK = 1;
|
||||
RTCIMK = 1; // systick用インターバルタイマー割り込みマスク
|
||||
|
||||
CKC = 0b00001001;
|
||||
CKC = bits8(0,0,0,0, 1,0,0,1);
|
||||
OSMC = 0x00;
|
||||
|
||||
if( PM_EXTDC_n ) // きわどいタイミングで挿抜が起きることがある
|
||||
#ifdef _DBG_CHK_OFF_LEAK_
|
||||
{
|
||||
STOP( );
|
||||
// off中のpin設定ミスチェック
|
||||
volatile u8 ports_i[12];
|
||||
volatile u8 ports_o[12];
|
||||
|
||||
ports_i[0] = ( PM0 & PU0 & ~P0 ); // プルアップ切り忘れ?
|
||||
ports_i[1] = ( PM1 & PU1 & ~P1 );
|
||||
ports_i[2] = 0;
|
||||
ports_i[3] = ( PM3 & PU3 & ~P3 );
|
||||
ports_i[4] = ( PM4 & PU4 & ~P4 );
|
||||
ports_i[5] = ( PM5 & PU5 & ~P5 );
|
||||
ports_i[6] = 0;
|
||||
ports_i[7] = ( PM7 & PU7 & ~P7 );
|
||||
ports_i[8] = ( PM12 & PU12 & ~P12 );
|
||||
ports_i[9] = ( PM14 & PU14 & ~P14 );
|
||||
ports_i[10] = 0;
|
||||
ports_i[11] = ( PM20 & PU20 & ~P20 );
|
||||
|
||||
ports_o[0] = ( ~PM0 & P0 ); // H 出力しちゃってるかも
|
||||
ports_o[1] = ( ~PM1 & P1 );
|
||||
ports_o[2] = ( ~PM2 & P2 );
|
||||
ports_o[3] = ( ~PM3 & P3 & ~POM3 );
|
||||
ports_o[4] = ( ~PM4 & P4 ); // bit3はchg_enなので1でもよい
|
||||
ports_o[5] = ( ~PM5 & P5 );
|
||||
ports_o[6] = ( ~PM6 & P6 );
|
||||
ports_o[7] = ( ~PM7 & P7 );
|
||||
ports_o[8] = ( ~PM12 & P12 );
|
||||
ports_o[9] = ( ~PM14 & P14 );
|
||||
ports_o[10] = ( ~PM15 & P15 );
|
||||
ports_o[11] = ( ~PM20 & P20 );
|
||||
NOP(); // ←ブレーク置くため
|
||||
}
|
||||
|
||||
// 起きる //
|
||||
#endif
|
||||
if( PM_EXTDC_n ) // きわどいタイミングで挿抜が起きることがある
|
||||
{
|
||||
STOP();
|
||||
}
|
||||
|
||||
// 起きる //
|
||||
// 起きる条件は
|
||||
// ・KeyReturn割り込み(電源ボタン)
|
||||
// ・アダプタ挿抜
|
||||
// ・RTCアラーム(現在封印)
|
||||
|
||||
OSMC = 0x01;
|
||||
CKC = 0b00001000;
|
||||
renge_flg_interval = 0;
|
||||
hal_update();
|
||||
|
||||
if( PM_EXTDC_n )
|
||||
{
|
||||
// 電源ボタンで起きたとき
|
||||
SW_pow_mask = false;
|
||||
system_status.pwr_state = ON_CHECK;
|
||||
timeout = 0;
|
||||
}
|
||||
// else{
|
||||
// アダプタで起きたときは OFF の中をぐるぐるまわる
|
||||
OSMC = 0x01;
|
||||
CKC = bits8(0,0,0,0, 1,0,0,0);
|
||||
|
||||
// 起きた理由は?
|
||||
if( !PM_EXTDC_n ){
|
||||
system_status.pwr_state = OFF; // 一回回ってきて、ON_CHECKに行く
|
||||
}
|
||||
/* // RTCアラーム。封印中
|
||||
else if( vreg_ctr[ VREG_C_IRQ1 ] & REG_BIT_RTC_ALARM )
|
||||
{
|
||||
system_status.poweron_reason = RSN_RTC_ALARM;
|
||||
system_status.pwr_state = ON_CHECK;
|
||||
}
|
||||
// else if( 他の割り込みで電源on ){
|
||||
// 現状他の要因では起きない
|
||||
// }
|
||||
*/
|
||||
else // if( !SW_POW_n ) // (それ以外なら)電源ボタンで起きた
|
||||
{
|
||||
SW_pow_mask = false;
|
||||
system_status.poweron_reason = RSN_PWSW;
|
||||
system_status.pwr_state = ON_CHECK;
|
||||
}
|
||||
|
||||
RTCIMK = 0;
|
||||
RTCIMK = 0; // sys tick タイマー有効
|
||||
|
||||
if( system_status.taikendai )
|
||||
{
|
||||
system_status.pwr_state = OFF_TRIG;
|
||||
@ -515,14 +570,14 @@ static void chk_emergencyExit(){
|
||||
{
|
||||
if( !RESET1_n )
|
||||
{
|
||||
if( shirobako_power_control_count != 255 )
|
||||
shirobako_power_control_count += 1;
|
||||
if( shirobako_power_control_count != 255 )
|
||||
shirobako_power_control_count ++;
|
||||
}
|
||||
else
|
||||
{
|
||||
// (TSボードで手動で/デバッガが)リセットをかけたらしい
|
||||
send_cmd_pmic( PM_REG_ADRS_BL, 0 );
|
||||
vreg_ctr[VREG_C_STATUS] = ( vreg_ctr[VREG_C_STATUS] & 0b10011111 );
|
||||
vreg_ctr[VREG_C_STATUS] = ( vreg_ctr[VREG_C_STATUS] & bits8(1,0,0,1, 1,1,1,1) );
|
||||
vreg_ctr[VREG_C_COMMAND0] |= REG_BIT_RESET1_REQ;
|
||||
renge_task_immed_add( tski_do_command0 );
|
||||
shirobako_power_control_count = WAIT_SHIROBAKO_POW_CONTROL;
|
||||
@ -568,9 +623,9 @@ void send_getup_to_soc()
|
||||
|
||||
|
||||
|
||||
/*******************************************************//**
|
||||
/* ========================================================
|
||||
firm_update()を task_status_immed型 を返すようにすればいいのですが...
|
||||
**********************************************************/
|
||||
======================================================== */
|
||||
task_status_immed tski_firm_update(){
|
||||
firm_update();
|
||||
return( ERR_SUCCESS );
|
||||
|
@ -8,14 +8,20 @@
|
||||
|
||||
//#define IIC_SLA_DCP 0x50
|
||||
|
||||
#define bits8(a,b,c,d,e,f,g,h) ( a<<7 | b<<6 | c<<5 | d<<4 | e<<3 | f<<2 | g<<1 | h )
|
||||
|
||||
#ifndef _WIN32
|
||||
// 実機環境
|
||||
|
||||
#ifdef _debug_led_
|
||||
/*spfl対応以降、ncでなくなるので使えません
|
||||
# define DBG_LED_on { PM2.1 = 0; P2.1 = 1; }
|
||||
# define DBG_LED_off { P2.1 = 0; }
|
||||
# define DBG_LED_toggle ( P2.1 ^= 1 )
|
||||
# define DBG_LED2_on { PM2.2 = 0; P2.2 = 1; }
|
||||
# define DBG_LED2_off { P2.2 = 0; }
|
||||
# define DBG_LED2_toggle ( P2.2 ^= 1 )
|
||||
|
||||
*/
|
||||
#else
|
||||
# define DBG_LED_on ;
|
||||
# define DBG_LED_off ;
|
||||
@ -23,51 +29,31 @@
|
||||
# define DBG_LED2_on ;
|
||||
# define DBG_LED2_off ;
|
||||
# define DBG_LED2_toggle ;
|
||||
#endif
|
||||
|
||||
#ifdef _PMIC_CTR_
|
||||
# define SLP_ACK P7.7
|
||||
#endif
|
||||
|
||||
#endif // _debug_led_
|
||||
|
||||
#define IIC_SLA_CODEC 0xA4
|
||||
#define IIC_SLA_ACCEL 0x30 // ST LIS331DLH
|
||||
|
||||
|
||||
#define SLP_ACK P7.7
|
||||
|
||||
|
||||
// PMxは0で出力モード
|
||||
|
||||
// SoC
|
||||
#ifdef _MODEL_TEG2_
|
||||
#define IRQ0_ast { P3.0 = 0; PM3.0 = 0; }
|
||||
#define IRQ0_neg { PM3.0 = 1; }
|
||||
#define IRQ0 ( P3.0 )
|
||||
#endif
|
||||
#ifdef _MODEL_WM0_
|
||||
#define IRQ0_ast { P3.0 = 0; PM3.0 = 0; }
|
||||
#define IRQ0_neg { PM3.0 = 1; }
|
||||
#define IRQ0 ( P3.0 )
|
||||
#endif
|
||||
|
||||
#ifdef _MODEL_TS0_
|
||||
#define IRQ0_ast { P7.6 = 0; PM7.6 = 0; }
|
||||
#define IRQ0_neg { PM7.6 = 1; }
|
||||
#define IRQ0 ( P7.6 )
|
||||
#endif
|
||||
#ifdef _MODEL_CTR_
|
||||
#define IRQ0_ast { P7.6 = 0; PM7.6 = 0; }
|
||||
#define IRQ0_neg { P7.6 = 1; }
|
||||
#define IRQ0_enable { PM7.6 = 0; }
|
||||
#define IRQ0_disable { PM7.6 = 1; }
|
||||
#define IRQ0 ( P7.6 )
|
||||
#endif
|
||||
|
||||
|
||||
// ↓誤代入防止
|
||||
#define RESET1_n ( P0.0 )
|
||||
|
||||
#if 0 // PM_RESET1~を使う
|
||||
#define RESET1_ast { P0.0 = 0; PM0.0 = 0; }
|
||||
#define RESET1_neg { PM0.0 = 1; }
|
||||
# define RESET1_ast { P0.0 = 0; PM0.0 = 0; }
|
||||
# define RESET1_neg { PM0.0 = 1; }
|
||||
#endif
|
||||
|
||||
#define RESET2_ast { P0.1 = 0; PM0.1 = 0; }
|
||||
@ -83,35 +69,16 @@
|
||||
#define DEV_RSV2 ( 0b11 << 1 )
|
||||
|
||||
// FCRAM
|
||||
#ifdef _MODEL_TEG2_
|
||||
#define FCRAM_RST P14.0
|
||||
#define FCRAM_RST_ast { P14.0 = 0; }
|
||||
#define FCRAM_RST_neg { P14.0 = 1; }
|
||||
#endif
|
||||
#ifdef _MODEL_WM0_
|
||||
#define FCRAM_RST P14.0
|
||||
#define FCRAM_RST_ast { P14.0 = 0; }
|
||||
#define FCRAM_RST_neg { P14.0 = 1; }
|
||||
#endif
|
||||
|
||||
#ifdef _MODEL_TS0_
|
||||
#define FCRAM_RST P3.0
|
||||
#define FCRAM_RST_ast { P3.0 = 0; }
|
||||
#define FCRAM_RST_neg { P3.0 = 1; }
|
||||
#endif
|
||||
#ifdef _MODEL_CTR_
|
||||
#define FCRAM_RST P3.0
|
||||
#define FCRAM_RST_ast { P3.0 = 0; }
|
||||
#define FCRAM_RST_neg { P3.0 = 1; }
|
||||
#endif
|
||||
|
||||
|
||||
// CODEC
|
||||
#define PM_IRQ_n P7.2
|
||||
// INTP6
|
||||
|
||||
// PM
|
||||
#define PM_EXTDC_n P7.0
|
||||
#define PM_EXTDC_n_RAW P7.0
|
||||
// INTP7
|
||||
//#define BT_TEMP P15.0
|
||||
// ANI8
|
||||
@ -132,26 +99,35 @@
|
||||
#define BT_CHG_Ena_n ( P4.3 )
|
||||
|
||||
// 充電中(in)
|
||||
#define BT_IN_CHG_n P5.1
|
||||
#define BT_IN_CHG_n_RAW P5.1
|
||||
#define PM_BT_IN_CHG_n PM5.1
|
||||
#define PU_BT_IN_CHG_n PU5.1
|
||||
|
||||
#define SW_WIFI_n P7.4
|
||||
#define SW_WIFI_n_RAW P7.4
|
||||
#define PM_SW_WIFI_n PM7.4
|
||||
// KR4
|
||||
#define SW_POW_n P7.3
|
||||
#define SW_POW_n_RAW P7.3
|
||||
// KR3
|
||||
#define SW_SEL_n P2.3
|
||||
#define SW_SEL_n P2.3
|
||||
#define PM_SW_SEL_n PM2.3
|
||||
//#define VOL P2.7
|
||||
// ANI7
|
||||
|
||||
#define SW_HOME_n_JIKKI P20.4
|
||||
#define SW_HOME_n_JIKKI_RAW P20.4
|
||||
#define PM_SW_HOME_n_JIKKI PM20.4
|
||||
#define PU_SW_HOME_n_JIKKI PU20.4
|
||||
|
||||
// INTP22
|
||||
#define SW_HOME_n_TSBOARD P2.0
|
||||
#define SW_HOME_n_TSBOARD_RAW P2.0 // TSマザー上でpull up(P2は内蔵p.u.無い)
|
||||
#define PM_SW_HOME_n_TSBOARD PM2.0
|
||||
|
||||
// WiFi
|
||||
#ifndef _TEG_
|
||||
#define WL_TX P20.3 // INTP21
|
||||
#else
|
||||
#define WL_TX P20.3 // INTP21
|
||||
#endif
|
||||
#define PM_WL_TX PM20.3 // INTP21
|
||||
|
||||
// RBR制御
|
||||
#define RBR_RESET_n P2.1
|
||||
#define RBR_FLIGHT P2.2
|
||||
|
||||
//#define LED_CAM P1.0 // TO02
|
||||
//#define LED_WIFI P1.1 // TO03
|
||||
@ -161,36 +137,13 @@
|
||||
//#define LED_POW1 P1.5 // TO07 ( 赤 )
|
||||
//#define LED_CHARGE P2.4
|
||||
|
||||
|
||||
#ifdef _MODEL_TEG2_
|
||||
#define I2C_PU_on() P5.3 = 1
|
||||
#define I2C_PU_off() P5.3 = 0
|
||||
#endif
|
||||
|
||||
#ifdef _MODEL_TS0_
|
||||
#define I2C_PU_on() P5.3 = 1
|
||||
#define I2C_PU_off() P5.3 = 0
|
||||
#endif
|
||||
|
||||
#ifdef _MODEL_WM0_
|
||||
#define I2C_PU_on() P5.3 = 1
|
||||
#define I2C_PU_off() P5.3 = 0
|
||||
#endif
|
||||
|
||||
#ifdef _MODEL_CTR_
|
||||
// P5.3 に加え、P5.5, P140 P141
|
||||
// P140が出力専用なので...
|
||||
#define I2C_PU_on() { PM5.3 = 1; PM3.3 = 1; P14 |= 0x03; P5.3 = 1; PM5.3 = 0; P3.3 = 1; PM3.3 = 0; }
|
||||
#define I2C_PU_off() { PM5.3 = 1; PM3.3 = 1; P14 &= ~0x03; P5.3 = 0; PM5.3 = 0; P3.3 = 0; PM3.3 = 0; }
|
||||
#endif
|
||||
#define I2C_PU_on() { P14 |= 0x03; PM5.3 = 0; PM3.3 = 0; }
|
||||
#define I2C_PU_off() { PM5.3 = 1; PM3.3 = 1; P14 &= ~0x03; }
|
||||
|
||||
#ifdef _MODEL_CTR_
|
||||
#define GYRO_ENABLE() P5.0 = 0
|
||||
#define GYRO_DISABLE() P5.0 = 1
|
||||
#else
|
||||
#define GYRO_ENABLE() ;
|
||||
#define GYRO_DISABLE() ;
|
||||
#endif
|
||||
|
||||
//#define I2C_M_SDA P3.1 // SDA10
|
||||
//#define I2C_M_SCL P3.2 // SCL10
|
||||
@ -213,46 +166,47 @@
|
||||
#define DIPSW_TAIKENDAI_NBD 0b01
|
||||
|
||||
|
||||
#ifndef _MODEL_WM0_
|
||||
#define SHELL_OPEN P7.1 // INTP5 ふた開閉 (閉じるとL)
|
||||
#else
|
||||
#define SHELL_OPEN 1
|
||||
#endif
|
||||
#define SHELL_OPEN_RAW P7.1 // INTP5 ふた開閉 (閉じるとL)
|
||||
|
||||
//#define DBG_VR P2.6
|
||||
// ANI6
|
||||
|
||||
#define DBG P14.1
|
||||
|
||||
#ifdef _MODEL_TEG2_
|
||||
#define ACC_VALID P15.2
|
||||
#define ACCEL_INT1 P2.5
|
||||
#endif
|
||||
|
||||
#ifdef _MODEL_TS0_
|
||||
#define ACC_VALID P20.5
|
||||
#define ACCEL_INT1 P2.5
|
||||
#endif
|
||||
|
||||
#ifdef _MODEL_WM0_
|
||||
// テレコになっていたが、センサ側の設定を変えたため、TS0と同じでよい
|
||||
#define ACC_VALID P20.5
|
||||
#define ACCEL_INT1 P2.5
|
||||
#endif
|
||||
|
||||
#ifdef _MODEL_CTR_
|
||||
#define ACC_VALID P20.5
|
||||
#define ACCEL_INT1 P2.5
|
||||
#endif
|
||||
#define ACC_VALID P20.5
|
||||
#define PM_ACC_VALID PM20.5
|
||||
#define ACCEL_INT1 P2.5
|
||||
#define PM_ACCEL_INT1 PM2.5
|
||||
|
||||
|
||||
#endif // _WIN32
|
||||
|
||||
// win32 sim環境と共通
|
||||
|
||||
#define KR_SW_POW ( 1 << 3 )
|
||||
#define KR_SW_WIFI ( 1 << 4 )
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
#define INT_MSK0_IIC_M_DMA 1<<12
|
||||
#define INT_MSK0_SHELL 1<<7
|
||||
#define INT_MSK0_EXTDC 1<<6
|
||||
//#define INT_MSK0_SLP 1<<2
|
||||
#define INT_MSK0_RSV ~( INT_MSK0_IIC_M_DMA | INT_MSK0_SHELL | INT_MSK0_EXTDC )
|
||||
|
||||
#define INT_MSK1_KR 1<<11
|
||||
#define INT_MSK1_RTCINTVAL 1<<10
|
||||
#define INT_MSK1_RTCALARM 1<<9
|
||||
#define INT_MSK1_ADC 1<<8
|
||||
#define INT_MSK1_IIC_CTR 1<<3
|
||||
#define INT_MSK1_IIC_MCU 1<<0
|
||||
#define INT_MSK1_RSV ~( INT_MSK1_KR | INT_MSK1_RTCINTVAL | INT_MSK1_RTCALARM | INT_MSK1_ADC \
|
||||
| INT_MSK1_IIC_CTR | INT_MSK1_IIC_MCU )
|
||||
|
||||
#define INT_MSK2_WIFI_TX_KE3 1<<4
|
||||
#define INT_MSK2L_RSV ~( INT_MSK2_WIFI_TX_KE3 )
|
||||
|
||||
#define INT_MSK2_IIC_TWL 1<<8
|
||||
#define INT_MSK2_WIFI_TX_BSR 1<<10
|
||||
#define INT_MSK2_CODEC_PMIRQ 1<<3
|
||||
#define INT_MSK2_RSV ~( INT_MSK2_IIC_TWL | INT_MSK2_WIFI_TX_BSR | INT_MSK2_CODEC_PMIRQ )
|
||||
|
||||
#if 0
|
||||
#define INT_MSK0_IIC_M_DMA 0b0001000000000000
|
||||
#define INT_MSK0_SHELL 0b0000000010000000
|
||||
#define INT_MSK0_EXTDC 0b0000000001000000
|
||||
@ -275,5 +229,6 @@
|
||||
#define INT_MSK2_WIFI_TX_BSR ( 0b0000010000000000 )
|
||||
#define INT_MSK2_CODEC_PMIRQ ( 0b0000000000001000 )
|
||||
#define INT_MSK2_RSV 0b1111101111110111
|
||||
#endif // 0
|
||||
|
||||
#endif
|
||||
#endif // dupe include guard
|
||||
|
48
trunk/voltable.c
Normal file
48
trunk/voltable.c
Normal file
@ -0,0 +1,48 @@
|
||||
#include "incs.h"
|
||||
|
||||
#define _10db_
|
||||
|
||||
#ifdef _10db_
|
||||
// max -10db
|
||||
const u8 slider_to_codec[64] =
|
||||
{
|
||||
127, 126, 125, 124, 122, 121, 120, 119,
|
||||
118, 117, 116, 114, 113, 112, 111, 110,
|
||||
109, 108, 106, 105, 104, 103, 102, 101,
|
||||
100, 98, 97, 96, 95, 94, 93, 92,
|
||||
90, 89, 88, 87, 86, 85, 83, 82,
|
||||
81, 80, 79, 78, 77, 75, 74, 73,
|
||||
73, 72, 71, 70, 69, 67, 66, 65,
|
||||
64, 63, 62, 61, 59, 58, 57, 56
|
||||
};
|
||||
#endif
|
||||
|
||||
#ifdef _15db_
|
||||
// max -15db
|
||||
const u8 slider_to_codec[64] =
|
||||
{
|
||||
127, 127, 127, 127, 127, 126, 125, 123,
|
||||
122, 121, 120, 119, 118, 117, 116, 115,
|
||||
114, 113, 112, 110, 109, 108, 107, 106,
|
||||
105, 104, 103, 102, 101, 100, 99, 97,
|
||||
96, 95, 94, 93, 92, 91, 90, 89,
|
||||
88, 87, 86, 85, 84, 83, 82, 81,
|
||||
80, 79, 78, 77, 76, 75, 74, 73,
|
||||
71, 70, 69, 68, 67, 66, 66, 66
|
||||
};
|
||||
#endif
|
||||
|
||||
#ifdef _4db_
|
||||
// max -4db
|
||||
const u8 slider_to_codec[64] =
|
||||
{
|
||||
127, 127, 126, 125, 123, 122, 121, 119,
|
||||
118, 117, 115, 114, 112, 111, 110, 108,
|
||||
107, 106, 104, 103, 101, 100, 99, 97,
|
||||
96, 94, 93, 92, 90, 89, 88, 86,
|
||||
85, 83, 82, 81, 79, 78, 77, 75,
|
||||
74, 72, 71, 70, 68, 67, 66, 64,
|
||||
64, 63, 61, 60, 59, 57, 56, 54,
|
||||
53, 52, 50, 49, 48, 46, 44, 44
|
||||
};
|
||||
#endif
|
199
trunk/vreg_ctr.c
199
trunk/vreg_ctr.c
@ -12,6 +12,7 @@ CTR MCU I2C
|
||||
#include "pool.h"
|
||||
|
||||
#include <fsl.h>
|
||||
|
||||
#include "fsl_user.h"
|
||||
|
||||
|
||||
@ -21,6 +22,7 @@ extern u8 iic_burst_state; //
|
||||
extern bit info_led_pattern_updated; // お知らせLEDのパターンを先頭に戻す
|
||||
|
||||
extern bit pedolog_overflow;
|
||||
extern bit reserve_pedo_increnent;
|
||||
|
||||
|
||||
|
||||
@ -31,8 +33,7 @@ u8 vreg_ctr[VREG_C_ENDMARK_ + 16];
|
||||
u8 vreg_ctr[VREG_C_ENDMARK_];
|
||||
#endif
|
||||
|
||||
u8 vreg_free_adrs; // アドレス飛んでるのでしばらくはこれで
|
||||
|
||||
static u8 vreg_free_adrs; // アドレス飛んでるのでしばらくはこれで
|
||||
bit irq_readed; // AAA型のため。
|
||||
|
||||
|
||||
@ -62,6 +63,7 @@ void vreg_ctr_init( )
|
||||
vreg_ctr[ VREG_C_VOL_CAL_MIN ] = 0x36;
|
||||
vreg_ctr[ VREG_C_VOL_CAL_MAX ] = 0xFF - 0x36;
|
||||
|
||||
vreg_ctr[ VREG_C_RBR_CONTROL ] = REG_BIT_RESET_n; // todo | REG_BIT_FLIGHT;
|
||||
}
|
||||
|
||||
|
||||
@ -77,7 +79,6 @@ void vreg_ctr_reset( )
|
||||
vreg_ctr[ VREG_C_LED_WIFI ] = 0;
|
||||
vreg_ctr[ VREG_C_LED_CAM ] = 0;
|
||||
vreg_ctr[ VREG_C_LED_3D ] = 0;
|
||||
vreg_ctr[ VREG_C_VOL_OPTION ] = 0;
|
||||
// vreg_ctr[ VREG_C_VOL_CAL_MIN ] = 0x36; ここで書いちゃダメ!
|
||||
// vreg_ctr[ VREG_C_VOL_CAL_MAX ] = 0xFF - 0x36; 電源入れるたびにデフォルト値になってしまう
|
||||
{
|
||||
@ -104,7 +105,8 @@ void vreg_ctr_write( u8 adrs, u8 data )
|
||||
|
||||
case ( VREG_C_MCU_STATUS ):
|
||||
// vreg_twl[ REG_TWL_INT_ADRS_MODE ] = (u8)( ( data >> 6 ) & 0x03 ); Rでよい。その代わりリセットでクリア
|
||||
vreg_ctr[ VREG_C_MCU_STATUS ] = data;
|
||||
vreg_ctr[ VREG_C_MCU_STATUS ] &= data; // bitクリアはするがセットはしない。
|
||||
// 上の方のtwlレジスタミラーは読み出され時に合成
|
||||
break;
|
||||
|
||||
case ( VREG_C_VCOM_T ):
|
||||
@ -128,8 +130,8 @@ void vreg_ctr_write( u8 adrs, u8 data )
|
||||
if( data != 0 )
|
||||
{
|
||||
renge_task_immed_add( tski_do_command0 );
|
||||
vreg_ctr[ VREG_C_COMMAND0 ] |= data;
|
||||
}
|
||||
vreg_ctr[ VREG_C_COMMAND0 ] |= data;
|
||||
break;
|
||||
|
||||
case ( VREG_C_COMMAND2 ):
|
||||
@ -156,19 +158,21 @@ void vreg_ctr_write( u8 adrs, u8 data )
|
||||
case ( VREG_C_COMMAND1 ):
|
||||
if( data != 0 )
|
||||
{
|
||||
// u8 temp; 中間変数使ったらばかでかくなった...
|
||||
// TWLに割り込みを入れる
|
||||
/// 実際に割り込みを入れるのはSoC
|
||||
vreg_twl[REG_TWL_INT_ADRS_IRQ] = ( ( data & REG_BIT_SEND_TWL_PWSW_DET ) != 0 ) ? REG_BIT_TWL_IRQ_PWSW_DET : 0x00; //pwsw_det
|
||||
vreg_twl[REG_TWL_INT_ADRS_IRQ] |= ( ( data & REG_BIT_SEND_TWL_RESET_DET ) != 0 ) ? REG_BIT_TWL_IRQ_RESET : 0x00; //reset_req
|
||||
/// ビットの並びが違うから面倒
|
||||
vreg_twl[ REG_TWL_INT_ADRS_IRQ ] = ( ( data & REG_BIT_SEND_TWL_PWSW_DET ) != 0 ) ? REG_BIT_TWL_IRQ_PWSW_DET : 0x00; //pwsw_det
|
||||
vreg_twl[ REG_TWL_INT_ADRS_IRQ ] |= ( ( data & REG_BIT_SEND_TWL_RESET_DET ) != 0 ) ? REG_BIT_TWL_IRQ_RESET : 0x00; //reset_req
|
||||
|
||||
vreg_twl[REG_TWL_INT_ADRS_IRQ] |= ( ( data & REG_BIT_SEND_TWL_OFF_DET ) != 0 ) ? REG_BIT_TWL_IRQ_OFF : 0x00; //off_req
|
||||
vreg_twl[ REG_TWL_INT_ADRS_IRQ ] |= ( ( data & REG_BIT_SEND_TWL_OFF_DET ) != 0 ) ? REG_BIT_TWL_IRQ_OFF : 0x00; //off_req
|
||||
|
||||
vreg_twl[REG_TWL_INT_ADRS_IRQ] |= ( ( data & REG_BIT_SEND_TWL_BATT_LOW ) != 0 ) ? REG_BIT_TWL_IRQ_BT_LOW : 0x00; //batt_low
|
||||
vreg_twl[REG_TWL_INT_ADRS_IRQ] |= ( ( data & REG_BIT_SEND_TWL_BATT_EMPTY ) != 0 ) ? REG_BIT_TWL_IRQ_BT_EMPTY : 0x00; //batt_empty
|
||||
vreg_twl[ REG_TWL_INT_ADRS_IRQ ] |= ( ( data & REG_BIT_SEND_TWL_BATT_LOW ) != 0 ) ? REG_BIT_TWL_IRQ_BT_LOW : 0x00; //batt_low
|
||||
vreg_twl[ REG_TWL_INT_ADRS_IRQ ] |= ( ( data & REG_BIT_SEND_TWL_BATT_EMPTY ) != 0 ) ? REG_BIT_TWL_IRQ_BT_EMPTY : 0x00; //batt_empty
|
||||
|
||||
if(( data & REG_BIT_SEND_TWL_VOL_CLICK ) != 0 )
|
||||
{
|
||||
vreg_twl[REG_TWL_INT_ADRS_IRQ] |= REG_BIT_TWL_IRQ_VOL_CHANGE; //vol_changed
|
||||
vreg_twl[ REG_TWL_INT_ADRS_IRQ ] |= REG_BIT_TWL_IRQ_VOL_CHANGE; //vol_changed
|
||||
}
|
||||
}
|
||||
break;
|
||||
@ -177,12 +181,12 @@ void vreg_ctr_write( u8 adrs, u8 data )
|
||||
if( iic_burst_state == 0 )
|
||||
{
|
||||
vreg_ctr[ VREG_C_LED_POW ] = data;
|
||||
iic_burst_state += 1;
|
||||
iic_burst_state ++;
|
||||
}
|
||||
else if( iic_burst_state < 5 )
|
||||
{
|
||||
led_red_batt_empty.dats[ iic_burst_state -1 ] = data;
|
||||
iic_burst_state += 1;
|
||||
iic_burst_state ++;
|
||||
}
|
||||
break;
|
||||
|
||||
@ -200,13 +204,13 @@ void vreg_ctr_write( u8 adrs, u8 data )
|
||||
data = 1;
|
||||
}
|
||||
info_LED.bindata[ iic_burst_state ] = data;
|
||||
iic_burst_state += 1;
|
||||
iic_burst_state ++;
|
||||
if( iic_burst_state > 4 ) // パターンを1文字でも書いた
|
||||
{
|
||||
info_led_pattern_updated = true;
|
||||
}
|
||||
}
|
||||
break;
|
||||
break;
|
||||
|
||||
/// 非同期で動いているためここでは書かない。
|
||||
// 予約するだけでstopで書く
|
||||
@ -294,7 +298,7 @@ void vreg_ctr_write( u8 adrs, u8 data )
|
||||
if( vreg_free_adrs < VREG_C_FREE_SIZE )
|
||||
{
|
||||
pool.vreg_c_ext.vreg_c_free[ vreg_free_adrs ] = data;
|
||||
vreg_free_adrs += 1;
|
||||
vreg_free_adrs ++;
|
||||
}
|
||||
break;
|
||||
|
||||
@ -322,66 +326,93 @@ void vreg_ctr_write( u8 adrs, u8 data )
|
||||
// mcu_wdt_reset; // このコマンド使ったら意味ないでしょ!
|
||||
break;
|
||||
#endif
|
||||
case( 'p' ):
|
||||
reserve_pedo_increnent = 1;
|
||||
// ここで増やすにはスタックが足りない。↑で予約のみ、task_misc内で処理
|
||||
// hosu_increment_if_necessary(); // 今、一歩増えた
|
||||
break;
|
||||
}
|
||||
vreg_ctr[ VREG_C_COMMAND3 ] = data;
|
||||
|
||||
// vreg_ctr[ VREG_C_COMMAND3 ] = data; // 書く必要なし
|
||||
break;
|
||||
|
||||
case ( VREG_C_VOL_OPTION ):
|
||||
if(( vreg_ctr[ VREG_C_VOL_OPTION ] ^ data ) & ( REG_BIT_VOL_UPDATE_TO_SLIDER ))
|
||||
case ( VREG_C_RBR_CONTROL ):
|
||||
if(( data & REG_BIT_RESET_n ) != 0 )
|
||||
{
|
||||
// renge_task_immed_add( tski_vol_update );
|
||||
vol_polling = 3;
|
||||
RBR_RESET_n = 1;
|
||||
}
|
||||
vreg_ctr[ VREG_C_VOL_OPTION ] = data;
|
||||
else
|
||||
{
|
||||
RBR_RESET_n = 0;
|
||||
}
|
||||
if(( data & REG_BIT_FLIGHT ) != 0 )
|
||||
{
|
||||
RBR_FLIGHT = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
RBR_FLIGHT = 0;
|
||||
}
|
||||
vreg_ctr[ VREG_C_RBR_CONTROL ] = data;
|
||||
break;
|
||||
|
||||
// read only //
|
||||
case ( VREG_C_MCU_VER_MAJOR ):
|
||||
case ( VREG_C_MCU_VER_MINOR ):
|
||||
// VREG_C_3D = 0x08,
|
||||
// VREG_C_SND_VOL,
|
||||
// VREG_C_BT_TEMP,
|
||||
// VREG_C_BT_REMAIN,
|
||||
// VREG_C_BT_REMAIN_FINE,
|
||||
// VREG_C_BT_VOLTAGE,
|
||||
case ( VREG_C_STATUS_1 ):
|
||||
case ( VREG_C_STATUS ):
|
||||
case ( VREG_C_IRQ0 ):
|
||||
case ( VREG_C_IRQ1 ):
|
||||
case ( VREG_C_IRQ2 ):
|
||||
case ( VREG_C_IRQ3 ):
|
||||
case ( VREG_C_IRQ4 ):
|
||||
case ( VREG_C_LED_NOTIFY_FLAG ):
|
||||
case ( VREG_C_RTC_SEC_FINE_L ):
|
||||
case ( VREG_C_RTC_SEC_FINE_H ):
|
||||
// VREG_C_ACC_RESERVE,
|
||||
// read only //////////////////////////////////////////
|
||||
case VREG_C_MCU_VER_MAJOR:
|
||||
case VREG_C_MCU_VER_MINOR:
|
||||
case VREG_C_3D: // すぐにリフレッシュされる
|
||||
case VREG_C_SND_VOL: // すぐにリフレッシュされる
|
||||
case VREG_C_BT_TEMP: // すぐにリフレッシュされる
|
||||
case VREG_C_BT_REMAIN: // すぐにリフレッシュされる
|
||||
case VREG_C_BT_REMAIN_FINE: // すぐにリフレッシュされる
|
||||
case VREG_C_BT_VOLTAGE: // すぐにリフレッシュされる
|
||||
case VREG_C_STATUS_1: // 適当にリフレッシュされる
|
||||
case VREG_C_STATUS: // 適当にリフレッシュされる
|
||||
case VREG_C_IRQ0: // 次のついでに割り込み起こしてほしいなら...
|
||||
case VREG_C_IRQ1:
|
||||
case VREG_C_IRQ2:
|
||||
case VREG_C_IRQ3:
|
||||
case VREG_C_IRQ4:
|
||||
case VREG_C_LED_NOTIFY_FLAG: // すぐリフレッシュされる
|
||||
case VREG_C_RTC_SEC_FINE_L: // すぐリフレッシュされる
|
||||
case VREG_C_RTC_SEC_FINE_H: // すぐリフレッシュされる
|
||||
// VREG_C_ACC_RESERVE, // 何も起きない
|
||||
// VREG_C_ACC_HOSU_HIST = 0x4F,
|
||||
case VREG_C_ACC_XH: // すぐリフレッシュされる
|
||||
case VREG_C_ACC_XL:
|
||||
case VREG_C_ACC_YH:
|
||||
case VREG_C_ACC_YL:
|
||||
case VREG_C_ACC_ZH:
|
||||
case VREG_C_ACC_ZL:
|
||||
dbg_nop();
|
||||
break;
|
||||
|
||||
//debug//
|
||||
case ( VREG_C_VOL_DIGITAL ):
|
||||
NOP();
|
||||
// no break //
|
||||
|
||||
// ただ値を更新するだけ //
|
||||
default:
|
||||
case VREG_C_ACC_HOSU_L: // 書けてもいいけど、デバッグ用。(アドレス0x4B == mcu sla(r))
|
||||
dbg_nop();
|
||||
/* FALLTHROUGH */
|
||||
|
||||
// 普通に書かれるだけ /////////////////////////////////
|
||||
default:
|
||||
/*
|
||||
case ( VREG_C_IRQ_MASK0 ):
|
||||
case ( VREG_C_IRQ_MASK1 ):
|
||||
case ( VREG_C_IRQ_MASK2 ):
|
||||
case ( VREG_C_IRQ_MASK3 ):
|
||||
case ( VREG_C_IRQ_MASK4 ):
|
||||
case ( VREG_C_DBG01 ):
|
||||
case ( VREG_C_DBG02 ):
|
||||
case ( VREG_C_LED_BRIGHT ):
|
||||
case ( VREG_C_ACC_HOSU_L ):
|
||||
case ( VREG_C_ACC_HOSU_M ):
|
||||
case ( VREG_C_ACC_HOSU_H ):
|
||||
case ( VREG_C_ACC_HOSU_HOUR_BOUNDARY ):
|
||||
case ( VREG_C_FREE_ADRS ):
|
||||
case ( VREG_C_RTC_ALARM_YEAR ):
|
||||
case ( VREG_C_ACC_W_ADRS ):
|
||||
case ( VREG_C_OFF_DELAY ):
|
||||
case VREG_C_IRQ_MASK0:
|
||||
case VREG_C_IRQ_MASK1:
|
||||
case VREG_C_IRQ_MASK2:
|
||||
case VREG_C_IRQ_MASK3:
|
||||
case VREG_C_IRQ_MASK4:
|
||||
case VREG_C_DBG01:
|
||||
case VREG_C_DBG02:
|
||||
case VREG_C_LED_BRIGHT:
|
||||
case VREG_C_ACC_HOSU_L:
|
||||
case VREG_C_ACC_HOSU_M:
|
||||
case VREG_C_ACC_HOSU_H:
|
||||
case VREG_C_ACC_HOSU_HOUR_BOUNDARY:
|
||||
case VREG_C_FREE_ADRS:
|
||||
case VREG_C_RTC_ALARM_YEAR:
|
||||
case VREG_C_ACC_W_ADRS:
|
||||
case VREG_C_OFF_DELAY:
|
||||
case VREG_C_HAL_OVW_CONT0:
|
||||
case VREG_C_HAL_OVW_DAT0:
|
||||
case VREG_C_HAL_OVW_CONT1:
|
||||
case VREG_C_HAL_OVW_DAT1:
|
||||
*/
|
||||
if( adrs < VREG_C_ENDMARK_ )
|
||||
{
|
||||
@ -390,6 +421,7 @@ void vreg_ctr_write( u8 adrs, u8 data )
|
||||
}
|
||||
else
|
||||
{
|
||||
dbg_nop(); // read onlyの所に書いた。なんかバグってない?
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -412,7 +444,7 @@ u8 vreg_ctr_read( u8 adrs )
|
||||
// RTCは読み出し途中に繰り上がるのを避けるため
|
||||
if( ( VREG_C_RTC_SEC <= adrs ) && ( adrs <= VREG_C_RTC_YEAR ) )
|
||||
{
|
||||
rtc_buf_reflesh( );
|
||||
rtc_buf_refresh( );
|
||||
}
|
||||
else if( adrs == VREG_C_MCU_STATUS )
|
||||
{
|
||||
@ -429,14 +461,21 @@ u8 vreg_ctr_read( u8 adrs )
|
||||
{
|
||||
return( (u8)( ( rsub_temp >> 8 ) & 0xFF ) );
|
||||
}
|
||||
else if( adrs == VREG_C_ACC_HOSU_HIST )
|
||||
/*
|
||||
// debug 的な
|
||||
else if( adrs == VREG_C_IRQ_MASK0 )
|
||||
{
|
||||
return( vreg_ctr[ VREG_C_IRQ_MASK0 ] & 0x7F ); // ぜ~ったいにMSBは0。1なら通信エラー
|
||||
}
|
||||
*/
|
||||
else if( adrs == VREG_C_ACC_HOSU_HIST )
|
||||
{
|
||||
return( hosu_read() );
|
||||
}
|
||||
else if( adrs == VREG_CX_FREE_DATA )
|
||||
{
|
||||
temp = pool.vreg_c_ext.vreg_c_free[ vreg_free_adrs ];
|
||||
// vreg_free_adrs += 1; // ここで加算してしまうとインデックスがずれる
|
||||
// vreg_free_adrs ++; // ここで加算してしまうとインデックスがずれる
|
||||
return( temp );
|
||||
}
|
||||
else if( adrs == VREG_CX_INFO )
|
||||
@ -444,18 +483,22 @@ u8 vreg_ctr_read( u8 adrs )
|
||||
return( extinfo_read() );
|
||||
}
|
||||
else if( adrs == VREG_C_ACC_HOSU_SETTING )
|
||||
{
|
||||
return( pedolog_overflow? 0x10: 0 );
|
||||
}
|
||||
{
|
||||
if( pedolog_overflow )
|
||||
{
|
||||
return( 0x10 );
|
||||
}
|
||||
else
|
||||
{
|
||||
return( 0 );
|
||||
}
|
||||
}
|
||||
|
||||
#if 0
|
||||
if( adrs >= VREG_C_ENDMARK_ )
|
||||
{
|
||||
// VREG_C_INFO > VREG_C_ENDMARK_ なので
|
||||
// いじるときは注意
|
||||
return( 0xEE );
|
||||
// VREG_C_INFO > VREG_C_ENDMARK_ なのでいじるとき注意
|
||||
return( 0xFF );
|
||||
}
|
||||
#endif
|
||||
return ( vreg_ctr[adrs] );
|
||||
}
|
||||
|
||||
@ -480,7 +523,7 @@ void vreg_ctr_after_read( u8 adrs, u8 data )
|
||||
break;
|
||||
|
||||
case VREG_CX_FREE_DATA:
|
||||
vreg_free_adrs += 1;
|
||||
vreg_free_adrs ++;
|
||||
break;
|
||||
|
||||
default:
|
||||
@ -508,7 +551,7 @@ void vreg_ctr_after_read( u8 adrs, u8 data )
|
||||
}
|
||||
#endif
|
||||
|
||||
// マスクされてたら、フラグも立てず、割り込みも入れない。
|
||||
// マスクされてたら、フラグ「立てない」、割り込み入れない。
|
||||
void set_irq( u8 irqreg, u8 irq_flg )
|
||||
{
|
||||
u8 tot;
|
||||
|
@ -5,6 +5,8 @@
|
||||
#include "config.h"
|
||||
|
||||
// VREG_C_MCU_STATUS
|
||||
// bit[7.6] twl.sys_modeの[1.0] ctrから書けないが、fcr_reset時に適当にリセット
|
||||
// bit[5] 〃 [7] ctrから書けないが、fcr_reset時に適当にリセット
|
||||
#define REG_BIT_STATUS_WDT_RESET ( 1 << 1 )
|
||||
#define REG_BIT_RTC_BLACKOUT ( 1 << 0 )
|
||||
|
||||
@ -27,7 +29,7 @@
|
||||
// twl bl のミラー[1: ( 1 << 3 )
|
||||
// 0]( 1 << 2 )
|
||||
#define REG_BIT_ACCERO_ERR ( 1 << 1 )
|
||||
#define REG_BIT_MGIC_ERR ( 1 << 0 )
|
||||
#define REG_BIT_MGIC_ERR ( 1 << 0 )
|
||||
|
||||
// VREG_C_IRQ0
|
||||
#define REG_BIT_IRQ_WDT_RESET ( 1 << 7 )
|
||||
@ -113,10 +115,6 @@
|
||||
#define REG_BIT_TWL_IRQ_BT_EMPTY 0x10
|
||||
#define REG_BIT_TWL_IRQ_VOL_CHANGE 0x40
|
||||
|
||||
// VOL option (0x26)
|
||||
#define REG_BIT_VOL_UPDATE_TO_SLIDER ( 1 << 4 )
|
||||
#define REG_BIT_VOL_BY_SPI ( 1 << 0 )
|
||||
// FORCE_REGの方が弱い
|
||||
|
||||
// CODEC上のPMIC NTR の代理レジスタ
|
||||
#define REG_BIT_TWL_REQ_OFF ( 1 << 6 )
|
||||
@ -125,10 +123,31 @@
|
||||
#define REG_BIT_TWL_REQ_RESET ( 1 << 0 )
|
||||
|
||||
|
||||
|
||||
// VREG_C_LED_NOTIFY_FLAG
|
||||
#define REG_BIT_IN_LOOP ( 1 << 0 )
|
||||
|
||||
// RBR control (0x57)
|
||||
#define REG_BIT_FLIGHT ( 1 << 1 )
|
||||
#define REG_BIT_RESET_n ( 1 << 0 )
|
||||
|
||||
|
||||
// HAL bitfields 0
|
||||
#define REG_BIT_HAL0_PM_EXTDC_n ( 1 << 7 )
|
||||
#define REG_BIT_HAL0_BT_IN_CHG_n ( 1 << 6 )
|
||||
//#define REG_BIT_HAL0_PM_IRQ_n // 使わない
|
||||
#define REG_BIT_HAL0_RSV_5 ( 1 << 5 )
|
||||
#define REG_BIT_HAL0_WL_TX ( 1 << 4 )
|
||||
#define REG_BIT_HAL0_SHELL_OPEN ( 1 << 3 ) // statusにあります
|
||||
#define REG_BIT_HAL0_SW_WIFI_n ( 1 << 2 )
|
||||
#define REG_BIT_HAL0_SW_HOME_n ( 1 << 1 )
|
||||
#define REG_BIT_HAL0_SW_POW_n ( 1 << 0 )
|
||||
|
||||
|
||||
// HAL bitfields 1
|
||||
#define REG_BIT_HAL1_DIPSW_1 ( 1 << 3 )
|
||||
#define REG_BIT_HAL1_DIPSW_0 ( 1 << 2 )
|
||||
#define REG_BIT_HAL1_HW_DET_1 ( 1 << 1 )
|
||||
#define REG_BIT_HAL1_HW_DET_0 ( 1 << 0 )
|
||||
|
||||
/*
|
||||
テンプレ
|
||||
@ -189,9 +208,9 @@ enum VREG_C_ADRS
|
||||
VREG_C_COMMAND3, // 'r' でマイコンリセット、 'w' でWDTリセット
|
||||
|
||||
VREG_C_OFF_DELAY = 0x24,
|
||||
VREG_C_VOL_DIGITAL = 0x25,
|
||||
VREG_C_VOL_OPTION,
|
||||
VREG_C_VOL_ADC_RAW,
|
||||
// VREG_C_VOL_DIGITAL = 0x25, // todo 消すよ
|
||||
// VREG_C_VOL_OPTION,
|
||||
VREG_C_VOL_ADC_RAW = 0x27,
|
||||
|
||||
VREG_C_LED_BRIGHT = 0x28,
|
||||
VREG_C_LED_POW,
|
||||
@ -201,6 +220,8 @@ enum VREG_C_ADRS
|
||||
VREG_C_LED_NOTIFY_DATA,
|
||||
VREG_C_LED_NOTIFY_FLAG,
|
||||
|
||||
VREG_C_RBR_CONTROL = 0x2F,
|
||||
|
||||
VREG_C_RTC_SEC = 0x30,
|
||||
VREG_C_RTC_MIN,
|
||||
VREG_C_RTC_HOUR,
|
||||
@ -242,12 +263,23 @@ enum VREG_C_ADRS
|
||||
VREG_C_ACC_HOSU_HOUR_BOUNDARY = 0x50,
|
||||
VREG_C_ACC_HOSU_HOUR_BOUNDARY_SEC,
|
||||
|
||||
VREG_C_HAL_OVW_CONT0 = 0x52,
|
||||
VREG_C_HAL_OVW_DAT0,
|
||||
VREG_C_HAL_OVW_CONT1, // reserved
|
||||
VREG_C_HAL_OVW_DAT1, // reserved
|
||||
|
||||
VREG_C_HAL_OVW_BT_FUEL = 0x56,
|
||||
VREG_C_HAL_OVW_BT_VOLTAGE,
|
||||
|
||||
VREG_C_VOL_CAL_MIN = 0x58,
|
||||
VREG_C_VOL_CAL_MAX,
|
||||
|
||||
VREG_C_ENDMARK_
|
||||
VREG_C_HAL_OVW_TEMPERATURE = 0x5A,
|
||||
|
||||
VREG_C_ENDMARK_
|
||||
};
|
||||
|
||||
// ↓間は抜けにして、メモリも確保しないために 別に define してる
|
||||
#define VREG_CX_INFO 0x7F
|
||||
#define VREG_CX_FREE_ADRS 0x60
|
||||
#define VREG_CX_FREE_DATA 0x61
|
||||
|
@ -1,152 +1,38 @@
|
||||
C:\WINDOWS\system32\cmd.exe /c touch magic.c
|
||||
"D:\Program Files\NEC Electronics Tools\CC78K0R\W2.12\bin\cc78k0r.exe" -c9F0104 -y"d:\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 loader.c
|
||||
loader.c(121) : CC78K0R warning W0401: Conversion may lose significant digits
|
||||
loader.c(122) : CC78K0R warning W0401: Conversion may lose significant digits
|
||||
C:\Windows\system32\cmd.exe /c c:\cygwin\bin\touch magic.c
|
||||
"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\bin\cc78k0r.exe" -c9F0104 -y"c:\program files (x86)\nec electronics tools\dev" -_msgoff -irenge -i"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r" -ms -rd2 -qvjl2w -sainter_asm -zpb -no magic.c
|
||||
Compilation complete, 0 error(s) and 0 warning(s) found.
|
||||
"C:\Program Files (x86)\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"c:\program files (x86)\nec electronics tools\dev" -_msgoff inter_asm\magic.asm
|
||||
Assembly complete, 0 error(s) and 0 warning(s) found.
|
||||
"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\bin\cc78k0r.exe" -c9F0104 -y"c:\program files (x86)\nec electronics tools\dev" -_msgoff -irenge -i"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r" -ms -rd2 -qvjl2w -sainter_asm -zpb -no sw.c
|
||||
Compilation complete, 0 error(s) and 0 warning(s) found.
|
||||
"C:\Program Files (x86)\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"c:\program files (x86)\nec electronics tools\dev" -_msgoff inter_asm\sw.asm
|
||||
Assembly complete, 0 error(s) and 0 warning(s) found.
|
||||
"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\bin\cc78k0r.exe" -c9F0104 -y"c:\program files (x86)\nec electronics tools\dev" -_msgoff -irenge -i"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r" -ms -rd2 -qvjl2w -sainter_asm -zpb -no task_sys.c
|
||||
task_sys.c(219) : CC78K0R warning W0401: Conversion may lose significant digits
|
||||
task_sys.c(580) : CC78K0R warning W0401: Conversion may lose significant digits
|
||||
Compilation complete, 0 error(s) and 2 warning(s) found.
|
||||
"D:\Program Files\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff inter_asm\loader.asm
|
||||
"C:\Program Files (x86)\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"c:\program files (x86)\nec electronics tools\dev" -_msgoff inter_asm\task_sys.asm
|
||||
Assembly complete, 0 error(s) and 0 warning(s) found.
|
||||
"D:\Program Files\NEC Electronics Tools\CC78K0R\W2.12\bin\cc78k0r.exe" -c9F0104 -y"d:\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(801) : CC78K0R warning W0401: Conversion may lose significant digits
|
||||
pm.c(878) : CC78K0R warning W0401: Conversion may lose significant digits
|
||||
pm.c(886) : CC78K0R warning W0401: Conversion may lose significant digits
|
||||
pm.c(1101) : CC78K0R warning W0401: Conversion may lose significant digits
|
||||
pm.c(1104) : CC78K0R warning W0401: Conversion may lose significant digits
|
||||
Compilation complete, 0 error(s) and 5 warning(s) found.
|
||||
"D:\Program Files\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff inter_asm\pm.asm
|
||||
Assembly complete, 0 error(s) and 0 warning(s) found.
|
||||
"D:\Program Files\NEC Electronics Tools\CC78K0R\W2.12\bin\cc78k0r.exe" -c9F0104 -y"d:\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 i2c_ctr.c
|
||||
Compilation complete, 0 error(s) and 0 warning(s) found.
|
||||
"D:\Program Files\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff inter_asm\i2c_ctr.asm
|
||||
Assembly complete, 0 error(s) and 0 warning(s) found.
|
||||
"D:\Program Files\NEC Electronics Tools\CC78K0R\W2.12\bin\cc78k0r.exe" -c9F0104 -y"d:\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 main.c
|
||||
Compilation complete, 0 error(s) and 0 warning(s) found.
|
||||
"D:\Program Files\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff inter_asm\main.asm
|
||||
Assembly complete, 0 error(s) and 0 warning(s) found.
|
||||
"D:\Program Files\NEC Electronics Tools\CC78K0R\W2.12\bin\cc78k0r.exe" -c9F0104 -y"d:\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.
|
||||
"D:\Program Files\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff inter_asm\magic.asm
|
||||
Assembly complete, 0 error(s) and 0 warning(s) found.
|
||||
"D:\Program Files\NEC Electronics Tools\CC78K0R\W2.12\bin\cc78k0r.exe" -c9F0104 -y"d:\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 WDT.c
|
||||
Compilation complete, 0 error(s) and 0 warning(s) found.
|
||||
"D:\Program Files\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff inter_asm\WDT.asm
|
||||
Assembly complete, 0 error(s) and 0 warning(s) found.
|
||||
"D:\Program Files\NEC Electronics Tools\CC78K0R\W2.12\bin\cc78k0r.exe" -c9F0104 -y"d:\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 i2c_mcu.c
|
||||
i2c_mcu.c(210) : CC78K0R warning W0401: Conversion may lose significant digits
|
||||
Compilation complete, 0 error(s) and 1 warning(s) found.
|
||||
"D:\Program Files\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff inter_asm\i2c_mcu.asm
|
||||
Assembly complete, 0 error(s) and 0 warning(s) found.
|
||||
"D:\Program Files\NEC Electronics Tools\CC78K0R\W2.12\bin\cc78k0r.exe" -c9F0104 -y"d:\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 i2c_twl.c
|
||||
Compilation complete, 0 error(s) and 0 warning(s) found.
|
||||
"D:\Program Files\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff inter_asm\i2c_twl.asm
|
||||
Assembly complete, 0 error(s) and 0 warning(s) found.
|
||||
"D:\Program Files\NEC Electronics Tools\CC78K0R\W2.12\bin\cc78k0r.exe" -c9F0104 -y"d:\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(109) : CC78K0R warning W0745: Expected function prototype
|
||||
led.c(251) : CC78K0R warning W0401: Conversion may lose significant digits
|
||||
led.c(256) : CC78K0R warning W0401: Conversion may lose significant digits
|
||||
led.c(318) : CC78K0R warning W0401: Conversion may lose significant digits
|
||||
led.c(377) : CC78K0R warning W0401: Conversion may lose significant digits
|
||||
led.c(403) : CC78K0R warning W0401: Conversion may lose significant digits
|
||||
led.c(579) : CC78K0R warning W0401: Conversion may lose significant digits
|
||||
Compilation complete, 0 error(s) and 7 warning(s) found.
|
||||
"D:\Program Files\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff inter_asm\led.asm
|
||||
Assembly complete, 0 error(s) and 0 warning(s) found.
|
||||
"D:\Program Files\NEC Electronics Tools\CC78K0R\W2.12\bin\cc78k0r.exe" -c9F0104 -y"d:\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 rtc.c
|
||||
Compilation complete, 0 error(s) and 0 warning(s) found.
|
||||
"D:\Program Files\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff inter_asm\rtc.asm
|
||||
Assembly complete, 0 error(s) and 0 warning(s) found.
|
||||
"D:\Program Files\NEC Electronics Tools\CC78K0R\W2.12\bin\cc78k0r.exe" -c9F0104 -y"d:\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 vreg_ctr.c
|
||||
vreg_ctr.c(163) : CC78K0R warning W0401: Conversion may lose significant digits
|
||||
vreg_ctr.c(164) : CC78K0R warning W0401: Conversion may lose significant digits
|
||||
vreg_ctr.c(166) : CC78K0R warning W0401: Conversion may lose significant digits
|
||||
vreg_ctr.c(168) : CC78K0R warning W0401: Conversion may lose significant digits
|
||||
vreg_ctr.c(169) : CC78K0R warning W0401: Conversion may lose significant digits
|
||||
vreg_ctr.c(216) : CC78K0R warning W0401: Conversion may lose significant digits
|
||||
vreg_ctr.c(216) : CC78K0R warning W0401: Conversion may lose significant digits
|
||||
vreg_ctr.c(221) : CC78K0R warning W0401: Conversion may lose significant digits
|
||||
vreg_ctr.c(221) : CC78K0R warning W0401: Conversion may lose significant digits
|
||||
vreg_ctr.c(225) : CC78K0R warning W0401: Conversion may lose significant digits
|
||||
vreg_ctr.c(225) : CC78K0R warning W0401: Conversion may lose significant digits
|
||||
vreg_ctr.c(229) : CC78K0R warning W0401: Conversion may lose significant digits
|
||||
vreg_ctr.c(229) : CC78K0R warning W0401: Conversion may lose significant digits
|
||||
vreg_ctr.c(233) : CC78K0R warning W0401: Conversion may lose significant digits
|
||||
Compilation complete, 0 error(s) and 14 warning(s) found.
|
||||
"D:\Program Files\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff inter_asm\vreg_ctr.asm
|
||||
Assembly complete, 0 error(s) and 0 warning(s) found.
|
||||
"D:\Program Files\NEC Electronics Tools\CC78K0R\W2.12\bin\cc78k0r.exe" -c9F0104 -y"d:\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 vreg_twl.c
|
||||
vreg_twl.c(57) : CC78K0R warning W0401: Conversion may lose significant digits
|
||||
vreg_twl.c(61) : CC78K0R warning W0401: Conversion may lose significant digits
|
||||
Compilation complete, 0 error(s) and 2 warning(s) found.
|
||||
"D:\Program Files\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff inter_asm\vreg_twl.asm
|
||||
Assembly complete, 0 error(s) and 0 warning(s) found.
|
||||
"D:\Program Files\NEC Electronics Tools\CC78K0R\W2.12\bin\cc78k0r.exe" -c9F0104 -y"d:\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 adc.c
|
||||
adc.c(103) : CC78K0R warning W0401: Conversion may lose significant digits
|
||||
adc.c(200) : CC78K0R warning W0401: Conversion may lose significant digits
|
||||
adc.c(232) : CC78K0R warning W0401: Conversion may lose significant digits
|
||||
adc.c(344) : CC78K0R warning W0401: Conversion may lose significant digits
|
||||
adc.c(384) : CC78K0R warning W0401: Conversion may lose significant digits
|
||||
adc.c(462) : CC78K0R warning W0745: Expected function prototype
|
||||
adc.c(491) : CC78K0R warning W0401: Conversion may lose significant digits
|
||||
adc.c(496) : CC78K0R warning W0401: Conversion may lose significant digits
|
||||
adc.c(122) : CC78K0R warning W0401: Conversion may lose significant digits
|
||||
Compilation complete, 0 error(s) and 9 warning(s) found.
|
||||
"D:\Program Files\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff inter_asm\adc.asm
|
||||
Assembly complete, 0 error(s) and 0 warning(s) found.
|
||||
"D:\Program Files\NEC Electronics Tools\CC78K0R\W2.12\bin\cc78k0r.exe" -c9F0104 -y"d:\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 renge\renge.c
|
||||
Compilation complete, 0 error(s) and 0 warning(s) found.
|
||||
"D:\Program Files\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff inter_asm\renge.asm
|
||||
Assembly complete, 0 error(s) and 0 warning(s) found.
|
||||
"D:\Program Files\NEC Electronics Tools\CC78K0R\W2.12\bin\cc78k0r.exe" -c9F0104 -y"d:\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 accero.c
|
||||
Compilation complete, 0 error(s) and 0 warning(s) found.
|
||||
"D:\Program Files\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff inter_asm\accero.asm
|
||||
Assembly complete, 0 error(s) and 0 warning(s) found.
|
||||
"D:\Program Files\NEC Electronics Tools\CC78K0R\W2.12\bin\cc78k0r.exe" -c9F0104 -y"d:\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 self_flash.c
|
||||
self_flash.c(271) : CC78K0R warning W0401: Conversion may lose significant digits
|
||||
self_flash.c(272) : CC78K0R warning W0401: Conversion may lose significant digits
|
||||
Compilation complete, 0 error(s) and 2 warning(s) found.
|
||||
"D:\Program Files\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff inter_asm\self_flash.asm
|
||||
Assembly complete, 0 error(s) and 0 warning(s) found.
|
||||
"D:\Program Files\NEC Electronics Tools\CC78K0R\W2.12\bin\cc78k0r.exe" -c9F0104 -y"d:\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 sw.c
|
||||
Compilation complete, 0 error(s) and 0 warning(s) found.
|
||||
"D:\Program Files\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff inter_asm\sw.asm
|
||||
Assembly complete, 0 error(s) and 0 warning(s) found.
|
||||
"D:\Program Files\NEC Electronics Tools\CC78K0R\W2.12\bin\cc78k0r.exe" -c9F0104 -y"d:\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 task_debug.c
|
||||
Compilation complete, 0 error(s) and 0 warning(s) found.
|
||||
"D:\Program Files\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff inter_asm\task_debug.asm
|
||||
Assembly complete, 0 error(s) and 0 warning(s) found.
|
||||
"D:\Program Files\NEC Electronics Tools\CC78K0R\W2.12\bin\cc78k0r.exe" -c9F0104 -y"d:\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 task_misc.c
|
||||
task_misc.c(300) : CC78K0R warning W0401: Conversion may lose significant digits
|
||||
Compilation complete, 0 error(s) and 1 warning(s) found.
|
||||
"D:\Program Files\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff inter_asm\task_misc.asm
|
||||
Assembly complete, 0 error(s) and 0 warning(s) found.
|
||||
"D:\Program Files\NEC Electronics Tools\CC78K0R\W2.12\bin\cc78k0r.exe" -c9F0104 -y"d:\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 task_sys.c
|
||||
task_sys.c(207) : CC78K0R warning W0401: Conversion may lose significant digits
|
||||
task_sys.c(525) : CC78K0R warning W0401: Conversion may lose significant digits
|
||||
Compilation complete, 0 error(s) and 2 warning(s) found.
|
||||
"D:\Program Files\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff inter_asm\task_sys.asm
|
||||
Assembly complete, 0 error(s) and 0 warning(s) found.
|
||||
"D:\Program Files\NEC Electronics Tools\CC78K0R\W2.12\bin\cc78k0r.exe" -c9F0104 -y"d:\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 pedo_alg_thre_det2.c
|
||||
pedo_alg_thre_det2.c(58) : CC78K0R warning W0745: Expected function prototype
|
||||
pedo_alg_thre_det2.c(73) : CC78K0R warning W0401: Conversion may lose significant digits
|
||||
pedo_alg_thre_det2.c(140) : CC78K0R warning W0401: Conversion may lose significant digits
|
||||
pedo_alg_thre_det2.c(153) : CC78K0R warning W0401: Conversion may lose significant digits
|
||||
Compilation complete, 0 error(s) and 4 warning(s) found.
|
||||
"D:\Program Files\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff inter_asm\pedo_alg_thre_det2.asm
|
||||
Assembly complete, 0 error(s) and 0 warning(s) found.
|
||||
"D:\Program Files\NEC Electronics Tools\CC78K0R\W2.12\bin\cc78k0r.exe" -c9F0104 -y"d:\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 ini_VECT.c
|
||||
Compilation complete, 0 error(s) and 0 warning(s) found.
|
||||
"D:\Program Files\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff inter_asm\ini_VECT.asm
|
||||
Assembly complete, 0 error(s) and 0 warning(s) found.
|
||||
"D:\Program Files\NEC Electronics Tools\CC78K0R\W2.12\bin\cc78k0r.exe" -c9F0104 -y"d:\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 task_status.c
|
||||
Compilation complete, 0 error(s) and 0 warning(s) found.
|
||||
"D:\Program Files\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff inter_asm\task_status.asm
|
||||
Assembly complete, 0 error(s) and 0 warning(s) found.
|
||||
"D:\Program Files\NEC Electronics Tools\RA78K0R\W1.33\bin\lk78k0r.exe" -y"d:\program files\nec electronics tools\dev" -_msgoff -obsr.lmf "..\..\..\..\Program Files\NEC Electronics Tools\CC78K0R\W2.12\lib78k0r\s0rm.rel" -gi1B339499E033F240BFAAh -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"D:\Program Files\NEC Electronics Tools\CC78K0R\W2.12\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.
|
||||
"D:\Program Files\NEC Electronics Tools\RA78K0R\W1.33\bin\oc78k0r.exe" -y"d:\program files\nec electronics tools\dev" -_msgoff -o.\bsr.hex -nu -ki bsr.lmf
|
||||
"C:\Program Files (x86)\NEC Electronics Tools\RA78K0R\W1.33\bin\lk78k0r.exe" -y"c:\program files (x86)\nec electronics tools\dev" -_msgoff -obsr.lmf "..\..\..\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\lib78k0r\s0rm.rel" -go85h,0FC00h,1024 -gi1B339499E033F240BFAAh -pbsr_k0r.map -nkd -gb7EFBFFh -b"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\lib78k0r\fsl.lib" -bcl0rdm.lib -bcl0rm.lib -bcl0rmf.lib -i"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\lib78k0r" -dbsr_mcu.dr -s -w2 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 led_cam.rel led_pow.rel hal.rel batt_params.rel voltable.rel pedo_lpf_coeff.rel
|
||||
RA78K0R warning W3420: File 'loader.rel' already has had error(s)/warning(s) by 'CC78K'
|
||||
Read Device File Directory : C:\PROGRAM FILES (X86)\NEC ELECTRONICS TOOLS\DEV\
|
||||
RA78K0R warning W3420: File 'pm.rel' already has had error(s)/warning(s) by 'CC78K'
|
||||
RA78K0R warning W3420: File 'i2c_mcu.rel' already has had error(s)/warning(s) by 'CC78K'
|
||||
RA78K0R warning W3420: File 'led.rel' already has had error(s)/warning(s) by 'CC78K'
|
||||
RA78K0R warning W3420: File 'vreg_ctr.rel' already has had error(s)/warning(s) by 'CC78K'
|
||||
RA78K0R warning W3420: File 'vreg_twl.rel' already has had error(s)/warning(s) by 'CC78K'
|
||||
RA78K0R warning W3420: File 'adc.rel' already has had error(s)/warning(s) by 'CC78K'
|
||||
RA78K0R warning W3420: File 'accero.rel' already has had error(s)/warning(s) by 'CC78K'
|
||||
RA78K0R warning W3420: File 'self_flash.rel' already has had error(s)/warning(s) by 'CC78K'
|
||||
RA78K0R warning W3420: File 'task_misc.rel' already has had error(s)/warning(s) by 'CC78K'
|
||||
RA78K0R warning W3420: File 'task_sys.rel' already has had error(s)/warning(s) by 'CC78K'
|
||||
RA78K0R warning W3420: File 'pedo_alg_thre_det2.rel' already has had error(s)/warning(s) by 'CC78K'
|
||||
RA78K0R warning W3420: File 'led_pow.rel' already has had error(s)/warning(s) by 'CC78K'
|
||||
|
||||
Link complete, 0 error(s) and 13 warning(s) found.
|
||||
"C:\Program Files (x86)\NEC Electronics Tools\RA78K0R\W1.33\bin\oc78k0r.exe" -y"c:\program files (x86)\nec electronics tools\dev" -_msgoff -o.\bsr.hex -nu -ki bsr.lmf
|
||||
Object Conversion Complete, 0 error(s) and 0 warning(s) found.
|
||||
C:\WINDOWS\system32\cmd.exe /c ruby nec_s_2_bsrbin2.rb bsr.hex
|
||||
intel-HEX to bsr bin converter
|
||||
file converted!
|
||||
|
||||
|
||||
Build Total error(s) : 0 Total warning(s) : 49
|
||||
C:\Windows\system32\cmd.exe /c ruby nec_s_2_bsrbin2.rb bsr.hex
|
||||
133
|
||||
!E debug enable!!
|
||||
Build Total error(s) : 0 Total warning(s) : 15
|
||||
|
@ -14,7 +14,7 @@ Low-voltage Flash Rewriting=On
|
||||
Fail Safe Break=0x2000
|
||||
Port=1
|
||||
NMI=OFF
|
||||
TRESET=OFF
|
||||
TRESET=ON
|
||||
IRESET=OFF
|
||||
WAIT=OFF
|
||||
SysClock=None
|
||||
@ -22,8 +22,8 @@ SubClock=None
|
||||
[Mapping]
|
||||
Count=0
|
||||
[Main]
|
||||
Geometry=154, 154, 1080, 635
|
||||
Window=Max
|
||||
Geometry=39, 38, 1452, 1091
|
||||
Window=Normal
|
||||
MDI_MAX=OFF
|
||||
Button=ON
|
||||
Mode=Auto
|
||||
@ -55,7 +55,7 @@ HighSpeed1=OFF
|
||||
CPU Reset1=ON
|
||||
Symbol Reset1=ON
|
||||
[View File]
|
||||
Dir=\\Tsclient\c\78k_data\yav-mcu-basara\trunk\
|
||||
Dir=\\Tsclient\c\78k_data\yav-mcu-basara\branches\1.34_pwsw_analyze\
|
||||
Filter=Source
|
||||
[Debugger Option]
|
||||
Source Path=""
|
||||
@ -78,10 +78,10 @@ Symbol Type=OFF
|
||||
Language=C
|
||||
Kanji=SJIS
|
||||
[Source]
|
||||
Geometry=28, 27, 1001, 770
|
||||
Geometry=68, 7, 822, 815
|
||||
Window=Normal
|
||||
DispStart=432
|
||||
CaretPos=433,0
|
||||
DispStart=49
|
||||
CaretPos=62,0
|
||||
Mode=Normal
|
||||
DispFile=
|
||||
Address1=
|
||||
@ -140,10 +140,10 @@ SaveStart=
|
||||
SaveEnd=
|
||||
Accumulative=ON
|
||||
[Assemble]
|
||||
Geometry=43, 31, 727, 721
|
||||
Window=Hide
|
||||
DispStart=847754240
|
||||
CaretPos=0,0
|
||||
Geometry=100, 100, 600, 400
|
||||
Window=Normal
|
||||
DispStart=12209
|
||||
CaretPos=12209,27
|
||||
Address1=
|
||||
Address2=
|
||||
Address3=
|
||||
@ -185,7 +185,7 @@ SaveRange=Screen
|
||||
SaveStart=
|
||||
SaveEnd=
|
||||
[Memory]
|
||||
Geometry=244, 107, 550, 400
|
||||
Geometry=24, 534, 550, 400
|
||||
Window=Normal
|
||||
Boundary=163
|
||||
Format=Hex
|
||||
@ -194,9 +194,9 @@ Endian=Little
|
||||
Ascii=OFF
|
||||
Idtag=OFF
|
||||
Address=
|
||||
DispStart=000F2220
|
||||
CaretPosData=26, 62009
|
||||
CaretPosAscii=50176, 0
|
||||
DispStart=000FFCF0
|
||||
CaretPosData=0, 65487
|
||||
CaretPosAscii=0, 65487
|
||||
Address1=
|
||||
Address2=
|
||||
Address3=
|
||||
@ -814,9 +814,9 @@ L529=IICWL1
|
||||
L530=IICWH1
|
||||
L531=SVA1
|
||||
[Local Variable]
|
||||
Geometry=1032, 466, 400, 300
|
||||
Window=Normal
|
||||
Boundary=13041851
|
||||
Geometry=0, 0, 0, 0
|
||||
Window=Hide
|
||||
Boundary=0
|
||||
Mode=Proper
|
||||
[Trace View]
|
||||
Geometry=0, 0, 0, 0
|
||||
@ -866,22 +866,22 @@ SaveRange=Screen
|
||||
SaveStart=
|
||||
SaveEnd=
|
||||
[Register]
|
||||
Geometry=0, 0, 0, 0
|
||||
Window=Hide
|
||||
Geometry=50, 50, 250, 400
|
||||
Window=Normal
|
||||
Mode=Hex
|
||||
Boundary=62
|
||||
Boundary=159
|
||||
Pickup=OFF
|
||||
Name=Functional
|
||||
Register Bank=0
|
||||
RP0=3
|
||||
RP1=3
|
||||
RP2=3
|
||||
RP3=3
|
||||
PC=3
|
||||
SP=3
|
||||
PSW=3
|
||||
ES=3
|
||||
CS=3
|
||||
RP0=1
|
||||
RP1=1
|
||||
RP2=1
|
||||
RP3=1
|
||||
PC=1
|
||||
SP=1
|
||||
PSW=1
|
||||
ES=1
|
||||
CS=1
|
||||
[Event Manager]
|
||||
Geometry=0, 0, 0, 0
|
||||
Window=Hide
|
||||
@ -957,43 +957,62 @@ Detail=OFF
|
||||
Last Name=
|
||||
Count=0
|
||||
[Variable]
|
||||
Geometry=981, 20, 440, 451
|
||||
Geometry=935, 61, 440, 634
|
||||
Window=Normal
|
||||
Boundary=13762700
|
||||
0=.battery_manufacturer,P,N,A,+,1
|
||||
1=.temp_fuel,P,N,A,+,1
|
||||
2=.bt_volt16,P,N,A,+,1
|
||||
Line=3
|
||||
0=.SW_pow_count,P,N,A,+,1
|
||||
1=.renge_flg_interval,P,N,A,+,1
|
||||
2=.SW_pow_count,P,N,A,+,1
|
||||
3=.pwsw_timeout,P,N,A,+,1
|
||||
4=.RWAIT,P,S,A,+,1
|
||||
5=.RWST,P,S,A,+,1
|
||||
6=.system_status,.,N,A,+,1
|
||||
7=.counter1,D,N,A,+,1
|
||||
8=.chg_led_override,P,N,A,+,1
|
||||
9=.PM_EXTDC_n,P,N,A,+,1
|
||||
Line=10
|
||||
[Quick Watch]
|
||||
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=temp,P,A,1
|
||||
5=p_batt_param,P,A,1
|
||||
6=loop,P,A,1
|
||||
7=system_status,P,A,1
|
||||
8=battery_manufacturer,P,A,1
|
||||
9=p_bt_param,P,A,1
|
||||
10=bt_volt16,P,A,1
|
||||
11=temp_fuel,P,A,1
|
||||
0=counter1,P,A,1
|
||||
1=system_status,P,A,1
|
||||
2=timeout,P,A,1
|
||||
3=tp,P,A,1
|
||||
4=chg_led_override,P,A,1
|
||||
5=PM_EXTDC_n,P,A,1
|
||||
6=pwsw_timeout,P,A,1
|
||||
7=SW_pow_count,P,A,1
|
||||
8=renge_flg_interval,P,A,1
|
||||
9=RWST,P,A,1
|
||||
10=RWAIT,P,A,1
|
||||
11=
|
||||
12=
|
||||
13=
|
||||
14=
|
||||
15=
|
||||
[Software Break]
|
||||
Geometry=75, 75, 500, 200
|
||||
Geometry=914, 762, 500, 200
|
||||
Window=Normal
|
||||
Width=150 30 200 100
|
||||
Name0=Swb00001
|
||||
Address0=pm.c#_BT_get_left+0x13c
|
||||
Name0=Swb00003
|
||||
Address0=task_sys.c#_tsk_sys+0x47
|
||||
Window0=ASM
|
||||
Status0=ON
|
||||
Name1=Swb00003
|
||||
Address1=pm.c#_BT_get_left+0x135
|
||||
Status0=OFF
|
||||
Name1=Swb00002
|
||||
Address1=task_sys.c#_tsk_sys+0x27f
|
||||
Window1=ASM
|
||||
Status1=ON
|
||||
Count=2
|
||||
Status1=OFF
|
||||
Name2=Swb00004
|
||||
Address2=task_sys.c#_tsk_sys+0x28d
|
||||
Window2=ASM
|
||||
Status2=ON
|
||||
Name3=Swb00001
|
||||
Address3=task_sys.c#_tsk_sys+0x69
|
||||
Window3=ASM
|
||||
Status3=ON
|
||||
Name4=Swb00005
|
||||
Address4=rtc.c#_RTC_init+0x4c
|
||||
Window4=ASM
|
||||
Status4=ON
|
||||
Count=5
|
||||
[Reset]
|
||||
Debugger=ON
|
||||
Symbol=OFF
|
||||
@ -1018,7 +1037,7 @@ Window=Hide
|
||||
[Data Flash Option]
|
||||
Data Flash Emulation=OFF
|
||||
[List]
|
||||
Geometry=0, 0, 0, 0
|
||||
Geometry=75, 75, 856, 846
|
||||
Window=Hide
|
||||
[Console]
|
||||
Geometry=0, 0, 0, 0
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,22 +1,42 @@
|
||||
[ProjectManager]
|
||||
FrameMax=0
|
||||
FrameX=89
|
||||
FrameY=169
|
||||
FrameCX=1550
|
||||
FrameCY=921
|
||||
OpenFile1=led.c,0,100,100,1295,581,2,168,45,0
|
||||
OpenFile2=ProjectWindow
|
||||
FrameX=383
|
||||
FrameY=50
|
||||
FrameCX=1293
|
||||
FrameCY=1075
|
||||
OpenFile1=loader.c,0,248,38,1221,669,0,1,0,0
|
||||
OpenFile2=pm.c,0,373,197,1346,828,0,1,0,0
|
||||
OpenFile3=i2c_ctr.c,0,655,120,1628,751,0,1,0,0
|
||||
OpenFile4=main.c,0,250,250,1841,957,0,1,0,0
|
||||
OpenFile5=magic.c,0,300,300,1891,1007,0,1,0,0
|
||||
OpenFile6=WDT.c,0,275,275,1866,982,0,2,24,0
|
||||
OpenFile7=i2c_mcu.c,0,325,325,1916,1032,0,1,0,0
|
||||
OpenFile8=i2c_twl.c,0,364,126,1955,833,0,1,0,0
|
||||
OpenFile9=led.c,0,228,97,1819,804,0,1,0,0
|
||||
OpenFile10=rtc.c,0,364,142,1955,849,0,1,0,0
|
||||
OpenFile11=vreg_ctr.c,0,313,167,1904,874,0,1,0,0
|
||||
OpenFile12=vreg_twl.c,0,353,225,1944,932,0,1,0,0
|
||||
OpenFile13=adc.c,0,300,241,1891,948,0,1,0,0
|
||||
OpenFile14=renge\renge.c,0,342,270,1933,977,0,1,0,0
|
||||
OpenFile15=accero.c,0,355,308,1328,939,0,1,0,0
|
||||
OpenFile16=self_flash.c,0,346,268,1937,975,0,1,0,0
|
||||
OpenFile17=sw.c,0,358,322,1949,1029,0,1,0,0
|
||||
OpenFile18=task_debug.c,0,332,258,1923,965,0,1,0,0
|
||||
OpenFile19=task_misc.c,0,364,322,1955,1029,0,1,0,0
|
||||
OpenFile20=task_sys.c,0,351,450,1521,951,0,1,0,0
|
||||
OpenFile21=pedo_alg_thre_det2.c,0,414,74,1387,705,0,1,0,0
|
||||
OpenFile22=ini_VECT.c,0,275,275,1866,982,0,1,0,0
|
||||
OpenFile23=task_status.c,0,300,300,1891,1007,0,1,0,0
|
||||
OpenFile24=led_cam.c,0,325,325,1916,1032,0,1,0,0
|
||||
OpenFile25=led_pow.c,0,354,184,1945,891,0,1,0,0
|
||||
OpenFile26=hal.c,0,262,160,1853,867,0,1,0,0
|
||||
OpenFile27=batt_params.c,0,376,168,1967,875,0,1,0,0
|
||||
OpenFile28=voltable.c,0,300,300,1273,931,0,1,0,0
|
||||
OpenFile29=ProjectWindow
|
||||
PrjPos=0,0,706,0,291
|
||||
OpenFile3=led_cam.c,0,125,125,1320,606,0,24,0,0
|
||||
OpenFile4=led_pow.c,0,150,150,1345,631,0,205,0,0
|
||||
OpenFile5=config.h,0,442,428,1557,1029,29,23,29,0
|
||||
OpenFile6=i2c_mcu.c,0,175,175,1766,882,0,303,0,0
|
||||
OpenFile7=i2c_mcu.h,0,200,200,1791,907,46,23,48,0
|
||||
OpenFile8=self_flash.c,0,0,0,1195,481,21,290,12,0
|
||||
OpenFile9=batt_params.h,0,596,19,1842,741,0,31,0,0
|
||||
OpenFile10=pm.c,0,225,225,1278,761,33,54,32,0
|
||||
OpenFile11=OutputWindow
|
||||
OutputPos=0,198,904,529,1655
|
||||
OpenFile30=pedo_lpf_coeff.c,0,478,297,1451,928,0,1,19,0
|
||||
OpenFile31=OutputWindow
|
||||
OutputPos=0,349,1040,690,1928
|
||||
ActivePRJ=yav_mcu_bsr.prj
|
||||
[ProjectWindow]
|
||||
ProjectWindowDispType=0
|
||||
|
@ -1,9 +1,9 @@
|
||||
[SdbInfo]
|
||||
Ver=5
|
||||
[loader.c]
|
||||
T=4cc02a17
|
||||
T=4e4248ee
|
||||
1=incs_loader.h
|
||||
2=C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r\fsl.h
|
||||
2=..\..\..\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r\fsl.h
|
||||
3=fsl_user.h
|
||||
4=i2c_ctr.h
|
||||
5=i2c_mcu.h
|
||||
@ -12,21 +12,21 @@ T=4cc02a17
|
||||
8=reboot.h
|
||||
9=magic.h
|
||||
[pm.c]
|
||||
T=4ce758f6
|
||||
T=4e4111a9
|
||||
1=incs.h
|
||||
2=adc.h
|
||||
3=led.h
|
||||
4=pm.h
|
||||
5=renge\renge.h
|
||||
6=batt_params.h
|
||||
7=C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r\fsl.h
|
||||
7=..\..\..\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r\fsl.h
|
||||
8=fsl_user.h
|
||||
[i2c_ctr.c]
|
||||
T=4cc020c9
|
||||
T=4e409e63
|
||||
1=config.h
|
||||
2=incs.h
|
||||
[main.c]
|
||||
T=4cd9f64d
|
||||
T=4e40c90e
|
||||
1=incs_loader.h
|
||||
2=WDT.h
|
||||
3=rtc.h
|
||||
@ -36,31 +36,31 @@ T=4cd9f64d
|
||||
7=adc.h
|
||||
8=pool.h
|
||||
[magic.c]
|
||||
T=4ce75924
|
||||
T=4e4248f2
|
||||
1=config.h
|
||||
2=magic.h
|
||||
[WDT.c]
|
||||
T=4cc020c9
|
||||
T=4e424710
|
||||
1=incs_loader.h
|
||||
[i2c_mcu.c]
|
||||
T=4cd9f64c
|
||||
T=4e4234b9
|
||||
1=incs_loader.h
|
||||
2=i2c_mcu.h
|
||||
[i2c_twl.c]
|
||||
T=4cc020c9
|
||||
T=4e409e61
|
||||
1=config.h
|
||||
2=incs.h
|
||||
3=i2c_twl_defs.h
|
||||
4=i2c_twl.h
|
||||
[led.c]
|
||||
T=4cd9fb99
|
||||
T=4e423830
|
||||
1=incs.h
|
||||
2=led.h
|
||||
[rtc.c]
|
||||
T=4cd9f64c
|
||||
T=4e423614
|
||||
1=incs.h
|
||||
[vreg_ctr.c]
|
||||
T=4cc020c9
|
||||
T=4e409e63
|
||||
1=incs.h
|
||||
2=vreg_ctr.h
|
||||
3=rtc.h
|
||||
@ -68,48 +68,48 @@ T=4cc020c9
|
||||
5=accero.h
|
||||
6=pm.h
|
||||
7=pool.h
|
||||
8=C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r\fsl.h
|
||||
8=..\..\..\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r\fsl.h
|
||||
9=fsl_user.h
|
||||
[vreg_twl.c]
|
||||
T=4cc11aea
|
||||
T=4d5e3e6f
|
||||
1=incs.h
|
||||
2=jhl_defs.h
|
||||
3=led.h
|
||||
4=vreg_twl.h
|
||||
5=vreg_ctr.h
|
||||
[adc.c]
|
||||
T=4cc14cca
|
||||
T=4e42374e
|
||||
1=incs.h
|
||||
2=adc.h
|
||||
3=pm.h
|
||||
4=led.h
|
||||
5=vreg_twl.h
|
||||
6=voltable.h
|
||||
[renge\renge.c]
|
||||
T=4cd9f64c
|
||||
T=4e40d459
|
||||
1=renge\renge.h
|
||||
2=renge\renge_task_intval.h
|
||||
3=renge\renge_task_immediate.h
|
||||
4=WDT.h
|
||||
5=config.h
|
||||
6=user_define.h
|
||||
7=bsr_system.h
|
||||
7=sim\simOnWin.h
|
||||
8=bsr_system.h
|
||||
[accero.c]
|
||||
T=4cc020c9
|
||||
T=4e422e91
|
||||
1=config.h
|
||||
2=incs.h
|
||||
3=..\..\..\..\Program Files\NEC Electronics Tools\CC78K0R\W2.12\inc78k0r\math.h
|
||||
3=..\..\..\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r\math.h
|
||||
[self_flash.c]
|
||||
T=4cd9f64c
|
||||
T=4e409e18
|
||||
1=incs_loader.h
|
||||
2=C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r\fsl.h
|
||||
2=..\..\..\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r\fsl.h
|
||||
3=fsl_user.h
|
||||
4=i2c_ctr.h
|
||||
5=pool.h
|
||||
6=magic.h
|
||||
7=pm.h
|
||||
[sw.c]
|
||||
T=4cc020c9
|
||||
T=4e4251bb
|
||||
1=incs.h
|
||||
2=i2c_twl.h
|
||||
3=i2c_ctr.h
|
||||
@ -118,13 +118,13 @@ T=4cc020c9
|
||||
6=rtc.h
|
||||
7=sw.h
|
||||
[task_debug.c]
|
||||
T=4cc020c9
|
||||
T=4e409e1c
|
||||
1=incs_loader.h
|
||||
2=renge\renge.h
|
||||
3=pm.h
|
||||
4=accero.h
|
||||
[task_misc.c]
|
||||
T=4cd9f5ab
|
||||
T=4e409e61
|
||||
1=incs.h
|
||||
2=renge\renge.h
|
||||
3=pm.h
|
||||
@ -134,7 +134,7 @@ T=4cd9f5ab
|
||||
7=led.h
|
||||
8=vreg_twl.h
|
||||
[task_sys.c]
|
||||
T=4cd9f64c
|
||||
T=4e4251f0
|
||||
1=incs.h
|
||||
2=i2c_twl.h
|
||||
3=i2c_ctr.h
|
||||
@ -146,126 +146,160 @@ T=4cd9f64c
|
||||
9=adc.h
|
||||
10=self_flash.h
|
||||
[pedo_alg_thre_det2.c]
|
||||
T=4cc020c9
|
||||
T=4e423b4a
|
||||
1=incs.h
|
||||
2=..\..\..\..\Program Files\NEC Electronics Tools\CC78K0R\W2.12\inc78k0r\math.h
|
||||
2=..\..\..\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r\math.h
|
||||
3=accero.h
|
||||
4=pedometer.h
|
||||
5=pedo_lpf_coeff.h
|
||||
6=pool.h
|
||||
5=pool.h
|
||||
[ini_VECT.c]
|
||||
T=4cc020c9
|
||||
T=4e409e1a
|
||||
1=config.h
|
||||
2=sim\sim_interrupt_decrare.c
|
||||
[task_status.c]
|
||||
T=4cc020c9
|
||||
T=4e409e1c
|
||||
1=incs_loader.h
|
||||
2=renge\renge.h
|
||||
3=pm.h
|
||||
4=accero.h
|
||||
5=adc.h
|
||||
6=i2c_mcu.h
|
||||
[incs_loader.h]
|
||||
T=4cc020c9
|
||||
3=hal.h
|
||||
4=pm.h
|
||||
5=accero.h
|
||||
6=adc.h
|
||||
7=i2c_mcu.h
|
||||
8=led.h
|
||||
[led_cam.c]
|
||||
T=4e409e1d
|
||||
1=incs.h
|
||||
2=led.h
|
||||
[led_pow.c]
|
||||
T=4e423450
|
||||
1=incs.h
|
||||
2=led.h
|
||||
[hal.c]
|
||||
T=4e40c910
|
||||
1=incs_loader.h
|
||||
[batt_params.c]
|
||||
T=4e409e1b
|
||||
1=jhl_defs.h
|
||||
2=user_define.h
|
||||
3=bsr_system.h
|
||||
4=renge\renge.h
|
||||
5=vreg_ctr.h
|
||||
6=vreg_twl.h
|
||||
7=loader.h
|
||||
8=i2c_mcu.h
|
||||
9=WDT.h
|
||||
[jhl_defs.h]
|
||||
T=4cc020c9
|
||||
2=batt_params.h
|
||||
[voltable.c]
|
||||
T=4e422f23
|
||||
1=incs.h
|
||||
[pedo_lpf_coeff.c]
|
||||
T=4e422f1d
|
||||
1=incs.h
|
||||
[incs_loader.h]
|
||||
T=4e409e1d
|
||||
1=sim\simOnWin.h
|
||||
2=jhl_defs.h
|
||||
3=user_define.h
|
||||
4=hal.h
|
||||
5=bsr_system.h
|
||||
6=renge\renge.h
|
||||
7=vreg_ctr.h
|
||||
8=vreg_twl.h
|
||||
9=loader.h
|
||||
10=i2c_mcu.h
|
||||
11=WDT.h
|
||||
[sim\simOnWin.h]
|
||||
T=4e4243ba
|
||||
1=sim\sfrAlias.h
|
||||
[sim\sfrAlias.h]
|
||||
T=4e409e19
|
||||
1=config.h
|
||||
[config.h]
|
||||
T=4ce75a11
|
||||
T=4e409e18
|
||||
[jhl_defs.h]
|
||||
T=4df82cd1
|
||||
1=config.h
|
||||
[user_define.h]
|
||||
T=4cc020c9
|
||||
T=4e409e1d
|
||||
[hal.h]
|
||||
T=4e40c8f0
|
||||
[bsr_system.h]
|
||||
T=4cc020c9
|
||||
T=4e409e1a
|
||||
[renge\renge.h]
|
||||
T=4cc020c4
|
||||
T=4cbf8235
|
||||
1=renge\renge_defs.h
|
||||
2=renge\renge_task_immediate.h
|
||||
[renge\renge_defs.h]
|
||||
T=4cc020c4
|
||||
T=4c073c5a
|
||||
[renge\renge_task_immediate.h]
|
||||
T=4cc020c4
|
||||
T=4d37f8c8
|
||||
1=renge\renge_defs.h
|
||||
[vreg_ctr.h]
|
||||
T=4cc11aea
|
||||
T=4e409e1c
|
||||
1=config.h
|
||||
[vreg_twl.h]
|
||||
T=4cc11aea
|
||||
T=4d42202e
|
||||
[loader.h]
|
||||
T=4cc020c9
|
||||
T=4c318e0f
|
||||
[i2c_mcu.h]
|
||||
T=4cc020c9
|
||||
T=4dde0033
|
||||
[WDT.h]
|
||||
T=4cc020c9
|
||||
[C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r\fsl.h]
|
||||
T=4c319dfc
|
||||
[..\..\..\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r\fsl.h]
|
||||
T=49a3bd4e
|
||||
[fsl_user.h]
|
||||
T=4cc020c9
|
||||
T=4e409e62
|
||||
[i2c_ctr.h]
|
||||
T=4cc020c9
|
||||
T=4bf0d1e1
|
||||
[pm.h]
|
||||
T=4cd9f5ab
|
||||
T=4e409e1c
|
||||
[rtc.h]
|
||||
T=4cc020c9
|
||||
T=4e409e1c
|
||||
[reboot.h]
|
||||
T=4cc020c9
|
||||
T=4bf0d1e1
|
||||
[magic.h]
|
||||
T=4cc020c9
|
||||
T=4caab849
|
||||
[incs.h]
|
||||
T=4cc020c9
|
||||
1=jhl_defs.h
|
||||
2=user_define.h
|
||||
3=bsr_system.h
|
||||
4=renge\renge.h
|
||||
5=loader.h
|
||||
6=vreg_ctr.h
|
||||
7=vreg_twl.h
|
||||
8=i2c_mcu.h
|
||||
9=i2c_twl.h
|
||||
10=rtc.h
|
||||
11=accero.h
|
||||
12=pm.h
|
||||
13=sw.h
|
||||
14=adc.h
|
||||
15=WDT.h
|
||||
T=4e409e18
|
||||
1=sim\simOnWin.h
|
||||
2=jhl_defs.h
|
||||
3=user_define.h
|
||||
4=hal.h
|
||||
5=bsr_system.h
|
||||
6=renge\renge.h
|
||||
7=loader.h
|
||||
8=vreg_ctr.h
|
||||
9=vreg_twl.h
|
||||
10=i2c_mcu.h
|
||||
11=i2c_twl.h
|
||||
12=rtc.h
|
||||
13=accero.h
|
||||
14=pm.h
|
||||
15=sw.h
|
||||
16=adc.h
|
||||
17=WDT.h
|
||||
[i2c_twl.h]
|
||||
T=4bf0fdc7
|
||||
T=4bf4e29e
|
||||
[accero.h]
|
||||
T=4cc020c9
|
||||
T=4ca28964
|
||||
1=jhl_defs.h
|
||||
2=pedometer.h
|
||||
[pedometer.h]
|
||||
T=4cc020c9
|
||||
T=4e409e19
|
||||
[sw.h]
|
||||
T=4cc020c9
|
||||
T=4df2001a
|
||||
1=config.h
|
||||
[adc.h]
|
||||
T=4cc020c9
|
||||
T=4dd5c8b2
|
||||
1=jhl_defs.h
|
||||
[led.h]
|
||||
T=4cc020c9
|
||||
T=4e409e1c
|
||||
[batt_params.h]
|
||||
T=4cc020c9
|
||||
T=4e409e1c
|
||||
1=jhl_defs.h
|
||||
[pool.h]
|
||||
T=4cc020c9
|
||||
T=4c072cf1
|
||||
1=pedometer.h
|
||||
[i2c_twl_defs.h]
|
||||
T=4cc020c9
|
||||
[voltable.h]
|
||||
T=4cc020c9
|
||||
T=4bf0d1e1
|
||||
[renge\renge_task_intval.h]
|
||||
T=4cc020c4
|
||||
T=4d5e55a1
|
||||
1=renge\renge_defs.h
|
||||
[..\..\..\..\Program Files\NEC Electronics Tools\CC78K0R\W2.12\inc78k0r\math.h]
|
||||
[..\..\..\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r\math.h]
|
||||
T=45f12258
|
||||
[self_flash.h]
|
||||
T=4cc020c9
|
||||
[pedo_lpf_coeff.h]
|
||||
T=4cc020c9
|
||||
T=4bf0d1e0
|
||||
[sim\sim_interrupt_decrare.c]
|
||||
T=4e409e19
|
||||
|
BIN
trunk/ベースからの変更.xls
Normal file
BIN
trunk/ベースからの変更.xls
Normal file
Binary file not shown.
Loading…
Reference in New Issue
Block a user