STC89C52 書き込み 失敗編 [マイコン]
手元に8052BASICボードがあることと、以前、AT89C52にBASIC52を書き込んで動かしたことがあるので、今度はSTC89C52にBASIC52を書き込んでみようとしました。それにしても、情報は無いですね。
とにかく、手持ちのROMライターはどれも対応していません。
情報は、専用ソフトを使い、シリアル経由で書き込めるとのこと。
ならば、その専用ソフトはどれか、シリアルラインのつなぎ方がわかれば書き込めるはず。
tomi9jpさんが書き込まれていますので、できるはず。
ここが本家のようですが、中国語。
とりあえず、CH340Gボード経由で繋いでみることにした。
ソフトは、
stc-isp-15xx-v6.86L.exe
で、WinXPのノートを引っ張り出してきてインストール(コピーだけだったけど)した。
しかし、ソフトは、CH340Gを認識していますが、CPUを認識しているようには思えない。
水晶は、11.0592MHzで発振しています。
ソフト上ではちゃんとMCUをSTC89C52にセットしました。
あと、何が必要なのだろう。
追記
STC-TOOL.PDFによれば、CH340Gを使う場合、TxDにダイオード、RxDに300オームの抵抗を入れる事になっている。やってみたけど、変化なし。
それから、書き込みボードの電源を入れると、21ピンになにやらパルスが出ます。
さらに、ソフトからMCUチェック等通信を行うと、5ピンだったか6ピンに方形波が出ます。
書き込み済?生きていることには違いないのかな。
手持ちのZ280 [マイコン]
「SBC6809Eアダプタ」作ってみました。 [マイコン]
写真の通り動きました。
今回も参考にさせていただきました。ありがとうございます。
https://sbc738827564.wordpress.com/2018/03/17/sbc6809e%e3%82%a2%e3%83%80%e3%83%97%e3%82%bf%e3%82%92%e4%bd%9c%e3%81%a3%e3%81%9f/
工夫したのは、PICの出力ピンを変えました。裏返しますから、反対側が良いだろうと。
なので、Qは、2ピンから、Eは、3ピンから出ています。
失敗は、瞬間接着剤で止めたのですが、つけすぎたのか、ソケットの足が4つふさがってしまい、気づかず挿入して、足を曲げてしまいました。
針でコリコリ穴を開けて何とかなりました。現在、接着は外れています。
でも、半田付け時は、接着していた方が作業はしやすいです。
後は、写真で判断してください。
結果
未確認だった、HD63C09EPを動かして見ました。全く動かないもの1つ、Eボードでたまに動くもの1つと言う結果でした。
全く動かないものは、どちらのボードでも脈すらありませんでしたので、不良品決定です。
これ、たまに動く63C09EPのとなりにあったので、Eであった可能性は高いと思います。
結局、手持ちの09に偽造品はありませんでした
その後
手持ちのHD63B09Pが動かなかった(実は只の接触不良)ので、ebayでHD63B09Pを買ったところ、偽装のEタイプでした。CMOSではありましたが。
普段利用しているAliでは偽装に当たったことがありませんので、店舗によるように思います。
6309<->6809のチェックだ [マイコン]
HD63C09Eを動かす ちょっとやってみた [マイコン]
SBC6809ボードが届いたので、部品を取り付け、Eタイプかためしてみた。
発振器がブレッドボード外付けなので、どうも接触が悪いみたいで不安定です。
発振周波数を1MHz程度にして、
MC38B09EP 1個
HD68B09EP 3個
HD63C09EP 2個
全部動きました。これらは国内でだいぶ前に購入したものです。
あと、昨年Ailで買ったHD63C09EPが少々ありますが、しまい込んでいるので後で確認します。
ついでにHD63C09EPで発振周波数を上げてみました。
10 PRINT "A"
20 GOTO 10
これをRUNさせます。
発振モジュールは現在最大で15.9MHz程度なので、EQはその1/4で3.97MHzです。
で、最大でも動くんですね。その状態で、CTRL+Cで止まりました。
ただし、リセットしても立ち上がりません。
ちなみに、MC68B09EPは、EQが2.9MHz以上になると、BASICの行番号が解釈できなくなります。
絵の上の方は、周波数を上げすぎた時、少し下げると、動いているようですが、行番号が・・・、
下が、2.9MHzの時でした。
手元に、63B系がないのでもう一つ不確定ですが、
EQの周波数が3.2MHz程度で動けばC、動かなければBではないでしょうか。
なお、まえに動かなかった68B09P,63B09Pもためしてみましたが、オシロを当ててみても、脈すらありませんでしたので、不良品確定です。
追記
実のところ、この結果は68B50の影響を無視しています。これがボトルネックの可能性があるかもしれません。
発振器がブレッドボード外付けなので、どうも接触が悪いみたいで不安定です。
発振周波数を1MHz程度にして、
MC38B09EP 1個
HD68B09EP 3個
HD63C09EP 2個
全部動きました。これらは国内でだいぶ前に購入したものです。
あと、昨年Ailで買ったHD63C09EPが少々ありますが、しまい込んでいるので後で確認します。
ついでにHD63C09EPで発振周波数を上げてみました。
10 PRINT "A"
20 GOTO 10
これをRUNさせます。
発振モジュールは現在最大で15.9MHz程度なので、EQはその1/4で3.97MHzです。
で、最大でも動くんですね。その状態で、CTRL+Cで止まりました。
ただし、リセットしても立ち上がりません。
ちなみに、MC68B09EPは、EQが2.9MHz以上になると、BASICの行番号が解釈できなくなります。
絵の上の方は、周波数を上げすぎた時、少し下げると、動いているようですが、行番号が・・・、
下が、2.9MHzの時でした。
手元に、63B系がないのでもう一つ不確定ですが、
EQの周波数が3.2MHz程度で動けばC、動かなければBではないでしょうか。
なお、まえに動かなかった68B09P,63B09Pもためしてみましたが、オシロを当ててみても、脈すらありませんでしたので、不良品確定です。
追記
実のところ、この結果は68B50の影響を無視しています。これがボトルネックの可能性があるかもしれません。
HD63C09Eを動かす(前)実験 [マイコン]
HD63C09Eを動かすには、外部クロックが必要です。同じ作るなら発振周波数を変えるようにすれば、BとCがどこまで使えるか、わかるのではないかという淡い思いもあります。
と言うことで、用意したのが、発振器が秋月電子のLTC1799使用オシレーターモジュール(I-01569)です。
これ、1KHzから30MHzまで発振します。今回は、1MHzから15MHzまでにしています。
この信号をGAL(実際は、ATMELのATF16V8Bだけど)でEとQの信号を作ります。(今回、使用言語はABEL、開発環境は、ispLEVERを使いました。というか、ABELなら少しわかるので。)
この部分で元発振の1/4になります。
(写真、フォーカスが手前のジャンパーワイヤーに合ってしまいました。)
クロックは写真のようになります。
これを見て、クロックの電圧が低いなあ、と思われるでしょうね。
でも大丈夫、実験に使った電源は寿命の尽きたニッ水電池4個分、この時点で2.4Vしかありませんでした。
さあ、次は基板の改造だ。
63C09P 68B09P [マイコン]
4ICs, Z80 homemade computerその4 CP/Mが動いた [マイコン]
CP/Mが動きました。写真は、書き込み中に写しました。
LEDがカラフルですが、これ、ダ○ソーのクリスマスイルミネーションをばらして取り出しました。
書き込みに参考にさせていただいたのは、こちらです。
https://sbc738827564.wordpress.com/2018/01/18/z80-mbc%e3%81%a7cp-m%e3%81%8c%e5%8b%95%e4%bd%9c%e3%81%97%e3%81%be%e3%81%97%e3%81%9f/
さらりと書かれていますが、書き込みするファイルが8つあり、そこそこ時間がかかります。
1つのファイルをアップロードするのに約20分、SRAMに書き込むのに1分少々かかります。
私は、夜中に始めたので、途中で電源を切り、翌朝に続きを書き込みました。
再開後、もう一度、iDisk - S250317.hexをアップロードし、iDisk – Intel-Hex Disk image Loaderが動いてから、続きのファイルをアップロード、書き込んで行きました。
それから、メニューは、USERスイッチを押している間に、RESETスイッチを押し、USERスイッチを離すと出てきます。
4ICs, Z80 homemade computerその3 なんとか動いた [マイコン]
実は、こちら
https://sbc738827564.wordpress.com/2018/01/16/z80-mbc4chipz80%e3%83%9c%e3%83%bc%e3%83%89%e3%81%8c%e5%8b%95%e4%bd%9c%e3%81%97%e3%81%9f/
を参考に試行錯誤しました。
しかし、arduinoは使い慣れていないので、わからないことばかりでした。
それでも何とか、ブートローダーを書き込み、S221116_R100218_Z80.inoを書き込むところまで来ました。
ところが、しばらく書き込んだ後、エラーと出ました。えーーー、なんでーーー。
どこかで間違えたのか、別の方法を考えてみよう。
ふと、arduinoIDEに「コンパイルしたバイナリを出力」と言うメニューがある。
やってみるとHEXファイルが2つできている。
これをTL866でATmega32Aに書き込めないか。cnifigデータは、すでにATmega32Aにブートローダーを書き込んでいるので、それと同じにすればよいはず。
2つあるHEXファイルのどちらか、たぶん、bootloaderと書いてある方がメモリサイズに合うので、こちらでしょう。
これをブランクATmega32Aに書き込み、ボードにセット。
Teratermと繋いでみる。あれ、文字化け。じつは、IDEからの書き込み時、DTRがあるという理由から、CH340Gインターフェースを使っていました。これをそのまま使っていました。
これを秋月TTL-232R-5Vに変えてみると、動きました。
試しに、先ほど書き込みエラーとなったATmega23Aに交換してみると、動きます。
たぶん、そのエラーは、書き込み終了後、リセットして、もう一度アクセスしようとしたら繋がらなかったと言うエラーだったのでしょう。たぶん、元々のブートローダーは書き換えられたのでしょう。
それが証拠に、S221116_R100218_Z80.inoのバイナリを生ATmega23Aに書き込んだだけで動いたのですから。
これで、先達の皆さんとは違う方法で動かしたと言っていいのかな。