mirror of
https://github.com/rvtr/ctr_mcu.git
synced 2025-10-31 13:51:10 -04:00
お知らせランプ グラデーション計算などリファクタリング だいぶROM節約。動いている模様。
バッテリパラメータSPFL対応 残念な感じなので書き直す ext status の9バイト目にspfl等識別を追加 git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-05-23%20-%20ctr.7z%20+%20svn_v1.068.zip/ctr/svn/ctr_mcu@334 013db118-44a6-b54f-8bf7-843cb86687b1
This commit is contained in:
parent
6396872ddd
commit
9d533dcf48
@ -1,6 +1,7 @@
|
|||||||
#ifndef _bt_params_h_
|
#ifndef _bt_params_h_
|
||||||
#define _bt_params_h_
|
#define _bt_params_h_
|
||||||
|
|
||||||
|
|
||||||
/* ========================================================
|
/* ========================================================
|
||||||
各社バッテリーパラメータ
|
各社バッテリーパラメータ
|
||||||
======================================================== */
|
======================================================== */
|
||||||
@ -102,29 +103,28 @@ const st_bt_comp BT_COMP[] = {
|
|||||||
{ 92, (u8)(-256* 0.79), (u8)(-256* 4.35) }, // dummy(M )
|
{ 92, (u8)(-256* 0.79), (u8)(-256* 4.35) }, // dummy(M )
|
||||||
{ 171, (u8)(-256* 1.00), (u8)(-256* 2.60) }, // dummy( P)
|
{ 171, (u8)(-256* 1.00), (u8)(-256* 2.60) }, // dummy( P)
|
||||||
{ 171, (u8)(-256* 1.00), (u8)(-256* 2.60) }, // dummy( P)
|
{ 171, (u8)(-256* 1.00), (u8)(-256* 2.60) }, // dummy( P)
|
||||||
{ 171, (u8)(-256* 1.00), (u8)(-256* 2.60) }, // panasonic
|
{ 171, (u8)(-256* 1.00), (u8)(-256* 2.60) } // panasonic
|
||||||
{ 171, (u8)(-256* 1.00), (u8)(-256* 2.60) } // dummy( P)
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
const u16 BT_OCV[] = {
|
const u16 BT_OCV[] = {
|
||||||
{ 0xD800 }, { 0xD800 }, { 0xD800 }, // maxell, dummy, dummy,
|
{ 0xD800 }, { 0xD800 }, { 0xD800 }, // maxell, dummy, dummy,
|
||||||
{ 0xDA20 }, { 0xDA20 }, { 0xDA20 }, { 0xDA20 } // dummy, dummy, panaso, dummy
|
{ 0xDA20 }, { 0xDA20 }, { 0xDA20 } // dummy, dummy, pana
|
||||||
};
|
};
|
||||||
|
|
||||||
const u8 BT_VERIFY_H[] = {
|
const u8 BT_VERIFY_H[] = {
|
||||||
0xEA, 0xEA, 0xEA, // maxell, dummy, dummy,
|
0xEA, 0xEA, 0xEA, // maxell, dummy, dummy,
|
||||||
0x69, 0x69, 0x69, 0x69 // dummy, dummy, panaso, dummy
|
0x69, 0x69, 0x69 // dummy, dummy, pana
|
||||||
};
|
};
|
||||||
|
|
||||||
const u8 BT_VERIFY_L[] = {
|
const u8 BT_VERIFY_L[] = {
|
||||||
0xE8, 0xE8, 0xE8, // maxell, dummy, dummy,
|
0xE8, 0xE8, 0xE8, // maxell, dummy, dummy,
|
||||||
0x67, 0x67, 0x67, 0x67 // dummy, dummy, panaso, dummy
|
0x67, 0x67, 0x67 // dummy, dummy, pana
|
||||||
};
|
};
|
||||||
|
|
||||||
const u8 BT_RCOMP_SCALE[] = {
|
const u8 BT_RCOMP_SCALE[] = {
|
||||||
2, 2, 2, // maxell, dummy, dummy,
|
2, 2, 2, // maxell, dummy, dummy,
|
||||||
1, 1, 1, 1 // dummy, dummy, panaso, dummy
|
1, 1, 1 // dummy, dummy, panaso
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
BIN
trunk/bsr.lmf
BIN
trunk/bsr.lmf
Binary file not shown.
File diff suppressed because it is too large
Load Diff
@ -20,7 +20,7 @@
|
|||||||
|
|
||||||
|
|
||||||
#define MCU_VER_MAJOR 0x01
|
#define MCU_VER_MAJOR 0x01
|
||||||
#define MCU_VER_MINOR 0x34
|
#define MCU_VER_MINOR 0x36
|
||||||
|
|
||||||
// ↑改訂の時は↓気をつけないと体験台の生産できないからね!
|
// ↑改訂の時は↓気をつけないと体験台の生産できないからね!
|
||||||
#ifdef _TAIKENDAI_SEISAN_SPECIAL_
|
#ifdef _TAIKENDAI_SEISAN_SPECIAL_
|
||||||
@ -50,8 +50,6 @@
|
|||||||
#define _MODEL_CTR_
|
#define _MODEL_CTR_
|
||||||
// ↑TS board, WM1,1 TS-CTRC, 実機
|
// ↑TS board, WM1,1 TS-CTRC, 実機
|
||||||
|
|
||||||
// “ÁŽêŽd—l //
|
|
||||||
//#define _SW_HOME_ENABLE_
|
|
||||||
|
|
||||||
// ---------------------------------- //
|
// ---------------------------------- //
|
||||||
#ifdef _MODEL_TEG2_
|
#ifdef _MODEL_TEG2_
|
||||||
@ -71,7 +69,6 @@ unsupported!
|
|||||||
#ifdef _MODEL_CTR_
|
#ifdef _MODEL_CTR_
|
||||||
#define _PMIC_CTR_
|
#define _PMIC_CTR_
|
||||||
#define _MCU_BSR_
|
#define _MCU_BSR_
|
||||||
#define _SW_HOME_ENABLE_
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
BIN
trunk/hoge.bin
BIN
trunk/hoge.bin
Binary file not shown.
48
trunk/led.c
48
trunk/led.c
@ -242,10 +242,29 @@ void tsk_led_wifi( )
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
bit info_led_pattern_updated;
|
bit info_led_pattern_updated;
|
||||||
/* ========================================================
|
/* ========================================================
|
||||||
お知らせLED
|
お知らせLED
|
||||||
======================================================== */
|
======================================================== */
|
||||||
|
// グラデーション計算など
|
||||||
|
void calc_info_led_fade_out( st_LED_dim_status* tgt_led )
|
||||||
|
{
|
||||||
|
tgt_led -> to = 0;
|
||||||
|
tgt_led -> delta = ( 0 - tgt_led -> now ) / 64;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void calc_info_led_next_frame( st_LED_dim_status* tgt_led, u8 color )
|
||||||
|
{
|
||||||
|
tgt_led -> to = color * 128;
|
||||||
|
// グラデーションのデルタを計算
|
||||||
|
tgt_led -> delta = (( tgt_led -> to - tgt_led -> now ) ) / info_LED.info_LED.fade_time;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 本体
|
||||||
void tsk_led_notify( )
|
void tsk_led_notify( )
|
||||||
{
|
{
|
||||||
static u8 time_to_next_frame;
|
static u8 time_to_next_frame;
|
||||||
@ -272,12 +291,9 @@ void tsk_led_notify( )
|
|||||||
if( info_led_off ) // ←電源off時など強制off
|
if( info_led_off ) // ←電源off時など強制off
|
||||||
{
|
{
|
||||||
// フェードアウトさせる
|
// フェードアウトさせる
|
||||||
LED_dim_status_info_R.to = 0;
|
calc_info_led_fade_out( &LED_dim_status_info_R );
|
||||||
LED_dim_status_info_G.to = 0;
|
calc_info_led_fade_out( &LED_dim_status_info_G );
|
||||||
LED_dim_status_info_B.to = 0;
|
calc_info_led_fade_out( &LED_dim_status_info_B );
|
||||||
LED_dim_status_info_R.delta = ( 0 - LED_dim_status_info_R.now ) / 64;
|
|
||||||
LED_dim_status_info_G.delta = ( 0 - LED_dim_status_info_G.now ) / 64;
|
|
||||||
LED_dim_status_info_B.delta = ( 0 - LED_dim_status_info_B.now ) / 64;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -315,21 +331,17 @@ void tsk_led_notify( )
|
|||||||
loops = 0;
|
loops = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
LED_dim_status_info_R.to = info_LED.info_LED.red[frame] * 128;
|
// グラデーション計算
|
||||||
LED_dim_status_info_G.to = info_LED.info_LED.grn[frame] * 128;
|
calc_info_led_next_frame( &LED_dim_status_info_R, info_LED.info_LED.red[frame] );
|
||||||
LED_dim_status_info_B.to = info_LED.info_LED.blu[frame] * 128;
|
calc_info_led_next_frame( &LED_dim_status_info_G, info_LED.info_LED.grn[frame] );
|
||||||
|
calc_info_led_next_frame( &LED_dim_status_info_B, info_LED.info_LED.blu[frame] );
|
||||||
// グラデーションのデルタを計算
|
|
||||||
LED_dim_status_info_R.delta = (( LED_dim_status_info_R.to - LED_dim_status_info_R.now ) ) / info_LED.info_LED.fade_time;
|
|
||||||
LED_dim_status_info_G.delta = (( LED_dim_status_info_G.to - LED_dim_status_info_G.now ) ) / info_LED.info_LED.fade_time;
|
|
||||||
LED_dim_status_info_B.delta = (( LED_dim_status_info_B.to - LED_dim_status_info_B.now ) ) / info_LED.info_LED.fade_time;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
time_to_next_frame -= 1;
|
time_to_next_frame -= 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
led_fade_to2( LED_duty_notify_blu, &LED_dim_status_info_B );
|
led_fade_to2( LED_duty_notify_blu, &LED_dim_status_info_B );
|
||||||
led_fade_to2( LED_duty_notify_red, &LED_dim_status_info_R );
|
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_grn, &LED_dim_status_info_G );
|
||||||
}
|
}
|
||||||
|
|||||||
206
trunk/pm.c
206
trunk/pm.c
@ -22,17 +22,19 @@
|
|||||||
// ========================================================
|
// ========================================================
|
||||||
u8 raw_adc_temperature;
|
u8 raw_adc_temperature;
|
||||||
BT_VENDER battery_manufacturer = BT_VENDER_NOT_CHECKED;
|
BT_VENDER battery_manufacturer = BT_VENDER_NOT_CHECKED;
|
||||||
st_bt_comp bt_comp; // バッテリパラメータ構造体
|
static st_bt_comp bt_comp; // バッテリパラメータ構造体
|
||||||
u8 reg_shadow; // NTR PMIC レジスタミラー
|
static u8 reg_shadow; // NTR PMIC レジスタミラー
|
||||||
bit bt_authorized; // バッテリパラメータ送信済。充電開始許可
|
bit bt_authorized; // バッテリパラメータ送信済。充電開始許可
|
||||||
u8 chg_led_override; // アダプタ差したとき、充電するしないに関わらずしばらく点灯させる
|
u8 chg_led_override; // アダプタ差したとき、充電するしないに関わらずしばらく点灯させる
|
||||||
|
|
||||||
u16 bt_volt16;
|
static u16 bt_volt16;
|
||||||
|
|
||||||
bit ntr_pm_bt_low_old;
|
static bit ntr_pm_bt_low_old;
|
||||||
bit BT_CHG_STAT_Change;
|
bit BT_CHG_STAT_Change;
|
||||||
bit BT_IN_CHG_delayed_n;
|
bit BT_IN_CHG_delayed_n;
|
||||||
|
|
||||||
|
bit temp_zone_charge_disable; // 温度で充電停止する時にヒステリシスを付けるため
|
||||||
|
|
||||||
u8 pmic_version;
|
u8 pmic_version;
|
||||||
u8 mgic_version[2];
|
u8 mgic_version[2];
|
||||||
|
|
||||||
@ -41,7 +43,8 @@ u8 mgic_version[2];
|
|||||||
static void BT_model_detect();
|
static void BT_model_detect();
|
||||||
static void BT_mgic_quick_start();
|
static void BT_mgic_quick_start();
|
||||||
static void BT_mgic_init();
|
static void BT_mgic_init();
|
||||||
|
static void bt_chk_temparature();
|
||||||
|
static void bt_get_charge_status();
|
||||||
|
|
||||||
|
|
||||||
// ========================================================
|
// ========================================================
|
||||||
@ -54,6 +57,7 @@ const u8 BT_MANUF_BORDER[] = {
|
|||||||
5, 33, 79, 123, 158, 197, 233
|
5, 33, 79, 123, 158, 197, 233
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/* ========================================================
|
/* ========================================================
|
||||||
電池の管理
|
電池の管理
|
||||||
|
|
||||||
@ -73,11 +77,9 @@ const u8 BT_MANUF_BORDER[] = {
|
|||||||
#define INTERVAL_TSK_BATT 60
|
#define INTERVAL_TSK_BATT 60
|
||||||
// ↑100だと充電エラー時にうまく点滅しないので
|
// ↑100だと充電エラー時にうまく点滅しないので
|
||||||
|
|
||||||
bit temp_zone_charge_disable; // 温度で充電停止する時にヒステリシスを付けるため
|
|
||||||
void tsk_batt( )
|
void tsk_batt( )
|
||||||
{
|
{
|
||||||
static u8 task_interval = 0;
|
static u8 task_interval = 0;
|
||||||
static u8 heikinka_h,heikinka_l;
|
|
||||||
|
|
||||||
if( system_status.pwr_state != OFF_TRIG )
|
if( system_status.pwr_state != OFF_TRIG )
|
||||||
{
|
{
|
||||||
@ -91,11 +93,53 @@ void tsk_batt( )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// アダプタステータス更新 /////////
|
// アダプタステータス更新 //
|
||||||
pm_chk_adapter();
|
pm_chk_adapter();
|
||||||
|
|
||||||
// 充電 ///////////////////////////
|
// 充電 //
|
||||||
// 温度付きヒステリシス
|
bt_chk_temparature(); // 温度チェック
|
||||||
|
if( !temp_zone_charge_disable && bt_authorized && !PM_EXTDC_n )
|
||||||
|
{
|
||||||
|
BT_CHG_ENABLE(); // 温度範囲OKで充電再開
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
BT_CHG_DISABLE(); // 温度危険! 充電停止
|
||||||
|
}
|
||||||
|
|
||||||
|
bt_get_charge_status(); // CCIC制御
|
||||||
|
|
||||||
|
LED_CHARGE = ( ! BT_IN_CHG_delayed_n )? 1: 0; // LEDに反映
|
||||||
|
|
||||||
|
// アダプタつないだ瞬間、満充電でも数秒わざと点灯させる。給電してることをわからせるため。
|
||||||
|
if( chg_led_override != 0 ){ // ↑から見ればわかるが、瞬間(数クロック)消える事がある。気がつく人いるかな…?
|
||||||
|
chg_led_override -= 1;
|
||||||
|
LED_CHARGE = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// レジスタの充電中ビットはLEDに同期する
|
||||||
|
set_bit( LED_CHARGE, vreg_ctr[VREG_C_STATUS], REG_BIT_BATT_CHARGE ); // set_bitのみ。
|
||||||
|
|
||||||
|
// 割り込み
|
||||||
|
// tsk_miscが引き受ける
|
||||||
|
|
||||||
|
// 電池残量 //
|
||||||
|
if( system_status.pwr_state != ON_CHECK )
|
||||||
|
{
|
||||||
|
BT_get_left();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* *******************************************************
|
||||||
|
温度チェック
|
||||||
|
温度付きヒステリシス
|
||||||
|
******************************************************* */
|
||||||
|
void bt_chk_temparature()
|
||||||
|
{
|
||||||
|
static u8 heikinka_h,heikinka_l;
|
||||||
|
|
||||||
if(( 75 <= raw_adc_temperature )
|
if(( 75 <= raw_adc_temperature )
|
||||||
&& ( raw_adc_temperature <= 184 ))
|
&& ( raw_adc_temperature <= 184 ))
|
||||||
{
|
{
|
||||||
@ -126,65 +170,39 @@ void tsk_batt( )
|
|||||||
heikinka_h = 0;
|
heikinka_h = 0;
|
||||||
heikinka_l = 0;
|
heikinka_l = 0;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if( !temp_zone_charge_disable && bt_authorized && !PM_EXTDC_n )
|
|
||||||
|
|
||||||
|
void bt_get_charge_status()
|
||||||
|
{
|
||||||
|
// CCICの不具合回避のため、/CHGのネゲートをちょっと丁寧に遅延させる
|
||||||
|
static u8 anti_chatter;
|
||||||
|
|
||||||
|
if( !BT_IN_CHG_n )
|
||||||
{
|
{
|
||||||
BT_CHG_ENABLE(); // 温度範囲OKで充電再開
|
// さらにチャタリング除去
|
||||||
|
if( anti_chatter < 2 ) // 電池無しでアダプタさして、電極をさわさわ
|
||||||
|
{ // すると充電LEDががさがさするので
|
||||||
|
anti_chatter++;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
BT_IN_CHG_delayed_n = 0; // 充電中
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
BT_CHG_DISABLE(); // 温度危険! 充電停止
|
// "丁寧に遅延" todo:もっといい方法?
|
||||||
}
|
if( !BT_CHG_Ena_n && vreg_ctr[ VREG_C_BT_REMAIN ] < 60 )
|
||||||
|
{
|
||||||
// 充電 //
|
BT_IN_CHG_delayed_n = 0; // 充電中と扱う。充電が終わっているはずがない
|
||||||
// →割り込み。
|
}
|
||||||
// CCICの不具合回避のため、/CHGのネゲートをちょっと丁寧に遅延させる
|
else
|
||||||
{
|
{
|
||||||
static u8 anti_chatter;
|
BT_IN_CHG_delayed_n = 1;
|
||||||
|
anti_chatter = 0;
|
||||||
if( !BT_IN_CHG_n )
|
}
|
||||||
{
|
|
||||||
// さらにチャタリング除去
|
|
||||||
if( anti_chatter < 2 ) // 電池無しでアダプタさして、電極をさわさわ
|
|
||||||
{ // すると充電LEDががさがさするので
|
|
||||||
anti_chatter++;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
BT_IN_CHG_delayed_n = 0; // 充電中
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// "丁寧に遅延" todo:もっといい方法?
|
|
||||||
if( !BT_CHG_Ena_n && vreg_ctr[ VREG_C_BT_REMAIN ] < 60 )
|
|
||||||
{
|
|
||||||
BT_IN_CHG_delayed_n = 0; // 充電中と扱う。充電が終わっているはずがない
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
BT_IN_CHG_delayed_n = 1;
|
|
||||||
anti_chatter = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
LED_CHARGE = ( ! BT_IN_CHG_delayed_n )? 1: 0; // LEDに反映
|
|
||||||
}
|
|
||||||
|
|
||||||
// アダプタつないだ瞬間、満充電でも数秒わざと点灯させる。給電してることをわからせるため。
|
|
||||||
if( chg_led_override != 0 ){ // ↑から見ればわかるが、瞬間(数クロック)消える事がある。気がつく人いるかな…?
|
|
||||||
chg_led_override -= 1;
|
|
||||||
LED_CHARGE = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
// レジスタの充電中ビットはLEDに同期する
|
|
||||||
set_bit( LED_CHARGE, vreg_ctr[VREG_C_STATUS], REG_BIT_BATT_CHARGE ); // set_bitのみ。
|
|
||||||
// 割り込みはmiscが引き受ける
|
|
||||||
|
|
||||||
// 電池残量 //
|
|
||||||
if( system_status.pwr_state != ON_CHECK )
|
|
||||||
{
|
|
||||||
BT_get_left();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -331,14 +349,14 @@ void BT_model_detect()
|
|||||||
|
|
||||||
// 電池メーカーの識別 //
|
// 電池メーカーの識別 //
|
||||||
{
|
{
|
||||||
BT_VENDER i;
|
u8 i;
|
||||||
|
|
||||||
battery_manufacturer = BT_VENDER_OPEN;
|
battery_manufacturer = BT_VENDER_OPEN; // デフォルト値
|
||||||
for(i=0; i<=7; i++)
|
for(i=0; i<=7; i++)
|
||||||
{
|
{
|
||||||
if( temp <= BT_MANUF_BORDER[ i ] )
|
if( temp <= BT_MANUF_BORDER[ i ] )
|
||||||
{
|
{
|
||||||
battery_manufacturer = i;
|
battery_manufacturer = (BT_VENDER)i;
|
||||||
break;
|
break;
|
||||||
/*
|
/*
|
||||||
BT_VENDER_MAXELL; // = 0
|
BT_VENDER_MAXELL; // = 0
|
||||||
@ -404,6 +422,7 @@ static void BT_mgic_init()
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
// -1. リセットをかけてみる
|
// -1. リセットをかけてみる
|
||||||
|
かけちゃだめ!
|
||||||
dat_16._u16 = swap_endian_16( 0x5400 ); // reset
|
dat_16._u16 = swap_endian_16( 0x5400 ); // reset
|
||||||
iic_mcu_write( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_COMMAND, 2, &dat_16 ); // こいつはNACKを返す
|
iic_mcu_write( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_COMMAND, 2, &dat_16 ); // こいつはNACKを返す
|
||||||
*/
|
*/
|
||||||
@ -441,15 +460,36 @@ static void BT_mgic_init()
|
|||||||
|
|
||||||
// 5.メーカー別パラメータのロード
|
// 5.メーカー別パラメータのロード
|
||||||
{
|
{
|
||||||
// 16バイトごとに区切れとのこと
|
// 苦肉の策... 誤判定耐性が下がるわけではないし
|
||||||
iic_mcu_set_wo_dma( );
|
u8* p_batt_param;
|
||||||
iic_mcu_write( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_BT_PARAM, 16, &BT_PARAM[ battery_manufacturer ] );
|
BT_VENDER bt_manuf_temp = battery_manufacturer;
|
||||||
iic_mcu_set_wo_dma( );
|
u8 loop;
|
||||||
iic_mcu_write( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_BT_PARAM +16, 16, &BT_PARAM[ battery_manufacturer ][16] );
|
|
||||||
iic_mcu_set_wo_dma( );
|
/* 埋蔵金をつかってしまったが ↓の苦肉の策でまるめられてしまう
|
||||||
iic_mcu_write( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_BT_PARAM +32, 16, &BT_PARAM[ battery_manufacturer ][32] );
|
if( battery_manufacturer == 6 )
|
||||||
iic_mcu_set_wo_dma( );
|
{
|
||||||
iic_mcu_write( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_BT_PARAM +48, 16, &BT_PARAM[ battery_manufacturer ][48] );
|
battery_manufacturer = 5;
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
if( bt_manuf_temp > BT_VENDER_4 )
|
||||||
|
{
|
||||||
|
bt_manuf_temp = BT_VENDER_3; // 白箱はどうでもよし
|
||||||
|
}
|
||||||
|
|
||||||
|
if( system_status.family == FAMILY_SPFL )
|
||||||
|
{
|
||||||
|
bt_manuf_temp += 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
p_batt_param = BT_PARAM[bt_manuf_temp];
|
||||||
|
|
||||||
|
// 16バイトごとに区切れとのこと (ノイズ対策とか言うんだけど、意味あるんか?)
|
||||||
|
for( loop = 0; loop < 4; loop++ )
|
||||||
|
{
|
||||||
|
iic_mcu_set_wo_dma( );
|
||||||
|
iic_mcu_write( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_BT_PARAM, 16, p_batt_param + loop*16 );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 6. 150ms以上待つ
|
// 6. 150ms以上待つ
|
||||||
@ -583,7 +623,7 @@ void BT_get_left(){
|
|||||||
else if( system_status.model == MODEL_SHIROBAKO )
|
else if( system_status.model == MODEL_SHIROBAKO )
|
||||||
{
|
{
|
||||||
// 白箱 //
|
// 白箱 //
|
||||||
// 電池残量
|
// 電池残量
|
||||||
if( iic_mcu_read( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_SOC, 2, temp_fuel ) != ERR_SUCCESS )
|
if( iic_mcu_read( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_SOC, 2, temp_fuel ) != ERR_SUCCESS )
|
||||||
{
|
{
|
||||||
// エミュレーション機能がおかしい
|
// エミュレーション機能がおかしい
|
||||||
@ -594,8 +634,9 @@ void BT_get_left(){
|
|||||||
vreg_ctr[ VREG_C_BT_REMAIN ] = temp_fuel[0];
|
vreg_ctr[ VREG_C_BT_REMAIN ] = temp_fuel[0];
|
||||||
vreg_ctr[ VREG_C_BT_REMAIN_FINE ] = temp_fuel[1];
|
vreg_ctr[ VREG_C_BT_REMAIN_FINE ] = temp_fuel[1];
|
||||||
}
|
}
|
||||||
// 電池電圧
|
|
||||||
//*
|
//*
|
||||||
|
// 電池電圧
|
||||||
if( iic_mcu_read( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_VCELL, 2, temp_fuel ) == ERR_SUCCESS )
|
if( iic_mcu_read( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_VCELL, 2, temp_fuel ) == ERR_SUCCESS )
|
||||||
{
|
{
|
||||||
vreg_ctr[ VREG_C_BT_VOLTAGE ] = temp_fuel[0];
|
vreg_ctr[ VREG_C_BT_VOLTAGE ] = temp_fuel[0];
|
||||||
@ -915,7 +956,6 @@ err PM_BL_set( u8 dat )
|
|||||||
// シャットダウンすることがある
|
// シャットダウンすることがある
|
||||||
{
|
{
|
||||||
wait_ms( 16 + 10 );
|
wait_ms( 16 + 10 );
|
||||||
// wait_ms( 84 ); ミツミの1stバグ回避
|
|
||||||
}
|
}
|
||||||
iic_mcu_write_a_byte( IIC_SLA_PMIC, PM_REG_ADRS_BL, blset );
|
iic_mcu_write_a_byte( IIC_SLA_PMIC, PM_REG_ADRS_BL, blset );
|
||||||
|
|
||||||
@ -923,10 +963,12 @@ err PM_BL_set( u8 dat )
|
|||||||
// SoCがPWMを出すようレジスタをセットしてから遅延が有るため、ステータスを先に
|
// SoCがPWMを出すようレジスタをセットしてから遅延が有るため、ステータスを先に
|
||||||
// 更新してしまう。
|
// 更新してしまう。
|
||||||
#endif
|
#endif
|
||||||
|
// PMICのBLのビットと、MCUのSTATUSレジスタのビット位置が逆なため入れ替え
|
||||||
vreg_ctr[VREG_C_STATUS] = (( vreg_ctr[VREG_C_STATUS] & 0b10011111 )
|
vreg_ctr[VREG_C_STATUS] = (( vreg_ctr[VREG_C_STATUS] & 0b10011111 )
|
||||||
| ( (( blset << 6 ) | ( blset << 4 )) & 0b01100000 ));
|
| ( (( blset << 6 ) | ( blset << 4 )) & 0b01100000 ));
|
||||||
// PMICのBLのビットと、MCUのSTATUSレジスタのビット位置が逆なため入れ替え
|
|
||||||
|
|
||||||
|
// 割り込み
|
||||||
|
/// 複数ビットまとめて行うので、いつもの関数使用不可
|
||||||
{
|
{
|
||||||
u8 tot;
|
u8 tot;
|
||||||
|
|
||||||
@ -935,7 +977,7 @@ err PM_BL_set( u8 dat )
|
|||||||
vreg_ctr[ VREG_C_IRQ3 ] |= ( intset & ~vreg_ctr[ VREG_C_IRQ_MASK3 ] );
|
vreg_ctr[ VREG_C_IRQ3 ] |= ( intset & ~vreg_ctr[ VREG_C_IRQ_MASK3 ] );
|
||||||
IRQ0_neg;
|
IRQ0_neg;
|
||||||
tot = 0;
|
tot = 0;
|
||||||
while( !IRQ0 && ( ++tot != 0 ) ){;} // 割り込みを入れ直す
|
while( !IRQ0 && ( ++tot != 0 ) ){;}
|
||||||
IRQ0_ast;
|
IRQ0_ast;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1019,7 +1061,7 @@ err PM_sys_pow_on( )
|
|||||||
codec_reg_init(); // CODEC 不定レジスタ初期化(reset2の後でないといけないので)
|
codec_reg_init(); // CODEC 不定レジスタ初期化(reset2の後でないといけないので)
|
||||||
reg_shadow = 0; // 〃 こんなところで...
|
reg_shadow = 0; // 〃 こんなところで...
|
||||||
|
|
||||||
return ( ERR_SUCCESS );
|
return ( ERR_SUCCESS );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -266,15 +266,18 @@ extern bit bt_authorized;
|
|||||||
6) ( rcomp & 0xFF )
|
6) ( rcomp & 0xFF )
|
||||||
7) raw_adc_temperature
|
7) raw_adc_temperature
|
||||||
8) ( !temp_zone_charge_disable | ( bt_authorized << 1 ) )
|
8) ( !temp_zone_charge_disable | ( bt_authorized << 1 ) )
|
||||||
9)
|
9) お知らせLEDはフルカラー?
|
||||||
|
10) system_status.family
|
||||||
======================================================== */
|
======================================================== */
|
||||||
|
|
||||||
|
#define KOUMOKU 9
|
||||||
u8 extinfo_read()
|
u8 extinfo_read()
|
||||||
{
|
{
|
||||||
u8 infos[10];
|
u8 infos[ KOUMOKU +1 ];
|
||||||
|
|
||||||
if( iic_burst_state > 8 )
|
if( iic_burst_state > KOUMOKU )
|
||||||
{
|
{
|
||||||
return( 0xAA );
|
return( 0x73 );
|
||||||
}
|
}
|
||||||
|
|
||||||
// static でとるほどのものでないので毎回スタックからとってくる
|
// static でとるほどのものでないので毎回スタックからとってくる
|
||||||
@ -289,6 +292,8 @@ u8 extinfo_read()
|
|||||||
infos[6] = raw_adc_temperature;
|
infos[6] = raw_adc_temperature;
|
||||||
infos[7] = ( !temp_zone_charge_disable | ( bt_authorized << 1 ) );
|
infos[7] = ( !temp_zone_charge_disable | ( bt_authorized << 1 ) );
|
||||||
infos[8] = 1; // system_status.info_fullcolor;
|
infos[8] = 1; // system_status.info_fullcolor;
|
||||||
|
infos[9] = system_status.family;
|
||||||
|
// 項目足すときは気をつけてね!! //
|
||||||
|
|
||||||
iic_burst_state++;
|
iic_burst_state++;
|
||||||
return( infos[ iic_burst_state -1 ] );
|
return( infos[ iic_burst_state -1 ] );
|
||||||
|
|||||||
@ -22,7 +22,7 @@ SubClock=None
|
|||||||
[Mapping]
|
[Mapping]
|
||||||
Count=0
|
Count=0
|
||||||
[Main]
|
[Main]
|
||||||
Geometry=13, 66, 1440, 858
|
Geometry=154, 154, 1080, 635
|
||||||
Window=Max
|
Window=Max
|
||||||
MDI_MAX=OFF
|
MDI_MAX=OFF
|
||||||
Button=ON
|
Button=ON
|
||||||
@ -78,10 +78,10 @@ Symbol Type=OFF
|
|||||||
Language=C
|
Language=C
|
||||||
Kanji=SJIS
|
Kanji=SJIS
|
||||||
[Source]
|
[Source]
|
||||||
Geometry=0, 0, 725, 753
|
Geometry=344, 62, 733, 655
|
||||||
Window=Normal
|
Window=Normal
|
||||||
DispStart=435
|
DispStart=40
|
||||||
CaretPos=436,0
|
CaretPos=81,0
|
||||||
Mode=Normal
|
Mode=Normal
|
||||||
DispFile=
|
DispFile=
|
||||||
Address1=
|
Address1=
|
||||||
@ -140,17 +140,17 @@ SaveStart=
|
|||||||
SaveEnd=
|
SaveEnd=
|
||||||
Accumulative=ON
|
Accumulative=ON
|
||||||
[Source1]
|
[Source1]
|
||||||
Geometry=139, 70, 725, 684
|
Geometry=25, 25, 600, 750
|
||||||
Window=Normal
|
Window=Normal
|
||||||
DispStart=153
|
DispStart=292
|
||||||
CaretPos=121,9
|
CaretPos=281,5
|
||||||
Mode=Normal
|
Mode=Normal
|
||||||
DispFile=\\Tsclient\c\78k_data\yav-mcu-basara\trunk\led.c
|
DispFile=\\Tsclient\c\78k_data\yav-mcu-basara\trunk\led.c
|
||||||
Accumulative=ON
|
Accumulative=ON
|
||||||
[Assemble]
|
[Assemble]
|
||||||
Geometry=0, 0, 0, 0
|
Geometry=0, 0, 0, 0
|
||||||
Window=Hide
|
Window=Hide
|
||||||
DispStart=847434752
|
DispStart=847627264
|
||||||
CaretPos=0,0
|
CaretPos=0,0
|
||||||
Address1=
|
Address1=
|
||||||
Address2=
|
Address2=
|
||||||
@ -193,7 +193,7 @@ SaveRange=Screen
|
|||||||
SaveStart=
|
SaveStart=
|
||||||
SaveEnd=
|
SaveEnd=
|
||||||
[Memory]
|
[Memory]
|
||||||
Geometry=856, 20, 550, 400
|
Geometry=0, 0, 0, 0
|
||||||
Window=Hide
|
Window=Hide
|
||||||
Boundary=0
|
Boundary=0
|
||||||
Format=Hex
|
Format=Hex
|
||||||
@ -202,7 +202,7 @@ Endian=
|
|||||||
Ascii=OFF
|
Ascii=OFF
|
||||||
Idtag=OFF
|
Idtag=OFF
|
||||||
Address=
|
Address=
|
||||||
DispStart=00000000
|
DispStart=FFFFFFFF
|
||||||
CaretPosData=0, 0
|
CaretPosData=0, 0
|
||||||
CaretPosAscii=0, 0
|
CaretPosAscii=0, 0
|
||||||
Address1=
|
Address1=
|
||||||
@ -965,16 +965,17 @@ Detail=OFF
|
|||||||
Last Name=
|
Last Name=
|
||||||
Count=0
|
Count=0
|
||||||
[Variable]
|
[Variable]
|
||||||
Geometry=908, 128, 510, 614
|
Geometry=981, 20, 440, 300
|
||||||
Window=Normal
|
Window=Normal
|
||||||
Boundary=13762700
|
Boundary=13762700
|
||||||
0=.vreg_ctr,P,N,A,+,1
|
0=+info_LED.info_LED,.,N,A,-,1
|
||||||
Line=1
|
1=+LED_dim_status_info_R,.,N,A,-,1
|
||||||
|
Line=2
|
||||||
[Quick Watch]
|
[Quick Watch]
|
||||||
0=vreg_ctr,P,A,1
|
0=LED_dim_status_info_G,P,A,1
|
||||||
1=system=status,P,A,1
|
1=LED_dim_status_info_B,P,A,1
|
||||||
2=
|
2=LED_dim_status_info_R,P,A,1
|
||||||
3=
|
3=info_LED.info_LED,P,A,1
|
||||||
4=
|
4=
|
||||||
5=
|
5=
|
||||||
6=
|
6=
|
||||||
@ -988,10 +989,18 @@ Line=1
|
|||||||
14=
|
14=
|
||||||
15=
|
15=
|
||||||
[Software Break]
|
[Software Break]
|
||||||
Geometry=0, 0, 0, 0
|
Geometry=75, 75, 500, 200
|
||||||
Window=Hide
|
Window=Normal
|
||||||
Width=150 30 200 100
|
Width=150 30 200 100
|
||||||
Count=0
|
Name0=Swb00001
|
||||||
|
Address0=led.c#_tsk_led_notify+0x84
|
||||||
|
Window0=ASM
|
||||||
|
Status0=OFF
|
||||||
|
Name1=Swb00002
|
||||||
|
Address1=led.c#_tsk_led_notify+0x47
|
||||||
|
Window1=ASM
|
||||||
|
Status1=OFF
|
||||||
|
Count=2
|
||||||
[Reset]
|
[Reset]
|
||||||
Debugger=ON
|
Debugger=ON
|
||||||
Symbol=OFF
|
Symbol=OFF
|
||||||
|
|||||||
@ -696,6 +696,68 @@ Tool1=CC78K0R|W2.13
|
|||||||
Tool2=RA78K0R|W1.33
|
Tool2=RA78K0R|W1.33
|
||||||
Tool3=SK78K0R|V3.10
|
Tool3=SK78K0R|V3.10
|
||||||
Tool4=ID78K0R-QB|V3.61
|
Tool4=ID78K0R-QB|V3.61
|
||||||
|
[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=task_status.c
|
||||||
|
Source24=led_cam.c
|
||||||
|
Source25=led_pow.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=..\..\..\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r\fsl.h
|
||||||
|
Include15=fsl_user.h
|
||||||
|
Include16=i2c_ctr.h
|
||||||
|
Include17=pm.h
|
||||||
|
Include18=rtc.h
|
||||||
|
Include19=reboot.h
|
||||||
|
Include20=magic.h
|
||||||
|
Include21=incs.h
|
||||||
|
Include22=i2c_twl.h
|
||||||
|
Include23=accero.h
|
||||||
|
Include24=pedometer.h
|
||||||
|
Include25=sw.h
|
||||||
|
Include26=adc.h
|
||||||
|
Include27=led.h
|
||||||
|
Include28=batt_params.h
|
||||||
|
Include29=pool.h
|
||||||
|
Include30=i2c_twl_defs.h
|
||||||
|
Include31=voltable.h
|
||||||
|
Include32=renge\renge_task_intval.h
|
||||||
|
Include33=..\..\..\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r\math.h
|
||||||
|
Include34=self_flash.h
|
||||||
|
Include35=pedo_lpf_coeff.h
|
||||||
[Options.LK78K0R 0]
|
[Options.LK78K0R 0]
|
||||||
Version=100
|
Version=100
|
||||||
O0=bsr_k0r.lmf
|
O0=bsr_k0r.lmf
|
||||||
@ -780,7 +842,7 @@ G=1
|
|||||||
E=0
|
E=0
|
||||||
E0=flash.elk
|
E0=flash.elk
|
||||||
E1=a.elk
|
E1=a.elk
|
||||||
GO=1
|
GO=0
|
||||||
GOValue=85
|
GOValue=85
|
||||||
GOStart=FC00
|
GOStart=FC00
|
||||||
GOSizeValue=1024
|
GOSizeValue=1024
|
||||||
@ -989,65 +1051,3 @@ DefaultMode2=1
|
|||||||
DefaultMode3=1
|
DefaultMode3=1
|
||||||
DefaultMode4=1
|
DefaultMode4=1
|
||||||
DefaultMode5=1
|
DefaultMode5=1
|
||||||
[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=task_status.c
|
|
||||||
Source24=led_cam.c
|
|
||||||
Source25=led_pow.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=..\..\..\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r\fsl.h
|
|
||||||
Include15=fsl_user.h
|
|
||||||
Include16=i2c_ctr.h
|
|
||||||
Include17=pm.h
|
|
||||||
Include18=rtc.h
|
|
||||||
Include19=reboot.h
|
|
||||||
Include20=magic.h
|
|
||||||
Include21=incs.h
|
|
||||||
Include22=i2c_twl.h
|
|
||||||
Include23=accero.h
|
|
||||||
Include24=pedometer.h
|
|
||||||
Include25=sw.h
|
|
||||||
Include26=adc.h
|
|
||||||
Include27=led.h
|
|
||||||
Include28=batt_params.h
|
|
||||||
Include29=pool.h
|
|
||||||
Include30=i2c_twl_defs.h
|
|
||||||
Include31=voltable.h
|
|
||||||
Include32=renge\renge_task_intval.h
|
|
||||||
Include33=..\..\..\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r\math.h
|
|
||||||
Include34=self_flash.h
|
|
||||||
Include35=pedo_lpf_coeff.h
|
|
||||||
|
|||||||
@ -1,14 +1,17 @@
|
|||||||
[ProjectManager]
|
[ProjectManager]
|
||||||
FrameMax=1
|
FrameMax=1
|
||||||
FrameX=304
|
FrameX=75
|
||||||
FrameY=108
|
FrameY=75
|
||||||
FrameCX=1440
|
FrameCX=1440
|
||||||
FrameCY=850
|
FrameCY=850
|
||||||
OpenFile1=ProjectWindow
|
OpenFile1=batt_params.h,0,596,19,1842,741,0,19,0,0
|
||||||
|
OpenFile2=led.c,0,100,100,1295,581,2,168,45,0
|
||||||
|
OpenFile3=ProjectWindow
|
||||||
PrjPos=0,0,706,0,291
|
PrjPos=0,0,706,0,291
|
||||||
OpenFile2=batt_params.h,0,596,19,1842,741,0,19,0,0
|
OpenFile4=led_cam.c,0,125,125,1320,606,0,24,0,0
|
||||||
OpenFile3=config.h,0,442,428,1557,1029,63,10,0,0
|
OpenFile5=led_pow.c,0,150,150,1345,631,0,205,0,0
|
||||||
OpenFile4=OutputWindow
|
OpenFile6=config.h,0,442,428,1557,1029,29,23,29,0
|
||||||
|
OpenFile7=OutputWindow
|
||||||
OutputPos=0,34,740,376,1323
|
OutputPos=0,34,740,376,1323
|
||||||
ActivePRJ=yav_mcu_bsr.prj
|
ActivePRJ=yav_mcu_bsr.prj
|
||||||
[ProjectWindow]
|
[ProjectWindow]
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user