/* ======================================================== MCU CTR BSR 2008,2009 nintendo 開発技術部 藤田 ======================================================== */ /* 管理担当がついてない pm_irq slp wl_rx wl_tx dbg */ // ======================================================== #include "incs.h" #include "WDT.h" #include "rtc.h" #include "pm.h" #include "accero.h" // ======================================================== err to_sleep(); static void read_dipsw(); unsigned char temp_teg; extern void power_save(); // ======================================================== bit active; bit sleep; bit rsv_to_sleep; bit rsv_LCD_on; bit rsv_BL_on; system_status_ system_status; u8 off_delay; // 電源 OFF から PWSW 等で電源オンする際、押してる時間をカウントするのに使う /* ======================================================== 本当のエントリ関数は loader.c にあります ======================================================== */ void main_loop( void ){ // 電池投入時の1回のみ vreg_ctr_init(); if(( RESF & REG_BIT_WDT_DET ) != 0 ){ vreg_ctr[ VREG_C_IRQ1 ] |= REG_BIT_WDT_DET; iic_mcu_start(); }else{ PM_reset(); } RTC_init(); // 電池初投入ビットも立てます vreg_twl_init(); read_dipsw(); // 特定スイッチで何かするか? renge_init(); if(( vreg_ctr[ VREG_C_IRQ1 ] & REG_BIT_WDT_DET ) != 0 ){ system_status.pwr_state = ON_TRIG; }else{ system_status.pwr_state = OFF_TRIG; } renge_task_interval_run_force = 1; EI(); // メインループ // while(1){ // システムtick、または割り込みで廻ります。 WDT_Restart(); renge_task_interval_run(); // 内部で、システムtickまたは強制起動します renge_task_immed_run(); // ここのループが廻る度に実行されます power_save(); } } /* ======================================================== ======================================================== */ 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; }