mirror of
https://github.com/rvtr/ctr_mcu.git
synced 2025-06-19 00:55:37 -04:00

いつの間にか使われ方が変わって長手意を表していない変数などを一部名前変更 一部エラーコードで0を返しなどしてた。ERR_SUCCESSなどを返すように修正 ADCのノイズフィルタを改良 ヒステリシス+四捨五入を追加 Volテーブルを更新。最大音量を-10dbに TWLからの音量設定を無視→反映、スライダの設定と後着優先になるように修正 Volのポーリング書き込み廃止、CODECリセット時のために強制セットコマンド追加(command.4) そのつもりがなかったので修正量が割とあった。 Vol書き込み時、ベリファイ、一度だけリトライするようにした。発生頻度からすれば良かろう。評価中 バッテリー補正パラメータ更新 I2C_mにライトコマンドがきた直後に次の通信が来ると対応出来ずにバスが衝突(ウェイトコンディション理解してくれないから...)してしまっていた。 結果:一瞬BL消えや突然の電源断 一時的にスレーブアドレスを変えてNAKを返し、リトライしてもらうことにした。評価中。 電池残量ゼロ時のパターンをとりあえず高速点滅をプリセットにした。 交換した電池が0や、完全放電などでMCUがリセットされてSoCからパターンをもらってない場合にLEDが青赤とも消灯になりユーザーが心配するため お知らせLEDのフルカラー化の両対応コードが間違えていてめちゃめちゃになっていたのを修正 お知らせLEDフルカラー判定を誤ることがあった。マージンを増やした。 白箱を実機と誤判定していた。(FPGAの準備がまだ)判定方法を変更 本体設定や無線スイッチでWiFiを切ったときはフェードなしに。すぱっと変化した方がかっこいい 電源OFFにするとき、3DとWiFiはすぱっと消す。電源とお知らせはフェード(以前のまま) スリープ期間が極短いとSoC.SLP_OのH期間を取り逃す事があった。 症状:スリープに入ると電源断以外受け付けなくなる I2Cで予告してもらう。 歩数計のログポインタ進めるタイミング、秒レジスタ追加。 割り込み禁止区間の調整 電池残量ICとの通信・通信後のケアなど修正 電池残量0での強制電源断復活 .bin,.hexをリポジトリに追加 git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-05-23%20-%20ctr.7z%20+%20svn_v1.068.zip/ctr/svn/ctr_mcu@198 013db118-44a6-b54f-8bf7-843cb86687b1
118 lines
3.1 KiB
C
118 lines
3.1 KiB
C
#pragma SFR
|
|
#pragma NOP
|
|
#pragma HALT
|
|
#pragma STOP
|
|
|
|
#include "incs.h"
|
|
#include "renge\renge.h"
|
|
#include "pm.h"
|
|
|
|
|
|
/* ========================================================
|
|
======================================================== */
|
|
void tsk_debug( )
|
|
{
|
|
u8 temp;
|
|
static u8 count = 0;
|
|
static u8 task_interval;
|
|
|
|
if( system_status.pwr_state == ON_TRIG ){
|
|
|
|
#ifdef _MODEL_WM0_
|
|
P5.0 = 1; // /WL_RST に配線されています
|
|
#endif
|
|
#ifndef _MODEL_CTR_
|
|
iic_mcu_write_a_byte( IIC_SLA_DCP, 0x08, 0x80 ); // ACR←0x80 揮発モードへ
|
|
#endif
|
|
|
|
#ifdef _DBG_PEDO_AUTO_ENABLE_
|
|
vreg_ctr[ VREG_C_ACC_CONFIG ] = 0x03;
|
|
renge_task_immed_add( acc_hosu_set );
|
|
#endif
|
|
|
|
/*
|
|
temp = iic_mcu_read_a_byte( IIC_SLA_8LEDS, IIC_8LEDS_REG_DO );
|
|
count += 1;
|
|
iic_mcu_write_a_byte( IIC_SLA_8LEDS, IIC_8LEDS_REG_DO, count );
|
|
iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 3, count );
|
|
*/
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// 7セグ 4バイト版
|
|
# define IIC_SLA_DBG_MONITOR 0x44
|
|
|
|
void tsk_debug2( )
|
|
{
|
|
u8 str[4];
|
|
|
|
if( ( system_status.pwr_state == ON ) || ( system_status.pwr_state == SLEEP ) )
|
|
{
|
|
/*
|
|
str[3] = vreg_ctr[ VREG_C_FREE0 ];
|
|
str[2] = vreg_ctr[ VREG_C_FREE1 ];
|
|
str[1] = vreg_ctr[ VREG_C_STATUS ];
|
|
str[0] = vreg_ctr[ VREG_C_RTC_SEC ];
|
|
|
|
str[3] = vreg_ctr[ VREG_C_SND_VOL ];
|
|
str[2] = vreg_ctr[ VREG_C_TUNE ];
|
|
str[1] = vreg_ctr[ VREG_C_ACC_CONFIG ];
|
|
str[0] = SEC;
|
|
*/
|
|
|
|
// iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 2, vreg_ctr[ VREG_C_IRQ1 ] );
|
|
// iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 1, boot_ura );
|
|
// iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 1, vreg_ctr[ VREG_C_SND_VOL ] );
|
|
// iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 1, vreg_ctr[ VREG_TUNE ] );
|
|
// iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 0, vreg_ctr[ VREG_C_ACC_ZH ] );
|
|
// iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 3, vreg_ctr[ VREG_C_TUNE ] );
|
|
// iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 2, vreg_ctr[ VREG_C_SND_VOL ] );
|
|
// 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] );
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
#if 0
|
|
/* ========================================================
|
|
タスクひな形
|
|
======================================================== */
|
|
task_interval tsk_hina( )
|
|
{
|
|
switch ( system_status.pwr_state )
|
|
{
|
|
case OFF:
|
|
case ON_TRIG:
|
|
case ON:
|
|
case SLEEP:
|
|
case OFF_TRIG:
|
|
default:
|
|
}
|
|
|
|
return ( 次の起 ・ョまでのシ ・X ・e ・ tick ・・); // 毎 tic 呼ばれることになります
|
|
}
|
|
|
|
|
|
// ポインタで何かもらうのは危険な気がしてきた
|
|
/* このように使う
|
|
renge_task_immed_add( タスク関数へのポインタ );
|
|
*/
|
|
task_status_immed tsk_imm_hina( u8 * arg )
|
|
{
|
|
return ( ERR_FINISED );
|
|
// ERR_FINISED タスクを削除
|
|
// ERR_CONTINUE 次になんか割り込みなり、ユーザー操作なり、システムチックが
|
|
// 来たときに再度実行
|
|
}
|
|
|
|
|
|
#endif
|