2018年7月26日木曜日

Z80-MBCの作成 其の肆

さてさて、ブートローダの書込みが無事終了したら、ATmega32a-PUを”やさしく”ブレッドーボードから引抜き、Z80-MBCのソケットに挿し込み、次いでZ80やSRAM、74HC00、EEPROMなどソケットに挿していき、下図の様になれば物理的な構成は完了です。
おめでとうございます。

ただし、このままでは5Vの電源を繋ぐとLEDが光る程度の謎の板です。
1. 起動準備
現時点でのZ80-MBCの状態は、Z80やSRAMなどが使用不可の状態で載ったArduinoとなっています。ArduinoにはUSBポートが搭載されているのでケーブルを接続するだけでスケッチの書込みが可能ですが、本機はそれすら出来ません。
最低限Arduinoとして使うには、Z80-MBCと接続するためのUSBシリアル変換モジュール、もしくはUSBシリアル変換ケーブルが必要となります。

ここでは、Z80-MBCのFTDIコネクタと端子の数や配置も同じで直結出来るAE-TTL-232Rを選択しました。
ボード上にあるDIPスイッチのSW2をONに切り替えて5Vにしておきます。
配線を確認して、下図の様にモジュールを裏返しにして接続します。
  • (Z80_MBC) TX - TXD (AE-TTL-232R)
  • (Z80_MBC) RX - RXD (AE-TTL-232R)
以上のように接続している箇所が気になったのですが、Z80-MBCの作成 其の弐の導通チェック用のFTDIコネクタの配線表を見ると既にクロス接続されているので問題ありません。

2. Lチカしてみる

Arduinoとして使える準備は整っているので、"Hello World!"とも言えるLチカを実行してみます。

USBケーブルをUSBシリアル変換モジュールのμUSBコネクタに接続するとLED_DMA(黄)が点灯します。



  1. ArduinoISPスケッチを開く

    "ファイル" → "スケッチ例" → "01.Basics" → "Blink"を選択。

    ファイル
    編集
    スケッチ
    ツール
    ヘルプ
    新規ファイル
    ⌘N
    開く...
    ⌘O
    最近使った項目を開く
    ▶︎
    スケッチブック
    ▶︎
    スケッチ例
    ▶︎
    閉じる
    ⌘W
    保存
    ⌘S
    名前と付けて保存
    ⇧⌘N

    プリンタの設定...
    ⇧⌘P
    印刷...
    ⌘P
    内蔵のスケッチ例
    01.Basics
    ▶︎
    02.Digital
    ▶︎
    03.Analog
    ▶︎
    04.Communication
    ▶︎
    05.Control
    ▶︎
    06.Sensors
    ▶︎
    07.Display
    ▶︎
    08.Strings
    ▶︎
    09.USB
    ▶︎
    10.StarterKit_BasicKit
    ▶︎
    11.ArduinoISP
    ▶︎

    AnalogReadSerial
    BareMinimum
    Blink
    DigitalReadSerial
    Fade
    ReadAnalogVoltage

  2. ボードの選択

    "ツール" → "ボード" → "ATmega32"を選択。
    ※既に選択されているなら確認だけで大丈夫です。

    ツール
    ヘルプ
    自動整形
    ⌘T
    スケッチをアーカイブする

    エンコーディングを修正

    シリアルモニタ
    ⇧⌘M
    シリアルプロッタ
    ⇧⌘L

    Wifi101 Firmware Updater


    ボード: "Arduino/Genuino Uno"
    ▶︎
    シリアルポート:
    ▶︎
    ボード情報を取得


    書込み装置: "AVRISP mkII"
    ▶︎
    ブートローダを書き込む

    MightyCore
    ATmega1284
    ATmega644
    ATmega324
    ATmega164
    ATmega32
    ATmega16
    ATmega8535


  3. 書込み装置の選択

    "ツール" → "書込み装置" → "AVRISP mkII"を選択

    ツール
    ヘルプ
    自動整形
    ⌘T
    スケッチをアーカイブする

    エンコーディングを修正

    シリアルモニタ
    ⇧⌘M
    シリアルプロッタ
    ⇧⌘L

    Wifi101 Firmware Updater


    ボード: "ATmega32"
    ▶︎
    Pinout: "Standard"
    ▶︎
    Clock: "16 MHz external"
    ▶︎
    Compiler LTO: "Disabled (default)"
    ▶︎
    BOD: "2.7v"
    ▶︎
    シリアルポート:
    ▶︎
    ボード情報を取得


    書込み装置: "AVRISP mkII"
    ▶︎
    ブートローダを書き込む
    AVR ISP
    AVRISP mkII
    ArduinoISP
    ArduinoISP.org
    USBasp
    Parallel Programmer
    ✓Arduino as ISP
  4. シリアルポートの選択

    "ツール" → "シリアルポート"→ "Arduinoと接続しているポート"を選択。
    "Arduinoと接続しているポート"は、"COM~"とか"/dev/cu.useb~"などの表記となります。

    ツール
    ヘルプ
    自動整形
    ⌘T
    スケッチをアーカイブする

    エンコーディングを修正

    シリアルモニタ
    ⇧⌘M
    シリアルプロッタ
    ⇧⌘L

    Wifi101 Firmware Updater


    ボード: "ATmega32"
    ▶︎
    Pinout: "Standard"
    ▶︎
    Clock: "16 MHz external"
    ▶︎
    Compiler LTO: "Disabled (default)"
    ▶︎
    BOD: "2.7v"
    ▶︎
    シリアルポート:
    ▶︎
    ボード情報を取得


    書込み装置: "AVRISP mkII"
    ▶︎
    ブートローダを書き込む
    シリアルポート
    関係ないポート
    関係ないポート
    Z80-MBCと接続しているポート

  5. マイコンボードに書き込む

    Arduino IDEの画面上部にある"マイコンボードに書き込む"を押す。

    ➡︎
    ⬆︎
    ⬇︎
    マイコンボードに書き込む


