diff --git a/trunk/accero.c b/trunk/accero.c index fd82a64..0bcb97f 100644 --- a/trunk/accero.c +++ b/trunk/accero.c @@ -184,7 +184,8 @@ task_status_immed acc_hosu_set( ) #else # ifdef _MODEL_CTR_ - if( system_status.model == MODEL_TS_BOARD ) +/* +if( system_status.model == MODEL_TS_BOARD ) { // TS Final SoC str_send_buf[2] = 0x02; // 3 IRQ pol :Active HI, Drive:Pushpull, @@ -194,6 +195,8 @@ task_status_immed acc_hosu_set( ) // 実機&派生種、白箱 str_send_buf[2] = 0x10; // 3 IRQ pol :Active HI, Drive:Pushpull, } +*/ + str_send_buf[2] = 0x12; // 面倒なので両方...。 # else // TS( type T ) str_send_buf[2] = 0x02; // 3 IRQ pol :Active HI, Drive:Pushpull, @@ -252,9 +255,10 @@ __interrupt void intp23_ACC_ready( ) { if( ( system_status.pwr_state == ON ) || ( system_status.pwr_state == SLEEP ) ) { - if( ACC_VALID ) + if( ACC_VALID == 1 ) { - renge_task_immed_add( tsk_cbk_accero ); +// todo +// renge_task_immed_add( tsk_cbk_accero ); } } } diff --git a/trunk/adc.c b/trunk/adc.c index 545882b..70bfcd5 100644 --- a/trunk/adc.c +++ b/trunk/adc.c @@ -10,6 +10,8 @@ #include "led.h" +//#define _4db_ +#define _15db_ // ===================================================== // bit adc_updated; @@ -26,6 +28,9 @@ extern void nop8(); // ===================================================== // #define INTERVAL_TSK_ADC 3 + + + /* ======================================================== ADC設定と、開始 @@ -41,6 +46,7 @@ extern void nop8();  タスク起動時、レジスタには前回の取り込み値が入っています。 ======================================================== */ +#ifdef _15db_ // max -15db const u8 slider_to_codec[64] = { @@ -53,7 +59,22 @@ const u8 slider_to_codec[64] = 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66 }; +#endif +#ifdef _4db_ +// max -4db +const u8 slider_to_codec[64] = +{ + 127, 127, 126, 125, 123, 122, 121, 119, + 118, 117, 115, 114, 112, 111, 110, 108, + 107, 106, 104, 103, 101, 100, 99, 97, + 96, 94, 93, 92, 90, 89, 88, 86, + 85, 83, 82, 81, 79, 78, 77, 75, + 74, 72, 71, 70, 68, 67, 66, 64, + 64, 63, 61, 60, 59, 57, 56, 54, + 53, 52, 50, 49, 48, 46, 44, 44 +}; +#endif void tsk_adc( ) diff --git a/trunk/config.h b/trunk/config.h index 95ad683..3420693 100644 --- a/trunk/config.h +++ b/trunk/config.h @@ -6,7 +6,7 @@ #define MCU_VER_MAJOR 0x00 -#define MCU_VER_MINOR 0x12 +#define MCU_VER_MINOR 0x11 #define _OVERCLOCK_ @@ -15,13 +15,16 @@ //#define _MODEL_TEG2_ // ↑TEG2 CPU + Type-T + //#define _MODEL_WM0_ //#define _MODEL_WM0_TEG2_CTRC_ + //#define _MODEL_TS0_ // ↑TEG2 CPU + Type-C #define _MODEL_CTR_ // ↑TS board, WM1,1 TS-CTRC + //#define _MODEL_CTR_NOTIFY_FULLCOLOR_ // ↑TS board, WM1,1 TS-CTRC diff --git a/trunk/i2c_ctr.c b/trunk/i2c_ctr.c index e243e74..7b363ae 100644 --- a/trunk/i2c_ctr.c +++ b/trunk/i2c_ctr.c @@ -197,11 +197,14 @@ __interrupt void int_iic_ctr( ) // レジスタアドレスのインクリメント /// アクセスポインタを進めない特殊なレジスタ - if( ( reg_adrs != VREG_C_ACC_HOSU_HIST ) - && ( reg_adrs != VREG_C_INFO ) - && ( reg_adrs != VREG_C_FREE_DATA ) - ) + switch( reg_adrs ) { + case( VREG_C_ACC_HOSU_HIST ): + case( VREG_C_INFO ): + case( VREG_C_FREE_DATA ): + case( VREG_C_LED_NOTIFY_DATA ): + break; + default: reg_adrs += 1; } diff --git a/trunk/i2c_mcu.c b/trunk/i2c_mcu.c index 414ec1f..80c48e3 100644 --- a/trunk/i2c_mcu.c +++ b/trunk/i2c_mcu.c @@ -251,11 +251,11 @@ err iic_mcu_read( u8 slave, u8 adrs, u8 len, u8 * dest ) ======================================================== */ err iic_mcu_write_a_byte( u8 SLA, u8 adrs, u8 dat ) { - -#if 1 // ラッパー static u8 temp; // 書きっぱなしで終了を見ずに関数を抜ける(可能性が高い)のでstatic +#if 0 + // これをしないと、立て続けに書いたときに前のデータを破壊してしまう while( iic_mcu_busy ) { @@ -303,7 +303,6 @@ err iic_mcu_write_a_byte( u8 SLA, u8 adrs, u8 dat ) ******************************************************************************/ err iic_mcu_write( u8 slave, u8 adrs, u8 len, void * src ) { - if( iic_mcu_is_ready() != ERR_SUCCESS ) { return( ERR_ERR ); @@ -342,7 +341,7 @@ err iic_mcu_write( u8 slave, u8 adrs, u8 len, void * src ) DEN1 = 1; DSA1 = ( u8 ) ( &SIO10 ); - DRA1 = ( u16 ) iic_send_work; + DRA1 = &iic_send_work[0]; DBC1 = len; DMC1 = DRS | 8; // RAM -> SFR, 8bit, IRQ, IIC10 @@ -365,6 +364,7 @@ err iic_mcu_write( u8 slave, u8 adrs, u8 len, void * src ) p_iic_send_wo_dma_dat = src; // 残りは割り込みルーチン内で } + return ( ERR_SUCCESS ); } diff --git a/trunk/led.c b/trunk/led.c index 4b28e51..ea3ca2e 100644 --- a/trunk/led.c +++ b/trunk/led.c @@ -38,6 +38,7 @@ uni_info_LED info_LED = { 32, // 1フレームの長さ 32, // グラデーション時間 0, // 最終フレームをn回繰り返す + 0, // 予備 { {255, 0,0}, {0,0,0}, @@ -180,8 +181,7 @@ void LED_init( ) TOE0 = 0b0000000011101110; // TOxをタイマーモジュールが制御? TS0 = 0b0000000011101111; // 動作開始 -// TDR00 = LED_BRIGHT_MAX - 1; // 10bit, 周期 - TDR00 = LED_BRIGHT_MAX*5 - 1; // 10bit, 周期 + TDR00 = LED_BRIGHT_MAX - 1; // 10bit, 周期 if( system_status.reboot ) { @@ -248,6 +248,7 @@ void tsk_led_pow( ) // 強制 case ( LED_POW_ILM_OFF ): + led_fade_to( LED_duty_pow_blu, 0 ); LED_pow_red = 0; break; @@ -284,7 +285,7 @@ static void led_pow_normal( ) static u8 red_blink_poi; u8 temp; - + if( vreg_ctr[VREG_C_BT_REMAIN] <= BATT_TH_EMPTY ) { // 赤点滅 @@ -438,38 +439,15 @@ void tsk_led_wifi( ) } // 送信パルスのラッチ - if( vreg_ctr[VREG_C_LED_WIFI] == WIFI_LED_TXAUTO ) - { - if( WIFI_txLatch ) + if( WIFI_txLatch ) // 割り込みフラグそのものを使ってしまう { WIFI_txLatch = 0; flag_wifi_TX = 2; } - } - else - { - flag_wifi_TX = 0; - } - - switch ( vreg_ctr[VREG_C_LED_WIFI] ) - { - case ( WIFI_LED_OFF ): - default: - LED_duty_WiFi = 0; - state_wifi_tx = 0; - remain_wifi_tx = 0; - break; - - case ( WIFI_LED_ON ): - LED_duty_WiFi = vreg_ctr[VREG_C_LED_BRIGHT]; - state_wifi_tx = 0; - remain_wifi_tx = 0; - break; - - case ( WIFI_LED_TXAUTO ): - if( flag_wifi_TX != 0 ) // 短いパルスを捕まえるために、割り込みフラグを見る + if( flag_wifi_TX != 0 ) { + vreg_ctr[ VREG_C_STATUS_1 ] |= REG_BIT_WIFI_TX; // 送信パターン switch ( state_wifi_tx ) { @@ -493,12 +471,17 @@ void tsk_led_wifi( ) else { // 送信フラグ待ち - LED_duty_WiFi = vreg_ctr[VREG_C_LED_BRIGHT]; - task_interval = 200; - return; + vreg_ctr[ VREG_C_STATUS_1 ] &= ~REG_BIT_WIFI_TX; + if( vreg_ctr[VREG_C_LED_WIFI] == WIFI_LED_OFF ) + { + LED_duty_WiFi = 0; } - break; - + else + { + LED_duty_WiFi = vreg_ctr[VREG_C_LED_BRIGHT]; + } + task_interval = 100; + return; } } diff --git a/trunk/led.h b/trunk/led.h index d470db9..311eec7 100644 --- a/trunk/led.h +++ b/trunk/led.h @@ -36,7 +36,7 @@ #define NOTIFY_LED_TERM 32 -#define LED_BRIGHT_MAX 0x00FF +#define LED_BRIGHT_MAX 0x0100 // ==================================== #ifdef _MCU_BSR_ // 電波送信パルス @@ -110,6 +110,7 @@ typedef struct{ u8 term; // 1フレーム何チック? u8 fade_time; // 何チックで次のフレームの色に達するか u8 last_loop; // 最終フレームを + u8 resv1; st_info_LED_ptn ptn[ NOTIFY_LED_TERM ]; }st_info_LED; diff --git a/trunk/loader.c b/trunk/loader.c index 522bfec..90e4366 100644 --- a/trunk/loader.c +++ b/trunk/loader.c @@ -245,7 +245,7 @@ void hdwinit2( ) PM4 = 0b11111011; #endif - PM5 = 0b11110011; + PM5 = 0b11110010; PM6 = 0b11111100; // I2CのラインがL出力になってしまうが、システムがOFFなのでかまわない #ifdef _PMIC_CTR_ PM7 = 0b01011111; diff --git a/trunk/pm.c b/trunk/pm.c index f766125..4529e33 100644 --- a/trunk/pm.c +++ b/trunk/pm.c @@ -255,6 +255,7 @@ err PM_sys_pow_on( ) // PM_reset_ast( ); 不要 PM_LDSW_onまかせ RESET2_ast; FCRAM_RST_ast; + GYRO_CS_DISABLE(); PM_LDSW_on( ); @@ -634,8 +635,6 @@ void tsk_batt( ) } #if 0 - // todo - // 充電 /////////////////////////// // 温度付きヒステリシス if(( 86 < vreg_ctr[VREG_C_BT_TEMP] ) @@ -656,19 +655,19 @@ void tsk_batt( ) if(( temp_zone_charge_enable == 1 ) && ( battery_manufacturer <= BT_VENDER_6 )) { -#ifndef _MODEL_WM0_ +# ifndef _MODEL_WM0_ // CHG_ENABLEピンは /WL_RST に配線されているので BT_CHG_ENABLE(); // 温度範囲OKで充電再開 } else { BT_CHG_DISABLE(); // 温度危険! 充電停止 -#endif +# endif } #else - // 充電 /////////////////////////// + // 温度無視して充電 # ifndef _MODEL_WM0_ // CHG_ENABLEピンは /WL_RST に配線されているので BT_CHG_ENABLE(); // 温度範囲OKで充電再開 diff --git a/trunk/task_debug.c b/trunk/task_debug.c index 90153ee..df4ff5d 100644 --- a/trunk/task_debug.c +++ b/trunk/task_debug.c @@ -35,12 +35,16 @@ void tsk_debug( ) return; } -u8 temp_debug_3; + + +// 7セグ 4バイト版 +# define IIC_SLA_DBG_MONITOR 0x24 void tsk_debug2( ) { u8 str[4]; + if( ( system_status.pwr_state == ON ) || ( system_status.pwr_state == SLEEP ) ) { /* @@ -64,7 +68,7 @@ void tsk_debug2( ) // 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 ] ); -// iic_mcu_write( IIC_SLA_DBG_MONITOR, 0, 4, &str[0] ); + iic_mcu_write( IIC_SLA_DBG_MONITOR, 0, 4, &str[0] ); } return; } diff --git a/trunk/task_misc.c b/trunk/task_misc.c index 3367a54..9bfd678 100644 --- a/trunk/task_misc.c +++ b/trunk/task_misc.c @@ -131,7 +131,7 @@ void tsk_misc_stat( ) // 割り込みの取りこぼし? if( ( vreg_ctr[VREG_C_ACC_CONFIG] & 0x03 ) != 0x00 ) { - if( ACC_VALID ) + if( ACC_VALID == 1 ) { if( renge_task_immed_add( tsk_cbk_accero ) == ERR_SUCCESS ){ NOP(); diff --git a/trunk/task_sys.c b/trunk/task_sys.c index 78c282a..74650d2 100644 --- a/trunk/task_sys.c +++ b/trunk/task_sys.c @@ -244,7 +244,6 @@ void tsk_sys( ) IIC_ctr_Stop( ); IIC_twl_Stop( ); RTC_32k_off(); - GYRO_CS_DISABLE(); vreg_ctr[VREG_C_IRQ0] = 0; vreg_ctr[VREG_C_IRQ1] = 0; diff --git a/trunk/user_define.h b/trunk/user_define.h index ee8d68b..471a2f6 100644 --- a/trunk/user_define.h +++ b/trunk/user_define.h @@ -20,6 +20,7 @@ #endif + #ifdef _debug_led_ # define DBG_LED_WIFI_2_on { PM2.4 = 0; P2.4 = 1; } # define DBG_LED_WIFI_2_off { PM2.4 = 1; P2.4 = 0; } @@ -189,15 +190,15 @@ #endif #ifdef _MODEL_CTR_ -// P5.0 に加え、P5.5, P140 P141 +// P5.3 に加え、P5.5, P140 P141 // P140が出力専用なので... -#define I2C_PU_on() { PM5.3 = 1; PM3.3 = 1; P14 |= 0x03; P5.3 = 1; PM5.3 = 0; P3.3 = 1; PM3.3 = 0; } +#define I2C_PU_on() { PM5.3 = 1; PM3.3 = 1; P14 |= 0x03; P5.3 = 1; PM5.3 = 0; P3.3 = 1; PM3.3 = 0; } #define I2C_PU_off() { PM5.3 = 1; PM3.3 = 1; P14 &= ~0x03; P5.3 = 0; PM5.3 = 0; P3.3 = 0; PM3.3 = 0; } #endif #ifdef _MODEL_CTR_ -#define GYRO_CS_ENABLE() P5.0 = 1 -#define GYRO_CS_DISABLE() P5.0 = 0 +#define GYRO_CS_ENABLE() P5.0 = 0 +#define GYRO_CS_DISABLE() P5.0 = 1 #else #define GYRO_CS_ENABLE() ; #define GYRO_CS_DISABLE() ; diff --git a/trunk/vreg_ctr.c b/trunk/vreg_ctr.c index 5b4d252..2afe32d 100644 --- a/trunk/vreg_ctr.c +++ b/trunk/vreg_ctr.c @@ -40,7 +40,7 @@ void vreg_ctr_init( ) { vreg_ctr[VREG_C_LED_BRIGHT] = 0xFF; -#ifdef _MODEL_TEG2_ +#ifdef _PMIC_TWL_ vreg_ctr[VREG_C_MCU_VER_MAJOR] = MCU_VER_MAJOR; #else vreg_ctr[VREG_C_MCU_VER_MAJOR] = MCU_VER_MAJOR | 0x10; diff --git a/trunk/vreg_ctr.h b/trunk/vreg_ctr.h index 501bd3d..86f1a7b 100644 --- a/trunk/vreg_ctr.h +++ b/trunk/vreg_ctr.h @@ -4,10 +4,6 @@ #include "config.h" -#define REG_BIT__SYS_MODE0 0b01000000 -#define REG_BIT_MCU_FIRMBROKEN 0b10000000 - - // VREG_C_MCU_STATUS #define REG_BIT_STATUS_WDT_RESET ( 1 << 1 ) #define REG_BIT_RTC_BLACKOUT ( 1 << 0 )