P8052AH BASIC対応できるか?

SBC8052 Rev01ですがオリジナルの状態では、AT89C52/AT89S52(相当品)を使用したBASIC52 V1.31対応としておきます。STC89C52/STC90C52等はEA,PSENがポート優先の為非サポートです。

注)P8052AH BASIC52等の V1.1(V1.3以前)を使用する場合は、IC4のEEPROMの1ピン、27ピンのパターンカットならびに8052のポートとの接続が必要になります。

SBC8052を@DAI_2040さんに作っていただき動作確認いただいています。私が持っているCPUがAT89S52とSTC89C52(90C)でオリジナルのP8052AH BASICその他のBASIC52を動作可能なCPUがいろいろあります。

個人的にもいろいろ手配中ですがSBC8052と言っておきながらP8052AHでの動作確認予定はありません。若松さんにだいぶ前からあったのでがスルーしていました。

P8052AHからマスクROMの無いP8032AHにて外部ROM動作の確認を行いました。確認はBASIC52 V1.3で行いました。

GAL22V10Dについては外部ROMをサポートしていなかったのでサポート版を作りました。動作としてはP8032AH(2種)とAT89S52で期待通りの動作しました。

@DAI_2040さんがP8052AH BASICにて動作確認頂いたのですがEEPROMへの書込みができないと報告がありました。EEPROM対応はV1.3からでV1.1はEPROM対応でV1.1はV1.3にアップデートすればいいじゃんと思っていたのでした。

P8052AH  BASICはマスクROMでアップデート不可能です。一番大事なチップで動作しないという状況になってしまいました。

BASIC52 V1.1のEPROM書込み回路になります。EPROMのVPPを使用しない物がEEPROMの書込み回路になります。

BASIC52 V1.1の書込みタイミングが上図になります。EPROMの書込みはアドレス・データバスではなくIOポートとして書込みを実施している為、コントロール信号としてIOポートの追加が必要になります。

  • PRGE :P1.5 
  • ALE :P1.3
  • PRGP :P1.4

PRGE(P1.5)をGAL22V10Dの14ピンにPRGP(P1.4)を
GAL22V10Dの15ピンにジャンパーを追加してGALを変更して対応しました。

 Title      FGAL file for GAL22V10
Pattern SBC8052 Adress Decoder
Revision 0.02
Auther Tomi9
Date Feb 11, 2019
CHIP SBC8052 GAL22V10
;1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12]
A15 A14 A13 A12 EAN ALE PSEN RDN WRN ALED GND
;13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24]
MODE0 PRGE PRGP PPICS LCDCS RAMCS RD WR PRD ROMCS ALEO VCC

EQUATIONS
/ROMCS = EAN * A15 * /A14
+ /EAN * /PSEN;
/RAMCS = /A15;
LCDCS = A15 * A14 * A13 * A12 * /RDN
+ A15 * A14 * A13 * A12 * /WRN;
/PPICS = A15 * A14 * A13 */A12;
ALEO = ALE * ALED;
/WR = PRGE * /WRN
+ /PRGE * /PRGP;
/RD = /RDN;
/PRD = EAN * /RDN
+ EAN * /PSEN * MODE0
+ /EAN * /PSEN;

GALのコードの+(OR)が抜けていましたので追加いたしました。YahooBOXのコードは誤っていなかったのでペースト時の誤りの様です。申し訳ありません。

SBC8052REV01については、シルクの誤りとシルクの向き等の修正とR1,R2の配置が逆、リセット回路のダイオード追加の3点を修正してREV02を準備していました。

P8032AHや、DS80C320を使用する場合は、外部ROMにBASIC52を入れるためEEPROMとして使用できない問題がありますのでSBC8052に外部ROMを専用で載せるREV03を次期SBC8052にしようと思います。

SBC8052 REV03の3Dイメージです。300milのSRAMの両再度のスルーホールがP8032AH使用時の外部ROMを搭載するスルーホールです。

SBC8052を作った

BASIC52用の基板を作りました。ブレッドボードの回路にPPIの8255とLCDを追加しました。

181229003.png

8255のポートAに接続したLチカです。

181229002.png

秋月電子さんの超小型LCD(今では大型?)表示です

