2011年6月18日土曜日

【AVR】 DDS Control Part 3

DDS-VFOの機能
 DDS-VFOのつづきだ。 ここからはプログラムによって実現した機能の話しになる。回路図を見てもわからない部分だから、どこまで伝えられるかちょっと心配だ。 これはプログラム・リストを公開したからと言って伝わるものではないそうだ。(BASCOMは簡単とは言え、誰もがプログラムを読める訳じゃない。実際、他人サマが書いたものを解るのも容易じゃないし・・)

 マイコン単独で機能が完結する「マイコン製作もの」なら機能説明も難しくないだろう。 しかし重要な部分ではあってもDDS-VFOは通信機の構成要素の一部に過ぎない。 従って、そのコントロールには通信機の機能が密接に関わりを持っている。

 このDDS-VFOの動きを納得するにはスーパー・ヘテロダイン式受信機(←リンク)の知識が必要そうだ。たぶんこうした物に興味を持つようなお方なら大丈夫。十分ご存知という前提で話しを進めさせてもらおう。

旨く伝えられれば、「便利なVFO」だとわかってもらえるに違いない。


想定のトランシーバ
 説明の助けとするために、このDDS-VFOの使用を想定する機器(トランシーバ)のブロック・ダイヤグラムを書いてみた。 受信部は局発を上側にとったシングル・スーパー、送信部はDDS-VFOのあと3段ストレート増幅だ。

 いかにもそれっぽいデバイス名が書いてあるが言わば余興である。但し、その通り作ることだってあり得るラインナップにしておいた。 探しまわる人がいると気の毒なので、近代的でポピュラーな半導体ばかりでレアなデバイスは一切使ってない。(笑)

 受信状態ではモードスイッチによって発振周波数が変化する。これは、受信モードによって実際の受信周波数と表示周波数の間で誤差が発生しないようにするためだ。スーパー・ヘテロダインの仕組みがわかれば理解できると思うが、これは重要な機能である。USB、LSB、CWにモードを切り替えても受信周波数が変化しないようにしている。

 アナログVFOの時代には受信モードごとダイヤルに3本のカーソル線を引いていた。DDSなら発振周波数そのものを補正してしまう。なお、SSB受信ではキャリヤ・センターで、CW受信ではフィルタ・センターで周波数表示される。 送信モードではCWの受信と一致させているので、フィルタ・センターと等価になる。

 混乱するかもしれないが、USBにしろ、LSBにしろキャリヤの周波数は自在に設定できる。もちろんCWモードのフィルタの中心周波数も自由に設定できる。使用するIFフィルタの都合に合わせられる。 以下、具体例でモードとDDS-VFOの発振周波数の関係を示しておこう。(ほかダブルスーパ用に表示のシフト機能もあるのでもう少し複雑なこともできるのだが、キリがないので省略させてもらった)

ダイヤル・スピード
 ダイヤルスピード、すなわち1回転あたりの周波数変化は、一つにロータリ・エンコーダの分解能で決まる。 使用したエンコーダは安価なものなのでダイヤルの1回転で96ステップしか得られない。従って、10Hzステップでは1回転で1kHzに満たない変化しか得られない。

 そうかと言って100Hzステップでは刻みが荒すぎる。CWのトーンがステップ状に変わるのを感じてしまう。それに100Hzステップでさえ1回転で9.6kHzしか変化しない。バンド内の大きな移動には不便である。

 結局、4種類のスピードに切り替えることにした。10Hz、100Hz、1kHz、20kHzステップである。最高速は100kHzステップにしたかったが、内部変数の関係で20kHzになった。それでもダイヤル1回転で約2MHz変化するからHF帯のリグなら大丈夫だろう。

 10Hz、100Hz、1kHzはセンターオフのスナップスイッチで切り替える。20KHzは押したときだけONになるプッシュスイッチを使う。この20kHzスイッチはいつでも最優先で機能する。上記ブロック・ダイヤグラムと前回の回路図を参照。

RITコントロール
 今どきのメーカー製無線機は殆どすべてが周波数シンセサイザ化されたので、交信中に周波数が変動するものなど皆無だろう。

 しかし、QRPerの多い7003kHzをワッチしていると、結構ずれて呼んでくる局や、QRH(周波数変動)する自作局もあるのが実体だ。 従って、自身の送信周波数はそのままに、受信している周波数だけを微調整するRITは未だに不可欠な機能である。
 
 RITは昔ながらの可変抵抗器を使っている。但し、すぐにA/D変換してしまいデジタル的に行なうようにした。 A/Dコンバータの分解能は10bitあるが、VRの接触状態次第で少しふらつくので感度を1/10にしている。全部で約100ステップある可変範囲において、1ステップあたり10Hzの変化として安定動作を優先した。従ってRITの操作範囲は±約500Hzである。

 この程度の可変範囲で支障ないと思うがもう少し拡大しても大丈夫そうだ。このあたりは、自在に変更しうる。メインダイヤルと同じようにロータリ・エンコーダを使う手もある。(ソフトウエアの変更を要する)

送信モードの発振周波数
 いま、ダイヤルは7000.00kHzに合わせてある。(最小表示は10Hzの桁) 送信モードにするとDDSは7000.000kHzを発振する。写真の右上は、周波数カウンタによる実測値である。この状態では「表示周波数=発振周波数」の関係になっている訳だ。 

 従って、ブロック・ダイヤグラムにもあるように、DDSの出力を送信アンプに導いて所定のパワーになるまで増幅すれば簡単にCW送信機になる。これがDDS-VFOの基本状態である。(注:実際には7000.000kHz丁度で送信するとオフバンドになる)

参考:以下いずれの写真も周波数カウンタの表示は設定値にピッタリ合っている。少々ウオームアップしてから周波数の校正を行なえばこのように良く合う。特別に撮影用の工夫をした訳ではない。DDS-VFOはクロックの水晶発振器と同じ周波数安定度が得られるのでかなり安定だ。

CWの受信モード
 上記と同じ状態でTX/RXスイッチを切り替えて受信モードにする。いま受信モードはCWである。

 想定している受信機はシングルスーパーであって、使っているCWフィルタの中心周波数は455kHzと想定している。

 従ってDDSは7455.000kHzを発振する。「発振周波数=受信周波数+IFフィルタの中心周波数」の関係だ。 なお、CW受信のためのBFOはフィルタの中心周波数から上か下に700〜800Hzくらい離れた周波数にする。 可変周波数形のBFOでも良い。


