SDK2.x向け V1.30

(流出してしまった)不良無線SWのチャタリング対応
ISデバッガ対応

git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-05-23%20-%20ctr.7z%20+%20svn_v1.068.zip/ctr/svn/ctr_mcu@325 013db118-44a6-b54f-8bf7-843cb86687b1
This commit is contained in:
n2232 2011-03-15 07:58:25 +00:00
parent aa8d8f1215
commit 6c8ee1b510
8 changed files with 76 additions and 48 deletions

View File

@ -17,7 +17,7 @@ const u8 BT_PARAM[][64] = {
0x1C, 0x60, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00 0x1C, 0x60, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00
}, },
{ // ID = 1 120 ohm (ダミーでマクセル) { // ID = 1 120 ohm (ダミーでマクセル)
0xAE, 0xF0, 0xB4, 0x30, 0xB7, 0x40, 0xBA, 0x30, 0xAE, 0xF0, 0xB4, 0x30, 0xB7, 0x40, 0xBA, 0x30,
0xBB, 0x50, 0xBB, 0xB0, 0xBC, 0x50, 0xBD, 0x10, 0xBB, 0x50, 0xBB, 0xB0, 0xBC, 0x50, 0xBD, 0x10,
0xBD, 0x60, 0xBD, 0xB0, 0xBF, 0xE0, 0xC2, 0xB0, 0xBD, 0x60, 0xBD, 0xB0, 0xBF, 0xE0, 0xC2, 0xB0,
0xC4, 0x20, 0xC7, 0xB0, 0xCA, 0xE0, 0xCE, 0x10, 0xC4, 0x20, 0xC7, 0xB0, 0xCA, 0xE0, 0xCE, 0x10,
@ -25,7 +25,7 @@ const u8 BT_PARAM[][64] = {
0x63, 0x90, 0x49, 0x00, 0x6E, 0x00, 0x77, 0x70, 0x63, 0x90, 0x49, 0x00, 0x6E, 0x00, 0x77, 0x70,
0x7B, 0x00, 0x19, 0x00, 0x19, 0x00, 0x17, 0xF0, 0x7B, 0x00, 0x19, 0x00, 0x19, 0x00, 0x17, 0xF0,
0x1C, 0x60, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00 0x1C, 0x60, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00
}, },
{ // ID = 2 360 hom (ダミーでマクセル) { // ID = 2 360 hom (ダミーでマクセル)
0xAE, 0xF0, 0xB4, 0x30, 0xB7, 0x40, 0xBA, 0x30, 0xAE, 0xF0, 0xB4, 0x30, 0xB7, 0x40, 0xBA, 0x30,
0xBB, 0x50, 0xBB, 0xB0, 0xBC, 0x50, 0xBD, 0x10, 0xBB, 0x50, 0xBB, 0xB0, 0xBC, 0x50, 0xBD, 0x10,
@ -65,8 +65,10 @@ const u8 BT_PARAM[][64] = {
0x7B, 0x30, 0x68, 0x60, 0x20, 0x00, 0x17, 0x00, 0x7B, 0x30, 0x68, 0x60, 0x20, 0x00, 0x17, 0x00,
0x17, 0x30, 0x12, 0xF0, 0x0D, 0xE0, 0x07, 0xF0, 0x17, 0x30, 0x12, 0xF0, 0x0D, 0xE0, 0x07, 0xF0,
0x07, 0x00, 0x09, 0x30, 0x01, 0xC0, 0x01, 0xC0 0x07, 0x00, 0x09, 0x30, 0x01, 0xC0, 0x01, 0xC0
}, }
/*,
{ // ID = 6 8.2kohm (ダミーでパナ) { // ID = 6 8.2kohm (ダミーでパナ)
ROM不足のため使
0x8C, 0x30, 0x9C, 0x10, 0xA5, 0xE0, 0xB0, 0x40, 0x8C, 0x30, 0x9C, 0x10, 0xA5, 0xE0, 0xB0, 0x40,
0xB1, 0xC0, 0xB2, 0x00, 0xB2, 0x50, 0xB3, 0x10, 0xB1, 0xC0, 0xB2, 0x00, 0xB2, 0x50, 0xB3, 0x10,
0xB4, 0x90, 0xB6, 0x20, 0xB8, 0x60, 0xBA, 0x50, 0xB4, 0x90, 0xB6, 0x20, 0xB8, 0x60, 0xBA, 0x50,
@ -76,7 +78,8 @@ const u8 BT_PARAM[][64] = {
0x17, 0x30, 0x12, 0xF0, 0x0D, 0xE0, 0x07, 0xF0, 0x17, 0x30, 0x12, 0xF0, 0x0D, 0xE0, 0x07, 0xF0,
0x07, 0x00, 0x09, 0x30, 0x01, 0xC0, 0x01, 0xC0 0x07, 0x00, 0x09, 0x30, 0x01, 0xC0, 0x01, 0xC0
} }
// ID = 7 ”’”  */
// ID = 7 白箱
/// パラメータ無し /// パラメータ無し
}; };