181229004.png

起動してEEPROMのプログラムを表示後LED TESTプログラムを実行しています。

リセットスイッチの動作やシルクのミスはありますが一応動作しました。PLDに誤りがあり最初は反応が無く心配しましたが一安心です。

BASIC52のプログラムは下記サイトの物を使用させていただきました。

Basic ROM directory とROM dumpプログラムはMadis Kaalさんサイト

8Queenとdump memoryはYoshiさんのサイト

test LCDはWichit Sirichoteさんのサイト

 

 

BASIC52動作確認中

STC89C52RCにWindows10から書込みできたので少し設定を変えながら動作確認を行いました。

水晶振動子は、22.1184MHzを使用して下記を実行した時の時間を手動のストップウオッチで測定してみた。

180327001.png

測定はSTC89C52RCとAT89S52で行いました

180327002.png

STC89C52RCの230Kと115Kの差が3秒ですのBASIC52の1万回の計算/PRINT時間は12秒(15-3)でAT89S52の24秒(27-3)で約2倍になっています。

動作としては、リセット時のボーレート検出時に誤動作して文字が化ける時はNGですが、ボーレートの誤検出が無ければスペース入力等で正常に起動メッセージが表示され動作しています。

STC89C52RCの書き込み時の設定は

  • Enable 6T(double-speed) mode をチェック
  • Reduce gain of the cyrstal oscilator をチェック
  • Enable internal XRAM のチェックを外す
  • Erase all EEPROM data next time program code をチェック

で行いました。

STC89C52RCですが、バージョンがHD/90Cがあり私の持っている物は90Cです。HD/90Cの違いは

  • HDが31pin:EA/30pin:ALE/29pin:PSENで外部プログラムROMが使用できる
  • 90Cが31pin:p4.6/30pin:ALE/29pin:P4.4で外部プログラムROMが使用できない

となる様ですのでBASIC52で使用するならHDの方が良いようです。

 

 

STC89C52RCへのISP書込み

BASIC52に使用するSTC89C52RCへの書込みを確認してみました。

STC89C52RCのDatasheetですが270ページぐらいある34-STC-STC89C51RC,RD.pdfの中の1.6項にSTC89C51RC/RD+ series Application Circuit for ISPがありますので参照してください。

今回STC89C52RC書込みに使用したボードです。aitendoさんマイコンボード基板単体(MCS-51) [PCB-51CBD]ですが完成品の方がお得みたいです。

180326002.png

今回気が付いたのですが私のSTC89C52RCですが90Cバージョン(HDと90Cがあるようです)です。

接続は、シリアルケーブル側からみてP30(TXD),P31(RXD),GNDの3本です。

<追加>P10,11をプルアップ

書込みに使用したソフトは、STC-ISP-V6.82Hです。起動する途中に文字化けやら読めない中国語が表示され現在は、アップデートのダイアログが表示されますがそのままのバージョンで使用しました。

<追記>STC-ISP-V6.82Hを使用した理由がわかりましたSTC-ISP-V6.83まではインストールする必要がなくexeファイルで起動できます。6.83ではなく6.82を使用している理由は英語バージョンの6.83を見つけられなかった為です。

問題は、接続しても動作しません。だいぶ悩んで下記にて書込みできました。

  • ボードの電源をON (P10,P11をプルアップすれば不要)
  • STC-ISP-V6.82Hを起動
  • MCU Type設定
  • Open Code Fileを設定(今回はversion_1p3_hex.HEX)
  • Download/Programをクリック
  • ボードの電源をOFF、ON(P10,11をプルアップすれば電源ON)

180326001.png書込み中の画面です。

一応、Windows10の64bit版で動作しました。使用したUSBシリアルは、FTDIのFT232RLProlific USB-to-Serial(PL2303HXでwindows10ではサポート対象外)です。

ちなみに、BASIC52ボードでも書込み確認しましたが、電源SWが無いので電源ピンの抜き差しでOFF,ONして同様に書込みできました。

でもBASIC52動作が不安定なのは一緒です。一点分かったのはリセット用のコンデンサが1μFですが変えないといけないみたいです。(10μFがなくて1μFを付けました)

