FC2ブログ

チープなユニバーサル基板でも・・・

2016-02-28      
 昨日の続きで高速カウンタの実験を朝から進めていましたが、特に進展がみられないんで、ブレッドボード実験を諦めてユニバーサル基板に組んで試してみることにしました。

 これまで、ちょっとした実験に愛用していたのは秋月の紙エポ基板。これに銅テープを貼って「ナンチャッテ両面基板」として使うとかなり高い周波数まで安定して動くため、実験ばかりでなく「完成品」にもそのまま採用していたりします
 ただ、本当に「実験のみ」を目指す場合には、もっとチープな・・・2.54mm刻みにランドさえあればいいという場合も多く、手頃な大きさ(秋月のCタイプ:凡そ72mm×48mm)の安っちい基板をずっと探していたら、Amazonで同じ大きさ&ベークタイプの基板を見つけました。1枚単価が送料込みで「23円」でした



 まぁ、所々に削りカスが詰まって貫通していない部位も見られますが「値段相応」ということですね ひとまず、入力アンプ部を組んで様子をみてみました。



 組んじゃえば別にどうってことはなくかなり高い周波数もOK・・・というか、裏面に比較的大きなグランドを、またしても「銅テープ」を貼って構成しました。



 あまり見せたくない部分です これだけでもアンプとしてざっと100MHz程度までなら安定していそう。まだ実験途上であり、高速カウンタの動作検証についてはこれから・・・今日は晩酌でちょいと酔ってしまったんで、この続きは来週末かなぁ


高速カウンタに翻弄された一日

2016-02-28      
 周波数カウンタの母体が動き始めたことから、この土曜は午前中から、今回の目玉の1つである高速カウンタの実験を行いました。実験回路はこんな感じです。



 今回の構想では、74AC161を前置して150MHz辺りまでカウントさせ、4ビット分の情報をカウントストップしたら引き取ってきてPIC内部のカウンタの下位4ビットとして連結、分解能を落とさずに比較的高い周波数までカウントしようというものです。原理的な部分は兎も角、AN592の仕掛けが単純な抵抗によるもので上手くいくか・・・この辺りを見極めるための実験のつもりで始めたんですが、これが上手くいかないんです
 あれこれ当たってみると、どうやら74AC161と前置している1石アンプのところで信号が思いっきり歪んでしまい、安定にカウントできないことが判ってきました。そこで、74AC161と前置するアンプの部分だけ小さなブレッドボードに組んでみました。



 こんなに単純な回路の一体何処に原因があるのか・・・ある意味興味津々で実験を続けましたが、現象は捉まえたものの原因には届かず終い。証拠だけ貼り付けておきましょうか。



 上の回路図の矢印のところで測定した波形です。立ち上がりの手前にノイズが固まってくっついているような酷い波形です。それも、ハイ・ローの閾値を跨いでいますから、毎度カウント値が動きます。これじゃぁ、仕方がないなぁ・・・といったところ。

 同様に、矢印の部分でアンプ部との接続を切り、アンプ部の出力を観てみると・・・



 かなり綺麗な信号に見えますね。こうなると74AC161側に問題がありそうなんですが、今のところ解決策が見えません。ゲートを挟めば良さそうですが、やはりそもそもの原因を知りたいところです。

 休みが1日無駄になってしまった感じ・・・さぁ、どうするか

今年も「咳」の備忘録

2016-02-27      
 2月3日辺りで一度引いた風邪が、長々と軽快しなかった。昨年もかなり苦しんだ覚えがあるが、これはインフルエンザで弱った身体に「咳が置いて行かれた」といった感じだった。しかし、今年はこれともまた少し違っているのだ。

 酷いときは一度咳をし始めると5分程発作的に続くことがあり、会社ではマスク着用必須、帰ってきてもできるだけマスク着用で過ごしていた。この状態は10日程で脱したが、その後も「深夜」や「食後」に咳が出る。空咳でないのが幸いだった(空咳は本当に疲れるからね)が、それでも気付くと咳き込んでいていい加減頭にきていた。
 先週の金曜日は予約してあった人間ドックを受診しに行った。咳が発作的に出る旨伝えたら、「胃のバリウム検査は止めておいた方がいい」と言われた。万一、バリウムを飲む時に咳をしたり咽せたりして気管や肺の方にバリウムが行ってしまうとかなり都合が悪いらしく、結局胃の検査はネグってしまった。

 今週は流石に楽になってきて咳き込むことは圧倒的に少なくなった。この週末に掛けて漸く本格的に軽快したのかも知れない。仮にこれで完治したとすると都合3週間程の苦闘だったわけだが、これでは昨年とあまり変わらないではないか。

 結局、寄る年波に圧されているということか・・・ま、仕方がないということだな。インフルエンザが今頃流行ってきているから、ここ暫くは用心するに超したことはなさそうだ。

