SSブログ
English Version

レトロマイコンZ80ボードの構想(その19)PCB化 [Z80]

CNCルータでの両面基板制作 HeightMap」の記事にも書いたようにCNCでの両面基板化の作業が難航しています・・・

 そうこうしているうちにSeeedさんのFusion PCBに注文していた基板が届いてしまいました^^。5枚作って送料込みで千円以下なのでついポチってしまったw

 4/9の夜に注文して5/1の昼前に届きました。
 時間はかかるものの自分で生基板から作るより遥かに綺麗で素晴らしい ^^)

 まずはできた基板の写真が以下です。
 回路図は「レトロマイコンZ80ボードの構想(その16)回路図とPCB化」の記事を参照してください。
 ん~ソルダーレジストは赤より緑の方が良かったかも・・(通販での格安基板はほとんどが赤色なので安っぽく感じるw)

作ってもらったPCB(トップ面)


作ってもらったPCB(ボトム面)


 PCBがあれば、数点の部品を実装するだけなので簡単です^^
 PIC24のTQFPのピンパッドはCNC用に大きめにしたので隣接するパッドとの隙間が小さすぎた・・
 隙間が小さいのでPIC24のピンにあらかじめ半田をもってから基板に半田ごてで半田付けする方法にしました。
 PIC以外のSMD部品は爪楊枝でソルダーペーストを塗り、ヒートガンで半田付けしています。

 「ヒートガン購入」の記事で書いたヒートガンは部品単位で加熱できる(設定温度は220℃)ので大活躍でした^^

 部品実装後の状態が下の写真です。あれ、インダクタが少し傾いていますね^^;

部品実装後(トップ面)


部品実装後(ボトム面)


★2018/05/02 追記 {
 今回のPCBで気が付いたことをメモっておきます。
  • TQFPのパッド間隔
     上でも書いたようにCNC前提でフットプリントを加工したのでPAD間の隙間がメチャ小さい。念のため届いたPCBでPAD間の導通チェックをしてみましたが、きちんと分離されていました。
  • Z80のフットプリント
     Z80のフットプリントはDesignSparkさんのwebからダウンロードしたものを使っていますが、DIP間の幅が少し大きいようでソケットの足を若干広げて実装しています(ソケット無しでZ80を直付けする場合は丁度良いのかも)
  • SMD部品配置
     CNCでPCB作成することを前提にしていたのでVia数削減の観点で実装面を決めていましたが、写真を見ても感じるようにトップ面がスカスカ感があり、もっとトップ面に実装した方がよかったかなぁ(PCBの製造を頼むのであればVia数は関係ないしね)
  • シルク印刷
     ボトム面のSMD部品で何個かシルク印刷の文字角度があっていなかった・・。またコネクタ部の印刷はコネクタの大きさやタイプも加味して位置決めした方がいいですね(今回、シリアル部はコネクタで文字が半分隠れてしまった)
  • PCBのサイズ
     縦方向は横方向の配線でほとんどのスペースが埋まっていますが、横方向は一部横方向の配線で占有されている(TQFPの左側)ので横方向はもう少し小さくできたものと思います。(まぁパターンを引く前の部品配置の時点でそこまで推測できるかどうかはありますが)
}

 下は動作中の写真です。

CP/M 動作中



 数点の部品を実装した小さなワンボードマイコンでCP/Mが動き、C言語やBASICが使えるというのは感慨深いものがあります。

 「レトロマイコンZ80ボードの構想(その18)BDS-C」の記事でかいたことをフリーソフトになっている HI-TECH C でやってみました。
 BDS Cの時はstdio.hのインクルードもなしに動いていましたが、HI-TECH Cでlife.cのコンパイルを通すにはstdio.hとstdlib.hのインクルードが必要でした。
 各種のヘッダファイルも結構そろっています。
 でもコンパイルするのに43秒(BDS Cは3秒くらい)掛かりました。(warningは出ていますが動作しました^^)
 Z80のBUSACKでLEDを点灯(Z80が処理を実行中は消灯)していますが、BDS Cのコンパイル中はほとんどLEDが消灯している時間があります(今までこんなにLEDが暗かったことは無かった)がHI-TECH Cではコンパイル中も結構LEDが光っています(インメモリ処理ではなくファイル渡しでの処理ということ)。
 でもHI-TECH Cの方が今のCにかなり近い感じです。

HI-TECH Cでライフゲームのソースをコンパイル(電源オンから)
picle compiler CP/M Ver0.08 2017/12/17 by skyriver :\\ +B000-BDA4 # CP/M boot v0.04b 2018/05/03 +C000-C809 #LibCpm CP/M(PMP) lib v0.02 2018/05/03 +D000-DFDE #LibSpi SPI lib V0.03 2018/05/03 :\< 3492 :run loading... 64k Pic24 CP/M Version 2.2 COPYRIGHT (C) 1979, DIGITAL RESEARCH a>b: b>dir B: $EXEC COM : ASSERT H : C COM : CGEN COM B: CONIO H : CPM H : CPP COM : CREF COM B: CRTCPM OBJ : CTYPE H : DEBUG COM : DEHUFF COM B: EXEC H : FLOAT H : HITECH H : LIBC LIB B: LIBF LIB : LIBR COM : LIMITS H : LINK COM B: MATH H : OBJTOHEX COM : OPTIM COM : OPTIONS B: P1 COM : READ ME : RRTCPM OBJ : SETJMP H B: SIGNAL H : STAT H : STDARG H : STDDEF H B: STDIO H : STDLIB H : STRING H : SYS H B: TIME H : UNIXIO H : ZAS COM : LIFE COM b>dir c: C: LIFE BAK : LIFE C : HELO C : MAZE COM C: LIFE COM : HELO COM b>c c:life.c HI-TECH C COMPILER (CP/M-80) V3.09 Copyright (C) 1984-87 HI-TECH SOFTWARE C:LIFE.C:116: constant relational expression (warning) b>a:stat life.com Recs Bytes Ext Acc 43 6k 1 R/W B:LIFE.COM Bytes Remaining On B: 1484k b>



★2018/05/02 追記
 この記事に書いたようにWordStarが動くようになったのでCP/MでのエディタはWordStarを使っています。
 WordStarでlife.cのソースをエディットしている画面を貼っておきます。

 上記で発生していた
C:LIFE.C:116: constant relational expression (warning)
を確認したところ永久ループの「while (1)」の部分でした。「for (;;)」に変更したところwarningがなくなりました。

※「for (;;)」は少しトリッキーな表現(何も実行しない結果が何故 true なの?)なのであまり好きじゃありません。
 因みに picle言語では「for (;1;)」としないと永久ループになりません(こういう時はwhile (1)を使うけどね)

WordStarで編集中の画面



[TOP] [ 前へ ] 連載記事 [ 次へ ]

nice!(0)  コメント(0) 
共通テーマ:趣味・カルチャー

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。