From 9453e8fbfeca9f7ca626c9afcb0b4edb0f4ec867 Mon Sep 17 00:00:00 2001 From: fujita_ryohei Date: Tue, 29 Sep 2009 10:31:26 +0000 Subject: [PATCH] git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-05-23%20-%20ctr.7z%20+%20svn_v1.068.zip/ctr/svn/ctr_mcu@11 013db118-44a6-b54f-8bf7-843cb86687b1 --- trunk/accero.c | 83 ++++- trunk/adc.c | 54 ++- trunk/bsr_system.h | 1 + trunk/config.h | 14 +- trunk/i2c_ctr.c | 47 +-- trunk/i2c_mcu.c | 71 ++-- trunk/i2c_twl.c | 43 +-- trunk/incs.h | 1 - trunk/ini_VECT.c | 3 + trunk/jhl_defs.h | 21 ++ trunk/led.c | 259 +++++++++---- trunk/led.h | 31 +- trunk/loader.c | 81 +++-- trunk/magic.c | 62 +++- trunk/main.c | 53 ++- trunk/pm.c | 95 ++--- trunk/pm.h | 2 +- trunk/renge/renge.c | 11 +- trunk/renge/renge_task_config.rb | 2 +- trunk/renge/renge_task_intval.h | 26 +- trunk/renge/renge_tasks.txt | 1 + trunk/rtc.c | 45 ++- trunk/rtc.h | 4 + trunk/self_flash.c | 59 +-- trunk/tasks.c | 147 ++++---- trunk/tasks_sys.c | 148 ++++---- trunk/user_define.h | 50 ++- trunk/vreg_ctr.c | 163 +++++---- trunk/vreg_ctr.h | 46 ++- trunk/vreg_twl.c | 15 +- trunk/yav_mcu_bsr.prj | 602 +++++++++++++++---------------- trunk/yav_mcu_bsr.prk | 29 +- trunk/yav_mcu_bsr.sdb | 66 ++-- 33 files changed, 1360 insertions(+), 975 deletions(-) diff --git a/trunk/accero.c b/trunk/accero.c index 4305205..99b80b9 100644 --- a/trunk/accero.c +++ b/trunk/accero.c @@ -41,17 +41,15 @@ #define ACC_BITS_ALL_AXIS_ON 7 -#define VREG_BITMASK_ACC_CONF0_HOSU 1 -#define VREG_BITMASK_ACC_CONF1_ACQ 3 +#define VREG_BITMASK_ACC_CONF_HOSU ( 1 << 1 ) +#define VREG_BITMASK_ACC_CONF_ACQ ( 1 << 0 ) + // ======================================================== -u8 hosu_mode = 0; -/* - 0: power down 停止 - 1: 動作 -*/ +task_interval tsk_soft_int(); + /* ======================================================== @@ -66,17 +64,14 @@ task_status_immed tsk_cbk_accero(){ // // 加速度センサデータレジスタへの反映 iic_mcu_read( IIC_SLA_ACCEL, ( ACC_REG_X | 0x80 ), 6, &vreg_ctr[VREG_C_ACC_XL] ); - if(( vreg_ctr[ VREG_C_ACC_CONFIG ] & VREG_BITMASK_ACC_CONF1_ACQ ) == 1 ){ - vreg_ctr[ VREG_C_IRQ1 ] |= REG_BIT_ACC_DAT_RDY; - if( ( vreg_ctr[ VREG_C_IRQ_MASK1 ] & REG_BIT_ACC_DAT_RDY ) == 0 ){ - IRQ0_ast; - } + if(( vreg_ctr[ VREG_C_ACC_CONFIG ] & ( VREG_BITMASK_ACC_CONF_ACQ | VREG_BITMASK_ACC_CONF_HOSU ) ) != 0 ){ + set_irq( VREG_C_IRQ1, REG_BIT_ACC_DAT_RDY ); } } // 歩数計 offでなければ、電源off中でも計測 - if(( vreg_ctr[ VREG_C_ACC_CONFIG_HOSU ] & VREG_BITMASK_ACC_CONF0_HOSU ) != 0 ){ - if(( vreg_ctr[ VREG_C_ACC_CONFIG ] & VREG_BITMASK_ACC_CONF1_ACQ ) == 0x01 ){ + if(( vreg_ctr[ VREG_C_ACC_CONFIG ] & VREG_BITMASK_ACC_CONF_HOSU ) != 0x00 ){ + if(( vreg_ctr[ VREG_C_ACC_CONFIG ] & VREG_BITMASK_ACC_CONF_ACQ ) != 0x00 ){ // 歩数計アルゴリズム 100Hz版 }else{ // 同 省電力版 @@ -131,17 +126,25 @@ task_status_immed acc_hosu_set(){ return( ERR_SUCCESS ); // とりあえず、タスクは削除しなくてはならない } - str_send_buf[1] = 0x00; // ...。 - str_send_buf[2] = 0x02; - 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[1] = 0x10; // ctrl2 HPF:normal, filterd, HPF for IRQ : dis/dis, HPF coeff:norm +#ifdef _MCU_WM0_ + str_send_buf[2] = 0x10; // 3 IRQ pol :Active HI, Drive:Pushpull, + // IRQ2flg latch: auto clear after read, IRQ2 conf: IRQ( fall,shock,...) + // 1 : auto clear after read, conf: data ready +#else + str_send_buf[2] = 0x02; // 3 IRQ pol :Active HI, Drive:Pushpull, + // IRQ2flg latch: auto clear after read, IRQ2 conf: IRQ( fall,shock,...) + // 1 : auto clear after read, conf: data ready +#endif + str_send_buf[3] = 0x80; // ctrl3 block update:enable, MSB first, scale: +-2G(default), selftest: dis + + if(( vreg_ctr[ VREG_C_ACC_CONFIG ] & ( VREG_BITMASK_ACC_CONF_HOSU | VREG_BITMASK_ACC_CONF_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 ){ + if(( vreg_ctr[ VREG_C_ACC_CONFIG ] & VREG_BITMASK_ACC_CONF_ACQ ) != 0x00 ){ // 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{ @@ -153,3 +156,43 @@ task_status_immed acc_hosu_set(){ return( ERR_SUCCESS ); } + + +/* ======================================================== + 加速度センサ割り込み + I2Cが使用中かもしれないので、読み出しタスクの登録を行うのみ + ======================================================== */ +__interrupt void intp23_ACC_ready(){ + if( ( vreg_ctr[ VREG_C_ACC_CONFIG ] & 0x03 ) != 0x00 ){ + if(( system_status.pwr_state == ON ) || ( system_status.pwr_state == SLEEP ) ){ + if( ACC_VALID ){ + renge_task_immed_add( tsk_cbk_accero ); + } + } + } +} + + + +/* ======================================================== + 加速度センサ割り込みピンがオリジナルマイコンには無いので + ポーリングする。 + 歩数計用 + todo : // 本物のマイコンなら、割り込みでタスクを登録 + ======================================================== */ +task_interval tsk_soft_int(){ + if( ( vreg_ctr[ VREG_C_ACC_CONFIG ] & 0x03 ) != 0x00 ){ + + if(( system_status.pwr_state == ON ) || ( system_status.pwr_state == SLEEP ) ){ + // Hエッジ検出 + // pin = ( pin << 1 ) + ( ACC_VALID? 1: 0 ); + // if( ( pin & 0x03 ) == 0x01 ){ + if( ACC_VALID ){ + renge_task_immed_add( tsk_cbk_accero ); + } + } + return( 0 ); + } + return( 248 ); +} + diff --git a/trunk/adc.c b/trunk/adc.c index 013d91b..7c6fb62 100644 --- a/trunk/adc.c +++ b/trunk/adc.c @@ -28,16 +28,15 @@ bit adc_updated; ======================================================== */ task_interval tsk_adc(){ static u8 old_tune; - static u8 old_sndvol; static u8 sndvol_codec; -// static u8 bt_temp_old; + static u8 bt_temp_old; if(( system_status.pwr_state == ON ) || ( system_status.pwr_state == SLEEP )){ if( adc_updated ){ #if 0 - tune と Vol の変化では割り込みを入れない + tune の変化では割り込みを入れない // tune if( abs( old_tune - vreg_ctr[ VREG_TUNE ] ) >= 4 ){ old_tune = vreg_ctr[ VREG_TUNE ]; @@ -46,22 +45,31 @@ task_interval tsk_adc(){ IRQ0_ast; } } +#endif // Volume - if( abs( old_sndvol - vreg_ctr[ VREG_C_SND_VOL ] ) >= 4 ){ - old_sndvol = vreg_ctr[ VREG_C_SND_VOL ]; - vreg_ctr[ VREG_C_IRQ0 ] |= REG_BIT_VR_SNDVOL_CHANGE; - if( ( vreg_ctr[ VREG_C_IRQ_MASK0 ] & REG_BIT_VR_SNDVOL_CHANGE ) == 0 ){ - IRQ0_ast; + { + static u8 class_old; + u8 class; + static u8 direction = 0; // 0:上り方向 + u8 comp; // 補正値 + + class = ( vreg_ctr[ VREG_C_SND_VOL ] + ( ( direction != 0 )? 0: 2 ) ) / ( 200 / 8 ) ; + if( class != class_old ){ + direction = ( class > class_old )? 0: 1; + class_old = class; + + set_irq( VREG_C_IRQ0, REG_BIT_VR_SNDVOL_CHANGE ); } + } -#endif // codecに伝える if( vreg_ctr[ VREG_C_SND_VOL ] != sndvol_codec ){ sndvol_codec = vreg_ctr[ VREG_C_SND_VOL ]; #ifndef _CODEC_CTR_ iic_mcu_write_a_byte( IIC_SLA_DCP, 0, sndvol_codec ); +// iic_mcu_write_a_byte( IIC_SLA_DCP, 0, (u8)((unsigned int)sndvol_codec * 4 / 5 ) ); #else なんとかする iic_mcu_write_a_byte( IIC_SLA_CODEC, REG_ADRS_CODEC_VOL, sndvol_codec ); @@ -71,17 +79,31 @@ task_interval tsk_adc(){ } ADCEN = 1; - ADM = 0b00011011; // セレクトモード、章圧、fCLK/6 ///ここから + ADM = 0b00011011; // セレクトモード、章圧、fCLK/6 ///ここから - ADPC = 0x06; // ADCポートのセレクト + ADPC = 0x06; // ADCポートのセレクト ADS = ADC_SEL_TUNE; // NOP(); - ADCS = 1; // AD開始。 /// ここまでに、1us以上開ける + ADCS = 1; // AD開始。 /// ここまでに、1us以上開ける ADIF = 0; ADMK = 0; - LED_duty_TUNE = ((u16)( vreg_ctr[ VREG_C_TUNE ] ) << 2); + + // TUNE_LED ここかよ! + switch( vreg_ctr[ VREG_C_LED_TUNE ] ){ + case( 1 ): // 点灯 + LED_duty_TUNE = 0; + break; + + case( 2 ): // + LED_duty_TUNE = LED_BRIGHT_MAX - vreg_ctr[ VREG_C_TUNE ]; + break; + + default: // 消灯 + LED_duty_TUNE = vreg_ctr[ VREG_C_LED_BRIGHT ]; + break; + } return( 8 ); } } @@ -132,11 +154,7 @@ __interrupt void int_adc(){ break; case( ADC_SEL_VOL ): - temp = ADCRH; - if( temp > 200 ){ - temp = 200; - } - hist_snd_vol[ index ] = temp; + hist_snd_vol[ index ] = ADCRH; vreg_ctr[ VREG_C_SND_VOL ] = getmean3( hist_snd_vol ); break; diff --git a/trunk/bsr_system.h b/trunk/bsr_system.h index 4729061..b3c6c06 100644 --- a/trunk/bsr_system.h +++ b/trunk/bsr_system.h @@ -25,6 +25,7 @@ typedef struct{ unsigned char dipsw0 :1; unsigned char dipsw1 :1; unsigned char dipsw2 :1; + unsigned char reboot :1; }system_status_; extern system_status_ system_status; diff --git a/trunk/config.h b/trunk/config.h index 48e8cc8..80ad8e6 100644 --- a/trunk/config.h +++ b/trunk/config.h @@ -3,13 +3,16 @@ #define _debug_ +// #define _debug_led_ + + #define MCU_VER_MAJOR 0; -#define MCU_VER_MINOR 3; +#define MCU_VER_MINOR 4; -#define _MODEL_TEG2_ +//#define _MODEL_TEG2_ //#define _MODEL_WM0_ -//#define _MODEL_TS0_ +#define _MODEL_TS0_ //#define _MODEL_CTR_ @@ -31,12 +34,13 @@ #define _MCU_BSR_ #endif - +/* +まだみぬ #ifdef _MODEL_CTR_ #define _PMIC_CTR_ #define _MCU_BSR_ #define _CODEC_CTR_ #endif - +*/ #endif diff --git a/trunk/i2c_ctr.c b/trunk/i2c_ctr.c index 22d04cb..a685e12 100644 --- a/trunk/i2c_ctr.c +++ b/trunk/i2c_ctr.c @@ -17,8 +17,7 @@ #ifdef _MCU_BSR_ -#ifdef 1 -//#ifdef _MODEL_WM0_ +// #ifdef _MODEL_TS0_ || _MODEL_WM0_ // ワーキングモデルはI2Cが逆 #define ACKD ACKD1 @@ -28,7 +27,6 @@ #define IICAPR0 IICAPR10 #define IICRSV IICRSV1 #define IICA IICA1 -#define IICAEN IICA1EN #define IICAIF IICAIF1 #define IICAMK IICAMK1 #define IICAPR1 IICAPR11 @@ -47,38 +45,9 @@ #define WREL WREL1 #define WTIM WTIM1 #define TRC TRC1 +#define SMC SMC1 -#else - -#define ACKD ACKD0 -#define ACKE ACKE0 -#define COI COI0 -#define IICAEN IICA0EN -#define IICAPR0 IICAPR00 -#define IICRSV IICRSV0 -#define IICA IICA0 -#define IICAEN IICA0EN -#define IICAIF IICAIF0 -#define IICAMK IICAMK0 -#define IICAPR1 IICAPR10 -#define IICCTL0 IICCTL00 -#define IICE IICE0 -#define IICF IICF0 -#define IICS IICS0 -#define IICWH IICWH0 -#define IICWL IICWL0 -#define LREL LREL0 -#define SPD SPD0 -#define SPIE SPIE0 -#define STCEN STCEN0 -#define STD STD0 -#define SVA SVA0 -#define WREL WREL0 -#define WTIM WTIM0 - -#endif - #endif @@ -118,11 +87,13 @@ __interrupt void int_iic_ctr(){ rtc_unlock(); - // IRQレジスタリードで、割り込みピンの設定 + // レジスタリードで、割り込みピンの設定 IRQ0_neg; if(! (( vreg_ctr[ VREG_C_IRQ0 ] == 0 ) && ( vreg_ctr[ VREG_C_IRQ1 ] == 0 ) - && ( vreg_ctr[ VREG_C_IRQ2 ] == 0x02 )) ){ // 暫定 + && ( vreg_ctr[ VREG_C_IRQ2 ] == 0 ) + && ( vreg_ctr[ VREG_C_IRQ3 ] == 0 ) + ) ){ IRQ0_ast; } @@ -291,8 +262,10 @@ void IIC_ctr_Init( void ){ WTIM = 1; // 自動でACKを返した後clkをLに固定する ACKE = 1; // ダメCPUは無視して次の通信をはじめるかもしれないんで早くclkを開放しないといけない - IICWL = 6; // L期間の長さ(?) - IICWH = 5; + IICWH = 8; + IICWL = 10; // L期間の長さ + + SMC = 1; IICAMK = 0; // 割り込みを許可 diff --git a/trunk/i2c_mcu.c b/trunk/i2c_mcu.c index ece89de..2518915 100644 --- a/trunk/i2c_mcu.c +++ b/trunk/i2c_mcu.c @@ -272,12 +272,14 @@ err iic_mcu_write( u8 slave, u8 adrs, u8 len, u8* src ){ iic_mcu_busy = 1; // スタートコンディションとスレーブの呼び出し... IICMK10 = 1; + IICIF10 = 0; if( iic_mcu_call_slave( slave ) != 0 ){ iic_mcu_busy = 0; EI(); return( ERR_NAK ); } + IICIF10 = 0; if( !iic_mcu_wo_dma ){ // DMAを使用する(通常) @@ -302,7 +304,6 @@ err iic_mcu_write( u8 slave, u8 adrs, u8 len, u8* src ){ // DMAを使用しない // // レジスタアドレスの送信 - IICIF10 = 0; SIO10 = adrs; IICMK10 = 0; @@ -322,32 +323,15 @@ err iic_mcu_write( u8 slave, u8 adrs, u8 len, u8* src ){ 注:DMA転送が終わっただけで、I2Cの転送は終わってません ======================================================== */ __interrupt void int_dma1(){ -u8 hoge; -hoge = IICIF10; + IICIF10 = 0; DMAMK1 = 1; DEN1 = 0; - IICMK10 = 0; - while(( SSR02 & TSF0 ) != 0 ){ - NOP(); + IICMK10 = 1; + while(( SSR02L & TSF0 ) != 0 ){; } // 最後のバイト転送後、I2C割り込みが発生する -} + // ↓ - - -/* ======================================================== - IIC MCUのバイト送出完了割り込み - ======================================================== */ -__interrupt void int_iic10(){ - if( iic_mcu_wo_dma ){ - // DMA使用せず、転送途中 - if( iic_send_wo_dma_len != 0 ){ - SIO10 = *p_iic_send_wo_dma_dat; - p_iic_send_wo_dma_dat++; - iic_send_wo_dma_len--; - return; - } - } // 共通(最終バイト送信完了) IICMK10 = 1; // ISR中で外の関数を呼ぶのは都合が悪いので展開 @@ -369,6 +353,45 @@ __interrupt void int_iic10(){ } iic_mcu_wo_dma = 0; iic_mcu_busy = 0; + +} + + + +/* ======================================================== + IIC MCUのバイト送出完了割り込み + ======================================================== */ +__interrupt void int_iic10(){ + if( iic_mcu_wo_dma ){ + // DMA使用せず、転送途中 + if( iic_send_wo_dma_len != 0 ){ + SIO10 = *p_iic_send_wo_dma_dat; + p_iic_send_wo_dma_dat++; + iic_send_wo_dma_len--; + return; + } + iic_mcu_wo_dma = 0; + } + // 共通(最終バイト送信完了) + IICMK10 = 1; + // ISR中で外の関数を呼ぶのは都合が悪いので展開 +// iic_mcu_send_sp(); + { + ST0 = 0x0004; + SOE0 = 0; // 受信の時はもっと前に「も」設定してる。(NACK出力) + SO0 = 0x0000 | TAUS_MASK; // SCL + NOP(); + NOP(); + NOP(); + NOP(); + SO0 = 0x0400 | TAUS_MASK; // SCL + NOP(); + NOP(); + NOP(); + NOP(); + SO0 = 0x0404 | TAUS_MASK; + } + iic_mcu_busy = 0; } @@ -503,6 +526,8 @@ void iic2m_bus_reset(){ ペリフェラルモジュールの初期化 ======================================================== */ void iic_mcu_start(){ + DST1 = 0; + DEN1 = 0; I2C_PU = 1; SAU0EN = 1; NOP(); // 4clkあける @@ -533,5 +558,3 @@ void iic_mcu_stop(){ SAU0EN = 0; iic_mcu_initialized = 0; } - - diff --git a/trunk/i2c_twl.c b/trunk/i2c_twl.c index eb69f74..7bcff1a 100644 --- a/trunk/i2c_twl.c +++ b/trunk/i2c_twl.c @@ -10,9 +10,7 @@ extern u8 vreg_twl[]; #ifdef _MCU_BSR_ - -//#ifdef _MODEL_WM0_ -#ifdef 1 +//#ifdef _MODEL_TS0_ || _MODEL_WM0_ // ワーキングモデルはI2Cが逆 #define ACKD ACKD0 @@ -22,10 +20,9 @@ extern u8 vreg_twl[]; #define IICAPR0 IICAPR00 #define IICRSV IICRSV0 #define IICA IICA0 -#define IICAEN IICA0EN #define IICAIF IICAIF0 #define IICAMK IICAMK0 -#define IICAPR1 IICAPR10 +#define IICAPR1 IICAPR01 #define IICCTL0 IICCTL00 #define IICE IICE0 #define IICF IICF0 @@ -40,36 +37,8 @@ extern u8 vreg_twl[]; #define SVA SVA0 #define WREL WREL0 #define WTIM WTIM0 +#define SMC SMC0 -#else - -#define ACKD ACKD1 -#define ACKE ACKE1 -#define COI COI1 -#define IICAEN IICA1EN -#define IICAPR0 IICAPR10 -#define IICRSV IICRSV1 -#define IICA IICA1 -#define IICAEN IICA1EN -#define IICAIF IICAIF1 -#define IICAMK IICAMK1 -#define IICAPR1 IICAPR11 -#define IICCTL0 IICCTL10 -#define IICE IICE1 -#define IICF IICF1 -#define IICS IICS1 -#define IICWH IICWH1 -#define IICWL IICWL1 -#define LREL LREL1 -#define SPD SPD1 -#define SPIE SPIE1 -#define STCEN STCEN1 -#define STD STD1 -#define SVA SVA1 -#define WREL WREL1 -#define WTIM WTIM1 - -#endif #endif #ifndef _MCU_BSR_ @@ -202,8 +171,10 @@ void IIC_twl_Init( void ){ WTIM = 1; // 自動でACKを返した後clkをLに固定する ACKE = 1; // ダメCPUは無視して次の通信をはじめるかもしれないんで早くclkを開放しないといけない - IICWL = 6; // L期間の長さ(?) - IICWH = 5; + IICWH = 8; + IICWL = 10; // L期間の長さ(?) + + SMC = 1; IICAMK = 0; // 割り込みを許可 diff --git a/trunk/incs.h b/trunk/incs.h index 4dbe7b1..3d6171e 100644 --- a/trunk/incs.h +++ b/trunk/incs.h @@ -9,7 +9,6 @@ #pragma section @@CODE ROM_CODE //#pragma section @@CNST ROM_CNST - //========================================================= #ifndef _incs_h_ #define _incs_h_ diff --git a/trunk/ini_VECT.c b/trunk/ini_VECT.c index fe8916a..7b4139c 100644 --- a/trunk/ini_VECT.c +++ b/trunk/ini_VECT.c @@ -17,6 +17,9 @@ #pragma interrupt INTP7 intp21_RFTx #endif +#ifdef _MCU_BSR_ +#pragma interrupt INTP23 intp23_ACC_ready // 加速度センサ、データ準備完了 +#endif //#pragma interrupt INTCMP0 fn_intcmp0 //#pragma interrupt INTCMP1 fn_intcmp1 diff --git a/trunk/jhl_defs.h b/trunk/jhl_defs.h index a5b0eee..8121092 100644 --- a/trunk/jhl_defs.h +++ b/trunk/jhl_defs.h @@ -18,5 +18,26 @@ typedef unsigned char err; } \ } +#if 0 +// マスクされてたら、フラグは立てるが、割り込みは入れない。 +#define set_irq( irqreg, bitpos ) \ +{ \ + vreg_ctr[ irqreg ] |= bitpos; \ + if( ( vreg_ctr[ irqreg+8 ] & bitpos ) == 0 ){ \ + IRQ0_ast; \ + } \ +} +#endif + +// マスクされてたら、フラグも立てず、割り込みも入れない。 +#define set_irq( irqreg, bitpos ) \ +{ \ + if( ( vreg_ctr[ irqreg+8 ] & bitpos ) == 0 ){ \ + vreg_ctr[ irqreg ] |= bitpos; \ + IRQ0_ast; \ + } \ +} + + #endif diff --git a/trunk/led.c b/trunk/led.c index 9547680..cf02278 100644 --- a/trunk/led.c +++ b/trunk/led.c @@ -26,8 +26,6 @@ #define BIT_MD123 1 #define BIT_MD0 0 - - // ======================================================== static task_interval led_pow_normal(); static task_interval led_pow_hotaru(); @@ -38,6 +36,10 @@ static task_interval led_pow_hotaru(); u8 wifi_TX; +// ======================================================== +static const char MSG_MAIL[] = { 0b11110110, 0b11011010, 0b01101110, 0b10010100 }; +#define MSG_SPD 70 + // ======================================================== void LED_init(){ /** @@ -60,20 +62,21 @@ void LED_init(){ = 1 << BIT_CKS0 | 0 << BIT_CCS0 | 0 << BIT_MASTER0 | 4 << BIT_STS0 | 0 << BIT_CIS0 | 4 << BIT_MD123 | 1 << BIT_MD0; ISC = 0; TOM0 = 0b0000000011111110; // 出力モード。4はPWM出力しないが1にしないとTO5以降にクロックが届かない - +#if 0 #ifdef _MODEL_WM0_ - TOL0 = 0b0000000000000010; + TOL0 = 0b0000000000000010; // 出力を反転させるかフラグ #else #ifdef _MODEL_TS0_ TOL0 = 0b0000000000000110; #endif TOL0 = 0b0000000000000110; +#endif #endif TO0 = 0; // タイマー動作中で、タイマー出力にしてないときのピンのラッチ。タイマー出力を使わないなら0 TOE0 = 0b0000000011101110; // TOxをタイマーモジュールが制御? TS0 = 0b0000000011101111; // 動作開始 - TDR00 = 0x03FE; // 10bit, 周期 + TDR00 = LED_BRIGHT_MAX - 1; // 10bit, 周期 } @@ -112,7 +115,7 @@ enum LED_ILUM_MODE{ ======================================================== */ task_interval tsk_led_pow(){ - switch( vreg_ctr[ VREG_C_LED_POW_ILUMI ] ){ + switch( vreg_ctr[ VREG_C_LED_POW ] ){ case( LED_POW_ILM_AUTO ): switch( system_status.pwr_state ){ case( SLEEP ): @@ -136,7 +139,11 @@ task_interval tsk_led_pow(){ case( LED_POW_ILM_OFF ): LED_duty_pow_H -= ( LED_duty_pow_H == 0x0000 )? 0: 1; LED_duty_pow_L -= ( LED_duty_pow_L == 0x0000 )? 0: 1; - return( 0 ); + if(( LED_duty_pow_H == 0 ) && ( LED_duty_pow_L == 0 )){ + return( 250 ); + }else{ + return( 0 ); + } break; case( LED_POW_ILM_HOTARU ): @@ -147,7 +154,20 @@ task_interval tsk_led_pow(){ default: return( led_pow_normal() ); break; + + case( LED_POW_ILM_ONLY_RED ): + LED_duty_pow_H = 0x0000; + LED_duty_pow_L = LED_BRIGHT_MAX; + return( 250 ); + break; + + case( LED_POW_ILM_ONLY_BLUE ): + LED_duty_pow_H = LED_BRIGHT_MAX; + LED_duty_pow_L = 0x0000; + return( 250 ); + break; } + } @@ -245,11 +265,11 @@ static task_interval led_pow_hotaru(){ case( 2 ): case( 4 ): if( vreg_ctr[ VREG_C_BT_REMAIN ] < ( 255 * 0.2 ) ){ - red_to = 0x03FF / 8; + red_to = vreg_ctr[ VREG_C_LED_BRIGHT ]; blue_to = 0; }else{ red_to = 0; - blue_to = 0x03FF / 8; + blue_to = vreg_ctr[ VREG_C_LED_BRIGHT ]; } break; default: @@ -267,83 +287,130 @@ static task_interval led_pow_hotaru(){ -/* ======================================================== - ======================================================== */ -void set_LED_cam(){ - if(( vreg_ctr[ VREG_C_CAM_LED ] & 0x01 ) != 0 ){ - LED_duty_CAM = vreg_ctr[ VREG_C_LED_BRIGHT ]; - }else{ - LED_duty_CAM = 0; - } - if(( vreg_ctr[ VREG_C_CAM_LED ] & 0x02 ) != 0 ){ - EGP0 |= 0x80; - }else{ - EGP0 &= ~0x80; - } -} - - - - /* ======================================================== - // LED_Cam TO02 未 - // LED_Charge 5     →PM - LED_Wifi,2 3, P24 - LED_TUNE 4 + LED_Wifi 3 + 2 P24 (未) ======================================================== */ task_interval tsk_led_wifi(){ - // WiFi LED // static u8 remain_wifi_tx; static u8 state_wifi_tx; - // フライトモードではNTRパルスが出ても電波でない→ - // フライトレジスタ見なくてはならない - if(( vreg_ctr[ VREG_C_WIFI_LED ] & REG_BIT_WIFI_ON ) == 0 ){ - return( 250 ); - } - -/* - // スリープ時 - if( PM_SLP == 1 ){ - // タスクで回すことはない trig_to_sleep_wifiLed() で減光状態にしてる - return; - } -*/ - - // 短いパルスを捕まえるために、割り込みフラグを見る - if( wifi_TX != 0 ){ + switch( vreg_ctr[ VREG_C_LED_WIFI ] ){ + case( WIFI_LED_OFF ): + LED_duty_WiFi = 0; wifi_TX = 0; - if(( vreg_ctr[ VREG_C_WIFI_LED ] & REG_BIT_WIFI_BLINK_ENA ) != 0 ){ - remain_wifi_tx = 2; - }else{ - remain_wifi_tx = 0; - } + state_wifi_tx = 0; + remain_wifi_tx = 0; + LED_WIFI_2 = 0; return( 250 ); - } + break; - // 点滅パターン - if( remain_wifi_tx != 0 ){ // TX active + case( WIFI_LED_ON ): + default: + LED_duty_WiFi = vreg_ctr[ VREG_C_LED_BRIGHT ]; + wifi_TX = 0; + state_wifi_tx = 0; + remain_wifi_tx = 0; + LED_WIFI_2 = 1; + return( 250 ); + break; + + case( WIFI_LED_TXAUTO ): + // 短いパルスを捕まえるために、割り込みフラグを見る + if( wifi_TX != 0 ){ + wifi_TX = 0; + remain_wifi_tx = 2; + } + + // 送信パターン + if( remain_wifi_tx != 0 ){ // TX active + switch( state_wifi_tx ){ + case( 1 ): + case( 3 ): + case( 5 ): + LED_duty_WiFi = 0; + LED_WIFI_2 = 0; + break; + default: + LED_duty_WiFi = vreg_ctr[ VREG_C_LED_BRIGHT ]; + LED_WIFI_2 = 1; + } + state_wifi_tx++; + if( state_wifi_tx == 32 ){ + state_wifi_tx = 0; + remain_wifi_tx--; + } + return( 22 ); + }else{ + LED_duty_WiFi = vreg_ctr[ VREG_C_LED_BRIGHT ]; + LED_WIFI_2 = 1; + return( 200 ); + } + break; + + case( WIFI_LED_PTN0 ): + LED_WIFI_2 = 1; switch( state_wifi_tx ){ case( 1 ): case( 3 ): case( 5 ): - LED_duty_WiFi = 0; + LED_duty_WiFi = vreg_ctr[ VREG_C_LED_BRIGHT ]; break; default: - LED_duty_WiFi = vreg_ctr[ VREG_C_LED_BRIGHT ]; + LED_duty_WiFi = 0; } state_wifi_tx++; - if( state_wifi_tx == 32 ){ + if( state_wifi_tx == 16 ){ state_wifi_tx = 0; - remain_wifi_tx--; } - }else{ - set_led_wifi; - } - return( 28 ); -} + return( 50 ); + break; + case( WIFI_LED_PTN1 ): + LED_WIFI_2 = 1; + { + u8 dat; + + if( remain_wifi_tx != 0 ){ + LED_duty_WiFi = 0; + remain_wifi_tx = 0; + return( MSG_SPD ); + } + + dat = ( MSG_MAIL[ state_wifi_tx / 4 ] << (( state_wifi_tx % 4 ) *2 ) ) & 0xC0; + state_wifi_tx = ( dat == 0 )? 0: ( state_wifi_tx + 1 ); + + switch( dat ){ + case( 0b00000000 ): + LED_duty_WiFi = 0; + remain_wifi_tx = 0; + return( MSG_SPD * 3 ); + break; + + case( 0b01000000 ): + default: + LED_duty_WiFi = 0; + remain_wifi_tx = 1; + return( MSG_SPD ); + break; + + case( 0b10000000 ): + LED_duty_WiFi = vreg_ctr[ VREG_C_LED_BRIGHT ]; + remain_wifi_tx = 1; + return( MSG_SPD ); + break; + + case( 0b11000000 ): + LED_duty_WiFi = vreg_ctr[ VREG_C_LED_BRIGHT ]; + remain_wifi_tx = 1; + return( MSG_SPD * 3 ); + break; + + } + } + } +} /* ======================================================== @@ -354,3 +421,65 @@ task_interval tsk_led_wifi(){ __interrupt void intp21_RFTx(){ wifi_TX = 1; } + + + +/* ======================================================== + LED_Cam TO02 + ======================================================== */ +task_interval tsk_led_cam(){ + static u8 state_led_cam = 0; + + switch( vreg_ctr[ VREG_C_LED_CAM ] ){ + case( CAM_LED_OFF ): + default: + LED_duty_CAM = 0; + state_led_cam = 0; + break; + + case( CAM_LED_ON ): + LED_duty_CAM = vreg_ctr[ VREG_C_LED_BRIGHT ]; + state_led_cam = 0; + break; + + case( CAM_LED_BLINK ): + case( CAM_LED_BY_TWL ): + if( state_led_cam == 0 ){ + LED_duty_CAM = vreg_ctr[ VREG_C_LED_BRIGHT ]; + state_led_cam = 1; + }else{ + LED_duty_CAM = 0; + state_led_cam = 0; + } + break; + + case( CAM_LED_ON_PLUSE ): + if( state_led_cam == 0 ){ + LED_duty_CAM = vreg_ctr[ VREG_C_LED_BRIGHT ]; + state_led_cam = 1; + }else{ + vreg_ctr[ VREG_C_LED_CAM ] = CAM_LED_OFF; + return( 0 ); + } + break; + + case( CAM_LED_OFF_PLUSE ): + if( state_led_cam == 0 ){ + LED_duty_CAM = 0; + state_led_cam = 1; + }else{ + vreg_ctr[ VREG_C_LED_CAM ] = CAM_LED_ON; + return( 0 ); + } + break; + + } + return( 250 ); +} + + +// 捨て看板 + /* ======================================================== + // LED_Charge 5     →PM + LED_TUNE 4 + ======================================================== */ diff --git a/trunk/led.h b/trunk/led.h index 774fb8d..6c47a4b 100644 --- a/trunk/led.h +++ b/trunk/led.h @@ -2,36 +2,35 @@ #define __led__ +// ==================================== + // LED_DUTY #define LED_duty_pow_L TDR07 #define LED_duty_pow_H TDR06 -#define LED_duty_WiFi TDR03 #define LED_duty_CHARGE TDR05 +#define LED_duty_WiFi TDR03 #define LED_duty_CAM TDR02 #define LED_duty_TUNE TDR01 - -void LED_init(); -void LED_stop(); -void set_LED_cam(); - -#define set_led_wifi \ -if(( vreg_ctr[ VREG_C_WIFI_LED ] & 0x01 ) == 0 ){ \ - LED_duty_WiFi = 0; \ - MK2L |= 0x10; \ -}else{ \ - LED_duty_WiFi = vreg_ctr[ VREG_C_LED_BRIGHT ]; \ - EGP0 |= 0x80; \ - MK2L &= ~0x10; \ -} +// wifi2はPWMできません。 +#define LED_BRIGHT_MAX 0x00FF +// ==================================== enum LED_ILUM_MODE{ LED_POW_ILM_AUTO = 0, LED_POW_ILM_ON, LED_POW_ILM_HOTARU, - LED_POW_ILM_OFF + LED_POW_ILM_OFF, + LED_POW_ILM_ONLY_RED, + LED_POW_ILM_ONLY_BLUE }; +// ==================================== +void LED_init(); +void LED_stop(); + + + #endif diff --git a/trunk/loader.c b/trunk/loader.c index 746c76d..9e96d7a 100644 --- a/trunk/loader.c +++ b/trunk/loader.c @@ -56,6 +56,7 @@ void FSL_Open(void); void FSL_Close(void); void hdwinit(void); void power_save(); +static void hdwinit2(); extern void main_loop(); extern void chk_bootCluster(); @@ -63,22 +64,28 @@ extern void chk_bootCluster(); // ======================================================== void main(){ - u16 i = 0; - - do{ // 電池接続時、16ms待ってみる - i+=1; - }while( i != 0 ); - - - - while(1){ - // 電池投入 // - // hdwinit(); 自動実行 - // 電池投入時のみ初期化 // + WDT_Restart(); -#if 0 + if( RTCEN ){ + system_status.reboot = 1; + }else{ + u8 pwup_delay0 = 0; + u8 pwup_delay1 = 0; + + do{ // 電池接続時、16ms待ってみる + pwup_delay0 += 1; + do{ + pwup_delay1 += 1; + }while( pwup_delay1 != 0 ); // コンパイラが不出来のため…。 + }while( pwup_delay0 != 0 ); + + hdwinit2(); + } + + +#if 1 // ファームの整合性チェック // { u8 i; @@ -102,7 +109,7 @@ void main(){ } #endif - chk_bootCluster(); + chk_bootCluster(); // 通常運転 main_loop(); @@ -115,9 +122,7 @@ void main(){ 省電力モードへ移行 ======================================================== */ void power_save(){ - if( !renge_task_interval_run_force ){ - HALT(); - } + HALT(); } @@ -163,7 +168,10 @@ void hdwinit(void){ // LVIM = 0b00000000; /* LVI動作禁止 */ /* 電源電圧(VDD)<検出電圧(VLVI)時に割込発生 */ /* 電源電圧(VDD)≧検出電圧 dispatch_type == INTERVAL ){ if( current_task -> interval == 0 ){ current_task -> interval = current_task -> task(); @@ -85,15 +87,14 @@ err renge_task_interval_run(){ } // ***_TRIG等で強制起動 - if( renge_task_interval_run_force ){ + while( renge_task_interval_run_force ){ renge_task_interval_run_force = 0; // とりあえず、何が何でもフラグ消しちゃうけど... - for( current_task = tasks; + for( current_task = &tasks[0]; current_task != &tasks[TSK_LAST]; current_task += 1 ) { current_task -> interval = current_task -> task(); } - } return( ERR_SUCCESS ); @@ -124,13 +125,13 @@ void renge_task_immed_init(){ /* グローバルなメモリはスタートアップルーチンで 0に初期化されてるので。 + */ u8 i; for( i = 0; i < IMMED_RSV_TASKS_NUM; i++ ){ tasks_immed[ i ] = (void *)0; } task_immed_index = 0; - */ } diff --git a/trunk/renge/renge_task_config.rb b/trunk/renge/renge_task_config.rb index b888888..4d3eaf9 100644 --- a/trunk/renge/renge_task_config.rb +++ b/trunk/renge/renge_task_config.rb @@ -52,7 +52,7 @@ conf << "\n" conf << "task_info tasks[ TSK_LAST ] = {\n " tasklist.each{|dat| - conf << "{ tsk_" << dat << ",\t\tINTERVAL, 0 },\n " + conf << "{ tsk_" << dat << ", \t0 },\n " } conf << " \n};\n" diff --git a/trunk/renge/renge_task_intval.h b/trunk/renge/renge_task_intval.h index fbd6574..a1407e7 100644 --- a/trunk/renge/renge_task_intval.h +++ b/trunk/renge/renge_task_intval.h @@ -6,7 +6,7 @@ #include "renge_defs.h" enum { - TSK_SW, TSK_WIFI, TSK_ADC, TSK_BATT, TSK_LED_POW, TSK_LED_WIFI, TSK_MISC_STAT, TSK_DEBUG, TSK_DEBUG2, TSK_SOFT_INT, TSK_SYS, TSK_LAST + TSK_SW, TSK_WIFI, TSK_ADC, TSK_BATT, TSK_LED_POW, TSK_LED_WIFI, TSK_LED_CAM, TSK_MISC_STAT, TSK_DEBUG, TSK_DEBUG2, TSK_SOFT_INT, TSK_SYS, TSK_LAST }; extern task_interval tsk_sw(); @@ -15,6 +15,7 @@ extern task_interval tsk_adc(); extern task_interval tsk_batt(); extern task_interval tsk_led_pow(); extern task_interval tsk_led_wifi(); +extern task_interval tsk_led_cam(); extern task_interval tsk_misc_stat(); extern task_interval tsk_debug(); extern task_interval tsk_debug2(); @@ -22,17 +23,18 @@ extern task_interval tsk_soft_int(); extern task_interval tsk_sys(); task_info tasks[ TSK_LAST ] = { - { tsk_sw, 0 }, - { tsk_wifi, 0 }, - { tsk_adc, 0 }, - { tsk_batt, 0 }, - { tsk_led_pow, 0 }, - { tsk_led_wifi, 0 }, - { tsk_misc_stat, 0 }, - { tsk_debug, 0 }, - { tsk_debug2, 0 }, - { tsk_soft_int, 0 }, - { tsk_sys, 0 } + { tsk_sw, 0 }, + { tsk_wifi, 0 }, + { tsk_adc, 0 }, + { tsk_batt, 0 }, + { tsk_led_pow, 0 }, + { tsk_led_wifi, 0 }, + { tsk_led_cam, 0 }, + { tsk_misc_stat, 0 }, + { tsk_debug, 0 }, + { tsk_debug2, 0 }, + { tsk_soft_int, 0 }, + { tsk_sys, 0 }, }; diff --git a/trunk/renge/renge_tasks.txt b/trunk/renge/renge_tasks.txt index 41cadba..a698148 100644 --- a/trunk/renge/renge_tasks.txt +++ b/trunk/renge/renge_tasks.txt @@ -4,6 +4,7 @@ adc batt led_pow led_wifi +led_cam misc_stat debug debug2 diff --git a/trunk/rtc.c b/trunk/rtc.c index 5992f79..5aff879 100644 --- a/trunk/rtc.c +++ b/trunk/rtc.c @@ -13,37 +13,50 @@ u8 rtc_work[7]; bit rtc_lock; bit rtc_dirty; - +bit rtc_alarm_dirty; /* ======================================================== ペリフェラルの初期化 レジスタの電池交換ビットのセット ======================================================== */ void RTC_init(void){ + +// if( !RTCEN ){ RTCEN = 1; // モジュールON // RTC設定 RTCC0 = 0b00001000; /* 動作停止、24時間制、32k出力「まだなし」、定周期割り込みなし */ RTCC1 = 0b11000000; /* アラーム割り込み有効&動作開始 */ RTCC2 = 0b10000000; /* インターバル:32k/2^6=2ms、RTCDIV出力なし */ - SEC = 0; +/* +SEC = 0; MIN = 0; HOUR = 0; - DAY = 14; - WEEK = 1; + DAY = ((1<<4) + 7); + WEEK = 0; MONTH = 9; YEAR = 9; +*/ ALARMWW = 0x7F; + vreg_ctr[ VREG_C_MCU_STATUS ] = REG_BIT_RTC_BLACKOUT; + +// } // 割り込み設定 + RTCIF = 0; + RTCIIF = 0; RTCMK = 1; /* 割り込み(定周期)禁止 */ RTCIMK = 0; /* 割り込み(アラーム&インターバル)許可 */ RTCE = 1; /* 動作開始 */ - vreg_ctr[ VREG_C_MCU_STATUS ] = REG_BIT_RTC_BLACKOUT; + RWAIT = 1; + while( !RWST ){;} + RWAIT = 0; + rtc_lock = 0; rtc_dirty = 0; + rtc_alarm_dirty = 0; } @@ -53,8 +66,9 @@ void RTC_init(void){ 2^6/fXT(1.953125 ms) ======================================================== */ __interrupt void int_rtc_int(){ - + DBG_LED_WIFI_2_on; renge_flg_interval = 1; + DBG_LED_WIFI_2_off; } @@ -67,8 +81,8 @@ __interrupt void int_rtc(){ && ( vreg_ctr[ VREG_C_RTC_ALARM_MONTH ] == MONTH ) && ( vreg_ctr[ VREG_C_RTC_ALARM_YEAR ] == YEAR )) { - vreg_ctr[ VREG_C_IRQ1 ] |= REG_BIT_RTC_ALARM; if( ( vreg_ctr[ VREG_C_IRQ_MASK1 ] & REG_BIT_RTC_ALARM ) == 0 ){ + vreg_ctr[ VREG_C_IRQ1 ] |= REG_BIT_RTC_ALARM; IRQ0_ast; // マスクをしてあったら、電源を入れません if( system_status.pwr_state == OFF ){ @@ -120,9 +134,12 @@ void set_rtc( u8 adrs, u8 data ){ ======================================================== */ // task_status_immed tski_rtc_close(){ void rtc_unlock(){ - if( rtc_lock != 0 ){ + // リードロック +// if( rtc_lock != 0 ){ rtc_lock = 0; - } +// } + + // ライトロック if( rtc_dirty != 0 ){ rtc_dirty = 0; RWAIT = 1; @@ -130,7 +147,15 @@ void rtc_unlock(){ memcpy( &SEC, rtc_work, 7 ); RWAIT = 0; } -// return( ERR_SUCCESS ); + + // アラームセット + if( rtc_alarm_dirty ){ + WALE = 0; + ALARMWM = vreg_ctr[ VREG_C_RTC_ALARM_MIN ]; + ALARMWH = vreg_ctr[ VREG_C_RTC_ALARM_HOUR ]; + rtc_dirty = 0; + WALE = 1; + } } diff --git a/trunk/rtc.h b/trunk/rtc.h index f46da5e..1b508f6 100644 --- a/trunk/rtc.h +++ b/trunk/rtc.h @@ -10,8 +10,12 @@ void set_rtc(); //task_status_immed tski_rtc_close(); void rtc_unlock(); +// ------------------------------------ #define RTC_32k_on() { RCLOE0 = 1; } +// ------------------------------------ +extern bit rtc_alarm_dirty; + #endif diff --git a/trunk/self_flash.c b/trunk/self_flash.c index 2b9fca7..dcdbde0 100644 --- a/trunk/self_flash.c +++ b/trunk/self_flash.c @@ -11,7 +11,7 @@ #include "incs_loader.h" -#include "fsl.h" +#include #include "fsl_user.h" #include "i2c_ctr.h" @@ -37,31 +37,30 @@ const u8 fsl_low_voltage_u08 = 1; #ifdef _MCU_BSR_ -#define ACKD ACKD0 -#define ACKE ACKE0 -#define COI COI0 -#define IICAEN IICA0EN -#define IICAPR0 IICAPR00 -#define IICRSV IICRSV0 -#define IICA IICA0 -#define IICAEN IICA0EN -#define IICAIF IICAIF0 -#define IICAMK IICAMK0 -#define IICAPR1 IICAPR10 -#define IICCTL0 IICCTL00 -#define IICE IICE0 -#define IICF IICF0 -#define IICS IICS0 -#define IICWH IICWH0 -#define IICWL IICWL0 -#define LREL LREL0 -#define SPD SPD0 -#define SPIE SPIE0 -#define STCEN STCEN0 -#define STD STD0 -#define SVA SVA0 -#define WREL WREL0 -#define WTIM WTIM0 +#define ACKD ACKD1 +#define ACKE ACKE1 +#define COI COI1 +#define IICAEN IICA1EN +#define IICAPR0 IICAPR10 +#define IICRSV IICRSV1 +#define IICA IICA1 +#define IICAIF IICAIF1 +#define IICAMK IICAMK1 +#define IICAPR1 IICAPR11 +#define IICCTL0 IICCTL01 +#define IICE IICE1 +#define IICF IICF1 +#define IICS IICS1 +#define IICWH IICWH1 +#define IICWL IICWL1 +#define LREL LREL1 +#define SPD SPD1 +#define SPIE SPIE1 +#define STCEN STCEN1 +#define STD STD1 +#define SVA SVA1 +#define WREL WREL1 +#define WTIM WTIM1 #endif @@ -167,6 +166,8 @@ err firm_update(){ err = FSL_Erase( target_block ); } + WREL = 1; + // ブロックの数だけ繰り返し for( target_block = INACTIVE_BOOTSECT_TOP; target_block <= UPDATE_BLOCK_LAST; @@ -207,7 +208,7 @@ err firm_update(){ } firm_update_end: - WREL = 1; + LREL = 1; // 書き込んだファームのチェック // { @@ -247,6 +248,8 @@ err firm_restore(){ fsl_u08 err; __far u8* p_rom; + RTCE = 0; + TOE0 = 0x0000; TOE0 = 0x0080; // 書き替え前準備 // @@ -310,7 +313,7 @@ err firm_restore(){ } -void chk_bootCluster(){ +void chk_bootCluster(){ u8 data_buffer[ SELF_UPDATE_BUFF_SIZE ]; u8 err; diff --git a/trunk/tasks.c b/trunk/tasks.c index f8e172a..74f0c80 100644 --- a/trunk/tasks.c +++ b/trunk/tasks.c @@ -29,41 +29,82 @@ task_interval tsk_wifi(){ ======================================================== */ task_interval tsk_misc_stat(){ static u8 state_old; // ステータス変化検出→割り込み の為 + u8 diff; SHELL_CLOSE_P = 1; - set_bit( EXT_OPT_DET, vreg_ctr[ VREG_C_STATUS0 ], REG_BIT_EXT_OPT_LOCK ); - set_bit( SHELL_CLOSE, vreg_ctr[ VREG_C_STATUS0 ], REG_BIT_ST_SHELL_CLOSED ); + set_bit( EXT_OPT_OPEN, vreg_ctr[ VREG_C_STATUS ], REG_BIT_ST_EXT_OPT_OPEN ); + set_bit( SHELL_CLOSE, vreg_ctr[ VREG_C_STATUS ], REG_BIT_ST_SHELL_CLOSED ); SHELL_CLOSE_P = 0; + // ステータスレジスタ関係 → 割り込み // - if(( vreg_ctr[ VREG_C_STATUS0 ] ^ state_old ) != 0 ){ - vreg_ctr[ VREG_C_IRQ1 ] |= REG_BIT_STAT_CHANGE; - switch( system_status.pwr_state ){ - case ON_TRIG: - break; - case ON: - if( ( vreg_ctr[ VREG_C_IRQ_MASK1 ] & REG_BIT_STAT_CHANGE ) == 0 ){ - IRQ0_ast; + if( ( system_status.pwr_state == ON ) + || ( system_status.pwr_state == SLEEP ) ){ + diff = vreg_ctr[ VREG_C_STATUS ] ^ state_old; + if( diff != 0 ){ + + if( diff & REG_BIT_LCD_POW ){ + // 液晶電源セット完了 + if( vreg_ctr[ VREG_C_STATUS ] & REG_BIT_LCD_POW ){ + // on + set_irq( VREG_C_IRQ3, REG_BIT_LCD_ON ); + }else{ + // off + set_irq( VREG_C_IRQ3, REG_BIT_LCD_OFF ); + } } - break; - case SLEEP_TRIG: - case SLEEP: - if( (( state_old & REG_BIT_ST_SHELL_CLOSED ) != 0 ) - && ( !SHELL_CLOSE ) ){ - // 蓋開けた のみ通知 - if( ( vreg_ctr[ VREG_C_IRQ_MASK1 ] & REG_BIT_STAT_CHANGE ) == 0 ){ - IRQ0_ast; + + if( diff & REG_BIT_BL ){ + // バックライトに変化有り + if( vreg_ctr[ VREG_C_STATUS ] & REG_BIT_BL ){ + // ついた + set_irq( VREG_C_IRQ3, REG_BIT_BL_ON ); + }else{ + // 消えた + set_irq( VREG_C_IRQ3, REG_BIT_BL_OFF ); + } } + + if( diff & REG_BIT_BATT_CHARGE ){ + // 充電状態に以下略 + if( vreg_ctr[ VREG_C_STATUS ] & REG_BIT_BATT_CHARGE ){ + set_irq( VREG_C_IRQ2, REG_BIT_BT_CHG_START ); + }else{ + set_irq( VREG_C_IRQ2, REG_BIT_BT_CHG_STOP ); + } + } + + if( diff & REG_BIT_POW_SUPPLY ){ + // 電源供給 + if( vreg_ctr[ VREG_C_STATUS ] & REG_BIT_POW_SUPPLY ){ + set_irq( VREG_C_IRQ2, REG_BIT_BT_DC_CONNECT ); + }else{ + set_irq( VREG_C_IRQ2, REG_BIT_BT_DC_DISC ); + } + } + + if( diff & REG_BIT_ST_EXT_OPT_OPEN ){ + // オプション蓋ロック + if( vreg_ctr[ VREG_C_STATUS ] & REG_BIT_ST_EXT_OPT_OPEN ){ + set_irq( VREG_C_IRQ2, REG_BIT_EXTOPT_LOCK ); + }else{ + set_irq( VREG_C_IRQ2, REG_BIT_EXTOPT_OPEN ); + } + } + + if( diff & REG_BIT_ST_SHELL_CLOSED ){ + // BL点灯 + if( vreg_ctr[ VREG_C_STATUS ] & REG_BIT_ST_SHELL_CLOSED ){ + set_irq( VREG_C_IRQ2, REG_BIT_SHELL_OPEN ); + }else{ + set_irq( VREG_C_IRQ2, REG_BIT_SHELL_CLOSE ); + } } - break; - case OFF_TRIG: - case OFF: - default: - break; } + + state_old = vreg_ctr[ VREG_C_STATUS ]; } - state_old = vreg_ctr[ VREG_C_STATUS0 ]; return( 100 ); } @@ -76,10 +117,6 @@ task_interval tsk_debug(){ u8 temp; static u8 count = 0; - if( count == 0 ){ -// LED_WIFI_2 ^= 1; - } - /* temp = iic_mcu_read_a_byte( IIC_SLA_8LEDS, IIC_8LEDS_REG_DO ); count += 1; @@ -94,14 +131,20 @@ task_interval tsk_debug(){ task_interval tsk_debug2(){ u8 str[4]; - if(( system_status.pwr_state == ON ) - || ( system_status.pwr_state == SLEEP )){ - str[3] = vreg_ctr[ VREG_C_IRQ0 ]; - str[2] = vreg_ctr[ VREG_C_IRQ1 ]; - str[1] = vreg_ctr[ VREG_C_STATUS0 ]; - str[0] = vreg_ctr[ VREG_C_ACC_YH ]; + return( 3 ); - iic_mcu_write( IIC_SLA_DBG_MONITOR, 0, 4, &str ); +if(( system_status.pwr_state == ON ) + || ( system_status.pwr_state == SLEEP )){ + str[3] = boot_ura; + str[2] = vreg_ctr[ VREG_C_IRQ1 ]; + str[1] = vreg_ctr[ VREG_C_IRQ2 ]; + str[0] = vreg_ctr[ VREG_C_STATUS ]; +// str[3] = vreg_ctr[ VREG_C_IRQ0 ]; +// str[2] = vreg_ctr[ VREG_C_IRQ1 ]; +// str[1] = vreg_ctr[ VREG_C_IRQ2 ]; +// str[0] = vreg_ctr[ VREG_C_STATUS ]; + +// iic_mcu_write( IIC_SLA_DBG_MONITOR, 0, 4, &str[0] ); // 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, boot_ura ); // iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 1, vreg_ctr[ VREG_C_SND_VOL ] ); @@ -109,7 +152,7 @@ task_interval tsk_debug2(){ // 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, 3, vreg_ctr[ VREG_C_TUNE ] ); // iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 2, vreg_ctr[ VREG_C_SND_VOL ] ); -// iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 1, vreg_ctr[ VREG_C_STATUS0 ] ); +// iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 1, vreg_ctr[ VREG_C_STATUS ] ); // iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 0, vreg_ctr[ VREG_C_ACC_ZH ] ); } return( 3 ); @@ -152,38 +195,6 @@ task_status_immed tsk_imm_hina( u8* arg ){ -/* ======================================================== - 加速度センサ割り込みピンがオリジナルマイコンには無いので - ポーリングする。 - 歩数計用 - ======================================================== */ -task_interval tsk_soft_int(){ -#ifdef _MCU_KE3_ - - if( (( vreg_ctr[ VREG_C_ACC_CONFIG_HOSU ] & 0x01 ) != 0 ) - || (( vreg_ctr[ VREG_C_ACC_CONFIG ] & 0x03 ) == 0x01 ) ){ - - if( system_status.pwr_state == ON ){ - // Hエッジ検出 -// pin = ( pin << 1 ) + ( ACC_VALID? 1: 0 ); -// if( ( pin & 0x03 ) == 0x01 ){ - if( ACC_VALID ){ - renge_task_immed_add( tsk_cbk_accero ); - } - } - return( 0 ); - } -#else - // 本物のマイコンなら、割り込みでタスクを登録します -#endif - return( 248 ); -} - - - - - - /* ======================================================== 逐一起動タスク diff --git a/trunk/tasks_sys.c b/trunk/tasks_sys.c index 8f9be18..16d7139 100644 --- a/trunk/tasks_sys.c +++ b/trunk/tasks_sys.c @@ -24,12 +24,11 @@ bit SW_pow_mask, SW_home_mask, SW_tune_mask, SW_wifi_mask; ======================================================== */ task_interval tsk_sys(){ static u8 timeout = 0; + RTCIMK = 0; // インターバル割り込み許可 switch( system_status.pwr_state ){ case OFF: //------------------------------------------------------- // スイッチ操作などで割り込みが発生し、スリープが解除されるとここに来ます。 - RTCIMK = 0; // インターバル割り込み許可 - KRMK = 1; switch( system_status.poweron_reason ){ default: @@ -43,16 +42,19 @@ task_interval tsk_sys(){ if( timeout > 127 ){ system_status.pwr_state = OFF_TRIG; // スイッチはノイズだった。寝る。 renge_task_interval_run_force = 1; + //iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 3, 0x81 ); return( 0 ); } if(( SW_pow_count < 3 )&& ( SW_wifi_count < 3 )){ // もう少しスイッチの様子を見る + //iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 3, 0x82 ); return( 0 ); } break; case( RTC_ALARM ): + //iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 3, 0x83 ); break; // 何か他に電源ON要因はあるか? @@ -60,17 +62,13 @@ task_interval tsk_sys(){ // アダプタ(充電の温度を監視しなくてはならない) } + timeout = 0; // 電源投入 SW_pow_mask = 1; SW_tune_mask = 1; SW_wifi_mask = 1; - SW_pow_count = 0; - SW_tune_count = 0; - SW_wifi_count = 0; - - // 電源投入 // iic_mcu_start(); @@ -95,12 +93,11 @@ task_interval tsk_sys(){ } PM_LCD_vcom_set(); // LCDの対向電圧値など書き込み - - // 電源スイッチでの電源投入であれば、バックライトを点ける if( system_status.poweron_reason == PWSW ){ // パワースイッチでのonの時は、LEDを点灯させる - vreg_ctr[ VREG_C_LED_POW_ILUMI ] = LED_POW_ILM_AUTO; + vreg_ctr[ VREG_C_LED_POW ] = LED_POW_ILM_AUTO; +#if 0 if( PM_LCD_on() == 0 ){ renge_task_interval_run_force = 1; iic_mcu_stop(); @@ -114,11 +111,12 @@ task_interval tsk_sys(){ system_status.pwr_state = OFF; return( 0 ); } +#endif } else { // 他には? - vreg_ctr[ VREG_C_LED_POW_ILUMI ] = LED_POW_ILM_OFF; + vreg_ctr[ VREG_C_LED_POW ] = LED_POW_ILM_OFF; } // ここまで来ると、電源投入確定 @@ -130,31 +128,30 @@ task_interval tsk_sys(){ case ON_TRIG: //------------------------------------------------------- LED_init(); - -// 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 ); - { PU7 = 0b00011101; // 4:SW_WIFI 3:SW_PWSW 2:PM_IRQ 0:PM_EXTDC } + + // アクティブ中に使用するピン変化割り込み + // I2CやDMAは個別にセットしてください + // KRM = 0b00000000; + + MK0 = INT_MSK0_RSV; + MK1 = INT_MSK1_RSV; +#ifdef _MCU_BSR_ + MK2 = INT_MSK2_RSV; +#else + MK2L= INT_MSK2L_RSV; +#endif + // ほか、必要ペリフェラルの初期化 IIC_ctr_Init(); // とりあえずはここで初期化 IIC_twl_Init(); RTC_32k_on(); - // アクティブ中に使用するピン変化割り込み - // I2CやDMAは個別にセットしてください - // KRM = 0b00000000; - EGP0 = 0b00110001; - EGN0 = 0b01110001; - // intp20系は後ほど - MK0 = INT_MSK0_RSV; - MK1 = INT_MSK1_RSV; - MK2L= INT_MSK2L_RSV; + system_status.pwr_state = ON; - system_status.pwr_state = ON; - -#ifndef _PMIC_TWL_ +#ifndef _CODEC_CTR_ { u8 temp; // do{ @@ -164,12 +161,7 @@ task_interval tsk_sys(){ } #endif -// vreg_ctr[ VREG_C_ACC_CONFIG_HOSU ] = 0x00; // デバッグ目的 - vreg_ctr[ VREG_C_ACC_CONFIG_HOSU ] = 0x01; // デバッグ目的 - renge_task_immed_add( acc_hosu_set ); - system_status.poweron_reason = PWSW; - break; @@ -191,7 +183,7 @@ task_interval tsk_sys(){ break; case SLEEP: //------------------------------------------ - system_status.pwr_state = ON_TRIG; + system_status.pwr_state = ON_TRIG; if( !RESET1_n ){ NOP(); /* @@ -203,12 +195,19 @@ task_interval tsk_sys(){ break; case OFF_TRIG: //--------------------------------------- + DBG_LED_WIFI_2_on; + DBG_LED_WIFI_2_off; + DBG_LED_WIFI_2_on; + DBG_LED_WIFI_2_off; + + LED_stop(); IIC_ctr_Stop(); IIC_twl_Stop(); vreg_ctr[ VREG_C_IRQ0 ] = 0; vreg_ctr[ VREG_C_IRQ1 ] = 0; vreg_ctr[ VREG_C_IRQ2 ] = 0; + vreg_ctr[ VREG_C_IRQ3 ] = 0; BT_TEMP_P = 0; // 電源オン条件の割り込みセット @@ -221,9 +220,16 @@ task_interval tsk_sys(){ DI(); PM_sys_pow_off(); - iic_mcu_stop(); + DBG_LED_WIFI_2_on; + DBG_LED_WIFI_2_off; + DBG_LED_WIFI_2_on; + DBG_LED_WIFI_2_off; + DBG_LED_WIFI_2_on; + DBG_LED_WIFI_2_off; - // pullup_off(); +// iic_mcu_stop(); + + // pullup_off(); ↓ { PU5 = 0b00000011; // PM_CHG,PM_CHGERR PU7 = 0b00011001; // SW_WiFi,PWSWI,PM_EXTTDC @@ -231,10 +237,6 @@ task_interval tsk_sys(){ // KRM = ( KR_SW_POW | KR_SW_WIFI ); // Mask ではなく、Modeなのだそうだ。紛らわしい KRM = ( KR_SW_POW ); // Mask ではなく、Modeなのだそうだ。紛らわしい -// EGP0 = 0b00100000; // SHELL, 0で検出しない - EGP0 = 0b00000000; // SHELL, 0で検出しない - EGN0 = 0b00010000; // EXTDC - // intp20系は後ほど MK0 = 0b1111111110111111; // INT(EXTDC) // MK0 = 0b1111111100111111; // INT(SHELL), INT(EXTDC) @@ -248,15 +250,26 @@ task_interval tsk_sys(){ timeout = 0; system_status.pwr_state = OFF; - STOP(); // 割り込み待ちで寝る -// while( SW_POW_n ){;} + + while( RWST ){;} + + iic_mcu_stop(); + + STOP(); // 割り込み待ちで寝る // + + DBG_LED_WIFI_2_on; + DBG_LED_WIFI_2_off; + DBG_LED_WIFI_2_on; + DBG_LED_WIFI_2_off; + DBG_LED_WIFI_2_on; + DBG_LED_WIFI_2_off; + DBG_LED_WIFI_2_on; + DBG_LED_WIFI_2_off; + // while( SW_POW_n ){;} + KRMK = 1; + RTCIMK = 0; // インターバル割り込み許可 EI(); -#ifdef _PMIC_TWL_ - MK2L = 0b01111111; // wifi_TX 割り込み - EGP0 |= 0x80; -#else - // todo -#endif + renge_task_interval_run_force = 1; break; @@ -296,6 +309,7 @@ task_interval tsk_sys(){ task_interval tsk_sw(){ static u8 cnt_force_off = 0; + static u8 sw_pow_old = 0; if(( system_status.pwr_state == ON ) || ( system_status.pwr_state == OFF )){ @@ -309,33 +323,34 @@ task_interval tsk_sw(){ case( OFF_TRIG ): SW_pow_count = 0; SW_wifi_count = 0; - SW_tune_count = 0; + SW_tune_count = 0; cnt_force_off = 0; break; case( ON ): case( SLEEP ): // 電源スイッチの監視 // - if( SW_pow_count == 6 ){ - vreg_ctr[ VREG_C_IRQ0 ] |= REG_BIT_SW_POW_CLICK; - if( ( vreg_ctr[ VREG_C_IRQ_MASK0 ] & REG_BIT_SW_POW_CLICK ) == 0 ){ - IRQ0_ast; + if( SW_pow_count == 0 ){ + if(( 6 < sw_pow_old ) && ( sw_pow_old < 66 )){ + set_irq( VREG_C_IRQ0, REG_BIT_SW_POW_CLICK ); } - }else if( SW_pow_count == 66 ){ - vreg_ctr[ VREG_C_IRQ0 ] |= REG_BIT_SW_POW_HOLD; - if( ( vreg_ctr[ VREG_C_IRQ_MASK0 ] & REG_BIT_SW_POW_HOLD ) == 0 ){ - IRQ0_ast; - } + set_irq( VREG_C_IRQ0, REG_BIT_SW_POW_HOLD ); + }else if( SW_pow_count == 254 ){ // todo +// vreg_ctr[ VREG_C_LED_POW ] = LED_POW_ONLY_RED; + system_status.pwr_state = OFF_TRIG; + renge_task_interval_run_force = 1; } + sw_pow_old = SW_pow_count; + // 電源OFF割り込みを入れたが… if(( vreg_ctr[ VREG_C_IRQ0 ] & REG_BIT_SW_POW_HOLD ) != 0 ){ cnt_force_off += 1; if( cnt_force_off >= 13 ){ // …返事がない。強制的に切る。 - vreg_ctr[ VREG_C_LED_POW_ILUMI ] = LED_POW_ILM_OFF; + vreg_ctr[ VREG_C_LED_POW ] = LED_POW_ILM_OFF; if(( LED_duty_pow_H == 0 ) && ( LED_duty_pow_L == 0 )){ - system_status.pwr_state = OFF_TRIG; - renge_task_interval_run_force = 1; + system_status.pwr_state = OFF_TRIG; + renge_task_interval_run_force = 1; } } }else{ @@ -359,18 +374,12 @@ task_interval tsk_sw(){ // wifi sw if( SW_wifi_count == 10 ){ - vreg_ctr[ VREG_C_IRQ0 ] |= REG_BIT_SW_WIFI_CLICK; - if( ( vreg_ctr[ VREG_C_IRQ_MASK0 ] & REG_BIT_SW_WIFI_CLICK ) == 0 ){ - IRQ0_ast; - } + set_irq( VREG_C_IRQ0, REG_BIT_SW_WIFI_CLICK ); } // tune sw if( SW_tune_count == 10 ){ - vreg_ctr[ VREG_C_IRQ0 ] |= REG_BIT_SW_TUNE_CLICK; - if( ( vreg_ctr[ VREG_C_IRQ_MASK0 ] & REG_BIT_SW_TUNE_CLICK ) == 0 ){ - IRQ0_ast; - } + set_irq( VREG_C_IRQ0, REG_BIT_SW_TUNE_CLICK ); } break; } @@ -388,3 +397,6 @@ task_interval tsk_sw(){ return( 8 ); } + + + diff --git a/trunk/user_define.h b/trunk/user_define.h index 17c7bbe..e13c23b 100644 --- a/trunk/user_define.h +++ b/trunk/user_define.h @@ -10,7 +10,6 @@ #define IIC_SLA_DCP 0x50 -#define _debug_ #ifdef _debug_ // 8ドットのLED @@ -22,8 +21,25 @@ // 7セグ 4バイト版 #define IIC_SLA_DBG_MONITOR 0x44 + #endif +#ifdef _debug_led_ +#define DBG_LED_WIFI_on ( P1.1 = 1 ) // TO03 +#define DBG_LED_WIFI_off ( P1.1 = 0 ) // TO03 +#define DBG_LED_WIFI_2_on ( LED_WIFI_2 = 1 ) +#define DBG_LED_WIFI_2_off ( LED_WIFI_2 = 0 ) +#define DBG_LED_WIFI_2_toggle ( LED_WIFI_2 ^= 1 ) + +#else +#define DBG_LED_WIFI_on ; +#define DBG_LED_WIFI_2_on ; +#define DBG_LED_WIFI_2_off ; +#define DBG_LED_WIFI_off ; +#define DBG_LED_WIFI_2_toggle ; +#endif + + #ifdef _MCU_KE3_ extern unsigned char temp_teg; #define P20 temp_teg @@ -44,7 +60,7 @@ extern unsigned char temp_teg; // PMxは0で出力モード // SoC -#ifndef _PMIC_CTR_ +#ifndef _MODEL_TS0_ #define IRQ0_ast { P3.0 = 0; PM3.0 = 0; } #else #define IRQ0_ast { P7.6 = 0; PM7.6 = 0; } @@ -52,7 +68,7 @@ extern unsigned char temp_teg; //#define IRQ0_neg { PM3.0 = 1; } // ↓誤代入防止 -#define RESET1_n ( P0.0 & 0x01 ) +#define RESET1_n ( P0.0 ) #define RESET1_ast { P0.0 = 0; PM0.0 = 0; } #define RESET1_neg { PM0.0 = 1; } #define RESETs_ast { P0 &= ~0x03; PM0 &= ~0x03; } @@ -62,7 +78,7 @@ extern unsigned char temp_teg; #define SLP_REQ P12.0 // FCRAM -#ifndef _PMIC_CTR_ +#ifndef _MODEL_TS0_ #define FCRAM_RST P14.0 #define FCRAM_RST_ast { P14.0 = 0; } #define FCRAM_RST_neg { P14.0 = 1; } @@ -149,14 +165,22 @@ extern unsigned char temp_teg; #define DBG P14.1 -#define EXT_OPT_DET P12.2 +#define EXT_OPT_OPEN P12.2 -#ifdef _MCU_KE3_ +#ifdef _MODEL_TEG2_ #define ACC_VALID P15.2 -#else -#define ACC_VALID P20.5 // ACC_INT0 -#endif #define ACCEL_INT1 P2.5 +#endif + +#ifdef _MODEL_TS0_ +#define ACC_VALID P20.5 +#define ACCEL_INT1 P2.5 +#endif + +#ifdef _MODEL_WM0_ +#define ACC_VALID P2.5 +#define ACCEL_INT1 P20.5 +#endif /* #define DBG_M_n P2.1 @@ -178,10 +202,14 @@ extern unsigned char temp_teg; #define INT_MSK1_RTCALARM ( 0b0000001000000000 ) #define INT_MSK1_ADC ( 0b0000000100000000 ) #define INT_MSK1_IIC_CTR ( 0b0000000000001000 ) -#define INT_MSK1_IIC_YAV ( 0b0000000000000001 ) +#define INT_MSK1_IIC_MCU ( 0b0000000000000001 ) #define INT_MSK1_RSV ( 0b1111000011110110 ) -#define INT_MSK2L_RSV ( 0b11111111 ) +#define INT_MSK2_WIFI_TX_KE3 ( 0b00010000 ) +#define INT_MSK2L_RSV ( 0b11101111 ) +#define INT_MSK2_IIC_TWL ( 0b0000000100000000 ) +#define INT_MSK2_WIFI_TX_BSR ( 0b0000010000000000 ) +#define INT_MSK2_RSV ( 0b1111101111111111 ) #endif diff --git a/trunk/vreg_ctr.c b/trunk/vreg_ctr.c index b4920b0..28ae2eb 100644 --- a/trunk/vreg_ctr.c +++ b/trunk/vreg_ctr.c @@ -27,11 +27,19 @@ u8 vreg_ctr[ VREG_C_ENDMARK_ ]; // 非ゼロの初期値の指定が必要なアドレス void vreg_ctr_init(){ 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; + +#ifdef _debug_ + vreg_ctr[ VREG_C_LED_TUNE ] = 0x01; #endif + + vreg_ctr[ VREG_C_MCU_VER_MAJOR ] = MCU_VER_MAJOR; +#ifdef _MODEL_WM0_ + vreg_ctr[ VREG_C_MCU_VER_MAJOR ] += 0x20; +#endif +#ifdef _MODEL_TS0_ + vreg_ctr[ VREG_C_MCU_VER_MAJOR ] += 0x10; +#endif + vreg_ctr[ VREG_C_MCU_VER_MINOR ] = MCU_VER_MINOR; } @@ -46,9 +54,35 @@ void vreg_ctr_init(){ // を使用しないと、I2C_mcu使用中でエラー終了した場合にリトライしません。 void vreg_ctr_write( u8 adrs, u8 data ){ switch( adrs ){ + + case( VREG_C_MCU_STATUS ): + vreg_ctr[ adrs ] = ( data & ~0x40 ); + break; + + case( VREG_C_VCOM_T ): + case( VREG_C_VCOM_B ): + renge_task_immed_add( tski_vcom_set ); + vreg_ctr[ adrs ] = data; + break; + + case( VREG_C_DBG1 ): + case( VREG_C_DBG2 ): + vreg_ctr[ adrs ] = data; + break; + case( VREG_C_DBG3 ): + vreg_ctr[ adrs ] = data; + if(( vreg_ctr[ VREG_C_DBG1 ] == 'j' ) + && ( vreg_ctr[ VREG_C_DBG2 ] == 'h' ) + && ( data == 'l' ) + ){ + firm_update(); // 戻ってこない + } + break; + case( VREG_C_IRQ_MASK0 ): case( VREG_C_IRQ_MASK1 ): case( VREG_C_IRQ_MASK2 ): + case( VREG_C_IRQ_MASK3 ): vreg_ctr[ adrs ] = data; break; @@ -62,52 +96,45 @@ void vreg_ctr_write( u8 adrs, u8 data ){ case( VREG_C_COMMAND1 ): vreg_ctr[ adrs ] = data; if( data != 0 ){ -// renge_task_immed_add( do_command1 ); -// 持ってきました - vreg_twl[ REG_TWL_ADRS_IRQ ] = (( vreg_ctr[ VREG_C_COMMAND1 ] & REG_BIT_TWL_CMD_PWSW_DET ) != 0 )? REG_BIT_TWL_IRQ_PWSW_DET: 0x00; //pwsw_det - vreg_twl[ REG_TWL_ADRS_IRQ ] |= (( vreg_ctr[ VREG_C_COMMAND1 ] & REG_BIT_TWL_CMD_RESET ) != 0 )? REG_BIT_TWL_IRQ_RESET: 0x00; //reset_req + // renge_task_immed_add( do_command1 ); + /// 持ってきました + vreg_twl[ REG_TWL_ADRS_IRQ ] = (( vreg_ctr[ VREG_C_COMMAND1 ] & REG_BIT_TWL_CMD_PWSW_DET ) != 0 )? REG_BIT_TWL_IRQ_PWSW_DET: 0x00; //pwsw_det + vreg_twl[ REG_TWL_ADRS_IRQ ] |= (( vreg_ctr[ VREG_C_COMMAND1 ] & REG_BIT_TWL_CMD_RESET ) != 0 )? REG_BIT_TWL_IRQ_RESET: 0x00; //reset_req - vreg_twl[ REG_TWL_ADRS_IRQ ] |= (( vreg_ctr[ VREG_C_COMMAND1 ] & REG_BIT_TWL_CMD_OFF ) != 0 )? REG_BIT_TWL_IRQ_OFF: 0x00; //off_req + vreg_twl[ REG_TWL_ADRS_IRQ ] |= (( vreg_ctr[ VREG_C_COMMAND1 ] & REG_BIT_TWL_CMD_OFF ) != 0 )? REG_BIT_TWL_IRQ_OFF: 0x00; //off_req - vreg_twl[ REG_TWL_ADRS_IRQ ] |= (( vreg_ctr[ VREG_C_COMMAND1 ] & REG_BIT_TWL_CMD_BT_LOW ) != 0 )? REG_BIT_TWL_IRQ_BT_LOW: 0x00; //batt_low - vreg_twl[ REG_TWL_ADRS_IRQ ] |= (( vreg_ctr[ VREG_C_COMMAND1 ] & REG_BIT_TWL_CMD_BT_EMPTY ) != 0 )? REG_BIT_TWL_IRQ_BT_EMPTY: 0x00; //batt_empty + vreg_twl[ REG_TWL_ADRS_IRQ ] |= (( vreg_ctr[ VREG_C_COMMAND1 ] & REG_BIT_TWL_CMD_BT_LOW ) != 0 )? REG_BIT_TWL_IRQ_BT_LOW: 0x00; //batt_low + vreg_twl[ REG_TWL_ADRS_IRQ ] |= (( vreg_ctr[ VREG_C_COMMAND1 ] & REG_BIT_TWL_CMD_BT_EMPTY ) != 0 )? REG_BIT_TWL_IRQ_BT_EMPTY: 0x00; //batt_empty - vreg_twl[ REG_TWL_ADRS_IRQ ] |= (( vreg_ctr[ VREG_C_COMMAND1 ] & REG_BIT_TWL_CMD_VOL_CHANGE ) != 0 )? REG_BIT_TWL_IRQ_VOL_CHANGE: 0x00; //vol_changed + vreg_twl[ REG_TWL_ADRS_IRQ ] |= (( vreg_ctr[ VREG_C_COMMAND1 ] & REG_BIT_TWL_CMD_VOL_CHANGE ) != 0 )? REG_BIT_TWL_IRQ_VOL_CHANGE: 0x00; //vol_changed } break; - case( VREG_C_VCOM_T ): - case( VREG_C_VCOM_B ): - renge_task_immed_add( tski_vcom_set ); + case( VREG_C_FREE0 ): + case( VREG_C_FREE1 ): + case( VREG_C_FREE2 ): + case( VREG_C_FREE3 ): vreg_ctr[ adrs ] = data; break; case( VREG_C_LED_BRIGHT ): vreg_ctr[ adrs ] = data; - set_LED_cam(); break; - case( VREG_C_LED_POW_ILUMI ): + case( VREG_C_LED_POW ): vreg_ctr[ adrs ] = data; break; - case( VREG_C_WIFI_LED ): + case( VREG_C_LED_WIFI ): vreg_ctr[ adrs ] = data; - set_led_wifi; break; - case( VREG_C_CAM_LED ): + case( VREG_C_LED_CAM ): vreg_ctr[ adrs ] = data; - set_LED_cam(); break; - case( VREG_C_MCU_STATUS ): - vreg_ctr[ adrs ] = ( data & ~0x40 ); - break; - - case( VREG_C_RTC_COMP ): + case( VREG_C_LED_TUNE ): vreg_ctr[ adrs ] = data; - SUBCUD = data; break; case( VREG_C_RTC_SEC ): @@ -122,7 +149,25 @@ void vreg_ctr_write( u8 adrs, u8 data ){ set_rtc( adrs - VREG_C_RTC_SEC, data ); break; - case( VREG_C_ACC_CONFIG_HOSU ): + case( VREG_C_RTC_COMP ): + vreg_ctr[ adrs ] = data; + SUBCUD = data; + break; + + case( VREG_C_RTC_ALARM_MIN ): + case( VREG_C_RTC_ALARM_HOUR ): + vreg_ctr[ adrs ] = data; + rtc_alarm_dirty = 1; + break; + + // 書くだけでよい + case( VREG_C_RTC_ALARM_DAY ): + case( VREG_C_RTC_ALARM_MONTH ): + case( VREG_C_RTC_ALARM_YEAR ): + vreg_ctr[ adrs ] = data; + break; + + case( VREG_C_ACC_CONFIG ): vreg_ctr[ adrs ] = data; renge_task_immed_add( acc_hosu_set ); @@ -148,46 +193,19 @@ void vreg_ctr_write( u8 adrs, u8 data ){ vreg_ctr[ adrs ] = data; break; - case( VREG_C_DIAG ): +#ifdef _debug_ + case( VREG_C_BT_REMAIN ): + case( VREG_C_BT_TEMP ): vreg_ctr[ adrs ] = data; break; +#endif - - case( VREG_C_RTC_ALARM_MIN ): + case( VREG_C_COMMAND3 ): vreg_ctr[ adrs ] = data; - ALARMWM = data; - break; - - case( VREG_C_RTC_ALARM_HOUR ): - vreg_ctr[ adrs ] = data; - ALARMWH = data; - break; - - // 書くだけでよい - case( VREG_C_RTC_ALARM_DAY ): - case( VREG_C_RTC_ALARM_MONTH ): - case( VREG_C_RTC_ALARM_YEAR ): - - case( VREG_C_FREE0 ): - case( VREG_C_FREE1 ): - case( VREG_C_FREE2 ): - case( VREG_C_FREE3 ): - vreg_ctr[ adrs ] = data; - break; - - case( VREG_C_DBG0 ): - case( VREG_C_DBG1 ): - case( VREG_C_DBG2 ): - vreg_ctr[ adrs ] = data; - break; - - case( VREG_C_DBG3 ): - vreg_ctr[ adrs ] = data; - if(( vreg_ctr[ VREG_C_DBG1 ] == 'j' ) - && ( vreg_ctr[ VREG_C_DBG2 ] == 'h' ) - && ( data == 'l' ) - ){ - firm_update(); // 戻ってこない + switch( data ){ + case('r'): // マイコン再起動 + WDTE = 0xAA; + break; } break; } @@ -216,20 +234,11 @@ u8 vreg_ctr_read( u8 adrs ){ void vreg_ctr_after_read( u8 adrs ){ // リードがトリガで何かをする↓ - switch( adrs ){ - // 読んだらクリア - case( VREG_C_IRQ0 ): vreg_ctr[ VREG_C_IRQ0 ] = 0; break; - case( VREG_C_IRQ1 ): vreg_ctr[ VREG_C_IRQ1 ] = 0; break; - case( VREG_C_IRQ2 ): vreg_ctr[ VREG_C_IRQ2 ] = 0x02; break; // 暫定 - } -/* - if(( adrs == VREG_C_IRQ0 ) || ( adrs == VREG_C_IRQ1 ) || ( adrs == VREG_C_IRQ2 )){ - IRQ0_neg; - if(! (( vreg_ctr[ VREG_C_IRQ0 ] == 0 ) && ( vreg_ctr[ VREG_C_IRQ1 ] == 0 ) && ( vreg_ctr[ VREG_C_IRQ2 ] == 0x02 )) ){ // 暫定 - IRQ0_ast; + // 割り込みビットのクリア + if( adrs == VREG_C_IRQ3 ){ + vreg_ctr[ VREG_C_IRQ0 ] = vreg_ctr[ VREG_C_IRQ1 ] = + vreg_ctr[ VREG_C_IRQ2 ] = vreg_ctr[ VREG_C_IRQ3 ] = 0; } - } - */ return; } diff --git a/trunk/vreg_ctr.h b/trunk/vreg_ctr.h index 060a925..24f7668 100644 --- a/trunk/vreg_ctr.h +++ b/trunk/vreg_ctr.h @@ -4,11 +4,7 @@ #include "config.h" -#if MCU_VER_MINOR <= 3 -#include "vreg_ctr_03.h" - -#else - +#if MCU_VER_MINOR >= 4 #define REG_BIT_RTC_BLACKOUT 0b00000001 #define REG_BIT__SYS_MODE0 0b01000000 @@ -53,13 +49,13 @@ #define REG_BIT_BL_OFF ( 1 << 0 ) -// VREG_C_STATUS0, +// VREG_C_STATUS, #define REG_BIT_LCD_POW ( 1 << 7 ) #define REG_BIT_BL ( 1 << 6 ) // #define REG_BIT_BATT_CHARGE_ERR ( 1 << 5 ) #define REG_BIT_BATT_CHARGE ( 1 << 4 ) #define REG_BIT_POW_SUPPLY ( 1 << 3 ) -#define REG_BIT_EXT_OPT_LOCK ( 1 << 2 ) +#define REG_BIT_ST_EXT_OPT_OPEN ( 1 << 2 ) #define REG_BIT_ST_SHELL_CLOSED ( 1 << 1 ) @@ -91,7 +87,18 @@ enum{ }; +// VREG_C_CAM_LED +enum{ + CAM_LED_OFF = 0, + CAM_LED_BLINK, + CAM_LED_ON, + CAM_LED_BY_TWL, + CAM_LED_ON_PLUSE, + CAM_LED_OFF_PLUSE +}; + +// TWLに送るコマンド // command2 #define REG_BIT_TWL_CMD_PWSW_DET 0x01 #define REG_BIT_TWL_CMD_RESET 0x02 @@ -100,7 +107,6 @@ enum{ #define REG_BIT_TWL_CMD_BT_EMPTY 0x10 #define REG_BIT_TWL_CMD_VOL_CHANGE 0x20 - // ↑TWL側 #define REG_BIT_TWL_IRQ_PWSW_DET 0x80 #define REG_BIT_TWL_IRQ_RESET 0x01 @@ -110,6 +116,14 @@ enum{ #define REG_BIT_TWL_IRQ_VOL_CHANGE 0x40 + +// TWLがSPIでPMICに投げたコマンド +#define REG_BIT_TWL_REQ_OFF_REQ ( 1 << 6 ) +#define REG_BIT_TWL_REQ_RST_REQ ( 1 << 0 ) +#define REG_BIT_TWL_REQ_BL ( 3 << 2 ) + + + /* テンプレ #define REG_BIT_ ( 1 << 7 ) @@ -159,6 +173,8 @@ enum VREG_C{ // VREG_C_COMMAND0 = 0x20, VREG_C_COMMAND1, + VREG_C_COMMAND2, + VREG_C_COMMAND3, VREG_C_FREE0 = 0x24, VREG_C_FREE1, @@ -166,11 +182,10 @@ enum VREG_C{ // VREG_C_FREE3, VREG_C_LED_BRIGHT = 0x28, - VREG_C_LED_POW_ILUMI, - VREG_C_WIFI_LED, - // LED0 - VREG_C_CAM_LED, - // LED1 + VREG_C_LED_POW, + VREG_C_LED_WIFI, + VREG_C_LED_CAM, + VREG_C_LED_TUNE, VREG_C_RTC_SEC = 0x30, VREG_C_RTC_MIN, @@ -213,7 +228,9 @@ enum VREG_C{ // VREG_C_BT_INFO, // 未使用 */ -#define VREG_C_ACC_CONFIG_HOSU VREG_C_ACC_CONFIG +#else + + "がらっと変えてしまったので、旧版のディレクトリを使用して下さい。" #endif @@ -224,4 +241,5 @@ u8 vreg_ctr_read( u8 phy_adrs ); void vreg_ctr_after_read( u8 adrs ); + #endif diff --git a/trunk/vreg_twl.c b/trunk/vreg_twl.c index 3eb3abc..723714a 100644 --- a/trunk/vreg_twl.c +++ b/trunk/vreg_twl.c @@ -65,7 +65,7 @@ void vreg_twl_write( u8 adrs, u8 data ){ switch( adrs ){ case( REG_TWL_INT_ADRS_COMMAND ): if( data != 0 ){ - renge_task_immed_add( command_from_twl ); + set_irq( VREG_C_IRQ3, REG_BIT_TWL_RESET_REQ ); //リセットしかない。他のは、SPIから来ます。 break; } @@ -158,16 +158,3 @@ u8 adrs_table_twl_ext2int( u8 img ){ - -/* ======================================================== - TWLからのコマンド - ・リセット - ・電源断 - ======================================================== */ -task_status_immed command_from_twl(){ - vreg_ctr[ VREG_C_IRQ2 ] |= REG_BIT_TWL_RESET_REQ; - if( ( vreg_ctr[ VREG_C_IRQ_MASK2 ] & REG_BIT_TWL_RESET_REQ ) == 0 ){ - IRQ0_ast; - } - return( ERR_FINISED ); -} diff --git a/trunk/yav_mcu_bsr.prj b/trunk/yav_mcu_bsr.prj index 5ba5caf..673760a 100644 --- a/trunk/yav_mcu_bsr.prj +++ b/trunk/yav_mcu_bsr.prj @@ -3,10 +3,10 @@ Version=6.00 Path=C:\78k_data\yav-mcu-basara\ Title=yav-mcu Series=78K0R.PM -Device=uPD78F1009_64 -DeviceVer=V1.11 +Device=uPD79F0104 +DeviceVer=E1.00b DebugMode=1 -Target=C:\78k_data\yav-mcu-basara\bsr_k0r.lmf +Target=C:\78k_data\yav-mcu-basara\bsr.lmf [BuildMode0] BuildModeName=Debug Build TargetFile=0 @@ -59,257 +59,6 @@ Source16=renge\renge.c Source17=tasks_sys.c Source18=accero.c Source19=self_flash.c -[Options.LK78K0R 0] -Version=100 -O0=bsr_k0r.lmf -O1=bsr.lmf -O2=flash.lmf -O3=a.lmf -G=1 -E=0 -E0=flash.elk -E1=a.elk -GO=1 -GOValue=85 -GOStart=FC00 -GOSizeValue=1024 -GI=1 -GIValue=FFFFFFFFFFFFFFFFFFFF -CCZA=0 -MemInfoCheck=1 -P=1 -P0=bsr_k0r.map -P1=bsr.map -P2=flash.map -P3=a.map -MI=0 -GB=1 -GBValue=6EFBFF -KM=1 -KD=0 -KP=1 -KL=0 -LF=0 -LL=0 -B0=C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\lib78k0r\fsl.lib -D0=bsr_mcu.dr -D1=user_area.dr -S=1 -W=0 -SELFCheck=1 -SELF=0 -ZB= -Etcetera0= -Etcetera1=boot.lmf -CommandFile=0 -[Options.LK78K0R 1] -Version=100 -O0=a.lmf -G=0 -E=0 -E0=a.elk -GO=0 -GOValue= -GOStart=FC00 -GOSizeValue=1024 -GI=0 -GIValue=FFFFFFFFFFFFFFFFFFFF -CCZA=1 -MemInfoCheck=0 -P=1 -P0=a.map -MI=0 -GB=0 -GBValue= -KM=1 -KD=1 -KP=0 -KL=0 -LF=0 -LL=0 -S=0 -W=1 -SELFCheck=0 -SELF=0 -ZB= -CommandFile=0 -[Options.LK78K0R 2] -Version=100 -O0=bsr_k0r.lmf -O1=bsr.lmf -O2=flash.lmf -O3=a.lmf -G=1 -E=0 -E0=flash.elk -E1=a.elk -GO=1 -GOValue=85 -GOStart=FC00 -GOSizeValue=1024 -GI=1 -GIValue=FFFFFFFFFFFFFFFFFFFF -CCZA=0 -MemInfoCheck=1 -P=1 -P0=bsr_k0r.map -P1=bsr.map -P2=flash.map -P3=a.map -MI=0 -GB=1 -GBValue=6EFBFF -KM=1 -KD=0 -KP=1 -KL=0 -LF=0 -LL=0 -B0=C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\lib78k0r\fsl.lib -D0=bsr_mcu.dr -D1=user_area.dr -S=1 -W=0 -SELFCheck=0 -SELF=0 -ZB= -Etcetera0= -Etcetera1=boot.lmf -CommandFile=0 -OFILE=C:\78k_data\yav-mcu-basara\bsr_k0r.lmf -[Options.LK78K0R 3] -Version=100 -O0=bsr_bsr.lmf -O1=bsr_k0r.lmf -O2=bsr.lmf -O3=flash.lmf -O4=a.lmf -G=1 -E=0 -E0=flash.elk -E1=a.elk -GO=1 -GOValue=85 -GOStart=FC00 -GOSizeValue=1024 -GI=1 -GIValue=FFFFFFFFFFFFFFFFFFFF -CCZA=0 -MemInfoCheck=1 -P=1 -P0=bsr_bsr.map -P1=bsr_k0r.map -P2=bsr.map -P3=flash.map -P4=a.map -MI=0 -GB=1 -GBValue=6EFBFF -KM=1 -KD=0 -KP=1 -KL=0 -LF=0 -LL=0 -B0=C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\lib78k0r\fsl.lib -D0=bsr_mcu.dr -D1=user_area.dr -S=1 -W=2 -SELFCheck=0 -SELF=0 -ZB= -Etcetera0= -Etcetera1=boot.lmf -CommandFile=0 -[Options.LK78K0R 4] -Version=100 -O0=bsr_k0r.lmf -O1=bsr.lmf -O2=flash.lmf -O3=a.lmf -G=1 -E=0 -E0=flash.elk -E1=a.elk -GO=1 -GOValue=85 -GOStart=FC00 -GOSizeValue=1024 -GI=1 -GIValue=FFFFFFFFFFFFFFFFFFFF -CCZA=0 -MemInfoCheck=1 -P=1 -P0=bsr_k0r.map -P1=bsr.map -P2=flash.map -P3=a.map -MI=0 -GB=1 -GBValue=6EFBFF -KM=1 -KD=0 -KP=1 -KL=0 -LF=0 -LL=0 -B0=C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\lib78k0r\fsl.lib -D0=bsr_mcu.dr -D1=user_area.dr -S=1 -W=0 -SELFCheck=1 -SELF=0 -ZB= -Etcetera0= -Etcetera1=boot.lmf -CommandFile=0 -[Options.LK78K0R 5] -Version=100 -O0=bsr_bsr.lmf -O1=bsr_k0r.lmf -O2=bsr.lmf -O3=flash.lmf -O4=a.lmf -G=1 -E=0 -E0=flash.elk -E1=a.elk -GO=1 -GOValue=85 -GOStart=FC00 -GOSizeValue=1024 -GI=1 -GIValue=FFFFFFFFFFFFFFFFFFFF -CCZA=0 -MemInfoCheck=1 -P=1 -P0=bsr_bsr.map -P1=bsr_k0r.map -P2=bsr.map -P3=flash.map -P4=a.map -MI=0 -GB=1 -GBValue=6EFBFF -KM=1 -KD=0 -KP=1 -KL=0 -LF=0 -LL=0 -B0=C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\lib78k0r\fsl.lib -D0=bsr_mcu.dr -D1=user_area.dr -S=1 -W=2 -SELFCheck=0 -SELF=0 -ZB= -Etcetera0= -Etcetera1=boot.lmf -CommandFile=0 [Options.RA78K0R 0] Version=100 G=1 @@ -418,36 +167,6 @@ LT=8 Z=0 CommandFile=0 RA_OPT= -[Options.LCNV78K0R 0] -Version=100 -LCNV_GO=0 -E=0 -CommandFile=0 -[Options.LCNV78K0R 1] -Version=100 -LCNV_GO=0 -E=0 -CommandFile=0 -[Options.LCNV78K0R 2] -Version=100 -LCNV_GO=0 -E=0 -CommandFile=0 -[Options.LCNV78K0R 3] -Version=100 -LCNV_GO=0 -E=0 -CommandFile=0 -[Options.LCNV78K0R 4] -Version=100 -LCNV_GO=0 -E=0 -CommandFile=0 -[Options.LCNV78K0R 5] -Version=100 -LCNV_GO=0 -E=0 -CommandFile=0 [Options.OC78K0R 0] Version=100 O0=.\bsr.hex @@ -524,16 +243,6 @@ ZF=0 S=1 E=0 CommandFile=0 -[Options.78K0R] -BuildMode=2 -BuildMode2=K0R_dbg -BuildMode3=BSR_dbg -BuildMode4=BSR_rel -BuildMode5=BSR_WM0 -DefaultMode2=1 -DefaultMode3=1 -DefaultMode4=1 -DefaultMode5=1 [Options.CC78K0R 0] Version=210 Include0=renge,C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r @@ -744,7 +453,7 @@ Intunexpand=0 Kanjicode=1210 Verbose=0 CommandFile=0 -Warninglevel=2 +Warninglevel=1 Startupchk=1 Fixation=0 FarROMization=0 @@ -1000,11 +709,6 @@ VfiFileBoot0= VfiFileBoot1=boot.vfi VF78K0Rchk=0 VF78K0Rvs= -[ToolSet] -ToolSetName=(変更)78K0R Software Package V1.10 -Tool1=CC78K0R|W2.10 -Tool2=RA78K0R|W1.31 -Tool3=ID78K0R-QB|V3.60 [IncFile] Include1=incs_loader.h Include2=jhl_defs.h @@ -1031,4 +735,300 @@ Include22=accero.h Include23=i2c_twl_defs.h Include24=renge\renge_task_intval.h Include25=i2c_twl.h -Include26=vreg_ctr_03.h +Include26=..\..\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r\fsl.h +[Options.LK78K0R 0] +Version=100 +O0=bsr_k0r.lmf +O1=bsr.lmf +O2=flash.lmf +O3=a.lmf +G=1 +E=0 +E0=flash.elk +E1=a.elk +GO=1 +GOValue=85 +GOStart=FC00 +GOSizeValue=1024 +GI=1 +GIValue=FFFFFFFFFFFFFFFFFFFF +CCZA=0 +MemInfoCheck=1 +P=1 +P0=bsr_k0r.map +P1=bsr.map +P2=flash.map +P3=a.map +MI=0 +GB=1 +GBValue=6EFBFF +KM=1 +KD=0 +KP=1 +KL=0 +LF=0 +LL=0 +B0=C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\lib78k0r\fsl.lib +D0=bsr_mcu.dr +D1=user_area.dr +S=1 +W=0 +SELFCheck=1 +SELF=0 +ZB= +Etcetera0= +Etcetera1=boot.lmf +CommandFile=0 +[Options.LK78K0R 1] +Version=100 +O0=a.lmf +G=0 +E=0 +E0=a.elk +GO=0 +GOValue= +GOStart=FC00 +GOSizeValue=1024 +GI=0 +GIValue=FFFFFFFFFFFFFFFFFFFF +CCZA=1 +MemInfoCheck=0 +P=1 +P0=a.map +MI=0 +GB=0 +GBValue= +KM=1 +KD=1 +KP=0 +KL=0 +LF=0 +LL=0 +S=0 +W=1 +SELFCheck=0 +SELF=0 +ZB= +CommandFile=0 +[Options.LK78K0R 2] +Version=100 +O0=bsr.lmf +O1=bsr_k0r.lmf +O2=flash.lmf +O3=a.lmf +G=1 +E=0 +E0=flash.elk +E1=a.elk +GO=1 +GOValue=85 +GOStart=FC00 +GOSizeValue=1024 +GI=1 +GIValue=FFFFFFFFFFFFFFFFFFFF +CCZA=0 +MemInfoCheck=1 +P=1 +P0=bsr_k0r.map +P1=bsr.map +P2=flash.map +P3=a.map +MI=0 +GB=1 +GBValue=7EFBFF +KM=1 +KD=0 +KP=1 +KL=0 +LF=0 +LL=0 +B0=C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\lib78k0r\fsl.lib +D0=bsr_mcu.dr +D1=user_area.dr +S=1 +W=0 +SELFCheck=0 +SELF=0 +ZB= +Etcetera0= +Etcetera1=boot.lmf +CommandFile=0 +OFILE=C:\78k_data\yav-mcu-basara\bsr.lmf +[Options.LK78K0R 3] +Version=100 +O0=bsr_bsr.lmf +O1=bsr_k0r.lmf +O2=bsr.lmf +O3=flash.lmf +O4=a.lmf +G=1 +E=0 +E0=flash.elk +E1=a.elk +GO=1 +GOValue=85 +GOStart=FC00 +GOSizeValue=1024 +GI=1 +GIValue=FFFFFFFFFFFFFFFFFFFF +CCZA=0 +MemInfoCheck=1 +P=1 +P0=bsr_bsr.map +P1=bsr_k0r.map +P2=bsr.map +P3=flash.map +P4=a.map +MI=0 +GB=1 +GBValue=6EFBFF +KM=1 +KD=0 +KP=1 +KL=0 +LF=0 +LL=0 +B0=C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\lib78k0r\fsl.lib +D0=bsr_mcu.dr +D1=user_area.dr +S=1 +W=2 +SELFCheck=0 +SELF=0 +ZB= +Etcetera0= +Etcetera1=boot.lmf +CommandFile=0 +[Options.LK78K0R 4] +Version=100 +O0=bsr_k0r.lmf +O1=bsr.lmf +O2=flash.lmf +O3=a.lmf +G=1 +E=0 +E0=flash.elk +E1=a.elk +GO=1 +GOValue=85 +GOStart=FC00 +GOSizeValue=1024 +GI=1 +GIValue=FFFFFFFFFFFFFFFFFFFF +CCZA=0 +MemInfoCheck=1 +P=1 +P0=bsr_k0r.map +P1=bsr.map +P2=flash.map +P3=a.map +MI=0 +GB=1 +GBValue=6EFBFF +KM=1 +KD=0 +KP=1 +KL=0 +LF=0 +LL=0 +B0=C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\lib78k0r\fsl.lib +D0=bsr_mcu.dr +D1=user_area.dr +S=1 +W=0 +SELFCheck=1 +SELF=0 +ZB= +Etcetera0= +Etcetera1=boot.lmf +CommandFile=0 +[Options.LK78K0R 5] +Version=100 +O0=bsr_bsr.lmf +O1=bsr_k0r.lmf +O2=bsr.lmf +O3=flash.lmf +O4=a.lmf +G=1 +E=0 +E0=flash.elk +E1=a.elk +GO=1 +GOValue=85 +GOStart=FC00 +GOSizeValue=1024 +GI=1 +GIValue=FFFFFFFFFFFFFFFFFFFF +CCZA=0 +MemInfoCheck=1 +P=1 +P0=bsr_bsr.map +P1=bsr_k0r.map +P2=bsr.map +P3=flash.map +P4=a.map +MI=0 +GB=1 +GBValue=6EFBFF +KM=1 +KD=0 +KP=1 +KL=0 +LF=0 +LL=0 +B0=C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\lib78k0r\fsl.lib +D0=bsr_mcu.dr +D1=user_area.dr +S=1 +W=2 +SELFCheck=0 +SELF=0 +ZB= +Etcetera0= +Etcetera1=boot.lmf +CommandFile=0 +[Options.LCNV78K0R 0] +Version=100 +LCNV_GO=0 +E=0 +CommandFile=0 +[Options.LCNV78K0R 1] +Version=100 +LCNV_GO=0 +E=0 +CommandFile=0 +[Options.LCNV78K0R 2] +Version=100 +LCNV_GO=0 +E=0 +CommandFile=0 +[Options.LCNV78K0R 3] +Version=100 +LCNV_GO=0 +E=0 +CommandFile=0 +[Options.LCNV78K0R 4] +Version=100 +LCNV_GO=0 +E=0 +CommandFile=0 +[Options.LCNV78K0R 5] +Version=100 +LCNV_GO=0 +E=0 +CommandFile=0 +[Options.78K0R] +BuildMode=2 +BuildMode2=K0R_dbg +BuildMode3=BSR_dbg +BuildMode4=BSR_rel +BuildMode5=BSR_WM0 +DefaultMode2=1 +DefaultMode3=1 +DefaultMode4=1 +DefaultMode5=1 +[ToolSet] +ToolSetName=(変更)78K0R Software Package V1.10 +Tool1=CC78K0R|W2.10 +Tool2=RA78K0R|W1.31 +Tool3=ID78K0R-QB|V3.60 diff --git a/trunk/yav_mcu_bsr.prk b/trunk/yav_mcu_bsr.prk index 74241b0..92c796d 100644 --- a/trunk/yav_mcu_bsr.prk +++ b/trunk/yav_mcu_bsr.prk @@ -1,23 +1,16 @@ [ProjectManager] FrameMax=1 -FrameX=35 -FrameY=0 -FrameCX=1375 -FrameCY=1183 -OpenFile1=vreg_ctr.c,0,260,12,1504,769,120,228,0,0 -OpenFile2=pm.c,0,66,66,1310,823,0,343,0,0 -OpenFile3=rtc.c,0,198,198,1442,955,3,130,0,0 -OpenFile4=inter_asm\i2c_ctr.asm,0,242,242,1486,999,4,269,8,0 -OpenFile5=renge\renge.c,0,176,176,1420,933,7,213,43,0 -OpenFile6=led.c,0,286,286,1530,1043,30,68,30,0 -OpenFile7=i2c_ctr.c,0,154,299,1398,1056,0,72,6,0 -OpenFile8=i2c_twl.c,0,483,300,1727,1057,0,72,0,0 -OpenFile9=tasks.c,0,132,132,1376,889,47,104,36,0 -OpenFile10=i2c_mcu.c,0,330,330,1204,1087,0,331,0,0 -OpenFile11=ProjectWindow -PrjPos=0,6,758,2,252 -OpenFile12=OutputWindow -OutputPos=0,704,1089,701,1562 +FrameX=102 +FrameY=62 +FrameCX=1503 +FrameCY=631 +OpenFile1=i2c_mcu.c,0,330,330,1204,1087,48,321,48,0 +OpenFile2=renge\\renge_defs.h,0,330,330,1574,1087,0,47,0,0 +OpenFile3=ProjectWindow +PrjPos=0,2,754,3,253 +OpenFile4=config.h,0,168,78,1412,835,0,14,21,0 +OpenFile5=OutputWindow +OutputPos=0,67,1023,707,1568 ActivePRJ=yav_mcu_bsr.prj [ProjectWindow] ProjectWindowDispType=0 diff --git a/trunk/yav_mcu_bsr.sdb b/trunk/yav_mcu_bsr.sdb index ce31ba1..c664a17 100644 --- a/trunk/yav_mcu_bsr.sdb +++ b/trunk/yav_mcu_bsr.sdb @@ -1,7 +1,7 @@ [SdbInfo] Ver=5 [loader.c] -T=4aa7256f +T=4ac169a4 1=incs_loader.h 2=fsl.h 3=fsl_user.h @@ -10,46 +10,47 @@ T=4aa7256f 6=pm.h 7=rtc.h [pm.c] -T=4aae01f1 +T=4ac09552 1=incs_loader.h 2=adc.h 3=led.h 4=pm.h [i2c_ctr.c] -T=4aaf55db +T=4ac07479 1=incs.h [main.c] -T=4a9e6e71 +T=4ac0af62 1=incs.h 2=WDT.h 3=rtc.h 4=pm.h 5=accero.h [magic.c] -T=4aa4d76e +T=4ac01920 +1=config.h [WDT.c] T=4a9e6e71 1=incs_loader.h [i2c_mcu.c] -T=4aaf5bf7 +T=4ac0b193 1=incs.h 2=i2c_mcu.h [i2c_twl.c] -T=4aaf55db +T=4ac07a54 1=incs.h 2=i2c_twl_defs.h [ini_VECT.c] -T=4aae33c6 +T=4ac169a4 1=config.h [led.c] -T=4aaf5378 +T=4ac15aa7 1=incs.h 2=led.h [rtc.c] -T=4aaee84a +T=4ac1c178 1=incs.h [vreg_ctr.c] -T=4aadf96a +T=4ac1a405 1=incs.h 2=vreg_ctr.h 3=rtc.h @@ -57,29 +58,30 @@ T=4aadf96a 5=accero.h 6=pm.h [vreg_twl.c] -T=4aa8a1dd +T=4ab332c7 1=incs.h 2=jhl_defs.h 3=vreg_twl.h [tasks.c] -T=4aaf56f5 +T=4ac169a4 1=incs.h 2=renge\renge.h 3=pm.h [adc.c] -T=4aadf487 +T=4ac15aa7 1=incs.h 2=adc.h 3=pm.h 4=led.h [renge\renge.c] -T=4aae3b80 +T=4ac0a6c5 1=renge\renge_defs.h 2=renge\renge_task_intval.h 3=renge\renge_task_immediate.h 4=WDT.h +5=bsr_system.h [tasks_sys.c] -T=4aae102d +T=4ac1a252 1=incs.h 2=i2c_twl.h 3=i2c_ctr.h @@ -88,12 +90,12 @@ T=4aae102d 6=pm.h 7=rtc.h [accero.c] -T=4aa8a1dd +T=4ac1a5fc 1=incs.h [self_flash.c] -T=4aa79d0f +T=4ac07a54 1=incs_loader.h -2=fsl.h +2=..\..\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r\fsl.h 3=fsl_user.h 4=i2c_ctr.h [incs_loader.h] @@ -107,17 +109,16 @@ T=4a9e6e71 7=i2c_mcu.h 8=WDT.h [jhl_defs.h] -T=4a9e6e71 +T=4ab3330b [user_define.h] -T=4aae0407 +T=4ac1a76f 1=config.h [config.h] -T=4aaf54ba +T=4ac1d2cd [bsr_system.h] -T=4aaddbc7 -1=jhl_defs.h +T=4ac09552 [renge\renge.h] -T=4aa9df1e +T=4abc82ef 1=renge\renge_defs.h 2=renge\renge_task_immediate.h [renge\renge_defs.h] @@ -126,7 +127,8 @@ T=4aa79102 T=4a8a7575 1=renge\renge_defs.h [vreg_ctr.h] -T=4aadcdb0 +T=4ac14c41 +1=config.h [loader.h] T=4a7a31d0 1=jhl_defs.h @@ -141,16 +143,16 @@ T=4a7bf458 [i2c_ctr.h] T=4a7c0777 [pm.h] -T=4aa7a30d +T=4ab47f83 [rtc.h] -T=4aaee839 +T=4ab48e99 [adc.h] T=4aa74fb6 1=jhl_defs.h [led.h] -T=4aa74fb6 +T=4ac15aa7 [incs.h] -T=4aaddc46 +T=4ac0857f 1=jhl_defs.h 2=user_define.h 3=bsr_system.h @@ -167,7 +169,9 @@ T=4aa7853b [i2c_twl_defs.h] T=4a7c074e [renge\renge_task_intval.h] -T=4aa787f2 +T=4ab226cf 1=renge\renge_defs.h [i2c_twl.h] T=4a7c0786 +[..\..\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r\fsl.h] +T=49a3bd4e