なかなか苦しんでいたAVR版SDカードインタフェースですが、ファイルのデータ読み込みまで動作させることに成功しました。
結局outの割り込み(INT1)の最後でペンディングしているin割り込み(INT0)を解除し、かつステータスデータをINT0割り込みで出すようにすることでタイミングが取れるようになりました。
データの入力はinを連続させて取得できるようにしているので、こちらも動作タイミングが重要です。 AVRによるSDカードからのオンデマンド1バイト読み込みには、現在のところ80クロック強かかっているので、Z80側はそれに合わせて読み込ませま す。 現在使っているAVRは8MHz動作なので、約4MHzのZ80では1バイトあたり40クロック強かけることになります。
なお、現在の設計では、クロックポートを空けてあります。 そのため、ATmega88を使えば、外部クロックで20MHz駆動が可能なので、その場合は16クロック強/バイトということになり、INIRなどを使った連続読み込みも可能になるかと思います。
まだ読み込みデータの取りこぼしなど細かいところをチェックしていませんが、10kB/sec以上は出ています。 最適化はまだ行っていないため、今後ロジックを詰めることにより高速化が可能です。
ジョイスティックポート版がおよそ2kB/sec(CRT KILLで4kB/sec)なので、やはりかなり高速化しますね。
それと、FATの処理をAVR内部で行っているので、Z80側のプログラムは非常に小さくなります。 ルートディレクトリのファイル読み込みだけなら1kB以下の容量でプログラムできます。
匿名
画面が真っ暗、でもカーソルは出てる状況。
探して、ここにたどり着きました。
パスワード入力で、復活!
修理に出す寸前でした。ホントにありがとう!