mes2 on AKI-H8/3069LAN KIT(20MHz) で Web I/O 【マイコンI/O編】

【入門編】
→【マイコンI/O編】
【実践編】
2007/08/02
 H8/3069F LANボードを利用して、Web I/Oを作成するにあたり、 マイコンのポート操作が出来るようにしておきます。

1. H8/3069Fについて

 ルネサス テクノロジのマイコンです。 もとは日立ね。H8/300Hシリーズに属しますが、最近では H8/3069R に変わっており、 H8/3069Fの情報は見つけることができません。でもWebで探せばあると思うし、CD-ROMにハードウェアマニュアルは同梱されています。

H8/3069Fの特徴
bit 内部32bit
フラッシュROM 512KB
RAM 16KB
動作モード 1〜5,7
最大動作周波数 25MHz
汎用レジスタ 16bit×16本
アドレス空間 16MB
I/Oポート 入出力70本, 入力9本
パッケージ 100pin QFP,TQFP
フラッシュ書き換え 最低100回


 フラッシュ書き込みが 5Vの単一電源でいいってのが楽ですね。H8/3048FでDC12Vが別途 必要だったことを思うとありがたいです。
 フラッシュへの書き込み回数の制限が気になる方は、mesを搭載すれば、プログラム(elf)をRAMへ転送 してプログラム実行出来ますので安心です。もちろん、電源OFFしたら消えますけど(^^;

2. ポート概要

AKI H8/3069F LANボードで使用可能なポートは?

H8/3069Fのポート一覧(モード5)
Port bit I/O LANボードでの用途
P10I/OアドレスバスA0
1I/OアドレスバスA1
2I/OアドレスバスA2
3I/OアドレスバスA3
4I/OアドレスバスA4
5I/OアドレスバスA5
6I/OアドレスバスA6
7I/OアドレスバスA7
P20I/OアドレスバスA8
1I/OアドレスバスA9
2I/OアドレスバスA10
3I使用可能[CN2-32]
4I使用可能[CN2-33]
5I使用可能[CN2-34]
6I使用可能[CN2-35]
7I使用可能[CN2-36]
P30I/OデータバスD8
1I/OデータバスD9
2I/OデータバスD10
3I/OデータバスD11
4I/OデータバスD12
5I/OデータバスD13
6I/OデータバスD14
7I/OデータバスD15
P40I/O使用可能[CN2-5]
1I/O使用可能[CN2-6]
2I/O使用可能[CN2-7]
3I/O使用可能[CN2-8]
4I/O使用可能[CN2-9]
5I/O使用可能[CN2-10]
6I/O使用可能[CN2-11]
7I/O使用可能[CN2-12]
P50I使用可能[CN2-37]
1I使用可能[CN2-38]
2I使用可能[CN2-39]
3I使用可能[CN2-40]
4-(not exist)
5-(not exist)
6-(not exist)
7-(not exist)
P60I/OEEPROM SDA(IC4)
1I/OEEPROM SCL(IC4)
2I/OEEPROM A1(IC4)
3I/O!AS
4I/O!WE
5I/O!HWR
6I/O!LWR
7I/O使用可能[CN1-4]
P70I使用可能[CN1-12]
1I使用可能[CN1-13]
2I使用可能[CN1-14]
3I使用可能[CN1-15]
4I使用可能[CN1-16]
5I使用可能[CN1-17]
6I/O使用可能[CN1-18]
7I/O使用可能[CN1-19]
P80I/O使用可能[CN1-20]
1I使用可能[CN1-21]
2I/ODRAMのRAS
3I/ORTL80109ASのSA6
4I使用可能[CN1-24]
5-(not exist)
6-(not exist)
7-(not exist)
P90I/OTxD0
1I/OTxD1
2I/ORxD0
3I/ORxD1
4I/O使用可能[CN2-3]
5IRTL8019ASの100pin
6-(not exist)
7-(not exist)
PA0I/O使用可能[CN1-25]
1I/O使用可能[CN1-26]
2I/O使用可能[CN1-27]
3I/O使用可能[CN1-28]
4I/O使用可能[CN1-29]
5I/O使用可能[CN1-30]
6I/O使用可能[CN1-31]
7I/O使用可能[CN1-32]
PB0I/O使用可能[CN1-33]
1I/O使用可能[CN1-34]
2I/O使用可能[CN1-35]
3I/O使用可能[CN1-36]
4I/ODRAMのカラムアドレスストローブ信号
5I/O使用可能[CN1-38]
6I/O使用可能[CN1-39]
7I/O使用可能[CN1-40]

こう見ると、8本セットで入出力として使える PAポートがよさそうだ。
ということで、以下 PAポートを使って何かと試して見ます。

3. ポートPA0にHiを出力してみる

PAを扱う上で気にしておくべきSFRは以下の通り。
H8/3069FのポートA関連SFR
Address 名 称 略 称 R/W 初期値
EE009h ポートAデータディレクションレジスタ PADDR W 00h
FFFD9h ポートAデータレジスタ PADR R/W 00h

 ポートの方向設定するレジスタは「書き込み専用」ですので、PAを使うときはPADDR 一応書き込んで使います。知らずに読むとデタラメなので落とし穴に落ちないように。

 PA0から Hi出力させるには、PADDRのbit0を 1(出力)にセットし、 PADRのbit0 を 1(Hi)にセットするだけです。
 そうすると、CN1 の 25番ピンの電圧が 5V になっています。

 逆に、PADRのbit0 を 0クリアするとLoを出力します。CN1 の 25番ピンの電圧は 0V。
PA0にHiを出力するサンプルプログラム(手抜いています). SFR関連の ヘッダファイルは reg3067.h ですが、これでいいです。

 CBar等で適当に elfファイル作成して、tftp経由でH8/3069ボードへ転送し、 実行すると確認できます。(手順参考:【入門編】)
 テスタなどがあるといいですね。LEDで確認してもいいですが、PAポートはLo/Hi出力 とも許容電流は最大で2.0mAしかありません。ポートから直接LEDを点灯させるのは避けるべきです。 LED付けたい時はトランジスタやバッファを介しましょう。

4. 時間管理

 mes2のシステムコールに sleep()がある。引数にms単位で数値を渡すと待ってくれるものだ。 ただし、精度は10ms程度らしい。引数は int型で4バイト。結構長時間も計測できるね。

5. 例: PA0ポートに1秒Loの後、5秒のHiを出力してみよう。

 5秒のHi出力後は、またLo出力に戻しておきます。


 オシロスコープで PA0ポートを計測してみました。 なんと、5秒のはずが6秒弱になっています。20MHzと25MHzを間違えてるのかなぁ。。 それっぽいけど、config.sys も 20MHz用のものを使っています。 試しに2秒出力させるプログラムを作成すると、2.4秒程度出力されます。
目的は 玄箱の電源SWの入/切をさせたいだけなので、 時間はアバウトでいい。とりあえず先に進む。ご存知の方がおられました教えていただけると ありがたいです。。
(※ 個人で楽しむホビーなのでこんな感じだ(^^; )


2007/08/02

Copyright(C) 2007 masu, All rights reserved.
massun.masumoto@nifty.ne.jp
http://homepage3.nifty.com/~masumoto/