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

View File

@ -38,7 +38,9 @@ task_interval tsk_adc(){
|| ( system_status.pwr_state == SLEEP )){ || ( system_status.pwr_state == SLEEP )){
if( adc_updated ){ if( adc_updated ){
// 3D #if 0
3D depth Vol
// 3D
if( abs( old_3ddepth - vreg_ctr[ VREG_C_3D_DEPTH ] ) >= 4 ){ if( abs( old_3ddepth - vreg_ctr[ VREG_C_3D_DEPTH ] ) >= 4 ){
old_3ddepth = vreg_ctr[ VREG_C_3D_DEPTH ]; old_3ddepth = vreg_ctr[ VREG_C_3D_DEPTH ];
vreg_ctr[ VREG_C_IRQ0 ] |= REG_BIT_VR_3D_CHANGE; 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; vreg_ctr[ VREG_C_IRQ0 ] |= REG_BIT_VR_SNDVOL_CHANGE;
IRQ0_ast; IRQ0_ast;
} }
#endif
// codecに伝える // codecに伝える
if( vreg_ctr[ VREG_C_SND_VOL ] != sndvol_codec ){ if( vreg_ctr[ VREG_C_SND_VOL ] != sndvol_codec ){
@ -60,6 +63,7 @@ task_interval tsk_adc(){
u8 temp; u8 temp;
do{ 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 ); temp = iic_mcu_write_a_byte( IIC_SLA_DCP, 0, sndvol_codec );
NOP(); NOP();
}while( temp != ERR_SUCCESS ); }while( temp != ERR_SUCCESS );
@ -76,11 +80,7 @@ task_interval tsk_adc(){
ADPC = 0x06; // ADCポートのセレクト ADPC = 0x06; // ADCポートのセレクト
ADS = ADC_SEL_3D; ADS = ADC_SEL_3D;
NOP(); // NOP();
NOP();
NOP();
NOP();
NOP();
ADCS = 1; // AD開始。 /// ここまでに、1us以上開ける ADCS = 1; // AD開始。 /// ここまでに、1us以上開ける
ADIF = 0; 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(){ __interrupt void int_adc(){
static u8 hist_3d_dep[4]; static u8 hist_3d_dep[3];
static u8 hist_snd_vol[4]; static u8 hist_snd_vol[3];
static u8 hist_bt_temp[4]; static u8 hist_bt_temp[3];
u8 temp; static u8 index;
u8 temp;
EI();
switch( ADS ){ switch( ADS ){
case( ADC_SEL_3D ): 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; break;
case( ADC_SEL_VOL ): case( ADC_SEL_VOL ):
temp = ADCRH; temp = ADCRH;
if( temp > 200 ){ 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; break;
case( ADC_SEL_BATT_TEMP ): 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; break;
case( ADC_SEL_BATT_DET ): 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 ){ // 電池判別は電源投入の一回のみ if( ADS != ADC_SEL_BATT_TEMP ){ // 電池判別は電源投入の一回のみ
ADS += 1; // 次のチャンネル ADS += 1; // 次のチャンネル
}else{ }else{
ADCEN = 0; // 止めてしまう ADCEN = 0; // 止めてしまう
adc_updated = 1; adc_updated = 1;
index = ( index == 2 )? 0: ( index + 1 );
} }
} }

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -73,31 +73,27 @@ task_interval tsk_debug(){
// LED_WIFI_2 ^= 1; // LED_WIFI_2 ^= 1;
} }
/*
temp = iic_mcu_read_a_byte( IIC_SLA_8LEDS, IIC_8LEDS_REG_DO ); temp = iic_mcu_read_a_byte( IIC_SLA_8LEDS, IIC_8LEDS_REG_DO );
count += 1; count += 1;
iic_mcu_write_a_byte( IIC_SLA_8LEDS, IIC_8LEDS_REG_DO, 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 );
// iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 3, count );
return 0; return 0;
*/
return 255;
} }
task_interval tsk_debug2(){ task_interval tsk_debug2(){
volatile static u8 i; if(( system_status.pwr_state != OFF )
&& ( system_status.pwr_state != ON_TRIG )){
i ++; iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 3, vreg_ctr[ VREG_C_IRQ0 ] );
iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 0, i ); 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, i + 0x08 ); 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, i + 0x20 ); // 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, 3, i + 0x80 ); iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 0, vreg_ctr[ VREG_C_ACC_ZH ] );
/* }
iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 0, vreg_ctr[ VREG_C_ACC_0ZH ] ); return( 50/2 );
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;
} }
@ -170,6 +166,7 @@ task_interval tsk_soft_int(){
/* ======================================================== /* ========================================================
COMMANDƒŒƒWƒXƒ^ÖÌ<EFBFBD>«<EFBFBD>žÝ COMMANDƒŒƒWƒXƒ^ÖÌ<EFBFBD>«<EFBFBD>žÝ
  0
======================================================== */ ======================================================== */
task_status_immed do_command0(){ task_status_immed do_command0(){
@ -198,11 +195,19 @@ task_status_immed do_command0(){
/* ======================================================== /* ========================================================
TEG2ĹÍłµ<EFBFBD>BŚăĹŽŔ  TWLアプリへの割り込み
  0
======================================================== */ ======================================================== */
task_status_immed do_command1(){ 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_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_DO, 0x00 );
{ {
PU7 = 0b00011101; // 4:SW_WIFI 3:SW_PWSW 2:PM_IRQ 0:PM_EXTDC 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; MK2L= INT_MSK2L_RSV;
system_status.pwr_state = ON; system_status.pwr_state = ON;
iic_mcu_write_a_byte( IIC_SLA_8LEDS, IIC_8LEDS_REG_DO, 0x00 );
#ifdef _PMIC_TWL_ #ifdef _PMIC_TWL_
{ {
u8 temp; u8 temp;
do{ // do{
temp = iic_mcu_write_a_byte( IIC_SLA_DCP, 0x08, 0x80 ); // ACR←0x80 揮発モードへ temp = iic_mcu_write_a_byte( IIC_SLA_DCP, 0x08, 0x80 ); // ACR←0x80 揮発モードへ
NOP(); NOP();
}while( temp != ERR_SUCCESS ); // }while( temp != ERR_SUCCESS );
} }
#endif #endif
accero_hosu_start(); vreg_ctr[ VREG_C_ACC_CONFIG_HOSU ] = 0x01;
renge_task_immed_add( acc_set );
break; break;
@ -166,10 +167,8 @@ task_interval tsk_sys(){
// pullup_off(); // pullup_off();
{ {
// PU5 = 0b00000011; // PM_CHG,PM_CHGERR PU5 = 0b00000011; // PM_CHG,PM_CHGERR
// PU7 = 0b00011001; // SW_WiFi,PWSWI,PM_EXTTDC PU7 = 0b00011001; // SW_WiFi,PWSWI,PM_EXTTDC
PU5 = 0b00000000;
PU7 = 0b00001001; // PWSWI,PM_EXTDC
} }
// KRM = ( KR_SW_POW | KR_SW_WIFI ); // Mask ではなく、Modeなのだそうだ。紛らわしい // KRM = ( KR_SW_POW | KR_SW_WIFI ); // Mask ではなく、Modeなのだそうだ。紛らわしい

View File

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

View File

@ -3,10 +3,11 @@
CTR MCU I2Cレジスタ CTR MCU I2Cレジスタ
====================================================== */ ====================================================== */
#include "incs_loader.h" #include "incs.h"
#include "vreg_ctr.h" #include "vreg_ctr.h"
#include "rtc.h" #include "rtc.h"
#include "led.h" #include "led.h"
#include "accero.h"
@ -24,7 +25,11 @@ u8 vreg_ctr[ VREG_C_ENDMARK_ ];
// 非ゼロの初期値の指定が必要なアドレス // 非ゼロの初期値の指定が必要なアドレス
void vreg_ctr_init(){ void vreg_ctr_init(){
vreg_ctr[ VREG_C_LED_BRIGHT ] = 0xFF; 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; vreg_ctr[ VREG_C_MCU_VER_MAJOR ] = MCU_VER_MAJOR;
#endif
vreg_ctr[ VREG_C_MCU_VER_MINOR ] = MCU_VER_MINOR; 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 ){ void vreg_ctr_write( u8 adrs, u8 data ){
switch( adrs ){ switch( adrs ){
case( VREG_C_IRQ_MASK0 ):
case( VREG_C_IRQ_MASK1 ):
vreg_ctr[ adrs ] = data;
break;
case( VREG_C_COMMAND0 ): case( VREG_C_COMMAND0 ):
vreg_ctr[ adrs ] = data; vreg_ctr[ adrs ] = data;
renge_task_immed_add( do_command0 ); if( data != 0 ){
renge_task_immed_add( do_command0 );
}
break; break;
case( VREG_C_COMMAND1 ): case( VREG_C_COMMAND1 ):
vreg_ctr[ adrs ] = data; vreg_ctr[ adrs ] = data;
renge_task_immed_add( do_command1 ); if( data != 0 ){
renge_task_immed_add( do_command1 );
}
break; break;
case( VREG_C_LED_BRIGHT ): case( VREG_C_LED_BRIGHT ):
@ -66,9 +80,6 @@ void vreg_ctr_write( u8 adrs, u8 data ){
set_LED_cam(); set_LED_cam();
break; break;
case( VREG_C_RTC_CONFIG ):
vreg_ctr[ adrs ] = data;
break;
case( VREG_C_RTC_COMP ): case( VREG_C_RTC_COMP ):
vreg_ctr[ adrs ] = data; vreg_ctr[ adrs ] = data;
SUBCUD = 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_HOSU ):
case( VREG_C_ACC_CONFIG ): case( VREG_C_ACC_CONFIG ):
vreg_ctr[ adrs ] = data; vreg_ctr[ adrs ] = data;
renge_task_immed_add( acc_set );
break; break;
case( VREG_C_ACC_R_ADRS ): case( VREG_C_ACC_R_ADRS ):
vreg_ctr[ adrs ] = data; vreg_ctr[ adrs ] = data;
renge_task_immed_add( acc_read ); renge_task_immed_add( acc_read );
break;
case( VREG_C_ACC_W_ADRS ): case( VREG_C_ACC_W_ADRS ):
vreg_ctr[ adrs ] = data;
break;
case( VREG_C_ACC_W_BUF ): case( VREG_C_ACC_W_BUF ):
vreg_ctr[ adrs ] = data; vreg_ctr[ adrs ] = data;
renge_task_immed_add( acc_write ); renge_task_immed_add( acc_write );

View File

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

View File

@ -17,8 +17,9 @@ u8 vreg_twl[ REG_TWL_INT_ADRS_TIME_PWSW_THRESHOLD +1 ];
======================================================== */ ======================================================== */
void vreg_twl_init(){ void vreg_twl_init(){
vreg_twl[ REG_TWL_INT_ADRS_VER_INFO ] = 0x35; 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_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_CODEC_MIC_GAIN ] = 0x01;
vreg_twl[ REG_TWL_INT_ADRS_ADC_CALIB_STATUS ] = 0x01; vreg_twl[ REG_TWL_INT_ADRS_ADC_CALIB_STATUS ] = 0x01;
vreg_twl[ REG_TWL_INT_ADRS_ADC_CALIB_VALUE ] = 0x60; vreg_twl[ REG_TWL_INT_ADRS_ADC_CALIB_VALUE ] = 0x60;
@ -30,21 +31,47 @@ void vreg_twl_init(){
// 引数 adrs は内部アドレス // 引数 adrs は内部アドレス
//  存在しないアドレスにアクセスした場合、何もしません。 //  存在しないアドレスにアクセスした場合、何もしません。
void vreg_twl_write( u8 adrs, u8 data ){ 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; vreg_twl[ adrs ] = data;
break;
} }
// TWLレジスタに書かれて何かアクションする // TWLレジスタに書かれて何かアクションする
switch( adrs ){ switch( adrs ){
case( REG_TWL_INT_ADRS_COMMAND ): case( REG_TWL_INT_ADRS_COMMAND ):
if(( data & 0x01 ) != 0 ){ if( data != 0 ){
vreg_ctr[ VREG_C_IRQ1 ] |= REG_BIT_TWL_RESET_REQ; renge_task_immed_add( command_from_twl );
IRQ0_ast; break;
} }
default:
break; break;
} }
return; return;
} }
@ -129,3 +156,16 @@ u8 adrs_table_twl_ext2int( u8 img ){
return( 0xFF ); 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_VOL, // 0x40,
REG_TWL_INT_ADRS_BL, REG_TWL_INT_ADRS_BL,
REG_TWL_INT_ADRS_CODEC_MIC_GAIN, // 0x50, 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, // 0x60,
REG_TWL_INT_ADRS_ADC_CALIB_STATUS, REG_TWL_INT_ADRS_ADC_CALIB_STATUS,
REG_TWL_INT_ADRS_ADC_CALIB_VALUE, 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 ]; 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 adrs_table_twl_ext2int( u8 img );
u8 vreg_twl_read( u8 phy_adrs ); u8 vreg_twl_read( u8 phy_adrs );
task_status_immed command_from_twl();
#endif #endif

File diff suppressed because it is too large Load Diff

View File

@ -533,11 +533,6 @@ DefaultMode2=1
DefaultMode3=1 DefaultMode3=1
DefaultMode4=1 DefaultMode4=1
DefaultMode5=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] [Options.CC78K0R 0]
Version=210 Version=210
Include0=renge,C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r 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 Include15=i2c_ctr.h
Include16=pm.h Include16=pm.h
Include17=rtc.h Include17=rtc.h
Include18=magic.h Include18=adc.h
Include19=adc.h Include19=led.h
Include20=led.h Include20=incs.h
Include21=incs.h Include21=vreg_twl.h
Include22=vreg_twl.h Include22=accero.h
Include23=accero.h Include23=i2c_twl_defs.h
Include24=i2c_twl_defs.h Include24=..\..\Program Files\NEC Electronics Tools\CC78K0R\W2.10\inc78k0r\assert.h
Include25=renge\renge_task_intval.h Include25=renge\renge_task_intval.h
Include26=i2c_twl.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 FrameCX=1375
FrameCY=1183 FrameCY=1183
OpenFile1=vreg_ctr.h,0,88,88,1332,845,19,158,0,0 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 OpenFile2=incs_loader.h,0,198,198,1442,955,4,25,1,0
OpenFile3=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=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=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=magic.c,0,307,203,1275,828,0,16,0,0 OpenFile6=fsl_user.h,0,330,330,1574,1087,53,63,53,0
OpenFile7=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_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=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=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=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=i2c_twl.c,0,110,110,1354,867,0,7,27,0 OpenFile12=adc.c,0,220,220,1464,977,48,79,0,0
OpenFile13=ProjectWindow 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 PrjPos=0,0,752,0,250
OpenFile14=adc.c,0,591,180,1474,977,48,79,0,0 OpenFile22=config.h,0,176,176,1420,933,0,13,0,0
OpenFile15=pm.c,0,213,107,1119,634,0,530,2,0 OpenFile23=i2c_twl.c,0,264,63,1508,820,0,72,0,0
OpenFile16=tasks.c,0,154,154,1398,911,22,44,17,0 OpenFile24=i2c_ctr.c,0,198,198,1442,955,2,176,0,0
OpenFile17=tasks_sys.c,0,360,104,1068,950,63,126,63,0 OpenFile25=OutputWindow
OpenFile18=led.c,0,22,22,1266,779,5,250,5,0 OutputPos=0,283,1077,659,1520
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
ActivePRJ=yav_mcu_bsr.prj ActivePRJ=yav_mcu_bsr.prj
[ProjectWindow] [ProjectWindow]
ProjectWindowDispType=0 ProjectWindowDispType=0

View File

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