Yamamoto's Laboratory
 
AKI-3664N
 
Linux
  設定
 
Windows
  設定
 
 

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まで用意されている.

図1 メモリーマップ

割り込みベクタ

割り込みベクタには,電源を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)—フラグレジスタ—は,次のように設定される.

R/W>
コントロールコードレジスタ(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 オーバフローフラグ 不定オーバフローが生じたとき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)


no counter