Z80-MBC2が動作

Z80-MBCのアップデートバージョンであるZ80-MBC2を作る。

Z80-MBC2は、Z80MBCに対していろいろバージョンアップされシンプルなボードから若干ごちゃごちゃしたボードになった。

機能追加としては

SDカードのサポート
メモリのバンク切り替え
I2Cによる拡張端子

1800812021.png

手持ちの部品が無いのでLED用のトランジスタ2N2907は2SA1015をバンク切り替え様の1N5817は相当品?に物を使用した。毎度のことですね。

2SA1015は端子の入れ替えの為コレクタとベースの端子位置を入れ替えています。

1800812029.png

組付けには部品配置にはA040618 BOM.ods を使用しました。(excel棟で開きます)ですがA040618 PCB Layout Guide.zipの方がわかり易いような気がします。

A040618 PCB Layout Guide.zipのA040618 – PCB Front Val.pdfにわかり易いように色を付けてみました。

1800824001.png

抵抗は赤四角、コンデンサは青四角、ダイオードは緑四角、LEDは丸です。またLEDの色はBOMファイルの色を付けました青、赤、緑、白(グレー)になります。

組付けが完了したので次はATMEGA32Aの準備です。

Z80-MBC2のISP端子を使用した書込み方法はこちらの方に詳しく書かれています。

書込みは前回同様①Arduinoを使う方法と基板に実装して②USBaspを使う方法があります。

1800812028.png

①Arduinoを使用して内部8MHzクロックでの書込みはできたのですが、外部16MHzでの書込みはerrorでできません。一度内部8MHzで書き込んだらダメでしたっけ?

ArduinoUNOを使ってATMEGA32へのブートローダの書込む

  • arduinoのインストール(今回はArduino1.8.5をインストールしました)
  • arduinoへのMightyCoreボードマネージャ追加
  • ArduinoUNOにarduinoISPを書込み
  • ブレッドボードを使用してブートローダ書込み
    • ArduinoUNOとATmega32を下の様に配線しました
    • 下記の配線に水晶を追加しました

atmega-16.png

1800812027.png

②USBaspを使用して書込み使用と思ったのですがWindows10で認識しませんでした。

Windows10ドライバーを入れないといけないみたいです。一応ここからダウンロードしてきましたが今回はパスすることにしました。

③最終的にMiniPROで書き込みました。

1800812030.png

未使用と思われるATMEGA32Aのリード画面

1800812023.png

内部8MHzのブートローダを書き込んだATMEGA32Aのリード画面

1800812024.png

今回書き込んだ外部16MHzの画面(取り忘れました)

書込みに使用したHEXファイルは

「ディレクトリ」
C:\Users\xxx\AppData\Local\Arduino15\packages\MightyCore\hardware\avr\2.0.1\bootloaders\optiboot_flash\atmega32\16000000L
「書き込んだHEXファイル」
optiboot_flash_atmega32_115200_16000000L.hex

LOCKビットなどは

「ディレクトリ」
C:\Users\xxx\AppData\Local\Arduino15\packages\MightyCore\hardware\avr\2.0.1
「参照したファイル」
boards.txt
「使用した値は」
32.bootloader.unlock_bits=0x3f
32.bootloader.lock_bits=0x0f
32.bootloader.low_fuses=0b{bootloader.bod_bits}{bootloader.sut_cksel_bits}
32.menu.clock.16MHz_external.bootloader.high_fuses=0xc6

基板にATMEGA32Aのみ搭載してArduino IDEでS220618_IOS-LITE-Z80-MBC2.inoを書込みました。

1800812032.png

S220618_IOS-LITE-Z80-MBC2.inoまで書き込んだ状態のMiniPROのリード画面が下記になります。

1800812033.png

ArduinoIDEで書き込みができたので一応OKと言うことでICを5個載せて

1800812031.png

電源を入れると問題なくMS BASICまで起動しました。

1800812026.png

実は、Z80 clock set at 8MHz が4MHzで触っている間に8MHzになりました。使用しているZ80はNEC D70008AC-6の6MHz品だったりします。

<2018/8/23追加しました>

私の環境ではMEGA32のヒューズビットの設定が

Fuse Low Byte: 0x3F
Fuse High Byte:0xC6
Lock Bit Byte:0xFF

で動作していましたがTwitter上でうまく動作しない状況があり@FoschiaさんがISPで書き込んだヒューズビットを公開してくれました。(@FoschiaさんのTwitterを見るとこの値も標準の値と違うかもしれません)

異なっている設定は、発振安定時間であったり低電圧検出リセット設定電圧と発振子の増幅設定?と未使用LOCKビットで動作に影響ないのかな?

Fuse Low Byte: 0xAF
Fuse High Byte:0xD6
Lock Bit Byte:0xCF

MiniPRO(TL866CS)で設定を変更して動作する事を確認しました。

私の場合は現在の設定をリードして(下のリード画面は上のリード画面を使用しました従ってCODEMemoryの値はA040618のSDカード非サポート版)

1800823003.png

config設定にてヒューズビットを変更して

1800823004.png

書き込んでみました(下のライト画面は今回リードしたCODEMemoryの値でA040618のSDカードサポート版)

1800823005.png

動作的に変わったところはありませんが動作しています。

MiniPRO(TL866CS)ならフューズビットだけの書込みもできますがCODE,DATAは読み込んで再度上書きしてしまいました。

一時データとして下記を作りました。

S220618_IOS-LITE-Z80-MBC2.inoのブートローダのベリファイ版を作成しました。

ファイル名はへS220618_IOS-LITE-Z80-MBC2cmp.inoです。

ファイルはここにあります。

ダウンロードしたデータが見たい場合は 2289行目からを下記に変更

//  if(PINA != value){
Serial.println(PINA,HEX); // Write the byte to load in RAM on data bus
delay(10);
//  }

ベリファイエラーのない場合のbasic起動画面

1800826001.png

ベリファイエラー発生時のbasic起動画面

1800826002.png

Z80-MBC2が動作」への4件のフィードバック

  1. 「一度内部8MHzで書き込んだらダメでしたっけ?」のところですが、それは大丈夫だと思います。AVRISP mkII cloneの書き込み試験は、ATmega164でやりましたが、内蔵8MHzと外部16MHzをなんども往復して書けてました。
    ピン接続も適切のようですし、あと考えられるのはパスコンぐらいでしょうか。ATmega32の10,11の間に0.1uFを足すとか。

    いいね

    • ありがとうございます。ATMEGA32Aが2個あり2個とも同じ症状だったので確認は後にして動作を優先させました。この辺は忘れたころにするのでまたまとめておきたいと思います。

      いいね: 1人

    • 6ピンコネクタを付けるのが面倒で付けていなかったのですが。書き込む前につけましたから今は使用しないのについています。
      理由はありません。
      ただMiniPROを使ってフューズビットを書いてみたかっただけです。

      いいね: 1人

コメントを残す