獣医さんの電子工作とパソコン研究室
 
 40−1.秋月 AKI-3664Nマイコン基板を使ってみる (開発環境 Renesas HEW)
 

以下の内容で、使い方など間違っている部分もあるかと思います。
あくまでも参考程度にしていただければと思います。
 

 ■ 秋月AKI-3664Nマイコンを使ってみる

  
 トラ技付録基板のR8C/Tinyマイコンで、なんとかプログラムを作れるようになってきました。ピン数の関係からI/Oポートが少ないと思っており、R8C/Tiny上位のマイコンも検討しましたが、入手が難しそうなので、秋月で売っていたH8/3664マイコンボードを使ってみました。

 開発環境とセットになっているものも売っていましたが、秋月電子でマイコンボード単体のものを購入して、開発環境にルネサスの 統合開発環境 High-performance Embedded Workshop (HEW) と H8SX,H8S,H8ファミリ用C/C++コンパイラパッケージ (無償評価版)、マイコンボードへのフラッシュ書き込みには Renesas フラッシュ開発ツールキット(Flash Development Toolkit - FDT)を使ってみました。

 R8C/Tinyの開発でも使用したので同じようなものかと思い、HEW+H8ファミリ用C/C++コンパイラパッケージ (無償評価版)を使用することにしたのですが、使い勝手は同じようなものの、結構コツがいりました。デバッグなどもR8Cのようなわけにはゆかず、PC上でシュミレーション・デバッガでの動作確認をするしかなく、慣れるまでにひと苦労しました。
HEWのインストール方法などは他のサイトでも数多く紹介されていますが、その細かな使用方法についてはなかなか紹介されていませんでしたので、レポートしたいと思います。

 その他H8シリーズの開発環境として、いろいろなものがネット上で紹介されており、いくつか試してみましたが、開発環境を整えるのに苦労したりと面倒でした。 その点Renesasの統合開発環境HEW+無償評価版C/C++コンパイラパッケージは、HEWをインストールしただけですぐに使えるので、大変便利です。
 
■使ってみたその他のH8マイコン開発環境
GCC Developer Lite ・・・ ベストテクノロジーで提供している開発環境で、コンパイラ、シュミレーション・デバッガ、フラッシュ書込みツールと全て揃っているものです。現在はH8/3664は正式サポートしていませんが、ヘッダファイルなどはダウンロードできます。
実際はGCCによるプログラム開発の資料がネット上にもたくさん出ていますので、こちらの方がHEWで開発するより良いかもしれません、しかしシュミレーション・デバッガはなかなかうまく使うことが出来ませんでした。

■プログラミングの参考にしたサイト
   始める電気回路−3664Fで始めるH8 ・・・ とても親切にH8/3664のことが書かれています。   Renesas H8/3664 グループ サイト ・・・ こちらから開発環境などをダウンロードできます。
   

 ■ AKI-3664N 実験用マザーボード(ブレッドボード使用)

 AKI-3664N基板は13本×2列のピンヘッダが2本使われています。当然ブレッドボードには納まりませんので、基板側にはピンソケットをつけて、基板を裏返して両面テープでブレッドボードに仮固定し、そのピンソケットにリード線を差し込んで使う形をとりました。
 このようにしたことで、マザーボード(ベースボード)を用意する必要もなく、その時の状況によって自由に回路を変更することができ、いくつかの実験をするのには大変便利です。
 AKI-3664N基板にはRS-232CのインターフェースICが載っており、そのまま、開発側PCのシリアルポートに接続できます。 
 とりあえず、最初の実験は2個のLEDと3個のスイッチで、簡単なI/Oポートの動作実験をしてみました。
★電源の間違えでボードを壊すことがありますので、電源部には逆接保護用のダイオードをつけています。これ、意外と重要です。
 

実験に使用した回路図

裏側から見たAKI-3664Nピンコネクション
 
