お断わり(2018年現在)

このコーナーは「当局にとってはじめてのPIC」と言う意味で、そのトタバタ顛末記です。
使用したPICもツール類も古く、これからPICを弄ってみようと考えている各局様にとって読む価値が無いと思います。
よろしければ、「PICキットコーナー」を閲覧して頂ければ幸いです。





今回のモチーフはPIC16F688です。
画像右側のICですが、文字が読めませんよね。
何度も着脱したため、ICが欠けています。
中央のケミコンが着脱に邪魔でした・・・
前回の追記で記しました、追加実験です。
今回のモチーフはPIC16F688、14ピンのPICです。
RBポートが存在しませんが、RAポートの他にRCポートが6ピンあり、カウンタ部分に使うには余裕のピン数で、色々応用できそうな手頃なPICと思われます。
PIC12F683には負けますが、何よりロジックICと同じ14ピンで扱い易く、120円と超安価です。

PIC12F683のマニュアル40ページ(PIC16F688では46ページ)の「Using Timer0 with an External Clock」を見ると、(詳細に読めないので、見るだけです・・・)20ns云々とあります。
参考文献①ではプリスケーラの能力限界が50nsで、20MHZが理論値と記載されており、それとはずいぶん違います。
と言う事はプリスケーラ自体は50MHZまでカウントできるのでは?と期待してしまいます。
よって、100KHZ~50MHZを安定にカウントする事を目標に実験してみたいと思います。


参考文献
①「PIC16F活用研究」 後閑 哲也 著  技術評論社
②ホームページ「電子工作の実験室」 後閑 哲也 著
③PIC16F688データシート MICROCHIP



構想
TMR0のプリスケーラを1/256にセットし、そのプリスケーラ残カウント数を読み出せれば、それがカウントバッファの最下位8ビットそのものになります。

FETで構成した広帯域アンプからのRF出力を、2入力NANDゲートIC・74HC00のNANDゲート入力で受け、もう一つの入力はPICの出力ポートを受ける事により、これでカウンタゲートスイッチを構成してみる事にしてみました。
NANDゲートによるカウンタゲートからの出力は、PICのパルス入力T0CKIに接続するのですが、その途中にもう1段NANDゲートを挿入してみました。
1段目と同様に、このNANDゲート入力の片方にもPICの出力ポートを接続する事により、T0CKI入力にPICの出力ポートからのパルスを、信号データラインに悪影響を与える事無くパルスを挿入できるようにしてみました。
この追加パルスを1個ずつ数えながら注入し、TMR0が1カウントアップするまで続けます。
これにより、プリスケーラの残カウント数を引き出せるのでは、と単純に思ったのでした。

これが上手く行けば、PIC12F683の実験の時のような、TMR0直接カウント(プリスケーラ無し)のモードは性能的に必要無い事となります。
と言う訳で、外部ゲートとパルス注入回路を付加した、カウンタ部実験回路を作製してみました。
表示基板は最初に作製した基板をそのまま利用します。

↑最初の回路図、この後変更となります




↑最初のカウント部実験基板
部品配置も余裕で、I/Oポートが3つ余っており、何かに使えそうです




↑基板裏面
余裕の配線で、スペースが余っています。
実験回路(回路図参照)
前回同様の8ピンPIC12F683でやってやれない事は無いのですが、今回はピン数に余裕のある、と言うかすでに最初に買ってしまった、14ピンPIC16F688を使用してみました。
RF増幅回路は以前と同じシンプル構成、MOSタイプNANDゲートはジャンク箱に転がっていたTC74HC00を使用しました。
同じピン数のICなので配置構成が楽ですが、ソケットへ挿入時に間違い易いです。
NANDゲートは周波数カウンタゲート用と、パルス注入用として2つを使用し、
それぞれRA0とRA1で制御します。
NANDゲートが余ったので、これを利用し外部水晶発振回路としました。
それによりCLKOUTピンがRA4I/Oとして利用可能となりました。
RA2はカウンタ入力、RA3はスイッチ、RA4はLEDを接続してあります。
RCポートは6本あり、外付けロジックICを接続すれば、8桁7セグをコントロール可能です。
あるいはLCDディスプレイのコントロールも可能です。
今回はRC3~RC5の3本を、実験用表示基板へのデータ転送に使用しました。
それでもポートが3つ余ります。
スイッチはゲートタイム切替、LED1個はゲートオープンに使用するつもりです。
この実験用基板も色々遊べそうです。



