2010年1月11日月曜日

パルスジェネレータ&カウンタの製作(その5)

もうあと少しなのだが、なかなか完成しない。
すでに、パルスジェネレータ部分は出来上がっていて、残りは周波数カウンターの表示のみ。

MAXⅡのロジック利用率も90%を超えている。はじめはロジックエレメント数が570もあるから大丈夫と思っていたが、すでに余裕はない。こちらも少しずつ余分な機能などを削った。

一方、PICのメモリー不足がまだ続いている。変数をグローバルにしたり、簡単な関数はマクロにしたり、関数呼び出し部をベタ書きにしたりして、パルスジェネレータ部分は動作した。

しかし、今度は周波数カウンタの読み取りで暴走が始まる。MAXⅡから得た周波数をいったんRTOSのキューに収めて別スレッドで表示させていたが、このキューの処理が意外とスタックを食うようだ。RTOSは、便利なのだが、その分メモリーを余分に消費してしまう。

2010年1月10日日曜日

スタックオーバーフロー


MPLAB C30で調子よくプログラムを作って、デバッグモードで動かして確認を繰り返していた。
すると、動かしている途中でリセットがかかるようになってしまった。

MPLABには、画像のようなメモリーの使用量が表示できる機能がある。
これを見る限り、まだまだ余裕があると思っていたのだが、どうも違うようである。

マニュアルによると、ソフトウェアでスタック領域の監視を行っているようで、デフォルトのままだとスタックオーバーフローが発生したらリセットするようになっているのだ。

ここら辺が、一般的なPC上で開発するソフトウェアと組み込み用のそれとの大きな違いだ。普段PCのメモリーがたっぷりある環境で開発することに慣れているので、いつものように関数なんかはどんどん作ってしまうのだが、これがスタックの浪費につながってしまうのだ。

スタックの消費量を抑えるように、プログラムの見直しをしなくては。

2010年1月5日火曜日

パルスジェネレータ&カウンタの製作(その4)


PIC側のソフトウェアの製造とデバッグ中。。。進捗50%ぐらい。

LCDの表示とキー入力やメニューと各設定への遷移は完了。


PIC側の残りは
・パルス幅とデューティー比の編集部分。
・入出力アクティブ表示用LED点灯。

CPLD側は、
・パルス出力
・カウンター
・ブザー

さあ、また次の休みに頑張ろう。

2009年12月27日日曜日

CPLD MAX2の動作確認

まずは、MAXⅡに5つのLEDを順番に点灯させていく簡単なプログラムを登録して動作確認。



VHDLソース

2009年12月20日日曜日

パルスジェネレータ&カウンタの製作(その2)

先週作ることができずに残っていた周波数カウンタ用のプリアンプとプリスケーラ部分を作った。

NEC製のuPB1507GVというプリスケーラは、3GHzまでカウントできるものなので、高周波でも大丈夫なようにしなければならない。そのため、写真のように、25mm×35mmに切った両面生基板の上にカッターナイフでプリントパターンを削りだした。

プリスケーラのピンは0.5mmピッチなので、とても手間のかかる作業だ。手作業なので、何度も勢いあまって、基板上の余分なところまで切ってしまったりして、傷だらけの配線。こういうのは、早いところCNCフライスを作って自動化したいところ。

部品を慎重に配置しながら半田づけ。そしてテスターでチェック。
何箇所か半田ブリッジをつくってしまう。8本足のプリスケーラをいったん外してカッターナイフでパターンを削り直してリトライ。

左の画像は、なんとか、形になった状態。あちこちにあけた穴は、表面と裏面のグランドをつなぐためのスルーホール代わりのもので、ここにスズめっき線を通して半田づけする予定。


そして、左の画像がRFアンプ部と合体したところ。

レギュレーターの上を配線が乗っかっているのが多少気になるが、それほど発熱しないだろうと思うので、そのまま放置。





最後にケース本体に収めて、ようやくハードウェアの出来上がり。








さて、このままではただの箱。PICとCPLDのプログラムを完成させなくては。。。
ということで、製作は、まだまだ続くのであった。

2009年12月13日日曜日

パルスジェネレータ&カウンタの製作

パルスジェネレータ&カウンタを作っていた。

ケースの加工を先週行って、昨日今日と配線を行った。
ケースがそれほど大きいものではなかったので、いつもとは逆の工程で、先にケースと各パーツのレイアウトを決めて、そこに配線をしていくというやり方にした。

今日中に全ての配線が終わるだろうと思っていたら、カウンタ用の入力アンプ部で、コンデンサが2つ足りないことに気がついた。
しかし、すでに日が暮れてしまっていたので、不足パーツは今度の休みに買いに行くことにする。

とりあえず、いま出来上がっている部分の配線をテスターでチェック。1箇所配線忘れを発見した。

そして、PICとCPLDのコーディングへと。。。

今度の日曜日には完成するかな?

2009年12月6日日曜日

ダイアルゲージなど購入

ダイアルゲージ、マグネットベース、曲尺、スコヤをMonotaRoで購入した。ダイアルゲージとマグネットベースは中国製。だから日本製に比べるととても安い。機械系はまったくの素人なので高価なものは必要ないでしょう。

基板切削用のCNCフライスをつくるのに最低これぐらいは必要だろうと。
ついでに手持ちのボール盤の切り先のブレも直しておきたいところ。

自作CNCフライス1号は木製ベースだからそれほど高い精度を追求していない。できるだけローコストにして、どこまで出来るか。それで、もっと高い精度のものが必要であれば、ベース部分を作り変えるだけのこと。それまでに基本的なノウハウなどを習得できるだろうから、次に作るものはさらに良くなるはずだ。

基本的なスペックは、
・200x200x200mmの可動範囲
・精度は、5/100~10/100
ぐらいを想定。

そろそろ、CNCフライスの図面を引こうかな。