2012年7月10日火曜日

セラロックでRammyAVR=安く仕上がる

ちょっとご無沙汰してますが、メガドライブ最強ツールSweet RammyのハイスピードなRammyAVRでセラロックが使えないかな、と。

今までのRammyAVRでは水晶発振器だけを使ってきましたが、値段が高かったり、クロックによっては入手が難しかったりします。

クロック発振デバイスは色々ありますが、RammyAVRで使うことを考えた場合の選択筋としては、

RammyAVRCER0

上の3種、左から水晶発振器(オシレータとかクリスタルとか)、水晶振動子(クリスタルっていうとこちらが一般的?)、セラミック振動子(所謂セラロック)が妥当かな?

(水晶振動子やセラロックのコンデンサが入ってないタイプ(足2本)の場合は22pF~27pFのコンデンサが2つ必要)

クロック精度的には右肩下がりな感じで、セラロックは水晶と比べるとクロック精度が落ちるようです。

んが、値段的には水晶と比べて数分の1~十数分の1ととっても安く、秋月電子で扱ってる村田製作所本家のセラロックの16MHzは1個40円、YIC社製だと20円で済みます(笑

16MHzであれば入手も楽だし、これが使えたら安上がりだよね、ってことで試してみることに。

因みに、16MHz以外の対応するセラロックの入手は難しいかも、ってか、あるのかも調べていないが(ぉ

で、無の状態から製作しようかとも考えたんだけど、一番最初に作ったRammyAVRの基板見たら簡単に追加できそうだったから手抜きしたw

PICT7419

ピンソケット4個並んでる内の中2個は未使用だったので、ソコに追加配線をするだけで済んだ。

RammyAVRPCBCER

YoGirlさんとこから拝借して回路の変更箇所を描くと上のような感じ。

ATmega88の未使用だった10pinを使う事になります。

ただし、このままではAVRのクロック指定が合わないので、フューズも変更しなければいけない。

(プログラムは変更無し)

RammyAVRCR

変わるのはLowbitだけ、0xE6にすればOK。

AVRSPなどで2進数での指定であれば、

avrsp.exe -FL11100110 –FH11011111

として書き込めばいい。

んで、実際通信状況はどうなのかですが、時間が無いのでセーブデータだけしか試していませんが、57.6kbpsと115.2kbpsで数回読み書きしましたが、データ化けはなく、動作的には問題ないみたい。

FlashROMの読み書きはまだやってないので、試したらここに追記予定。

ってことで、取り合えずセラロックで一応問題無さそうであれば、RammyAVRはかなり安く出来上がりますよ、ということで。

【追記】

Rammy(ver.0.11)+セラロック16MHz(115.2kbps設定)+Flashカートリッジ(AM29F040B×2)を使い、Rammy(ver.0.11、サイズ64K)自身を書き込んだ結果、データ落ち&化けは無く、正常に書き込めることを確認できた。

が、以下の例もあるのでセラロックの16MHzで作ろうとしてる人は参考にしてください。

【補足】

セラロックの16MHz載せたRammyAVRとノートPC(USB→シリアルケーブル)で試したところ、読み込みはこれ書いてる時点で問題無さそうですが、書き込み時に必ずデータ落ちする現象が確認できました(汗

ってことで、セラロックの16MHzの動作だけに関しては、少なからず使用するPCの環境に依存するかもしれません。

っても、RammyAVRで対応している他の周波数のセラロックって、少し探したけど無いんだよなぁ(^-^;

【補足2】

更にテストでシリアル付きPC2台で試したところ、セラロック16MHzで問題無く通信できている様子。

もしかすると使用するUSB→シリアルケーブルによってデータ落ちが起きる可能性があるのかもしれません。

【補足3】

YoGirlさんのコメントにて、秋月で扱ってるProlific社のPL2303を使ったUSB>シリアル変換ケーブルは、高速通信するとデータ落ちするバグがあることがわかりました。

よって、ほぼ確定でこのケーブルの仕業じゃないかな、と確定したいなぁ(ぇ

実際、違うUSB>シリアルケーブルで試した結果、8Mbit(1MByte)の読み書きを正常にできています。

ので、私の中ではセラロック16MHzは有効と思ってるけどどうでしょう(笑

.

ところで、YoGirlさんの夢の中に私が出没してしまったようでw

それは多分、私がアキバ行きたいなぁ、と最近考えてるから思いが伝わったのでしょう(笑

8 件のコメント:

YoGirl さんのコメント...

どうもです。w
16MHzだと少し同期がズレる & セラロックで更に少し同期がズレる で2重苦になってしまいますが、相手 (PC側) のサンプリング精度が高ければ、結構耐えられるみたいです。
セラロックは周波数がかなり温度依存だから、冷蔵庫や直射日光の当る場所で動かして見ると「同期が合わない」を体感出来るかもしれません。w

そしてひさいぶりにラミーをバージョンアップしました。 0.11です。

ぽんRev さんのコメント...

お久です~(^-^)

ウチでは16MHzのオシレータ+115.2kの環境でも今までエラーらしき事は出ないから・・・運がいいのかしら(^-^;
違うPCでも試してみなきゃですねw
しばらくはセラロックで安定動作するか確認してみることに。

でもってVerUPお疲れ様ですm(_ _)m
0.11の為に私もソケット版作ろうとしてたのですが、まだ作れてません(^-^;
なるべく早く作って体験させていただきます(笑

ぽんRev さんのコメント...

あら?
どうも0.11のバイナリはそのままでは動かないっぽい予感(^-^;

どうも0x8000h以降のデータがリンクされていないようです。
とりあえず0.10のデータくっつけて起動させることはできましたが、正常な動作をするか定かではないので、お手数ですが確認していただけると助かりますm(_ _)m

ぽんRev さんのコメント...

でもって0.11での動作を軽くテスト。
AM29F040B×2直付け基板+セラロック16MHz(115.2kbps)でテストした結果、ちゃんと1個づつ正常に書き込むことができました(^-^)
とりあえず0x2000だけだけどw

で、セラロック16MHz(57.6kbps)+ノートPC(USB>シリアルケーブル)で試したところ、書き込み時にデータ落ちすることが確認できました(^-^;
読み込みは大丈夫っぽいですが。
う~ん、やっぱり16MHzは環境依存するのかな~
・・・補足書いとこ。

YoGirl さんのコメント...

コメントが長いと弾かれる様な気がしたから、
こっちに書いてみました。w

http://68000.web.fc2.com/sram.html

ぽんRev さんのコメント...

ちょっと気になって、オシレータ16MHzのRammyAVR+ノートPC(USB>シリアルケーブル)で試したところ、57.6kと115.2kのどちらの速度でも不安定になりました(^-^;
場合によってはオシレータでもセラロックでも転送が正常に終了する事があるみたいで・・・

ってことは・・・と、次にマザボにシリアルが付いたデスクトップPC×2台で試したところ、今のところセラロック16MHzの57.6k、115.2kのどちらともデータ落ち&化けは出ないってことにw
(各5回、8KByteの読み書き)

つまり、おそらくノートPCで不安定だったのは、使用したUSB>シリアルケーブル(因みに秋月のもの)が原因の可能性もあるかなぁ、と。

実験台が少ないので断言はできないですが(^-^;
現状そんな感じで、時間ができたら232RLのUSB>シリアルで試してみないと。

RammyAVRにプログラマー内蔵化楽しみにしてます~(^-^)

YoGirl さんのコメント...

ふとPL2303 (秋月のUSB-RS-232ケーブル) ってデータ落ちするバグがあった気がするのを思い出して調べて見たら、やっぱりバグでした。

1. 115.2kbpsではバッファにゴミが残る。
2. DTR/DSRによるハンドシェークが無効になる。
http://blog.goo.ne.jp/nikonikopan/e/4e485fde2882228eca82e504a342273b

ぽんRev さんのコメント...

わざわざ調べていただいてありがとうございます~

ってことは、このケーブルはRammyAVRには不向きってことで確定ですね。

今もまた違うPCで試したりしてましたが、秋月のPL2303な変換ケーブルだけやっぱりダメでして、コメ頂いて納得しました(^-^)