基板製作
基板は、以前PIC16F648Aに使用した中国製の穴あき基板は半田加熱時にちょっとでも引っ張り力が加わる事でランドがペロペロ剥がれてくるので、今回は実験基板と言う事も有り、サンハヤトの大き目サイズのユニバーサル基板を使用しました。
部品配置は余裕のスペースですが、ジャンク箱に長年転がっていた、相当古い基板だったので、半田の乗り(ヌレ)が悪くて、どうしても、もっこりした半田付けになってしまいました。
接続用のピンを立てたのは失敗でした。
両面スルホール基板で無いとランドの強度が無く、ある程度力が加わるとぐらついてしまい、上手くなかったです。
予想はしていたのですが・・・思ったより脆かったです。
それでもPIC16F648Aを装着した基板より、遥かに良いですが・・・

で、ルンルン気分で製作して、そそくさに電源を接続したら、電流制限が発動・・・
チェックもしないで電源投入はご法度なのは十二分に分かっているのですが、簡単な回路なので、つい・・・
テスタでVDDラインをチェックすると、何と0Ω・・・
VDD配線をチェックするも、ショートしているランドはどう見ても発見できません。
何でだ・・・う~ん、困った・・・
しょうがないので、電源ラインの一部(すずメッキ線)を切断し、追い込んでみました。
すると、しょっぱなに接続してある、ケミコンが内部で導通していました・・・
新品ケミコンなのですが・・・加熱によるものでしょうか?不明です。
さて、ケミコン交換で動作を始めましたが、X'TALの発振が不安定です・・・
最初発振せず、発振用のゲート入力端子(9,10pin)に触ると発振し始めます。
・・・と、よく見れば帰還部分の1MΩが取り付けられていませんでした・・・(^_^;)
この抵抗は無くても、雑音等で一旦発振すると発振が持続するのですね。
ひょんな事から一つ面白い経験をしました。

もう一つ発見(経験)した事項があります。
NANDゲートを通過したRF信号は結構大きく増幅されると言う事です。
前回の実験基板より感度アップしました。
と言っても初段のNANDゲートが反応する入力電圧がなければ意味は無いですが。
カウンタ部PIC16F688ソースファイル
※これは修正後のもので、再実験②および再実験③の回路に適応するものです。
最初の回路図のものには適応しません。

16f688_count01.asm

「開く」とずれますが、MPLABのエディタに入ると
ちゃんと表示します。
以下同様



10倍ルーチン
データはhex0-hex3の32ビットバイナリです
それを左シフト3回して、8倍します。
その後、32ビット加算を2回行い、結果10倍としています



データ転送フォーマット
hex0-hex3の計測データ4バイト(32ビット)
flgの制御バイト(8ビット)
bit7 エラー等
bit6 4,7桁目ドット点燈
bit5 3,6桁目ドット点燈
bit4 2,5桁目ドット点燈
bit3-0表示桁数指定
0001 2桁
0011 4桁
0101 6桁
0111 8桁

データが揃えば、TX=1にしてRX=1待ち
RX=1になったら、
スタートビット 1bit
データビット 40bit
ストップビット 1bit
合計42ビットを一気に送信



PIC16F648A表示実験基板
バージョンアップ版

7seg_test3.asm

