PICのシリアル通信に悩む [アマチュア無線(自作)]
YAESUのCATはスタートビット1、データビット8、ストップビット2で、4800/9600/38400bpsの非同期シリアル。
普通のNRZ符号にてLSB Firstで送ればよい。機種毎にコマンド体系がバラバラって言うのが痛いが。
今回、PICマイコンで幾つかのCATコマンドを投げて、いわゆるリモコンを作ってみようと思い立ったのです。
で、初めてのシリアル通信を勉強しながら組んでいるのだが・・・
PICの内蔵シリアルモジュールってストップビットが1で固定なんです。
ストップビットの代わりにキャラクタ間にWaitを入れてみたけどいまいち。
適当なWaitを入れて0x00を連続で送り込むとLOCKになる(つまり、どこかのタイミングでコマンドを受け付けている)のは確認した。
データビットは8と9(パリティ付)が使える事が判り、9ビット目に1をセットするとストップビットが2相当になるんじゃないかという所に気がつきました。NRZは1がHigh、0がLowだから出来る技。Manchesterではそうはいきません。
さて、うまくいくだろうか?
使用しているデバイスはF88。
↓
↓
↓
うまくいきました。
やはり、PICのシリアルをデータ9ビットモードにして、9ビット目に1をセットしてやればWaitナシで一気に5Byte送ればOKでした。とりあえずですが、PIC内蔵クロック8MHzでシリアルは9600bpsでうまく動いています。
現在実装されているのはMODE切り替え、VFO A/B、一発周波数設定(7026 CW固定で)です。
残すはBAND切り替え、CW-SPEEDのプリセット切り替え、そして周波数のダイレクト入力。周波数のダイレクト入力はLCDが無いと使いにくそう。というのもキーチャタリングを防止するのに単純に不感時間を設けているだけなので、次のキー読みのタイミングがわかりにくいからです。キー入力が安定してからキーから指を離したタイミングで取り込むような実装が必要かも。面倒だな・・・
さて、あとは何を実装しましょう?
リクエストありますか? 出来るかどうかは判らないけど。
これでPICのUARTも送信のみだけど制覇。
なかなか難しいのぉ。
さてさて、FT-817のCATコマンドリファレンスなんていうものは無いのでしょうか? マニュアルに書いてあるのはごく一部。ほじくればEEPROMのデータも読み書きできるとか。(メモリーCHの読み書きだけじゃなく)
だれか知りませんか? 特にバンド切り替え(周波数設定じゃなくて)とか。
HRDの出力をストレージオシロでキャプチャして解析する手はあるけど、DSO持っていないんですよね。あとは別PCにシリアルをパラ接続して横取りキャプチャするか。EEPROM情報を読み取って送っているなんてことしていたら面倒かも。というのも、シリアルの受信はまだ実装できていません。受信系もうまくできるかな・・・
http://www.ka7oei.com/ft817_meow.html
バンド切り替え、と言うよりは周波数の直入力する方式しか書いてありませんが。
羨ましいなぁ。昔6303とH8のアセンブラでUARTを使っていた事はあるのですが、もう知識は古くて記憶はセピアで・・・。
by Hoz (2009-04-27 23:50)
あ、失礼。これは知っていた様ですね。
読解力もセピアになってしまった。
by Hoz (2009-04-27 23:53)
ほほぉ。やはりバンド切り替えはEEPROMが関係しているようですね。
EEPROMからデータを読み取って、VFOに周波数を直入力する感じなのかな?
それにしても危険な臭いのするコマンドがいくつか。ヘタするとRIGが死んじゃいますね。特にFactory Resetコマンドあたり。EEPROMを叩く前に、全データを吸い出すソフトを作ってからじゃないと危険すぎる感じ。
Hozさん、良い道しるべになりました。TKS!
by sawada (2009-04-28 00:10)
私も欲しいのがあるんですよね.作ったらお見せします.さて,いつになるかな?笑
by ocr (2009-04-28 01:14)
ダミーロードの次は何かな?
期待していますヨ。
詳細は15日にでもお聞かせ下さい。
by sawada (2009-04-28 01:17)
シリアル通信、読んでて懐かしくなりました。
8251とか6850とか7201とか、、
プログラムを書いた記憶があります。
大昔の話です。
817コマンダ、いいですね!
お手軽移動では、P.C持ってHamRadioDeluxe
ってわけにも行かないし、
by gich (2009-04-28 08:41)
2ストップビットはこれまで使う用が無かったため、考えたこともありませんでした。ムズいです。
リクエスト:
Sメーターを情報源に、受信電力をdBm表示するものなんてかっこよさそうです。
その機能を拡張させれば、バンドスコープもどきも。
面白そうな作品になりそうですね。
その前に、私もFT-817欲しい!。
by WPJ (2009-04-28 08:53)
今でもシリアルは現役ですよ。I2Cバスなんてシリアルだし、殆どの機器無いで走ってますからね。PCからは9ピンCOMポートが消えましたが、USBなんかよりアマチュアがいじりやすく捨てきれません。
そういえば初めてシリアルをきちんと触ったのは、SHARPのMZ-2000に8251でシリアルポートを製作増設したときかな。一部アセンブラで書いて、メインはBASICでターミナルソフトも組んで、PC-VANとかNIFTYにアクセスしていました。通信速度は300bps。
あれでコンピュータのハードウエアをかなり理解できたし、Z80のアセンブラも覚えました。アセンブラっていってもツール無しのハンドアセンブルですよ。ノートにニーモニック書いて16進のマシン語に翻訳して。
20数年の歳月を経て、今またアセンブラで遊んでいます。私、Cとかの高級言語は全然ダメなんです。センス無いから。ハードウエアに近いアセンブラが判りやすいです。唯一扱える高級言語はVerilogかな。全然ソフトじゃないですけど。
dBm表示って電界強度計かな? 標準アンテナも作らなきゃ。FT-817をメジャリングレシーバーに仕立て上げちゃうとか。S値の読み出しとかもCATでできます。でも、その校正ってどうする? SG無いよー。
完成しても使わないんだろうなー。いつものことだけど。
技術的に克服することが最大の楽しみだったりします。趣味も仕事も。
by sawada (2009-04-28 09:31)
実は私も少し前から似たような(ちょっと違う)ものを考えてました.部品は購入してあるのですが,例の件とK2が片付いてからと思い,構想のみです.15日にでも.
by BJB/ひがし (2009-04-28 09:45)
ちょっとプチコメ.dBm は電界強度より電力の単位で使われることがほとんどだと思います.高いSGがなくても一度どこかで基準をとっておいて,あとはステップアッテネータを使ってどうにかするのがいいと思います.買うと高いので,一応それ用の基板を起こしましたが,まだ作ってません.苦笑
by ocr (2009-04-28 14:55)
デムパもとい電波関係の技術者には常識でした。フォローTKS。
dBmVってあまり使わないから。と、言い訳してみるハードさん。(笑)
by sawada (2009-04-28 21:57)
sawadaさま
初めまして。
ネットでリモートパッドを探しているうちにここへたどり着き、内容がおもしろく(変な意味ではなくてです。)、ブログのほとんどを読みました。
二三お聞きしたいことがございます。もしよろしかったら、メールを頂けませんでしょうか。私のメールアドレスは、uss.shioh@ぐぐるです。
どうぞ、よろしくお願いします。
kittyhawk←(この前まで横須賀にいた船名からつけました。)
by kittyhawk (2013-04-27 15:50)