ななしのさんのDMR-C1解析ページに刺激され、イマサラではありますが買ってみました。
これは東芝のICレコーダに繋げるC-MOSイメージセンサで、10万画素あります。
似たようなもので、H"に付けるTrevaというものもありますが、
画素数が少ないので、少し物足りないです。
もう少し(・∀・)イイ!物があれば‥と思っていたところ DMR-C1 を見つけました。
これもTrevaと同手順で画が取得できます。
とりあえずクロックを注ぎ込んであげると、無事にヘッダを見つけることができました。
肝心のデータ転送‥
ななしのさんの解析によると、DMR-C1から1バイトを取得するとき44usecかかるとダメなようです。
なので、画を取り込みながら遅いボーレートで送ると取り込みに失敗します。
確かに、試しに115200bpsで送ってみたら、DMR-C1からデータを読んだ時にオールゼロになってました(;´Д`)
取り込みながらリアルタイムで送る場合、460,800bpsじゃないと間に合わないとのこと。
しかし、PICのソフトUARTでできるのか疑問‥
そもそも、使っているRS-232Cドライバは120Kbpsまでしか対応してませんでした。どっちにしろ無理ってことですね(;´Д`)
シリアルじゃなくてUSBにすればいいのかもしれませんが(;´Д`)
いつになったら画を拝めるんだろう(;´Д`)
現在の構想
1. DMR-C1からデータ取得
2. データの取得と同時にSRAMへ保存
3. 1〜2を、一枚の画像サイズ分繰り返す
4. 3が終わったら、データをPCへ転送
SRAMの接続に関しては、4MBitだとアドレスバスに19本+データバスに8本+制御線といった、かなりのポートを必要とします。
これだけポートを占有されるときついので、SRAMへのアドレス指定はカウンタICを使用します。
このカウンタICは74HC393で、一つのパッケージに4ビットのカウンタが2つ入っています。
ということで、19bitのアドレス指定には、このICを2.5個分使うことになります。
この方法ならば、PICからのアドレス指定はカウントアップ+カウンタリセットの2本で済みます。
久々に秋葉へ逝ってきました。
若松通商の2Fで、4MbitのSRAMと、アドレス指定用のカウンタICも一緒に購入。
うーん。SRAMは3200円でした(;´Д`)
512KBytesでこの値段(;´Д`)
とりあえず簡単な回路を組んでカウンタを試してみます。
PICから送るクロックが速すぎると、正常にカウントアップされません。
5μ秒のウェイトを入れると無事に動作。
202752回のカウントアップは1.5秒ほど。これならDMR-C1も大丈夫そう。
作業できる時間が6時間あったにも関わらず、イマイチ進んでません(;´Д`)
基板にPICを配置して、メモリバスとデータバスの接続して‥
とりあえづPICだけ単体で動かしてみると、うまくポートが機能してない‥(;´Д`)
汎用I/Oポートとピンが兼用になっている内蔵モジュールが有効になってるのが原因なのか‥
普通のディジタルI/Oポートとして機能してない感じ。
まずは基板にRS-232CドライバICをつけて、単体テストしてみる。無問題。
次にSRAMを繋いで単体テストしてみる。が、PICへISPで書き込めなくなる問題が発生‥
ISP用のピン(ポートBの6番と7番)をSRAMへ繋いでいたのですが、どうもこれが悪さをしている模様。
ISPのとき、SRAMが負荷となっていたようです。
苦肉の策というか小手先の対策で、ISP書き込み時には、トグルスイッチを使って物理的にSRAMを切断するように修正(;´Д`)
SRAMへの書き込みテスト。
ひたすら0x00〜0xffまでの値をループで書き込んで、その後に読み込んだデータをシリアルで送信してみます。
見た感じ、うまくいっている模様(;´Д`)
ちなみにソフト的にウェイトを入れる必要はありませんでした。
で、完成した基板‥(コレはちゃんとしたデジカメで撮った写真です)
左からRS-232CドライバIC、PIC16F877、SRAM、カウンタIC×3、です。
全てのICがTTLで動作するので、ほとんど外付けパーツはありません。
基板の裏面‥(コレもちゃんとしたデジカメで撮った写真です)
VCCとGNDくらいはパターン配線して、あとのメモリ関係は線材で配線しました(;´Д`)
汚いの一言に尽きます(;´Д`)
やっとのことで取り込みに成功しました。
実際の画像はこんな感じ。
(クリックで拡大)
さて、さすがにTrevaとは桁違いです。
とはいえ最近のデジカメに比べたら画素数が少ないですけど。
まあ、Webページにピンポイントで入れる写真などには使えるかな‥‥
dmrc1.c CCSコンパイラ用
Trevaと共用できるような感じで書いてますが、Trevaのほうを有効にした場合にTrevaで正しく動くかは妖しいです(;´Д`)
回路図は後日。
ソースをみて想像してください(;´Д`)