「はじめてのPICその1」で作製した実験基板用のプログラムです。
追記 2012年01月10日修正しています。
プログラム
詳細はソースファイルのコメントを見て下さい。
基本的にPIC12F683実験基板のカウンタプログラムと変わりません。
さらにPIC16F688は12F683と兄弟の様で、各種設定が概ね同じの様です。
逆に言うと、16F648Aとは結構違います。
さて、12F683実験基板と大きく違うのがRFアンプとPIC入力間部分にNANDゲートが2個挿入されている事です。

NANDゲート1(カウンタゲート用として使用)
アンプに接続されているのが、カウンタゲートとなっています。
このNANDゲートの入力の一方はRA1に接続されていますので、
RA1=0の時いかなる入力があろうとも、論理積が0となり、出力は1のままとなります。
RA1=1の時はアンプからのRF入力によって出力は変化する事になります。
このゲートの出力は次のNANDゲート2の一方に入力されます。

NANDゲート2(パルス挿入用として使用)
このNANDゲートの入力の一方はRA0に接続されていますので、
RA0=0の時いかなる入力があろうとも、論理積が0となり、出力は1のままとなります。
RA0=1の時はゲート1からの入力によって出力は変化する事になります。
このゲートの出力はPICのRA2/T0CKIに入力されます。
通常はRA0=1とし、ただのインバータとして動いています。
しかし、ゲート1がOFF、すなわちRA1=0となり出力が1となった時活動します。
この条件の時、RA0=1で論理積は1、出力は0となります。
しかし、RA0=0とすると、論理積は0、出力は1となります。
よって、RA0=1→RA1=0→RA1=1とした回数がパルスとしてPICのRA2/T0CKIに入力される事になります。
RA2/T0CKIは常時入力のままで、以前の様にこのポートでの入力・出力変更による、カウントゲートON-OFFはしていません。



カウンタゲートタイム
カウンタゲートのON-OFFに時間が掛からなくなったので、PIC12F683カウント基板のカウントルーチンよりシンプルな制御となり、1命令で可能となりました。
よって、ゲートOFFの操作の間に測定パルスが入ってくる危険性はかなり少なくなったと思っています。
また、参考文献の①のループ定数がぴったりと合いますので、そのループ定数を使用したカウントルーチンとしました。
計算上はこれでぴったりと100m秒と1秒になったつもりです。
ゲートOFFにしてから、RA0からのカウントパルスをNANDゲートを介して注入して、1/256プリスケーラの残カウント数をバッファの最下位データとしています。
しかし、その他当局が知らない補正事項があるかも知れません。
とりあえず、SSGからの信号にはPIC12F683基板より、遥かに正確に表示はしていますが・・・

データ補正ルーチン
カウンタゲートクローズ後に、TMR0の桁上げフラグ(T0IFフラグ)の再チェックと、フラグON時の桁上げ処理を追加しました。
データ確定後の補正では、以前は8倍、32倍のプリスケーラ対応での補正でしたが、ゲートタイム100m秒のために10倍補正を入れました。
他は使用しないので、切り捨てました。

カウントバッファおよびデータ転送フォーマット
カウントバッファは32ビットに拡張しました。
それに制御フラグ用に1バイト付加し、全部で5バイト40ビットのデータ転送と変更しました。
制御用バイトには、表示桁数指定ビット、ドット表示桁指定ビット、エラーフラグ等を盛り込みました。



表示基板プログラムの変更
カウント基板のデータフォーマット変更により、受信フォーマットも40ビットに対応しました。
それにより、データ化けがちょこちょこと発生し始めました。
1ビット100us幅ではタイミングに余裕が有り過ぎだろうと思っていたので、送受信共に転送フォーマットに対して比較的ラフだったのを、きっちり時間を合わせたら、データ化けは解決しました。

カウントデータの32ビット化により、BCD変換ルーチンを32ビット対応に変更しました。
実は完全32ビット対応ではないですが・・・

表示桁数指定フラグに対応しました。
フラグの下位3ビットがそのまま桁数なので、手抜きの(シンプルとも言う)対応です。

