ソフトウエア

省電力制御( DAC出力増幅回路 )

DAC出力を増幅する回路に供給する電源の制御を行います。Body MCU も含めたシステム全体と連携を必要とする制御です。

◀ この記事の前に: 
▶ この記事の次に: 

制御のしくみ

省電力制御の要求元は複数あります。複数の要求元からの要求の調整が必要です。
ひとつの要求元が ONを要求している間に他の要求元が OFFを要求すると先に ONを要求しているにもかかわらずに DAC増幅回路を OFFにしてしまいます。これを避ける必要があります。右図の「各要求元からの集計」機能でその調整を行います。

すべての要求元から電源 OFFを要求されたときに DAC増幅回路の電源は OFFにします。要求元からひとつでも電源 ONを要求されている場合は電源を ONにします。それを実現するために、各要求元の要求状況を保持する変数を用意します。( gSAstatus )別途、要求元ごとにあらかじめビットを割り当てたパターンを定義します。各要求元からの要求は gSAstatusに書き込みます。gSAstatus 全体としてみるとすべてのビットが 0のときに変数が 0となります。それ以外(いずれかのビットが立っている( =1 ))の場合は変数は 0以外になります。
要求元からはビットごとのセット/リセットを、出力としては変数全体が 0か否かを判断することにより調整することができます。

MCU間に渡る制御

Qumcum Lab. は複数の MCUを搭載します。異なる MCUからの指示で制御を行う場合、他の MCUの状態は分かりません。その指示が成功したのか否かを確認することが必要になる場合があります。
その時に 各要求元の要求状況を保持する変数から要求が成功したことを確認できます。変数の状態を渡す関数を作成してこの対応を行います。実際の処理は MCU間で情報交換を行うしくみ( M-Link )を介して行います。

関数の概要

関数は以下のとおりです。

外部関数

他のジュールやファイルの外部からアクセス可能な関数です。


引 数:

・uint8_t nSource: 省電力制御の要求元
・bool bPower:  電源の ON/OFF

分 類:

API( 省電力制御、 アプリケーション、他 )

機 能:

DAC 増幅回路の電源を ON / OFF する。

関係する関数:

上位関数: アプリケーション、他
下位関数: ー
この関数のコードはこちらです。


引 数:

なし

戻り値:

int
0: 電源 OFF 
0 以外: 電源 ON / 値(ビット)により電源 ONを要求した対象を示す。

分 類:

API( 省電力制御、 アプリケーション、他 )

機 能:

省電力の状態を返す。

関係する関数:

上位関数: ー
下位関数: ー
この関数のコードはこちらです。

内部関数

外部から直接アクセスできずモジュール( 特定のスコープ内 )で使用する関数です。
省電力制御( DAC出力増幅回路 )の内部関数はありません。


データの構造

データの構造は以下のとおりです。

グローバル定義

グローバル定義は以下のとおりです。

//------------------------------------------------------------------------------
// IO pin name definition
//------------------------------------------------------------------------------

//-----------------------------------------------
// IO pin list
//-----------------------------------------------

...

//---- AMP ----
#define	PIN_PS_AMP			26			// Amplifier power saving control
//------------------------------------------------------------------------------
// Saving DAC amplifier
//------------------------------------------------------------------------------

//.... Power-saving control source .....
#define SA_MP				B00000001	// Peripheral MCU DAC
#define SA_MB				B00000010	// Body MCU DAC
#define SA_MB2				B00000100	// Body MCU2 DAC

//.... Output logic .... 
#define AMP_POWER_ON		HIGH		// power saving control for DAC amplifier 
#define AMP_POWER_OFF		LOW

//.... Argument ....
#define SOUND_POWER_ON		1			// 
#define SOUND_POWER_OFF		0
名 称説 明
PIN_PS_AMPdefine26DAC 増幅回路の省電力制御用の信号ピン
SA_MPdefineB00000001Peripheral MCU DAC からの要求
SA_MBdefineB00000010Body MCU DAC からの要求
SA_MB2defineB00000100Body MCU2 DAC からの要求
AMP_POWER_ONdefineHIGHDAC 増幅回路の電源 ON時の出力
AMP_POWER_OFFdefineLOWDAC 増幅回路の電源 OFF時の出力
SOUND_POWER_ONdefine1DAC 増幅回路の電源 ON
SOUND_POWER_OFFdefine0DAC 増幅回路の電源 OFF

グローバル変数

グローバル変数は以下のとおりです。

//==============================================================================
// Variable definitions in source code
//==============================================================================

//------------------------------------------------------------------------------
// Saving DAC amplifier
//------------------------------------------------------------------------------

uint8_t		gSAstatus		= 0;		// consolidate power control requests
要 素初期値説 明
gSAstatusuint8_t0各機能から要求される電力制御の集約

コード

コードは以下のとおりです。

外部関数


DAC 増幅回路の電源を ON / OFF します。

/*----------------------------------------------------------------------------*/
/* Request to control power
/* param     : -
/* return    : -
/*----------------------------------------------------------------------------*/
void setSavingPower( uint8_t nSource, bool bPower )
{

	//.... save status ....
	if( bPower == true ){
		gSAstatus = gSAstatus | bPower;			// request power on

	} else {
		gSAstatus = gSAstatus &( ~bPower );		// request power off
	}

	//.... consolidate power control requests ....
	if( gSAstatus != true ){
		digitalWrite( PIN_PS_SA, PS_ON );		// power on

	} else {
		digitalWrite( PIN_PS_SA, PS_OFF );		// power off
	}

}

省電力の状態を返す。

/*----------------------------------------------------------------------------*/
/* Get saving status
/* param     : -
/* return    : status each requests
/*----------------------------------------------------------------------------*/
uint8_t gSPstatus()
{

	return gSPstatus;

}

参考情報

参考になる情報は以下のとおりです。

このホームページ内

他のWebサイト

  • M: I2
カテゴリー
最近の記事 おすすめ記事

記事一覧を表示するには、カスタム投稿「ブログ」にて、4つ以上記事を作成してください。

記事一覧を表示するには、カスタム投稿「ブログ」にて、4つ以上記事を作成してください。

TOP