mirror of
https://github.com/rvtr/ctr_mcu.git
synced 2025-10-31 13:51:10 -04:00
CTTS対応(accero)
最大音量を-4db対応(adc) お知らせLED対応(i2c_ctr) I2C_mで、書き込みデータが化ける? 巻き戻し GYROのCSが機能していなかった(PM5の設定忘れ) todo: 現状、温度無視して充電させてます git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-05-23%20-%20ctr.7z%20+%20svn_v1.068.zip/ctr/svn/ctr_mcu@132 013db118-44a6-b54f-8bf7-843cb86687b1
This commit is contained in:
parent
dfd5adae55
commit
a6e9474ebf
@ -184,7 +184,8 @@ task_status_immed acc_hosu_set( )
|
||||
|
||||
#else
|
||||
# ifdef _MODEL_CTR_
|
||||
if( system_status.model == MODEL_TS_BOARD )
|
||||
/*
|
||||
if( system_status.model == MODEL_TS_BOARD )
|
||||
{
|
||||
// TS Final SoC
|
||||
str_send_buf[2] = 0x02; // 3 IRQ pol :Active HI, Drive:Pushpull,
|
||||
@ -194,6 +195,8 @@ task_status_immed acc_hosu_set( )
|
||||
// 実機&派生種、白箱
|
||||
str_send_buf[2] = 0x10; // 3 IRQ pol :Active HI, Drive:Pushpull,
|
||||
}
|
||||
*/
|
||||
str_send_buf[2] = 0x12; // 面倒なので両方...。
|
||||
# else
|
||||
// TS( type T )
|
||||
str_send_buf[2] = 0x02; // 3 IRQ pol :Active HI, Drive:Pushpull,
|
||||
@ -252,9 +255,10 @@ __interrupt void intp23_ACC_ready( )
|
||||
{
|
||||
if( ( system_status.pwr_state == ON ) || ( system_status.pwr_state == SLEEP ) )
|
||||
{
|
||||
if( ACC_VALID )
|
||||
if( ACC_VALID == 1 )
|
||||
{
|
||||
renge_task_immed_add( tsk_cbk_accero );
|
||||
// todo
|
||||
// renge_task_immed_add( tsk_cbk_accero );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
21
trunk/adc.c
21
trunk/adc.c
@ -10,6 +10,8 @@
|
||||
#include "led.h"
|
||||
|
||||
|
||||
//#define _4db_
|
||||
#define _15db_
|
||||
|
||||
// ===================================================== //
|
||||
bit adc_updated;
|
||||
@ -26,6 +28,9 @@ extern void nop8();
|
||||
|
||||
// ===================================================== //
|
||||
#define INTERVAL_TSK_ADC 3
|
||||
|
||||
|
||||
|
||||
/* ========================================================
|
||||
ADC設定と、開始
|
||||
|
||||
@ -41,6 +46,7 @@ extern void nop8();
|
||||
タスク起動時、レジスタには前回の取り込み値が入っています。
|
||||
======================================================== */
|
||||
|
||||
#ifdef _15db_
|
||||
// max -15db
|
||||
const u8 slider_to_codec[64] =
|
||||
{
|
||||
@ -53,7 +59,22 @@ const u8 slider_to_codec[64] =
|
||||
81, 80, 79, 78, 77, 76, 75, 74,
|
||||
73, 72, 71, 70, 69, 68, 67, 66
|
||||
};
|
||||
#endif
|
||||
|
||||
#ifdef _4db_
|
||||
// max -4db
|
||||
const u8 slider_to_codec[64] =
|
||||
{
|
||||
127, 127, 126, 125, 123, 122, 121, 119,
|
||||
118, 117, 115, 114, 112, 111, 110, 108,
|
||||
107, 106, 104, 103, 101, 100, 99, 97,
|
||||
96, 94, 93, 92, 90, 89, 88, 86,
|
||||
85, 83, 82, 81, 79, 78, 77, 75,
|
||||
74, 72, 71, 70, 68, 67, 66, 64,
|
||||
64, 63, 61, 60, 59, 57, 56, 54,
|
||||
53, 52, 50, 49, 48, 46, 44, 44
|
||||
};
|
||||
#endif
|
||||
|
||||
|
||||
void tsk_adc( )
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
|
||||
|
||||
#define MCU_VER_MAJOR 0x00
|
||||
#define MCU_VER_MINOR 0x12
|
||||
#define MCU_VER_MINOR 0x11
|
||||
|
||||
#define _OVERCLOCK_
|
||||
|
||||
@ -15,13 +15,16 @@
|
||||
|
||||
//#define _MODEL_TEG2_
|
||||
// <20>ªTEG2 CPU <20>{ Type-T
|
||||
|
||||
//#define _MODEL_WM0_
|
||||
//#define _MODEL_WM0_TEG2_CTRC_
|
||||
|
||||
//#define _MODEL_TS0_
|
||||
// <20>ªTEG2 CPU <20>{ Type-C
|
||||
|
||||
#define _MODEL_CTR_
|
||||
// <20>ªTS board, WM1,1 TS-CTRC
|
||||
|
||||
//#define _MODEL_CTR_NOTIFY_FULLCOLOR_
|
||||
// <20>ªTS board, WM1,1 TS-CTRC
|
||||
|
||||
|
||||
@ -197,11 +197,14 @@ __interrupt void int_iic_ctr( )
|
||||
|
||||
// レジスタアドレスのインクリメント
|
||||
/// アクセスポインタを進めない特殊なレジスタ
|
||||
if( ( reg_adrs != VREG_C_ACC_HOSU_HIST )
|
||||
&& ( reg_adrs != VREG_C_INFO )
|
||||
&& ( reg_adrs != VREG_C_FREE_DATA )
|
||||
)
|
||||
switch( reg_adrs )
|
||||
{
|
||||
case( VREG_C_ACC_HOSU_HIST ):
|
||||
case( VREG_C_INFO ):
|
||||
case( VREG_C_FREE_DATA ):
|
||||
case( VREG_C_LED_NOTIFY_DATA ):
|
||||
break;
|
||||
default:
|
||||
reg_adrs += 1;
|
||||
}
|
||||
|
||||
|
||||
@ -251,11 +251,11 @@ err iic_mcu_read( u8 slave, u8 adrs, u8 len, u8 * dest )
|
||||
======================================================== */
|
||||
err iic_mcu_write_a_byte( u8 SLA, u8 adrs, u8 dat )
|
||||
{
|
||||
|
||||
#if 1
|
||||
// ラッパー
|
||||
static u8 temp; // 書きっぱなしで終了を見ずに関数を抜ける(可能性が高い)のでstatic
|
||||
|
||||
#if 0
|
||||
|
||||
// これをしないと、立て続けに書いたときに前のデータを破壊してしまう
|
||||
while( iic_mcu_busy )
|
||||
{
|
||||
@ -303,7 +303,6 @@ err iic_mcu_write_a_byte( u8 SLA, u8 adrs, u8 dat )
|
||||
******************************************************************************/
|
||||
err iic_mcu_write( u8 slave, u8 adrs, u8 len, void * src )
|
||||
{
|
||||
|
||||
if( iic_mcu_is_ready() != ERR_SUCCESS )
|
||||
{
|
||||
return( ERR_ERR );
|
||||
@ -342,7 +341,7 @@ err iic_mcu_write( u8 slave, u8 adrs, u8 len, void * src )
|
||||
|
||||
DEN1 = 1;
|
||||
DSA1 = ( u8 ) ( &SIO10 );
|
||||
DRA1 = ( u16 ) iic_send_work;
|
||||
DRA1 = &iic_send_work[0];
|
||||
DBC1 = len;
|
||||
DMC1 = DRS | 8; // RAM -> SFR, 8bit, IRQ, IIC10
|
||||
|
||||
@ -365,6 +364,7 @@ err iic_mcu_write( u8 slave, u8 adrs, u8 len, void * src )
|
||||
p_iic_send_wo_dma_dat = src;
|
||||
// 残りは割り込みルーチン内で
|
||||
}
|
||||
|
||||
return ( ERR_SUCCESS );
|
||||
}
|
||||
|
||||
|
||||
51
trunk/led.c
51
trunk/led.c
@ -38,6 +38,7 @@ uni_info_LED info_LED = {
|
||||
32, // 1フレームの長さ
|
||||
32, // グラデーション時間
|
||||
0, // 最終フレームをn回繰り返す
|
||||
0, // 予備
|
||||
{
|
||||
{255, 0,0},
|
||||
{0,0,0},
|
||||
@ -180,8 +181,7 @@ void LED_init( )
|
||||
TOE0 = 0b0000000011101110; // TOxをタイマーモジュールが制御?
|
||||
TS0 = 0b0000000011101111; // 動作開始
|
||||
|
||||
// TDR00 = LED_BRIGHT_MAX - 1; // 10bit, 周期
|
||||
TDR00 = LED_BRIGHT_MAX*5 - 1; // 10bit, 周期
|
||||
TDR00 = LED_BRIGHT_MAX - 1; // 10bit, 周期
|
||||
|
||||
if( system_status.reboot )
|
||||
{
|
||||
@ -248,6 +248,7 @@ void tsk_led_pow( )
|
||||
|
||||
// 強制
|
||||
case ( LED_POW_ILM_OFF ):
|
||||
led_fade_to( LED_duty_pow_blu, 0 );
|
||||
LED_pow_red = 0;
|
||||
break;
|
||||
|
||||
@ -284,7 +285,7 @@ static void led_pow_normal( )
|
||||
static u8 red_blink_poi;
|
||||
|
||||
u8 temp;
|
||||
|
||||
|
||||
if( vreg_ctr[VREG_C_BT_REMAIN] <= BATT_TH_EMPTY )
|
||||
{
|
||||
// 赤点滅
|
||||
@ -438,38 +439,15 @@ void tsk_led_wifi( )
|
||||
}
|
||||
|
||||
// 送信パルスのラッチ
|
||||
if( vreg_ctr[VREG_C_LED_WIFI] == WIFI_LED_TXAUTO )
|
||||
{
|
||||
if( WIFI_txLatch )
|
||||
if( WIFI_txLatch ) // 割り込みフラグそのものを使ってしまう
|
||||
{
|
||||
WIFI_txLatch = 0;
|
||||
flag_wifi_TX = 2;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
flag_wifi_TX = 0;
|
||||
}
|
||||
|
||||
|
||||
switch ( vreg_ctr[VREG_C_LED_WIFI] )
|
||||
{
|
||||
case ( WIFI_LED_OFF ):
|
||||
default:
|
||||
LED_duty_WiFi = 0;
|
||||
state_wifi_tx = 0;
|
||||
remain_wifi_tx = 0;
|
||||
break;
|
||||
|
||||
case ( WIFI_LED_ON ):
|
||||
LED_duty_WiFi = vreg_ctr[VREG_C_LED_BRIGHT];
|
||||
state_wifi_tx = 0;
|
||||
remain_wifi_tx = 0;
|
||||
break;
|
||||
|
||||
case ( WIFI_LED_TXAUTO ):
|
||||
if( flag_wifi_TX != 0 ) // 短いパルスを捕まえるために、割り込みフラグを見る
|
||||
if( flag_wifi_TX != 0 )
|
||||
{
|
||||
vreg_ctr[ VREG_C_STATUS_1 ] |= REG_BIT_WIFI_TX;
|
||||
// 送信パターン
|
||||
switch ( state_wifi_tx )
|
||||
{
|
||||
@ -493,12 +471,17 @@ void tsk_led_wifi( )
|
||||
else
|
||||
{
|
||||
// 送信フラグ待ち
|
||||
LED_duty_WiFi = vreg_ctr[VREG_C_LED_BRIGHT];
|
||||
task_interval = 200;
|
||||
return;
|
||||
vreg_ctr[ VREG_C_STATUS_1 ] &= ~REG_BIT_WIFI_TX;
|
||||
if( vreg_ctr[VREG_C_LED_WIFI] == WIFI_LED_OFF )
|
||||
{
|
||||
LED_duty_WiFi = 0;
|
||||
}
|
||||
break;
|
||||
|
||||
else
|
||||
{
|
||||
LED_duty_WiFi = vreg_ctr[VREG_C_LED_BRIGHT];
|
||||
}
|
||||
task_interval = 100;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -36,7 +36,7 @@
|
||||
#define NOTIFY_LED_TERM 32
|
||||
|
||||
|
||||
#define LED_BRIGHT_MAX 0x00FF
|
||||
#define LED_BRIGHT_MAX 0x0100
|
||||
|
||||
// ====================================
|
||||
#ifdef _MCU_BSR_ // 電波送信パルス
|
||||
@ -110,6 +110,7 @@ typedef struct{
|
||||
u8 term; // 1フレーム何チック?
|
||||
u8 fade_time; // 何チックで次のフレームの色に達するか
|
||||
u8 last_loop; // 最終フレームを
|
||||
u8 resv1;
|
||||
st_info_LED_ptn ptn[ NOTIFY_LED_TERM ];
|
||||
}st_info_LED;
|
||||
|
||||
|
||||
@ -245,7 +245,7 @@ void hdwinit2( )
|
||||
PM4 = 0b11111011;
|
||||
#endif
|
||||
|
||||
PM5 = 0b11110011;
|
||||
PM5 = 0b11110010;
|
||||
PM6 = 0b11111100; // I2CのラインがL出力になってしまうが、システムがOFFなのでかまわない
|
||||
#ifdef _PMIC_CTR_
|
||||
PM7 = 0b01011111;
|
||||
|
||||
@ -255,6 +255,7 @@ err PM_sys_pow_on( )
|
||||
// PM_reset_ast( ); 不要 PM_LDSW_onまかせ
|
||||
RESET2_ast;
|
||||
FCRAM_RST_ast;
|
||||
GYRO_CS_DISABLE();
|
||||
|
||||
PM_LDSW_on( );
|
||||
|
||||
@ -634,8 +635,6 @@ void tsk_batt( )
|
||||
}
|
||||
|
||||
#if 0
|
||||
// todo
|
||||
|
||||
// 充電 ///////////////////////////
|
||||
// 温度付きヒステリシス
|
||||
if(( 86 < vreg_ctr[VREG_C_BT_TEMP] )
|
||||
@ -656,19 +655,19 @@ void tsk_batt( )
|
||||
if(( temp_zone_charge_enable == 1 )
|
||||
&& ( battery_manufacturer <= BT_VENDER_6 ))
|
||||
{
|
||||
#ifndef _MODEL_WM0_
|
||||
# ifndef _MODEL_WM0_
|
||||
// CHG_ENABLEピンは /WL_RST に配線されているので
|
||||
BT_CHG_ENABLE(); // 温度範囲OKで充電再開
|
||||
}
|
||||
else
|
||||
{
|
||||
BT_CHG_DISABLE(); // 温度危険! 充電停止
|
||||
#endif
|
||||
# endif
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
// <EFBFBD>[“d ///////////////////////////
|
||||
// 温度無視して充電
|
||||
# ifndef _MODEL_WM0_
|
||||
// CHG_ENABLEピンは /WL_RST に配線されているので
|
||||
BT_CHG_ENABLE(); // 温度範囲OKで充電再開
|
||||
|
||||
@ -35,12 +35,16 @@ void tsk_debug( )
|
||||
return;
|
||||
}
|
||||
|
||||
u8 temp_debug_3;
|
||||
|
||||
|
||||
// 7セグ 4バイト版
|
||||
# define IIC_SLA_DBG_MONITOR 0x24
|
||||
|
||||
void tsk_debug2( )
|
||||
{
|
||||
u8 str[4];
|
||||
|
||||
|
||||
if( ( system_status.pwr_state == ON ) || ( system_status.pwr_state == SLEEP ) )
|
||||
{
|
||||
/*
|
||||
@ -64,7 +68,7 @@ void tsk_debug2( )
|
||||
// iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 1, vreg_ctr[ VREG_C_STATUS ] );
|
||||
// iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 0, vreg_ctr[ VREG_C_ACC_ZH ] );
|
||||
|
||||
// iic_mcu_write( IIC_SLA_DBG_MONITOR, 0, 4, &str[0] );
|
||||
iic_mcu_write( IIC_SLA_DBG_MONITOR, 0, 4, &str[0] );
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
@ -131,7 +131,7 @@ void tsk_misc_stat( )
|
||||
// 割り込みの取りこぼし?
|
||||
if( ( vreg_ctr[VREG_C_ACC_CONFIG] & 0x03 ) != 0x00 )
|
||||
{
|
||||
if( ACC_VALID )
|
||||
if( ACC_VALID == 1 )
|
||||
{
|
||||
if( renge_task_immed_add( tsk_cbk_accero ) == ERR_SUCCESS ){
|
||||
NOP();
|
||||
|
||||
@ -244,7 +244,6 @@ void tsk_sys( )
|
||||
IIC_ctr_Stop( );
|
||||
IIC_twl_Stop( );
|
||||
RTC_32k_off();
|
||||
GYRO_CS_DISABLE();
|
||||
|
||||
vreg_ctr[VREG_C_IRQ0] = 0;
|
||||
vreg_ctr[VREG_C_IRQ1] = 0;
|
||||
|
||||
@ -20,6 +20,7 @@
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef _debug_led_
|
||||
# define DBG_LED_WIFI_2_on { PM2.4 = 0; P2.4 = 1; }
|
||||
# define DBG_LED_WIFI_2_off { PM2.4 = 1; P2.4 = 0; }
|
||||
@ -189,15 +190,15 @@
|
||||
#endif
|
||||
|
||||
#ifdef _MODEL_CTR_
|
||||
// P5.0 に加え、P5.5, P140 P141
|
||||
// P5.3 に加え、P5.5, P140 P141
|
||||
// P140が出力専用なので...
|
||||
#define I2C_PU_on() { PM5.3 = 1; PM3.3 = 1; P14 |= 0x03; P5.3 = 1; PM5.3 = 0; P3.3 = 1; PM3.3 = 0; }
|
||||
#define I2C_PU_on() { PM5.3 = 1; PM3.3 = 1; P14 |= 0x03; P5.3 = 1; PM5.3 = 0; P3.3 = 1; PM3.3 = 0; }
|
||||
#define I2C_PU_off() { PM5.3 = 1; PM3.3 = 1; P14 &= ~0x03; P5.3 = 0; PM5.3 = 0; P3.3 = 0; PM3.3 = 0; }
|
||||
#endif
|
||||
|
||||
#ifdef _MODEL_CTR_
|
||||
#define GYRO_CS_ENABLE() P5.0 = 1
|
||||
#define GYRO_CS_DISABLE() P5.0 = 0
|
||||
#define GYRO_CS_ENABLE() P5.0 = 0
|
||||
#define GYRO_CS_DISABLE() P5.0 = 1
|
||||
#else
|
||||
#define GYRO_CS_ENABLE() ;
|
||||
#define GYRO_CS_DISABLE() ;
|
||||
|
||||
@ -40,7 +40,7 @@ void vreg_ctr_init( )
|
||||
{
|
||||
vreg_ctr[VREG_C_LED_BRIGHT] = 0xFF;
|
||||
|
||||
#ifdef _MODEL_TEG2_
|
||||
#ifdef _PMIC_TWL_
|
||||
vreg_ctr[VREG_C_MCU_VER_MAJOR] = MCU_VER_MAJOR;
|
||||
#else
|
||||
vreg_ctr[VREG_C_MCU_VER_MAJOR] = MCU_VER_MAJOR | 0x10;
|
||||
|
||||
@ -4,10 +4,6 @@
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#define REG_BIT__SYS_MODE0 0b01000000
|
||||
#define REG_BIT_MCU_FIRMBROKEN 0b10000000
|
||||
|
||||
|
||||
// VREG_C_MCU_STATUS
|
||||
#define REG_BIT_STATUS_WDT_RESET ( 1 << 1 )
|
||||
#define REG_BIT_RTC_BLACKOUT ( 1 << 0 )
|
||||
|
||||
Loading…
Reference in New Issue
Block a user