PIC16F182xの濡れ衣晴らし・・・

2016-02-13      
 直前の記事で「PIC16F182xは周波数カウンタに向いていない」と宣ったここのブログ主ですが、悔しさ紛れに「PIC16F1938」でカウント実験をしようとソフト改修・・・すると、割込処理にバグを見つけてしまいました

 このバグは、丁度クロック周波数の半分のところ(ナイキスト周波数)でカウントが頭打ちとなり、それ以上のカウントが上手くいかない・・・という風に見える、ある意味絶妙な不具合。それも、C言語として2行の処理順序が逆というだけのもので、端から疑ってもいなかったところでした。嗚呼、昔取った杵柄(こう見えても、昔はバリバリの制御系ソフト開発者)は何処・・・
 そして、そのままPIC16F1938で実験を続けたら、ひとまず20MHzを超える周波数をきちんとカウントできることを確認するに至り、「ここはPIC16F182xに掛けた濡れ衣を晴らさないと、全国のPICを愛して止まない方々、特に『拡張ミッドレンジ最高』と偏愛されておられる方々からお叱りを受けてしまう」と反省し、できる限りきちんと実験をやり直すことにしました。

 実験自体は至極簡単です。PICで周波数カウンタを作成する場合、上限周波数に近づくと「取りこぼし」が発生するため、実際に測定した周波数よりカウントされる周波数値が下がります。そこで、発振周波数が判るようなSGや別の校正された(測定周波数が信用できる)周波数カウンタがあれば、この「差」を監視し、もし測定周波数が下がってきたらそこを「上限周波数」とすればよいことになります。
 以下の実験は、VDDは5VでPICのクロックを外部の「12.8MHzTCXO」から供給し、Timer0またはTimer1でどこまでカウントするかの調査になります。

 まずはPIC16F1827。このPICでは、PICの外部クロックとTimer1が別のポートで制御できるため、Timer1を使っての実験。毎度のナンチャッテ・スナップにしてみました。



 以前に手に入れた中華DDSを被測定対象としていますが、この発振周波数の校正は、現時点で我が家の「周波数測定基準」となっている「心臓部を改良してイケてる筈の中古カウンタ」で校正してあります。15.6MHzまでの低い周波数では、スナップのように「+1Hz」と「±0Hz」辺りで安定します。さらに100KHz上げると・・・



 こんな風に数Hzの取りこぼしが生じます。これは、周波数を上げれば上げるほど顕在化します。このように、取りこばしが生じ始める周波数を「最高周波数」として調査したのが今回の実験です。

 さぁ、この調子で調査した結果を以下に示します。

 実験1:PIC16F1827 Timer1測定で15.6MHz
 実験2-1:PIC16F1829 Timer0測定で15.0MHz
 実験2-2:PIC16F1829 Timer0測定で15.3MHz

 ※実験2は、2つのPICの個体差を確認した

 そもそも、Timer0と1ではカタログスペックが違います。参考にPIC16F1829のデータシートから抜粋。



 このスペック(赤囲みの部分)から、Timer0をうまく使うと50MHz(20nsの場合)、Timer1なら約16.6MHz(非同期設定で60ns)をひとまずの目安と考えるわけですが、どうもそうではないよう・・・かと言って、ここのブログ主がほざいた「6.5MHz限界説」よりは上の方まで大丈夫なことは明白ですね。そして、PIC16F1938のTimer0の実測値は以下のようになりました。

 実験3:PIC16F1938 Timer0測定で24.1MHz⇒20.8MHz

 ブレッドボードのバラック実験ですから、きちんと基板に押し込めばもう少し個々の実験結果より高いところまでイケそうですが、少なくとも「ポピュラーな拡張ミッドレンジ8ビットPICで周波数カウンタを作成する際の目安」にはなりそうです。これでひとまず「濡れ衣」は晴らしたことにして下さい

補足 2016.02.27
 この実験では、PICのカウンタ入力の前に簡易な1石のアンプ(2SC1906使用、固定バイアス)を置きました。また、中華SGの出力は50Ω終端で-8dBm程度ですが、このアンプとの整合は全く取れていません。もう少し大きい信号を入力すれば、さらに高い周波数まで特性が伸びるかも知れませんが、12.8MHzクロックで走るPICにC言語の組み合わせでは別の問題(カウント部のオーバーラン等)が出てくる可能性があります。カリカリのアセンブラ・チューン・・・そこまでの必要がないため、今回の実験結果は「お手軽C言語で作る場合の参考」という形で終えています。

