H8AKI-3664N基本構成
AKI-3664N の基本構成を説明します.
目次
H8の使い方を学ぶためには
マイコンを使う場合,良い情報源が無いと,開発は大変である.マイコンを使いはじめのころは,ソフト・ハードウェアー開発よりも,その使用方法を調べるのにほとんどの時間を要す.近くに詳しい人が居れば別だが,そうでない場合,自分で調べることになる.時間の節約,やる気を失わないようにするためにも,良いマニュアルと参考書は必須である.また,インターネット上にも参考になる情報が公開されている.これらを上手に使って,H8で遊んでみよう.
秋月電子通商のAKI-H8/3664N タイニーマイコンキット・消しゴム付を使っている.これには,(株)ルネサンステクノロジ社のHD64N3664FPと動作に必要な部品(RS232Cレベルコンバーター,3端子レギュレーター,発信子など)がひとつのボード上に載っている.従って,HD64N3664FPの使い方をマスターしなくてはならない.そのために,まず最初に入手すべき資料は,「H8/3664 グループ ハードウェアーマニュアル」である.これは,(株)ルネサンステクノロジ社のwebサイトから容易に手に入れることが可能である.
このマニュアルにはマイコンの仕様が全て書かれており,開発の時,もっとも参考になる.これが無いと,H8の詳細な動作が分からず取り合えず動作させてみて調べる—という,行き当たりばったりな開発になることが多い.分からないことがあれば,このマニュアルで調べる—という姿勢を身につけたい.このマニュアルはpdfファイルで400ページ弱と膨大なものである.しかし,電子ファイルなので容易に検索ができ,思ったよりも容易に必要な情報にたどりつける.
メモリー
CPUの構成を理解しないと,マイコンのソフトウェアー開発は難しい.最初に理解すべきことはメモリーの構成である.AKI-H8/3664N に使われているHD64N3664FPのメモリーマップは図1のようになっている.アドレスは64Kバイトあるが,使えるのROMが32KバイトとRAMが2Kバイト,それからI/Oレジスターに割り当てられている.64Kバイトのアドレスがあるにもかかわらず,全てを使っていない.他のH8マイコンでは64Kバイト使えるものがあり,それとの互換性を保つために,わざわざ広いアドレスを使っていると思われる.型番が異なっても,同じようにアドレスが使えると便利である.メモリーが少ないと思えば,他のシリーズを使えばよい.
内蔵ROMはフラッシュメモリーでできており,マニュアルによると1000回以上書き換え可能である.ここには,CPUの状態により動作するプログラムのアドレスを書く割り込みベクタやプログラムを書く.
RAM領域には,プログラム中で値が変わるデータを書き込んだり,スタック領域として使う.
H8シリーズはメモリマップドIO方式を採用しており,メモリー空間の一部にI/Oポートを割り付けている.このようにすると,I/Oポートへのアクセスは,メモリーと同様にアクセスすることができ,便利である.I/Oポート用のアドレスとして,0xff80〜0xffffまで用意されている.
割り込みベクタ
割り込みベクタには,電源をONした時(リセットも含む)や割り込みが発生したときに,プログラムカウンターに書き込まれるアドレスが書かれている.HD64N3664FPの割り込みベクタは,H'0000〜H'0033までの52バイトが割り当てられている.アドレスは2バイトで表現できるため,ここでは26個の割り込みのアドレスを書くことができる.それぞれの内容は,H8/3664シリーズ ハードウェアマニュアルに書かれており,次に表のとおりである.
割り込みベクタ表.ベクタ番号が小さい程,優先度が高い.
発生元 |
例外処理要因 |
ベクタ番号 |
アドレス |
reset ウォッチドッグタイマ |
リセット |
0 |
H'0000〜H'0001 |
― |
システム予約 |
1〜6 |
H'0002〜H'000D |
外部割り込み端子 |
NMI |
7 |
H'000E〜H'000F |
CPU |
トラップ命令 #0 |
8 |
H'0010〜H'0011 |
トラップ命令 #1 |
9 |
H'0012〜H'0013 |
トラップ命令 #2 |
10 |
H'0014〜H'0015 |
トラップ命令 #3 |
11 |
H'0016〜H'0017 |
アドレスブレーク |
ブレーク条件成立 |
12 |
H'0018〜H'0019 |
CPU |
スリープ命令の実行による直接遷移 |
13 |
H'001A〜H'001B |
外部割り込み端子 |
IRQ0 |
14 |
H'001C〜H'001D |
IRQ1 |
15 |
H'001E〜H'001F |
IRQ2 |
16 |
H'0020〜H'0021 |
IRQ3 |
17 |
H'0022〜H'0023 |
WKP |
18 |
H'0024〜H'0025 |
タイマA |
オーバフロー |
19 |
H'0026〜H'0027 |
― |
システム予約 |
20 |
H'0028〜H'0029 |
タイマW |
インプットキャプチャA コンペアマッチA |
21 |
H'002A〜H'002B |
インプットキャプチャB コンペアマッチB |
インプットキャプチャC コンペアマッチC |
インプットキャプチャD コンペアマッチD |
オーバフロー |
タイマV |
コンペアマッチA |
22 |
H'002C〜H'002D |
コンペアマッチB |
オーバフロー |
SCI3 |
受信データフル |
23 |
H'002E〜H'002F |
送信データエンプティ |
送信終了 |
受信エラー |
IIC |
データ転送終了 |
24 |
H'0030〜H'0031 |
アドレス不一致 |
停止条件検出 |
A/D変換器 |
A/D変換終了 |
25 |
H'0032〜H'0033 |
レジスター
H8/3664Nは,32ビット汎用レジスター8本と24ビットのプログラムカウンター,コンディションコードレジスター(フラグレジスター)がある.汎用レジスターのER7の上位24ビットはスタックポインターとして使われているので注意が必要である.
図2 レジスター
コントロールコードレジスタ(CCR)—フラグレジスタ—は,次のように設定される.
コントロールコードレジスタ(CCR)
ビット |
ビット名 |
意味 |
初期値 |
R/W |
動作 |
7 |
I |
割り込みマスクビット |
1 |
R/W |
1がセットされると,割り込み要求がマスクされる.NMIはIビットに関係無く受け付ける.Iビットは例外処理の実行開始で1にセット. |
6 |
UI |
ユーザビット |
不定 |
R/W |
LDC命令で読み書き可能,ユーザーが使用できる.割り込みに使用可能. |
5 |
H |
ハーフキャリフラグ |
不定 |
R/W |
キャリフラグと同じ機能.byteやword命令などに応じて,チェックするビットの位置が変わる. |
4 |
U |
ユーザビット |
不定 |
R/W |
LDC命令で読み書き可能,ユーザーが使用できる. |
3 |
N |
ネガティブフラグ |
不定 |
R/W |
データの最上位ビット(符号ビット)の値 |
2 |
Z |
ゼロフラグ |
不定 |
R/W |
データがゼロのとき1、ゼロ以外のとき0 |
1 |
V |
オーバフローフラグ |
不定 | R/W>
オーバフローが生じたとき1 ,ゼロ以外のとき0 |
0 |
C |
キャリフラグ |
不定 |
R/W |
キャリが生じたとき1,生じないとき0 |
ピン配置
AKI-H8/3664Nのピン配置は,下表のようになっている(説明書より引用).
AKI-H8/3664Nのピン配置
CN1 |
3664ピン番号 |
名称・機能 |
|
CN2 |
3664ピン番号 |
名称・機能 |
1 |
9 |
Vss(GND) |
|
26 |
9 |
Vss(GND) |
2 |
9 |
Vss(GND) |
|
25 |
— |
TXD(RS232Cレベル) |
3 |
55 |
PB4/AN4 |
|
24 |
— |
RXD(RS232Cレベル) |
4 |
56 |
PB5/AN5 |
|
23 |
54 |
P17/IOQ3/TRGV |
5 |
57 |
PB6/AN6 |
|
22 |
53 |
P16/IOQ2 |
6 |
58 |
PB7/AN7 |
|
21 |
52 |
P15/IOQ1 |
7 |
59 |
PB3/AN3 |
|
20 |
51 |
P14/IOQ0 |
8 |
60 |
PB2/AN2 |
|
19 |
46 |
P22/TXD |
9 |
61 |
PB1/AN1 |
|
18 |
45 |
P21/RXD |
10 |
62 |
PB0/AN0 |
|
17 |
44 |
P20/SCK3 |
11 |
6 |
Vc1 |
|
16 |
43 |
P87 |
12 |
7 |
RES(リセット) |
|
15 |
42 |
P86 |
13 |
8 |
TEST |
|
14 |
41 |
P85(JP2) |
14 |
13 |
P50/WKP0 |
|
13 |
40 |
P84/FTIOD |
15 |
14 |
P51/WKP1 |
|
12 |
39 |
P83/FTIOC |
16 |
19 |
P52/WKP2 |
|
11 |
38 |
P82/FTIOB |
17 |
20 |
P53/WKP3 |
|
10 |
37 |
P81/FTIOA |
18 |
21 |
P54/WKP4 |
|
9 |
36 |
P80/FTC1 |
19 |
22 |
P55/WKP5/ADTRG |
|
8 |
35 |
NMI(JP3) |
20 |
23 |
P10/TMOW |
|
7 |
30 |
P76/TMOV |
21 |
24 |
P11 |
|
6 |
29 |
P75/TMCIV |
22 |
25 |
P12 |
|
5 |
28 |
P74/TMRIV |
23 |
12 |
Vcc |
|
4 |
27 |
P57/SCL |
24 |
— |
PS-IN(電源) |
|
3 |
26 |
P56/SDA |
25 |
9 |
Vss(GND) |
|
2 |
9 |
Vss(GND) |
26 |
9 |
Vss(GND) |
|
1 |
9 |
Vss(GND) |
|