暫く待つと、以下の様に"ボードへの書き込みが完了しました。"との表示が出ます。

➡︎
⬆︎
⬇︎
Blink
  1. /*
  2.   Blink

  3.   Turns on an LED on for one second, then off for one second, repeatedly.
  4.   Most Arduinos have an on-board LED you can control. On the UNO, MEGA and ZERO
  5.   it is attached to digital pin 13, on MKR1000 on pin 6. LED_BUILTIN is set to
  6.   the correct LED pin independent of which board is used.
  7.   If you want to know what pin the on-board LED is connected to on your Arduino
  8.   model, check the Technical Specs of your board at:
  9.   https://www.arduino.cc/en/Main/Products
  10.   modified 8 May 2014
  11.   by Scott Fitzgerald
  12.   modified 2 Sep 2016
  13.   by Arturo Guadalupi
  14.   modified 8 Sep 2016
  15.   by Colby Newman 

  16.   This example code is in the public domain.

  17.   http://www.arduino.cc/en/Tutorial/Blink
  18. */
  19. // the setup function runs once when you press reset or power the board
  20. void setup() {
  21.   // initialize digital pin LED_BUILTIN as an output.
  22.   pinMode(LED_BUILTIN, OUTPUT);
  23. }
  24. // the loop function runs over and over again forever
  25. void loop() {
  26.   digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
  27.   delay(1000);                       // wait for a second
  28.   digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
  29.   delay(1000);                       // wait for a second
  30. }
ボードへの書き込みが完了しました。
avrdude done.  Thank you.

LED_D0(緑)が点滅します。
LED_BUILTINの箇所を13番ピンで指定すると、LED_USR(青)が点滅します。


点滅が確認できればATmega32がArduinoとして機能しています。
ただし、相変わらずZ80周りは全く使用していない状況です。