修正 2016.02.27
 実験3の24.1MHzという結果は、実は入力ピンの浮遊容量をキャンセルして高周波特性を少しでも伸ばすべくショットキーダイオード(1SS106)を入れたものであったことを思い出しました。実験1,2はこれを施していなかったため、今日改めて単純なショートの形で測定し直したら、測定限界が20.8MHzとなりました。
 このダイオードで浮遊容量をキャンセルする方法ですが、高域は伸ばせるものの低域が犠牲になるようで、さらなる追試が必要・・・気が向いたら実験してみようと思います。

PIC16F182xは周波数カウンタには不向き!?

2016-02-11      
 結局、先週引いた風邪がぶり返した格好になり、しつこい咳と闘ってます。昨夕はこんな体調の中でも接待をこなしたんですが、夜中に襲ってくる咳の発作で何度も起きてしまい寝不足気味・・・それでも、T1CKI で躓いた周波数カウンタの実験を進めるべく、「AN592」に倣ってTimer0のプリスケを使ったソフトを作りました。

 そんなに複雑なロジックではないんでチャッチャとデバッグし、回路を組み替えていざ実験へ。採用したのはPIC16F1829です。



 T0CKI (17番ピン)の隣のポート(16番ピン)をゲートコントロールにし、470Ωの抵抗でフィードしたのはAN592の通り。いざ、周波数を測定すると・・・これが何とT1CKI の時と同様、またしても凡そ6.5MHz以下の周波数しかまともに測定できません この上限周波数は、いわゆるサンプリングを行う際の「ナイキスト周波数」(サンプリング周波数の半分)だと思われます。
 つまるところ、T1CKI の非同期動作が上手くなかったのと同様に、Timer0 のプリスケーラを使う場合でも結果的にPIC の内部クロックに引っ張られて動くという結論に・・・納得はいきませんが、「論より証拠」を突きつけられた格好になりました

 PICを使った周波数カウンタ製作の記事や海外の関連フォーラムを読むにつけ、どうやらこれら拡張ミッドレンジ以降の8ビットPICでの製作事例がない、或いは「本当の上限周波数は一体どれくらいなんだ」などと問いかけている投稿があり、素直に少し古めのもの(PIC16F6xx など)で作るのが良さそうです。

 いわゆる「アップワード・コンパチ」を信じ、データシートの後半にある電気的特性の部分に斜めに印字してある「PRELIMINARY」を無視して考えていましたが、まさかこんなに深いダンジョンに迷い込むとは思ってもいませんでした こうなったらやけくそ・・・手持ちの28ピン「PIC16F1938」でも試してみようかな

追記 2016.02.11 早速、PIC16F1938でお試し・・・やはり同じ結果・・・と思ったら、ちゃんと動いている模様。もう少し追求します。

糠喜びだったかも・・・T1CKI の動作周波数

2016-02-07      
 昨日に引き続き今日は、T1CKI の実力()に迫るべくヘッポコ実験の続きに没頭しました。実験と言ってもT1CKI 入力に簡単なアンプを前置して、測定できる最高周波数がどの程度かを調べるだけです。

 カタログスペック的には、非同期カウンタモードを選択する条件で最低でも60ns刻み・・・16.6MHz程度まではイケる筈。さらにネットの製作記事の幾つかでは、40MHz以上のカウントも可能なようなものも散見され、比較的新しい拡張ミッドレンジのPIC16F1827のチョイスで「余裕でしょう」という部分を検証するほのぼの実験のつもりだったんですが、これがどうも上手くいきませんでした



 直前のブログに記したように、100MHz超えの周波数も確かにカウントできるんですが、安定した測定がどこまでできるか確かめてみると、スナップの通り6.5MHz程度までのようです 手持ちの新品PICでも同じプログラムを書き込んで試しましたが同じ結果。

 この辺りが上限周波数だとすると、内部クロックとの同期がきちんと外れていないのか(非同期設定ができないT0CKI を普通に使った場合の上限周波数もこの辺り)とも考えましたが、何度見直してもプログラムは間違っていないよう。だとすると、T1CKI で高い周波数まで測定できているネット上の記事で使われている「古いPIC」(PIC16F84など)の方が有利だということなんでしょうかねぇ・・・

 最悪は、アプリノート「AN592」の通りT0CKI を使ってやっつけようと思いますが、ポートが勿体ない・・・というか、今の仕様を満たそうとすると、20/28ピンの採用も考えなければなりません。これが痛い

 妙なところで躓いてしまった日曜日でした。

T1CKI もそこそこ使えそう・・・

