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

2008年08月24日

¥100 Mini LCD

DSC00811.jpg   DSC00825.jpg


昨日、今日はハムフェアで、ビッグサイトは賑あっていることでしょう。
今年は、自作品も出せず、本業も忙しくていけませんでしたが、今日は、夏休みから検討していた¥100で購入したMiniLCDの表示プログラムがほぼ出来上がりましたので日記で紹介することにしました。

このLCD自体はジャンク的に売っているもので、仕様が全く不明のものですが、ありがたいことにしっかり解析いただいた方がおられ、サイトで公開されています。当局もこれを参考にBASCOM−AVRで制御してみました。
nyaninyaさん、ありがとうございます。

http://blogs.yahoo.co.jp/nyaninya/40704212.html

LCDの表示制御は、160ビットのシフトレジスタに各セグメントデータを書き込むことによって行います。
セグメント番号とレジスタの160ビットの関係は、上記サイトで紹介されている通りですが、例えば、8桁の英数字を表示するのに、各桁データを各セグメントデータに変換するのに、あ〜でもない、こ〜でもないと、悩みながらやっとのことでそれらしく表示できるようになりました。

プログラムの概要は以下の通りです。
(1)8桁データの入力
 まず、8桁のデータをアスキーコード(8bit)でシリアル入力します。
 従って、トータルで64ビットのデータを取り込みます。
 これらは、桁ごとに8個の8ビットデータとして配列格納します。
(2)桁データの分析とセグメントデータへの変換
 次に、桁ごとに表示されるデータを分析し、そのデータに必要な桁ごとのセグメントを確定します。
(3)セグメントデータから送信データへの変換
 何桁目のどのセグメントを表示するか確定しましたので、LCDに送信する160ビットのどのデータに相当するのか1セグメント毎に変換します。
(4)8桁分の変換が完了したら、LCDに160ビットデータとして送信します。これで表示が完了です。

詳細はプログラムを参照ください。

回路図
MiniLCDTESTBoard080816.BMP

プログラム
MiniLCD0800824.bas

データ送信からのデータで表示動作中の動画
MOV00823.MPG
posted by jn3xby at 14:36| Comment(2) | TrackBack(0) | AVR&BASIC

2008年08月16日

今年も五山の送り火!

080816_s.jpg

早いものです。もう一年がたってしまいました。
今年も、8月16日は、京都の五山の送り火の日です。
夕方に雨が降り心配されましたが、一時の雨ですみました。
玄関先から見える大文字が来年も見えますように!
posted by jn3xby at 21:41| Comment(0) | TrackBack(0) | 徒然なるままに

2008年08月15日

AVR用ISP端子配列考 U

あまりコメントをいただくことがないため、見落としてしまっていましたが、JA9TTT/1 加藤さんより、以前に考えたAVR用のISP端子配列の誤挿入防止のためにNC(NonConection)ピンを追加した案をいただきました。以前にも議論してそのままになっていたのですが、具体的に提案いただきましたので、そのまま採用してゆこうと決めました(笑)
一般的には、2列配列の6Pinや10Pinが使用されていますが、配線をするときに非常に面倒です。基板を描くときはもっと面倒です。
幸いにも、AVR側のISP端子配列には規則性があり実際にISPと使用するときに配線しやすく、省スペースで実装できます。
今後のAVR使用時には、この配列で行きたいと思います。

変更したISP端子配列図は下記の通りとなります。

ISP端子配列U080815.pdf
posted by jn3xby at 23:16| Comment(2) | TrackBack(0) | AVR&BASIC

2008年08月14日

上海携帯電話ビル

DSC00779.jpg  DSC00774.jpg  
黄金のビル            小さい間口の店が沢山


DSC00777.jpg
修理の店はお客が沢山、奥では実際に修理していた

今年は既に毎月一回のペースで中国出張していますが、今まで行って見たかった上海駅周辺にあるというジャンク市場に時間が取れたので行って見ることにしました。
結論から言うと、見つけられませんでした。
ある人から、口頭で場所を聞いたのですが、ホテルの従業員は全く知らず、会社関係の人間に聞いても今ひとつはっきりしません。
出発前に、インターネットで確認してからとも思ったのですが、あいにくホテルのインターネットがなぜか接続できず、上海駅周辺という情報だけで時間をつぶして見ました。
唯一見つけたのが、写真のビルです。
中に入ると、なんとビル全体が携帯電話関連を扱ってるお店群です。
秋葉原のラジオデパートを彷彿させる様相でした。
しかし、売ってるものはすべて、携帯電話、その部品、修理、そしてSIMカード、オンリーです。
日本の電話も売ってました。
なんといっても驚きは携帯電話のケース、液晶、キーボタン、基板など、あらゆる部品が売ってます。当然のことながらおびただしい量です。
基板を売りに来ているらしい人もいました。
中国では、携帯電話の盗難が多いようですが、こういうところで売りさばいているのでしょう。
町中にも多く見かけますが、あの小さい基板を修理する専門のお店もたくさんあります。
ある人が言っていましたが、品質が悪い国では修理技術は卓越しているようです。
薄暗い、言葉のわからない、おそらくあの時間帯には日本人は当局だけだと思える状態で、遠慮した写真しか取れませんでしたが、雰囲気だけでも掲載してみます。

DSC00775.jpg  DSC00778.jpg
SIMカード専門店も多く存在、中国人が好きな番号(8888)など縁起のいい番号は赤く表示されていた。きっと高いのだろう!?

肝心のジャンク市場は、上海駅よりもう少し東側の宝山駅に近い「紅江路」であることが判明しました。今度行った時に時間ができたら行ってみたいと思います。
posted by jn3xby at 12:41| Comment(0) | TrackBack(0) | 徒然なるままに