ミニマイコン評価カード CT-298、3 軸加速度センサーモジュール MM-2860
書込み済み
マイコンプログラム通信コマンド概要
アプリケーションノート
1.概要
ミニマイコン評価カード CT-298 および DIP パッケージマイコン SF9S08C には、製品出荷時に 3 軸加速度センサー
モジュール MM-2860 のデモプログラム(HC9S08QG8-XYZ2_v1.1)が書込まれており、購入後すぐに評価するこ
とができます。
デモプログラムの評価は、PC の評価アプリケーションと通信することで実現します。
本アプリケーションノートではデモプログラムと PC 間でやりとりされる主なコマンドと通信フォーマット、PC よ
りコマンドを送り結果を表示するサンプルアプリケーションについて説明します。
デモプログラム(HC9S08QG8-XYZ2_v1.1:アセンブラプログラムの CodeWorrior プロジェクト)は、フリースケール・
セミコンダクタ社のサイトより入手できます。
http://www.freescale.co.jp/products/8bit/9s08qg.html
フリースケール・セミコンダクタ社の評価アプリケーション(RD3112MMA7260Q_26JUL05.exe)がサイトより入手
できます。入手方法、内容については「サンハヤト アプリケーションノート ミニマイコン評価カード CT-298、3 軸加
速度センサーモジュール MM-2860 デモプログラムの評価方法(MM2860_SG043226.pdf) 」を参照してください。
2. デモプログラムの通信フォーマットとコマンド
デモプログラムは、以下のシリアル通信フォーマットで通信します。
表1 デモプログラムの通信フォーマット
ボーレート 38,400 スタートビット 1 ビット データ長 8 ビット ストップビット 1 ビット パリティ なしリセット解除時に CT-298 の LED1 が点灯します。またリセット解除時の押ボタンスイッチ SW2 の状態によって、
以下のような動作になります。
表2 SW2とデモプログラムの動作
リセット解除時の SW2 の状態 デモプログラムの動作押されている FLASH の内容を読み取って前に実行されたアプリケーション(「Shock Detection」、「Anti-Theft」、「Battery Saver」のいずれか)を実行する 押されていない PC からキャラクタ 'R' を受信すると 'N' を送る 'N' キャラクタの送信後に 1 回、50ms 間ブザーを鳴らし LED2 を点滅する 後は受信待ちとなり、送られてくるコマンド(キャラクタ)の内容に従って動作する
デモプログラムが PC からのコマンド待ちとなった場合、PC から送られるコマンド(キャラクタ)に従って処理を
行います。コマンドの内容によっては PC へデータを送信します。
以下に主なコマンドの内容を示します。
表3 PCからの主なコマンドとデモプログラムの処理内容
コマンド デモプログラムの内容 V X、Y、Z 軸の AD 値を送る※
※
V - 'x' AD 値X 軸 'y' AD 値Y 軸 'z' AD 値Z 軸 - 6 K - 'X' Xoff Xmax 'Y' Yoff Ymax 'Z' Zoff Zmax 9 k Xoff Xmax Yoff Ymax Zoff Zmax - 6
フリースケール・セミコンダクタ社の評価アプリケーション(RD3112MMA7260Q_26JUL05.exe)では Xoff、Yoff、
Zoff はオフセット値(0g の時の値)、Xmax、Ymax、Zmax は最大値(1g の時の値)として扱っています
3. サンプルアプリケーション
PC に接続した CT-298 + MM-2860 と通信し、PC より V、K、k の各コマンドを実行するサンプルアプリケーショ
ンを紹介します。このアプリケーションは以下の開発ツール、環境で開発、動作確認をおこなっています。
表5 サンプルアプリケーション開発環境
OS Windows XP Professional Service Pack2 Windows
アプリケーション開発環境 Microsoft Visual Basic 2005 ExpressEdition Version8.0.50727.762 ※Microsoft .NET Framework Version2.0.50727 ※
マイクロソフト社が無償提供するプログラミングツールです
サンプルアプリケーションの実行画面を以下に示します。
図1 サンプルアプリケーション実行画面
※
アプリケーションノート
MM-2860 デモプログラムの評価方法
サンプルアプリケーションの各機能と対応するソースコードを以下に示します。
Form1(このアプリケーションのウィンドウ)が表示されると、コンボボックスに利用可能な COM ポートが表示
されます(リスト中の①のコード)。また、「reflesh」ボタンが押されても同様の処理がおこなわれます(リスト中
の③のコード)。コンボボックスで使用する COM ポートが選択されると COM ポート番号、通信フォーマットが表
示されます(リスト中の②のコード)。
Public Class Form1
Dim portname As String = "com1" Dim baudRate As Integer = 38400
Dim parity As IO.Ports.Parity = IO.Ports.Parity.None Dim dataBits As Integer = 8
Dim stopBits As IO.Ports.StopBits = IO.Ports.StopBits.One
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load ComboBoxCom.Items.Clear()
GetPortName() End Sub
Private Sub reflesh_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles reflesh.Click ComboBoxCom.Items.Clear()
GetPortName() End Sub
Private Sub GetPortName()
For Each sp As String In My.Computer.Ports.SerialPortNames ComboBoxCom.Items.Add(sp)
Next End Sub
Private Sub ComboBoxCom_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles ComboBoxCom.SelectedIndexChanged portname = ComboBoxCom.Text
port_info.Text = "COM : " & portname & vbNewLine _ & "Boudrate : " & baudRate & vbNewLine _ & "Parity : " & parity & vbNewLine _ & "Bit Length : " & dataBits & vbNewLine _ & "Stopbits : " & stopBits & vbNewLine End Sub
①
③
②
コンボボックスをクリアし、GetPortName() サブルーチンプロシージャを実行します 利用可能な COM ポートを取得し、コンボボックスに表示します コンボボックスで選択された COM ポート番号を変数 portname に代入します 選択した COM ポートと、通信フォーマットを表示します 使用する COM ポートと通信フォーマットリスト1 Form1.vb (1)
①
②
③
コンボボックス
図2 COMポートの選択
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click Dim Command As String = "R"
Dim N As Integer Try
Using com As IO.Ports.SerialPort = _
My.Computer.Ports.OpenSerialPort(portname, baudRate, parity, dataBits, stopBits) com.ReadTimeout = 500 com.Write(Command) N = com.ReadChar If (Convert.ToChar(N) = "N") Then Rcommand.Text = "N を受信しました " Else Rcommand.Text = "N を受信しませんでした " End If End Using Catch ex As Exception
MessageBox.Show(ex.Message, " エラー ", MessageBoxButtons.OK, MessageBoxIcon.Error) End Try End Sub
①
③
②
R’を送信します COM ポートからの読み出しのタイムアウトを 500ms に設定します 例外が起きた場合(COM ポートから通信できなかった場合)はエラーメッセージを出します COM ポート接続を開き、フォーマットを設定します 1 キャラクタ受信して変数 N に格納します 制御しているリソース(この場合は COM ポート接続)を破棄します ‘N’を受信した場合のメッセージリスト2 Form1.vb (2)
図3 Rコマンド実行画面
アプリケーションノート
MM-2860 デモプログラムの評価方法
「V コマンド」ボタンがクリックされると、コンボボックスで選択された COM ポートが接続され、データを受信
します。確実にデータを受信するため、受信データがそれぞれ x、y、z であることを判断してから 1 バイトデータ
を変数に格納しています。
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click Dim Command As String = "V"
Dim buf As Byte() = {&H0} Dim bufx As Byte() = {&H0} Dim bufy As Byte() = {&H0} Dim bufz As Byte() = {&H0} Dim offset As Integer = 0 Dim count As Integer = 1 Try
Using com As IO.Ports.SerialPort = _
My.Computer.Ports.OpenSerialPort(portname, baudRate, parity, dataBits, stopBits)
com.ReadTimeout = 500 com.Write(Command) Do
com.Read(buf, offset, count) Loop While Convert.ToChar(buf(0)) <> "x" com.Read(bufx, offset, count)
Do
com.Read(buf, offset, count) Loop While Convert.ToChar(buf(0)) <> "y" com.Read(bufy, offset, count)
Do
com.Read(buf, offset, count) Loop While Convert.ToChar(buf(0)) <> "z" com.Read(bufz, offset, count)
x.Text = bufx(0) y.Text = bufy(0) z.Text = bufz(0) End Using
Catch ex As Exception
MessageBox.Show(ex.Message, " エラー ", MessageBoxButtons.OK, MessageBoxIcon.Error) End Try End Sub
①
③
②
‘V’を送信します COM ポートからの読み出しのタイムアウトを 500ms に設定します 例外が起きた場合(COM ポートから通信できなかった場合)はエラーメッセージを出します COM ポート接続を開き、フォーマットを設定します ‘x’を受信するまで受信し続けます ‘x’を受信したら次のデータを格納します ‘y’を受信するまで受信し続けます ‘y’を受信したら次のデータを格納します ‘z’を受信するまで受信し続けます ‘z’を受信したら次のデータを格納します 受信した XYZ 軸のデータを表示しますリスト3 Form1.vb (3)
図4 Vコマンド実行画面
Dim Command As String = "k"
Dim sendbyte As Byte() = {&H0, &H0, &H0, &H0, &H0, &H0} Try sendbyte(0) = Convert.ToByte(xoff_box.Text) sendbyte(1) = Convert.ToByte(xmax_box.Text) sendbyte(2) = Convert.ToByte(yoff_box.Text) sendbyte(3) = Convert.ToByte(ymax_box.Text) sendbyte(4) = Convert.ToByte(zoff_box.Text) sendbyte(5) = Convert.ToByte(zmax_box.Text)
Using com As IO.Ports.SerialPort = _
My.Computer.Ports.OpenSerialPort(portname, baudRate, parity, dataBits, stopBits) com.Write(Command)
com.Write(sendbyte, 0, 6) End Using
Catch ex As Exception
MessageBox.Show(ex.Message, " エラー ", MessageBoxButtons.OK, MessageBoxIcon.Error) End Try End Sub
①
③
②
‘k’を送信します COM ポート接続を開き、フォーマットを設定します テキストボックスの値を格納した変数の内容をすべて送信します テキストボックスの値を変数に格納します 例外が起きた場合(テキストボックスに正しくない形式の数値が入力された、 COM ポートから通信できない等の場合)はエラーメッセージを出しますリスト4 Form1.vb (4)
図5 kコマンド実行画面
アプリケーションノート
MM-2860 デモプログラムの評価方法
「K コマンド」は「V コマンド」とほぼ同じ内容です。格納するデータが 2 バイトになります。
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim Command As String = "K"
Dim buf As Byte() = {&H0} Dim bufxo As Byte() = {&H0} Dim bufyo As Byte() = {&H0} Dim bufzo As Byte() = {&H0} Dim bufxm As Byte() = {&H0} Dim bufym As Byte() = {&H0} Dim bufzm As Byte() = {&H0} Dim offset As Integer = 0 Dim count As Integer = 1 Try
Using com As IO.Ports.SerialPort = _
My.Computer.Ports.OpenSerialPort(portname, baudRate, parity, dataBits, stopBits) com.ReadTimeout = 500
com.Write(Command) Do
com.Read(buf, offset, count)
Loop While Convert.ToChar(buf(0)) <> "X" com.Read(bufxo, offset, count)
com.Read(bufxm, offset, count) Do
com.Read(buf, offset, count)
Loop While Convert.ToChar(buf(0)) <> "Y" com.Read(bufyo, offset, count)
com.Read(bufym, offset, count) Do
com.Read(buf, offset, count)
Loop While Convert.ToChar(buf(0)) <> "Z" com.Read(bufzo, offset, count)
com.Read(bufzm, offset, count) xoff_label.Text = bufxo(0) xmax_label.Text = bufxm(0) yoff_label.Text = bufyo(0) ymax_label.Text = bufym(0) zoff_label.Text = bufzo(0) zmax_label.Text = bufzm(0) End Using Catch ex As Exception
MessageBox.Show(ex.Message, " エラー ", MessageBoxButtons.OK, MessageBoxIcon.Error) End Try End Sub End Class
①
③
②
‘K’を送信します COM ポートからの読み出しのタイムアウトを 500ms に設定します 例外が起きた場合(COM ポートから通信できなかった場合)はエラーメッセージを出します COM ポート接続を開き、フォーマットを設定します ‘X’を受信するまで受信し続けます ‘X’を受信したら次の 2 バイトのデータを格納します ‘Y’を受信するまで受信し続けます ‘Y’を受信したら次の 2 バイトのデータを格納します ‘Z’を受信するまで受信し続けます ‘Z’を受信したら次の 2 バイトのデータを格納します 受信した XYZ 軸のデータを表示しますリスト5 Form1.vb (5)
本資料について 本資料は、電子工作や電子回路、パーソナルコンピュータ の操作について一般的な知識をお持ちの方を対象にしてい ます。 本資料を元に操作するには、フリースケール・セミコンダ クタ社製 HC08 シリーズマイコンについての知識や開発環 境などが必要です。 Microsoft®、Windows® は米国 Microsoft 社の米国および その他の国における登録商標です。 その他、記載されている製品名は各社の商標または登録商 標です。 本資料のご利用にあたって 本資料に掲載している内容は、お客様が用途に応じた適切な 製品をご購入頂くことを目的としています。その使用によ り当社及び第三者の知的財産権その他の権利に対する保証、 又は実施権の許諾を意味するものではありません。また、 権利の侵害に関して当社は責任を負いません。 本資料に記載した情報を流用する場合は、お客様のシステ ム全体で充分評価し適用可能かご判断願います。当社では 適用可能判断についての責任は負いません。