USBの受信モード
 次に、USB受信モードにしてみよう。SSB受信フィルタは中心周波数が455kHzで帯域幅は3kHzのものを想定している。USB受信するにはSSB復調器に与えるキャリヤ発振周波数は453.5kHzになるはずだ。従って、DDS発振器は7453.500kHzになる。

 「発振周波数=受信周波数+(USBの)キャリヤ周波数」と言う関係になる。

 もちろん、フィルタの特性によりキャリヤ周波数は必ずしも453.5kHzとは限らない。このキャリヤ周波数は「変数」としてセットできるから、ある程度任意に設定できる。


LSBの受信モード
 同じく、LSB受信モードにしてみよう。 LSB受信では456.5kHzのキャリヤで復調することを想定している。

 USBと同じように、「発振周波数=受信周波数+(LSBの)キャリヤ発振周波数」の関係になる。 従って、発振周波数は7456.500kHzとなる。

 USBのときと同じようにキャリヤ周波数は「変数」でセットできる。もちろんある程度任意である。

 以上、いずれもブロック・ダイヤグラムに従った説明用なので、教科書的な周波数関係になっている。 そのようになるようプログラムを初期設定しておいたからだ。 実態に合わせてプログラム的に初期値を変更できるのは勿論だ。

IFフィルタも自由自在
 以上、受信モードと発振周波数の関係を示したが、かなり自由な設定が出来る。

 写真は左からCollinsのSSB用・メカフィル、MurataのAM用・セラフィル(R)、そして自作のCW用・世羅多フィルタである。

これらは、少しずつ中心周波数がずれているので、昔のアナログVFOを使ったリグにおいては一緒に使うのはかなり厄介だった。 このCollins製SSBフィルタの中心周波数は453.5kHzである。 キャリヤ・ポイントはUSBが約452.000kHz、LSBは約455.000kHzになるだろう。 AMフィルタの中心周波数は標準的な455kHzである。一方、自作したCW用・世羅多フィルタの中心周波数は約439.4kHzである。

 このようにだいぶずれた中心周波数のフィルタを混在して使うのはアナログVFOではいささか厄介なことになる。 モードを切り替えるたびに受信周波数が大きく飛んでしまったからだ。 切換えのたびにダイヤルCALが必要なのでは実用的でない。

 しかしDDS-VFOなら支障はない。モードに従った発振周波数の補正でフィルタ周波数の違いを吸収できる。 極端なはなし、CW用は455kHzのフィルタを使い、SSB用は2MHzのフィルタを使うと言うような芸当もこなせる。 モードを切り替えても受信周波数は自動的に調整されるから、もちろんダイヤルを合わせ直す必要はない。

# こうした目的によって変える必要がある一連の「変数」はプログラム初期化部分にまとめておいたので、後々の活用も容易だろう・・・と自己満足。(笑)

DDS-ICのテスト・プログラム
 難解にならない範囲でプログラムのことも書いておこう。初めてDDS-ICを使うときは不安なものだ。いきなり複雑なものが動くのか心配になる。このプログラムは非常にプリミティブな「DDS版のLEDチカチカ」のようなものだ。(笑)

 ごく簡単で確実なプログラムで基本的な動作を確認しておけば、トラブルがあっても問題の分離が容易になる。 このプログラム・リストはあらかじめ判っている周波数データをDDS-ICにセットし、正しくその周波数で発振するのを確認するものだ。 :プログラムの転載おことわり。

 DDS制御のエッセンスを凝縮した必要最低限の部分だけでできている。 この短いプログラムが正常に動作すればマイコンからAD9834:DDS-ICへのデータ転送はうまく行っている。 マイコンもDDS-ICにも回路的な(=ハードウエア的な)問題はないことがわかる。 あとは必要な機能を実現するためのプログラムを頑張れば良い。

 なお、例示のプログラムはDDS-ICに与えるクロック発振器の周波数誤差は補正していない。従ってジャスト7000.000kHzにはならぬだろうが、せいぜい1kHz以内の誤差に収まるはずだ。 DDSの動作を受信機や周波数カウンタで確認してみる。

 もしも67.10886MHz以外のクロック発振器を使うなら、発生周波数は周波数比だけずれる。周波数の計算はごく簡単だ。(例えばクロックが50MHzなら、約5215406Hzになる)DDS-VFOを作ったら、まずはごく簡単なこうしたことから確かめることが非常に重要な一歩だと思う。 これが確かに動かぬようでは、どんな「高級プログラム」もマトモに動きはしない。

参考:このテスト・プログラムを走らせるAVRマイコンは何でも良い。但し、PortC.0にDDS-ICのFSYNC、PortC.1に同SDATA、PortC.2に同SCLKを配線する。ヒューズビットを操作しクロックは内蔵RC発振の8MHzにセットする。ATmega8、ATmega88、ATmega168、ATmega328がお薦め。 或はプログラムの必要箇所を書き換えてPortBやDを使うようにすれば、手持ちのATtiny2313やATtiny26(L)、ATtiny861Aで試すこともできる。(修正は簡単だ。方法は私に聞かず各自努力で)


DDS-ICへデータ転送・1
 写真はマイコンからAD9834:DDS-ICへデータ転送している様子だ。クロックに同期して16Bit分のデータが連続3回送られる。 BASCOM-AVRのShift outコマンドで16bitデータを簡単に送ることができる。

  開発の初期段階では、様々な原因で正常に動作してくれなかった。 回路的な問題なのかプログラムに何か欠陥があるのか、それぞれ旨く分離できなかった。 そこで、実際に送られるデータをデジタル・オシロスコープで直接観測して確認すると言った作業が必要になった。 上記のようなごく簡単なプログラムを作成し一歩ずつ確認する作業を進めて完成へと前進して行った。

 こうして観測してみると色々なことがわかる。 AD9834に一つの周波数データを送信するのに要する時間は約126μSであった。 ロータリ・エンコーダを読み込むタイマー割り込みの周期は約2mSである。従ってデータ転送には十分余裕があり、合間に周波数データの演算処理は問題なくできることがわかる。 また、2mSおきにのべつ幕無しにデータを送り続ける訳ではない。状態に変化がない限り送らぬようにしている。 一番処理時間が掛かっているLCD表示にも十分な時間を割当できているようだ。

