ctr_mcu/trunk/main.c
fujita_ryohei 6acd9cc0f6 歩数計の変更
・時計あわせで何もしなくて良い
・歩数計を止めている間のケアも不要
・読み出し時、先頭に最終記録時刻[Hour]を付ける
・ログの一括クリア実装
歩数計ログ、自己アップデートに使っていた u8 pool[512] → u16 pool[256]に
 歩数計でこちらの方が都合がよい
 自己書き換えは影響受けず(一応チェック済)

電源投入時に、ロードスイッチの前に /resetをアサートしていたのをやめた。
 意味がないので

互換性検証100115用にリリース

git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-05-23%20-%20ctr.7z%20+%20svn_v1.068.zip/ctr/svn/ctr_mcu@81 013db118-44a6-b54f-8bf7-843cb86687b1
2010-01-13 09:13:30 +00:00

104 lines
2.7 KiB
C

/* ========================================================
MCU CTR BSR
2008,2009 nintendo
開発技術部 藤田
======================================================== */
// ========================================================
#include "incs_loader.h"
#include "WDT.h"
#include "rtc.h"
#include "pm.h"
#include "accero.h"
#include "led.h"
#include "adc.h"
// ========================================================
static void read_dipsw( );
// ========================================================
system_status_ system_status;
bit update;
u16 pool[256]; // アップデート時のワークエリア 兼 歩数計データ
/* ========================================================
本当のエントリ関数は loader.c にあります
======================================================== */
void main_loop( void )
{
// 電池投入時、ファームアップデート後のみ
RTC_init( ); // 内部でリブートか判定しています
renge_init( );
iic_mcu_start( );
PM_init();
system_status.pwr_state = OFF_TRIG;
if( system_status.reboot == 1 )
{
// システムの電源が入りっぱなしだったら、
// マイコンだけが再起動したのだ
// todo
#ifdef _MCU_BSR_
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;
}
}
#ifdef _PARRADIUM_
system_status.pwr_state = OFF;
#endif
vreg_ctr_init( );
vreg_twl_init( );
read_dipsw( ); // 特定スイッチで何かするか?
hosu_init();
renge_task_interval_run_force = 1;
EI( );
RTCIMK = 0; /* 割り込み(アラーム&インターバル)許可 */
// メインループ //
while( 1 )
{ // システムtick、または割り込みで廻ります。
WDT_Restart( );
renge_task_interval_run( ); // 内部で、システムtickまたは強制起動します
while( renge_task_interval_run_force != 0 )
{
renge_task_interval_run( );
renge_task_immed_run( );
}
WDT_Restart( );
renge_task_immed_run( ); // ここのループが廻る度に実行されます
HALT( );
}
}
/* ========================================================
======================================================== */
static void read_dipsw( )
{
// ソフトディップスイッチ読み込み
// PU4 |= 0x03; // dip sw 0,1
system_status.dipsw0 = ( DIPSW_0 == 0 ) ? 0 : 1;
system_status.dipsw1 = ( DIPSW_1 == 0 ) ? 0 : 1;
// PU4 &= ~0x03;
}