★ 実験に使用したプログラム test_IO.c
★ 実験に使用したプロジェクトファイル test_IO.lzh 
 
 ■ 統合開発環境HEWのインストール
 RenesasのサイトからHEWをダウンロードしようと思って探したのですが、ルネサスのHP上に見つけることが出来ませんでした。
なぜアップデートモジュールばかりなのかと思っていたのですが、H8SX,H8S,H8ファミリ用C/C++コンパイラパッケージ (無償評価版)をダウンロードしてインストールすると、HEWも一緒にインストールされます。
今回ダウンロードしたものは 【無償評価版】H8Cコンパイラパッケージ Ver.6.02 Release 00 で118MBもありました。インストールしてみると、各マニュアルもインストールされていて、Manual Navigator なるものもインストールされていました。この中にH8S,H8/300シリーズ C/C++コンパイラパッケージのマニュアルや HEWのマニュアルがあります。
 Cコンパイラパッケージは評価版となっており、時間がたつと機能が縮小されてしまうらしいですが、充分使えるらしいです。

試用期限が過ぎたものには、下記のようなメッセージがリンクの際に出ました。
  Phase OptLinker starting
  License has expired. Maximum link size limited to 64KB code+data.
これでもコードサイズとしては充分だと思います。

インストールされたHEWのバージョンは HEW Version 4.03.00.001 となっていました。
H8S,H8/300 Standard Toolchain のバージョンは 6.2.0.0 です。

 
 ■ プログラムの作成〜実行ファイル生成 (Renesas HEW 使い方)
■ワークスペースを作成、プログラムの開発準備をする。
 HEWを立ち上げると、<ようこそ>ダイアログが出るので、新規プロジェクトワークスペースの作成を選択。
 ワークスペース名に作成するCプログラムファイルの名前を入力、保存するディレクトリを指定します。
<次へ>のボタンを押して、CPUの選択をします。
CPUシリーズに 300H、CPUタイプに 3664Fを選択します。
<次へ>のボタンで次項目の入力に移りますが、ほとんどそのままで設定することはありません。
7/9ページ目に出てくるデバッガの設定は、シュミレータ・デバッガを使いたいので、H8/300HN Simulator にチェックをつけてください。
■プログラムを書く
起動すると、なにやらいくつかのファイルが自動的に作成されていますが、気にせず。先ほど入力したファイル名.cのファイルをダブルクリックして開きます。
ここに、メイン関数を記述します。

また、ツールバーが何も表示されていないので、マウスを右図のあたりで右クリックし、メニューバー表示選択ダイアログが表示されるので、エディタと標準をチェックして表示させてください。

プログラムが書き終えたら、デバッグ−ビルド(F7)を選べば、転送用の.motファイルがDebugフォルダ内に作られます。

★ 実験に使用したプログラム test_IO.c

★ HEWプロジェクトファイル test_IO.lzh

★ Standard Toolchain 6.2.0.0 lzh

★上のプロジェクトファイルを開こうとすると、Standard Toolchainが見つからないとのメッセージが出る場合があります。HEWのバージョンが低い場合などに出ると思われるのですが、
Toolchainを適当な場所にコピーし ワークスペースを閉じた状態で [ツール]→[アドミニストレーション]を開き、Toolchainsフォルダを開き、[登録]ボタンでToolchainを保存した場所を選ぶことで、使用できるようになります。
    
 ■ MOTファイルをマイコンボードに書き込む (Renesas FDT を使う)
出来上がった転送用MOTファイルをフラッシュ書込みツールでAKI-3664Nボードに書き込みます。
書き込みツールはRenesasで提供されている、フラッシュ開発ツールキット Flash Development Toolkit  (FDT) をダウンロードして使用しました。 簡単に使えるのはBasicSimple Interface Modeで、スタートボタンを押すだけです。
初回起動時に各種設定のウィザードが出ますので、対象CPUを3664Fとし、クロックを16MHzに指定してください。クロック周波数が間違っていると接続できません。
 
