H8マイコンによるコントローラ(ソフトウエア)

Last update: <2017/03/01 18:17:51 +0900>

     ハプティックコントローラは,ハードウエアを正しく作成し,かつ適切なソフトウエアを組み込むことによって始めて所定の動作をする.ここでは,制作したコントローラ用のマイコン用プログラムを作成する方法について考えてみる.当然ながら,対象となるハードウエア(マイコンボードやAD変換器など)についてよく知っていなければ,正しいプログラムを書けない.また,回路設計ですでに述べたように,マイコンを使って何をしようとするのか,整理しておかないと,プログラムとして実装できない.

     以降,ここで必要な要素として,1.PWM出力,2.AD変換器の駆動,3.シリアル通信の3つについて記述する.

  1. PWM出力

  2.  マイコンボードによって,PWM信号を出力するための方法を考える.PWM制御の原理については,すでに3章の回路設計で触れた.

     H8マイコンでPWM信号を出力するためには,マイコンに内蔵されているタイマを使う.H8には16ビットタイマと8ビットタイマがあるが,当然,16ビットのほうが精度がよい.あえて8ビットを選択する理由もないので,ここでは16ビットタイマを利用する.

     マイコンのハードウエアマニュアルの16ビットタイマの概要を読んでみると,PWMモードという項目がある.GRAとGRBという16ビットのレジスタを使って,出力端子からPWM波形を出力するものである.このモードについて調べてみると,GRAやGRBに任意の数値を代入すれば,任意のデューティー比の波形が出力できる,というもののようである.コンペアマッチというのは,数値の比較(コンペア)をしてマッチ(一致)する条件である.多種のコンペアマッチ条件があるので,詳細をみてみる.


    図5.1:PWMモードの動作例(H8/3069 F-ZTATTM ハードウェアマニュアルpp.403より抜粋)


     図5.1はPWMモードの動作例である.グラフの一番下の波形(TIOCA)がPWM出力波形である.カウンタは0から一定の速度で増えていき,GRBと等しくなるまで出力はON,その後,カウンタがGRAと等しくなるまで出力はOFFとなり,カウンタがGRAになると0にクリアされる,というものである.要するに,GRAに100を設定しておくと,GRBを50にすれば,デューティー比50%のPWM波形,GRBを10にすれば10%のPWM波形が出力される,ということになる.

     PWM出力の要領がわかったので,具体的な設定・操作について調べる.図5.2はPWMモードに必要な設定手順である.細かいレジスタは後回しにして,簡単な概略は次のとおりである.(1)(2)で16ビットのアップカウンタを準備する. (3)ではカウンタがGRAと等しくなれば1を出力し,(4)ではカウンタがGRBと等しくなれば0を出力するように設定する.(5)ではPWMモードに設定し,出力端子がPWM波形を出すように準備する.(6)でアップカウンタを始動させる.各項目について知らなければプログラム化できないので,さらに詳細を見ていく.


    図5.2:PWMモードの設定手順(H8/3069 F-ZTATTM ハードウェアマニュアルpp.402より抜粋)




  3. AD変換器のドライバ

  4.  ここでは外付けのAD変換器を動かすためのプログラムについて記述する.MCP3208を制御する信号線は4つあり,各信号線の詳細は3.1で述べた.これらの信号線はポート4(P4)に接続されていることから,マイコン側ではポート4をアクセスすればよいことになる.もう一度,ピンの接続について整理しておく.



     H8マイコンのI/Oポートは入力・出力兼用となっている.I/Oポートを利用する上で気をつけなければいけないことは,入力と出力をしっかり決めておくことである.マイコンと周辺機器側の入力同士が接続されるのであれば問題ないが,出力同士が接続されるとショートの恐れがある.マイコンの入出力端子は,各端子の入出力をビット単位で指定できるのが一般的である.ここでは,ポート4(P4)の第3〜0ビットのうち,第2ビット(P42)のみが入力であることを注意しておく.

     I/Oポートの入出力を決めるレジスタはデータディレクションレジスタ(DDR)と呼ばれ,この場合P4DDRが関連する.例えばポート4の第2ビットを入力とするなら,出力が1,入力が0の場合,P4DDRの第2ビットを0とすることになる.すなわち****1101(2)と表せ,FB(16)を代入しておけばよい.

     次にマイコンとAD変換器であるMCP3208の具体的なやり取りについて考える.図5.8はシリアル通信のタイムチャートである.この図とマニュアルの記述を総合すると,以下のような手順になるだろう.


    図5.8:MCP3208のシリアル通信タイムチャート(MCP3204/3208データシートより抜粋)




戻る