【AVRソフトウェア】
前作と同じくAVRを使用した。今回はメモリー等を搭載するため、ATiny2313でBASCOM-AVRを使用して開発するには容量不足である。アセンブラーで開発すればいいのだが、BASCOM-AVRを一度使ってしまうともう戻れない。ATmega48を使うこととした。最近は秋月でATmega88が安く入手できるのでそれでもいい。BASCOM-AVRはデモ版ならば48までは十分使える。最近円高のおかげでBASCOM-AVRの正規版が安く買えるのでこの際購入されてはいかが。私は買いました。
受信機(無線機)で使用するソフト技術としては、
・ シリアル制御(PLLやDDSの設定)
・ スイッチの取り込み(MODE切り替え等各種設定)
・ ロータリーエンコーダの読み取り(周波数等UP?DOWN)
・ 接点出力(バンド情報出力など)
・ アナログの取り込み(Sメータ)
Config Portc.0=Output :mega48ポートC0出力に設定TC9256の(3)pin period
Config Portc.1=Output :mega48ポートC1出力に設定TC9256の(4)pin clock
Config Portc.2=Output :mega48ポートC2出力に設定TC9256の(5)pin data
Dim Com01 as Byte
:TC9256のPLL書込みコマンド上位4bit(1Byteは8bitであるが4bitのみ使用)
Dim Com02 as Byte
:TC9256のPLL書込みコマンド下位4bit(1Byteは8bitであるが4bitのみ使用)
Dim PLL1 as Long:TC9256の分周数データ
Dim PLL2 as Byte:TC9256のモード、分周ステップ、水晶数端数
前作と同じくAVRを使用した。今回はメモリー等を搭載するため、ATiny2313でBASCOM-AVRを使用して開発するには容量不足である。アセンブラーで開発すればいいのだが、BASCOM-AVRを一度使ってしまうともう戻れない。ATmega48を使うこととした。最近は秋月でATmega88が安く入手できるのでそれでもいい。BASCOM-AVRはデモ版ならば48までは十分使える。最近円高のおかげでBASCOM-AVRの正規版が安く買えるのでこの際購入されてはいかが。私は買いました。
受信機(無線機)で使用するソフト技術としては、
・ シリアル制御(PLLやDDSの設定)
・ スイッチの取り込み(MODE切り替え等各種設定)
・ ロータリーエンコーダの読み取り(周波数等UP?DOWN)
・ 接点出力(バンド情報出力など)
・ アナログの取り込み(Sメータ)
・ アナログの出力(VCO、リットの制御)
・ カウンタ(周波数カウンタ等)
・ 表示(液晶、LED等)
・ メモリー(VFOメモリ、等の記憶)
これくらいが作れればほぼ問題ないと思う。1度作ってしまえば、それをアレンジして拡張できる。
またBASCOM-AVRではこれらの制御用コマンドがほとんど用意されている。だから止められない。
今回は、エキスのみをご披露する。なぜなら全体は恥ずかしくて見せられない。どうしてもといわれるお方がお見えならホームページの掲示板等でご連絡ください。
【TC9256PLL制御】
これは前作と基本的に変わらない。再度解説する
TC9256の制御は24bit2組のシリアルで行われる。PLLの設定は24bit1組で行われる。これにTC9256の書込み設定アドレス(d0H)を加え32bitを連続で送出することにより設定される。
まずは、これに使用するポート、変数を用意
・ カウンタ(周波数カウンタ等)
・ 表示(液晶、LED等)
・ メモリー(VFOメモリ、等の記憶)
これくらいが作れればほぼ問題ないと思う。1度作ってしまえば、それをアレンジして拡張できる。
またBASCOM-AVRではこれらの制御用コマンドがほとんど用意されている。だから止められない。
今回は、エキスのみをご披露する。なぜなら全体は恥ずかしくて見せられない。どうしてもといわれるお方がお見えならホームページの掲示板等でご連絡ください。
【TC9256PLL制御】
これは前作と基本的に変わらない。再度解説する
TC9256の制御は24bit2組のシリアルで行われる。PLLの設定は24bit1組で行われる。これにTC9256の書込み設定アドレス(d0H)を加え32bitを連続で送出することにより設定される。
まずは、これに使用するポート、変数を用意
(以下:以降はコメントです)
Config Portc.0=Output :mega48ポートC0出力に設定TC9256の(3)pin period
Config Portc.1=Output :mega48ポートC1出力に設定TC9256の(4)pin clock
Config Portc.2=Output :mega48ポートC2出力に設定TC9256の(5)pin data
Dim Com01 as Byte
:TC9256のPLL書込みコマンド上位4bit(1Byteは8bitであるが4bitのみ使用)
Dim Com02 as Byte
:TC9256のPLL書込みコマンド下位4bit(1Byteは8bitであるが4bitのみ使用)
Dim PLL1 as Long:TC9256の分周数データ
Dim PLL2 as Byte:TC9256のモード、分周ステップ、水晶数端数
それぞれの変数に設定数をセット
Com01=&B00001101
:TC9256のPLL書込みアドレスd0H(2進数で00001101)の「d」
Com02=&B00000000
:TC9256のPLL書込みアドレスd0H(2進数で00001101)の「0」 この部分は後で解説
PLL1=12600
:例えば周波数126MHzで10KHzステップの場合、分周数は12600となる
PLL2=&B1011010
:使用水晶4.5MHz モードFML ステップ10KHz 詳しくはデータシート参照
:TC9256のPLL書込みアドレスd0H(2進数で00001101)の「d」
Com02=&B00000000
:TC9256のPLL書込みアドレスd0H(2進数で00001101)の「0」 この部分は後で解説
PLL1=12600
:例えば周波数126MHzで10KHzステップの場合、分周数は12600となる
PLL2=&B1011010
:使用水晶4.5MHz モードFML ステップ10KHz 詳しくはデータシート参照
ここまで用意ができたらいよいよPLLへ書込み。書込みにはshiftloutコマンドを使用する
Set Portc.0 :period ON
Set Portc.2 :data ON
Set Portc.1 :clock ON
Reset Portc.0 :period OFF
Shiftout Portc.2 , Portc.1 , Cm02 , 2 , 4 , 1
:portcの2にデータをLSBから4ビット送出。Shiftoutのモードは立ち下がりエッジでLSBから送出。この部分はデータシートとBASCOMのリファレンスヘルプで勉強してください。
ここでなぜ4ビットのみの送出かというと。TC9256へ32bit送出する際、最初の8bit以内にperiodをHigh(ON)としなければならない仕様となっているためである。そのため管理しやすいように4bitで1度区切っている。そのためcom01,com02と分けている。このあたりはデータシートとにらめっこである。もっとも苦労したところである。そこで次の行でperiod ONとしている。
Set Portc.2 :data ON
Set Portc.1 :clock ON
Reset Portc.0 :period OFF
Shiftout Portc.2 , Portc.1 , Cm02 , 2 , 4 , 1
:portcの2にデータをLSBから4ビット送出。Shiftoutのモードは立ち下がりエッジでLSBから送出。この部分はデータシートとBASCOMのリファレンスヘルプで勉強してください。
ここでなぜ4ビットのみの送出かというと。TC9256へ32bit送出する際、最初の8bit以内にperiodをHigh(ON)としなければならない仕様となっているためである。そのため管理しやすいように4bitで1度区切っている。そのためcom01,com02と分けている。このあたりはデータシートとにらめっこである。もっとも苦労したところである。そこで次の行でperiod ONとしている。
Set Portc.0 :perood ON
Shiftout Portc.2 , Portc.1 , Cm01 , 2 , 4 , 1 :アドレスの上位4bitを送出
Shiftout Portc.2 , Portc.1 , Pll1 , 2 , 16 , 1 :分周数データを送出
Shiftout Portc.2 , Portc.1 , Pll2 , 2 , 8 , 1 :TC9256の設定値を送出
Set Portc.1 :clockをHighにしてperiodをOFFにして書き込み終了
Reset Portc.0
Shiftout Portc.2 , Portc.1 , Cm01 , 2 , 4 , 1 :アドレスの上位4bitを送出
Shiftout Portc.2 , Portc.1 , Pll1 , 2 , 16 , 1 :分周数データを送出
Shiftout Portc.2 , Portc.1 , Pll2 , 2 , 8 , 1 :TC9256の設定値を送出
Set Portc.1 :clockをHighにしてperiodをOFFにして書き込み終了
Reset Portc.0
以上である。理解できただろうか?
機会があれば、各種シリアル制御(DDS,PLL、シリパラ変換等)について整理して掲載します。
次回はメモリー関連を予定
写真は今使っているAVR開発用ボードです。