3. Z80へのアクセス
ついにと言うか、やっとと言うかZ80を使うための環境を構築してみましょう。


  1. スケッチのダウンロード
    A 4$, 4ICs, Z80 homemade computer on breadboardFilesに"S221116_R100218_Z80.ino"と言うスケッチがあるのでダウンロードして読み込み、もしくはコピペでArduino IDEの新規ファイルに貼り付けます。

    ➡︎
    ⬆︎
    ⬇︎
    S221116_R100218_Z80
    1. /* ------------------------------------------------------------------------------
    2. S221116 R100218 - HW ref: A041116
    3. IOS - I/O Subsystem - for Z80-MBC (Multi Boot Computer)
    4. (Z80 64kB RAM @ 4Mhz)
    5. Notes:
    6. 1:  This SW is ONLY for the Atmega32A used as EEPROM and I/O subsystem (8MHz internal oscillator).
    7. 2:  Tested on Atmega32A @ Arduino IDE 1.6.5.
    8. 3: Embedded FW: S091216 R230117 uLoader, S121216 uBIOS + Basic, S260117 iLoad (Intel-Hex loader),
    9.                  Forth interpreter, S150417 CP/M 2.2 Cold Loader
    10. 4:  Utilities:   S111216 TASM conversion utility
    11. 5:  Optional HW: A080117 (GPIO Expansion Module)
    12.                  A110417 (Virtual Disk Module)
    13.                  Generic DS3231 RTC
    14. --------------------------------------------------------------------------------- */
    15. /* ------------------------------------------------------------------------------
    16. CHANGELOG:
    17. S221116 First release.
    18. S221116 R200117   Added support for the GPIO Extension Module (HW ref: A080117).
    19. S221116 R230117   Added iLoad boot mode (S260117), updated uLoader (S091216 R230117).
    20. S221116 R120217   Added Forth interpreter (porting made by Bill Westfield, see GitHub:
    21.                   https://github.com/WestfW/4chipZ80/tree/master/Firmware/figForth )
    22.                   and multi boot selection. Renamed from now as "Multi Boot Computer".
    23.                   From this release the use of an Atmega32A is mandatory.
    24. S221116 R180217   Added support for the Virtual Disk Module (HW ref: A110417).
    25. S221116 R130417   Added CP/M Cold Loader (S150417) to support CP/M 2.2 and BIOS (S050217).
    26.                   Single disk configuration now allowed (HW ref: A110417).
    27. S221116 R300417   Added AUTOEXEC.SUB support for CP/M 2.2. Required new BIOS (S050217 R300417).
    28. S221116 R110517   Added support for a generic DS3231 RTC for QP/M 2.71 timestamping.
    29.                   Now supporting CP/ 2.2 and QP/M 2.71
    30. S221116 R100218   Fixed the ghost RTC bug: when there isn't any Virtual Disk (only Basic and Forth)
    31.                   the RTC clock was always incorrectly found.
    32. --------------------------------------------------------------------------------- */



  2. スケッチの書き込み

    既にLチカを実行した際に設定が行われているものとして進めます。
    Lチカを飛ばした場合は確認してから進んで下さい。

    Arduino IDEの画面上部にある"マイコンボードに書き込む"を押す。

    ➡︎
    ⬆︎
    ⬇︎
    マイコンボードに書き込む

  3. シリアルターミナルでアクセス

    最も手早く行うのは、Arduino IDEの画面上部にある"シリアルモニタ"を押す事です。

    ➡︎
    ⬆︎
    ⬇︎
    シリアルモニタ

    ただし、入力は入力ボックスに打ち込んでから送信ボタンを押さないと適応されないので、これから行う作業には適しているとは言えません。

    私は、screenを使ってアクセスしましたが、今後の作業を考えるとTera Termを使うのが最適かと思います。
    接続先は"Z80-MBCと接続しているポート"、通信速度は"9600bps"を指定します。

    Z80-MBC (Multi Boot Computer) - A041116
    IOS - I/O Subsystem - S221116 R100218

    IOS: Found Virtual Disk Module
    IOS: Warning: Disk 1 not found
    IOS: Disk light is OFF
    IOS: AUTOEXEC execution is OFF

    IOS: Select boot mode:

     0: No change (->3)
     1: Basic
     2: Forth
     3: iLoad
     4: Load OS from Disk 0
     5: Toggle disk light (->OFF)
     6: Toggle AUTOEXEC execution (->OFF)

    Enter your choice >

    以上の様な表示が出ない場合は、Z80-MBCのRESETボタン、USERボタンを両押しした状態で、RESETボタンだけを離し、ターミナルの画面が変化するまでUSERボタンを押したままにしておけば上記の画面になるかと思います。

    それ以前に画面が出ない場合は、これまでの手順を逆順に追って問題がないか調べてみましょう。
これで、Z80を使用する環境が整いました。
ここからさらに、CP/Mと言うOSをインストールし、Z80を用いた開発環境を整えて行くことになります。

0 件のコメント:

コメントを投稿