2008年08月31日

¥100 MiniLCD Frequency Counter

DSC00833.jpg

DSC00831.jpg   DSC00834.jpg

 先週はMiniLCDでの表示が可能となりましたので、¥100マイコンであるATTiny2313 1個と前置分周器(74AC393)で安価な周波数カウンタができないか試してみました。
 ATTiny2313を使った周波数カウンタは以前に作ってあるので、問題は2KBのメモリーの中にプログラムが書けるかということであると予測しましたが、その通りでした。
先週の表示プログラムと以前の周波数カウンタプログラムの合計でメモリー容量は150%で全く入りませんでした。
 そこで表示は数字表示のみにあきらめ、重複しているルーチンは、集約して、やっとカウントした周波数を表示につなげるプログラム領域がメモリー全体の6%ほど確保できました。
LCDの方は、表示する桁のデータを1文字ずつ処理しますので、カウンタの周波数の値を数値から文字列に変換し、その文字列を1文字ずつ処理して表示のルーチンに渡して表示するようにしました。
 ここで発生した問題は、変数の数が多すぎて、RAMエリアが足らないと言って来ました。
かなり悩みましたが、外部I/Fと違い、全て内部処理していますので桁毎の値を配列に持つ必要が無いことに気づき、桁毎に160bitの表示データに直接変換してゆくことで変数を減らすことができました。
 これで、やっと周波数が表示されるようになりました。
プログラムメモリー容量は99%となっており、ぎりぎりです。
 しかし、まだ問題がありました。
周波数の表示が左詰となり、低い周波数で読みにくい状態となっています。これの改善のためには更にプログラムメモリーを削減する必要があります。
 これには、奥の手を使いました。タイマー割り込みの処理ルーチンのアセンブラ化です。割り込み処理はBASICコンパイラはどのレジスタを退避すればよいかわかっていませんので、ほとんどのレジスタを退避しています。これがプログラムを肥大化させているわけです。(PUSH/POP命令)
ためしに、1個ずつレジスタの退避をしながら動作に影響が出ないか実験してみました。思ったとおりです。タイマー割り込みでは効果はありませんでしたが、カウンタ割り込みでは大幅に減らすことができ、結果として93%までとなりました。
 これで、表示位置を調整するプログラムを入れることができます。結果として、96%で右詰表示の周波数カウンタが完成しました。
 周波数は数字のみで桁を区切るコンマや、KHz/Hz表示などありませんが、小型のカウンタができて満足しています。
 カウントする範囲は、下限はわかりませんがHZ単位で、99MHz位まではいけると思います(過去に作ったカウンタの事例から)
 前段のアンプ部はまだ作っていませんが、秋月で売っている「1kHz〜30MHzオシレータ LTC1799モジュール」を接続し30MHzまでが表示可能であることを確認しています。
(ロジック出力なのでこういうとき便利です。簡易信号源としても有効だと思います)
写真は、信号源モジュールとカウンタの様子。14MHz付近を表示しているアップ。低い周波数を表示したときの右詰表示の様子を掲載してみました。

回路図:
100en MiniLCD FrequencyCounter080829.BMP

プログラム:
MiniLCDFrequencyCounter0800831.bas
posted by jn3xby at 17:05| Comment(2) | TrackBack(0) | AVR&BASIC
この記事へのコメント
こんばんは。
ATTiny2313に表示部とカウンタ部を組みこまれたのですね。
素晴らしい!!ワンコイン周波数カウンタですね。

私はハムフェアから帰ってきた後、
まったく半田ごてを握っていません。^^;

PS.
回路図のCPU型番がAT90S2313になってます。^^


Posted by JE6LVE/3 高橋 at 2008年09月05日 23:01
LVE/高橋さん、こんばんは。
コメントありがとうございます。
リゾートに行かれていたようで、半田ごては握れませんよね!
また気が向いたときにでもボチボチと....。
当局も、この3日間連続でお客さん対応で59漬けです。先ほど帰りました。
明日は雨が降りそうですが、芝刈りで、月曜からは1週間出張です。
土曜に帰ってくるのですが、そのまま6の方に3年ぶりに帰省して15日に帰京の予定です。

ほんとですね!ご指摘ありがとうございます。回路図流用がバレバレです(笑)
時間ができたときにでも修正しておきます。お許しを!
Posted by jn3xby@岩永 at 2008年09月05日 23:35
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/18626904

この記事へのトラックバック