ソフトウエア

省電力制御( +5VP電源 )

サーボモータとUTOF回路に供給する電源の制御を行います。Peripheral MCU も含めたシステム全体と連携を必要とする制御です。

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

制御のしくみ

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

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

MCU間に渡る制御

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

関数の概要

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

外部関数

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


引 数:

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

分 類:

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

機 能:

+5VP 電源を ON / OFF する。

関係する関数:

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


引 数:

なし

戻り値:

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

分 類:

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

機 能:

省電力の状態を返す。

関係する関数:

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

内部関数

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


データの構造

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

グローバル定義

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

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

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

...

//---- +5VP power saving ----
#define	PIN_PS_5VP			PB0			// +5V power saving control
//------------------------------------------------------------------------------
// Saving Servomotor and UTOF
//------------------------------------------------------------------------------

//.... Power-saving control source .....
#define SP_SV				B00000001	// Servomotor
#define SP_UTOF				B00000010	// UTOF

//.... Output logic .... 
#define PS5VP_LINE_ON		HIGH		// power saving control for +5VP
#define PS5VP_LINE_OFF		LOW

//.... Argument ....
#define PS5VP_ON			1			// 
#define PS5VP_OFF			0
名 称説 明
PIN_PS_5VPdefinePB0+5VP電源の省電力制御用の信号ピン
SP_SVdefineB00000001Servomotor からの要求
SP_UTOFdefineB00000010UTOF からの要求
SP_ALLdefineB11111111すべての対象( 初期化など )
PS5VP_LINE_ONdefineHIGH+5VP電源 ON時の出力
PS5VP_LINE_OFFdefineLOW+5VP電源 OFF時の出力
PS5VP_ONdefine1+5VPの電源 ON
PS5VP_OFFdefine0+5VPの電源 OFF

グローバル変数

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

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

//------------------------------------------------------------------------------
// Saving +5VP
//------------------------------------------------------------------------------

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

コード

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

外部関数


+5VP電源を ON / OFF します。

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

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

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

	//.... consolidate power control requests ....
	if( gSPstatus != true ){
		digitalWrite( PIN_PS_5VP, PS5VP_LINE_ON );		// power on

	} else {
		digitalWrite( PIN_PS_5VP, PS5VP_LINE_OFF );		// power off
	}

}

省電力の状態を返す。

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

参考情報

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

このホームページ内

他のWebサイト

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

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

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

TOP