mirror of
https://github.com/rvtr/ctr_mcu.git
synced 2025-06-19 00:55:37 -04:00

(バグ修正)電池が無くて、アダプタ有りの時、電源を入れようとしていた(すぐに電圧低くて切れる)。修正。 (バグ修正)wdtリセット後、電源が切れてしまっていた。hdwinit2の設定ミス。 (バグ修正?)ヒューズ切れ時、充電LEDが点きっぱなしになってしまったのを回避 (バグ修正)アダプタをさして、電池を付けてから起動すると、ステータスが充電中にならなかったのを修正 (リファクタリング?)DI_wt_chk()をDI()に。上手にマクロが書けなかった。そのうち? もういらない #if 0 を少し削除、残す物にはコメント追加 rtc.c、インターバルのフラグを+1ではなく、=1にした。wait_ms(100)などしたときに50回タスクが回ってしまう。インターバルを当てにしてウェイトにしていることがあるので、多少コマ落ちしても間隔を守る git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-05-23%20-%20ctr.7z%20+%20svn_v1.068.zip/ctr/svn/ctr_mcu@399 013db118-44a6-b54f-8bf7-843cb86687b1
108 lines
2.3 KiB
C
108 lines
2.3 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"
|
|
|
|
#include "pool.h"
|
|
|
|
|
|
// ========================================================
|
|
system_status_ system_status;
|
|
uni_pool pool;
|
|
bit force_off;
|
|
|
|
#ifdef i2c_timeout_test
|
|
bit i2c_mcu_time_out_error; // I2Cが何らかで詰まった。結露など含む。
|
|
extern void i2c_mcu_error_monitor();
|
|
#endif
|
|
|
|
|
|
/* ========================================================
|
|
本当のエントリ関数は loader.c にあります
|
|
======================================================== */
|
|
void main_loop( void )
|
|
{
|
|
#ifdef i2c_timeout_test
|
|
i2c_mcu_time_out_error = false;
|
|
#endif
|
|
|
|
// HALデバッグリセット
|
|
hal_reset();
|
|
hal_update();
|
|
|
|
// 電池投入時、ファームアップデート後のみ
|
|
RTC_init( ); // 内部でリブートか判定しています
|
|
|
|
renge_init( );
|
|
|
|
iic_mcu_start( );
|
|
EI( );
|
|
|
|
BT_chk();
|
|
|
|
system_status.pwr_state = OFF_TRIG;
|
|
if( system_status.reboot )
|
|
{
|
|
// リブート時、本体電源onなら、onを継続させる
|
|
if( PM_chk_LDSW() )
|
|
{
|
|
system_status.pwr_state = ON_TRIG;
|
|
}
|
|
vreg_ctr[VREG_C_BT_REMAIN] = 100;
|
|
}
|
|
|
|
vreg_ctr_init( );
|
|
|
|
clear_hosu_hist(); // 履歴クリア
|
|
|
|
renge_task_interval_run_force = true;
|
|
|
|
RTCIMK = 0; /* 割り込み(アラーム&インターバル)許可 */
|
|
|
|
|
|
// メインループ //
|
|
while( 1 )
|
|
{ // システムtick、または割り込みで廻ります。
|
|
renge_task_interval_run( ); // 内部で、システムtickまたは強制起動します
|
|
renge_task_immed_run();
|
|
#ifdef i2c_timeout_test
|
|
if( i2c_mcu_time_out_error )
|
|
{
|
|
i2c_mcu_error_monitor();
|
|
}
|
|
#endif
|
|
HALT( );
|
|
}
|
|
}
|
|
|
|
|
|
extern unsigned char get_ei();
|
|
|
|
void DI_wt_chk()
|
|
#ifdef _DI_WITH_CHECK_
|
|
{
|
|
if( !get_ei() )
|
|
{
|
|
dbg_nop();
|
|
}
|
|
DI();
|
|
}
|
|
#else
|
|
{
|
|
DI();
|
|
}
|
|
#endif // _DI_WITH_CHECK_
|
|
|