ctr_mcu/trunk/hal.c
n2232 9d9146d7ad 2.25(sdk6)、snake 対応諸々をマージ
git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-05-23%20-%20ctr.7z%20+%20svn_v1.068.zip/ctr/svn/ctr_mcu@539 013db118-44a6-b54f-8bf7-843cb86687b1
2013-05-24 02:22:20 +00:00

188 lines
4.0 KiB
C

/* ========================================================
簡易テストのためのHALレイヤ
$Id: asdf$
======================================================== */
#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;
//bit SW_SEL_n; // とりあえず、レジスタ操作未対応
/*
#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()
{
#ifdef _ENABLE_HAL_
u8 temp_conf = vreg_ctr[ VREG_C_HAL_OVW_CONT0 ];
u8 temp_dat = vreg_ctr[ VREG_C_HAL_OVW_DAT0 ];
#else
u8 temp_conf = 0x00;
u8 temp_dat = 0; // 何でも良い
#endif
// アダプタ有無
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;
}
// sel キー
/// とりあえず、レジスタからの操作しない(ビット足りない、要レジスタ追加なので)
// 無線電波発射
if( temp_conf & REG_BIT_HAL0_WL_TX )
{
WIFI_txLatch = 1;
}
}
void hal_reset()
{
vreg_ctr[ VREG_C_HAL_OVW_CONT0 ] = 0;
vreg_ctr[ VREG_C_HAL_OVW_CONT1 ] = 0;
vreg_ctr[ VREG_C_HAL_OVW_TEMPERATURE ] = 0xFF;
vreg_ctr[ VREG_C_HAL_OVW_BT_FUEL ] = 0xFF;
vreg_ctr[ VREG_C_HAL_OVW_BT_VOLTAGE ] = 0xFF;
}