明日から、緊急で出張になったのでその準備で色々忙しく、ゆっくり検討ができなかったのですが、気になっていたSi570をAVRでI2C制御してみました。
勿論、言語はBASICです。
結果としては、動かせることがわかりましたが、Si570のドキュメントには、制御仕様が簡単にしか書いてなく、周波数の書き換えの所は試行錯誤の末、うまくいきました。
他にも方法があるのかもしれませんが、とりあえずこれで任意の周波数が設定できます。
Si570自身は小さいICですので、ひっくり返してDIP8Pinに変換しました。
マイコンは、秋月で¥100のATTiny2313を3.3Vで使用しています。これは、Si570が3.3V動作のためです。
マイコンのクロックは、内蔵の8MHzを使用しました。
I2Cのスピードがどの位になっているのかは見れていませんが、200KHz〜400KHzの間だと思います。
周波数設定のための一連の制御が、ラフに1mS位で送れているようです。
仕様書によれば、周波数変更のための時間は10mS以内にするように規定されています。
今回てこずったのは、手順として、DCOをフリーズして、周波数を設定し、その後NewFreqを送信するように書いてあるのですが、NewFreqを送る前に、FreezeDCOを解除して、NewFreqを送ると書き込んだ周波数が設定されるようになりました。
約1mSで書き換えられていますので、エンコーダーでの周波数可変に十分追随できるスピードです。
とりあえず、設定した周波数は7MHzです(^o^)
実験の写真でマイコンが2個写っていますが、隣は関係ありません。
BASCO-AVRのプログラムは以下の通りです。
各レジスタの値を変えることによって周波数の設定ができます。
実際には、このレジスタの値をエンコーダー等で変えるようにプログラムを作る必要があります。
Si570の基本制御はこれでOKですので、自分で作ろうとされる方には、十分な情報となるかと思います。
実機に搭載するのはいつことになるやら.....
Dim I2cad As Byte
Dim I2cdata As Byte
Dim I2creg As Byte
Ddrb = &B1111111
Portb = 0
Ddrd = &B111111
Portd = 0
Config Scl = Portb.0
Config Sda = Portb.1
Config I2cdelay = 1
I2cinit
I2cad = &HAA
Main:
I2creg = 137
I2cdata = &H20
Gosub I2cdatatx
I2creg = 7
I2cdata = &H7A
Gosub I2cdatatx
I2creg = 8
I2cdata = &H42
Gosub I2cdatatx
I2creg = 9
I2cdata = &HDA
Gosub I2cdatatx
I2creg = 10
I2cdata = &H47
Gosub I2cdatatx
I2creg = 11
I2cdata = &HED
Gosub I2cdatatx
I2creg = 12
I2cdata = &H46
Gosub I2cdatatx
I2creg = 137
I2cdata = &H00
Gosub I2cdatatx
I2creg = 135
I2cdata = &H40
Gosub I2cdatatx
Wait 1
Goto Main
I2cdatatx:
I2cstart
I2cwbyte I2cad
I2cwbyte I2creg
I2cwbyte I2cdata
I2cstop
Return
2.4Gのトランシーバを作るべく親機(430)が
やっと完成しました。
あとは2.4の送信ブロックの完成です
ローカルのOMさんに2.4で電波を出してもらって何とかクロスバンドQSOは出来ました。
なんか最近は、より高い周波数にシフトして
います
阿部
コメントありがとうございます。
そうですね!UHFの方に移られてるようですね!
当局には、まだまだ実力がありません。
Si570は高い周波数も出せるものがあるので
UHFの局発もダイレクト化が可能かもしれません。
とても面白そうなデバイスですね。
今、秋月DDSをAVRで制御して、局発を作っています。
オリジナルな回路ではありませんが、9逓倍して、FM受信ユニット(アイテック製)に入力して、144MHz帯の受信に成功しました。
(感度はあまりよくありませんが・・・)
このデバイスを制御できれば、バッファ回路などを搭載して、局発としての安定を図れば、逓倍回路なしでVHF帯の局発として使えそうですね。
I2Cの制御をしたことはありませんが、ネットで調べて実際に実験してみたいと考えております。
貴重な情報ありがとうございます。
そうですか、AVRで秋月DDSを制御して2mのRXですか!
9逓倍との事、面白そうですね!
Si570だと直接発振させられますが、制御の仕方がまだつかめていません。
単発の発振制御ができただけです。
最近、ちょっとばかし本業が忙しく、手が回っていません。
もし検討され良い結果がでたら教えてくださいね!
しんいちです。
本業が忙しいとのこと。また、お時間ができましたら、レポート楽しみにしています。
I2Cはやったことがないので、勉強のための教材をWEBで探しているところです。
秋月DDSの方は、これもWEBで説明されているサイトで勉強して、なんとか出来ました。
しかし、浮動小数点?演算のところで躓いていますが、なんとか、受信しております。
(20KHzステップの箇所で躓きました)
前々からマイコンを使った工作がしたかったのですが、AVRは簡単に導入ができ、すばらしいと思います。
2mRXのことは、当方のブログへそのうちアップしたいと思います。
それでは、失礼します。