mirror of
https://github.com/rvtr/ctr_mcu.git
synced 2025-10-31 13:51:10 -04:00
・TWLからのバックライト操作通知にミスが有ったので修正
→凡ミスでした ・T3で報告されたバグなど ・電源接続初回に電流が多い件 既知、修正済み。 ・音量スライダが逆 既知、修正済み。 修正版に書き替えてもらうように渡した気が… ・アダプタ刺さっていると電源ボタン押しっぱなしで電源はいったり切れたり 済み ・電源OFFでアダプタを抜くと充電LEDが消えない 済み ・改良 ・電源off時の無駄なプルアップを削除 済み 過去の仕様のまま修正していなかった部分。 ・マイコン単品アップデータ KMC TEG2 コントローラ板(仮)への対応 ・POWER/HOMEスイッチの仕様変更 ・E3向けに ifdef 追加 電源ボタンの押し時間が短い ・PCSミラーのレジスタマップへの反映 ・電波送信フラグをステータスに追加 ・電池残量アプリ向けにレジスタ追加 ・VOLテーブルの更新 ・アダプタ有り時、電源ボタン押しっぱなしで電源on/offを繰り返す件 済み 割と面倒だった。 ・電源on時にCODECの/pcsレジスタ初期化(復活) ・I2Cレジスタ追加、レジスタマップ更新 todo: 突然音が大きくなることがある。 個体に依るようだ? git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-05-23%20-%20ctr.7z%20+%20svn_v1.068.zip/ctr/svn/ctr_mcu@131 013db118-44a6-b54f-8bf7-843cb86687b1
This commit is contained in:
parent
1f16a6ac8f
commit
dfd5adae55
@ -80,9 +80,9 @@ task_status_immed tsk_cbk_accero( )
|
||||
!= ERR_SUCCESS )
|
||||
{
|
||||
// 加速度センサが異常になったので止める
|
||||
vreg_ctr[VREG_C_ACC_CONFIG] &= ~( VREG_BITMASK_ACC_CONF_HOSU | VREG_BITMASK_ACC_CONF_ACQ );
|
||||
// vreg_ctr[ VREG_C_STATUS_1 ] |= REG_BIT_ACCERO_ERR;
|
||||
vreg_ctr[ VREG_C_ACC_CONFIG ] &= ~( VREG_BITMASK_ACC_CONF_HOSU | VREG_BITMASK_ACC_CONF_ACQ );
|
||||
acc_hosu_set();
|
||||
vreg_ctr[ VREG_C_STATUS_1 ] |= REG_BIT_ACCERO_ERR;
|
||||
return ( ERR_SUCCESS ); // タスクの削除は必要
|
||||
}
|
||||
else
|
||||
@ -152,9 +152,7 @@ task_status_immed acc_write( )
|
||||
|
||||
|
||||
/*=========================================================
|
||||
自動歩数カウントモードにセット
|
||||
todo 他のモードだったら止めたり、復帰させたり
|
||||
割り込みルーチンなどでカウント判定が必要
|
||||
加速度センサの設定
|
||||
========================================================*/
|
||||
task_status_immed acc_hosu_set( )
|
||||
{
|
||||
|
||||
32
trunk/adc.c
32
trunk/adc.c
@ -44,14 +44,14 @@ extern void nop8();
|
||||
// max -15db
|
||||
const u8 slider_to_codec[64] =
|
||||
{
|
||||
127, 126, 125, 124, 123, 122, 121, 120,
|
||||
119, 118, 117, 116, 115, 114, 113, 112,
|
||||
111, 110, 109, 109, 108, 107, 106, 105,
|
||||
104, 103, 102, 101, 100, 99, 98, 97,
|
||||
96, 95, 94, 93, 92, 91, 90, 89,
|
||||
88, 87, 86, 85, 84, 83, 82, 81,
|
||||
81, 80, 79, 78, 77, 76, 75, 74,
|
||||
73, 72, 71, 70, 69, 68, 67, 66
|
||||
127, 127, 127, 126, 125, 124, 123, 122,
|
||||
121, 120, 119, 118, 117, 116, 115, 114,
|
||||
113, 112, 111, 110, 109, 108, 107, 106,
|
||||
105, 104, 103, 102, 101, 100, 99, 98,
|
||||
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, 72, 71, 70, 69, 68, 67, 66
|
||||
};
|
||||
|
||||
|
||||
@ -139,15 +139,15 @@ void tsk_adc( )
|
||||
{
|
||||
vol_old = adc_raw_vol;
|
||||
// レジスタ更新
|
||||
vreg_ctr[ VREG_C_SND_VOL ] = ( adc_raw_vol / 4 ); // 64段
|
||||
vreg_twl[ REG_TWL_INT_ADRS_VOL ] = adc_raw_vol / ( 256 / 32 ); // ←adc値でよい
|
||||
vreg_twl[ REG_TWL_INT_ADRS_VOL ] = vol_old / ( 256 / 32 ); // ←adc値でよい
|
||||
vreg_ctr[ VREG_C_SND_VOL ] = ( vol_old / 4 ); // 64段
|
||||
|
||||
// codecに伝える
|
||||
iic_mcu_write_a_byte( IIC_SLA_CODEC, CODEC_REG_VOL, slider_to_codec[ adc_raw_vol / 4 ] );
|
||||
iic_mcu_write_a_byte( IIC_SLA_CODEC, CODEC_REG_VOL, slider_to_codec[ vol_old / 4 ] );
|
||||
#ifndef _MODEL_CTR_
|
||||
iic_mcu_write_a_byte( IIC_SLA_DCP, 0, slider_to_codec[ ( 255 - adc_raw_vol ) / 4 ] ); // todo
|
||||
iic_mcu_write_a_byte( IIC_SLA_DCP, 0, slider_to_codec[ ( 255 - vol_old ) / 4 ] );
|
||||
#endif
|
||||
// set_irq( VREG_C_IRQ0, REG_BIT_VR_SNDVOL_CHANGE ); // 割り込み廃止
|
||||
// set_irq( VREG_C_IRQ0, REG_BIT_VR_SNDVOL_CHANGE ); // 割り込み廃止
|
||||
force_update_vol = 200;
|
||||
}
|
||||
}
|
||||
@ -178,7 +178,7 @@ void tsk_adc( )
|
||||
|
||||
|
||||
ADCEN = 1;
|
||||
ADM = 0b00011011; // セレクトモード、章圧、fCLK/6 ///ここから ↓
|
||||
ADM = 0b00001011; // セレクトモード、昇圧、fCLK/6 ///ここから ↓
|
||||
|
||||
ADPC = 0x06; // ADCポートのセレクト
|
||||
ADS = ADC_SEL_TUNE;
|
||||
@ -225,6 +225,7 @@ static u8 getmean3( u8 * hist )
|
||||
/* ========================================================
|
||||
自前で次のチャンネル
|
||||
一通り終わったら止める
|
||||
// todo 値が飛ぶことがある?
|
||||
======================================================== */
|
||||
__interrupt void int_adc( )
|
||||
{
|
||||
@ -306,8 +307,7 @@ u8 get_adc( u8 ch )
|
||||
ADIF = 0;
|
||||
|
||||
ADCEN = 1;
|
||||
ADCS = 0;
|
||||
ADM = 0b00100011; // セレクトモード、昇圧、fCLK/6 ///ここから↓
|
||||
ADM = 0b00001011; // セレクトモード、昇圧、fCLK/6 ///ここから↓
|
||||
|
||||
ADPC = 0x06; // ADCポートのセレクト
|
||||
ADS = ch;
|
||||
|
||||
@ -19,6 +19,7 @@ enum poweron_reason_
|
||||
NONE = 0,
|
||||
PWSW,
|
||||
RTC_ALARM,
|
||||
EXT_POWER
|
||||
};
|
||||
|
||||
|
||||
|
||||
@ -28,9 +28,9 @@
|
||||
|
||||
// “ÁŽêŽd—l //
|
||||
//#define _SW_HOME_ENABLE_
|
||||
//#define _PARRADIUM_ 廃止
|
||||
//#define _PM_BUG_ // バグ持ち CTR PMIC 廃止
|
||||
|
||||
//#define _PARRADIUM_ 廃止
|
||||
//#define _PM_BUG_ // バグ持ち CTR PMIC 廃止
|
||||
#define _FOR_E3_
|
||||
|
||||
// ---------------------------------- //
|
||||
#ifdef _MODEL_TEG2_
|
||||
|
||||
@ -571,7 +571,9 @@ void iic_mcu_start( )
|
||||
SPS0 = 0x0000; // シリアルユニットのクロック0。(8M/2)/1
|
||||
SMR02 = bSMR0n_FIXEDBIT | bMD0n2; // 簡易I2Cに設定
|
||||
#ifdef _OVERCLOCK_
|
||||
SDR02 = 12 << 9; // ボーレート設定 (8M/2)/1/(x+1)/2
|
||||
// todo
|
||||
// SDR02 = 12 << 9; // ボーレート設定 8M/1/(x+1)/2
|
||||
SDR02 = 13 << 9; // ボーレート設定 (8M/2)/1/(x+1)/2
|
||||
#else
|
||||
SDR02 = 5 << 9; // ボーレート設定 (8M/2)/1/(x+1)/2
|
||||
#endif
|
||||
|
||||
54
trunk/led.c
54
trunk/led.c
@ -79,18 +79,15 @@ uni_info_LED info_LED = {
|
||||
|
||||
|
||||
//調光可能LEDのワークというか
|
||||
/*
|
||||
typedef struct{
|
||||
u8 to;
|
||||
sx16 delta;
|
||||
ux16 now;
|
||||
}st_LED_dim_status;
|
||||
*/
|
||||
st_LED_dim_status LED_dim_status_pow_B;
|
||||
st_LED_dim_status LED_dim_status_3D;
|
||||
st_LED_dim_status LED_dim_status_WiFi;
|
||||
|
||||
|
||||
// 赤LEDの電池残量LEDの点滅パターン
|
||||
uni_led_red_batt_empty led_red_batt_empty;
|
||||
|
||||
|
||||
|
||||
// ========================================================
|
||||
#define led_fade_to( now, goal ) now = fade_to( now, goal )
|
||||
@ -183,7 +180,8 @@ void LED_init( )
|
||||
TOE0 = 0b0000000011101110; // TOxをタイマーモジュールが制御?
|
||||
TS0 = 0b0000000011101111; // 動作開始
|
||||
|
||||
TDR00 = LED_BRIGHT_MAX - 1; // 10bit, 周期
|
||||
// TDR00 = LED_BRIGHT_MAX - 1; // 10bit, 周期
|
||||
TDR00 = LED_BRIGHT_MAX*5 - 1; // 10bit, 周期
|
||||
|
||||
if( system_status.reboot )
|
||||
{
|
||||
@ -283,11 +281,15 @@ void tsk_led_pow( )
|
||||
static void led_pow_normal( )
|
||||
{
|
||||
static u8 state;
|
||||
static u8 red_blink_poi;
|
||||
|
||||
u8 temp;
|
||||
|
||||
if( vreg_ctr[VREG_C_BT_REMAIN] <= BATT_TH_EMPTY )
|
||||
{
|
||||
led_fade_to( LED_duty_pow_blu, 0 );
|
||||
// 赤点滅
|
||||
led_fade_to( LED_duty_pow_blu, 0 );
|
||||
#if 0
|
||||
state++;
|
||||
if( state < 127 )
|
||||
{
|
||||
@ -298,7 +300,33 @@ static void led_pow_normal( )
|
||||
LED_pow_red = 1;
|
||||
}
|
||||
return;
|
||||
#endif
|
||||
led_fade_to( LED_duty_notify_grn, 0 );
|
||||
led_fade_to( LED_duty_notify_blu, 0 );
|
||||
|
||||
state += 1;
|
||||
if( state < 16 )
|
||||
{
|
||||
return;
|
||||
}
|
||||
state = 0;
|
||||
|
||||
if( ( led_red_batt_empty.bits & ( 1 << red_blink_poi )) != 1 )
|
||||
{
|
||||
LED_pow_red = 1;
|
||||
LED_duty_notify_red = 255;
|
||||
}
|
||||
else
|
||||
{
|
||||
LED_pow_red = 0;
|
||||
LED_duty_notify_red = 0;
|
||||
}
|
||||
|
||||
red_blink_poi += 1;
|
||||
if( red_blink_poi >= 32 )
|
||||
{
|
||||
red_blink_poi = 0;
|
||||
}
|
||||
}
|
||||
else if( vreg_ctr[VREG_C_BT_REMAIN] <= BATT_TH_LO )
|
||||
{
|
||||
@ -394,7 +422,7 @@ static void led_pow_hotaru( )
|
||||
/* ========================================================
|
||||
* 割り込みそのものは使いません *
|
||||
LED_Wifi 3
|
||||
todo 直書きの点滅間隔など
|
||||
todo .old からのマージ
|
||||
======================================================== */
|
||||
void tsk_led_wifi( )
|
||||
{
|
||||
@ -487,6 +515,11 @@ void tsk_led_notify( )
|
||||
static u8 frame;
|
||||
static st_LED_dim_status LED_dim_status_info_R, LED_dim_status_info_G, LED_dim_status_info_B;
|
||||
|
||||
if( vreg_ctr[VREG_C_BT_REMAIN] <= BATT_TH_EMPTY )
|
||||
{
|
||||
// 電池切れが優先する
|
||||
return;
|
||||
}
|
||||
|
||||
// 次のフレームに進める?
|
||||
if( time_to_next_frame == 0 )
|
||||
@ -522,6 +555,7 @@ void tsk_led_notify( )
|
||||
led_fade_to2( LED_duty_notify_red, &LED_dim_status_info_R );
|
||||
led_fade_to2( LED_duty_notify_grn, &LED_dim_status_info_G );
|
||||
led_fade_to2( LED_duty_notify_blu, &LED_dim_status_info_B );
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
19
trunk/led.h
19
trunk/led.h
@ -71,10 +71,7 @@ enum LED_MODE_TUNE
|
||||
enum
|
||||
{
|
||||
WIFI_LED_OFF = 0,
|
||||
WIFI_LED_ON,
|
||||
WIFI_LED_TXAUTO,
|
||||
WIFI_LED_PTN0,
|
||||
WIFI_LED_PTN1
|
||||
WIFI_LED_ON
|
||||
};
|
||||
|
||||
|
||||
@ -124,6 +121,20 @@ typedef union{
|
||||
extern uni_info_LED info_LED;
|
||||
|
||||
|
||||
|
||||
typedef struct{
|
||||
u8 dats[4];
|
||||
}st_u8s4;
|
||||
|
||||
typedef union{
|
||||
unsigned long bits;
|
||||
st_u8s4 dats;
|
||||
}uni_led_red_batt_empty;
|
||||
|
||||
|
||||
extern uni_led_red_batt_empty led_red_batt_empty;
|
||||
|
||||
|
||||
/*
|
||||
お知らせLED
|
||||
*/
|
||||
|
||||
@ -218,6 +218,7 @@ static void hosu_increment()
|
||||
// 空白の時間を考慮する。1時間以上放置されたなど。
|
||||
u16 now_hour;
|
||||
u8 now_year;
|
||||
u8 now_min;
|
||||
|
||||
// 時計を止める必要が有るので↓は一気に行って下さい
|
||||
DI();
|
||||
@ -227,6 +228,7 @@ static void hosu_increment()
|
||||
last_hour = HOUR; // 履歴読み出し時に使用。BCDのままでよい
|
||||
last_day = DAY;
|
||||
last_month = MONTH;
|
||||
now_min = MIN;
|
||||
now_hour = get_long_hour();
|
||||
// RWAIT = 0; ↑で行っています
|
||||
// EI(); 〃
|
||||
@ -259,13 +261,26 @@ static void hosu_increment()
|
||||
last_hour_fny = now_hour;
|
||||
|
||||
// 実際にインクリメント
|
||||
if( pool.vreg_c_ext.pedo_log[ p_record ] == HOSU_NODATA )
|
||||
{
|
||||
pool.vreg_c_ext.pedo_log[ p_record ] = 1;
|
||||
}
|
||||
else if( pool.vreg_c_ext.pedo_log[ p_record ] != HOSU_MAX )
|
||||
{
|
||||
pool.vreg_c_ext.pedo_log[ p_record ] += 1;
|
||||
u8 temp;
|
||||
|
||||
temp = p_record;
|
||||
if( now_min < vreg_ctr[ VREG_C_ACC_HOSU_ORIGIN ] )
|
||||
{
|
||||
temp -= 1;
|
||||
if( PEDOMETER_LOG_SIZE >= temp )
|
||||
{
|
||||
temp = PEDOMETER_LOG_SIZE -1;
|
||||
}
|
||||
}
|
||||
if( pool.vreg_c_ext.pedo_log[ temp ] == HOSU_NODATA )
|
||||
{
|
||||
pool.vreg_c_ext.pedo_log[ temp ] = 1;
|
||||
}
|
||||
else if( pool.vreg_c_ext.pedo_log[ temp ] != HOSU_MAX )
|
||||
{
|
||||
pool.vreg_c_ext.pedo_log[ temp ] += 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -287,6 +302,10 @@ void fill_hosu_hist_hours( u16 hours )
|
||||
do
|
||||
{
|
||||
p_record += 1;
|
||||
if( PEDOMETER_LOG_SIZE >= p_record )
|
||||
{
|
||||
p_record = 0;
|
||||
}
|
||||
pool.vreg_c_ext.pedo_log[ p_record ] = 0;
|
||||
hours -= 1;
|
||||
}
|
||||
|
||||
55
trunk/pm.c
55
trunk/pm.c
@ -264,7 +264,10 @@ err PM_sys_pow_on( )
|
||||
|
||||
PM_VDD_normMode();
|
||||
PM_VDD_on( );
|
||||
wait_ms( DELAY_PM_TW_PWUP );
|
||||
// wait_ms( DELAY_PM_TW_PWUP ); // gyro_csを挟むため
|
||||
wait_ms( 10 );
|
||||
GYRO_CS_ENABLE();
|
||||
wait_ms( DELAY_PM_TW_PWUP - 10 );
|
||||
|
||||
PM_VDD50A_on( ); // 液晶電源ではなく、ledとかに使うものです
|
||||
|
||||
@ -288,14 +291,12 @@ err PM_sys_pow_on( )
|
||||
FCRAM_RST_neg;
|
||||
RESET2_neg;
|
||||
|
||||
/*
|
||||
wait_ms( 100 );
|
||||
{
|
||||
// CODEC 不定レジスタ初期化
|
||||
u8 codec_reg_init[3] = { 0,0,0 };
|
||||
iic_mcu_write( IIC_SLA_CODEC, CODEC_REG_PM, 3, codec_reg_init );
|
||||
}
|
||||
*/
|
||||
|
||||
#else
|
||||
// TWL PMIC
|
||||
@ -330,12 +331,11 @@ err PM_sys_pow_on( )
|
||||
FCRAM_RST_ast;
|
||||
return ( ERR_ERR );
|
||||
}
|
||||
/*
|
||||
|
||||
{ // CODEC 不定レジスタ初期化
|
||||
u8 codec_reg_init[3] = { 0,0,0 };
|
||||
iic_mcu_write( IIC_SLA_CODEC, CODEC_REG_PM, 3, codec_reg_init );
|
||||
}
|
||||
*/
|
||||
#endif
|
||||
|
||||
return ( ERR_SUCCESS );
|
||||
@ -346,7 +346,6 @@ err PM_sys_pow_on( )
|
||||
|
||||
/* ========================================================
|
||||
電源OFFシーケンス
|
||||
todo: 電源異常断の場合
|
||||
======================================================== */
|
||||
err PM_sys_pow_off( )
|
||||
{
|
||||
@ -426,7 +425,7 @@ __interrupt void intp6_PM_irq( )
|
||||
}
|
||||
|
||||
|
||||
|
||||
#define _type1_
|
||||
/* ========================================================
|
||||
PMICからの割り込みを受けて、NTR PMIC互換レジスタからリード
|
||||
======================================================== */
|
||||
@ -450,13 +449,19 @@ task_status_immed ntr_pmic_comm( )
|
||||
{
|
||||
if( ( reg_shadow & REG_BIT_TWL_REQ_BL_U ) == 0 ) // 消えた
|
||||
{
|
||||
// irq_work = REG_BIT_TWL_BL_U_OFF;
|
||||
#ifdef _type1_
|
||||
irq_work = REG_BIT_TWL_BL_U_OFF;
|
||||
#else
|
||||
set_irq( VREG_C_IRQ2, REG_BIT_TWL_BL_U_OFF );
|
||||
#endif
|
||||
}
|
||||
else
|
||||
{
|
||||
// irq_work = REG_BIT_TWL_BL_U_ON;
|
||||
#ifdef _type1_
|
||||
irq_work = REG_BIT_TWL_BL_U_ON;
|
||||
#else
|
||||
set_irq( VREG_C_IRQ2, REG_BIT_TWL_BL_U_ON );
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
@ -465,18 +470,26 @@ task_status_immed ntr_pmic_comm( )
|
||||
{
|
||||
if( ( reg_shadow & REG_BIT_TWL_REQ_BL_L ) == 0 ) // 消えた
|
||||
{
|
||||
// irq_work = REG_BIT_TWL_BL_L_OFF;
|
||||
#ifdef _type1_
|
||||
irq_work |= REG_BIT_TWL_BL_L_OFF;
|
||||
#else
|
||||
set_irq( VREG_C_IRQ2, REG_BIT_TWL_BL_L_OFF );
|
||||
#endif
|
||||
}
|
||||
else
|
||||
{
|
||||
// irq_work = REG_BIT_TWL_BL_L_ON;
|
||||
#ifdef _type1_
|
||||
irq_work |= REG_BIT_TWL_BL_L_ON;
|
||||
#else
|
||||
set_irq( VREG_C_IRQ2, REG_BIT_TWL_BL_L_ON );
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
#if 0
|
||||
irq_work &= ~VREG_C_IRQ_MASK2;
|
||||
vreg_ctr[ VREG_C_STATUS_1 ] = ( vreg_ctr[ VREG_C_STATUS_1 ] & ~0x0C ) | ( reg_shadow & 0x0C ); // TWLバックライト情報のミラー
|
||||
|
||||
#ifdef _type1_
|
||||
irq_work &= ~vreg_ctr[ VREG_C_IRQ_MASK2 ];
|
||||
// set_irq 相当品
|
||||
if( irq_work != 0 )
|
||||
{
|
||||
@ -620,6 +633,8 @@ void tsk_batt( )
|
||||
}
|
||||
}
|
||||
|
||||
#if 0
|
||||
// todo
|
||||
|
||||
// 充電 ///////////////////////////
|
||||
// 温度付きヒステリシス
|
||||
@ -651,6 +666,16 @@ void tsk_batt( )
|
||||
#endif
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
// 充電 ///////////////////////////
|
||||
# ifndef _MODEL_WM0_
|
||||
// CHG_ENABLEピンは /WL_RST に配線されているので
|
||||
BT_CHG_ENABLE(); // 温度範囲OKで充電再開
|
||||
# endif
|
||||
|
||||
#endif
|
||||
|
||||
// 充電 //
|
||||
// →割り込み。miscの中でよろしくやってくれている。
|
||||
set_bit( !BT_CHG_n, vreg_ctr[VREG_C_STATUS], REG_BIT_BATT_CHARGE );
|
||||
@ -741,6 +766,7 @@ void BT_init( )
|
||||
dat_16._u16 = swap_endian_16( 0x4A57 ); // unlock key
|
||||
if( iic_mcu_write( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_LOCK, 2, &dat_16 ) == ERR_SUCCESS )
|
||||
{
|
||||
vreg_ctr[ VREG_C_STATUS_1 ] &= ~REG_BIT_GASGAUGE_ERR;
|
||||
// 残量IC有り //
|
||||
if( battery_manufacturer < BT_VENDER_OPEN )
|
||||
{
|
||||
@ -896,6 +922,9 @@ task_status_immed BT_temp_update( )
|
||||
newrcomp += rcomp;
|
||||
|
||||
newrcomp = swap_endian_16( (u16)newrcomp );
|
||||
// todo
|
||||
newrcomp = 0x9700;
|
||||
|
||||
DBG_P_n = 0;
|
||||
|
||||
if( iic_mcu_write
|
||||
|
||||
@ -174,7 +174,7 @@ void firm_update( )
|
||||
}
|
||||
// 1ブロック書き込み完了。内部ベリファイを行う
|
||||
if( FSL_IVerify( target_block ) != FSL_OK ){
|
||||
// todo 再度消去→書き込み ベリファイを繰り返すだけじゃダメでした...
|
||||
// 再度消去→書き込み ベリファイを繰り返すだけじゃダメでした... todo…?
|
||||
// リストア
|
||||
firm_duplicate( UPDATE_BLOCK_LAST +1,
|
||||
FIRM_TOP );
|
||||
@ -268,9 +268,7 @@ static void FSL_Open( void )
|
||||
MK2H = FSL_MK2H_MASK; /* } */
|
||||
#endif
|
||||
|
||||
// 何か前準備?
|
||||
// todo DMAを止める
|
||||
while( DST1 ){;}
|
||||
while( DST1 ){;} // DMA停止
|
||||
DEN1 = 0;
|
||||
|
||||
MK0 = 0xFFFF;
|
||||
@ -365,7 +363,7 @@ static err firm_duplicate( u8 block_src,
|
||||
|
||||
// 1ブロック書き込み完了。内部電圧チェックを行う
|
||||
while( FSL_IVerify( target_block ) != FSL_OK ){
|
||||
// todo
|
||||
// todo 失敗時?
|
||||
;
|
||||
}
|
||||
}
|
||||
|
||||
123
trunk/sw.c
123
trunk/sw.c
@ -14,19 +14,24 @@
|
||||
|
||||
|
||||
//=========================================================
|
||||
#define INTERVAL_TSK_SW 16
|
||||
#define CLICK_THRESHOLD 1
|
||||
#define HOLD_THREASHOLD (u8)( 600 / INTERVAL_TSK_SW )
|
||||
#define INTERVAL_TSK_SW 8
|
||||
#define CLICK_THRESHOLD 2
|
||||
|
||||
#ifdef _FOR_E3_
|
||||
#define HOLD_THREASHOLD (u8)( 800 / INTERVAL_TSK_SW )
|
||||
#else
|
||||
#define HOLD_THREASHOLD (u8)( 2000 / INTERVAL_TSK_SW )
|
||||
#endif
|
||||
|
||||
|
||||
//=========================================================
|
||||
u8 SW_pow_count, SW_home_count, SW_wifi_count;
|
||||
bit SW_pow_mask, SW_home_mask, SW_wifi_mask;
|
||||
u8 SW_pow_count;
|
||||
bit SW_pow_mask;
|
||||
|
||||
u8 SW_home_count, SW_wifi_count;
|
||||
|
||||
bit SW_HOME_n;
|
||||
|
||||
|
||||
//=========================================================
|
||||
// 押した時間を数える。押しっぱなしでも0に戻らない
|
||||
// maskが非0の時は、一度離すまで無視する
|
||||
@ -46,6 +51,24 @@ bit SW_HOME_n;
|
||||
}
|
||||
|
||||
|
||||
#define chk_clicked( button, count, irq_bit_name ) \
|
||||
if( !button ) \
|
||||
{ \
|
||||
if( count <= CLICK_THRESHOLD ) \
|
||||
{ \
|
||||
count += 1; \
|
||||
} \
|
||||
if( count == CLICK_THRESHOLD ) \
|
||||
{ \
|
||||
set_irq( VREG_C_IRQ0, irq_bit_name ); \
|
||||
} \
|
||||
} \
|
||||
else \
|
||||
{ \
|
||||
count = 0; \
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* ========================================================
|
||||
スイッチの監視
|
||||
@ -53,23 +76,13 @@ bit SW_HOME_n;
|
||||
======================================================== */
|
||||
void tsk_sw( )
|
||||
{
|
||||
static u8 cnt_force_off = 0;
|
||||
static u16 cnt_force_off = 0;
|
||||
static u8 task_interval = 0;
|
||||
|
||||
switch ( system_status.pwr_state )
|
||||
{
|
||||
case ( OFF_TRIG ):
|
||||
SW_pow_count = 0;
|
||||
SW_wifi_count = 0;
|
||||
SW_home_count = 0;
|
||||
cnt_force_off = 0;
|
||||
break;
|
||||
|
||||
case ( ON_TRIG ):
|
||||
// 電源投入
|
||||
SW_pow_mask = 1;
|
||||
SW_home_mask = 1;
|
||||
SW_wifi_mask = 1;
|
||||
cnt_force_off = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
@ -82,7 +95,6 @@ void tsk_sw( )
|
||||
task_interval = (u8)( INTERVAL_TSK_SW / SYS_INTERVAL_TICK );
|
||||
}
|
||||
|
||||
|
||||
switch ( system_status.pwr_state )
|
||||
{
|
||||
case ( ON ):
|
||||
@ -90,9 +102,10 @@ void tsk_sw( )
|
||||
case ( BT_CHARGE ):
|
||||
case ( OFF ):
|
||||
// 電源スイッチの監視 //
|
||||
count_sw_n( SW_POW_n, SW_pow_count, SW_pow_mask ); // ボタン押し時間のカウント
|
||||
if( SW_POW_n )
|
||||
{
|
||||
if( ( CLICK_THRESHOLD < SW_pow_count ) && ( SW_pow_count <= HOLD_THREASHOLD ) )
|
||||
if( SW_pow_count == CLICK_THRESHOLD )
|
||||
{
|
||||
#ifdef _SW_HOME_ENABLE_
|
||||
set_irq( VREG_C_IRQ0, REG_BIT_SW_POW_CLICK );
|
||||
@ -108,81 +121,45 @@ void tsk_sw( )
|
||||
#else
|
||||
set_irq( VREG_C_IRQ0, REG_BIT_SW_HOME_HOLD );
|
||||
#endif
|
||||
}
|
||||
else if( SW_pow_count == ( HOLD_THREASHOLD * 4 ) )
|
||||
{// 長押しによる強制OFF
|
||||
vreg_ctr[ VREG_C_LED_POW ] = LED_POW_ILM_ONLY_RED;
|
||||
system_status.pwr_state = OFF_TRIG;
|
||||
renge_task_interval_run_force = 1;
|
||||
cnt_force_off = 1;
|
||||
}
|
||||
|
||||
// 電源OFF割り込みを入れたが…
|
||||
if( ( vreg_ctr[VREG_C_IRQ0] & REG_BIT_SW_POW_HOLD ) != 0 )
|
||||
if( cnt_force_off != 0 )
|
||||
{
|
||||
cnt_force_off += 1;
|
||||
if( cnt_force_off >= 13 )
|
||||
{ // …返事がない。強制的に切る。
|
||||
#ifdef _FOR_E3_
|
||||
if( ++cnt_force_off == ( 200 / INTERVAL_TSK_SW ) )
|
||||
#else
|
||||
if( ++cnt_force_off == ( 4000 / INTERVAL_TSK_SW ) )
|
||||
#endif
|
||||
{
|
||||
// タイムアウトによる強制OFF
|
||||
cnt_force_off = 0;
|
||||
vreg_ctr[ VREG_C_LED_POW ] = LED_POW_ILM_ONLY_RED;
|
||||
system_status.pwr_state = OFF_TRIG;
|
||||
renge_task_interval_run_force = 1;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
cnt_force_off = 0;
|
||||
}
|
||||
|
||||
#ifdef _SW_HOME_ENABLE_
|
||||
// HOME スイッチ //
|
||||
switch( system_status.model )
|
||||
{
|
||||
#ifdef _MODEL_CTR_
|
||||
# ifdef _MODEL_CTR_
|
||||
case( MODEL_JIKKI ):
|
||||
SW_HOME_n = SW_HOME_n_JIKKI;
|
||||
break;
|
||||
#endif
|
||||
# endif
|
||||
case( MODEL_TS_BOARD ):
|
||||
case( MODEL_SHIROBAKO ):
|
||||
SW_HOME_n = SW_HOME_n_TSBOARD;
|
||||
break;
|
||||
default:
|
||||
SW_HOME_n = 1;
|
||||
}
|
||||
|
||||
if( SW_HOME_n )
|
||||
{
|
||||
if( ( CLICK_THRESHOLD < SW_home_count ) && ( SW_home_count <= HOLD_THREASHOLD ) )
|
||||
{
|
||||
set_irq( VREG_C_IRQ0, REG_BIT_SW_HOME_CLICK );
|
||||
}
|
||||
}
|
||||
else if( SW_home_count == HOLD_THREASHOLD )
|
||||
{
|
||||
set_irq( VREG_C_IRQ0, REG_BIT_SW_HOME_HOLD );
|
||||
SW_HOME_n = 1; // 放されてる状態
|
||||
}
|
||||
chk_clicked( SW_HOME_n, SW_home_count, REG_BIT_SW_HOME_CLICK );
|
||||
#endif
|
||||
|
||||
// wifi sw //
|
||||
if( SW_wifi_count == CLICK_THRESHOLD )
|
||||
{
|
||||
set_irq( VREG_C_IRQ0, REG_BIT_SW_WIFI_CLICK );
|
||||
}
|
||||
|
||||
break;
|
||||
chk_clicked( SW_WIFI_n, SW_wifi_count, REG_BIT_SW_WIFI_CLICK );
|
||||
}
|
||||
|
||||
// ボタン押し時間のカウント
|
||||
/*
|
||||
if( ( system_status.pwr_state == ON )
|
||||
|| ( system_status.pwr_state == OFF )
|
||||
|| ( system_status.pwr_state == BT_CHARGE ) )
|
||||
*/
|
||||
|
||||
{
|
||||
count_sw_n( SW_POW_n, SW_pow_count, SW_pow_mask );
|
||||
#ifdef _SW_HOME_ENABLE_
|
||||
count_sw_n( SW_HOME_n, SW_home_count, SW_home_mask );
|
||||
#endif
|
||||
count_sw_n( SW_WIFI_n, SW_wifi_count, SW_wifi_mask );
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
#ifndef _sw_
|
||||
#define _sw_
|
||||
|
||||
extern u8 SW_pow_count, SW_home_count, SW_wifi_count;
|
||||
extern bit SW_pow_mask, SW_home_mask, SW_wifi_mask;
|
||||
extern u8 SW_pow_count;
|
||||
extern bit SW_pow_mask;
|
||||
|
||||
#endif
|
||||
|
||||
@ -44,10 +44,16 @@
|
||||
|
||||
|
||||
|
||||
// ========================================================
|
||||
bit twl_ver_read;
|
||||
|
||||
|
||||
// ========================================================
|
||||
#define INTERVAL_TSK_MISC_STAT 4
|
||||
|
||||
|
||||
|
||||
|
||||
/* ========================================================
|
||||
ステータスレジスタなど
|
||||
======================================================== */
|
||||
@ -140,6 +146,14 @@ void tsk_misc_stat( )
|
||||
NOP();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if( twl_ver_read )
|
||||
{
|
||||
twl_ver_read = 0;
|
||||
set_irq( VREG_C_IRQ2, REG_BIT_TWL_VER_READ );
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
@ -184,14 +198,16 @@ task_status_immed do_command0( )
|
||||
FCRAM_RST_neg;
|
||||
PM_reset_neg();
|
||||
RESET2_neg;
|
||||
/*
|
||||
|
||||
// 起動時以外はリセット不要
|
||||
/*
|
||||
// CODEC 不定レジスタ初期化
|
||||
wait_ms( 100 );
|
||||
{
|
||||
u8 codec_reg_init[3] = { 0,0,0 };
|
||||
iic_mcu_write( IIC_SLA_CODEC, CODEC_REG_PM, 3, codec_reg_init );
|
||||
}
|
||||
*/
|
||||
*/
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -42,7 +42,7 @@ void tsk_sys( )
|
||||
|
||||
switch ( system_status.poweron_reason )
|
||||
{
|
||||
default:
|
||||
case( NONE ):
|
||||
// スイッチで電源on
|
||||
|
||||
if( SW_pow_count != 0 )
|
||||
@ -53,14 +53,14 @@ void tsk_sys( )
|
||||
{
|
||||
timeout += 1;
|
||||
}
|
||||
if( timeout > 127 )
|
||||
if( timeout > 100 )
|
||||
{
|
||||
system_status.pwr_state = OFF_TRIG; // スイッチはノイズだった。寝る。
|
||||
renge_task_interval_run_force = 1;
|
||||
return;
|
||||
}
|
||||
|
||||
if( SW_pow_count < 3 )
|
||||
if( SW_pow_count < 10 )
|
||||
{
|
||||
// もう少しスイッチの様子を見る
|
||||
return;
|
||||
@ -69,10 +69,12 @@ void tsk_sys( )
|
||||
system_status.poweron_reason = PWSW;
|
||||
break;
|
||||
|
||||
case ( RTC_ALARM ):
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
SW_pow_mask = 1;
|
||||
|
||||
timeout = 0;
|
||||
|
||||
BT_DET_P = 1; // チャージに時間が掛かるので先に上げておく
|
||||
@ -120,17 +122,24 @@ void tsk_sys( )
|
||||
{
|
||||
// とりあえず、LED消灯状態で起動させる
|
||||
vreg_ctr[VREG_C_LED_POW] = LED_POW_ILM_OFF;
|
||||
// todo?
|
||||
}
|
||||
system_status.pwr_state = ON_TRIG;
|
||||
// ここまで来ると、電源投入確定
|
||||
// ここまで来ると、電源投入確定 //
|
||||
break;
|
||||
|
||||
case ON_TRIG: //-------------------------------------------------------
|
||||
|
||||
LED_init( );
|
||||
|
||||
PU7 = 0b00011101; // 4:SW_WIFI 3:SW_PWSW 2:PM_IRQ 0:PM_EXTDC_n
|
||||
PU5 = 0b00000010; // 1:PM_CHARGE
|
||||
PU7 = 0b00011101; // 4:SW_WIFI 3:SW_PWSW 2:PM_IRQ 0:PM_EXTDC_n
|
||||
#ifdef _MODEL_CTR_
|
||||
# ifdef _SW_HOME_ENABLE_
|
||||
PU20 = 0b00010000; // SW_HOME
|
||||
# else
|
||||
PU20 = 0b00000000;
|
||||
# endif
|
||||
#endif
|
||||
|
||||
IIC_ctr_Init( );
|
||||
if( ( vreg_ctr[ VREG_C_MCU_STATUS ] & REG_BIT_STATUS_WDT_RESET )
|
||||
@ -235,6 +244,7 @@ void tsk_sys( )
|
||||
IIC_ctr_Stop( );
|
||||
IIC_twl_Stop( );
|
||||
RTC_32k_off();
|
||||
GYRO_CS_DISABLE();
|
||||
|
||||
vreg_ctr[VREG_C_IRQ0] = 0;
|
||||
vreg_ctr[VREG_C_IRQ1] = 0;
|
||||
@ -251,55 +261,43 @@ void tsk_sys( )
|
||||
#ifdef _PMIC_TWL_
|
||||
PM_TEG_LCD_dis( 1 );
|
||||
#endif
|
||||
// IRQ0_deactive;
|
||||
// pullup_off(); ↓
|
||||
{
|
||||
PU5 = 0b00000011; // PM_CHG,PM_CHGERR
|
||||
PU7 = 0b00011001; // SW_WiFi,PWSWI,PM_EXTTDC
|
||||
}
|
||||
|
||||
PM_sys_pow_off( );
|
||||
while( iic_mcu_busy )
|
||||
{;
|
||||
}
|
||||
|
||||
KRM = ( KR_SW_POW ); // Mask ではなく、Modeなのだそうだ。紛らわしい
|
||||
// intp20系は後ほど
|
||||
MK0 = ~( INT_MSK0_EXTDC );
|
||||
MK1 = ~( INT_MSK1_KR | INT_MSK1_RTCALARM | INT_MSK1_RTCINTVAL );
|
||||
MK2L = 0b11111111;
|
||||
|
||||
// PU5 そのまま
|
||||
PU7 = 0b00001001; // PWSWI,PM_EXTTDC,( IRQ0_deactive(), PM_IRQ_deactive )
|
||||
PU20 = 0x00; // SW_HOME 停止
|
||||
|
||||
IF0 = 0;
|
||||
IF1 = 0;
|
||||
IF2 = 0;
|
||||
|
||||
PM_sys_pow_off( );
|
||||
|
||||
timeout = 0;
|
||||
|
||||
system_status.pwr_state = BT_CHARGE;
|
||||
SW_pow_mask = 1;
|
||||
SW_pow_count = 0;
|
||||
SW_wifi_count = 0;
|
||||
// no break //
|
||||
|
||||
case BT_CHARGE:
|
||||
system_status.pwr_state = OFF;
|
||||
if( !PM_EXTDC_n )
|
||||
{
|
||||
// アダプタ有り:充電温度監視
|
||||
BT_TEMP_P = 1;
|
||||
|
||||
// 電源on?
|
||||
if( ( SW_pow_count > 3 ) || ( SW_wifi_count > 3 )
|
||||
|| ( system_status.poweron_reason == RTC_ALARM ) )
|
||||
{
|
||||
system_status.pwr_state = OFF; // 若干抵抗有るが...
|
||||
renge_task_interval_run_force = 1;
|
||||
KRMK = 1;
|
||||
return;
|
||||
}
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
// 省電力へ移行
|
||||
LED_CHARGE = 0;
|
||||
BT_TEMP_P = 0;
|
||||
while( RWST )
|
||||
{;}
|
||||
@ -314,23 +312,23 @@ void tsk_sys( )
|
||||
OSMC = 0x00;
|
||||
# endif
|
||||
STOP( );
|
||||
# ifdef _MCU_BSR_
|
||||
OSMC = 0x01;
|
||||
CKC = 0b00001000;
|
||||
# endif
|
||||
|
||||
RTCIMK = 0;
|
||||
// 起きる //
|
||||
|
||||
// 起きる条件は
|
||||
// ・KeyReturn割り込み(電源ボたん)
|
||||
// ・RTCアラーム
|
||||
// ・アダプタ挿抜
|
||||
system_status.pwr_state = OFF; //
|
||||
renge_task_interval_run_force = 1;
|
||||
KRMK = 1;
|
||||
return;
|
||||
|
||||
if( PM_EXTDC_n )
|
||||
{
|
||||
SW_pow_mask = 0;
|
||||
}
|
||||
# ifdef _MCU_BSR_
|
||||
OSMC = 0x01;
|
||||
CKC = 0b00001000;
|
||||
# endif
|
||||
RTCIMK = 0;
|
||||
}
|
||||
return;
|
||||
|
||||
default:
|
||||
while( 1 )
|
||||
|
||||
@ -160,10 +160,8 @@
|
||||
// WiFi
|
||||
#ifndef _TEG_
|
||||
#define WL_TX P20.3 // INTP21
|
||||
#define WL_RX P20.2 // INTP20
|
||||
#else
|
||||
#define WL_TX P20.3 // INTP21
|
||||
#define WL_RX P20.2 // INTP20
|
||||
#endif
|
||||
|
||||
//#define LED_CAM P1.0 // TO02
|
||||
@ -193,10 +191,17 @@
|
||||
#ifdef _MODEL_CTR_
|
||||
// P5.0 に加え、P5.5, P140 P141
|
||||
// P140が出力専用なので...
|
||||
#define I2C_PU_on() { PM5 |= 0x09; P14 |= 0x03; P5 |= 0x09; PM5 &= ~0x09; }
|
||||
#define I2C_PU_off() { PM5 |= 0x09; P14 &= ~0x03; }
|
||||
#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
|
||||
|
||||
#ifdef _MODEL_CTR_
|
||||
#define GYRO_CS_ENABLE() P5.0 = 1
|
||||
#define GYRO_CS_DISABLE() P5.0 = 0
|
||||
#else
|
||||
#define GYRO_CS_ENABLE() ;
|
||||
#define GYRO_CS_DISABLE() ;
|
||||
#endif
|
||||
|
||||
//#define I2C_M_SDA P3.1 // SDA10
|
||||
//#define I2C_M_SCL P3.2 // SCL10
|
||||
@ -247,12 +252,9 @@
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#define DBG_M_n P2.1
|
||||
#define DBG_P_n P2.2
|
||||
|
||||
|
||||
|
||||
#define KR_SW_POW ( 1 << 3 )
|
||||
#define KR_SW_WIFI ( 1 << 4 )
|
||||
|
||||
|
||||
@ -274,6 +274,10 @@ void vreg_ctr_write( u8 adrs, u8 data )
|
||||
}
|
||||
break;
|
||||
|
||||
case ( VREG_C_ACC_HOSU_ORIGIN ):
|
||||
vreg_ctr[adrs] = data;
|
||||
break;
|
||||
|
||||
case ( VREG_C_FREE_ADRS ):
|
||||
vreg_ctr[adrs] = data;
|
||||
break;
|
||||
@ -300,6 +304,19 @@ void vreg_ctr_write( u8 adrs, u8 data )
|
||||
break;
|
||||
}
|
||||
vreg_ctr[adrs] = data;
|
||||
break;
|
||||
|
||||
case( VREG_C_BATT_EMPTY_PATTERN ):
|
||||
{
|
||||
#ifdef _MODEL_CTR_NOTIFY_FULLCOLOR_
|
||||
if( iic_burst_state < 4 )
|
||||
{
|
||||
led_red_batt_empty.dats.dats[ iic_burst_state ] = data;
|
||||
iic_burst_state += 1;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
break;
|
||||
}
|
||||
return;
|
||||
}
|
||||
@ -368,7 +385,6 @@ u8 vreg_ctr_read( u8 adrs )
|
||||
// I2C仮想レジスタから読まれて何かするレジスタ
|
||||
void vreg_ctr_after_read( u8 adrs )
|
||||
{
|
||||
|
||||
// 割り込みフラグはリードでクリア
|
||||
switch( adrs )
|
||||
{
|
||||
|
||||
@ -9,7 +9,7 @@
|
||||
|
||||
|
||||
// VREG_C_MCU_STATUS
|
||||
#define REG_BIT_STATUS_WDT_RESET ( 1 << 1 )
|
||||
#define REG_BIT_STATUS_WDT_RESET ( 1 << 1 )
|
||||
#define REG_BIT_RTC_BLACKOUT ( 1 << 0 )
|
||||
|
||||
|
||||
@ -27,17 +27,15 @@
|
||||
// VREG_C_STATUS_X
|
||||
// –¢Žg—p ( 1 << 6 )
|
||||
// –¢Žg—p ( 1 << 5 )
|
||||
// –¢Žg—p ( 1 << 4 )
|
||||
// –¢Žg—p ( 1 << 3 )
|
||||
// –¢Žg—p ( 1 << 2 )
|
||||
#define REG_BIT_WIFI_TX ( 1 << 4 )
|
||||
// twl bl ‚̃~ƒ‰<C692>[[1: ( 1 << 3 )
|
||||
// 0]( 1 << 2 )
|
||||
#define REG_BIT_ACCERO_ERR ( 1 << 1 )
|
||||
#define REG_BIT_GASGAUGE_ERR ( 1 << 0 )
|
||||
|
||||
|
||||
|
||||
// VREG_C_IRQ0
|
||||
#define REG_BIT_VR_SNDVOL_CHANGE ( 1 << 7 )
|
||||
#define REG_BIT_IRQ_WDT_RESET ( 1 << 7 )
|
||||
#define REG_BIT_IRQ_WDT_RESET ( 1 << 7 )
|
||||
#define REG_BIT_SHELL_OPEN ( 1 << 6 )
|
||||
#define REG_BIT_SHELL_CLOSE ( 1 << 5 )
|
||||
#define REG_BIT_SW_WIFI_CLICK ( 1 << 4 )
|
||||
@ -57,6 +55,7 @@
|
||||
#define REG_BIT_BT_DC_DISC ( 1 << 0 )
|
||||
|
||||
// VREG_C_IRQ2
|
||||
#define REG_BIT_TWL_VER_READ ( 1 << 7 )
|
||||
#define REG_BIT_TWL_SNDVOL_CHANGE ( 1 << 6 )
|
||||
#define REG_BIT_TWL_BL_U_ON ( 1 << 5 )
|
||||
#define REG_BIT_TWL_BL_U_OFF ( 1 << 4 )
|
||||
@ -216,6 +215,8 @@ enum VREG_C
|
||||
VREG_C_RTC_SEC_FINE_L,
|
||||
VREG_C_RTC_SEC_FINE_H,
|
||||
|
||||
VREG_C_ACC_HOSU_ORIGIN,
|
||||
|
||||
VREG_C_ACC_CONFIG = 0x40,
|
||||
VREG_C_ACC_R_ADRS,
|
||||
VREG_C_ACC_RESERVE,
|
||||
@ -235,14 +236,16 @@ enum VREG_C
|
||||
VREG_C_ACC_HOSU_SETTING,
|
||||
VREG_C_ACC_HOSU_HIST = 0x4F,
|
||||
|
||||
// VREG_C_AMBIENT_BRIGHTNESS = 0xXX,
|
||||
|
||||
VREG_C_FREE_ADRS = 0x50,
|
||||
VREG_C_FREE_DATA,
|
||||
|
||||
VREG_C_BATT_EMPTY_PATTERN,
|
||||
|
||||
VREG_C_ENDMARK_
|
||||
};
|
||||
#define VREG_C_INFO 0x7F
|
||||
// VREG_C_AMBIENT_BRIGHTNESS = 0xXX,
|
||||
|
||||
|
||||
/*
|
||||
VREG_C_PM_INFO, // –¢Žg—p
|
||||
|
||||
@ -19,6 +19,9 @@ TWL
|
||||
u8 vreg_twl[_REG_TWL_INT_ADRS_ENDMARK];
|
||||
|
||||
|
||||
extern bit twl_ver_read;
|
||||
|
||||
|
||||
/* ========================================================
|
||||
仮想レジスタの初期化
|
||||
======================================================== */
|
||||
@ -92,6 +95,9 @@ u8 vreg_twl_read( u8 phy_adrs )
|
||||
|
||||
switch( phy_adrs ){
|
||||
case( REG_TWL_INT_ADRS_VER_INFO ):
|
||||
// set_irq( VREG_C_IRQ2, REG_BIT_TWL_VER_READ ); // 速度的に無理なので
|
||||
twl_ver_read = 1;
|
||||
|
||||
return( TWL_REG_VER_INFO );
|
||||
|
||||
case( REG_TWL_INT_ADRS_POWER_INFO ):
|
||||
|
||||
@ -512,14 +512,68 @@ 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
|
||||
[BuildBefore-AfterCmd]
|
||||
Before1=touch magic.c
|
||||
After1=ruby nec_s_2_bsrbin2.rb bsr.hex
|
||||
[SrcFile]
|
||||
Source1=loader.c
|
||||
Source2=pm.c
|
||||
Source3=i2c_ctr.c
|
||||
Source4=main.c
|
||||
Source5=magic.c
|
||||
Source6=WDT.c
|
||||
Source7=i2c_mcu.c
|
||||
Source8=i2c_twl.c
|
||||
Source9=led.c
|
||||
Source10=rtc.c
|
||||
Source11=vreg_ctr.c
|
||||
Source12=vreg_twl.c
|
||||
Source13=adc.c
|
||||
Source14=renge\renge.c
|
||||
Source15=accero.c
|
||||
Source16=self_flash.c
|
||||
Source17=sw.c
|
||||
Source18=task_debug.c
|
||||
Source19=task_misc.c
|
||||
Source20=task_sys.c
|
||||
Source21=pedo_alg_thre_det2.c
|
||||
Source22=ini_VECT.c
|
||||
Source23=led_old.c
|
||||
[IncFile]
|
||||
Include1=incs_loader.h
|
||||
Include2=jhl_defs.h
|
||||
Include3=config.h
|
||||
Include4=user_define.h
|
||||
Include5=bsr_system.h
|
||||
Include6=renge\renge.h
|
||||
Include7=renge\renge_defs.h
|
||||
Include8=renge\renge_task_immediate.h
|
||||
Include9=vreg_ctr.h
|
||||
Include10=vreg_twl.h
|
||||
Include11=loader.h
|
||||
Include12=i2c_mcu.h
|
||||
Include13=WDT.h
|
||||
Include14=fsl.h
|
||||
Include15=fsl_user.h
|
||||
Include16=i2c_ctr.h
|
||||
Include17=pm.h
|
||||
Include18=rtc.h
|
||||
Include19=reboot.h
|
||||
Include20=incs.h
|
||||
Include21=accero.h
|
||||
Include22=pedometer.h
|
||||
Include23=adc.h
|
||||
Include24=led.h
|
||||
Include25=batt_params.h
|
||||
Include26=..\..\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r\fsl.h
|
||||
Include27=i2c_twl_defs.h
|
||||
Include28=renge\renge_task_intval.h
|
||||
Include29=..\..\Program Files\NEC Electronics Tools\CC78K0R\W2.10\inc78k0r\math.h
|
||||
Include30=i2c_twl.h
|
||||
Include31=sw.h
|
||||
Include32=self_flash.h
|
||||
Include33=pool.h
|
||||
Include34=pedo_lpf_coeff.h
|
||||
[Options.CC78K0R 0]
|
||||
Version=210
|
||||
Include0=renge,C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r
|
||||
@ -752,7 +806,6 @@ Version=210
|
||||
Define0=
|
||||
Define1=_debug_,_TEG_,proc_is_ke3
|
||||
Define2=_debug_,_TEG_,proc_is_ke3,%time%
|
||||
Undefine0=
|
||||
Include0=renge,C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r
|
||||
Include1=renge,C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r
|
||||
Include2=renge,C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r
|
||||
@ -1069,62 +1122,89 @@ VfiFileBoot0=
|
||||
VfiFileBoot1=boot.vfi
|
||||
VF78K0Rchk=0
|
||||
VF78K0Rvs=
|
||||
[SrcFile]
|
||||
Source1=loader.c
|
||||
Source2=pm.c
|
||||
Source3=i2c_ctr.c
|
||||
Source4=main.c
|
||||
Source5=magic.c
|
||||
Source6=WDT.c
|
||||
Source7=i2c_mcu.c
|
||||
Source8=i2c_twl.c
|
||||
Source9=led.c
|
||||
Source10=rtc.c
|
||||
Source11=vreg_ctr.c
|
||||
Source12=vreg_twl.c
|
||||
Source13=adc.c
|
||||
Source14=renge\renge.c
|
||||
Source15=accero.c
|
||||
Source16=self_flash.c
|
||||
Source17=sw.c
|
||||
Source18=task_debug.c
|
||||
Source19=task_misc.c
|
||||
Source20=task_sys.c
|
||||
Source21=pedo_alg_thre_det2.c
|
||||
Source22=ini_VECT.c
|
||||
Source23=led_old.c
|
||||
[IncFile]
|
||||
Include1=incs_loader.h
|
||||
Include2=jhl_defs.h
|
||||
Include3=config.h
|
||||
Include4=user_define.h
|
||||
Include5=bsr_system.h
|
||||
Include6=renge\renge.h
|
||||
Include7=renge\renge_defs.h
|
||||
Include8=renge\renge_task_immediate.h
|
||||
Include9=vreg_ctr.h
|
||||
Include10=vreg_twl.h
|
||||
Include11=loader.h
|
||||
Include12=i2c_mcu.h
|
||||
Include13=WDT.h
|
||||
Include14=fsl.h
|
||||
Include15=fsl_user.h
|
||||
Include16=i2c_ctr.h
|
||||
Include17=pm.h
|
||||
Include18=rtc.h
|
||||
Include19=reboot.h
|
||||
Include20=incs.h
|
||||
Include21=accero.h
|
||||
Include22=pedometer.h
|
||||
Include23=adc.h
|
||||
Include24=led.h
|
||||
Include25=batt_params.h
|
||||
Include26=..\..\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r\fsl.h
|
||||
Include27=i2c_twl_defs.h
|
||||
Include28=renge\renge_task_intval.h
|
||||
Include29=..\..\Program Files\NEC Electronics Tools\CC78K0R\W2.10\inc78k0r\math.h
|
||||
Include30=i2c_twl.h
|
||||
Include31=sw.h
|
||||
Include32=self_flash.h
|
||||
Include33=pool.h
|
||||
Include34=pedo_lpf_coeff.h
|
||||
[Options.CC78K0R 2 pm.c]
|
||||
Version=210
|
||||
Define0=
|
||||
Define1=_debug_,_TEG_,proc_is_ke3
|
||||
Define2=_debug_,_TEG_,proc_is_ke3,%time%
|
||||
Define3=_TEG_,proc_is_ke3
|
||||
Define4=proc_is_ke3
|
||||
Include0=renge,C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r
|
||||
Include1=C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r
|
||||
Memorymodel=1
|
||||
Flashobj=0
|
||||
FlashStartadr=
|
||||
FlashBranchStartadr=
|
||||
Mirror=0
|
||||
Saddrglobalchk=0
|
||||
Saddrglobal=1066
|
||||
Saddrstaticchk=0
|
||||
Saddrstatic=1072
|
||||
Bitfieldmsb=0
|
||||
Onebytechk=0
|
||||
Pacstructchk=0
|
||||
AssignROMchk=0
|
||||
AssignROM=0
|
||||
Maxoptimizechk=0
|
||||
Maxoptimize=1104
|
||||
Charunexpandchk=0
|
||||
Unsignedchar=0
|
||||
Usesaddrchk=0
|
||||
Autoallocationchk=1
|
||||
Jumpoptimize=1
|
||||
Librarycallchk=1
|
||||
Librarycall=1132
|
||||
Aggressivechk=1
|
||||
Relativebranchchk=1
|
||||
Debugoptchk=0
|
||||
Outdebugchk=1
|
||||
Outdebug=1153
|
||||
Outasmsrccmb0=inter_asm
|
||||
Outasmsrccmb1=bsr.asm
|
||||
Outasmsrcchk=1
|
||||
Outasmsrc=1158
|
||||
Outasmoptall=1
|
||||
Common=0
|
||||
Outerrlistchk=0
|
||||
Outerrlist=1174
|
||||
Xreference=0
|
||||
Preprocess=0
|
||||
Prenocomment=0
|
||||
Predefine=0
|
||||
Preifdef=1
|
||||
Preinclude=1
|
||||
Preline=1
|
||||
Prenumber=1
|
||||
Formfeed=0
|
||||
Columns=132
|
||||
Lines=0
|
||||
Tablength=8
|
||||
Ansi=0
|
||||
Cpraspras=1
|
||||
Commentnest=0
|
||||
Intunexpand=0
|
||||
Kanjicode=1210
|
||||
Verbose=0
|
||||
CommandFile=0
|
||||
Warninglevel=1
|
||||
Startupchk=1
|
||||
Fixation=0
|
||||
FarROMization=0
|
||||
Objectsel=1305
|
||||
Librarychk=1
|
||||
Floatingpoint=0
|
||||
Muldivunit=1
|
||||
Mulunit=1
|
||||
Startup=s0rm.rel
|
||||
Library1=cl0rdm.lib
|
||||
Library2=cl0rm.lib
|
||||
Library3=cl0rmf.lib
|
||||
VfiFileBoot0=
|
||||
VfiFileBoot1=boot.vfi
|
||||
VF78K0Rchk=0
|
||||
VF78K0Rvs=
|
||||
[ToolSet]
|
||||
ToolSetName=(•Ï<E280A2>X)78K0R Software Package V1.10
|
||||
Tool1=CC78K0R|W2.10
|
||||
Tool2=RA78K0R|W1.31
|
||||
Tool3=ID78K0R-QB|V3.60
|
||||
|
||||
Loading…
Reference in New Issue
Block a user