使用方法は簡単で、右赤丸のところに転送するMOTファイルを選択してスタートボタンを押すだけです。
 
ボードに書き込む際は、AKI-3664N JP2とJP3をショートしておくのですが、P85ポートは今回の実験では使わないので、ショートしたままにしておき、JP3だけ書込みの時にショートになるよう、外部にスイッチを引き出しています。
JP3を元に戻して、リセットすればマイコンは動作を始めます。
フラッシュROMへの書込み回数ですが、H8/3664の場合100回程度ということになっていますが、他のサイトなどではかなりの回数書き込んでも大丈夫らしいです。私は下の理由で毎回フラッシュROMに転送して動作実験を行なっています。
(実験・学習用にモニタプログラムを書き込んでおいてRAMに実行ファイルを転送して動作させるという方法もあるようですが、3664のRAM領域が小さすぎて、LCDなどのルーチンが入るとRAM領域に入らなくなります)
 
■ PC上でプログラムをシュミレーションしてみる (HEWシュミレーションデバッガを使う)
これが使いたくてRenesasのHEWをいじっていたのです。
なんと言っても、私のような初心者は動作をステップ動作で一つずつ追っかけられるのが、大変勉強になります。しかし、このシュミレーションデバッガは割り込みが使えないとか、実装した基板での動作を完全にシュミレーションで切るものではありません。しかし、工夫をすれば、プログラムのかなりの部分をシュミレーションできます。
シュミレーション・デバッガを使う時は、上図のようにコンフィグレーションをSimDebug_H8-300HNに、
セッションをSimSessionH8-300HNに切り替えます。
プログラムにバグがない状態でしたら、再度ビルドしabsファイル(上図青枠)をダウンロードします(absファイル上で右クリックするとダウンロードメニューが出る)。 ダウンロードといってもH8マイコンボードへのダウンロードではなく、シュミレータへのダウンロードという意味のようです。
 
■ブレークポイントを設定して実行してみる
プログラムを止めたい場所でF9キーを押し、ブレークポイントを設定し、デバッグ−リセット後実行(Shift+F5)をしてみてください。
ブレークポイントで止まったら、F10、F11キーでステップ動作を確認してください。
F10はステップオーバーですので、関数などの中へは入りません。F11はステップイン動作ですので、関数の中まで一行ずつ実行します。
 
■シュミレーション・デバッガ・・・I/Oレジスタを見る
これで、シュミレーションする用意ができましたが、このままではサンプルに用意したキー入力プログラムはうまくシュミレーションで着ません。何故なら、キー入力はプルアップされていますので、ホートがHの状態でなければならないのですが、Lのままだからです。
メモリ表示をして、ポートの状態を見てみましょう。H8はメモリマップドI/Oですので、I/Oレジスタの内容はメモリを見るとわかります。 各ポートがどのアドレスかは、Renesas H8/3664グループ・ハードウェアマニュアル 19.レジスタ一覧を見てください。
メモリ表示ウィンドウは表示−CPU−メモリで表示されます。
表示開始アドレスを入力する画面になりますので、レジスタ開始アドレスFF80、スクロール開始アドレスもFF80とします。

すると、左図のようにメモリ内容が表示されます。
今回のテスト用プログラムではホポートデータレジスタ8を使っていますので、アドレスはFFDBとなります。
2進表示にすると各ビットの状態がわかります。

シュミレーションではスイッチのポートはLのままです。ということはスイッチを押し下げている状態のままということになります。
もっと見やすいI/Oレジスタの表示方法を紹介します。
メニューの表示−CPU−IOでI/OでI/O表示ウィンドウを表示します。デフォルトでは何も表示されていないと思います。これが曲者で、簡単に見られると思っていたのですが、そうはゆきませんでした。
 