7セグLEDのドット表示位置指定フラグに対応しました。

ゼロブランキングは好きではないので、入れませんでした・・・

と言う訳で、機能的には何とか実用的になってはきました。

↑この時点では、表示プログラムの旧バージョンを使用しており、ドットが表示されていない
計測周波数は適当です。
試運転

計算上の目標が50MHZでしたが、SSGの信号を10MHZから始めて、70MHZまで割と正確に、かつ安定にカウントできました。
100msでもそれほど誤差は増加しません。
目標を上回る、上々の結果です。
この限界がPICによるものなのか、74HC00によるものなのかは不明ですが・・・
SSGの出力表示と比較して10MHZでは数HZの誤差、70MHZでは数十HZの誤差です。

と喜んだのはつかの間・・・
7MHZ以下は表示がおかしくなります。
PIC12F683基板では逆に低い周波数の方が安定していたのですが・・・
オシロで見てみると、RFアンプ1段目は概ね問題無いようですが、RFアンプ2段目の出力波形が綺麗な波形ではなく、少し歪んでいます。
その後の第1ゲート出力に高調波?等が多い様です。
PIC16F688のT0CKI入力と周波数カウンタ(TR5822)を並列に接続すると、見事に同じずれた周波数表示をしています。
あちこち電極をチェックしていると、その高調波が第2ゲートで増幅され、90MHZ近くまでカウント(あれ~???)する時もありました。
と言う事は、きっちりと設計・実装すると100MHZのカウントも夢では無いのかもしれません。
しかし、高い周波数での動作を追及するよりは、100KHZ~50MHZまで安定に動作する方が、当局とっては遥かに有益です。

模擬実験

ブレッドボードでRFアンプの2段目と同じ構成のFET1石のアンプと74HC00のNANDゲート2段で模擬回路を組んで実験してみました。
2入力のNANDゲート入力の一方はVdd接続ですので、機能的にはインバータ2段になっています。
入力はSSG及びオーディオジェネレータ(AG)で、2段目のNAND出力観測は直接カウンタ機能付オシロです。

それらからの入力信号は、RFアンプを通過し、第1NANDゲートの入力ピンをチェックする限りは数十HZから100MHZ以上までちゃんと増幅された信号が入力されており、その観測波形も問題無く、オシロ内蔵カウンタも正確にその周波数を表示しています。

AG出力20HZ~200KHZを模擬カウンタに入力すると、NANDゲートに入力されたすべての波形が綺麗に方形波出力となりオシロで観測されますが、内蔵カウンタはすべて表示がおかしいです。

SSG入力は100KHZから100MHZまで入力してみました。
200KHZから20MHZ程度まで内蔵カウンタでも周波数を表示するようになって来ましたが、表示がおかしくなる時もあります。
方形波に整形されると周波数表示がおかしくなる事が多いです。
NANDゲートがアナログアンプみたいにサイン波状態で増幅している様に見える時は概ね大丈夫です。
20MHZ以上では表示する時もあり、だめな周波数もありで、不安定です。
方形波になる事は無い様ですが、測定方法が画像の様に適当なので、実波形は不明です。



模擬実験考察
最初、1つの74HC00で水晶発振と信号経路とに使用していたのが悪いのかと思っていたのですが、実験による確認はしていません。
と言うか多少良くなるかも知れませんが、根本的に解決しないような気もします。

無い知恵を絞って考えてみたのですが・・・
NANDゲートを入力スイッチ付インバータとしてイメージしていたのですが、実際低い周波数ではその様に動作しているように見えます。
そして、その時はインバータ出力は方形波となり、カウンタ表示がおかしくなります。
1段目で波形整形されると高調波が発生し、それが悪さしているのではと思い始めてきました。

入力スイッチ付アナログアンプとして考えると良いのでは?
と、この文章を書きながら、共立エレショップに74HC4066(1個47円で74HC00の2倍弱高い)を注文してしまいました。(結局ここでは使用しませんでしたが・・・)

