久々の更新。
PIC-CDC でI2C通信インターフェースが順調と思いきや不具合発生。
データを数バイト一括で送信もしくは受信するとデータの欠落が起きている。
・・・・ガーン。
I2C の通信が終わりきっていないうちに次の通信が行われようとしているのではと思われるが・・・・。
もしくはデバイスが悪い。
まあ、後者はないだろうとして
とりあえず1バイト送信ウェイトかます。で対応しているが何とかしないとね。
2010年08月03日
2010年05月27日
原因見つけた〜
ようやく原因つかめたよ。
結局USB の認識問題と同じメモリーバンクの問題でした。
メモリーバンクを同一になるようにしたら起動前から接続してもブルーバックにならなくなりました。
ただ起動前からつなげておくとクラッシュするけど起動後に接続したら問題ないと言うのは原因不明。
昨日は問題ないと思っていたwin7 / linux の環境でも今日もう一度試してみたらダメだったし。
微妙なタイミングとかが影響していたのかな。
意外とコツがいるなぁ
これでようやく一段落。
あとは複製を作るだけ〜。
結局USB の認識問題と同じメモリーバンクの問題でした。
メモリーバンクを同一になるようにしたら起動前から接続してもブルーバックにならなくなりました。
ただ起動前からつなげておくとクラッシュするけど起動後に接続したら問題ないと言うのは原因不明。
昨日は問題ないと思っていたwin7 / linux の環境でも今日もう一度試してみたらダメだったし。
微妙なタイミングとかが影響していたのかな。
意外とコツがいるなぁ
これでようやく一段落。
あとは複製を作るだけ〜。
2010年05月25日
問題衝突〜
とりあえず接続も安定してくれるようになったのだが問題発生。
PIC−CDCをPCに接続したまま起動するとはじめの通信でクラッシュする。
どうやら読み取るタイミングでクラッシュしてくれるのだが原因がわからない。
起動後に接続すると問題ないのだが・・・。
ブルースクリーン 0x0000001E KMODE_EXCEPTION_NOT_HANDLED
これって無効なポインタ、無効なアドレス、その他のアクセス違反などらしいので起動時に何かゴミデータが送信されてオーバーフローでも起こしているのか?
さてどこを直せばいいのやら・・・。
PIC−CDCをPCに接続したまま起動するとはじめの通信でクラッシュする。
どうやら読み取るタイミングでクラッシュしてくれるのだが原因がわからない。
起動後に接続すると問題ないのだが・・・。
ブルースクリーン 0x0000001E KMODE_EXCEPTION_NOT_HANDLED
これって無効なポインタ、無効なアドレス、その他のアクセス違反などらしいので起動時に何かゴミデータが送信されてオーバーフローでも起こしているのか?
さてどこを直せばいいのやら・・・。
2010年04月15日
量産タイプのrev0完成。
2010年04月12日
PIC18F2550 のAD変換基準電圧。
認識も先日のファーム改善で問題なく動作してくれている。
ぼちぼち量産向けにということでケースに収めるところまで完了。
だけどあと一つ。
a/d変換の基準電圧の問題。
USBからの給電をベースにしていてはマシンによりけりで安定性が悪い。
かと言ってレギュレータをつかうにしては5V -> 4.096V 約1Vのドロップ電圧は小さすぎる。
今手元にある LM317 のレギュレータではちょっと厳しい。
仕方ないのでトランジスタで作るかと思ったが少スペースかできない。
ツェナーダイオード手元に5.1V これじゃダメ。良さげな電圧だと2Vの直列で選別するか。と色々と調べていたらあるもんですね。4.096V の基準電圧用のIC(ダイオード)。
とりあえずRSオンラインで LM4040AIM3-4.1 を 5個発注。
さて、届いたら回路を作らなきゃ。
完成したらファームと回路図アップする予定です。
ぼちぼち量産向けにということでケースに収めるところまで完了。
だけどあと一つ。
a/d変換の基準電圧の問題。
USBからの給電をベースにしていてはマシンによりけりで安定性が悪い。
かと言ってレギュレータをつかうにしては5V -> 4.096V 約1Vのドロップ電圧は小さすぎる。
今手元にある LM317 のレギュレータではちょっと厳しい。
仕方ないのでトランジスタで作るかと思ったが少スペースかできない。
ツェナーダイオード手元に5.1V これじゃダメ。良さげな電圧だと2Vの直列で選別するか。と色々と調べていたらあるもんですね。4.096V の基準電圧用のIC(ダイオード)。
とりあえずRSオンラインで LM4040AIM3-4.1 を 5個発注。
さて、届いたら回路を作らなきゃ。
完成したらファームと回路図アップする予定です。
2010年04月07日
PIC動作不安定のナゾはすべてとけた。ホントかい
PIC18F2550 を使ってD-In/Out A/D-In I2C マスター CCB バス送信のできるインターフェースを作成していたのだがどうも不安定でした。
初期タイプ(以前の写真のやつ)はかろうじてリセットボタンを押しながらケーブル挿入で認識してくれていた。
量産タイプとして秋月電子の基板ASSYタイプを使おうとしたのだけどこれがまた全然動いてくれない。
同じファームを書き込んでもウンともスンとも・・・。
ソースを色々いじってみたけど全然分からない。ちょっとマシになったかな?と言う程度。
で、仕方ないのでUSB プロトコルアナライザを入手して調べてみた。これが結構おもしろい。こんな通信してるんだと言うのが確実に分かる。
そんなわけで、解析結果はDeviceDescriptor 通信の DeviceID まではきちんと送信していた。
続いてConfig が・・・通信できていない。原因はこれか。
ということでその部分のソースを色々眺めていたのだけどやっぱり全然分からない。
SourceBoost のPIC-C を使っているのだけどウェブで検索してみるとほとんど情報が・・・結局、応答速度をできるだけ早くとか言う情報ぐらいしか入手できず。
何だろな〜と思いつつアセンブラ出力を見てみた。
??変数の格納バンクが違う。
もしかしてということで何とかして同一バンクになるように宣言しなおしたらすんなり認識。
送信文字も化けずに送れた。そういうことね。
ということで多分原因はここだろう。
保存アドレス(バンク)を指定することはできないのかな?
初期タイプ(以前の写真のやつ)はかろうじてリセットボタンを押しながらケーブル挿入で認識してくれていた。
量産タイプとして秋月電子の基板ASSYタイプを使おうとしたのだけどこれがまた全然動いてくれない。
同じファームを書き込んでもウンともスンとも・・・。
ソースを色々いじってみたけど全然分からない。ちょっとマシになったかな?と言う程度。
で、仕方ないのでUSB プロトコルアナライザを入手して調べてみた。これが結構おもしろい。こんな通信してるんだと言うのが確実に分かる。
そんなわけで、解析結果はDeviceDescriptor 通信の DeviceID まではきちんと送信していた。
続いてConfig が・・・通信できていない。原因はこれか。
ということでその部分のソースを色々眺めていたのだけどやっぱり全然分からない。
SourceBoost のPIC-C を使っているのだけどウェブで検索してみるとほとんど情報が・・・結局、応答速度をできるだけ早くとか言う情報ぐらいしか入手できず。
何だろな〜と思いつつアセンブラ出力を見てみた。
??変数の格納バンクが違う。
もしかしてということで何とかして同一バンクになるように宣言しなおしたらすんなり認識。
送信文字も化けずに送れた。そういうことね。
ということで多分原因はここだろう。
保存アドレス(バンク)を指定することはできないのかな?
2010年01月29日
配線修正〜。
2010年01月28日
PIC18F2550を使ってみた。
とりあえずPICを使ってみよう。と思ったきっかけは、
Windows2000 以降のwindows はハードウェアを直接制御が難しくなった。おまけにパラレルポートが今のPCには無い。
制御が難しく、レガシーなくなる傾向だしUSB でDigital-I/Oができる何かお手軽なの無いかなと探したけど結構値段が。
そんななかPIC マイコンを見つけたのが数年前。
こいつを RS-232C で制御してインターフェイスを作っちゃえと考えて実行。他のマイコンでもよかったのだが。値段とかお手頃だったのでね。
とりあえず、秋月電子でPICライターとPIC を買って準備。
開発言語にはアセンブラ。CCS PIC-C があったけどこれが結構高い。アセンブラ面倒だなぁと思いつつコネコネやってるところへ
SourceBoost でお手頃価格のCコンパイラを発見。
これはいいやと、とりあえず購入。
初めはRS232C で制御できるPICを買って色々やってみようかな〜と思っていたところへUSB ハイスピード対応の PIC18F2550 /4550 が登場。
USB いいじゃん。と思いさっそく2550 を購入。しかし、USB。ハードルが高かった。
とりあえずサンプルの8の字マウスは成功したけどこれじゃ使えない。
やっぱりCDC だなとCDC のサンプルを試してみると認識したりしなかったり。何なんだろうと思っていたが銅テープをペタっとUSB の配線の上に張り付けるとまあ安定した。
コネクタからPIC まで3cm 位なのだが、どうやらノイズを拾いやすい配線になっていたようでCDC のハイスピード設定にはついていけなかったようだ。
う〜ん。さすがハイスピード。試作機なので仕方ないが次は考えないといけないようだ。
さてここからインターフェイスを製作開始だ。
進行状態は、またぼちぼち上げていくことにします。
Windows2000 以降のwindows はハードウェアを直接制御が難しくなった。おまけにパラレルポートが今のPCには無い。
制御が難しく、レガシーなくなる傾向だしUSB でDigital-I/Oができる何かお手軽なの無いかなと探したけど結構値段が。
そんななかPIC マイコンを見つけたのが数年前。
こいつを RS-232C で制御してインターフェイスを作っちゃえと考えて実行。他のマイコンでもよかったのだが。値段とかお手頃だったのでね。
とりあえず、秋月電子でPICライターとPIC を買って準備。
開発言語にはアセンブラ。CCS PIC-C があったけどこれが結構高い。アセンブラ面倒だなぁと思いつつコネコネやってるところへ
SourceBoost でお手頃価格のCコンパイラを発見。
これはいいやと、とりあえず購入。
初めはRS232C で制御できるPICを買って色々やってみようかな〜と思っていたところへUSB ハイスピード対応の PIC18F2550 /4550 が登場。
USB いいじゃん。と思いさっそく2550 を購入。しかし、USB。ハードルが高かった。
とりあえずサンプルの8の字マウスは成功したけどこれじゃ使えない。
やっぱりCDC だなとCDC のサンプルを試してみると認識したりしなかったり。何なんだろうと思っていたが銅テープをペタっとUSB の配線の上に張り付けるとまあ安定した。
コネクタからPIC まで3cm 位なのだが、どうやらノイズを拾いやすい配線になっていたようでCDC のハイスピード設定にはついていけなかったようだ。
う〜ん。さすがハイスピード。試作機なので仕方ないが次は考えないといけないようだ。
さてここからインターフェイスを製作開始だ。
進行状態は、またぼちぼち上げていくことにします。