ctr_mcu/trunk/main.c
N2232 3da96fcad8 0.23
VolをTWLからも書けるように
 スライダとの後着優先になる
Codecの「書いたVolと違う値にセットされる(MAX?)」バグワークアラウンドのため、ポーリングするように再度変更
 TWLからも書けるのと併せ、そのつもりで作っていたかったので修正箇所が多い
スライダのレジスタの値を読み出されるのでスライダのアソビを考えてスケーリングするよう変更
 テーブル引きのテーブルをいじるのでは対応出来ない
ADCのフィルタの誤り。閾値付近でふらふらしてしまっていた。フィルタの意味なし
電池残量0時のデフォルトパターンを設定。
 ほぼすっからかんな電池をセットされたときなどでSoCから何も書かれてない状態の時、消灯で不便なため
電源LED autoでホタルにしない用にした。
 ホタル消そうか…
ファームが壊れ、バックアップからも復帰できないときに赤LEDを ぴぴっ、ぴぴっ と点滅させるように変更
 ファームバックアップ後、新ファーム書き込み中のある期間で電源を落とすとバックアップが消える?
 todo:デバッグコードが残っている
MGICにバッテリーパラメータを書くタイミングを変更(パラメータ転送~に時間が掛かるため)
 1)電池交換を検出したとき
 2)電源を入れようとしたときに万が一電池がすり替わってたとき
電圧で電池残量をキャップする
 分解能20mVではあまりよろしい結果が得られなかったのでMGICより下位バイトも取得するように変更
 比較部をリファクタリング
wait_msを違うモジュールに
 ROM上のbootブロックに置きたかったため
Vol更新コマンド ビットの自動クリアを忘れていた
バッテリ残量パラメータ更新
 ビットシフトが必要になったので対応 残念なコードに
電源LED赤とカメラLEDがひっくり返っていた
VOLテーブルを-10dbに更新


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

94 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"
// ========================================================
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_init( ); // 実機やバッテリの判定、電池残量ICの設定
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;
}