View File

@ -28,7 +28,7 @@ enum model_
MODEL_SHIROBAKO, MODEL_SHIROBAKO,
MODEL_JIKKI_NOBATT, MODEL_JIKKI_NOBATT,
MODEL_CAPTURE_BOX, MODEL_CAPTURE_BOX,
MODEL_RESERVED2, MODEL_ISBAKO, // ただし、system_status.modelは MODEL_JIKKI にしておくので未使用
MODEL_RESERVED3, MODEL_RESERVED3,
}; };
@ -43,6 +43,7 @@ typedef struct _system_status_
unsigned char captureBox:1; // キャプチャ箱 SDKには実機と返す unsigned char captureBox:1; // キャプチャ箱 SDKには実機と返す
unsigned char taikendai:1; unsigned char taikendai:1;
unsigned char taikendai_nbd:1; unsigned char taikendai_nbd:1;
unsigned char is_dev:1;
enum model_ model; enum model_ model;
}system_status_; }system_status_;

View File

@ -17,9 +17,11 @@
// 一時ファーム // 一時ファーム
#define MCU_VER_MAJOR 0x01
#define MCU_VER_MINOR 0x20
#define MCU_VER_MAJOR 0x01
#define MCU_VER_MINOR 0x30
// ↑改訂の時は↓気をつけないと体験台の生産できないからね!
#ifdef _TAIKENDAI_SEISAN_SPECIAL_ #ifdef _TAIKENDAI_SEISAN_SPECIAL_
#define MCU_VER_MINOR 0x80 #define MCU_VER_MINOR 0x80
#endif #endif

Binary file not shown.

View File

@ -103,8 +103,8 @@ void main( )
{ {
// 通常の電源投入 // 通常の電源投入
// 電池接続時、ちょっと待ってみる(チャタリング対策) // 電池接続時、ちょっと待ってみる(チャタリング対策)
u16 pwup_delay0 = 0; u16 pwup_delay0;
for( pwup_delay0 = 0; pwup_delay0 != 0xFFFF; pwup_delay0++ ){}; for( pwup_delay0 = 0xFFFF; pwup_delay0 != 0; pwup_delay0-- ){;};
} }
hdwinit2( ); hdwinit2( );
@ -137,32 +137,38 @@ void main( )
// 試遊台判定 // 試遊台判定
// デバッガつないでると上手に判定できないことがあります。 // デバッガつないでると上手に判定できないことがあります。
if( !DIPSW_0 && !DIPSW_1 )
{
system_status.is_dev = 1;
}
else
{
#ifndef _FORCE_TAIKENDAI_ #ifndef _FORCE_TAIKENDAI_
if( !DIPSW_0 ) if( !DIPSW_0 )
#else #else
if(1) if(1)
#endif #endif
{ {
system_status.taikendai = 1; system_status.taikendai = 1;
} }
else else
{ {
system_status.taikendai = 0; system_status.taikendai = 0;
} }
#ifndef _FORCE_TAIKENDAI_NBD_ #ifndef _FORCE_TAIKENDAI_NBD_
if( !DIPSW_1 ) if( !DIPSW_1 )
#else #else
if(1) if(1)
#endif #endif
{ {
system_status.taikendai_nbd = 1; system_status.taikendai_nbd = 1;
} }
else else
{ {
system_status.taikendai_nbd = 0; system_status.taikendai_nbd = 0;
} }
}
// 通常運転 // 通常運転
main_loop( ); main_loop( );
} }

View File

