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

おめでとうございます。
ただし、このままでは5Vの電源を繋ぐとLEDが光る程度の謎の板です。
ただし、このままでは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にしておきます。
最低限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)
2. Lチカしてみる
Arduinoとして使える準備は整っているので、"Hello World!"とも言えるLチカを実行してみます。
USBケーブルをUSBシリアル変換モジュールのμUSBコネクタに接続するとLED_DMA(黄)が点灯します。
暫く待つと、以下の様に"ボードへの書き込みが完了しました。"との表示が出ます。
LED_D0(緑)が点滅します。
LED_BUILTINの箇所を13番ピンで指定すると、LED_USR(青)が点滅します。
点滅が確認できればATmega32がArduinoとして機能しています。
ただし、相変わらずZ80周りは全く使用していない状況です。
USBケーブルをUSBシリアル変換モジュールのμUSBコネクタに接続するとLED_DMA(黄)が点灯します。

- 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▶︎
AnalogReadSerialBareMinimumBlinkDigitalReadSerialFadeReadAnalogVoltage
- ボードの選択
"ツール" → "ボード" → "ATmega32"を選択。
※既に選択されているなら確認だけで大丈夫です。
ツールヘルプ自動整形⌘Tスケッチをアーカイブする
エンコーディングを修正
シリアルモニタ⇧⌘Mシリアルプロッタ⇧⌘L
Wifi101 Firmware Updater
ボード: "Arduino/Genuino Uno"▶︎シリアルポート:▶︎ボード情報を取得
書込み装置: "AVRISP mkII"▶︎ブートローダを書き込む
MightyCoreATmega1284ATmega644ATmega324ATmega164ATmega32ATmega16ATmega8535
- 書込み装置の選択
"ツール" → "書込み装置" → "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 ISPAVRISP mkIIArduinoISPArduinoISP.orgUSBaspParallel Programmer✓Arduino as ISP - シリアルポートの選択
"ツール" → "シリアルポート"→ "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と接続しているポート
- マイコンボードに書き込む
Arduino IDEの画面上部にある"マイコンボードに書き込む"を押す。
暫く待つと、以下の様に"ボードへの書き込みが完了しました。"との表示が出ます。
- /*
- Blink
- Turns on an LED on for one second, then off for one second, repeatedly.
- Most Arduinos have an on-board LED you can control. On the UNO, MEGA and ZERO
- it is attached to digital pin 13, on MKR1000 on pin 6. LED_BUILTIN is set to
- the correct LED pin independent of which board is used.
- If you want to know what pin the on-board LED is connected to on your Arduino
- model, check the Technical Specs of your board at:
- https://www.arduino.cc/en/Main/Products
- modified 8 May 2014
- by Scott Fitzgerald
- modified 2 Sep 2016
- by Arturo Guadalupi
- modified 8 Sep 2016
- by Colby Newman
- This example code is in the public domain.
- http://www.arduino.cc/en/Tutorial/Blink
- */
- // the setup function runs once when you press reset or power the board
- void setup() {
- // initialize digital pin LED_BUILTIN as an output.
- pinMode(LED_BUILTIN, OUTPUT);
- }
- // the loop function runs over and over again forever
- void loop() {
- digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level)
- delay(1000); // wait for a second
- digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW
- delay(1000); // wait for a second
- }
●
ボードへの書き込みが完了しました。
avrdude done. Thank you.
LED_D0(緑)が点滅します。
LED_BUILTINの箇所を13番ピンで指定すると、LED_USR(青)が点滅します。

点滅が確認できればATmega32がArduinoとして機能しています。
ただし、相変わらずZ80周りは全く使用していない状況です。
3. Z80へのアクセス
ついにと言うか、やっとと言うかZ80を使うための環境を構築してみましょう。
ここからさらに、CP/Mと言うOSをインストールし、Z80を用いた開発環境を整えて行くことになります。
- スケッチのダウンロードA 4$, 4ICs, Z80 homemade computer on breadboardのFilesに"S221116_R100218_Z80.ino"と言うスケッチがあるのでダウンロードして読み込み、もしくはコピペでArduino IDEの新規ファイルに貼り付けます。
- /* ------------------------------------------------------------------------------
- S221116 R100218 - HW ref: A041116
- IOS - I/O Subsystem - for Z80-MBC (Multi Boot Computer)
- (Z80 64kB RAM @ 4Mhz)
- Notes:
- 1: This SW is ONLY for the Atmega32A used as EEPROM and I/O subsystem (8MHz internal oscillator).
- 2: Tested on Atmega32A @ Arduino IDE 1.6.5.
- 3: Embedded FW: S091216 R230117 uLoader, S121216 uBIOS + Basic, S260117 iLoad (Intel-Hex loader),
- Forth interpreter, S150417 CP/M 2.2 Cold Loader
- 4: Utilities: S111216 TASM conversion utility
- 5: Optional HW: A080117 (GPIO Expansion Module)
- A110417 (Virtual Disk Module)
- Generic DS3231 RTC
- --------------------------------------------------------------------------------- */
- /* ------------------------------------------------------------------------------
- CHANGELOG:
- S221116 First release.
- S221116 R200117 Added support for the GPIO Extension Module (HW ref: A080117).
- S221116 R230117 Added iLoad boot mode (S260117), updated uLoader (S091216 R230117).
- S221116 R120217 Added Forth interpreter (porting made by Bill Westfield, see GitHub:
- https://github.com/WestfW/4chipZ80/tree/master/Firmware/figForth )
- and multi boot selection. Renamed from now as "Multi Boot Computer".
- From this release the use of an Atmega32A is mandatory.
- S221116 R180217 Added support for the Virtual Disk Module (HW ref: A110417).
- S221116 R130417 Added CP/M Cold Loader (S150417) to support CP/M 2.2 and BIOS (S050217).
- Single disk configuration now allowed (HW ref: A110417).
- S221116 R300417 Added AUTOEXEC.SUB support for CP/M 2.2. Required new BIOS (S050217 R300417).
- S221116 R110517 Added support for a generic DS3231 RTC for QP/M 2.71 timestamping.
- Now supporting CP/ 2.2 and QP/M 2.71
- S221116 R100218 Fixed the ghost RTC bug: when there isn't any Virtual Disk (only Basic and Forth)
- the RTC clock was always incorrectly found.
- --------------------------------------------------------------------------------- */
● - スケッチの書き込み
既にLチカを実行した際に設定が行われているものとして進めます。
Lチカを飛ばした場合は確認してから進んで下さい。
Arduino IDEの画面上部にある"マイコンボードに書き込む"を押す。
- シリアルターミナルでアクセス
最も手早く行うのは、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ボタンを押したままにしておけば上記の画面になるかと思います。
それ以前に画面が出ない場合は、これまでの手順を逆順に追って問題がないか調べてみましょう。
ここからさらに、CP/Mと言うOSをインストールし、Z80を用いた開発環境を整えて行くことになります。
0 件のコメント:
コメントを投稿