再実験①
NANDゲート入力にはバイアスを与えてアナログアンプとして機能するように実験してみました。
製作した実験基板の第1ゲートと第2ゲート間はコンデンサ接続とし、第1ゲートは元々FETでVDDの半分ほどのバイアス電圧が与えられているので、第2ゲートに抵抗分圧でバイアスを与える形にしてみました。
すると、1MHZ以下はやっぱり波形は綺麗なのですが、ちゃんとカウントする時としない時があります。
1MHZ~15MHZ位は何とかカウントしているようですが、イマイチカウント変動が大きいです。
16MHZ以上はカウントしません。
CMOS・NANDゲート出力に余計な負荷があると周波数特性が急に悪くなるようです。
どのみち、全般的に当初よりかなり悪くなり、無駄かつアホな実験でした。
ここで追加したCR類はすべて外し、元に戻す事にしましたました・・・(-_-;) トホホ
と言ってもまったく元通りではつまんないので、再実験②の様に変更しました。

↑変更後の回路図
実配線は回路図とはちょっと違いますのは常套手段です。




↑1秒ゲートでSSGより10MHZを入力
トリマで調整しています。
安定して表示していますが、数秒に1回+1HZ動いては戻ります。




↑1秒ゲートでSSGより70MHZを入力
10MHZ入力時より+5HZアップしています。




↑1秒ゲートでSSGより1MHZを入力




↑1秒ゲートでSSGより100KHZを入力
誤差が大きくなってきました。



再実験②
部品の取外しにより、基板がかなり悲惨な状態となりましたので、このユニバーサル基板上での実験は限界かと思われます。
クロック発振はPICにやらせる様に変更し、74HC00のNANDゲートは測定信号のみに使用するようにしました。
RFアンプの2段目の負荷抵抗は小さくしました。
負荷抵抗兼NANDゲートバイアス調整用半固定VRは取外し、固定抵抗330Ωとしました。
Vdsを上げ、出力波形のひずみを少しでも緩和するようにしました。
本来ならアンプ部分だけ電圧を上げれば良いと思われますが。
これにより、第1NANDゲート入力は固定抵抗で1/2VDDのバイアスを与え、RFアンプとはコンデンサで結合と変更しました。
第2NANDゲートのバイアスは外し、元通りにしました。(恥・・・)
RA4ポートが使えなくなりましたので、LEDの接続ポートをRC2に変更ししました。
上記の変更に合わせ、プログラム内のポート設定を変更しました。

基本的に元に戻したので、10MHZ以上は問題無いようで、SSG出力70MHZまでは安定にカウントしています。
10MHZ以下も今度はちゃんとカウントしており、100KHZでもとりあえず大丈夫でした。
しかし、1MHZ以下はカウント誤差が大きくなるように思われます。
次にAG(オーディオジェネレータ)では、とりあえず1KHZからカウントしている様です。
それ以下の周波数では、アンプ飽和による、比較的きれいな方形波がNANDゲートに入力されてはいるのですが、まともにカウント表示しません。
RFアンプ出力は、以前より歪が小さくなり、より大きな信号をNANDゲートに入力できるようになりました。
それでも歪が無い訳ではありません。
どうやら、この広帯域アンプの素性が悪かったのが主原因のようです。
そもそもNANDゲート2段使うのが悪いのかと思い、次の実験手段を思案し始めていた所でした。



