mirror of
https://github.com/rvtr/ctr_mcu.git
synced 2025-10-31 13:51:10 -04:00
修正:CTRCでヘッドホンから音が出ない 追加:白箱からの強制OFF 修正・追加:互換アプリのプレイ時間記録のためのフリーレジスタ お知らせLEDの仕様追加の件もあるので自己書き換え部分も含め RAM関係修正 修正:自己アップデートとWDTリセットの区別が付くようになった 修正:電池挿入直後が、普通に電源OFF時よりも消費電力が大きい ポートの初期値設定忘れ(TWL PMIC向けに書いていたときの名残) 無駄にstaticで確保してあるのを適切に エラーコードが不適切だった物を修正 レジスタの初期値間違い フリーレジスタを増やして歩数計を減らしたのでいろいろ修正 CTRCででポップ解除を忘れていた(イヤホンから音でない) git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-05-23%20-%20ctr.7z%20+%20svn_v1.068.zip/ctr/svn/ctr_mcu@126 013db118-44a6-b54f-8bf7-843cb86687b1
130 lines
3.6 KiB
C
130 lines
3.6 KiB
C
#ifndef __vreg_twl__
|
||
#define __vreg_twl__
|
||
/* ========================================================================= */
|
||
extern u8 vreg_twl[];
|
||
|
||
|
||
|
||
|
||
/*
|
||
* 外から見たときのマイコンレジスタアドレス。
|
||
* 拡張性などを考えて飛び飛びにしてある。
|
||
*/
|
||
/*
|
||
* 割り込み要因フラグは
|
||
* MSB:外部電源供給有り/なし変化 (未実装)
|
||
* 6:Volキー操作(変更に限らず。MAX時に+でも。)
|
||
* 5:電池電圧 少 検出
|
||
* 4: 僅
|
||
* 3:電源スイッチ 押され検出
|
||
* 2:(未設定)
|
||
* 1:電源スイッチ OFF 時間押され検出
|
||
* LSB: リセット
|
||
*/
|
||
enum REG_TWL_ADRS
|
||
{ // 未定義アドレスへ書き込んだ際は無視
|
||
REG_TWL_ADRS_VER_INFO = 0x00,
|
||
REG_TWL_ADRS_PMIC_INFO,
|
||
REG_TWL_ADRS_BATT_INFO,
|
||
REG_TWL_ADRS_IRQ = 0x10,
|
||
REG_TWL_ADRS_COMMAND,
|
||
REG_TWL_ADRS_MODE,
|
||
REG_TWL_ADRS_POWER_INFO = 0x20,
|
||
REG_TWL_ADRS_POWER_SAVE,
|
||
REG_TWL_ADRS_WIFI = 0x30,
|
||
REG_TWL_ADRS_CAM,
|
||
REG_TWL_ADRS_VOL = 0x40,
|
||
REG_TWL_ADRS_BL,
|
||
REG_TWL_ADRS_CODEC_MIC_GAIN = 0x50,
|
||
REG_TWL_ADRS_ADC_CALIB = 0x60,
|
||
REG_TWL_ADRS_ADC_CALIB_STATUS,
|
||
REG_TWL_ADRS_ADC_CALIB_VALUE,
|
||
REG_TWL_ADRS_POWER_LED,
|
||
REG_TWL_ADRS_TEMP0 = 0x70,
|
||
REG_TWL_ADRS_TEMP1,
|
||
REG_TWL_ADRS_TEMP2,
|
||
REG_TWL_ADRS_TEMP3,
|
||
REG_TWL_ADRS_TEMP4,
|
||
REG_TWL_ADRS_TEMP5,
|
||
REG_TWL_ADRS_TEMP6,
|
||
REG_TWL_ADRS_TEMP7,
|
||
REG_TWL_ADRS_TIME_PWSW_DELAY = 0x80,
|
||
REG_TWL_ADRS_TIME_PWSW_THRESHOLD
|
||
};
|
||
|
||
#define REG_TWL_ADRS_NON_EXIST 0xFF
|
||
|
||
/*
|
||
* マイコン内部でのレジスタの実装
|
||
* もちろんつめてある
|
||
*/
|
||
enum REG_TWL_ADRS_INT
|
||
{
|
||
REG_TWL_INT_ADRS_VER_INFO = 0x00,
|
||
// REG_TWL_INT_ADRS_PMIC_INFO,
|
||
// REG_TWL_INT_ADRS_BATT_INFO,
|
||
REG_TWL_INT_ADRS_IRQ, // 0x10,
|
||
REG_TWL_INT_ADRS_COMMAND,
|
||
REG_TWL_INT_ADRS_MODE,
|
||
REG_TWL_INT_ADRS_POWER_INFO, // 0x20,
|
||
// REG_TWL_INT_ADRS_POWER_SAVE,
|
||
// REG_TWL_INT_ADRS_WIFI, // 0x30,
|
||
REG_TWL_INT_ADRS_CAM,
|
||
REG_TWL_INT_ADRS_VOL, // 0x40,
|
||
// REG_TWL_INT_ADRS_BL,
|
||
// REG_TWL_INT_ADRS_CODEC_MIC_GAIN, // 0x50,
|
||
// REG_TWL_INT_ADRS_CODEC_MIC_GAIN_RELOAD,
|
||
// REG_TWL_INT_ADRS_ADC_CALIB, // 0x60,
|
||
// REG_TWL_INT_ADRS_ADC_CALIB_STATUS,
|
||
// REG_TWL_INT_ADRS_ADC_CALIB_VALUE,
|
||
// REG_TWL_INT_ADRS_POWER_LED,
|
||
REG_TWL_INT_ADRS_TEMP0, // 0x70 - 0x77
|
||
REG_TWL_INT_ADRS_TEMP1,
|
||
REG_TWL_INT_ADRS_TEMP2,
|
||
REG_TWL_INT_ADRS_TEMP3,
|
||
REG_TWL_INT_ADRS_TEMP4,
|
||
REG_TWL_INT_ADRS_TEMP5,
|
||
REG_TWL_INT_ADRS_TEMP6,
|
||
REG_TWL_INT_ADRS_TEMP7,
|
||
// REG_TWL_INT_ADRS_TIME_PWSW_DELAY,
|
||
// REG_TWL_INT_ADRS_TIME_PWSW_THRESHOLD
|
||
_REG_TWL_INT_ADRS_ENDMARK,
|
||
};
|
||
|
||
|
||
|
||
/* ========================================================================= */
|
||
#define is_TWL ( vregs[ REG_TWL_INT_ADRS_MODE ] & 0x01 )
|
||
#define with_NAND ( vregs[ REG_TWL_INT_ADRS_MODE ] & 0x02 )
|
||
#define volSteps32 ( vregs[ REG_TWL_INT_ADRS_MODE ] & 0x80 )
|
||
|
||
#define reg_wifi_led ( vregs[ REG_TWL_INT_ADRS_WIFI ] & 0x01 )
|
||
#define reg_wifi_led_blink ( vregs[ REG_TWL_INT_ADRS_WIFI ] & 0x02 )
|
||
|
||
|
||
typedef enum {
|
||
TWL_CAMLED_OFF,
|
||
TWL_CAMLED_ON,
|
||
TWL_CAMLED_BLINK,
|
||
TWL_CAMLED_DEF_ON
|
||
}twl_camLed_mode;
|
||
|
||
|
||
/* ========================================================================= */
|
||
void vreg_twl_init( );
|
||
void vreg_twl_write( u8 adrs, u8 data );
|
||
u8 adrs_table_twl_ext2int( u8 img );
|
||
u8 vreg_twl_read( u8 phy_adrs );
|
||
|
||
extern task_status_immed command_from_twl( );
|
||
|
||
|
||
// 読んだらクリアなどの処理
|
||
#define vreg_twl_after_read( reg_adrs ); \
|
||
if( reg_adrs == REG_TWL_INT_ADRS_IRQ ) \
|
||
{ \
|
||
vreg_twl[ REG_TWL_INT_ADRS_IRQ ]= 0;\
|
||
}
|
||
|
||
#endif
|