アマチュア無線や電子工作,バイクの話などを徒然なるままに書き散らすメモ程度のblogです.


by jq1ocr

たたいても動かない猫

CAT を使いたいので,Tiny13A で組んでいますが,無線機側に何の反応もありません.00000 も通らないので,何か見落としがあるのではと思うのですが,こんなところでつまづいています.うーむ
[PR]
Commented by BWT at 2010-10-13 00:26 x
817かな? Bugかはわかりませんが仕様通りじゃないところがあります。
PICでCATした実験結果があります。確か上位ビットをマスクしないとNGでした。いつもLOCKになるとか、モード読みだしでおかしい場合は、使っていないビットをマスクしてみてください。

実際にCATした実験結果があります。はSTOP BIT-2ってのはご存じですよね?
PICにはSTOP BIT 2のモード設定がないので、9ビットモードにして、最下位ビットを0だか1にして、ストップビットが見た目2ビットになるようにして動いています。
Commented by BWT at 2010-10-13 00:37 x
追伸。CAT BUGについて確認してきました。
現在のモード取得する場合ですが、モードと周波数を問い合わせるコマンドを送った後に返ってくるコードですが、CWとCWRだけデータが1ビット短く返ってきます。8ビットじゃなくて7ビットになっています。
よって、ビットがずれるので、コード受信後の処理がおかしくなります。
これに気がつくまでは大変でした。ストレージオシロが無かったので、何度も何度も目に焼き付けて、1ビット短いことを発見しました。
ちなみにFT-857DMです。

あと、コマンド送信は5バイト一気に送ります。
スタートビット(1)、データ(8)、ストップ(2)を5組。隙間無く送出します。
Commented by jq1ocr at 2010-10-13 00:42
817です.上位ビットをマスクするとは具体的にはどういうことでしょう?例えば f-lock の場合 0x00 0x00 0x00 0x00 0x00 と送ればいいですよね?このとき具体的にどのように送るのでしょう?

ちなみに Tiny13A は UART はないので,プロトコル自体を自分で書いてます.スタートビットは1つで Low,ストップビットは2つで TTL High にしてます.送ってる0のデータは全部 High です.

取説通りにいけば,常時 TTL high で,1.1458ms ごとに Low を継続時間 104us で入れれば,0 を連続で送ってることになると思うのですが....(9600bpsの場合)タイミング間違ってますかね?
Commented by jq1ocr at 2010-10-13 00:44
問い合わせて戻ってくるのは今は見てません.今は一方的にコマンドを送りつける部分だけ書いていて,それが動いてないので止まっているのです.
Commented by jq1ocr at 2010-10-13 00:49
具体的にはLHHHHHHHHHH(一つのLまたはHは104us.このセットが1バイトの0を送ることに相当)を連続して5回送っています.何も送ってないときはずっと H です.
Commented by BWT at 2010-10-13 23:08 x
「マスク」はRIG本体からのレスポンスに対する加工でした。
コマンド送信ですが、スタート1、データ8、ストップ2の11個送っているので合っていますね。あとはタイミングか。
もしかして、UARTモジュールを使わずにタイマーでタイミング作っていますか? 速度は104usでほぼ合っていると思うけど。

アセンブラソースを確認しましたが、5バイトを連続で送ってます。間は特に開けていません。(CPU動作周波数の数クロック分は空くと思うけど)
LHHHHHHHHHHの後に少しwaitかけて、2バイト目を送るとどうでしょうか? 動作している基板の出力タイミング、後で見てみます。基板、見つかるかな・・・

PICのアセンブラソースじゃ、送ってもしょうがないですよね。
作ったのは、マトリクスキーを押すと、規定の周波数やモードに切り替えるって言う簡単なプログラムです。CATの実験です。
Commented by jq1ocr at 2010-10-14 00:32
一つ目のコメントに書いたように UART は Tiny13A にはないので,自分で書いてます.マニュアルにはバイト間の間を開けるようにとは指示されていない(というか,そのための stop bit ですし)ので,そのままくっつけてます.オシロで見てますが,AVR のクロックもあげているので,タイミングは計算通りになっています.

