連載
» 2007年10月24日 00時00分 公開

H8マイコンを使いこなすポイント集H8で学ぶマイコン開発入門(13)(2/2 ページ)

[宮崎 雅史 ソフィアシステムズ,MONOist]
前のページへ 1|2       

第6回「ターゲットボードでLEDを点灯させてみる

 第6回から、H8/3048F-ONEマイコンが搭載された実際のターゲットボードを使用して各種負荷装置を制御するプログラムを順を追って解説しました。

 第6回では「ターゲットボードの仕様の説明」「H8/3048F-ONEで使える機能の紹介」「ターゲットボード上の赤色LEDを点灯させるプログラムの解説」を行いました。H8マイコンのポートなどのMMIO(メモリマップドI/O)(注2)を使うためにC言語ではどのように記述すればよいかを説明しています。


ポイント:

  • ハードウェア(CPUと基板、両方併せて)が何をできるかをまず知る
  • H8マイコンのポートの使い方

※注2:
メモリマップドI/OとはCPUの入出力機器(I/O)がメモリとともにアドレス空間に共存していることをいい、メモリのリード/ライト命令を使うことで入出力機器も使用できるという、つまり本連載でやってきたポート操作やITU(16bitインテグレーテッドタイマユニット)操作を行うための仕組みです。


第7〜12回〜


 第7回以降は、基本的にターゲットボードに接続できる機器を1つずつ、機器の仕様とサンプルプログラムを紹介する形で進めました。

 第7回はLCDに文字を表示させるサンプルを紹介しました。LCDには液晶表示用のコントローラが内蔵されていて、H8マイコンからLCDに液晶表示用のコマンドを送ることで文字を表示したり消したりします(H8マイコンからLCDに送るコマンドはすべてH8マイコンのポートを使用します。ポート制御については第6回で説明しているのでこの回ではほとんど触れていません)。LCDの仕様や制御コマンドなどは、LCDメーカーのWebサイトなどで入手できますので、本連載で使っているLCD以外のものを使うときは別途入手する必要があります。

 第8〜11回は、ターゲットボードに接続できる各種モータの制御について説明しました。この連載を読んでいる方のうち、どの程度の方がモータを扱うかは分かりませんが、第9回からのPWM制御ではH8/3048F-ONEのITUの具体的な使い方について触れていますので、モータ以外にも、タイマを使う必要が出てきたときには参考になるでしょう。

 第12回はターゲットボードに接続することができる機器の最後として、スイッチ入力値の取得とロータリエンコーダ入力値の取得という、入力系についての説明を行いました。この回はまた、第6回で説明した「C言語でH8マイコンのMMIOを使うための文法」を復習するための回でもありました。

ポイント:

  • マイコン以外にも、マイコンに接続されている周辺機器がどのように動くかを知ることが必要



 連載各回の概要は以上のようになりますが、最後に筆者が組み込みソフトウェア開発、特にデバイスドライバなどのハードウェア寄りのソフトウェア開発を始めるうえで、これは大事だと個人的に感じていることを以下に挙げて本連載を終了したいと思います。全13回の連載にお付き合いいただき、ありがとうございました。(連載完)

⇒ 連載バックナンバーはこちら

使用するCPUのハードウェアマニュアルを読む習慣を付ける
マニュアルには「そのCPUは何ができるか」や「CPUのどこにどのような資源があるか(メモリマップ)」といったことが書かれています。日本語のマニュアルがある場合もありますし、英語のマニュアルしかない場合もありますが、読まなければならないときが必ずあります。

組み込み特有のメモリアクセス方法があることを覚えておく
CPUのこの機能を使うためにはメモリマップ上のこのアドレスにアクセスしなければいけない、この信号端子の状態を知るにはこのアドレスのこのビットを監視しなければいけない、ということが必ず出てきます(例えばH8マイコンのポートへのアクセスなど)。「CPUのMMIOレジスタを読み書きするときは、それ用の変数の型に“volatile”を付ける」程度で構いませんので、覚えておくと役に立つときが来るかもしれません。

アセンブリ言語をある程度理解する
開発するソフトウェアによってはまるで必要ないということもありますので、アセンブリ言語をすらすら書けるようになれとはいいません。ですが、例えば「スタートアップルーチンをアセンブリ言語で書かなければいけなくなった」ということや、「アセンブリ言語で書かれたプログラムを読まなければいけなくなった」、ということがあるかもしれませんので、そのときに資料を見ながらでも内容が理解できた方がいいのではないかと思います。また、「どこか特定のアドレスにアクセスする無限ループ」のような簡単なサンプルを作ってとにかくCPUの動きを見たいという場合、アセンブリ言語で作った方が手っ取り早いということもあります。

前のページへ 1|2       

Copyright © ITmedia, Inc. All Rights Reserved.