I/Oレジスタの画面上で右クリック−IOファイルのロードを選ぶと、既定のファイル ( H8300N.io ) が表示されます。
実はこのファイルには中身がないのです。このファイルにI/Oポートの定義をしてやらないと、I/Oレジスタの内容が表示されません。
そこで、HEWのヘルプを見ながら、IO定義ファイルを作ってみました。
右が、今回の実験に使った定義ファイルの内容です。
こちらのテキストを<test_IO.io>というファイル名にして、自分の実験プログラムのワークスペース内に保存し、こちらのIOファイルをロードしたものが、上図のような表示になります。
★ I/O定義ファイル・サンプル test_IO.io.html
 
実行するたびに値の変化があると、文字が赤色に変化し、先ほどのメモリ内容でのIOポート状態の確認よりわかりやすくなります。
 

■シュミレーション・デバッガ・・・仮想入出力パネルを使う
擬似I/O入出力をすることができます。こちらの画面上に入出力用のスイッチとLEDを作ってみました。それぞれに定義をしなければなりませんが、スイッチによる分岐の様子などをシュミレーションできます。
表示−グラフィック−GUIを選択するとGUI I/Oウィンドウが表示されます。こちらにスイッチやLEDを作ってゆき、定義ファイルを保存してください。
作成方法の詳細はインストールされているManual Navigatorにシュミレータ/デバッガ ユーザーズマニュアルがありますので、3.11 仮想入出力パネルを作成する の項を参照してください。
スイッチ部分の作成ポイントとしては、仮想入出力パネルのスイッチはタクトスイッチのようにはなりませんので、押したら押しっぱなしです。そこで、復帰のためにRESETというボタンを作成し、タクトスイッチを離しているときの状態を作れるようにしています。(ワークスペースの中に AKI3664N_IOtest.pnl という定義ファイルとして保存してありますので、参照ください) 

★ HEWプロジェクトファイル test_IO.lzh

この仮想入出力パネルは大変便利で、先のIOレジスタウィンドウやメモリウィンドウを表示しておくと、スイッチによって各ビットの値が変化するのを確認できます。

上の図は、SW1を押し下げた時の表示の変化です。変化のあった部分が赤色に表示されます。
 
この他にも状態を見るのに、ローカルウィンドウやウォッチウィンドウなど、便利なものがありますので、マニュアルを参照に使用してみてください。
 
  サンプルプログラムについて・・・PORTBの使い方

 H8/3664のPORT B は8bitの汎用入力とA/D入力のいずれかで使えるようになっています。ところが、8bit全てを入力に使うためにはちょっと工夫が必要です。(RENESAS アプリケーションノート参照
全て使わない場合でも ADCSRレジスタで汎用入力ポートに使いポート以外をA/D入力ポートに指定しておかないと、うまく使えません。
上の回路図でPORTB.bit0をキー入力に使っていますが、最初にこの設定をしなかったため、bit0ポートでの正常な動作ができませんでした。(デフォルトではbit0がA/D入力になってしまっている)
 また、HEW上でPDRBレジスタの指定がビット単位でするとエラーが出てしまうため、IO.PDRB.BYTEで、バイト単位でデータを読み込んでいます。
  

  次はLCDディスプレイの接続とタイマAによる簡単な割込みの実験です。

だんだんHEWの使い方に慣れてきました。使えば使うほど便利な機能があることに気がつきます。
若干、設定に戸惑った部分もありますが、たいへん優れた開発環境ではないかと思います。
C言語もまだまだですし、H8/3664もまだまだ理解していません。
実はトラ技付録のH8/3669基板で実験を始めたのですが、途中で書込みができなくなりました。CPUボードが死んでしまったのか、よくわかりませんが、秋月のボードもあったので、こちらで実験しています。 
 
以上、紹介した使い方は私の独学での結果ですので、間違っているところもあるかと思います。
参考程度としてください。
 
40−2ではLCDディスプレイへの表示とタイマAの割り込みを使った時計を作ってみましたので紹介いたします。

 
Last up date 2007/9/12
改訂 2008/6/11

 

This page count Total:41631 / Today:5 / Yesterday:7  

 本業のページ