DDS-ICへデータ転送・2
 写真はAD9834:DDS-ICへデータを送り始めた先頭の部分である。 下段のシフトクロックに同期して、シリアルにデータが送られている様子がわかる。

 X軸のカーソルで示すように、SCLK:シフト・クロックの周期は約2.4μSである。 また、画面に記入したようにSDATAの様子を見れば実際にどんなデータが送られているのかも解析可能である。

 AVRマイコンからDDSへのデータ送信が旨く行かないのなら、こうした泥臭い解析も必要になってくる。 開発の過程では何でもアリだと思ってやってみる決意こそが必要なようだ。 お陰でまたまたデジタル古城の主に。(爆)

               ☆ ☆ ☆ ☆ ☆

 MIZUHOのVFOを目標にして開発を始めた。具体的に使用機器を想定すると、様々な配慮が必要になってくる。そうした実用上のニーズもうまく盛り込むことができたようだ。

 DDS-ICにデータを送ることができ、所定の周波数で発振が確認された時点で一つのハードルはクリヤできたといえる。 しかし、実用性を高め汎用性も確保するには種々の機能を取り込む必要がある。 プログラムの基本はAD9834:DDS-ICへのデータセッティングにあるが、セットすべきデータをどのように加工するのかは各自工夫の部分だ。

 どんな構成のRigに使うのか構想を描きながらプログラム開発を進め、それが実現できるのは楽しいものだ。 完成した後でもプログラミングの範囲なら思い立ったらすぐ自在に変更できる便利さもある。そしてバグが発見されたら直すことも。hi マイコンを使ったRigの製作は自作HAM向きだと思っている。

 もちろん、いつものように以上は自身の要求に基づいた「私的な開発品」である。各人それぞれ考えが違えば要求も異なって当然だろう。 お薦めするような物ではないが、開発の過程を備忘にとどめる意味でBlogにしておいた。例によって「読み物風」になったが悪しからず。

 着手してから約1ヶ月半、あれから数えれば数年掛かってしまったがAVRマイコンを始めた自身の目標がまた一つ達成できた。これでやっと肩の荷が下りた気分である。今夜はビールが旨いぞー。 de JA9TTT/1

参考(追記:2013.05.10):AD9850搭載の中華DDSモジュールを扱った別編は:→こちら

(おわり)

2011年6月13日月曜日

【AVR】 DDS Control Part 2


高安定な可変周波発振器
 安定で任意の周波数に可変できる発振器は通信機にとって長年のテーマである。スーパーヘテロダイン受信機の周波数安定度を決めるからだ。写真はそうした可変周波発振器の例だ。良い物を知らずしてより良き物は作れない。

 左は泣く子も黙ると言われたCollinsの70H-12形VFO(PTO)である。右はTRIOのVFOでTS-130に使われたもののようだ。ほぼ同等のVFOはTS-510からTS-830の時代まで使われ、これまた歴史のある優れモノだ。

 いずれもLC発振回路を内蔵し巧みな温度補償により周波数安定度を得ていた。周波数シンセサイザ以前の時代にあって、高安定な発振器を製作するには高度な技術を要していた。


減速ギヤとダイヤルメカ
 発振回路だけでは実用にならない。十分な減速比をもったギヤメカと読み取りに必要なダイヤル機構が必要だ。

 CollinsのPTOはネジ機構を使ったコアの出し入れで周波数の微動機構を実現している。コイルの巻き方で周波数直線性を確保し、シャフトの10回転で1MHzをカバーする。

 写真のようにTRIOのVFOはエアーバリコンと減速ダブルギヤでバックラッシュを防ぎ、1kHz以下まで読めるダイヤルを実現している。周波数の直線性はバリコンの羽曲げで調整しているはずだ。いずれにしてもメカ+電気の技術で実現していた。


自作VFOも
 160m Band専用受信機のために自作したLC発振VFOである。大きな容量のエアーバリコンを使って安定度を向上させている。周波数が低く、簡略ながら温度補償もおこなってあるから安定度はかなり良好だ。

 バリコンはギヤとボールドライブで減速され同調しやすい。周波数は表示補正機能つきの周波数カウンタで読み取っている。受信周波数と表示を一致させるためにカウンタ基板にあるデジタル・スイッチで補正値を設定する。マイコン以前の昔のテクノロジーで周波数直読を実現したものである。

 こうしたVFOを自作するのはなかなか大変だ。当時は手持ちの部品があったので製作できたが、いまどき1から部品を集めるのでは大変だろう。あえて自作するなら古い無線機から部品取りするのが手っ取り早い方法かもしれない。


ミズホ通信機のVFOとは
 開発の目標としたミズホ通信製VFOユニットである。どんな物か概略わかるようCQ出版の書籍より情報を抜粋しておいた。5MHz帯のVFO-5と7MHz帯のVFO-7があった。

 ミズホのVFOは誰でも買える既製のVFOとしては唯一のものであった。アマチュアの手作りより周波数安定度に優れ、規格化されたVFOは機器の製作再現性に役立っていた。多くの自作記事で標準モジュールとして活用されてきた。

 5MHz帯のVFO-5は9MHzのSSBジェネレータと組み合わせて14MHzあるいは3.5MHzのSSB送信機の製作に使われた。VFO-7は7MHz帯のダイレクトコンバージョン受信機やQRP送信機用だろう。図の左のような初期型から周波数安定度を向上させた右の改良D型へと進化しながら長く販売された。

 しかし、良質な部品やダイヤル減速用のボールドライブなどが入手困難になり販売終了してしまった。 自作に重宝なユニットがなくなってしまったのは残念だ。これも近年の部品事情を反映したものだ。 VFOを自作しようと思っても同じような問題に直面してしまうだろう。結局、これからのVFOは近代技術で解決するべきなのだ。

 MIZUHOのVFOは登場した当時4,600円で、改良D型になってからは6,000円で販売されていたようだ。周波数安定度を確保するノウハウ・苦労や手間を考えたら十分リーズナブルな価格であったと思う。


DDS-VFO開発用基板
 写真はDDS-VFOの開発に使った基板だ。試作検討には十分だが、実用には表示器を延長し基板構造も変更すべきだろう。マイコンはATmega8を使っている。

 同じ28pinのシリーズ:ATmega88/168/328のいずれも使用できる。メモリサイズからATmega48は残念ながら使えない。またBASCOM-AVRも試用版ではコンパイル時に容量オーバーになってしまう。

 手持ちのありあわせ部品で作ったので、スイッチなど機能のみでデザインは考慮していない。実際に使う際は別の物を使おうと思う。なお、ダイヤルの早送りスイッチと、モード切り替えスイッチは写真撮影のあとで追加したため写っていない。

 肝心のDDS-ICはアナログ・デバイセス社のAD9834である。マイコンに搭載した制御ソフトはわずかな変更で他のDDS-ICに使える。なお、データ転送ルーチンを小変更するだけで秋月のDDS基板にも活用可能なように考えておいた。AVRマイコンは内部RCオシレータ(8MHz)で動作する。DDS用クロックジェネレータは67.10886MHzの水晶発振モジュールを使った。詳細は以下の回路図を参照。


