From 1415d2864df8936245526c49a3dfd156cc9ae9d8 Mon Sep 17 00:00:00 2001 From: n2232 Date: Thu, 26 Jan 2012 08:13:21 +0000 Subject: [PATCH] =?UTF-8?q?=E3=82=A8=E3=83=BC=E3=82=B8=E3=83=B3=E3=82=B0?= =?UTF-8?q?=E7=B5=90=E6=9E=9C=E3=82=92=E3=83=95=E3=82=A3=E3=83=BC=E3=83=89?= =?UTF-8?q?=E3=83=90=E3=83=83=E3=82=AF=E3=80=82PEE(branches/CTR=5FSDK-3=5F?= =?UTF-8?q?2=5F5-PEE=20r45674=E4=BB=98=E8=BF=91)=E3=81=AB=E3=82=B3?= =?UTF-8?q?=E3=83=9F=E3=83=83=E3=83=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-05-23%20-%20ctr.7z%20+%20svn_v1.068.zip/ctr/svn/ctr_mcu@445 013db118-44a6-b54f-8bf7-843cb86687b1 --- branches/2.14_spfl_dp2(sdk_3)/accero.c | 7 ++- branches/2.14_spfl_dp2(sdk_3)/i2c_ctr.c | 6 +- branches/2.14_spfl_dp2(sdk_3)/i2c_mcu.c | 63 +++++---------------- branches/2.14_spfl_dp2(sdk_3)/i2c_twl.c | 8 ++- branches/2.14_spfl_dp2(sdk_3)/led.c | 3 +- branches/2.14_spfl_dp2(sdk_3)/loader.c | 4 +- branches/2.14_spfl_dp2(sdk_3)/pm.c | 10 ++-- branches/2.14_spfl_dp2(sdk_3)/task_misc.c | 21 +++---- branches/2.14_spfl_dp2(sdk_3)/task_status.c | 1 + branches/2.14_spfl_dp2(sdk_3)/task_sys.c | 11 ++-- 10 files changed, 54 insertions(+), 80 deletions(-) diff --git a/branches/2.14_spfl_dp2(sdk_3)/accero.c b/branches/2.14_spfl_dp2(sdk_3)/accero.c index 652cfd7..16819dc 100644 --- a/branches/2.14_spfl_dp2(sdk_3)/accero.c +++ b/branches/2.14_spfl_dp2(sdk_3)/accero.c @@ -4,7 +4,7 @@ ・フラグが立っていれば歩数カウント ・加速度センサ割り込みからタスクを登録して下さい。(I2Cの競合回避などがあるので) - $Id$ + $Id: accero.c 418 2011-09-22 01:35:37Z n2232 $ ======================================================== */ #ifndef _WIN32 @@ -135,8 +135,9 @@ task_status_immed tski_cbk_accero( ) iic_mcu_read( IIC_SLA_ACCEL, ( ACC_REG_X | ACC_REG_FLG_BURST_ACCESS ), ACC_RAW_DATA_SIZE, temp ); } } - if(( system_status.pwr_state == ON ) - ||( system_status.pwr_state == SLEEP ) + if( (( system_status.pwr_state == ON ) + ||( system_status.pwr_state == SLEEP )) + &&( ( vreg_ctr[VREG_C_ACC_CONFIG] & VREG_BITMASK_ACC_CONF_HOSU ) != 0 ) ) { pedometer(); // 歩数計 diff --git a/branches/2.14_spfl_dp2(sdk_3)/i2c_ctr.c b/branches/2.14_spfl_dp2(sdk_3)/i2c_ctr.c index 7da8c7f..8f73a6a 100644 --- a/branches/2.14_spfl_dp2(sdk_3)/i2c_ctr.c +++ b/branches/2.14_spfl_dp2(sdk_3)/i2c_ctr.c @@ -2,7 +2,7 @@ 対SoC 新規チャンネル I2C通信 藤田@開技.nintendo '09 Apr - $Id$ + $Id: i2c_ctr.c 418 2011-09-22 01:35:37Z n2232 $ ======================================================== */ #ifndef _WIN32 #pragma interrupt INTIICA1 int_iic_ctr RB1 @@ -280,8 +280,8 @@ void IIC_ctr_Init( void ) WTIM = 1; // 自動でACKを返した後clkをLに固定する ACKE = 1; - IICWH = 5; - IICWL = 10; // L期間の長さ + IICWH = 9; + IICWL = 11; // L期間の長さ SMC = 1; // 高速モード DFC = 1; // デジタルフィルタon (@fast mode) diff --git a/branches/2.14_spfl_dp2(sdk_3)/i2c_mcu.c b/branches/2.14_spfl_dp2(sdk_3)/i2c_mcu.c index 0a093e5..e0842e7 100644 --- a/branches/2.14_spfl_dp2(sdk_3)/i2c_mcu.c +++ b/branches/2.14_spfl_dp2(sdk_3)/i2c_mcu.c @@ -17,6 +17,10 @@ #include "loader.h" #include "util_funcs.h" +#include "i2c_mcu_sub.h" + + + // ======================================================== // レジスタのビット名 // プリフィックスbだが、一部のビット名がレジスタ名にかぶるため... @@ -54,12 +58,12 @@ // ======================================================== static void iic_mcu_send_st( ); -static void iic_mcu_send_re_st( ); -static void iic_mcu_send_sp( ); -static i2c_err iic_mcu_send_a_byte( u8 ); -static i2c_err iic_mcu_call_slave( u8 slave ); - +// *subからしか呼ばない +void iic_mcu_send_re_st( ); +void iic_mcu_send_sp( ); +i2c_err iic_mcu_send_a_byte( u8 ); +i2c_err iic_mcu_call_slave( u8 slave ); // ======================================================== @@ -475,7 +479,7 @@ __interrupt void int_iic10( )  NACK → ストップコンディションを出す。 返:I2C_ERR_NOSLAVE ***********************************************/ -static i2c_err iic_mcu_call_slave( u8 slave ) +i2c_err iic_mcu_call_slave( u8 slave ) { iic_mcu_send_st( ); @@ -504,7 +508,7 @@ static i2c_err iic_mcu_call_slave( u8 slave ) 書き終わるまで帰りません ***********************************************/ -static i2c_err iic_mcu_send_a_byte( u8 dat ) +i2c_err iic_mcu_send_a_byte( u8 dat ) { IICMK10 = 1; IICIF10 = 0; @@ -546,7 +550,7 @@ static void iic_mcu_send_st( ) /********************************************//** リスタート発行 ***********************************************/ -static void iic_mcu_send_re_st( ) +void iic_mcu_send_re_st( ) { ST0 |= 0x0004; SO0 |= 0x0400 | TAUS_MASK; // ( SDA = H ), SCL -> H @@ -565,7 +569,7 @@ static void iic_mcu_send_re_st( ) この前に、「最後のバイトの送受信」の時に前準備が必要です。 ***********************************************/ -static void iic_mcu_send_sp( ) +void iic_mcu_send_sp( ) { ST0 = 0x0004; SOE0 = 0; // 受信の時はもっと前に「も」設定してる。(NACK出力) @@ -645,44 +649,3 @@ void iic_mcu_stop( ) iic_mcu_initialized = false; } - - - -/********************************************//** - コーデックに 『1バイト』 ライト - - iic_mcu_write_a_byte CODEC不具合ワークアラウンド - ***********************************************/ -i2c_err iic_mcu_write_a_byte_codec( u8 adrs, u8 dat ) -{ - static u8 count; - - // 1文字の時はDMAとか起動しないでさっさと終わらせる - if( iic_mcu_wait_free() !=I2C_ERR_OK ) - { - return( I2C_ERR_TIMEOUT ); - } - - // スタートコンディションとスレーブの呼び出し... - IICMK10 = 1; - if( iic_mcu_call_slave( IIC_SLA_CODEC ) != I2C_ERR_OK ) - { - iic_mcu_busy = false; - return ( I2C_ERR_NOSLAVE ); - } - iic_mcu_send_a_byte( adrs ); - iic_mcu_send_a_byte( dat ); - - // ワークアラウンドここから - /// リスタートにしてダミーライト - iic_mcu_send_re_st( ); - iic_mcu_send_a_byte( IIC_SLA_CODEC ); // ダミーライト - iic_mcu_send_a_byte( 0x20 ); // ゴミを書いても問題ないアドレス - iic_mcu_send_a_byte( count ); // 何でもよいのだが。メモリ足りなくなったら固定値に - - count ++; - - iic_mcu_send_sp( ); - iic_mcu_busy = false; - return ( I2C_ERR_OK ); -} diff --git a/branches/2.14_spfl_dp2(sdk_3)/i2c_twl.c b/branches/2.14_spfl_dp2(sdk_3)/i2c_twl.c index 838bdbb..e4014d0 100644 --- a/branches/2.14_spfl_dp2(sdk_3)/i2c_twl.c +++ b/branches/2.14_spfl_dp2(sdk_3)/i2c_twl.c @@ -1,7 +1,7 @@ /* ======================================================== TWL 互換I2C - $Id$ + $Id: i2c_twl.c 418 2011-09-22 01:35:37Z n2232 $ ======================================================== */ #ifndef _WIN32 @@ -52,6 +52,7 @@ #define WTIM WTIM0 #define SMC SMC0 #define TRC TRC0 +#define DFC DFC0 #endif // _MCU_BSR_ @@ -213,10 +214,11 @@ void IIC_twl_Init( void ) WTIM = 1; // 自動でACKを返した後clkをLに固定する ACKE = 1; // ダメCPUは無視して次の通信をはじめるかもしれないんで早くclkを開放しないといけない - IICWH = 5; - IICWL = 10; // L期間の長さ(?) + IICWH = 9; + IICWL = 11; // L期間の長さ(?) SMC = 1; + DFC = 1; // デジタルフィルタon (@fast mode) IICAMK = 0; // 割り込みを許可 diff --git a/branches/2.14_spfl_dp2(sdk_3)/led.c b/branches/2.14_spfl_dp2(sdk_3)/led.c index 4cbd7ea..3fba2aa 100644 --- a/branches/2.14_spfl_dp2(sdk_3)/led.c +++ b/branches/2.14_spfl_dp2(sdk_3)/led.c @@ -1,6 +1,7 @@ /* ======================================================== LED.c - $Id$ + + $Id: LED.c 418 2011-09-22 01:35:37Z n2232 $ ======================================================== */ #ifndef _WIN32 diff --git a/branches/2.14_spfl_dp2(sdk_3)/loader.c b/branches/2.14_spfl_dp2(sdk_3)/loader.c index ccfd56e..56a8ebb 100644 --- a/branches/2.14_spfl_dp2(sdk_3)/loader.c +++ b/branches/2.14_spfl_dp2(sdk_3)/loader.c @@ -6,7 +6,7 @@ ブートローダー部 ホストの通信と、自己書き換え、ファームのチェックを行う。 - $Id$ + $Id: loader.c 418 2011-09-22 01:35:37Z n2232 $ ======================================================== */ #ifndef _WIN32 @@ -251,7 +251,7 @@ void hdwinit( void ) CMC = bits8(0,0,0,1, 0,0,0,0); /* X1発振せず(入力ポート)、XT1使用、超低電力発振は不安定に付き通常で */ CSC = bits8(1,0,0,0, 0,0,0,0); /* X1発振なし、XT1発振あり、高速内蔵発振動作 */ - OSMC = bits8(1,0,0,0, 0,0,0,1); /* 隠しレジスタ */ + OSMC = bits8(0,0,0,0, 0,0,0,1); /* 隠しレジスタ */ NOP();NOP();NOP(); // 3clk開ける CKC = bits8(0,0,0,0, 1,0,0,0); /* CPU/周辺クロック=fMAIN、fMAIN=fMX、fCLK=fMX */ diff --git a/branches/2.14_spfl_dp2(sdk_3)/pm.c b/branches/2.14_spfl_dp2(sdk_3)/pm.c index 02a4f0a..66e730b 100644 --- a/branches/2.14_spfl_dp2(sdk_3)/pm.c +++ b/branches/2.14_spfl_dp2(sdk_3)/pm.c @@ -3,6 +3,8 @@ 藤田@開技 nintendo '08 Dec + + $Id: pm.c 418 2011-09-22 01:35:37Z n2232 $ ======================================================== */ #ifndef _WIN32 @@ -172,6 +174,7 @@ static void update_chg_led() // レジスタの充電中ビットはLEDに同期する set_bit( LED_CHARGE, vreg_ctr[VREG_C_STATUS], REG_BIT_BATT_CHARGE ); // set_bitのみ。 + /// 割り込みはtask_status()で行う } @@ -831,7 +834,7 @@ err PM_LCD_on( ) else { // CTR 時 - wait_ms( DELAY_PM_TSS_50B_AND_TCOM ); + wait_ms( DELAY_PM_TSS_50B_AND_TCOM ); } PM_TCOM_on( ); @@ -876,7 +879,6 @@ void PM_LCD_off() } - // 50msとか待つし、確認しましょうかね… if( read_pmic( PM_REG_ADRS_VDD_LCD ) != 0 ) { @@ -1264,9 +1266,9 @@ void codec_reg_init() ROM節約のため ***********************************************/ -err send_cmd_mgic_2B( u8 reg, u16 dat ) // 送信バッファ +err send_cmd_mgic_2B( u8 reg, u16 dat ) { - u16 temp = dat; + u16 temp = dat; // 送信バッファ return iic_mcu_write( IIC_SLA_BT_GAUGE, reg, 2, &temp ); // DMA転送するので送信データバッファのポインタがどうせ必要 } diff --git a/branches/2.14_spfl_dp2(sdk_3)/task_misc.c b/branches/2.14_spfl_dp2(sdk_3)/task_misc.c index 30b821a..37bb0d6 100644 --- a/branches/2.14_spfl_dp2(sdk_3)/task_misc.c +++ b/branches/2.14_spfl_dp2(sdk_3)/task_misc.c @@ -1,7 +1,8 @@ /* ======================================================== その他雑多なタスク タスクを分けた方が見やすくなる気がするが、リソースの問題で分けなかった物 - $Id$ + + $Id: task_misc.c 418 2011-09-22 01:35:37Z n2232 $ ======================================================== */ #ifndef _WIN32 @@ -355,15 +356,15 @@ static const u8 *infos_table[] = { 出てくる順場は、 - - 1) プラットフォーム - - 2) PMIC バージョン - - 3) 電池メーカー - - 4) ガスゲージバージョン - - 5) 〃 - - 6) ( rcomp & 0xFF ) - - 7) raw_adc_temperature - - 8) ( !temp_zone_charge_disable | ( bt_authorized << 1 ) ) - - 9) お知らせLEDはフルカラー? + - 1) プラットフォーム + - 2) PMIC バージョン + - 3) 電池メーカー + - 4) ガスゲージバージョン + - 5) 〃 + - 6) ( rcomp & 0xFF ) + - 7) raw_adc_temperature + - 8) ( !temp_zone_charge_disable | ( bt_authorized << 1 ) ) + - 9) お知らせLEDはフルカラー? - 10) system_status.family ***********************************************/ u8 extinfo_read(void) diff --git a/branches/2.14_spfl_dp2(sdk_3)/task_status.c b/branches/2.14_spfl_dp2(sdk_3)/task_status.c index 4a9c7b9..644bd7a 100644 --- a/branches/2.14_spfl_dp2(sdk_3)/task_status.c +++ b/branches/2.14_spfl_dp2(sdk_3)/task_status.c @@ -81,6 +81,7 @@ void tsk_status( ) else { set_irq( VREG_C_IRQ0, REG_BIT_SHELL_CLOSE ); + } } } } diff --git a/branches/2.14_spfl_dp2(sdk_3)/task_sys.c b/branches/2.14_spfl_dp2(sdk_3)/task_sys.c index 067ce2c..35ab583 100644 --- a/branches/2.14_spfl_dp2(sdk_3)/task_sys.c +++ b/branches/2.14_spfl_dp2(sdk_3)/task_sys.c @@ -423,6 +423,7 @@ void tsk_sys( ) system_status.poweron_reason = RSN_PWSW; system_status.pwr_state = ON_CHECK; +#ifndef _TAIKENDAI_SEISAN_SPECIAL_ // 試遊台なら自動で電源再投入 if( system_status.taikendai ) { @@ -431,6 +432,7 @@ void tsk_sys( ) system_status.poweron_reason = RSN_TRIAL; system_status.pwr_state = ON_CHECK; } +#endif } else { @@ -452,7 +454,7 @@ void tsk_sys( ) #ifdef _DBG_CHK_OFF_LEAK_ leak_check(); #endif - CKC = bits8(0,0,0,0, 1,0,0,1); // 4MHzに落としてからSTOPしなくてはならない + CKC = bits8(0,0,0,0, 1,0,0,1); // 4MHzに落として(bit0)からSTOPしなくてはならない OSMC = bits8(0,0,0,0, 0,0,0,0); // 5MHz以下モードへ。 if( PM_EXTDC_n_RAW ) // きわどいタイミングで挿抜が起きることがある。HAL通さないべき(off中ですし) @@ -466,11 +468,11 @@ void tsk_sys( ) // ・RTCアラーム(現在封印) // クロック復帰 - OSMC = bits8(1,0,0,0, 0,0,0,1); // 8MHz動作準備 + OSMC = bits8(0,0,0,0, 0,0,0,1); // 8MHz動作準備 renge_flg_interval = 0; hal_update(); - CKC = bits8(0,0,0,0, 1,0,0,0); // FSEL = 1 後3clk以上開ける + CKC = bits8(0,0,0,0, 1,0,0,0); // OSMC.FSEL = 1 後3clk以上開ける // 起きた理由は? if( !PM_EXTDC_n ){ @@ -495,11 +497,12 @@ void tsk_sys( ) RTCIMK = 0; // sys tick タイマー有効 +#ifndef _TAIKENDAI_SEISAN_SPECIAL_ if( system_status.taikendai ) { system_status.pwr_state = OFF_TRIG; } - +#endif } } }