diff --git a/trunk/main.c b/trunk/main.c index 21d69b0..e2aa9ed 100644 --- a/trunk/main.c +++ b/trunk/main.c @@ -25,8 +25,6 @@ system_status_ system_status; u8 pool[512]; // アップデート時のワークエリア 兼 歩数計データ - - /* ======================================================== 本当のエントリ関数は loader.c にあります ======================================================== */ @@ -84,6 +82,7 @@ void main_loop( void ) renge_task_interval_run_force = 0; renge_task_interval_run( ); } + WDT_Restart( ); renge_task_immed_run( ); // ここのループが廻る度に実行されます HALT( ); } diff --git a/trunk/vreg_ctr.c b/trunk/vreg_ctr.c index 094619b..af1679d 100644 --- a/trunk/vreg_ctr.c +++ b/trunk/vreg_ctr.c @@ -22,10 +22,6 @@ void vreg_ctr_init( ) { vreg_ctr[VREG_C_LED_BRIGHT] = 0xFF; -#ifdef _debug_ -// vreg_ctr[ VREG_C_LED_TUNE ] = 0x02; -#endif - vreg_ctr[VREG_C_MCU_VER_MAJOR] = MCU_VER_MAJOR; #ifdef _MODEL_WM0_ vreg_ctr[VREG_C_MCU_VER_MAJOR] += 0x20; @@ -84,11 +80,11 @@ void vreg_ctr_write( u8 adrs, u8 data ) case ( VREG_C_IRQ_MASK1 ): case ( VREG_C_IRQ_MASK2 ): case ( VREG_C_IRQ_MASK3 ): + case ( VREG_C_IRQ_MASK4 ): vreg_ctr[adrs] = data; break; case ( VREG_C_COMMAND0 ): - case ( VREG_C_COMMAND1 ): vreg_ctr[adrs] = data; if( data != 0 ) { @@ -96,19 +92,21 @@ void vreg_ctr_write( u8 adrs, u8 data ) } break; - case ( VREG_C_COMMAND2 ): + case ( VREG_C_COMMAND1 ): vreg_ctr[adrs] = data; if( data != 0 ) { - vreg_twl[REG_TWL_INT_ADRS_IRQ] = ( ( vreg_ctr[VREG_C_COMMAND2] & REG_BIT_TWL_CMD_PWSW_DET ) != 0 ) ? REG_BIT_TWL_IRQ_PWSW_DET : 0x00; //pwsw_det - vreg_twl[REG_TWL_INT_ADRS_IRQ] |= ( ( vreg_ctr[VREG_C_COMMAND2] & REG_BIT_TWL_CMD_RESET ) != 0 ) ? REG_BIT_TWL_IRQ_RESET : 0x00; //reset_req + // renge_task_immed_add( do_command1 ); + /// 持ってきました + vreg_twl[REG_TWL_INT_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_INT_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_INT_ADRS_IRQ] |= ( ( vreg_ctr[VREG_C_COMMAND2] & REG_BIT_TWL_CMD_OFF ) != 0 ) ? REG_BIT_TWL_IRQ_OFF : 0x00; //off_req + vreg_twl[REG_TWL_INT_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_INT_ADRS_IRQ] |= ( ( vreg_ctr[VREG_C_COMMAND2] & REG_BIT_TWL_CMD_BT_LOW ) != 0 ) ? REG_BIT_TWL_IRQ_BT_LOW : 0x00; //batt_low - vreg_twl[REG_TWL_INT_ADRS_IRQ] |= ( ( vreg_ctr[VREG_C_COMMAND2] & REG_BIT_TWL_CMD_BT_EMPTY ) != 0 ) ? REG_BIT_TWL_IRQ_BT_EMPTY : 0x00; //batt_empty + vreg_twl[REG_TWL_INT_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_INT_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_INT_ADRS_IRQ] |= ( ( vreg_ctr[VREG_C_COMMAND2] & REG_BIT_TWL_CMD_VOL_CHANGE ) != 0 ) ? REG_BIT_TWL_IRQ_VOL_CHANGE : 0x00; //vol_changed + vreg_twl[REG_TWL_INT_ADRS_IRQ] |= ( ( vreg_ctr[VREG_C_COMMAND1] & REG_BIT_TWL_CMD_VOL_CHANGE ) != 0 ) ? REG_BIT_TWL_IRQ_VOL_CHANGE : 0x00; //vol_changed } break; @@ -124,30 +122,36 @@ void vreg_ctr_write( u8 adrs, u8 data ) break; case ( VREG_C_LED_POW ): - vreg_ctr[adrs] = data; - break; - case ( VREG_C_LED_WIFI ): - vreg_ctr[adrs] = data; - break; - case ( VREG_C_LED_CAM ): - vreg_ctr[adrs] = data; - break; - case ( VREG_C_LED_TUNE ): - vreg_ctr[adrs] = data; + vreg_ctr[adrs] = data & 0x0F; break; + /// 非同期で動いているためここでは書かない。 + // 予約するだけでstopで書く case ( VREG_C_RTC_SEC ): case ( VREG_C_RTC_MIN ): + set_rtc( adrs - VREG_C_RTC_SEC, data & 0x7F ); + break; + case ( VREG_C_RTC_HOUR ): + set_rtc( adrs - VREG_C_RTC_SEC, data & 0x3F ); + break; + case ( VREG_C_RTC_YOBI ): + set_rtc( adrs - VREG_C_RTC_SEC, data & 0x07 ); + break; + case ( VREG_C_RTC_DAY ): + set_rtc( adrs - VREG_C_RTC_SEC, data & 0x3F ); + break; + case ( VREG_C_RTC_MONTH ): + set_rtc( adrs - VREG_C_RTC_SEC, data & 0x1F ); + break; + case ( VREG_C_RTC_YEAR ): - // ここでは書かない。セットするだけでstopで書く - /// 非同期で動いているため。 set_rtc( adrs - VREG_C_RTC_SEC, data ); break; @@ -234,16 +238,7 @@ u8 vreg_ctr_read( u8 adrs ) { return( vreg_ctr[ VREG_C_MCU_STATUS ] | ( ( vreg_twl[ REG_TWL_INT_ADRS_MODE ] & 0x03 ) << 6 ) ); } -#ifdef _debug_ - if( adrs >= VREG_C_ENDMARK_ ) - { - return( 0xEE ); - } - else -#endif - { - return ( vreg_ctr[adrs] ); - } + return ( vreg_ctr[adrs] ); } @@ -260,6 +255,7 @@ void vreg_ctr_after_read( u8 adrs ) case VREG_C_IRQ1: case VREG_C_IRQ2: case VREG_C_IRQ3: + case VREG_C_IRQ4: vreg_ctr[ adrs ] = 0; irq_readed = 1; break; @@ -267,11 +263,6 @@ void vreg_ctr_after_read( u8 adrs ) default: break; } - else if( adrs == VREG_C_IRQ4 ) - { - vreg_ctr[VREG_C_IRQ4] = 0; - irq_readed = 1; - } } @@ -279,9 +270,6 @@ void vreg_ctr_after_read( u8 adrs ) - - - /****************************************************************************** 割り込みを入れる 割り込みマスクが必要と言うことでこんな事をする羽目になりました