DDS-VFOの回路
 なるべく簡単にするため少ない外付け部品になるようにした。しかし、多様な機能を持たせた関係でスイッチやVRがいろいろ付いている。受信機だけではなく、トランシーバに使うことも念頭におき送受回路の制御機能もある程度内蔵した。

 SSBトランシーバは複雑なので作るのは少し難しいがCWトランシーバならたいへん簡単に製作できる。受信部より簡単なくらいだ。送信モードに切り替えればDDS-VFOが送信周波数を発生するからだ。受信周波数に追従するのでトランシーブできる。従ってDDS発振器のあとに数段のアンプを設ければ簡単にQRPトランシーバ(送信機)ができる。

 一方,使用を予想する受信部もかなり様々な回路構成を考えた。オーソドックスに世羅多フィルタを使ったLA1600受信機や、数MHzの自作ラダー形フィルタを使った受信部に対応する。スーパー・ヘテロダイン型を第一に想定しているが、ダイレクト・コンバージョン受信機ももちろん可能だ。 またスーパー・ヘテロダイン受信機においては、CWあるいはSSBフィルタの中心周波数の違いを吸収できる。 帯域幅により中心周波数が移動する世羅多フィルタを含む自作ラダー型フィルタでは特に便利だろう。当たり前であるが、受信モードを切り替えても正確に「表示周波数=実受信周波数」が維持される。

 回路図にモードスイッチや送受切り替えがあるのはそうした機能のためだ。詳細はあらためて「つづき」の機能説明のところででも。

 消費電流はLCD表示器のバックライトOFFで約45mA、バックライトONでは約80mAであった。ミズホのVFO-5/VFO-7の消費電流は20mAだそうなのでその点でははだいぶ負けている。(要するに大食い・笑)

AD9834の優位性
 昨今はアナログ・デバイセス社のAD9834を採用する無線機が増えている。消費電流が少ないのでポータブルな機器に向いているからだ。しかも低コストなのも理由だろう。 より高性能・広帯域のDDSチップも登場しているが消費電流から汎用のVFOにはこれを使うのが最適だと思う。 もちろん消費電力をいとわない機器なら別のDDS-ICの方が良い。マイコンの制御ソフトはそれらにも対応できる。

 AD9834はそのかわりクロック周波数の上限は低めなので発生可能な上限周波数は低めだ。 簡易なリグならDDS出力を直接使用することになるのだが、67.10886MHzのクロックでせいぜい21MHzバンドあたりまでにするのが良い。スプリアスから考えて、クロック周波数の1/3くらいまでで使うのが良い。(特性の良いLPFを付加してクロック周波数の40%あたりまで)

 それ以上のバンドではPLLを併用する。 周波数分解能は十分あるので4倍の周波数のVCOをロックすれば良い。 50MHzバンドの無線機にはそのように使うべきだ。 DDS-ICとして下限はそれこそ1Hzでも可能なのだが、上記の回路ではおおよそ500kHzくらいまでである。

 なお、AD9834には供給クロックの上限周波数が50MHzのAD9834BRUZと75MHzのAD9834CRUZがある。かなり余裕があるらしく、BRUZでも67.10886MHzで使えるが、これから入手するなら75MHzのチップが良いと思う。そちらは100MHzのクロックでも動作すると言う。だいたい1個1,000円〜2,000円で購入できる。(2011年6月現在)


クロック発振器は良いものを
 先のBlogで扱ったが、DDS-VFOには良好なクロックを供給する必要がある。クロックに基づいたタイミングでサイン波のデータを読み出しD/A変換して出力しているからだ。

 基準が揺らいでいては出力信号も揺らいでしまう。奇麗なサイン波にならない。写真は以前販売されていた普通の水晶発振器だったころの67.10886MHzのモジュールである。右手前は同じく秋月電子通商の店頭で売られていた50MHzの小型オシレータだ。

 プログラムによる計算が簡単なので2^Nのクロックが向いている。従って67.108864MHzのオシレータが好ましい。しかし、先のBlogのように最近販売のものはジッタの多いオシレータになってしまった。

 従って、必ずしも2^Nのオシレータでなくても良いよう対策する必要ができた。当初は67.10886MHzを使う前提で開発を始めたが、秋月の事情があってから任意のクロックが使えるようプログラムを改造することにした。現在の最新パージョンでは入手容易な50MHzなど任意周波数のモジュールが使えるようになっている。 なるべく高めの周波数の方が良いが、良く見かける写真のような48.000MHzでも旨く動作する。(但し上限周波数は16MHzあたりになる)


クロック発振器には誤差がある
 上記のような簡便なクロック発振器(Simple Packaged Crystal Oscillator:SPXOとも言う)には周波数誤差があるのが普通だ。密封されたパッケージに入っており周波数の微調整はできない。そのクロック誤差はそのままDDSの周波数誤差になる。

 クロック発振器に与える電源電圧:Vccを加減すると周波数が変動するので、それを逆手にとって周波数微調整する例も見るが調整可能か否かは運しだいだろう。 定格電源電圧を大きく外れると発振振幅に影響が出るうえ発振状態も不安定になってくるので、ダメそうなら別の発振器に交換してみるしかない。

 ここではそうした不確実な手法は採用しなかった。VR1:F-ADJ(写真参照)の値をA/D変換で読み取り、それに基づいてソフトウエアで周波数調整できるようにした。即ち周波数誤差はプログラム内部で数値的に補正する。発振周波数に少々誤差があっても支障は無い。誤差補正は固定値の加減算ではなく、発生周波数を係数とした補正で行なっている。従って特定スポットの周波数だけでなく全周波数範囲で良好な精度が得られている。

 デジタル的に補正する関係でDDSの分解能以下の補正はできないが、50MHzのクロックで約0.1863Hz刻みの補正ができる。67.108864MHzなら0.25Hz刻みである。むしろ、補正しきれない残留誤差よりクロック発振器の周波数変動の方が気になるくらいだ。

 半固定抵抗器:VR1の調節なので、あたかもアナログ的な調整のような感触である。0.1ppm以下の誤差までスムースに合わせ込めるが、実用上の周波数精度はクロック発振器のドリフトしだいだ。総合的に見て校正後の精度・安定度はおおよそ1ppm程度のようであった。もちろん、アナログなVFOと比べたら比較にならぬほど安定している。たぶんCollinsのPTOよりも優秀だ。(笑)

                 ☆ ☆ ☆ ☆ ☆

 DDS-VFOのPart2では開発の目標を明らかにしハードウエア的な部分(=回路や部品の部分)を採り上げてみた。 さすがにミズホのVFOより複雑な回路ではあるがそれほどの規模でもない。思ったよりも製作は容易である。ダイヤルの減速ギヤや周波数直読などの機能を電気的に実現・解決したと考えれば妥当な回路規模と言える。製作の手間を考慮しない「部品コスト」だけで言えばミズホのVFOよりも安価である。全部品を揃えても5,000円で十分なお釣が来るだろう。 もちろんマイコンを使った製作ではプログラムも大切な要素であり、回路に魂を入れる部分だ。 次回は実現した各種の機能を採り上げ、その動きを追って見たいと思う。 de JA9TTT/1

