mirror of
https://github.com/rvtr/ctr_mcu.git
synced 2025-10-31 13:51:10 -04:00
スライダの可動範囲がもともと筐体で制限されているが、0側に寄っているのでVolレジスタに反映させる際に0-63がでるようスケーリングを調整 バッテリパラメータの最終版を反映。 ROMがあふれそうなのでRTCをブートブロックに移動 ホタル廃止、SoCからは流し込めないがお知らせLEDの様にテーブルから補完するように変更。コード流用。仕様変更 充電周りのたくさんのバグを修正 ・電池を抜いてもCEをアサートしっぱなしだったり、 ・過放電の電池に充電できなかったり ・バッテリパラメータを送りすぎたり送り忘れたり 歩数計の境界分・秒の判定を誤っていた。修正・リファクタリング 電池電圧で残量をキャップしたり キャップしたときにLEDが赤青しないようにヒステリシスを入れた 温度で充電停止、チャタリングがひどいので一般的なチャタリング防止を追加 機種判定などがもうめちゃめちゃだったのでリファクタリング 電源OFF時、とりあえずLCD系電源を落とすがウェイトを調整 電池残量ICが電池残量0といってもマイコンからは電源を落とさない。3.1Vまでは動かす。仕様変更 強制電源断の仕様変更。2sec抑えたら問答無用でさらに4sec後にoff→6秒押さえ続けたら0ff git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-05-23%20-%20ctr.7z%20+%20svn_v1.068.zip/ctr/svn/ctr_mcu@202 013db118-44a6-b54f-8bf7-843cb86687b1
95 lines
2.2 KiB
C
95 lines
2.2 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"
|
|
|
|
|
|
// ========================================================
|
|
static void read_dipsw( );
|
|
|
|
|
|
// ========================================================
|
|
system_status_ system_status;
|
|
uni_pool pool;
|
|
|
|
|
|
|
|
/* ========================================================
|
|
本当のエントリ関数は loader.c にあります
|
|
======================================================== */
|
|
void main_loop( void )
|
|
{
|
|
|
|
// 電池投入時、ファームアップデート後のみ
|
|
RTC_init( ); // 内部でリブートか判定しています
|
|
|
|
renge_init( );
|
|
|
|
iic_mcu_start( );
|
|
EI( );
|
|
|
|
BT_chk();
|
|
|
|
system_status.pwr_state = OFF_TRIG;
|
|
if( system_status.reboot )
|
|
{
|
|
// リブート時は電源onに上書き
|
|
#ifdef _PMIC_TWL_
|
|
if( RESET1_n )
|
|
#else
|
|
if( PM_chk_LDSW() != 0 )
|
|
#endif
|
|
{
|
|
system_status.pwr_state = ON_TRIG;
|
|
}
|
|
vreg_ctr[VREG_C_BT_REMAIN] = 100;
|
|
}
|
|
|
|
vreg_ctr_init( );
|
|
|
|
read_dipsw( ); // 特定スイッチで何かするか?
|
|
|
|
clear_hosu_hist(); // 履歴クリア
|
|
|
|
renge_task_interval_run_force = 1;
|
|
|
|
RTCIMK = 0; /* 割り込み(アラーム&インターバル)許可 */
|
|
|
|
|
|
// メインループ //
|
|
while( 1 )
|
|
{ // システムtick、または割り込みで廻ります。
|
|
WDT_Restart( );
|
|
renge_task_interval_run( ); // 内部で、システムtickまたは強制起動します
|
|
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;
|
|
}
|
|
|
|
|