V0.2 9/8,9/15 実装分

(実装)・加速度センサ透過アクセス
(修正)・ADCノイズ
(追加)・ワーキングモデル対応
(修正)・I2C_mの通信中にI2C_2からデータを破壊することがありそうだった
(修正)・電源投入時の残量ICへのセットの順番など
(追加)・TWLからの割り込みを新規I2Cへ通知



git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-05-23%20-%20ctr.7z%20+%20svn_v1.068.zip/ctr/svn/ctr_mcu@5 013db118-44a6-b54f-8bf7-843cb86687b1
This commit is contained in:
fujita_ryohei 2009-09-01 06:47:57 +00:00
parent 0c0ecf9023
commit 5812913f0d
23 changed files with 1003 additions and 875 deletions

View File

@ -41,6 +41,10 @@
#define ACC_BITS_ALL_AXIS_ON 7
#define VREG_BITMASK_ACC_CONF0_HOSU 1
#define VREG_BITMASK_ACC_CONF1_ACQ 3
// ========================================================
u8 hosu_mode = 0;
@ -62,32 +66,23 @@ task_status_immed tsk_cbk_accero(){ //
if( system_status.pwr_state == ON ){
// if( 自動歩数計? )
/*
sequence += 1;
vreg_ctr[VREG_C_ACC_0SEQ + 7 * ( sequence & 0x03 )] = sequence;
dest_adrs = &vreg_ctr[VREG_C_ACC_0XH] + 7 * ( sequence & 0x03 ) + 1;
iic_mcu_read( IIC_SLA_ACCEL, ( ACC_REG_X | 0x80 ), 6, dest_adrs );
*/
iic_mcu_read( IIC_SLA_ACCEL, ( ACC_REG_X | 0x80 ), 6, &vreg_ctr[VREG_C_ACC_XH] );
if(( vreg_ctr[ VREG_C_ACC_CONFIG ] & 0x03 ) == 1 ){
// 加速度センサデータレジスタへの反映
iic_mcu_read( IIC_SLA_ACCEL, ( ACC_REG_X | 0x80 ), 6, &vreg_ctr[VREG_C_ACC_XL] );
if(( vreg_ctr[ VREG_C_ACC_CONFIG ] & VREG_BITMASK_ACC_CONF1_ACQ ) == 1 ){
vreg_ctr[ VREG_C_IRQ1 ] |= REG_BIT_ACC_DAT_RDY;
IRQ0_ast;
IRQ0_ast;
}
}
/*
switch( system_status.pwr_state ){
case OFF:
case ON_TRIG:
case ON:
case SLEEP_TRIG:
case SLEEP:
case OFF_TRIG:
default:
break;
}
*/
// 歩数計 offでなければ、電源off中でも計測
if(( vreg_ctr[ VREG_C_ACC_CONFIG_HOSU ] & VREG_BITMASK_ACC_CONF0_HOSU ) != 0 ){
if(( vreg_ctr[ VREG_C_ACC_CONFIG ] & VREG_BITMASK_ACC_CONF1_ACQ ) == 0x01 ){
// 歩数計アルゴリズム 100Hz版
}else{
// 同 省電力版
}
}
return( ERR_SUCCESS );
}
@ -98,7 +93,8 @@ task_status_immed tsk_cbk_accero(){ //
  
========================================================*/
task_status_immed acc_read(){
vreg_ctr[VREG_C_ACC_R_BUF] = iic_mcu_read_a_byte( IIC_SLA_ACCEL, vreg_ctr[VREG_C_ACC_R_ADRS] );
vreg_ctr[ VREG_C_ACC_W_BUF ] = iic_mcu_read_a_byte( IIC_SLA_ACCEL, vreg_ctr[VREG_C_ACC_R_ADRS] );
// vreg_ctr[ VREG_C_ACC_R_BUF ] = iic_mcu_read_a_byte( IIC_SLA_ACCEL, vreg_ctr[VREG_C_ACC_R_ADRS] );
vreg_ctr[ VREG_C_IRQ1 ] |= REG_BIT_ACC_ACK;
IRQ0_ast;
return( ERR_SUCCESS );
@ -110,7 +106,7 @@ task_status_immed acc_read(){
  
========================================================*/
task_status_immed acc_write(){
vreg_ctr[VREG_C_ACC_R_BUF] = iic_mcu_write_a_byte( IIC_SLA_ACCEL, vreg_ctr[VREG_C_ACC_W_ADRS], vreg_ctr[VREG_C_ACC_W_BUF] );
iic_mcu_write_a_byte( IIC_SLA_ACCEL, vreg_ctr[VREG_C_ACC_W_ADRS], vreg_ctr[VREG_C_ACC_W_BUF] );
vreg_ctr[ VREG_C_IRQ1 ] |= REG_BIT_ACC_ACK;
IRQ0_ast;
return( ERR_SUCCESS );
@ -123,44 +119,35 @@ task_status_immed acc_write(){
todo
========================================================*/
err accero_hosu_start(){
task_status_immed acc_set(){
u8 temp;
u8 err;
u8 str_send_buf[4];
if( system_status.pwr_state == ON ){
temp = iic_mcu_read_a_byte( IIC_SLA_ACCEL, ACC_REG_WHOAMI );
iic_mcu_read_a_byte( IIC_SLA_ACCEL, ACC_REG_WHOAMI );
if( iic_mcu_bus_status == ERR_NOSLAVE ){
// vreg_ctr[ VREG_C_ACC_CONFIG_HOSU ] |= 0x01;
return( ERR_ERR );
return( ERR_SUCCESS ); // とりあえず、タスクは削除しなくてはならない
}
str_send_buf[0] = ( ACC_BITS_PM_NORM << ACC_bP_PM0 | ACC_BITS_DR_100Hz << ACC_bP_DR0 | ACC_BITS_ALL_AXIS_ON ); // cont1
str_send_buf[1] = 0x00; // 泣ける...
str_send_buf[1] = 0x00; // ...。
str_send_buf[2] = 0x02;
str_send_buf[3] = 0x80;
if( (( vreg_ctr[ VREG_C_ACC_CONFIG_HOSU ] & VREG_BITMASK_ACC_CONF0_HOSU ) == 0 )
&& (( vreg_ctr[ VREG_C_ACC_CONFIG ] & VREG_BITMASK_ACC_CONF1_ACQ ) == 0 ) ){
// 完全停止
str_send_buf[0] = ( ACC_BITS_PM_PDN << ACC_bP_PM0 | 0 << ACC_bP_DR0 | ACC_BITS_ALL_AXIS_ON );
}
else
{
if(( vreg_ctr[ VREG_C_ACC_CONFIG ] & VREG_BITMASK_ACC_CONF1_ACQ ) == 0x01 ){
// 100Hz 自動取り込み
str_send_buf[0] = ( ACC_BITS_PM_NORM << ACC_bP_PM0 | ACC_BITS_DR_100Hz << ACC_bP_DR0 | ACC_BITS_ALL_AXIS_ON );
}else{
// 10Hz 自動取り込み(歩数計向け省電力モード)
str_send_buf[0] = ( ACC_BITS_PM_LP10 << ACC_bP_PM0 | ACC_BITS_ALL_AXIS_ON );
}
}
err = iic_mcu_write( IIC_SLA_ACCEL, ( ACC_REG_CTRL1 | 0x80 ), 4, str_send_buf );
// str_send_buf[0] = 0x00;
// err |= iic_mcu_write( IIC_SLA_ACCEL, ACC_REG_CTRL5, 1, str_send_buf );
return( err );
return( ERR_SUCCESS );
}
}
err accero_hosu_stop(){
u8 err;
u8 str_send_buf[4];
str_send_buf[0] = ( ACC_BITS_PM_PDN << ACC_bP_PM0 | 0 << ACC_bP_DR0 | ACC_BITS_ALL_AXIS_ON );
str_send_buf[1] = 0x00; // 泣ける...
str_send_buf[2] = 0x02;
str_send_buf[3] = 0x80;
err = iic_mcu_write( IIC_SLA_ACCEL, ( ACC_REG_CTRL1 | 0x80 ) , 4, str_send_buf );
return( err );
}

View File

@ -6,9 +6,6 @@
task_status_immed tsk_cbk_accero();
err accero_hosu_start();
err accero_hosu_stop();
task_status_immed acc_set();
#endif

View File

@ -38,7 +38,9 @@ task_interval tsk_adc(){
|| ( system_status.pwr_state == SLEEP )){
if( adc_updated ){
// 3D
#if 0
3D depth Vol
// 3D
if( abs( old_3ddepth - vreg_ctr[ VREG_C_3D_DEPTH ] ) >= 4 ){
old_3ddepth = vreg_ctr[ VREG_C_3D_DEPTH ];
vreg_ctr[ VREG_C_IRQ0 ] |= REG_BIT_VR_3D_CHANGE;
@ -51,6 +53,7 @@ task_interval tsk_adc(){
vreg_ctr[ VREG_C_IRQ0 ] |= REG_BIT_VR_SNDVOL_CHANGE;
IRQ0_ast;
}
#endif
// codecに伝える
if( vreg_ctr[ VREG_C_SND_VOL ] != sndvol_codec ){
@ -60,6 +63,7 @@ task_interval tsk_adc(){
u8 temp;
do{
temp = iic_mcu_write_a_byte( IIC_SLA_DCP, 0x08, 0x80 ); // ACR←0x80 揮発モードへ
temp = iic_mcu_write_a_byte( IIC_SLA_DCP, 0, sndvol_codec );
NOP();
}while( temp != ERR_SUCCESS );
@ -76,11 +80,7 @@ task_interval tsk_adc(){
ADPC = 0x06; // ADCポートのセレクト
ADS = ADC_SEL_3D;
NOP();
NOP();
NOP();
NOP();
NOP();
// NOP();
ADCS = 1; // AD開始。 /// ここまでに、1us以上開ける
ADIF = 0;
@ -94,43 +94,63 @@ task_interval tsk_adc(){
/* ========================================================
 minでもMAXでもない値を返す
 
 使
======================================================== */
static u8 getmean3( u8* hist ){
u8 temp;
if( *hist < *( hist+1 ) ){
temp = *hist;
*hist = *(hist+1);
*(hist+1) = temp;
}
if( !( *hist > *(hist+1) )){
return *hist;
}else{
if( *(hist+1) > *(hist+2) ){
return *(hist+1);
}else{
return *(hist+2);
}
}
}
/* ========================================================
 
  
======================================================== */
/*
static u8 average( u8* dat ){
static u8 ind;
hist[i] = ADCRH;
++i &= 0x03;
return( (u8)( (u16)( hist[0] + hist[1] + hist[2] + hist[3] ) /4 ));
}
*/
__interrupt void int_adc(){
static u8 hist_3d_dep[4];
static u8 hist_snd_vol[4];
static u8 hist_bt_temp[4];
u8 temp;
static u8 hist_3d_dep[3];
static u8 hist_snd_vol[3];
static u8 hist_bt_temp[3];
static u8 index;
u8 temp;
EI();
switch( ADS ){
case( ADC_SEL_3D ):
vreg_ctr[ VREG_C_3D_DEPTH ] = ADCRH;
hist_3d_dep[ index ] = ADCRH;
vreg_ctr[ VREG_C_3D_DEPTH ] = getmean3( hist_3d_dep );
break;
case( ADC_SEL_VOL ):
temp = ADCRH;
if( temp > 200 ){
temp = 200;
temp = 200;
}
vreg_ctr[ VREG_C_SND_VOL ] = temp;
hist_snd_vol[ index ] = temp;
vreg_ctr[ VREG_C_SND_VOL ] = getmean3( hist_snd_vol );
break;
case( ADC_SEL_BATT_TEMP ):
raw_adc_temperature = ADCRH;
hist_bt_temp[ index ] = ADCRH;
raw_adc_temperature = getmean3( hist_3d_dep );
renge_task_immed_add( PM_bt_temp_update );
break;
case( ADC_SEL_BATT_DET ):
@ -139,13 +159,14 @@ __interrupt void int_adc(){
}
// if( ADS == ADC_SEL_BATT_DET ){
// もっとまともな書き方がありそうだ
// if( ADS == ADC_SEL_BATT_DET ){
if( ADS != ADC_SEL_BATT_TEMP ){ // 電池判別は電源投入の一回のみ
ADS += 1; // 次のチャンネル
}else{
ADCEN = 0; // 止めてしまう
adc_updated = 1;
index = ( index == 2 )? 0: ( index + 1 );
}
}

View File

@ -4,12 +4,12 @@
#define _debug_
#define MCU_VER_MAJOR 0;
#define MCU_VER_MINOR 1;
#define MCU_VER_MINOR 2;
#define _MODEL_TEG2_
//#define _MODEL_WM0_
//define _MODEL_CTR_
//#define _MODEL_CTR_

View File

@ -3,7 +3,7 @@
.nintendo
'09 Apr
======================================================== */
#include "incs_loader.h"
#include "incs.h"
// u16 tot;
@ -173,6 +173,8 @@ __interrupt void int_iic_ctr(){
static u8 reg_adrs_internal;
static u8 trx_buf;
// EI();
// 自局呼び出しに応答。
// 初期化など
WREL = 1; // ウェイト解除
@ -248,7 +250,11 @@ void IIC_ctr_Init( void ){
IICAPR0 = 0; /* set INTIICA high priority */
IICAPR1 = 0; /* set INTIICA high priority */
#ifdef _MODEL_WM0_
P20 &= ~0x3;
#else
P6 &= ~0x3;
#endif
SVA = IIC_C_SLAVEADDRESS;
IICF = 0x01;
@ -266,7 +272,11 @@ void IIC_ctr_Init( void ){
IICAMK = 0; // 割り込みを許可
IICE = 1;
#ifdef _MODEL_WM0_
PM20 &= ~0x3; /* set clock pin for IICA */
#else
PM6 &= ~0x3; /* set clock pin for IICA */
#endif
}
@ -277,7 +287,3 @@ void IIC_ctr_Stop( void ){
IICAEN = 0;
}

View File

@ -64,7 +64,7 @@ u8 iic_mcu_bus_status; //
======================================================== */
u8 iic_mcu_read_a_byte( u8 SLA, u8 adrs ){
u8 dat;
#ifdef _debug_
iic_mcu_start();
#else
@ -74,11 +74,13 @@ u8 iic_mcu_read_a_byte( u8 SLA, u8 adrs ){
while( iic_mcu_busy ){
NOP();
}
iic_mcu_busy = 1;
iic_mcu_bus_status = ERR_OK;
// スタートコンディションとスレーブの呼び出し、レジスタアドレスの送信
if( iic_mcu_call_slave( SLA ) != 0 ){
iic_mcu_bus_status = ERR_NOSLAVE;
iic_mcu_busy = 0;
return( 0 );
}
@ -100,11 +102,12 @@ u8 iic_mcu_read_a_byte( u8 SLA, u8 adrs ){
while( IICIF10 == 0 ){ // 受信完了待ち
;}
dat = SIO10;
iic_mcu_send_sp();
IICIF10 = 0; // 後を濁さないこと
return( SIO10 );
iic_mcu_busy = 0;
return( dat );
}
@ -143,8 +146,10 @@ err iic_mcu_read( u8 slave, u8 adrs, u8 len, u8* dest ){
}
//*/
iic_mcu_busy = 1;
// スタートコンディションとスレーブの呼び出し、レジスタアドレスの送信
if( iic_mcu_call_slave( slave ) != 0 ){
iic_mcu_busy = 0;
return( ERR_NAK );
}
@ -193,9 +198,17 @@ err iic_mcu_read( u8 slave, u8 adrs, u8 len, u8* dest ){
======================================================== */
err iic_mcu_write_a_byte( u8 SLA, u8 adrs, u8 dat ){
if( iic_mcu_initialized == 0 ){
#ifdef _debug_
iic_mcu_start();
#else
while(1){};
#endif
}
while( iic_mcu_busy ){
NOP();
}
iic_mcu_busy = 1;
#if 0
temp = dat;
return( iic_mcu_write( SLA, adrs, 1, &temp ) );
@ -204,12 +217,13 @@ err iic_mcu_write_a_byte( u8 SLA, u8 adrs, u8 dat ){
// スタートコンディションとスレーブの呼び出し...
IICMK10 = 1;
if( iic_mcu_call_slave( SLA ) != 0 ){
iic_mcu_busy = 0;
return( ERR_NAK );
}
iic_mcu_send_a_byte( adrs );
iic_mcu_send_a_byte( dat );
iic_mcu_send_sp();
iic_mcu_busy = 0;
return( ERR_SUCCESS );
#endif
}
@ -254,14 +268,14 @@ err iic_mcu_write( u8 slave, u8 adrs, u8 len, u8* src ){
}
//*/
iic_mcu_busy = 1;
// スタートコンディションとスレーブの呼び出し...
IICMK10 = 1;
if( iic_mcu_call_slave( slave ) != 0 ){
iic_mcu_busy = 0;
return( ERR_NAK );
}
iic_mcu_busy = 1;
if( !iic_mcu_wo_dma ){
// DMAを使用する通常
@ -319,6 +333,7 @@ __interrupt void int_dma1(){
IIC MCUのバイト送出完了割り込み
======================================================== */
__interrupt void int_iic10(){
EI();
if( iic_mcu_wo_dma ){
// DMA使用せず、転送途中
if( iic_send_wo_dma_len != 0 ){

View File

@ -24,7 +24,7 @@ u8 iic_mcu_read_a_byte( u8 SLA, u8 adrs );
err iic_mcu_write( u8 SLA, u8 adrs, u8 len, u8* src );
err iic_mcu_write_a_byte( u8 SLA, u8 adrs, u8 dat );
// ↓その通信が完了したら解除されます。
#define iic_mcu_set_wo_dma() { while( iic_mcu_busy ){;} iic_mcu_wo_dma = 1; }
void iic2m_bus_reset();

View File

@ -9,7 +9,7 @@
extern u8 vreg_twl[];
#ifdef _MCU_BSR_
#ifdef _MODEL_WM0_
// ワーキングモデルはI2Cが逆
@ -68,22 +68,17 @@ extern u8 vreg_twl[];
#define WTIM WTIM1
#endif
#endif
#ifndef _MCU_BSR_
// ke3の時はダミー関数
void IIC_twl_Stop( void ){}
// __interrupt void int_iic_twl(){}
void IIC_twl_Init( void ){}
void IIC_twl_SlaveReceiveStart(){}
#else
/*============================================================================*/
u8 vreg_adrs;
u8 pre_dat;
@ -110,24 +105,29 @@ u16 tot;
__interrupt void int_iic_twl(){
u8 temp;
u16 tot = 0;
WREL = 1; // ウェイト解除して次のバイトを待つ
// WDT_Restart();
// フラグ1回目 スレーブアドレス,R/W
/* COI != 1 なら、割り込みはいらない
if( COI != 1 ){ // 被呼び出し?
LREL = 1; // 呼ばれたのは他のID
return;
}else{
// ACKE0 = 1; // 自動でackを返すようにする
// WREL = 1; // ウェイト解除して次のバイトを待つ
ACKE0 = 1; // 自動でackを返すようにする
WREL = 1; // ウェイト解除して次のバイトを待つ
}
*/
WREL = 1; // ウェイト解除して次のバイトを待つ
wait_next; // 1バイト受信完了を待つ
// 2回目 R/W レジスタアドレス
temp = IICA;
WREL = 1;
IICAIF = 0;
vreg_adrs = adrs_table_twl_ext2int( IICA );
vreg_adrs = adrs_table_twl_ext2int( temp );
// 3回目
// スタートコンディションか、データ受信完了フラグ待ち
@ -136,11 +136,13 @@ __interrupt void int_iic_twl(){
if( IICAIF == 1 ){
// 受信 //
IICAIF = 0;
WREL = 1;
temp = IICA;
IICA = 0xFF;
// WREL = 1;
// 通常アクセス(ライト) //
LREL = 1;
vreg_twl_write( vreg_adrs, IICA );
LREL = 1; // スタートコンディション待ちへ(連続書き込み未対応のため)
vreg_twl_write( vreg_adrs, temp );
return; // 受信おしまい //
}else if( STD ){
@ -154,7 +156,7 @@ __interrupt void int_iic_twl(){
LREL = 1; // 呼ばれたのは他のIDあれ
return;
}
IICA = pre_dat; // データを送る
IICA = pre_dat; // データを送る。ウェイトも解除される。
wait_next;
// 4回目。(送信データ後の、ACK/NACK後) どうしても発生してしまう。
@ -182,8 +184,11 @@ void IIC_twl_Init( void ){
IICAPR0 = 0; /* set INTIICA high priority */
IICAPR1 = 0; /* set INTIICA high priority */
#ifdef _MODEL_WM0_
P6 &= ~0x3;
#else
P20 &= ~0x3;
#endif
SVA = IIC_T_SLAVEADDRESS;
IICF = 0x01;
@ -201,7 +206,13 @@ void IIC_twl_Init( void ){
IICAMK = 0; // 割り込みを許可
IICE = 1;
#ifdef _MODEL_WM0_
PM6 &= ~0x3; /* set clock pin for IICA */
#else
PM20 &= ~0x3; /* set clock pin for IICA */
#endif
LREL = 1;
}
@ -213,13 +224,4 @@ void IIC_twl_Stop( void ){
}
//****************************************************************************
void IIC_twl_SlaveReceiveStart(){
IICE = 1;
LREL = 1;
return;
}
#endif

View File

@ -24,7 +24,6 @@
#include "i2c_mcu.h"
#include "pm.h"
#include "rtc.h"
#include "magic.h"
// ========================================================
@ -182,7 +181,7 @@ void hdwinit(void){ //
PU0 = 0b00000000; // バッテリ認証後にそれぞれセット
PU1 = 0b00000000;
PU3 = 0b00000000; // 外部でプルアップしないと具合が悪い。CPUがプルアップする
PU4 = 0b00000000;
PU4 = 0b00000000; // 外部でプルアップしてほしいtool0,1)
PU5 = 0b00000011;
PU7 = 0b00011001;
PU12 = 0b00000000;
@ -237,7 +236,7 @@ void hdwinit(void){ //
PR00H = 0b11111111;
PR10H = 0b11111111;
PR01L = 0b11111111;
PR11L = 0b11111111;
PR11L = 0b11111110;
PR01H = 0b11111111;
PR11H = 0b11111111;
PR02L = 0b11111111;

View File

@ -91,10 +91,10 @@ void main_loop( void ){
======================================================== */
static void read_dipsw(){
// ソフトディップスイッチ読み込み
PU4 |= 0x03; // dip sw 0,1
// PU4 |= 0x03; // dip sw 0,1
system_status.dipsw0 = ( DIPSW_0 == 0 )? 0: 1;
system_status.dipsw1 = ( DIPSW_1 == 0 )? 0: 1;
PU4 &= ~0x03;
// PU4 &= ~0x03;
}

View File

@ -20,7 +20,6 @@
// -1.45 ,-3.9}
// ========================================================
static const u8 BT_BT_PARAM_PANA[64] = {
0xEA, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
@ -32,13 +31,16 @@ static const u8 BT_BT_PARAM_PANA[64] = {
0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F };
static const u8 BT_BT_PARAM_PANA_RCOMP_AND_PARAM[3] = { 158, 1, 4 }; // RCOMP, TempCoUp, ---Down;
#define BT_PANA_RCOMP 158
u16 BT_PANA_TEMPCOUP = 1.45*8;
u16 BT_PANA_TEMPCODN = 3.90*8;
// ========================================================
u16 raw_adc_temperature;
u8 starting_rcomp;
u16 temp_co_up;
u16 temp_co_dn;
#define _TEG_
@ -69,12 +71,7 @@ err PM_bt_auth(){
 
======================================================== */
static void BT_set_batt_vend1(){
iic_mcu_write( IIC_SLA_BT_GAUGE,
BT_BT_PARAM_PANA_RCOMP_ADRS,
sizeof( BT_BT_PARAM_PANA_RCOMP_AND_PARAM ),
BT_BT_PARAM_PANA_RCOMP_AND_PARAM
);
u8 dat[2];
iic_mcu_set_wo_dma();
iic_mcu_write( IIC_SLA_BT_GAUGE,
@ -83,7 +80,11 @@ static void BT_set_batt_vend1(){
BT_BT_PARAM_PANA
);
iic_mcu_read( IIC_SLA_BT_GAUGE,
BT_GAUGE_REG_OCV,
2,
dat
);
/*
todo
@ -103,6 +104,13 @@ Send Memory Location (0x0Eh)
Read Data Byte OriginalOCV1
Read Data Byte OriginalOCV2
STOP
*/
iic_mcu_read( IIC_SLA_BT_GAUGE,
BT_GAUGE_REG_OCV,
2,
dat
);
/*
//Write OCV Register
START
Send Slave Address (0x6Ch)
@ -110,6 +118,15 @@ Send Memory Location (0x0Eh)
Send Data Byte (0xh)
Send Data Byte (0xh)
STOP
*/
/*
iic_mcu_write( IIC_SLA_BT_GAUGE,
BT_GAUGE_REG_OCV,
2,
??
);
*/
/*
//Read SOC Register
START
Send Slave Address (0x6Ch)
@ -120,6 +137,13 @@ Send Memory Location (0x04h)
Read Data Byte SOC1
Read Data Byte SOC2
STOP
*/
iic_mcu_read( IIC_SLA_BT_GAUGE,
BT_GAUGE_REG_SOC,
2,
dat
);
/*
//Compare value
//Write OCV Register back to original
START
@ -128,6 +152,13 @@ Send Memory Location (0x0Eh)
Send Data Byte (OriginalOCV1)
Send Data Byte (OriginalOCV2)
STOP
*/
iic_mcu_write( IIC_SLA_BT_GAUGE,
BT_GAUGE_REG_OCV,
2,
dat
);
/*
To lock the model the host software must write 0x00h to memory location 0x3Eh and 0x00h to memory location
0x3Fh.
//Lock Model Access
@ -137,9 +168,18 @@ Send Memory Location (0x3Eh)
Send Data Byte (0x00h)
Send Data Byte (0x00h)
STOP
*/
dat[0] = dat[1] = 0;
iic_mcu_write( IIC_SLA_BT_GAUGE,
BT_GAUGE_REG_LOCK,
2,
dat
);
starting_rcomp = BT_PANA_RCOMP;
temp_co_up = BT_PANA_TEMPCOUP;
temp_co_dn = BT_PANA_TEMPCODN;
return;
}
@ -150,7 +190,7 @@ STOP
======================================================== */
err PM_reset(){
iic_mcu_start();
iic_mcu_start();
return( iic_mcu_write_a_byte( IIC_SLA_PMIC, PM_REG_ADRS_CONT, 0x00 ) );
}
@ -177,22 +217,20 @@ void PM_init(){
2,
BT_GAUGE_QUICK_START[0] );
BT_TEMP_P = 1; // 電池温度監視スタート
// 電池固有パラメータの書き込み
// 電池固有パラメータの書き込み下準備
iic_mcu_write( IIC_SLA_BT_GAUGE,
BT_GAUGE_UNLOCK_ADRS,
sizeof( BT_GAUGE_UNLOCK_KEY ),
BT_GAUGE_UNLOCK_KEY );
// 電池メーカーのセット
// 電池メーカーの判別とセット
BT_DET_P = 1;
temp = (u8)( get_adc( ADC_SEL_BATT_DET ) >> 6 );
BT_DET_P = 0;
switch( temp ){
// case( BT_VENDER_PANA ):
default:
@ -201,19 +239,16 @@ void PM_init(){
}
// 電池温度測定
BT_TEMP_P = 1; // 電池温度監視スタート
raw_adc_temperature = get_adc( ADC_SEL_BATT_TEMP ); // 温度のtemp。
PM_bt_temp_update();
renge_task_immed_add( PM_bt_temp_update );
// PMIC バージョン読み出し
temp = iic_mcu_read_a_byte( IIC_SLA_PMIC, PM_REG_ADRS_VER );
// vreg_ctr[ VREG_C_PM_INFO ] = temp;
/*
PMICのセット
 LCD DACの値のセット
LCD DACの値のセット
*/
}
@ -228,9 +263,10 @@ void PM_init(){
ICにセット
======================================================== */
err PM_bt_temp_update(){
static u8 temp_threash_hi, temp_threash_lo;
u8 temp[2];
task_status_immed PM_bt_temp_update(){
u16 newrcomp;
static u8 temp_old = 0;
static u8 count = 0; // たまにしか書きに行かない
/*
- 10kΩ分圧点の時
@ -238,9 +274,18 @@ err PM_bt_temp_update(){
T[] = 81.48 - 111.97 x ratio
TDK T = 81.406 - 111.81 x ratio
*/
vreg_ctr[ VREG_C_BT_TEMP ] = (u8)( (s16)(( 163 - ( 224 * ( raw_adc_temperature )) ) / 2 ) >> 8 );
vreg_ctr[ VREG_C_BT_TEMP ] = ( 163 - ( 224 * ( raw_adc_temperature )) ) / 2;
// 時々/大きく変化があったら書きにゆく
if(( abs(vreg_ctr[ VREG_C_BT_TEMP ] - temp_old ) > 3 )
|| ( count == 0 )){
count += 1;
if( (s8)vreg_ctr[ VREG_C_BT_TEMP ] > 20 ){
newrcomp = -(( (s16)vreg_ctr[ VREG_C_BT_TEMP ] - 20 ) * temp_co_up );
}else{
newrcomp = -(( (s16)vreg_ctr[ VREG_C_BT_TEMP ] - 20 ) * temp_co_dn );
}
newrcomp += starting_rcomp;
/*
If Temperature > 20 Then
NewRCOMP = StartingRCOMP + ((Temperature - 20) * TempCoUp)
@ -250,9 +295,10 @@ Else
NewRCOMP = StartingRCOMP
End If
*/
// 変化が少なかったら書きに行かない
// todo
return( iic_mcu_write( IIC_SLA_BT_GAUGE, BT_BT_PARAM_PANA_RCOMP_ADRS, 2, temp ) );
return( iic_mcu_write( IIC_SLA_BT_GAUGE, BT_BT_PARAM_PANA_RCOMP_ADRS, 2, newrcomp ) );
}
return( ERR_SUCCESS );
}

View File

@ -12,7 +12,9 @@ enum BT_GAUGE_REG_ADRS{
BT_GAUGE_REG_SOC = 0x04,
BT_GAUGE_REG_MODE = 0x06,
BT_GAUGE_REG_VERSION = 0x08,
BT_GAUGE_REG_OCV = 0x0E,
BT_GAUGE_REG_RCOMP = 0xC0,
BT_GAUGE_REG_LOCK = 0x3E,
BT_GAUGE_REG_COMMAND = 0xFE
};
@ -57,7 +59,7 @@ err PM_sys_pow_on();
err PM_sys_pow_off();
err PM_LCD_on();
err PM_bt_auth();
err PM_bt_temp_update();
task_status_immed PM_bt_temp_update();
void PM_init();
err PM_reset();

View File

@ -73,31 +73,27 @@ task_interval tsk_debug(){
// LED_WIFI_2 ^= 1;
}
/*
temp = iic_mcu_read_a_byte( IIC_SLA_8LEDS, IIC_8LEDS_REG_DO );
count += 1;
iic_mcu_write_a_byte( IIC_SLA_8LEDS, IIC_8LEDS_REG_DO, count );
// iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 3, count );
iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 3, count );
return 0;
*/
return 255;
}
task_interval tsk_debug2(){
volatile static u8 i;
i ++;
iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 0, i );
iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 1, i + 0x08 );
iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 2, i + 0x20 );
iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 3, i + 0x80 );
/*
iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 0, vreg_ctr[ VREG_C_ACC_0ZH ] );
iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 1, vreg_ctr[ VREG_C_VOL ] );
iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 2, vreg_ctr[ VREG_C_3D_DEPTH ] );
*/
return 255;
if(( system_status.pwr_state != OFF )
&& ( system_status.pwr_state != ON_TRIG )){
iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 3, vreg_ctr[ VREG_C_IRQ0 ] );
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, vreg_ctr[ VREG_C_SND_VOL ] );
// iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 2, vreg_ctr[ VREG_C_3D_DEPTH ] );
iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 0, vreg_ctr[ VREG_C_ACC_ZH ] );
}
return( 50/2 );
}
@ -170,6 +166,7 @@ task_interval tsk_soft_int(){
/* ========================================================
COMMANDƒŒƒWƒXƒ^ÖÌ<EFBFBD>«<EFBFBD>žÝ
  0
======================================================== */
task_status_immed do_command0(){
@ -198,11 +195,19 @@ task_status_immed do_command0(){
/* ========================================================
TEG2ĹÍłµ<EFBFBD>BŚăĹŽŔ
 TWLアプリへの割り込み
  0
======================================================== */
task_status_immed do_command1(){
static u8 state = 0;
return( ERR_FINISED );
vreg_twl[ REG_TWL_ADRS_IRQ ] = (( vreg_ctr[ VREG_C_COMMAND1 ] & 0x01 ) != 0 )? 0x80: 0x00; //pwsw_det
vreg_twl[ REG_TWL_ADRS_IRQ ] |= (( vreg_ctr[ VREG_C_COMMAND1 ] & 0x02 ) != 0 )? 0x01: 0x00; //reset_det
vreg_twl[ REG_TWL_ADRS_IRQ ] = (( vreg_ctr[ VREG_C_COMMAND1 ] & 0x01 ) != 0 )? 0x80: 0x00; //pwsw_det
vreg_twl[ REG_TWL_ADRS_IRQ ] |= (( vreg_ctr[ VREG_C_COMMAND1 ] & 0x02 ) != 0 )? 0x01: 0x00; //reset_det
vreg_twl[ REG_TWL_ADRS_IRQ ] |= (( vreg_ctr[ VREG_C_COMMAND1 ] & 0x04 ) != 0 )? 0x02: 0x00; //off_det
vreg_twl[ REG_TWL_ADRS_IRQ ] |= (( vreg_ctr[ VREG_C_COMMAND1 ] & 0x08 ) != 0 )? 0x20: 0x00; //batt_low
vreg_twl[ REG_TWL_ADRS_IRQ ] |= (( vreg_ctr[ VREG_C_COMMAND1 ] & 0x10 ) != 0 )? 0x10: 0x00; //batt_empty
return( ERR_FINISED );
}

View File

@ -101,8 +101,8 @@ task_interval tsk_sys(){
}
iic_mcu_write_a_byte( IIC_SLA_8LEDS, IIC_8LEDS_REG_DIR, 0x00 );
iic_mcu_write_a_byte( IIC_SLA_8LEDS, IIC_8LEDS_REG_DO, 0x00 );
// iic_mcu_write_a_byte( IIC_SLA_8LEDS, IIC_8LEDS_REG_DIR, 0x00 );
// iic_mcu_write_a_byte( IIC_SLA_8LEDS, IIC_8LEDS_REG_DO, 0x00 );
{
PU7 = 0b00011101; // 4:SW_WIFI 3:SW_PWSW 2:PM_IRQ 0:PM_EXTDC
@ -123,17 +123,18 @@ task_interval tsk_sys(){
MK2L= INT_MSK2L_RSV;
system_status.pwr_state = ON;
iic_mcu_write_a_byte( IIC_SLA_8LEDS, IIC_8LEDS_REG_DO, 0x00 );
#ifdef _PMIC_TWL_
{
u8 temp;
do{
// do{
temp = iic_mcu_write_a_byte( IIC_SLA_DCP, 0x08, 0x80 ); // ACR←0x80 揮発モードへ
NOP();
}while( temp != ERR_SUCCESS );
// }while( temp != ERR_SUCCESS );
}
#endif
accero_hosu_start();
vreg_ctr[ VREG_C_ACC_CONFIG_HOSU ] = 0x01;
renge_task_immed_add( acc_set );
break;
@ -166,10 +167,8 @@ task_interval tsk_sys(){
// pullup_off();
{
// PU5 = 0b00000011; // PM_CHG,PM_CHGERR
// PU7 = 0b00011001; // SW_WiFi,PWSWI,PM_EXTTDC
PU5 = 0b00000000;
PU7 = 0b00001001; // PWSWI,PM_EXTDC
PU5 = 0b00000011; // PM_CHG,PM_CHGERR
PU7 = 0b00011001; // SW_WiFi,PWSWI,PM_EXTTDC
}
// KRM = ( KR_SW_POW | KR_SW_WIFI ); // Mask ではなく、Modeなのだそうだ。紛らわしい

View File

@ -13,11 +13,13 @@
#define _debug_
#ifdef _debug_
// 8ドットのLED
#define IIC_SLA_8LEDS 0x42
#define IIC_8LEDS_REG_DO 1
#define IIC_8LEDS_REG_DI 2
#define IIC_8LEDS_REG_DIR 3
// 7セグ 4バイト版
#define IIC_SLA_DBG_MONITOR 0x44
#endif

View File

@ -3,10 +3,11 @@
CTR MCU I2Cレジスタ
====================================================== */
#include "incs_loader.h"
#include "incs.h"
#include "vreg_ctr.h"
#include "rtc.h"
#include "led.h"
#include "accero.h"
@ -24,7 +25,11 @@ u8 vreg_ctr[ VREG_C_ENDMARK_ ];
// 非ゼロの初期値の指定が必要なアドレス
void vreg_ctr_init(){
vreg_ctr[ VREG_C_LED_BRIGHT ] = 0xFF;
#ifdef _MCU_BSR_
vreg_ctr[ VREG_C_MCU_VER_MAJOR ] = MCU_VER_MAJOR + 0x10;
#else
vreg_ctr[ VREG_C_MCU_VER_MAJOR ] = MCU_VER_MAJOR;
#endif
vreg_ctr[ VREG_C_MCU_VER_MINOR ] = MCU_VER_MINOR;
}
@ -37,14 +42,23 @@ void vreg_ctr_init(){
//  存在しないアドレスにアクセスした場合、何もしません。
void vreg_ctr_write( u8 adrs, u8 data ){
switch( adrs ){
case( VREG_C_IRQ_MASK0 ):
case( VREG_C_IRQ_MASK1 ):
vreg_ctr[ adrs ] = data;
break;
case( VREG_C_COMMAND0 ):
vreg_ctr[ adrs ] = data;
renge_task_immed_add( do_command0 );
if( data != 0 ){
renge_task_immed_add( do_command0 );
}
break;
case( VREG_C_COMMAND1 ):
vreg_ctr[ adrs ] = data;
renge_task_immed_add( do_command1 );
if( data != 0 ){
renge_task_immed_add( do_command1 );
}
break;
case( VREG_C_LED_BRIGHT ):
@ -66,9 +80,6 @@ void vreg_ctr_write( u8 adrs, u8 data ){
set_LED_cam();
break;
case( VREG_C_RTC_CONFIG ):
vreg_ctr[ adrs ] = data;
break;
case( VREG_C_RTC_COMP ):
vreg_ctr[ adrs ] = data;
SUBCUD = data;
@ -88,14 +99,18 @@ void vreg_ctr_write( u8 adrs, u8 data ){
case( VREG_C_ACC_CONFIG_HOSU ):
case( VREG_C_ACC_CONFIG ):
vreg_ctr[ adrs ] = data;
renge_task_immed_add( acc_set );
break;
case( VREG_C_ACC_R_ADRS ):
vreg_ctr[ adrs ] = data;
renge_task_immed_add( acc_read );
break;
case( VREG_C_ACC_W_ADRS ):
vreg_ctr[ adrs ] = data;
break;
case( VREG_C_ACC_W_BUF ):
vreg_ctr[ adrs ] = data;
renge_task_immed_add( acc_write );

View File

@ -80,9 +80,9 @@ enum VREG_C{ //
VREG_C_STATUS,
VREG_C_RESERVE0,
VREG_C_RESERVE1,
VREG_C_RESERVE2,
VREG_C_IRQ_MASK0,
VREG_C_IRQ_MASK1,
VREG_C_RESERVED0,
VREG_C_BT_REMAIN,
VREG_C_SND_VOL,
@ -110,7 +110,8 @@ enum VREG_C{ //
VREG_C_VCS_B,
VREG_C_BT_TEMP,
VREG_C_BL,
VREG_C_RESERVED1,
VREG_C_RTC_SEC,
VREG_C_RTC_MIN,
@ -119,7 +120,7 @@ enum VREG_C{ //
VREG_C_RTC_DAY,
VREG_C_RTC_MONTH,
VREG_C_RTC_YEAR,
VREG_C_RTC_CONFIG,
VREG_C_RESERVED2,
VREG_C_RTC_ALARM_MIN,
VREG_C_RTC_ALARM_HOUR,
VREG_C_RTC_ALARM_DAY,
@ -130,19 +131,20 @@ enum VREG_C{ //
VREG_C_ACC_CONFIG_HOSU,
VREG_C_ACC_CONFIG,
VREG_C_ACC_R_ADRS,
// VREG_C_ACC_R_BUF,
VREG_C_ACC_W_ADRS,
VREG_C_ACC_BUF,
VREG_C_ACC_W_BUF,
VREG_C_ACC_HOSU_L,
VREG_C_ACC_HOSU_M,
VREG_C_ACC_HOSU_H,
VREG_C_ACC_XH,
VREG_C_ACC_XL,
VREG_C_ACC_YH,
VREG_C_ACC_XH,
VREG_C_ACC_YL,
VREG_C_ACC_ZH,
VREG_C_ACC_YH,
VREG_C_ACC_ZL,
VREG_C_ACC_ZH,
VREG_C_DIAG,

View File

@ -17,8 +17,9 @@ u8 vreg_twl[ REG_TWL_INT_ADRS_TIME_PWSW_THRESHOLD +1 ];
======================================================== */
void vreg_twl_init(){
vreg_twl[ REG_TWL_INT_ADRS_VER_INFO ] = 0x35;
vreg_twl[ REG_TWL_INT_ADRS_POWER_INFO ] = 0x0F;
vreg_twl[ REG_TWL_INT_ADRS_POWER_SAVE ] = 0x07;
// vreg_twl[ REG_TWL_INT_ADRS_BL ] = 0x03;
vreg_twl[ REG_TWL_INT_ADRS_BL ] = 0x03;
vreg_twl[ REG_TWL_INT_ADRS_CODEC_MIC_GAIN ] = 0x01;
vreg_twl[ REG_TWL_INT_ADRS_ADC_CALIB_STATUS ] = 0x01;
vreg_twl[ REG_TWL_INT_ADRS_ADC_CALIB_VALUE ] = 0x60;
@ -30,21 +31,47 @@ void vreg_twl_init(){
// 引数 adrs は内部アドレス
//  存在しないアドレスにアクセスした場合、何もしません。
void vreg_twl_write( u8 adrs, u8 data ){
switch( adrs ){
case( REG_TWL_INT_ADRS_COMMAND ):
case( REG_TWL_INT_ADRS_MODE ):
case( REG_TWL_INT_ADRS_POWER_SAVE ):
case( REG_TWL_INT_ADRS_WIFI ):
case( REG_TWL_INT_ADRS_CAM ):
case( REG_TWL_INT_ADRS_VOL ):
case( REG_TWL_INT_ADRS_BL ):
/*
REG_TWL_INT_ADRS_CODEC_MIC_GAIN, // 0x50,
REG_TWL_INT_ADRS_CODEC_MIC_GAIN_RELOAD,
REG_TWL_INT_ADRS_ADC_CALIB, // 0x60,
REG_TWL_INT_ADRS_ADC_CALIB_VALUE,
REG_TWL_INT_ADRS_POWER_LED,
*/
case( REG_TWL_INT_ADRS_TEMP0 ):
case( REG_TWL_INT_ADRS_TEMP1 ):
case( REG_TWL_INT_ADRS_TEMP2 ):
case( REG_TWL_INT_ADRS_TEMP3 ):
case( REG_TWL_INT_ADRS_TEMP4 ):
case( REG_TWL_INT_ADRS_TEMP5 ):
case( REG_TWL_INT_ADRS_TEMP6 ):
case( REG_TWL_INT_ADRS_TEMP7 ):
// REG_TWL_INT_ADRS_TIME_PWSW_DELAY,
// REG_TWL_INT_ADRS_TIME_PWSW_THRESHOLD
if( REG_TWL_INT_ADRS_TIME_PWSW_THRESHOLD >= adrs ){ // アドレス範囲外
vreg_twl[ adrs ] = data;
break;
}
// TWLレジスタに書かれて何かアクションする
switch( adrs ){
case( REG_TWL_INT_ADRS_COMMAND ):
if(( data & 0x01 ) != 0 ){
vreg_ctr[ VREG_C_IRQ1 ] |= REG_BIT_TWL_RESET_REQ;
IRQ0_ast;
if( data != 0 ){
renge_task_immed_add( command_from_twl );
break;
}
default:
break;
}
return;
}
@ -129,3 +156,16 @@ u8 adrs_table_twl_ext2int( u8 img ){
return( 0xFF );
}
/* ========================================================
TWLからのコマンド
======================================================== */
task_status_immed command_from_twl(){
vreg_ctr[ VREG_C_IRQ1 ] |= ( 1 << REG_BIT_TWL_RESET_REQ );
IRQ0_ast;
return( ERR_FINISED );
}

View File

@ -65,6 +65,7 @@ enum REG_TWL_ADRS_INT{
REG_TWL_INT_ADRS_VOL, // 0x40,
REG_TWL_INT_ADRS_BL,
REG_TWL_INT_ADRS_CODEC_MIC_GAIN, // 0x50,
REG_TWL_INT_ADRS_CODEC_MIC_GAIN_RELOAD,
REG_TWL_INT_ADRS_ADC_CALIB, // 0x60,
REG_TWL_INT_ADRS_ADC_CALIB_STATUS,
REG_TWL_INT_ADRS_ADC_CALIB_VALUE,
@ -82,6 +83,12 @@ enum REG_TWL_ADRS_INT{
};
#define REG_BIT_TWL_RESET_REQ 6
/* ========================================================================= */
extern u8 vreg_twl[ REG_TWL_INT_ADRS_TIME_PWSW_THRESHOLD +1 ];
@ -104,6 +111,6 @@ void vreg_twl_write( u8 adrs, u8 data );
u8 adrs_table_twl_ext2int( u8 img );
u8 vreg_twl_read( u8 phy_adrs );
task_status_immed command_from_twl();
#endif

File diff suppressed because it is too large Load Diff

View File

@ -533,11 +533,6 @@ DefaultMode2=1
DefaultMode3=1
DefaultMode4=1
DefaultMode5=1
[ToolSet]
ToolSetName=(•Ï<E280A2>X)78K0R Software Package V1.10
Tool1=CC78K0R|W2.10
Tool2=RA78K0R|W1.31
Tool3=ID78K0R-QB|V3.60
[Options.CC78K0R 0]
Version=210
Include0=renge,C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r
@ -1022,13 +1017,17 @@ Include14=fsl_user.h
Include15=i2c_ctr.h
Include16=pm.h
Include17=rtc.h
Include18=magic.h
Include19=adc.h
Include20=led.h
Include21=incs.h
Include22=vreg_twl.h
Include23=accero.h
Include24=i2c_twl_defs.h
Include18=adc.h
Include19=led.h
Include20=incs.h
Include21=vreg_twl.h
Include22=accero.h
Include23=i2c_twl_defs.h
Include24=..\..\Program Files\NEC Electronics Tools\CC78K0R\W2.10\inc78k0r\assert.h
Include25=renge\renge_task_intval.h
Include26=i2c_twl.h
Include27=..\..\Program Files\NEC Electronics Tools\CC78K0R\W2.10\inc78k0r\assert.h
[ToolSet]
ToolSetName=(•Ï<E280A2>X)78K0R Software Package V1.10
Tool1=CC78K0R|W2.10
Tool2=RA78K0R|W1.31
Tool3=ID78K0R-QB|V3.60

View File

@ -5,28 +5,32 @@ FrameY=9
FrameCX=1375
FrameCY=1183
OpenFile1=vreg_ctr.h,0,88,88,1332,845,19,158,0,0
OpenFile2=vreg_ctr.c,0,110,110,1354,867,0,158,0,0
OpenFile3=incs_loader.h,0,198,198,1442,955,4,25,1,0
OpenFile4=WDT.h,0,242,242,1486,999,40,4,40,0
OpenFile5=renge\\..\incs.h,0,68,451,1312,1208,0,9,0,0
OpenFile6=magic.c,0,307,203,1275,828,0,16,0,0
OpenFile7=fsl_user.h,0,330,330,1574,1087,53,63,53,0
OpenFile8=renge\renge_task_immediate.h,0,243,127,1487,884,0,1,0,0
OpenFile9=renge\renge_defs.h,0,270,17,1514,774,0,13,0,0
OpenFile10=vreg_twl.c,0,44,44,1288,801,34,30,34,0
OpenFile11=renge\renge.c,0,270,117,1514,874,45,105,45,0
OpenFile12=i2c_twl.c,0,110,110,1354,867,0,7,27,0
OpenFile13=ProjectWindow
OpenFile2=incs_loader.h,0,198,198,1442,955,4,25,1,0
OpenFile3=WDT.h,0,242,242,1486,999,40,4,40,0
OpenFile4=renge\\..\incs.h,0,68,451,1312,1208,0,9,0,0
OpenFile5=magic.c,0,307,203,1275,828,0,15,0,0
OpenFile6=fsl_user.h,0,330,330,1574,1087,53,63,53,0
OpenFile7=renge\renge_task_immediate.h,0,243,127,1487,884,0,1,0,0
OpenFile8=renge\renge_defs.h,0,270,17,1514,774,0,13,0,0
OpenFile9=vreg_twl.c,0,44,44,1288,801,34,30,34,0
OpenFile10=renge\renge.c,0,270,117,1514,874,45,105,45,0
OpenFile11=tasks_sys.c,0,360,104,1068,950,63,126,63,0
OpenFile12=adc.c,0,220,220,1464,977,48,79,0,0
OpenFile13=renge\renge.h,0,352,352,1596,1109,0,7,0,0
OpenFile14=led.c,0,166,57,1410,814,1,241,0,0
OpenFile15=pm.c,0,213,107,1119,634,0,307,0,0
OpenFile16=accero.c,0,132,132,1376,889,2,97,29,0
OpenFile17=tasks.c,0,154,154,1398,911,0,92,0,0
OpenFile18=pm.h,0,154,154,1398,911,15,63,15,0
OpenFile19=loader.c,0,110,110,1121,842,0,174,0,0
OpenFile20=vreg_ctr.c,0,110,110,1354,867,21,7,21,0
OpenFile21=ProjectWindow
PrjPos=0,0,752,0,250
OpenFile14=adc.c,0,591,180,1474,977,48,79,0,0
OpenFile15=pm.c,0,213,107,1119,634,0,530,2,0
OpenFile16=tasks.c,0,154,154,1398,911,22,44,17,0
OpenFile17=tasks_sys.c,0,360,104,1068,950,63,126,63,0
OpenFile18=led.c,0,22,22,1266,779,5,250,5,0
OpenFile19=adc.c,0,220,220,1464,977,15,63,15,0
OpenFile20=renge\renge.h,0,352,352,1596,1109,0,7,0,0
OpenFile21=OutputWindow
OutputPos=0,508,1056,612,1473
OpenFile22=config.h,0,176,176,1420,933,0,13,0,0
OpenFile23=i2c_twl.c,0,264,63,1508,820,0,72,0,0
OpenFile24=i2c_ctr.c,0,198,198,1442,955,2,176,0,0
OpenFile25=OutputWindow
OutputPos=0,283,1077,659,1520
ActivePRJ=yav_mcu_bsr.prj
[ProjectWindow]
ProjectWindowDispType=0

View File

@ -1,7 +1,7 @@
[SdbInfo]
Ver=5
[loader.c]
T=4a8a882b
T=4a9b7c2e
1=incs_loader.h
2=fsl.h
3=fsl_user.h
@ -9,73 +9,74 @@ T=4a8a882b
5=i2c_mcu.h
6=pm.h
7=rtc.h
8=magic.h
[pm.c]
T=4a8a8a2a
T=4a950fea
1=incs_loader.h
2=adc.h
3=led.h
4=pm.h
[i2c_ctr.c]
T=4a890e15
1=incs_loader.h
T=4a9b8168
1=incs.h
[main.c]
T=4a8a882b
T=4a9b2fe1
1=incs.h
2=WDT.h
3=rtc.h
4=pm.h
5=accero.h
[magic.c]
T=4a8aa5e4
T=4a9b83c9
[WDT.c]
T=4a30a4d7
T=4a8bb921
1=incs_loader.h
[i2c_mcu.c]
T=4a890e4a
T=4a95d465
1=incs_loader.h
2=i2c_mcu.h
[i2c_twl.c]
T=4a7d2831
T=4a9b5586
1=incs.h
2=i2c_twl_defs.h
[ini_VECT.c]
T=4a8a91dd
1=config.h
[led.c]
T=4a8aa519
T=4a8bbf14
1=incs.h
2=led.h
[rtc.c]
T=4a545e28
T=4a8bbd28
1=incs.h
[vreg_ctr.c]
T=4a8aa5e1
1=incs_loader.h
T=4a9b83c6
1=incs.h
2=vreg_ctr.h
3=rtc.h
4=led.h
5=accero.h
[vreg_twl.c]
T=4a8a8348
T=4a97560a
1=incs.h
2=jhl_defs.h
3=vreg_twl.h
[tasks.c]
T=4a8a8a42
T=4a953944
1=incs.h
[adc.c]
T=4a8a658a
T=4a963d0a
1=incs_loader.h
2=adc.h
3=pm.h
4=led.h
5=..\..\Program Files\NEC Electronics Tools\CC78K0R\W2.10\inc78k0r\assert.h
[renge\renge.c]
T=4a7d2b02
1=renge\renge_task_intval.h
2=renge\renge_task_immediate.h
3=WDT.h
[tasks_sys.c]
T=4a8a8a58
T=4a953573
1=incs.h
2=i2c_twl.h
3=i2c_ctr.h
@ -84,16 +85,16 @@ T=4a8a8a58
6=pm.h
7=rtc.h
[accero.c]
T=4a8a744b
T=4a94f989
1=incs.h
[self_flash.c]
T=4a892bc1
T=4a8bba9e
1=incs_loader.h
2=fsl.h
3=fsl_user.h
4=i2c_ctr.h
[incs_loader.h]
T=4a7b6de3
T=4a950ca2
1=jhl_defs.h
2=user_define.h
3=bsr_system.h
@ -103,12 +104,12 @@ T=4a7b6de3
7=i2c_mcu.h
8=WDT.h
[jhl_defs.h]
T=4a7d2831
T=4a8bb83c
[user_define.h]
T=4a890dae
T=4a951723
1=config.h
[config.h]
T=4a8a794e
T=4a9b5536
[bsr_system.h]
T=4a023057
1=jhl_defs.h
@ -122,14 +123,14 @@ T=4a5547e1
T=4a8a7575
1=renge\renge_defs.h
[vreg_ctr.h]
T=4a793427
T=4a9b83a8
[loader.h]
T=4a7a31d0
1=jhl_defs.h
[i2c_mcu.h]
T=4a7b93e4
T=4a94fcc6
[WDT.h]
T=499ba30b
T=4a8bb92f
[fsl.h]
T=47ec5c12
[fsl_user.h]
@ -137,18 +138,16 @@ T=4a7bf458
[i2c_ctr.h]
T=4a7c0777
[pm.h]
T=4a8a81a5
T=4a9507ff
[rtc.h]
T=4a545899
[magic.h]
T=4a7a2fee
T=4a8bbf80
[adc.h]
T=4a2e6395
1=jhl_defs.h
[led.h]
T=4a8aa5ff
[incs.h]
T=4a797971
T=4a8bb7e6
1=jhl_defs.h
2=user_define.h
3=bsr_system.h
@ -157,12 +156,14 @@ T=4a797971
6=vreg_twl.h
7=i2c_mcu.h
[vreg_twl.h]
T=49d2cf40
T=4a973fd7
[accero.h]
T=4a4b15e2
T=4a94f6c8
1=jhl_defs.h
[i2c_twl_defs.h]
T=4a7c074e
[..\..\Program Files\NEC Electronics Tools\CC78K0R\W2.10\inc78k0r\assert.h]
T=440fd290
[renge\renge_task_intval.h]
T=4a78118b
1=renge\renge_defs.h