つづく)←リンク

続編)←リンク(おなじAD9834を使った発展バージョンへリンクします)

2011年6月5日日曜日

【AVR】Modification of rotary encoders

ロータリ・エンコーダの改造
 DDS式VFOを作っている。 昔のVFOと同じフィーリングになるよう周波数はダイヤル・ノブで変えられるようにしたい。 それにはロータリ・エンコーダを使うことになる。

 写真は秋月電子通商で売っている中国製ロータリ・エンコーダだ。 クリック付き24ポジションで15度分解能のものだ。 軸の回転量に応じた数のパルスを出力するインクリメンタル型である。 初期位置の概念はなく、回転した/回転していると言う情報だけが取り出せる。 単に回転軸で接点を開閉する構造では回転方向がわからないので回転角に対し開閉位置をずらせた一対の接点が設けてある。

 操作フィーリングや、耐久性にも影響するので市販無線機ではずっと良い物が使われている。しかし、安価に何時でも手に入ると言えば写真の物に限られるようだ。 秋月電子通商では200円で購入できる。 少々チャチで壊れ易いが、何しろ安価なので我慢することにしよう。 本来はクリック付きの24ポジションである。それを接点の「変化検出式」で使い4倍の96パルス式として使う。 無線通信機にはもっとポジション数の多いものが良いのだが、4倍化することで取りあえず使い物にはなる。

 4倍の96パルス式で使うにはクリックを外す必要がある。 以下はその手順だ。 このあと、このエンコーダをDDS-VFOに使うにあたっては必須の作業になる。

分解
 4カ所でカシメてあるツメを起こすと簡単に分解できる。 シャフトに直結した接点円盤の部分と接点ブラシの部分に分解できる。 少々デリケートな部分なので円盤やブラシの部分には手を触れない方が良い。

 円盤には摩耗を防ぐ意味からグリースが塗布してあるようだ。 そのまま触れないようにしておこう。 なお、固定用のナットとワッシャを外した方が作業し易かった。 元に戻す関係から、必要以上にツメは起こさない方が良さそうだ。

クリック解除
 クリック感は接点円盤の周囲にある刻みと、写真の押しバネによって得ている。 従って、この押しバネが円盤の刻みに当たらないようしてやればクリックはなくなる。

 ドライバの先などでバネの出っ張り部分を押し込んでしまおう。 またクリック付きに戻すつもりがなければグッと奥まで押し込んで良い。 中途半端にクリックが残っても困るので良く押し込んでおくのをお薦めする。

 これだけで、クリックなしに改造できる。 クリックなしのモデルもあるだそうだが、改造は簡単なのでクリック付きの手持ちがあれば改造して使えば良い。


接点円盤
 内側の放射状にならぶ24個の電極が接点である。 反対側の接点バネの接触位置を僅かにずらせることで二相出力を得ているのだ。

 円周の周辺にある24個の歯車状のものがクリックを作る部分である。こちらは電気的な接点ではない。

 こちら側は観察のみで手を触れずにもとに戻しておこう。 改造が済んだら手順を逆に辿り、押さえていた4カ所のツメをカシメなおせば改造完了だ。 塗布されたグリースのためか回した感触は少し粘るようではあるが、スムースに回るようなら問題はない。 クリックの部分以外、内部構造に手をつけなければ失敗はないだろう。

4倍化の仕組み
 他のサイトに詳しく書かれているのでごく簡単にしておく。 いま必要なことは、どちらの方向へ回転したのかと言う情報とツマミの一回転で96段階のステップが得られるようにすることだ。

 ロジック回路的に行なおうとすると結構厄介かもしれない。 しかし、マイコン式なら容易だ。 まずは上段の右回転で説明してみよう。 いま「1」の位置にツマミがあったとしよう。 A相、B相ともに「L」である。 ツマミを回転し「2」の位置にくるとA相が「H」になり、B相は「L」のままだ。即ちLL→HLに変わったら右回転である。 おなじ「1」のポジションにあっても、左回転ならLL→LHに変化する。そのように変化したら左に回ったと考えれば良い。
 良く見ると、右回転の状態変化1→2、2→3、3→4、4→5の4種類と、同様に左回転の1→2、2→3、3→4、4→5は、それぞれユニークである。 即ち回転方向の判定は状態の前後比較により間違いなくできる。また状態変化がなければ回転軸は停止していると考えれば良い。

 マイコンを使った処理なら、前の状態を記憶し、その後の状態との比較で回転の有無や回転方向を簡単に検出できる。 このあたり、web上のサイトにもたくさん情報や事例があるので参照を。 私のプログラムでは「状態比較」の切っ掛けを一定間隔のタイマー割り込みで得ている。 もちろん、ほかの手法もあるだろう。

                  ー・・・ー

 DDS発振器は周波数データを送り込んでやれば動作する。 しかし、人間とのインターフェースは慣れ親しんだダイヤル操作が一番だ。 サムホイール・スイッチで周波数切換えするようでは実用的ではないだろう。 人の操作とDDS発振の仲立ちをするのがロータリ・エンコーダだ。

 ロータリ・エンコーダの読み込みに関しては随分前に試作済みであった。 概ね確立できた技術としてその当時のプログラムをそっくり移植して実験を進めていた。 しかし妙な飛び方をするうえ、旨く96ポジションにはならなかった。 ちょっと悩んでエンコーダのクリックを外さないとダメだったと言うのを思い出した次第。 さっそく改造して目出度く思い通りの動作にできた。 前のことをすっかり忘れてしまうほどの時間が経っていた。(笑) de JA9TTT/1