<追記>STC-ISP-V6.82Hですが画面が前使ったのと違うような気がする。設定項目の位置と項目が.....

BASIC52ボードまだ不安定

BASIC52ボードですがブレッドボードからユニバーサルボードに変更したのですが動作が不安定でおかしいなと思っていたら回路図が誤っていました。

原因はP8052AHの31pinのEAがオープンになっていました。EA端子はEA=1で内部ROM、EA=0で外部ROMで起動します。オープンの為たまに動作する状況でした。basic52,basic52bbの回路図はrev0.1にアップデートしました。(前のblogの回路図はアップデート済みです)

Baisc52  v1.1からBasic52 v1.3にアップデートしてプログラムのセーブ用のROMサポートを追加しようとしていますが起動がv1.3にしてから不安定です。v1.3は対応CPUが増加した関係で通信速度認識部がAT82S52CやSTC82C52RCで不安定なのかもしれません。

セーブROMサポートの関係を確認が終了したらまた追加します。

現在のBASIC52ボードの状況です。

180313003.png

74ls04を持っていないので現在は32KのRAMで動作しています。74ls04を入手して外部ROMへのセーブ、ロード、実行を確認したいと思います。

180313004.png

ボードの裏側です。

 

BASIC52ボードの回路図です

先日ユニバーサル基板にICを実装した写真を搭載しましたが回路図がありませんでしたので作る予定の回路図を作成しました。回路図はKicadで作成しました。2018/3/13にrev0.1に変更しました。

180313002.png

別窓でPDFの回路図(basic52)を開く

各ICのコンデンサが抜けていますが、ICに1個104のコンデンサを追加します。

RAMRo64は、ユニバーサルでROM,RAMの配線をしたくないので8KバイトのROM・RAMを搭載したボードを別に作って使用します。J2/J3はRAMRo64の代わりに32KバイトのHM62256を使用する為の切り替え様です。

RAMRo64は300milのRAMと600milのROMを700mil幅基板に搭載したボード(予定)です。今回は秋月電子さんの片面ユニバーサル基板(ブレッドボード配線パターンタイプ)を使用している関係でだいぶ大きめになっています。

180224001.png

使用するときはこんな感じなります。

180224002.png

実際の搭載は逆向きで数ピンずれます。イメージとしてください。後ろのボードはまたの機会に動作確認ができたら回路図と説明を搭載させていただきます。

 

BASIC52ボードを作らないと!

<追記2019/6/27>BASIC52用のボード SBC8052を作りました。

ブレッドボードで昔動作させたBASIC52ですが、動作確認したら動かなくなっていました。というか使い方を忘れていました。

BASIC52は、起動しても起動メッセージが出力されません。スペースを入力するとボーレートを検出して起動メッセージを出力してくれます。これを忘れていてブレッドボードからEEPROMを外したりCPUを差し替えたりバタバタしていました。

これが、ブレッドボードのBASIC52です。

180222001.png

ブレッドボードの回路図です。(LEDとコンデンサは追加してください)2018/3/13にrev0.1に変更しました。

180313001.png

別窓でPDFの回路図(basic52bb)を開く

CPUはインテルのP8052AHは高いので確かaitendoさんで購入したSTC82C52RCAT82S52を使いました。写真はSTC82C52RCです。

AT82S52はROMライターでプログラムして簡単に動作した記憶があります。STC82C52RCはROMライターが対応していなかった為苦労しましたが最終的にwebからプログラムソフトをダウンロードしてシリアルライン(USBシリアル)でプログラムしました。

動作してしまうとSTC82C52RCは、2倍速モードがありますのでROMライターも必要ないためBASIC52にお勧めです。

スペースを入力してBASIC52が38.4kbpsで接続した起動画面です。

180222002.png

そろそろブレッドボードを卒業してユニバーサル基板化しようと思います回路図はありませんがこんな感じになります。RAM用についているコネクタがICソケットを使用していないところが今回の肝です。(配線したくない大変だ)

180222003.png

ということで詳しくは、配線が終了してからになります。

BASIC52についてはBASIC52と入力して検索いただくといろいろ参考になるページが表示されます。

おすすめは、

等です。