ctr_mcu/branches/sim/hal.c
n2232 3775d247c2 HAL 電源アダプタ有無 論理間違い
HWレジスタ初期化誤り修正
HAL 初期化忘れ これにアップデートしてきたときに電源が切れるなど
アダプタを刺した瞬間に電源を切ると、充電LED5sec強制点灯の間、電源投入できなかったのを修正(この場合はLEDを消してしまう事に
電源投入したいとき、数回押さなくてはならない件、修正に問題があった
PINモニタ(拡張レジスタ) RBR追加
電源off時、ポート設定ミスを確認するコード追加 #define _DBG_CHK_OFF_LEAK_ で有効
SPFL MAXELLバッテリパラメータ追加
I2C_m のプルアップon/off 修正


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

161 lines
3.3 KiB
C

#ifndef _WIN32
#pragma SFR
#endif
#include "incs_loader.h"
#define WIFI_txLatch PIF21 // 電波送信パルス 本来 led.h で定義
// HALでかぶせるの ////////////////////////////////////////
// こんな事するなら正論理にすr...いや何でもない
bit PM_EXTDC_n;
bit BT_IN_CHG_n;
bit SW_POW_n;
bit SW_HOME_n;
bit SW_WIFI_n;
bit SHELL_OPEN;
/*
#define REG_BIT_HAL0_PM_EXTDC_n ( 1 << 7 )
#define REG_BIT_HAL0_BT_IN_CHG_n ( 1 << 6 )
//#define REG_BIT_HAL0_PM_IRQ_n ( 1 << 5 ) // 使わない
#define REG_BIT_HAL0_WL_TX ( 1 << 4 )
#define REG_BIT_HAL0_SHELL_OPEN ( 1 << 3 )
#define REG_BIT_HAL0_SW_WIFI_n ( 1 << 2 )
#define REG_BIT_HAL0_SW_HOME_n ( 1 << 1 )
#define REG_BIT_HAL0_SW_POW_n ( 1 << 0 )
#define REG_BIT_HAL1_DIPSW_1 ( 1 << 3 )
#define REG_BIT_HAL1_DIPSW_0 ( 1 << 2 )
#define REG_BIT_HAL1_HW_DET_1 ( 1 << 1 )
#define REG_BIT_HAL1_HW_DET_0 ( 1 << 0 )
*/
// 載せ替え
// チャタリング除去ならここでやったり(押し時間カウントは別)
void hal_update()
{
u8 temp_conf = vreg_ctr[ VREG_C_HAL_OVW_CONT0 ];
u8 temp_dat = vreg_ctr[ VREG_C_HAL_OVW_DAT0 ];
// アダプタ有無
if( temp_conf & REG_BIT_HAL0_PM_EXTDC_n )
{
// 三項式はなんだか大きくなりがち
if(( temp_dat & REG_BIT_HAL0_PM_EXTDC_n ) == 0 )
{
PM_EXTDC_n = 0;
}
else
{
PM_EXTDC_n = 1;
}
}
else
{
PM_EXTDC_n = PM_EXTDC_n_RAW;
}
// 充電中?
if( temp_conf & REG_BIT_HAL0_BT_IN_CHG_n )
{
if(( temp_dat & REG_BIT_HAL0_BT_IN_CHG_n ) == 0 )
{
BT_IN_CHG_n = 0;
}
else
{
BT_IN_CHG_n = 1;
}
}
else
{
BT_IN_CHG_n = BT_IN_CHG_n_RAW;
}
// 電源釦
if( temp_conf & REG_BIT_HAL0_SW_POW_n )
{
if(( temp_dat & REG_BIT_HAL0_SW_POW_n ) == 0 )
{
SW_POW_n = 0 ;
}
else
{
SW_POW_n = 1;
}
}
else
{
SW_POW_n = SW_POW_n_RAW;
}
// 実家釦
if( temp_conf & REG_BIT_HAL0_SW_HOME_n )
{
if(( temp_dat & REG_BIT_HAL0_SW_HOME_n ) == 0 )
{
SW_HOME_n = 0;
}
else
{
SW_HOME_n = 1;
}
}
else
{
if( system_status.model == MODEL_TS_BOARD )// 接続先のポートが違うため
{
SW_HOME_n = SW_HOME_n_TSBOARD_RAW;
}
else
{
SW_HOME_n = SW_HOME_n_JIKKI_RAW;
}
}
// 無線開閉
if( temp_conf & REG_BIT_HAL0_SW_WIFI_n )
{
if(( temp_dat & REG_BIT_HAL0_SW_WIFI_n ) == 0 )
{
SW_WIFI_n = 0;
}
else
{
SW_WIFI_n = 1;
}
}
else
{
SW_WIFI_n = SW_WIFI_n_RAW;
}
// 蝶番
if( temp_conf & REG_BIT_HAL0_SHELL_OPEN )
{
if(( temp_dat & REG_BIT_HAL0_SHELL_OPEN ) == 0 )
{
SHELL_OPEN = 0;
}
else
{
SHELL_OPEN = 1;
}
}
else
{
SHELL_OPEN = SHELL_OPEN_RAW;
}
// 無線電波発射
if( temp_conf & REG_BIT_HAL0_WL_TX )
{
WIFI_txLatch = 1;
}
}