つづく)←リンク

2011年5月30日月曜日

【AVR】 DDS Control Part 1

DDS コントロール】予告編
 AVRマイコンの活用を始めたのは2006年の4月ころだったので、もう5年も経過している。 マイコン活用の二大目標は無線機用のデジタル周波数表示とDDS(←リンク)を使ったVFOの開発にあった。

 周波数カウンタの方から始め、簡易なものはかなり早く実現できた。頒布もしたので既にたくさん使ってもらっている。 その後の高機能化も要素実験はだいたい済んでいて、あとは「やる気」の問題と言ったところだ。

 一方、DDS-VFOは「秋月DDS」の制御実験までは早かったのだが・・・その後はずっと停滞してしまった。 部品もだいたい揃えたと言うのにまったく勿体ない。 放っておくと陳腐化しそうなほど時間が経ってしまっていた。 「趣味に納期はナシ」とは言っても、これは反省しなくては。(笑)

 それで、先日からDDS-VFOの仕様を考え始めていた。 当初の目標はミズホのVFO-5とかVFO-7と言ったVFOの同等品だったと思う。 ミズホのVFOは生産終了になったし、自作しようにも良質の部品は入手困難になっているからだ。 しっかりしたバリコン、減速用のギヤ・ダイヤル・メカ、ステアタイトのコイル・ボビンなど、欲しいと思っても入手は運しだいだろう。 そのあたりを今の電子部品(=マイコンとか)で解消するのが目標だった。

 休日を何回かを使って、写真のようなVFOが出来上がりつつある。作ったATmega8基板はこの目的用であった。  概ね良さそうだが、まだ纏まっていないので取りあえず予告編と言うとことで今日は写真のみ。  de JA9TTT/1

つづく)←リンク

2011年5月21日土曜日

【AVR】 ATmega8x Fuse-bit Memo

鬼門のヒューズビット?
 先のBlogではAVRマイコン基板を作成したが、ATmega8を使うのは初めてであった。もちろん、同じ系統のATmega48、168、328なら使ったことはあったのだが、なぜかmega8は初めてである。(少々賞味期限切れの感じだが、いま使わないと機会がなくなりそうで・・)

 この28pin AVRシリーズは類似点も多いので、あらかた同じで動作するのだが初めて使うなら一応データシートを見てからと言うことになる。 BASCOM-AVRは固有のチップへの依存度は低いのだがヒューズビットは個々に見ておこう。以下ヒューズビットの要点と感じたことをメモして行く。

 ヒーズビットの操作そのものは難しくはない。 写真のように今ではGUIプログラムで一発だし、BASCOM-AVRの対応ライタならプログラミング画面からも容易に操作できる。あるいはコマンド・プロンプトから文字列のキーインでやるのも難しいと言うほどではない。要するに、書き換えそのものは難しくないのだ。

 ところが、巷ではAVRマイコンの「ヒューズビット」は鬼門のように言われている。どうやらその理由は2つあるらしい。

1・とっても危険な行為:
 「ヒューズビットを下手にいじるとAVRマイコンがパーになる。怖いな〜!」、「使えなくなると怖いので触らないのが吉。素人はそのまま使うに限る」

2・説明が難解で自信が持てない:
 「ヒューズビットって良くわからん。ワタシがやりたいことに合う設定を誰かおせえて」、「ATMELのデータシートが難解で、結局どうしたら一番良いの!」

 確かに、無闇に操作するとプログラムの書込みができない状態に設定してしまう可能性がある。ISP書込みなら、リセット端子をI/Oポートに設定したらそれまでだ。ISP書込みではリセット端子を操作するのだから、それができぬ設定にしては旨くない。また、ISP書込みにはクロックの供給は必須だ。内部クロックをやめ外付け水晶発振子や外部クロックにするならそれに合わせることだ。クロックがないとAVRマイコンは無反応になってしまう。

 ヒューズビットは沢山あって細かく見るのも大変だ。しかし、よく使うのはヒューズビットLowだろう。実際それだけで困ることはほとんど無い。以下で、ATmaga8をテーマにヒューズビットLowのポイントをメモしておく。

ヒューズLowバイトの機能
 ヒューズビットは1バイト(=8bit)単位で操作する。HighバイトとLowバイトの2バイトがあり、そのうち「下位側」と称する方を良く操作する。 これはAVRマイコンが動作するクロックをLowバイト側で決めているからだ。

 また、AVRが正常に起動(スタートアップ)するまでの待ち時間もここで設定する。

 ほかに、あまり使うことはないのだがATmega8では電源電圧の低下を検出する「Brown out検出」の設定もLowバイトに含まれている。しかし必要が無ければそのままにしておけば良い。

 結局ヒューズLowバイトでは主にクロックの選択とスタートアップに関する部分がポイントだ。

ATmega8のクロック
 ATmega8の動作クロックは様々な方式から選択できる。

1・外付け水晶発振子あるいはセラミック発振子
 所定の端子に水晶発振子(クリスタル)あるいはセラロックのような発振子を接続してクロックを得る方法。一般に数MHzの周波数のものを使う。保証上限周波数はATmega8では16MHzで、最近のチップでは20MHzになっている。発振子の周波数や種類に応じ、ヒューズLowバイトの下位4bitを1111〜1010の種類で設定する。以下で詳しく説明。(クロックの周波数精度と安定性を要するとき使う)

2・特に低い周波数の水晶発振子
 同じ水晶発振子でも、特に低い周波数の発振子を外付けする方法。これは、時計用の32kHzのような周波数を言う。こうした低周波水晶発振子は数MHz〜の水晶と同条件では旨く発振できない。従って特別な設定が設けられている。ヒューズLowバイトの下位4bitを1001に設定する。(この設定はあまり使われないようだ)

3・外付けRCによる発振
 非常にラフな用途の場合、抵抗器RとコンデンサCの時定数でクロックを作ることができる。このあと説明する内蔵RC発振器では得られないクロック周波数にしたい時に使う。外付け水晶発振子やセラミック発振子より安価だが不安定だから周波数変動しても良いラフな用途に限る。ヒューズLowバイトの下位4bitを1000〜0101の種類で設定する。(一般にあまり使わない)