328 でやれば少し手抜きが出来そうですが,28pin では大きすぎますしね.なんでかなぁ.もしかして 817 が壊れているなんてオチはないだろうなぁ.苦笑
Commented by egv at 2010-10-15 11:40 x
FT-817側は、9600bpsになってます?
Commented by jq1ocr at 2010-10-15 12:08
なってますよ
Commented by egv at 2010-10-15 12:12 x
シリアルポートのあるPCに接続してみて、データが正しく受信できるか確認ですね。
Commented by jq1ocr at 2010-10-15 16:54
そんな PC がうちにはないの知ってるよね.笑 もちろんオシロでは波形確認してる.なんかつまんないポカミスだと思うんだけど,なんだか分からないんだよなぁ.そもそも分かったらしないけどさ.苦笑
Commented by BWT at 2010-10-15 21:55 x
TxとRxをテレコにしていたこともあるけど・・・
Commented by jq1ocr at 2010-10-16 00:01
間違ってないと思いますが,一応両方で試験済みです.
Commented by egv at 2010-10-16 12:14 x
Tiny13AとFT-817は、直結ですよね?FT-817側は、RS232Cとか書いてありますから、1=0V,0=5V(かな)で試してみるのも手かな。
Commented by jq1ocr at 2010-10-16 13:04
817 の I/F は TTL で,±12V とかじゃないから tiny13A とは直結してるよ.もちろん1=GND で,0=+5V.というか,もしかしてこれが逆なの?
Commented by egv at 2010-10-16 13:16 x
あってるような。無信号時に0Vだから、 0V -> 5V -> 5V -> 5V ... -> 0V -> 0V ですね。-3Vぐらいまで引っ張らないとだめかな?
Commented by jq1ocr at 2010-10-16 13:52
>0V -> 5V -> 5V -> 5V ... -> 0V -> 0V

ん?ここの意味が分からなかった.スタート1,ストップ2で 0x00 をひとつおくるとき
0 5 5 5 5 5 5 5 5 5 5
[V]でいいんだよね?
ストップビットは1(0V)を二つじゃなくて0(5V)を二個だよね?
ちなみに -3V まで引っ張るのを試すには回路をいじらないといけないなぁ.PICで直制御している人がいるから,そういうことはやってないような気がするんだけど.
Commented by egv at 2010-10-16 14:00 x
スタートビットが5Vだからストップビットは0Vです。0Vを2回ですね。通常0V、そこから5V,5V,5V,5V,5V,5V,5V,5V,5V,0V,0V。
Commented by jq1ocr at 2010-10-16 18:43
なるほど.マニュアルの書き方が逆なんだ.家に帰ったらやってみるよ.宇宙経由(笑 あ,違ったっけ?)でアドバイスありがとう.
Commented by jq1ocr at 2010-10-17 21:11
試してみたけど,動きませんでした.残念.
Commented by BWT at 2010-10-18 09:44 x
私はPICで何も特殊なことはしていません。UART機能をそのまま。
ストップビット2だけ気にして、あとはそのままレジスタに放り込んで出しているだけ。
直結なので、MAX232Cのようなトランシーバーもかましていません。
極性もそのまま。よって、RS-232Cとは論理は逆です。
RS-232Cは+12/-12、CATは0/+5という関係です。

違うコマンド送ってみたら?

Commented by egv at 2010-10-18 11:53 x
今は、宇宙ではなく、光ファイバでインド経由。次は...、CATの仕様を読むと、デリミタが無いかわりに、1コマンドを200mS以内に送信するように書いてあります。ということは、間違った信号を送っても、200mS以上置けば無視されるということですよね。Tinyの電源をいれた後、ポートを出力に設定、0Vにして200mS以上(400mSぐらいか)待った後、5Vを936uSと0Vを208uS、これを5回繰り返してみるのは、どうでしょうか。
Commented by jq1ocr at 2010-10-18 14:24
>澤田さん
UART使ってると言うことは,処理を PIC に任せてるわけですよね?tinyの場合はそれが出来ないので,その辺の処理も全部自分でやらないといけないのです.他のコマンドももちろん送ってみていますが,そもそもコマンドの送り方に問題があるのだと思っています.もうちょっといじってみます.

>egv
今はインド経由なんだ.大分太くなった?ちなみにそのタイミングのやつ書いてみる.
Commented by egv at 2010-10-18 14:50 x
FT-817のACC端子の信号は、RS232Cではないんですね。
Tinyの電源投入後、OUTPUT,5Vにして400mS待ち、その後0V936uS(Lを9回)と5V208uS(Hを2回)を5回繰り返しですね。
Commented by WPJ at 2010-10-18 15:09 x
作る時の苦労に比例して、作品への愛着が高まります。
ただいま、愛着性向上中なわけですね。

私はCATな無線機を持っていないので、お話に参加できず残念です。と思ったら、FT-900があるのを忘れていました。帰宅したら、FT-900をいじってみよっと。
Commented by jq1ocr at 2010-10-18 17:29
>egv
了解.やってみるよ.

>WPJ
猫いじり,いろいろ教えてください.hi
Commented by jq1ocr at 2010-10-19 01:52
400ms 待つというのがどうもコンパイラのバグなのかうまく動いてなかったけど,あとの部分を egv の書いてくれたとおりにしたら動いたよ.ただ複数のコマンドを入れるときにディレイをかますと,その部分は意図しない動きになるのがよく分からない.とりあえずディレイは控えめにして,モードを変えるとか別のコマンドも入れてみたけど,ちゃんと動いた!はるばる遠いところからありがとう >egv hi

で,次のステップにいこうとしてるけど,どうもこれはうまくいかなそうだということが分かってきていて,進むかどうかわからない状態.というわけで,愛着を持ったところで終了しそうな雰囲気です>wpj 苦笑
by jq1ocr | 2010-10-12 02:08 | マイコン・電子工作 | Comments(27)