オッサンのゲームに纏わる奮闘記です。
寒中お見舞い申し上げます。
随分と更新をサボっていました。
Twitterとかあると、中々まとめて記事にするのが億劫になってしまいます。困ります。

さて年末年始に自分も掃除をしていたのですが、何かのプロトタイプなどに使用するつもりだったようなパーツがいっぱい出てきました。
atmegaall1.jpg
Atmegaが多くて、色々考えていたんだな〜とか思ったのですが、よく見てみるとAtmega88が3つもありました。
atmegaall2.jpg
せっかくなので何か作ってみようと考え、「そう言えば以前のメガドライブパッドの変換がModeボタンが出力できない状態だった」ということを思い出しました。
値段がやすいということでAttinyで作成したため、ピンが足りずにそういう形になったのですが、Atmega88が150円でAttiny2313が230円という逆転のような価格になっていました。
#最大動作周波数が違いますが、普通に使う8MHz程度であれば全然問題ない。
これならAtmega使ったほうが、ピンも容量も多いので、それで作りなおして見ました。

こんな感じ。


で、続きます。

面倒なのでAVR studio用のプロジェクトファイル、回路図のpdfをまんま上げます。例のごとくOneDriveに置いておきますので、適当にダウンロード、解凍してください。



#2016/2/6日追記
回路図中のものはAtmega328になっていますが、間違っています。Atmega88で動作します(328でも動作すると思います)。ピンは同じなので。

自分が余っていたのはAtmega88P-20PUですが、電力消費と最大動作周波数が違うだけなので、今回作成したものは、秋月で販売されているAtmega88V-10PUで問題なく動作すると思います。

FUSEビットは初期設定もので問題ありません。
一応記載するとLow0x62 High0xDF Ext0xF9です。
単純に書き込むだけであれば、MegaDrive6buttonNew->Debugの中にある、MegaDrive6buttonNew.hexを書き込んでください。

回路図を参考に作成いただければ動作すると思います。
ボタン押下でLが出力されます。

メガドライブのパッド側のピンは以前のパッド変換のブログ記事を参考ください。
念の為ですが、ライセンスは2条項BSDライセンスにします。
私的使用、営利使用を含めて制限は全くありませんが、すべての発生した事案に対してこちらは無保証かつ免責されるものとします。

ちょっとだけ解説します。
ソースを見てもらうとわかると思いますが、何も考えずにパッド側へSelectの信号をL、Hと交互に出力すると、AVR側が速すぎてパッドからの出力をうまく所得できませんでした。
そのためにDelayを100usで適宜挿入しています。
これでSelectの信号をL,Hと1回変化させるのに400us+コード処理分の時間経過をさせています。
パッドの動作を解析された方の記事から1.1ms以内に2回立ち上げる必要があるようですので、後はこれを繰り返して処理しています。
#適当すぎ

自宅にあったパッド2個とも問題なく動作しましたが、中にはタイミングが合わず動作しないパッドもあるかもしれません。
その場合はソース中の_delay_usのところの数値を適当に弄ってみてください。

では〜
スポンサーサイト

管理者にだけ表示を許可する
http://kitahei88.blog.fc2.com/tb.php/136-26862e51
この記事にトラックバックする(FC2ブログユーザー)
// ホーム //
Powered By FC2ブログ. copyright © 2017 レトロゲーム漫遊記 : episode2 all rights reserved.
最新記事
最新コメント
最新トラックバック

プロフィール

kitahei88

Author:kitahei88
dtiblogが閉鎖されたため、こちらでお世話になります。
ただのオッサンです。

オッサンのつぶやき

カテゴリ
月別アーカイブ
検索フォーム

リンク
RSSリンクの表示
ブロとも申請フォーム
QRコード

QR