4・校正済み内部RC発振
 内蔵された抵抗器RとコンデンサCの時定数で発振させクロックを得る方法。外付け部品不要なので便利である。厳密な周波数精度を要しない用途に適する。発振周波数はチップ個々に補正されているので、RC発振器としては比較的正確である。ヒューズLowバイトの下位4bitを0100〜0001の種類で設定する。(外付け部品がいらないので最もよく使われる)

5・外部クロック
 AVR内蔵の発振回路では水晶発振とは言っても精度や安定度に限界がある。おおよそ±10〜50ppmの変動は見込むべきだ。安定なクロック周波数が必要なら、温度補償型水晶発振器(TCXO)などを外付けして供給すると良い。 あるいは動作に適した既存のクロックがあれば、それを供給することもできる。複数のマイコンの同期を取り易いと言うメリットもある。ヒューズLowバイトの下位4bitを0000に設定する。(周波数カウンタや高精度な時計などで使われる)

 この項目で注目すべきは、下の方の赤の下線部分だ。ATmega8は出荷時にヒューズLowバイトの下位4bitが0001に設定されており、スタートアップSUT(後述)は電源の立ち上がりがゆっくりであると言う設定になっている。(どう使ってもいちばん無難と思われる設定になっている訳だ)

校正済み内蔵RC発振
 いちばんよく使われるのは校正済み内部RC発振だ。外付け部品不要で、I/Oポートも2つ増やせるメリットがある。 ATmega8の内部RC発振器は8MHzで発振している。 周囲温度が25℃で電源電圧が5Vのとき±3%以内の周波数精度となっている。クロックの周波数精度・安定度が程々でよい用途には最適だ。

 内部RC発振器で得られるクロック周波数は1,2,4,8MHzの4種類だ。8MHzを源に整数分周して低い周波数を得ている。分周せずに8MHz、1/2分周で4MHz、1/4で2MHz、1/8で1MHzである。この分周数をヒューズビットで設定している。

この8MHzは周波数の「校正値」が「校正バイト」と言う場所に書き込まれている。工場出荷時に規定の精度範囲になる最適値が書き込まれる。 校正バイトの書き換えは可能だ。5V以外の電源電圧で使用する場合など、実条件で校正すれば周波数精度を上げることができる。しかし周囲温度の変化でも周波数変動はあるから、周波数精度・安定度を要するならセラミック発振子や水晶発振子を使うべきだ。

# 設定だが、ヒューズLowバイトの下位4bitを:
0001で1MHz(←これが出荷時設定)
0010で2MHz
0011で4MHz
0100で8MHz
・・・・の設定でクロック周波数が選べる。

ほか、スタートアップ・タイムをきめる2ビット:SUTは、もっとも安全な「10」が初期設定されている。特に必要性がなければ書き換える必要は無いと思う。

外付けRCによる発振
 図の様に外付けの抵抗器RとコンデンサCの時定数でクロック発振させる。クロック・タイミング(周波数)がデリケートに影響しない用途向けだ。

 クロック周波数fは、おおよそf=1/(3RC)で計算できる。 なお、Cの値は少なくとも22pFにすべきで、CKOPTと言うヒューズ・ビットの設定でAVR内蔵の36pFを使うこともできる。(注:CKOPTはヒューズHighバイトにあり)もちろん、この36pFにも誤差があるし、配線によるストレー容量もあるから、計算式通りにはならない。 また温度係数も補償されないからクロック周波数がアバウトで良い用途に限定される。使用例は見ないが、特別低いクロック周波数をRC発振で得たい場合にでも使うのだろうか?

 スタートアップタイムに関しては、上記の「校正済み内蔵RC発振」と同じである。

外付け水晶発振子による発振
 水晶発振子を使うと周波数(周期)精度が良く安定したクロックを得ることができる。 マイコンの動作クロックをもとに時計やタイマーのような、時間精度を要する用途には最適だ。
 また、外部信号の周期や周波数を計測するアプリケーションにも安定したクロックが必要になる。 なお、セラミック発振子も使えるが周波数安定度は水晶発振子より100倍くらい悪いので用途目的次第である。

 AVRマイコンのXTAL端子は、図の様にインバータを使った発振回路になっている。XTL1がインバータの入口側、XTL2が出口側である。XTL1とXTL2とGND間に接続するコンデンサ、C1とC2は水晶発振子あるいはセラミック発振子の周波数により異なる。 具体的には次項の表にあるが、数〜16MHzの一般的なケースではいずれも15pFか22pFを使えば良い。 なお、セラッミック発振子ではC1とC2をメーカー指定の値にすべきだ。

 内蔵水晶発振器には2つのモードがある。発振振幅を抑えたモードと、発振振幅が電源電圧いっぱいに振れる「Full rail-to-rail swing」がある。 不要輻射を抑えるには前者が、ノイズが多い環境で使うには後者が向いている。いずれにするかは、ヒューズHighバイトにある「CKOPT」の設定で変更できる。私は(デフォルトの)発振振幅を抑えたモードで使うことが多い。


水晶発振のヒューズビット設定
 使用する水晶発振子の周波数帯によって3種類の設定がある。 さらに、発振振幅の選定があるので全部で6種類の設定があることになる。

 多くの場合、数〜16MHzの水晶発振子を使うだろう。発振振幅を抑えたモード(=初期設定)で発振させるなら、CKOPT=1、CKSEL3..1=111で良い。 殆どの場合、これで良い筈だ。 なお、CKSEL0も1で使うケースが殆どのはずで、結局CKSEL3..0=1111と言うことになる。(次項を参照)

 別のAVRマイコンにクロックを供給する場合はCTOPT=0として、フルスイング発振させた方が安心だ。出力はXTL2端子側から取り出す。(注:ヒューズ・ビット:CKOPTはヒューズHighバイトにあり)

 C1とC2であるが、上項のように多くの場合15pFか22pFを付けておけば良いようだ。 セラミック発振子の場合、3端子型ならC1とC2は発振子に内蔵されているから外付け不要である。

 幾つか調べてみたが、2端子型のセラミック発振子も数MHzなら水晶発振子と同じ15pFか22pFで良いようだ。 但し1MHz以下ではもっと大きな容量が必要で、村田製作所のセラロック(R)では100pFが指定値である。たとえば455kHzのセラロックを使う場合などだ。

 アマチュアの用途なら「発振すればOK」であるが、製品に使うには電源電圧、周囲温度の変化のほか、マイコンのロットによるバラツキも検討しておかないと安心できない。