@ -22,12 +22,14 @@
#define HOLD_THREASHOLD (u8)( 2000 / INTERVAL_TSK_SW ) #define HOLD_THREASHOLD (u8)( 2000 / INTERVAL_TSK_SW )
#define FORCEOFF_THREASHOLD (u8)( 4000 / INTERVAL_TSK_SW ) #define FORCEOFF_THREASHOLD (u8)( 4000 / INTERVAL_TSK_SW )
*/ */
#define TIME_MUKAN (u8)( 300 / INTERVAL_TSK_SW )
//========================================================= //=========================================================
u16 SW_pow_count; u16 SW_pow_count;
bit SW_pow_mask; bit SW_pow_mask;
u8 SW_home_count, SW_wifi_count, SW_home_count_rel; u8 SW_home_count, SW_wifi_count, SW_home_count_rel;
u8 sw_wifi_mukan_time;
bit SW_HOME_n; bit SW_HOME_n;
@ -61,13 +63,14 @@ u16 off_timeout_timer;
} \ } \
if( count == CLICK_THRESHOLD ) \ if( count == CLICK_THRESHOLD ) \
{ \ { \
count += 1; \
set_irq( VREG_C_IRQ0, irq_bit_name ); \ set_irq( VREG_C_IRQ0, irq_bit_name ); \
} \ } \
} \ } \
else \ else \
{ \ { \
count = 0; \ count = 0; \
} }
@ -108,20 +111,20 @@ void tsk_sw( )
else if( SW_pow_count == ( HOLD_THREASHOLD ) ) else if( SW_pow_count == ( HOLD_THREASHOLD ) )
{ {
set_irq( VREG_C_IRQ0, REG_BIT_SW_POW_HOLD ); set_irq( VREG_C_IRQ0, REG_BIT_SW_POW_HOLD );
if( off_timeout_timer == 0 ) if( off_timeout_timer == 0 )
{ {
off_timeout_timer = vreg_ctr[ VREG_C_OFF_DELAY ] * 16; off_timeout_timer = vreg_ctr[ VREG_C_OFF_DELAY ] * 16;
} }
} }
if( off_timeout_timer != 0 ) // 長押し割り込み後、タイムアウトで強制オフ。 if( off_timeout_timer != 0 ) // 長押し割り込み後、タイムアウトで強制オフ。
{ {
off_timeout_timer -= 1; off_timeout_timer -= 1;
if( off_timeout_timer == 1 ) if( off_timeout_timer == 1 )
{ {
system_status.force_off = true; system_status.force_off = true;
} }
} }
count_sw_n( SW_POW_n, SW_pow_count, SW_pow_mask ); // ボタン押し時間のカウント count_sw_n( SW_POW_n, SW_pow_count, SW_pow_mask ); // ボタン押し時間のカウント
@ -139,11 +142,23 @@ void tsk_sw( )
SW_HOME_n = 1; // 放されてる状態 SW_HOME_n = 1; // 放されてる状態
} }
// if( !( system_status.taikendai || system_status.taikendai_nbd )) // if( !( system_status.taikendai || system_status.taikendai_nbd ))
{ {
chk_clicked( SW_HOME_n, SW_home_count, REG_BIT_SW_HOME_CLICK ); chk_clicked( SW_HOME_n, SW_home_count, REG_BIT_SW_HOME_CLICK );
chk_clicked( !SW_HOME_n, SW_home_count_rel, REG_BIT_SW_HOME_RELEASE ); chk_clicked( !SW_HOME_n, SW_home_count_rel, REG_BIT_SW_HOME_RELEASE );
} }
// wifi sw // // wifi sw //
chk_clicked( SW_WIFI_n, SW_wifi_count, REG_BIT_SW_WIFI_CLICK ); /// 最悪な実装なのはわかっているが、メモリ不足と、市場に出てしまった不良スイッチを救うため
if( sw_wifi_mukan_time != 0 )
{
sw_wifi_mukan_time--;
}
else
{
chk_clicked( SW_WIFI_n, SW_wifi_count, REG_BIT_SW_WIFI_CLICK );
if( SW_wifi_count == CLICK_THRESHOLD +1 ) // 押した判定発生!
{
sw_wifi_mukan_time = TIME_MUKAN;
}
}
} }
} }

View File

@ -7,7 +7,7 @@ extern u16 SW_pow_count;
extern bit SW_pow_mask; extern bit SW_pow_mask;
#define INTERVAL_TSK_SW 8 #define INTERVAL_TSK_SW 8
#define CLICK_THRESHOLD 2 #define CLICK_THRESHOLD 5
#define HOLD_THREASHOLD (u16)( 3000 /INTERVAL_TSK_SW ) #define HOLD_THREASHOLD (u16)( 3000 /INTERVAL_TSK_SW )
#define TIME_PWSW_CLICK (u8)( 220 /INTERVAL_TSK_SW ) #define TIME_PWSW_CLICK (u8)( 220 /INTERVAL_TSK_SW )

View File

@ -279,7 +279,8 @@ u8 extinfo_read()
// static でとるほどのものでないので毎回スタックからとってくる // static でとるほどのものでないので毎回スタックからとってくる
// switchとかにするとromが困る... なんだかなぁ。 // switchとかにするとromが困る... なんだかなぁ。
infos[0] = system_status.captureBox? MODEL_CAPTURE_BOX: (u8)system_status.model; infos[0] = system_status.captureBox? MODEL_CAPTURE_BOX
: ( system_status.is_dev? MODEL_ISBAKO: (u8)system_status.model );
infos[1] = pmic_version; infos[1] = pmic_version;
infos[2] = battery_manufacturer; infos[2] = battery_manufacturer;
infos[3] = mgic_version[0]; infos[3] = mgic_version[0];