HD6301ハードウェア概要

ピン配置 HD6301/HD6303

HD6301はMC6800を元にしたワンチップマイコンです。
次の機能を内蔵しています。

  • MC6800を拡張したMPU
  • 4KバイトマスクROM
  • 128バイトRAM
  • 29本のパラレルI/O
  • 16ビットタイマー
  • SCI(Serial Communication Interface)

HD6301からマスクROMを無効化したのがHD6303です。

マスクROMは書き換え不可能ですので、SBC6303では外部にメモリを持てる「モード2」を使用しています。このモードではパラレルI/Oがアドレスバスとデータバスに割り当てられるため、ポート1の8本のみパラレルI/Oとして使用可能です。

コントロールレジスタ

RAMの先頭32バイトは内蔵ペリフェラルなどの設定やデータの受け渡しのために使われます。

  Register                                      | Address
================================================+=========
  Port 1 Data Direction Register                |   $00
* Port 2 Data Direction Register                |   $01
  Port 1 Data Register                          |   $02
* Port 2 Data Register                          |   $03
------------------------------------------------+---------
* Port 3 Data Direction Register                |   $04
* Port 4 Data Direction Register                |   $05
* Port 3 Data Register                          |   $06
* Port 4 Data Register                          |   $07
------------------------------------------------+---------
  Timer Control and Status Register             |   $08
  Counter (High Byte)                           |   $09
  Counter (Low Byte)                            |   $0a
* Output Compare Register (High Byte)           |   $0b
* Output Compare Register (Low Byte)            |   $0c
* Input Capture Register (High Byte)            |   $0d
* Input Capture Register (Low Byte)             |   $0e
------------------------------------------------+---------
* Port 3 Control and Status Register            |   $0f
------------------------------------------------+---------
  Rate and Mode Control Register                |   $10
  Transmit/Receive Control and Status Register  |   $11
  Receive Data Register                         |   $12
  Transmit Data Register                        |   $13
------------------------------------------------+---------
* RAM Control Register                          |   $14
* Reserved                                      | $15〜1f

* のついたレジスタはSBC6303では使用しません。

パラレルI/O

SBC6303ではPort1の8本のみ使用できます。
Data Direction Register(DDR)の各ビットが各ピンに対応しており、”0″にセットすると入力に、’1’にセットすると出力にセットされます。ピンごとに入出力の設定が可能です。リセット時には全て入力に設定されます。

Data Registerにアクセスすることでデータの読み書きができます。

タイマー

SBC6303ではモード設定のためにポート2のビット0〜2が固定されています。そのため、タイマー機能は実質的にフリーランカウンターしか使えません。とはいえ内部割込みが使えますので、シングルボードコンピュータとして困ることはないと思います。

まったく使いこなせていません。説明も中途半端ですみません。

TCSR(Timer Control and Status Register)

Timer_Control_and_Status_Register
  1. OLVL(Output Level)
  2. IEDG(Input Edge)
  3. ETOI(Enable Timer Overflow Interrupt)
  4. EOCI(Enable Output Compare Interrupt)
  5. EICI(Enable Input Capture Interrupt)
  6. TOF(Timer Over Flow Flag)
  7. OCF(Output Compare Flag)
  8. ICF(Input Capture Flag)

ETOIをセットすると内部カウンタが$ffffから$0000になったときに内部割り込みを発生させることができます。初期値はCounter($09, 0a)に書き込みます。

SCI(シリアル通信)

UARTが使用できます。フォーマットはスタートビット1、データビット8、ストップビット1、パリティなしの固定です。CTSとRTSは実装されていませんのでフローコントロールはできません。
送受信共に内部割り込みを発生させることが可能です。

TRCSR(Transmit/Receive Control and Status Register)

Transmit_Receive_Control_and_Status_Register
  1. WU(Wake Up)
    セットすると連続した10個の’1’を受信するまでRDRF、ORFEフラグがセットされなくなります。
  2. TE(Transmit Enable)
    セットするとSCI送信が可能になります。
  3. TIE(Transmit Interrupt Enable)
    セットするとSCI送信時に内部割り込みが発生するようになります。
  4. RE(Receive Enable)
    セットするとSCI受信が可能になります。
  5. RIE(Receive Interrupt Enable)
    セットするとSCI受信時に内部割り込みが発生するようになります。
  6. TDRE(Transmit Data Register Empty)
    送信データレジスタ(TDR)が空になったときセットされます。TRCSRを読み出し、TDRに書き込むとリセットされます。
  7. ORFE(Over Run Framing Error)
    オーバーラン、フレーミングエラーが起こった場合にセットされます。
  8. RDRF(Receive Data Register Full)
    受信データレジスタ(RDR)が埋まっているときにセットされます。TRCSRを読み出し、RDRを読み込むとリセットされます。

ORFEとRDRFは組み合わせて下記の状態を表します。

RDRFORFE状態
00受信データなし
01受信データあり
10フレーミングエラー
11オーバーランエラー

RMCR(Rate and Mode Control Register)

Rate_and_Mode_Control_Register

CC1とCC0でシリアル通信のクロック源の設定を行います。

CC1CC2クロック源Port2 bit2
00
01内部クロック未使用
10内部クロック出力
00外部クロック入力

クロック源を内部クロックとした場合、SS1とSS0で通信速度を設定します。

SS1SS0XTAL
E
4.0 MHz
1.0 MHz
4.9152
1.2288
6.0 MHz
1.5 MHz
7.3728
1.8432
8.0 MHz
2.0 MHz
00E÷1662,50076,80093,750115,200125,000
01E÷1287,812.59,60011,718.814,40015,625
10E÷1024976.61,2001,464.81,8001,953.1
11E÷4096244.1300366.2450488.3

カスタム通信速度の設定ができるシリアル通信ソフトをお使いの方は通信速度を気にせずにチップの最高クロックを選んでください。

外部クロックを選択した場合は、通信速度の8倍のクロックを入力します。

割り込み

68系MPUでは割り込みベクタという領域があります。
各種割り込みがかかると全レジスタをスタックに退避し、それぞれのベクタ領域に保存されているアドレスをプログラムカウンタにロードします。

HD6301のベクタ領域は下記の通りです。

MSBLSB割り込み
ffeeffefTRAP
fff0fff1SCI(RDRF + ORFE + TRDE)
fff2fff3TOF(Timer Over Flow)
fff4fff5OCF(Timer Output Compare )
fff6fff7ICF(Timer Input Capture)
fff8fff9IRQ(Interrupt Request)
fffafffbSWI(Software Interrupt)
fffcfffdNMI(Non Maskable Interrupt)
fffeffffRESET

SBC6303では拡張コネクタにIRQ割り込み端子が出ています。NMI割り込みは5Vに固定されているので使うことはできません。

TRAP割り込みは未定義命令をフェッチしたときに発生します。

リセット時には$fffe$ffffに入っているアドレスから実行されることになります。RESETのみレジスタの退避はありません。

コメント

タイトルとURLをコピーしました