| 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したら消えますけど(^^;
| Port | bit | I/O | LANボードでの用途 |
|---|---|---|---|
| P1 | 0 | I/O | アドレスバスA0 |
| 1 | I/O | アドレスバスA1 | |
| 2 | I/O | アドレスバスA2 | |
| 3 | I/O | アドレスバスA3 | |
| 4 | I/O | アドレスバスA4 | |
| 5 | I/O | アドレスバスA5 | |
| 6 | I/O | アドレスバスA6 | |
| 7 | I/O | アドレスバスA7 | |
| P2 | 0 | I/O | アドレスバスA8 |
| 1 | I/O | アドレスバスA9 | |
| 2 | I/O | アドレスバスA10 | |
| 3 | I | 使用可能[CN2-32] | |
| 4 | I | 使用可能[CN2-33] | |
| 5 | I | 使用可能[CN2-34] | |
| 6 | I | 使用可能[CN2-35] | |
| 7 | I | 使用可能[CN2-36] | |
| P3 | 0 | I/O | データバスD8 |
| 1 | I/O | データバスD9 | |
| 2 | I/O | データバスD10 | |
| 3 | I/O | データバスD11 | |
| 4 | I/O | データバスD12 | |
| 5 | I/O | データバスD13 | |
| 6 | I/O | データバスD14 | |
| 7 | I/O | データバスD15 | |
| P4 | 0 | I/O | 使用可能[CN2-5] |
| 1 | I/O | 使用可能[CN2-6] | |
| 2 | I/O | 使用可能[CN2-7] | |
| 3 | I/O | 使用可能[CN2-8] | |
| 4 | I/O | 使用可能[CN2-9] | |
| 5 | I/O | 使用可能[CN2-10] | |
| 6 | I/O | 使用可能[CN2-11] | |
| 7 | I/O | 使用可能[CN2-12] | |
| P5 | 0 | I | 使用可能[CN2-37] |
| 1 | I | 使用可能[CN2-38] | |
| 2 | I | 使用可能[CN2-39] | |
| 3 | I | 使用可能[CN2-40] | |
| 4 | - | (not exist) | |
| 5 | - | (not exist) | |
| 6 | - | (not exist) | |
| 7 | - | (not exist) | |
| P6 | 0 | I/O | EEPROM SDA(IC4) |
| 1 | I/O | EEPROM SCL(IC4) | |
| 2 | I/O | EEPROM A1(IC4) | |
| 3 | I/O | !AS | |
| 4 | I/O | !WE | |
| 5 | I/O | !HWR | |
| 6 | I/O | !LWR | |
| 7 | I/O | 使用可能[CN1-4] | |
| P7 | 0 | I | 使用可能[CN1-12] |
| 1 | I | 使用可能[CN1-13] | |
| 2 | I | 使用可能[CN1-14] | |
| 3 | I | 使用可能[CN1-15] | |
| 4 | I | 使用可能[CN1-16] | |
| 5 | I | 使用可能[CN1-17] | |
| 6 | I/O | 使用可能[CN1-18] | |
| 7 | I/O | 使用可能[CN1-19] | |
| P8 | 0 | I/O | 使用可能[CN1-20] |
| 1 | I | 使用可能[CN1-21] | |
| 2 | I/O | DRAMのRAS | |
| 3 | I/O | RTL80109ASのSA6 | |
| 4 | I | 使用可能[CN1-24] | |
| 5 | - | (not exist) | |
| 6 | - | (not exist) | |
| 7 | - | (not exist) | |
| P9 | 0 | I/O | TxD0 |
| 1 | I/O | TxD1 | |
| 2 | I/O | RxD0 | |
| 3 | I/O | RxD1 | |
| 4 | I/O | 使用可能[CN2-3] | |
| 5 | I | RTL8019ASの100pin | |
| 6 | - | (not exist) | |
| 7 | - | (not exist) | |
| PA | 0 | I/O | 使用可能[CN1-25] |
| 1 | I/O | 使用可能[CN1-26] | |
| 2 | I/O | 使用可能[CN1-27] | |
| 3 | I/O | 使用可能[CN1-28] | |
| 4 | I/O | 使用可能[CN1-29] | |
| 5 | I/O | 使用可能[CN1-30] | |
| 6 | I/O | 使用可能[CN1-31] | |
| 7 | I/O | 使用可能[CN1-32] | |
| PB | 0 | I/O | 使用可能[CN1-33] |
| 1 | I/O | 使用可能[CN1-34] | |
| 2 | I/O | 使用可能[CN1-35] | |
| 3 | I/O | 使用可能[CN1-36] | |
| 4 | I/O | DRAMのカラムアドレスストローブ信号 | |
| 5 | I/O | 使用可能[CN1-38] | |
| 6 | I/O | 使用可能[CN1-39] | |
| 7 | I/O | 使用可能[CN1-40] |
こう見ると、8本セットで入出力として使える PAポートがよさそうだ。
ということで、以下 PAポートを使って何かと試して見ます。
| 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 ですが、これでいいです。
#include <mes2.h>
#include <h8/reg3067.h>
int main(void)
{
PADR = 0x00; /* まずラッチを0に. とりあえず全ポート */
PADDR = 0xff; /* とりあえず全ポート出力設定. この時点で Lo出力 */
PADR = 0x01; /* PA0ポートから Hi出力 */
return 0;
}
|
CBar等で適当に elfファイル作成して、tftp経由でH8/3069ボードへ転送し、
実行すると確認できます。(手順参考:【入門編】)
テスタなどがあるといいですね。LEDで確認してもいいですが、PAポートはLo/Hi出力
とも許容電流は最大で2.0mAしかありません。ポートから直接LEDを点灯させるのは避けるべきです。
LED付けたい時はトランジスタやバッファを介しましょう。
#include <mes2.h>
#include <h8/reg3067.h>
int main(void)
{
PADR = 0x00; /* まずラッチを0に. とりあえず全ポート */
PADDR = 0xff; /* とりあえず全ポート出力設定. この時点で Lo出力 */
sleep(1000); /* 1秒 Lo*/
PADR = 0x01; /* PA0ポートから Hi出力 */
sleep(5000); /* 5秒 Hi */
PADR = 0x00; /* Lo に戻す */
return 0;
}
|
オシロスコープで 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/