From 033a70af668301888839938b6c6bc3173ab748ae Mon Sep 17 00:00:00 2001 From: fujita_ryohei Date: Fri, 2 Apr 2010 06:30:50 +0000 Subject: [PATCH] =?UTF-8?q?=E3=83=BB=E6=AD=A9=E6=95=B0=E8=A8=88=E9=83=A8?= =?UTF-8?q?=E5=88=86=E3=81=AE=E5=8A=A0=E9=80=9F=E5=BA=A6on=E3=81=A8?= =?UTF-8?q?=E6=AD=A9=E6=95=B0=E8=A8=88on=E3=83=93=E3=83=83=E3=83=88?= =?UTF-8?q?=E3=81=8C=E9=96=93=E9=81=95=E3=81=88=E3=81=A6=E3=81=84=E3=81=9F?= =?UTF-8?q?=E4=BB=B6=20=E3=80=80=E2=86=92=E4=BA=92=E6=8F=9B=E8=A3=BD?= =?UTF-8?q?=E3=81=AE=E3=81=9F=E3=82=81=E4=BB=95=E6=A7=98=E6=9B=B8=E3=82=92?= =?UTF-8?q?=E5=A4=89=E6=9B=B4(accero.c)=20=E3=83=BBTypeT=E3=81=A7=E3=81=AF?= =?UTF-8?q?WDT=E6=99=82=E3=81=ABFCRAM=20RESET=20=E3=82=92=E3=81=8B?= =?UTF-8?q?=E3=81=91=E3=81=A6=E3=81=97=E3=81=BE=E3=81=86=E3=81=AE=E3=82=92?= =?UTF-8?q?=E5=9B=9E=E9=81=BF=E3=81=A7=E3=81=8D=E3=81=AA=E3=81=84=20?= =?UTF-8?q?=E3=80=80=E6=9A=B4=E8=B5=B0=E3=81=97=E3=81=A6=E3=81=97=E3=81=BE?= =?UTF-8?q?=E3=81=86=E3=81=AE=E3=81=A7=E3=83=AA=E3=82=BB=E3=83=83=E3=83=88?= =?UTF-8?q?=E3=82=92=E3=81=8B=E3=81=91=E3=82=8B(loader.c)=20=E3=83=BB?= =?UTF-8?q?=E3=83=90=E3=83=83=E3=83=86=E3=83=AA=E3=83=91=E3=83=A9=E3=83=A1?= =?UTF-8?q?=E3=83=BC=E3=82=BF=E6=95=B4=E7=90=86=EF=BC=88=E7=99=BD=E7=AE=B1?= =?UTF-8?q?=E5=90=91=E3=81=91=E5=89=8A=E9=99=A4=EF=BC=89(pm.c)=20=E3=83=BB?= =?UTF-8?q?MCU=E3=83=AA=E3=83=96=E3=83=BC=E3=83=88=E6=99=82=E3=81=ABLED?= =?UTF-8?q?=E3=81=8C=E3=83=95=E3=82=A7=E3=83=BC=E3=83=89=E3=82=A4=E3=83=B3?= =?UTF-8?q?=E3=81=97=E3=81=A6=E3=81=9F=E3=81=AE=E3=82=92=E4=BF=AE=E6=AD=A3?= =?UTF-8?q?(led.c)=20=E3=83=BB=E3=83=AA=E3=83=96=E3=83=BC=E3=83=88?= =?UTF-8?q?=E5=88=A4=E5=AE=9A=E3=82=92=E3=83=9F=E3=82=B9=E3=81=A3=E3=81=A6?= =?UTF-8?q?=E3=81=84=E3=81=9F=E3=81=A8=E3=81=93=E3=82=8D=E3=82=92=E4=BF=AE?= =?UTF-8?q?=E6=AD=A3(main.c)=20=E3=83=BB=E3=83=AA=E3=83=96=E3=83=BC?= =?UTF-8?q?=E3=83=88=E3=83=95=E3=83=A9=E3=82=B0=E3=82=92=E6=B6=88=E3=81=99?= =?UTF-8?q?=E3=81=AE=E3=82=92=E5=BF=98=E3=82=8C=E3=81=A6=E3=81=84=E3=81=9F?= =?UTF-8?q?=E3=80=82(task=5Fsys.c)?= 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@118 013db118-44a6-b54f-8bf7-843cb86687b1 --- trunk/accero.c | 4 +- trunk/batt_params.h | 62 ++++++++++++++---------------- trunk/led.c | 6 +++ trunk/loader.c | 15 +++++--- trunk/main.c | 6 +-- trunk/pm.c | 9 ++++- trunk/renge/renge_task_immediate.h | 1 + trunk/self_flash.c | 36 +++++++++++++++-- trunk/task_sys.c | 1 + trunk/vreg_ctr.c | 23 ++++------- 10 files changed, 98 insertions(+), 65 deletions(-) diff --git a/trunk/accero.c b/trunk/accero.c index f6bd79b..6aa3069 100644 --- a/trunk/accero.c +++ b/trunk/accero.c @@ -45,8 +45,8 @@ #define ACC_BITS_ALL_AXIS_ON 7 -#define VREG_BITMASK_ACC_CONF_ACQ ( 1 << 1 ) -#define VREG_BITMASK_ACC_CONF_HOSU ( 1 << 0 ) +#define VREG_BITMASK_ACC_CONF_ACQ ( 1 << 0 ) +#define VREG_BITMASK_ACC_CONF_HOSU ( 1 << 1 ) diff --git a/trunk/batt_params.h b/trunk/batt_params.h index 11487d9..b18a6c4 100644 --- a/trunk/batt_params.h +++ b/trunk/batt_params.h @@ -14,7 +14,33 @@ enum BATT_VENDER { static const u8 BT_PARAM[][64] = { - { // ID = 0 Panasonic + // ID = 0 GND 白箱 + /// パラメータ無し + { // ID = 1 120 ohm + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + }, + { // ID = 2 360 hom + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + }, + { // ID = 3 750 ohm + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + }, + { // ID = 4 1.3kohm + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + }, + { // ID = 5 2.7kohm パナ 0xAD, 0x30, 0xAE, 0x70, 0xB0, 0x00, 0xB3, 0x00, 0xB4, 0x70, 0xB5, 0xA0, 0xB7, 0x80, 0xBA, 0x00, @@ -27,43 +53,13 @@ static const u8 BT_PARAM[][64] = { 0x0C, 0xF0, 0x08, 0xC0, 0x08, 0xB0, 0x07, 0xF0, 0x0B, 0x00, 0x05, 0xD0, 0x02, 0x00, 0x09, 0x00 }, - { + { // ID = 6 8.2kohm 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, - { - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - }, - { - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - }, - { - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - }, - { - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - }, - { - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - }, - { // ID = 7 Maxell + { // ID = 7 マクセル 0xAD, 0x30, 0xAE, 0x70, 0xB0, 0x00, 0xB3, 0x00, 0xB4, 0x70, 0xB5, 0xA0, 0xB7, 0x80, 0xBA, 0x00, diff --git a/trunk/led.c b/trunk/led.c index 2fc55d0..b231d0f 100644 --- a/trunk/led.c +++ b/trunk/led.c @@ -73,6 +73,12 @@ void LED_init( ) TS0 = 0b0000000011101111; // 動作開始 TDR00 = LED_BRIGHT_MAX - 1; // 10bit, 周期 + + if( system_status.reboot ) + { + vreg_ctr[VREG_C_LED_POW] = LED_POW_ILM_AUTO; + LED_duty_pow_H = LED_BRIGHT_MAX; + } } diff --git a/trunk/loader.c b/trunk/loader.c index 21b1852..caeb091 100644 --- a/trunk/loader.c +++ b/trunk/loader.c @@ -72,14 +72,19 @@ void main( ) WDT_Restart( ); if( RTCEN ) { - system_status.reboot = 1; + system_status.reboot = 1; } else if( ( RESF & 0x10 ) != 0) // WDRF,WDTでリセット { - system_status.reboot = 1; - vreg_ctr[ VREG_C_MCU_STATUS ] |= REG_BIT_STATUS_WDT_RESET; - set_irq( VREG_C_IRQ0, REG_BIT_IRQ_WDT_RESET ); - hdwinit2( ); + system_status.reboot = 1; +#ifdef _PMIC_TWL_ + // 暴走してしまうので再起動させる + PM_reset_ast(); +#else + vreg_ctr[ VREG_C_MCU_STATUS ] |= REG_BIT_STATUS_WDT_RESET; + set_irq( VREG_C_IRQ0, REG_BIT_IRQ_WDT_RESET ); +#endif + hdwinit2( ); } else { diff --git a/trunk/main.c b/trunk/main.c index 29ae02c..388d7e0 100644 --- a/trunk/main.c +++ b/trunk/main.c @@ -44,16 +44,12 @@ void main_loop( void ) if( system_status.reboot ) { - // システムの電源が入りっぱなしだったら、 - // マイコンだけが再起動したのだ - // todo -#ifdef _MCU_BSR_ +#ifdef _PMIC_TWL_ if( RESET1_n ) #else if( PM_chk_LDSW() != 0 ) #endif { - vreg_ctr[VREG_C_LED_POW] = LED_POW_ILM_AUTO; system_status.pwr_state = ON_TRIG; } } diff --git a/trunk/pm.c b/trunk/pm.c index d8be15b..8283491 100644 --- a/trunk/pm.c +++ b/trunk/pm.c @@ -13,6 +13,11 @@ #include "renge.h" #include "batt_params.h" + +#include +#include "fsl_user.h" +extern u16 pool[]; + // ======================================================== @@ -82,7 +87,7 @@ void PM_init( ) // 電池メーカーの識別 BT_DET_P = 1; - temp = ( u8 ) ( get_adc( ADC_SEL_BATT_DET ) >> 5 ); + temp = ( u8 ) ( ( get_adc( ADC_SEL_BATT_DET ) >> 5 ) -1 ); // 識別値0の白箱の分、インデックス合わせ BT_DET_P = 0; iic_mcu_set_wo_dma( ); @@ -921,3 +926,5 @@ task_status_immed tski_PM_BL_set() return( ERR_SUCCESS ); } + + diff --git a/trunk/renge/renge_task_immediate.h b/trunk/renge/renge_task_immediate.h index 501e12d..0eab45c 100644 --- a/trunk/renge/renge_task_immediate.h +++ b/trunk/renge/renge_task_immediate.h @@ -13,6 +13,7 @@ extern task_status_immed acc_read(); extern task_status_immed acc_write(); extern task_status_immed tski_mcu_info_read(); //extern task_status_immed acc_hosu_set(); +extern task_status_immed tski_mcu_reset(); diff --git a/trunk/self_flash.c b/trunk/self_flash.c index 507f9a9..ede570f 100644 --- a/trunk/self_flash.c +++ b/trunk/self_flash.c @@ -161,7 +161,11 @@ err firm_update( ) != FSL_OK ) { - FSL_Close( ); + // 書き込み後のチェックエラー + // リブートののち、リストア + FSL_ForceReset(); // リセット +// FSL_SwapBootCluster( ); +// FSL_Close( ); return ( ERR_ERR ); } @@ -200,8 +204,11 @@ err firm_update( ) } else { - FSL_Close( ); - firm_restore( ); + // データエラー + // リブートののち、リストア + FSL_ForceReset(); // リセット +// FSL_SwapBootCluster( ); +// FSL_Close( ); // 戻ってこない // } } @@ -232,6 +239,7 @@ err firm_restore( ) // リブート // スワップは不要です! +// FSL_SwapBootCluster(); FSL_ForceReset( ); return ( ERR_SUCCESS ); } @@ -263,6 +271,10 @@ static void FSL_Open( void ) while( DST1 ){;} DEN1 = 0; + MK0 = 0xFFFF; + MK1 = 0xFFFF; + MK2 = 0xFFFF; + FSL_FLMD0_HIGH; // フラッシュ書き替え許可 } @@ -348,7 +360,10 @@ static err firm_duplicate( __far u8 * p_rom, } // 1ブロック書き込み完了。内部電圧チェックを行う - while( FSL_IVerify( target_block ) != FSL_OK ){;} + while( FSL_IVerify( target_block ) != FSL_OK ){ + // todo + ; + } } return( ERR_SUCCESS ); @@ -372,3 +387,16 @@ static err my_FSL_Init() return( ERR_SUCCESS ); } + +task_status_immed tski_mcu_reset() +{ + // 普通に再起動 + my_FSL_Init(); + FSL_Close( ); +// FSL_SwapBootCluster(); + FSL_ForceReset(); // リセット + + // 保険? // + WDTE = 0xAA; // WDTで再起動(テスト向け) + return( ERR_SUCCESS ); // no reach +} diff --git a/trunk/task_sys.c b/trunk/task_sys.c index e7e1605..9a89b99 100644 --- a/trunk/task_sys.c +++ b/trunk/task_sys.c @@ -142,6 +142,7 @@ void tsk_sys( ) MK2L = ~INT_MSK2_WIFI_TX_KE3; #endif + system_status.reboot = 0; system_status.pwr_state = ON; break; diff --git a/trunk/vreg_ctr.c b/trunk/vreg_ctr.c index f58ca08..e37cd72 100644 --- a/trunk/vreg_ctr.c +++ b/trunk/vreg_ctr.c @@ -277,26 +277,19 @@ void vreg_ctr_write( u8 adrs, u8 data ) break; case ( VREG_C_COMMAND3 ): + vreg_ctr[adrs] = data; switch ( data ) { - case ( 'r' ): // マイコン再起動 + case ( 'r' ): + // 割り込みルーチンからFSLライブラリを呼ぶのは禁止のため +// renge_task_immed_add( tski_mcu_reset ); +// break; + + case ( 'w' ): + // WDTで再起動(テスト向け) WDTE = 0xAA; - - DI( ); - RTCE = 0; - while( DST1 ){;} - DEN1 = 0; - FSL_FLMD0_HIGH; // フラッシュ書き替え許可 - FSL_Init( pool ); // ライブラリ初期化。割り込み中断考慮せず - FSL_ModeCheck( ); // ライトプロテクトチェック。失敗することを考慮せず - FSL_ForceReset(); // リセット - break; - - default: - vreg_ctr[adrs] = data; break; } - break; } return; }