スタートアップ・タイム
 電源を加えてからクロックが安定し、内部が初期状態にリセットされ、初めてマイコンは正常に動作する。 従って、電源電圧が加えられ一定時間経過してからプログラムはスタートする。

 同様に、スリープやパワーダウンの状態から復帰する場合も暫くの待ち時間が必要だ。 どの程度の時間で起動するかはヒューズビットのスタートアップ・タイム・ビットで決定する。

 特別に短い起動を必要としなければ、十分な起動時間を取って、ゆっくりした起動の方が確実であろう。 また、マイコンに加わる電源電圧の起動特性も関係する。 一般の安定化電源では設定電圧に安定するまでに、数10〜数100mSの時間が必要だからSlowly rising powerを選択するべきだ。

 起動時間がクリチカルではない用途なら、セラミック発振子の場合で:CKSEL0=1、SUT1..0=00にする。水晶発振子の場合で:CKSEL0=1、SUT1..0=11でも良いと思う。

 注釈が付いているが、パワーダウンあるいはパワーセーブ状態からの復帰で安定まで待つ(必要のある)クロック数は:セラミック振動子で258クロック、水晶発振で1,000クロックでも良い。但し、いずれも精度を要しない場合に限る。また上限に近いクロック周波数では推奨されないとある。 普通はもっと待つ方が良いのである。

 参考:セラミック発振子の待ちクロック数が少ないのは発振に要する起動時間が短いからだ。 Qが極めて高い水晶発振子は発振振幅が安定するまでに時間を要する。従ってやや長く待つ必要がある。

外部クロックの与え方
 外部からクロックを与える場合は、ヒューズビット:CKSEL3..0=0000とする。 また、信号はXTAL1端子に加えること。 与える信号の振幅は、ゼロから電源電圧までフルスイングする矩形波信号が良い筈で、Duty=50%に近いものが好ましい。

 負荷としては重くないので普通のC-MOSやPull-up抵抗付きのLS-TTLでドライブできる。 なお、TCXOほか、缶入り水晶発振器の出力は、C結合になっていることがある。 その場合は電源電圧の半分に相当するバイアス電圧を掛けた方が良い。 特に発振振幅が不足気味のオシレータではバイアスを掛けないと動作が不安定になることがある。 ドライブするオシレータ側の事情によるが、10kΩ〜47kΩ程度の抵抗器を2本用意し、1本目:電源→XTAL1端子、2本目:XTAL1端子→GNDに接続してバイアスを掛ける。

 スタートアップ・タイムは、上記と同様に特別な事情が無ければ十分な時間待つ方が望ましく:SUT1..0=10の設定が望ましいと思う。 なお、SUT1..0=11は「将来用の予約」なので設定してはいけない。

Brown-out Detection
 停電と言うのはBlack-outであるが、Brown-outと言うのは電圧低下状態のことだ。 たとえば電池が減ってきて規定の電源電圧を下回ったら、通常の処理をやめて待機準備に入る必要があるかもしれない。

 Brown-out Detectionと言うのは、そうした電源電圧の低下を察知する機能のことだ。その機能をON/OFFすることができる。 通常はデフォルトのOFFのままで良いだろう。

 たまたまATmega8ではヒューズLowバイトに含まれているのでここで説明している。 おなじ28pin AVRでも、ATmega48〜ATmega328ではヒューズHighバイトに含まれている。 但し、機能は概ね同じなので、電圧低下処理が必要な機器なら詳細を読んで機能させる。 


ヒューズバイトの書き換え
 意味がわかれば恐れることもない。 意味もわからず無闇に書き換えようとするから、復帰不能な状態に設定してしまうのだ。

 外付け水晶発振子や外部クロックの状態に設定しただけなら、所定のクロックを与えれば大丈夫。 再びチップが応答するようになって再度書き換えできるようになる。 従って過度に怖がらなくても良い。

 もちろん、水晶発振子なりオシレータが手元に無いと困ってしまう。数MHzの良質な水晶発振子や出力波形確認済みのオシレータ・モジュールを用意しておくとかなり安心できる。

 図はhidspx-GUIの画面だ。今の場合Clock周波数を内蔵8MHzに変えたいだけだった。ヒューズLowバイトの下位4ビットを、「0100」にすれば良い。16進で言えば「4」にする。上位4ビットは無変更なので「1110」即ち「E」である。結局、初期値が「E1」だったものを「E4」にすれば良いのだ。

 もうわかったから上の方にある、ヒューズビットの窓に所定の設定をインプットし「Write」ボタンを押せば書き換え完了だ。 けして難しいものではない(だろうと思う)。

参考)ATmega48PA、ATmega88PA、ATmega168PA、ATmaga328PではヒューズLowバイトの初期値は「62」になっている。内部RC発振器の1MHzで動作しており、上記と同様8MHzのクロックにするには「E2」に書き換える。「E4ではない」ので注意を! 詳細はATmega48/88/168/328のマニュアルを参照。

                    −・・・−

後記
AVRマイコンの様々な機能のうち、内部の回路的な部分はユーザープログラムからでは操作できない。 (内部にある)スイッチに相当するものがヒューズビットだ。 その「スイッチ」で内蔵回路の接続を切り替える。 例えば内部のRC発振器を停止しクロック入力を足ピンに切り替えてやれば外部クロックで動作できる。 おおよそそうした切換えを行なうのがヒーズビット(ヒューズバイト)の役割だ。

 在庫品の活用が目的だったのだが、このBlogを書き始めて暫くしてATmega8はもう既に過去のデバイスであることに気付いた。 現行主流のATmega48〜328とはヒューズバイトのアサインが随分違うのだ。 新チップに対応すれば良かったのだが、もう大半書き終えていたのでそのまま行くことにした。 もしATmega48、88、168、328を使うなら、ここに書いたATmega8とは違うので注意を。クロックなど考え方は同じなので所定のビットを同様に設定してやれば大丈夫。

 ヒューズビット(バイト)は回路屋には理解し易いが、ソフト専門の人には難解かもしれない。 しかし恐れる必要はない。 機能は各チップで概ね同じだから少しマニュアルに目を通せば心配いらない。 それにヒューズとは言っても一回切ってしまったら修復(再接続)できない訳ではなく、(限度はあるが)普通の意味では何回でも書き替え自在だ。

以上、例によって自身の備忘用Blogなのであるが、こうやって書いてみると、やっぱりヒューズビットは面倒だなあ。(笑) de JA9TTT/1

(おわり)