考察②
PICの性能が意外と良いなと確信できました。
また、74HCシリーズも結構高速なのには驚いています。
EFTのアンプはお粗末な設計・実装で失敗しましたが、部品点数が最小限になり、簡単なので気に入ってます。
PICのT0CKI入力にしろ、MOSゲートICの入力にしろ、アナログ信号をデジタル回路に入力させる時は、適切な大きさの信号レベル、そしてなるべく綺麗なサイン波の方が良いのですね。
てっきり綺麗な?方形波の方が良いものとばかり思っていました。
一旦入力されてしまうと、その後の信号ラインは方形波になるのでしょうけど、アナログとデジタルの境目は注意が必要な様です。
まだまだ経験および勉強不足で不明点が多過ぎです・・・
カウンタ用の広帯域プリアンプは本来難しい物のようです。
この状態では、実用範囲は1MHZ~70MHZと言った所でしょうか。
あと気になるのが、RFアンプの出力波形をオシロで見ると、波形が「線」で表示されていないのです。
100KHZ~1MHZ程度の低い周波数波形を高速で掃引して観測すると、40~70MHZの周波数成分が見られ、それが入力周波数が厚みのある線で表示される原因の1つの様です。
また、カウント表示がおかしくなる原因にもなっているようです。
どうやら寄生発振?しているようです。
さて、今までの不具合の主原因は、主にRFアンプの設計および実装配置不良が明白となりました。
簡単な回路なのに、当局のレベルの低さがモロに露呈した訳です。

↑RFアンプのゲインを落としました




↑10MHZでSSG出力と合わせました。
この後すぐSSG出力を各周波数に変更




↑SSGからの50MHZ




↑SSGからの80MHZ出力




↑SSGからの5MHZ出力




↑SSGからの1MHZ出力




↑SSGからの500KHZ出力




↑SSGからの100KHZ出力




↑SSGからの50KHZ出力




↑SSGからの10KHZ出力
再実験③
RFアンプをちょっと変更しました。
1段目は問題無く増幅していますので、2段目を変更しました。
2SK241Yに-0.15V~-0.2Vほどバイアスを掛け、ゲインを落としました。
ソースに50Ωを挿入、パスコンも使用しませんでした。
また、回路図にはありませんが、電源ラインのあちこちに、パスコンを挿入しました。
これでとりあえず、寄生発振は殆ど解らなくなり、そこそこの綺麗な波形でNANDゲートに入力する事が出来るようになりました。
また、低い周波数では、アンプが飽和して方形波に近くなり、かなりひずみますが、高調波や寄生発振が無いせいか、今度は問題無い様です。

ただ、測定方法がいい加減なので、何とも言えませんが・・・
その代償として、カウント可能な感度がかなり落ちました。
78MHZではSSG出力が200mV程必要となりました・・・(ーー;) オイオイ
以前のPIC12F168単体でカウントしていた時は、SSG出力10~20mV程でカウントしていたのですが、ちょっと実用的感度では無いようです。
最も、測定周波数が低くなると、感度もグンと上がり、30MHZでは50mVでカウントします。
10MHZ以下では30mV、1MHZ以下では20mV程です。
しかし効果は抜群で、画像の様に10KHZ~78MHZまで安定にカウントするようになりました。

SSG10MHZ出力をトリマで10MHZを出力するように合わせました。
80MHZ以上もカウントする時もありますが、いまいち入力電圧不足なのか不安定です。
これで、実験の目標である100KHZ~50MHZは安定してカウント可能となり、余裕でクリアとはなりましたが・・・



考察③
結果論となりますが、今回実験基板の一番の問題点は、広帯域アンプが簡単な回路のため甘く見てしまい、アンプ回路部分の実装の悪さだった、と言う事でした。
アンプ部分のグランドをきっちり処理すると、アンプ回路は簡単でも、それなりに実用的になると思われます。
それに気が付くまでに、ずいぶんと無駄な実験をしてしまいました。

NANDゲートには少なくとも1Vpp程度の入力電圧が必要なようで、小信号をカウントをするにはかなりアンプのゲインを上げなければなりません。
しかし、ゲインを欲張ると、ろくな事になりかねませんし。
広帯域アンプ用ICを使ってみるのも良いかもしれません。

