忍者ブログ
ようこそ!JQ2RVNのブログです。 PICを使っていろいろな物を作ろうと画策中です。
[1] [2]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

PIC Packet Monitorつくってますが、きっちりデコードしてくれません。

ゼロクロスの検出にコンパレータの割り込みを使っているのですが、
割り込みが発生しまくってます。

割り込んだ時にトーンが高いか低いかをシリアルで送るようにしてデバッグしているのですが、
無信号のときでも低いのがずらーーーっと続くようです。

ノイズが乗っかってるのでしょうか??

信号を拾った時には、ちゃんとHighやらLowやら送ってくるので、
動作はしているみたいなんですけどね~


ブレッドボードに組んでるのが悪いのかしら?
確かに、挿してある抵抗とかを触ると、信号が来た時のような動作をするけど・・・


とりあえず、土日でユニバーサル基板に組んでみます。


そうそう、ひとつ気がついたことが。
プルアップの設定をFALSEにしてら、割り込みが少なくなった。
I/Oピンのブロックダイアグラムをみると、ANSELが1になっていたら、
プルアップされないことになってるんだけど・・・・
謎です。hi....
PR

PICでTNCを作るのが目標ですが・・・
まずはその前段階として、
パケットをモニターするデバイスを作成していきたいと思います。

 


 



本日はその予備実験として、
シリアル(RS-232C)にて、データをPCに送る方法を行いました。

というのも、PICはPIC12F683を使用する予定なのですが、
これにはUART機能が付いていないので、
ソフトウェア的に作らないといけないからです。

なら、CCS Cの組み込み関数があるのでは?
という声もあるかもしれませんが、
この関数は、割り込みなどを使わずに作成されるので、
処理中は他の作業ができません。


したがって、割り込みを使って処理をする必要があるわけです。


 


 



まずは、回路なのですが、
それほど難しいものではないので回路図は省きます。

単純に、GP0(7ピン)を、シリアル端子の受信データピンにつなげればOKです。


つぎにソフトウェア的なところ。
ポイントは、RS-232Cの信号は0と1が逆だということ。
ですから、データの流れ的を、ロジックICの論理で書けば、
 0 → 1(スタートビット) → (データの反転8ビット) → 0(ストップビット)
 となります。


ここさえ注意すれば、特に問題はないはずです。



一応、ソースもあげておきます。
単純にAからZまで送り続けるだけです。

ソースファイル

 


 



簡単と言いたいところだったのですが、何か所か躓きました。


・ スタートビットが異様に短い

これはTMR0の割り込みフラグのクリアを忘れていたからでした。
レジでいえば、INTCON.T0IFです。

put_byte()関数が呼び出されるまで、Timer0はフリーランをしています。
つまり、かなりの確率でT0IF=1になってますから、
enable_interrupts( INT_RTCC );とした瞬間に割り込みが入ってしまいます。
ですから、スタートビットが短くなってしまったわけです。

この解決策が、clear_interrupt( INT_RTCC );です。

なお、割り込み処理のときは、コンパイラが自動的にクリアしてくれるので
ユーザー側は意識する必要がありません。

それが却って、クリアし忘れというバグを作ってしまったわけでした(汗




・PICKit2のUART機能で、うまく受信ができない

単純な話です。
PICKit2へは、反転しない状態で送らないといけません。
PICKit2の設計上は、PICとレベル変換IC(MAX232など)の間から
信号を拾うことになっているはずですから。
でも、この単純な問題に気付くのに、2時間くらい使ってしまいました(泣


ちゃんと通信できているところ。あー感動したw
↓↓↓

d841ad1ajpeg

あとの細々としたことは、後日ということで!



忍者ブログ [PR]
カレンダー
02 2024/03 04
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
プロフィール
コールサイン:
JQ2RVN
性別:
男性
自己紹介:
PICの開発を勉強中です。
目標はPICTNCの高性能版を作ること。
まずは、本家を解析しています。
最新コメント
[04/23 Eolande]
[04/16 太田和巳(JF2UJG)]
[09/10 je7ifp]
[08/06 JQ2RVN]
[08/03 OVC]
最新トラックバック
バーコード
ブログ内検索
アクセス解析