2016-02-06      
 直前記事に書いたように、今日は周波数カウント部としてPIC16F1827(とりあえずターゲットにしているPIC)のT1CKI のカウントできる最大周波数がどの程度かという確認をしました。カタログスペックを手繰ると、T1CKI の非同期(Asynchronous)における標準動作周波数は16.6MHzと読み取れますが、実際はどの程度なのか・・・45MHzを超える守備範囲なら今回作ろうとしている周波数カウンタのスペックを満足できるんですが、こればかりはやってみないと判らない というわけでヘッポコ実験に突入です。

 今日の所はとりあえずアンバッファのインバータ・・・RSオンラインさんで以前に購入した「SN74LVC2GU04」を前置アンプとして置いてみました。この小さなICは2つのアンバッファ・インバータを具備する6ピンSOT23フォームで、変換基板に乗せてブレッドボードでも扱えるようにしてあります。これをPICのカウンタ部に見立てたT1CKI の前に接続して、クラニシ君@SGから出力した信号の周波数を測定してみました。



 一足飛びに結果になりますが、どうやら100MHzを超えての測定も可能なことは判りました。スナップでは、最大の測定周波数を探った末の状態になっているため誤差が結構あります。さらに探ってみると、総じて80MHz程度まではある程度安定に測定できそうな雰囲気
 要は、T1CKI に与えるクロック(周波数カウンタとして言えば、測定対象の信号)の振幅がある程度大きければカウントできるようで、T0CKI と殆ど遜色がないことになります(T0CKI は凡そ50MHz程度までをカタログスペックのTypicalとして許容しています)。古めのPICはいざ知らず、昨今流通している8ビットPICの実力はこんなもんなんでしょうね。

 ・・・というわけで、当初の目論見通りの周波数カウンタは作れそうですが、もう少しヘッポコ実験は続けたいと思います

50Hzは凄すぎ!

2016-02-06      
 2,3日前から風邪の兆候が現れました。昨年エラい目に遭ったインフルではないことは確かで、週末に掛けては無理せず帰宅して早めの静養に努め、今いまは「うがい」と「トローチ」の世話になる程度までに回復。来週は外せない会議や客先回りが目白押し・・・何とかこの土日に復活を図りたいと思っています。

 そんな風邪気味の中、実験中の周波数カウント部のプログラムを簡単に組んでみました。ゲート周期は1秒、T1CKI のトライステートレジを周期で変更してIN/OUT(OUT時はカウントしない)を繰り返しながらカウントする簡単なプログラムです。漸く出来上がって動作確認のために「クラニシ君@SG」をつなぎ込みましたが、T1CKI のシュミットトリガを動かすには力不足のようで、やはり簡単な前置アンプを置いてやらねば・・・と何気なく放っておくと、何やらLCDが勝手に動いています



 50Hz・・・そう、商用電源周波数です。このスナップで中央から右の方にピンぼけで写っている黄色いジャンパー線がアンテナとなって、商用電源の漏れを拾っているという絡繰り。オシロのプローブの芯線側だけを手で持ったりすると、かなり大きな50Hzの振幅が見えますが、PICの入力ピンのインピーダンスもかなり高いことから、こんな悪戯をされるんですね。

 まさか商用電源のいわば「ノイズ」が、T1CKI のシュミットトリガの閾値を超えて測定されるとは思いませんでした。期せずして、テストプログラムはきちんと動いていることが判りましたから、これからアンプ部を追加して実験に突入しようと思います。

XC8の"char"のディフォルト

2016-02-01      
 最近は平日の「晩酌」で若干飲み過ぎ傾向となり、「ヘッポコ・プログラミング」はあまり進ませることができません。ただ、こうした微睡みながらの「マッタリ・プログラミング」も捨てがたい自分時間・・・そんな中、今日はちょっと覚書をしておくことにしました。

 C言語の「変数」は、char,int,long,doubleといった「ビット長」についてはコンパイラ依存になるため、この辺りをよく知っておく必要がありますが、XC8の「char」のディフォルトが「unsigned」であるということを今日知りました。過去の経験からてっきり「signed」がディフォルトだと信じ込んでいました

 証拠の品として()Microchip の日本語資料「50002184A_JP」からの抜粋しました。



 8ビットのプロセッサの場合、C言語上はこの「char」の扱いが重要です。例えば「0以上」(0を含む)といった判定にcharの変数を使うと、Warning レベル設定によってはコンパイル時にWarning がちゃんと出ます。このWarningが気になる場合は、signed charとして明示的に「符号付きだぞ」と定義した方がよい・・・ということですね。

 以上、XC8のプチ備忘録でした
Calendar
01 | 2016/02 | 03
Sun Mon Tue Wed Thu Fri Sat
- 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 - - - - -
New !
Category
Comments
Monthly Archives
Track Backs
Counter
Sunspot Now !

 


Survey Results

 

Profile

どよよん無線技士

Author :どよよん無線技士
こおるさいん:JM1DPL

アパマンというハンデにさらにQRPまで課し、失敗連続のヘッポコリグや周辺機器の製作・・・趣味というより「荒行」か!?

メールは「JARL経由」でお願いします。

Links
Follow me !
RSS Links
QR Code
QR