問題点
ゲート時間が1秒と0.1秒の切替なのですが、0.1秒時はカウント値が少ないようです。
実験ですので、カウンタ部で、1秒は8桁、0.1秒は6桁指定していますが。
1秒で10.000.000HZなら、0.1秒で9.999.97十HZ
と言った具合です。
プログラム上はきっちり時間を合わせたつもりなのですが、今の所原因不明です。

これは根本的な問題をはらんでいるかも知れませんが、
1秒ゲートの場合で入力が無い状態で、カウントが0にならず、1を表示してしまいます。
0.1秒ゲートの場合は大丈夫ですが、これも今の所原因不明です。
最も、1HZ桁に実用性は無いですが。
これらの点に尽きましては、ハードの問題なのかソフトの問題なのかも不明ですので、判明しましたら追記したいと思います。



ここまでのまとめ・反省点等

今回はハードウエア作製で失敗している様に見える記述でしたが、実は16F688カウント基板のプログラム作成、16F648A表示基板のプログラム変更に費やしている時間の方が遥かに長かったりしてます。
マニュアルも時間をかけて眺めましたし、コメント記述も充実してきたつもりです。
この辺で、「周波数カウンタ」として、実験基板では無く、ちゃんとした?ハードウエア製作としてもまとめた方が良いかなとは思っています。
実験基板でハマっている割には、実はハードウエアとしては実使用を意識した物を、ある程度作製していたりしています・・・
なぜなら、プログラムのバグ取でハマっている時のグルーミングに最適だからです。
ハードウエア作製でハマるのは結構楽しいのですが、プログラムのハマりは疲れます。

SSGはここ1~2ヶ月電源入れっぱなしです。
このカウンタ基板の電源投入後SSGから10MHZを入れ、トリマで10MHZ表示に調整します。
そのまま1日放って置くと、30~40HZは動いているようです。(SSG比)
1~2時間程度の短時間では数HZの変動で安定はしています。
使用水晶は、秋月の安い10個パックの10MHZ水晶で、加えて何の補償対策もしていないので、こんなもんでしょうか。
なるべく簡単で、そこそこ成果が上がる補償方法を実験してみるのも面白そうです。

当局はトランジスタよりFETの方が、付帯部品が少ないので好きなのですが、「FETチェッカー」の時の様に予期せぬ発振に悩まされてしまいました。
もっとFET回路を製作して経験を積まなければだめですよね、反省。
ところで2SK241の部品箱在庫が無くなったらどうしよう・・・
今の所は十分あります(昨年掻き集めた)が、サトー電気でもだんだん高価になってきました。

CMOSのデジタルICの信号ラインをオシロで観測するのはどうもよろしく無い様で、触ると状況が変化してしまい、困ります。
ワニ口クリップでなくて、ちゃんとしたプローブ買えよと言われると、最もな話です・・・

今回ゲートクローズ後のカウンタチェックルーチンを入れてみました。
最後にT0IFフラグをチェックしてから、ゲートクローズするまで数us掛かっています。
この間に入力された測定パルスにより、T0IFフラグが0Nすると、取得したデータが実カウント数を反映していないと言う事になります。
TMR0がFFHの時にT0IFフラグOFFにて最終チェックとなると、ゲートクローズ時には、
フラグON、TMR0=0となってしまうのでは、と言う事です。
その補正効果がでているのかどうかは、面倒なので確認していませんが。
普通に10MHZとか70MHZとかを眺めていても、起きないようです。

コンフィグレーションワードの記述は、最初は文献にあるような、「_HS_OSC」とかで行なっていましたが、最近はビット列記述にしています。
この記述方法はシミュレーションデバッガでもちゃんと受け付けており、確認できます。
各CPUのコメントの見易い雛形さえ出来てしまえば、この方が解り易く、かつ記述し易く、当局のお気に入りの記述方法となりました。
なぜだれも使用しないのでしょうか不思議です・・・
えっ、アッセンブラ記述そのものがもう古い??

戻る  実験・製作の記録TOPへ戻る