2008年12月31日水曜日

チップ部品のススメ(その3)


表面実装に限らず、省スペースで配線を行なうには「UEW」、ポリウレタン導線が最適だ。特に0.2〜0.3mmは非常に使いやすい。確かめた訳ではないけど数十mA程度の電流であれば十分流せるので重宝している。

今年ももうすぐ、終わり。早かった、、、。

2008年12月30日火曜日

スキー場の夜明け

年内最後のスキーに行ってきた。冬休みに入っているので子供が多かったけど、天気が良く、結構たくさん滑れた。午前中はスノーボードをして午後からはスキーをする。長い時間やっていると飽きてくるので(笑)。

2008年12月28日日曜日

FPGAのUSBダウンローダー

FPGAに結線情報を転送するには書き込み器が必要となる。パラレルポートを用いたダウンロードケーブルは回路図も公開されているし、作るのも、制御するのも簡単である。しかし、今市販されているパソコンにはパラレルポートは無い。USBで接続するダウンロードケーブルが必要である。

使用するのはCQ出版『DesignWave』2007年7月号付録、Xilinx社製「Spartan-3E」「XC3S250E」である。

これに書き込む為のJTAG信号をUSB経由で書き込む為のアダプターが必要となる。しかし、自作するはちょっと難しすぎる、、、(泣)。市販品を使う事にした。しかし、純正品は高いので、一万円以下で買えるものを選んだ。


2008年12月27日土曜日

雪が


スキー場に雪が降らずに、家の近くに降る、、、。なんとかして欲しい(笑)。

2008年12月25日木曜日

EOSバッテリーアダプター

Canon EOS Digital シリーズのバッテリー「BP-511」の寿命がつきると、アダプターを作ってしまう(笑)。まあ、当然バッテリには寿命があるから、いずれは容量が激減して、ほぼ撮影に耐えられなくなる。そうすると、セルを抜いてアダプターにしてしまう。ラジコン用のNi-cdバッテリーをつなげていいのかどうか分からないけど(汗)。まあ、電圧レベルは同程度だから大丈夫だと、、、、(爆)。これで、外部バッテリー化が可能になった。「Canon EOS  Kiss Digital」とか「EOD D30、D60、10D、20D、30D、40D、5D」とか使えるかな、持ってないけど。

2008年12月24日水曜日

次はCPLD&FPGA?

CQ出版の『DesignWave』2007年7月号には「FPGA」が載ったボードが付録として付いてきている。Xilinx社製の「Spartan-3E」ファミリの「XC3S250E」である。結構な規模のFPGAが載っていて、しっかりとボードが作られていて、定価2480円とは安い。これで、CPLDでは入りきらない回路が組み込めて、いろんな事ができそう。

2008年12月21日日曜日

チップ部品のススメ(その2)


表面実装部品(チップ)は大きさも様々だけど、2.54mmピッチのユニバーサル基板に付けると意外と収まりがいい。特にホールとホールの間にはコンデンサや抵抗を簡単に取り付けられるし、何よりも部品でスペースを取られないから、非常にコンパクトで、薄く実装出来る。


さらに表面実装で役に立つのが「UEW(ポリウレタン導線)」である。細かな配線を行なうのに最適で皮膜線の様にかさばったり、皮膜を剥く作業が必要ないので素早く作業が出来る。

2008年12月20日土曜日

ナイトライダー

video
AVR MEGA 164Pを使って、32個のLEDを点灯させてみる。いろんな点滅パターンがあるが、ソフトウェアで実行する「PWM」制御が面白い。20MHzの周波数でマイコンを駆動させれば、ちらつきはほとんどない。もっと面白い点滅パターンを考えてみることにする。

2008年12月19日金曜日

LED点滅回路(32ch)

AVRを使った32チャンネルのLED表示回路を作ってみる。いわゆる「ナイトライダー」。使う部品は次の通り

LED : GM5BC01250AC : シャープ(SHARP)製、高輝度青色チップLED
CPU : AVR MEGA 164P : Atmel製 8bitマイコン
Transister : TD62083 : 東芝製トランジスタアレイ
その他 : チップ抵抗、タクトスイッチ、セラロック、ICソケット、UEW、コンデンサ etc...


AVR MEGA 164Pの使えるポートをすべてつなげて32個のLEDを制御する。ただLEDを光らすだけの回路だが、色々奥が深い。いろんな点滅パターンを試してみる。まあ、とりあえず、作るのが大変、部品は小さいし、配線は多いし、、、(汗)。

チップ部品のススメ(その1)

自作派にとって、2.54mmピッチのICや基板は必需品である。手頃な大きさだし、ハンダ作業もしやすい。しかし、だんだんICもフラットパッケージが多くなり、リード部品も少なくなってきている。そこで、思い切って表面実装部品を使ってみる。最近では小売りもしてくれるので、しかも安いし。
チップ抵抗やチップコンデンサは3216とか1608が多い。1608は1.6mm×0.8mmのこと、これぐらいならピンセットでつまんで実装は可能だ。テクニックについてはまた今度。

2008年12月18日木曜日

AVR-ISPライター

Atmel純正プログラマー「AVR-ISP」の互換ライター、当然俺が考えた訳もなく「でんし研」さんのライターをそのまま使わしてもらっている。使用しているマイコンはCQ出版『トランジスタ技術2008年8月号』の付録基板である。マイコンはNECの78K0、USBドライバー内蔵で、非常に便利。さらにIO電源が別に供給できるから、ターゲット電圧が5Vでも3.3Vでも対応できる。なんと言っても、AVRの開発環境である「AVR Studio」から直接書き込みできるのがうれしい。サクサク書き込めるし、早いっ!!。

2008年12月17日水曜日

AVRライター

AVRマイコンにプログラムを書き込むのに、専用のライターを使う。特にUSB接続で出来るライターはUSBポートしかないパソコンには必需品。
しかし、マイコンはAVR MEGA 48を使うから、そのプログラムはどうやって書き込めば良いのか、、、、(汗)。卵と鳥の問題が発生する。どっちが先かなあ、、、。

2008年12月15日月曜日

新計画:LEDタッチパネルディスプレイ

この前から試しているドットマトリクスディスプレイの応用を考える。ちょっと試したところ、非常に面白かったので、完成版をつくりたい。

使うのは秋月でも売られている。「TOM-1588BH」のモジュール。
CPLDかマイコンで点灯制御、あと、フォトトランジスタを使った座標認識も加える。
出来るかな、、、、(汗)。

2008年12月14日日曜日

よくよく考えると、、、

ちょっと冷静になって考えてみると、
LEDが光っている>>フォトトランジスタが反応
LEDが消えている>>フォトトランジスタが無反応
つまり、常にLEDを光らしておいて、負論理にすればそれなりの反応になるのでは、、、。

ちなみに、赤がLEDのONでそれに遅れて、黄色がフォトトランジスタの出力波形。

ってことで、光っているLEDドットマトリクスディスプレイにタッチすると、LEDが消えるようなシステムを作った。

video
だんだん、面白くなってきた。まだまだSH-2の可能性は計り知れない。

システム構成
CPU : SH-2 7144F
LED : 8×8 LED dot matrix display × 3
LogicIC : 74HC238AP,74HC4514AP,TC40H161P
Transister Array : TD62783AP × 3
PhotoTransister : SPS-135C

つ、ついに限界が、、、(汗)

来るべき時が来たというか、マイコンの限界が見えたというか、俺のプログラム能力が底をついた。
8×24bitのLEDドットマトリクスディスプレイで「タッチパネル」もどきを作る。

仕組みは簡単、ディスプレイの走査に合わせて、フォトダイオードの入力をチェックする。これで、反応があれば、その部分にフォトダイオードがあることが分かる。しかし、192bitのLEDを一つずつ走査して、さらにチェックを行なうのは「SH-2」では不可能だった。走査周期も長いし、表示はちらつく、さらに割り込みもかなりシビアだ。というより、ソフトウェアの限界なような気がする。ただ、走査するだけなら、CPLDで回路を構成した方が確実な気がする。まあ、また今度試してみるけど、、、。

video
とりあえず、酷いな、、、(涙)。もっと、まともに作ろう。

七つ道具のうちの三つ

スキーの板を整備するのは大切、なんて言っても自分が乗るスキーなんで。
ワックス、アイロン、スクレーパは必須アイテム。本格的なシーズンインに向けて、何回も何回も塗り直す。

モニタデバッガ、Htermでの開発法

それでは、ここで、CQ7144SRAM付きのプログラム開発手順をまとめておく。

ROM >> モニタデバッガ
内蔵RAM >> モニタデバッガのデータ、仮想割り込みベクタ、スタック領域、ヒープ領域
外付けRAM >> ユーザープログラム、データ

の様にメモリの配置を決める。ここで、「HEW」のセクション設定例を示す。
HEWが自動的に生成してくれる、リセット、初期化関数も含め、ユーザープログラムとデータは外部RAM領域に配置する。

さらに、lower.cを追加して、モニタデバッガをビルドした場合は「MONITOR.MAP」でprintf、scanf関数がどこに配置されているか、アドレスを確認する。


そこで、以下のマクロ文を定義して、printf、scanf関数を呼び出す。ここで、「stdio.h」をユーザープログラムで呼び出す必要はない。

2008年12月13日土曜日

モニタデバッガの修正(SRAM ver.)


では、SRAMを追加した付録基板用にモニタデバッガを修正し、書き込んでみる。
まず、構成は以下の通り

CPU : SH-2 7144F
Board : Interface 2006 June CQ7144
SRAM : R1RW0416D 512KByte

ここで、7144Fのデータシートを見てアドレスマップを確認する。各メモリの開始アドレスをチェックすると、
0x00000000 : 内蔵ROM256kByte
0x00400000 : CS1(外部SRAM512kByte)
0xFFFFE000 : 内蔵RAM8kByte
となっている。

内蔵ROM領域にはモニタデバッガのプログラムを配置
外部RAM領域にはユーザープログラムとユーザーデータを配置
内蔵RAM領域にはモニタデバッガのデータ領域、スタック領域、ヒープ領域を配置

これで、外部RAMのすべてをユーザーが自由に使える設定となる。とりあえず、モニタソフトの修正からはじめる。ルネサスのHPからサイト検索で「sh hterm」と検索すると、サンプルプログラムと通信ソフト「Hterm」がダウンロードできる。ここで総合開発環境HEWとコンパイラパッケージを使用して「monitor」をもう一度ビルドする。その際にいろいろと修正が必要となる。

まず「monitor.sub」ファイルの修正

INPUT SUPERH,MONITOR,LOWER
LIST MONITOR.MAP
SHOW SYMBOL
OUTPUT MONITOR.MOT
FORM STYPE
CHANGE INFORMATION=1320
NOOPTIMIZE
LIBRARY SUPERH,7144
LIBRARY MONITOR
DEFINE $BRR=C
DEFINE $STACK=0
START VECTOR/0,ROM/400,P,C/0006000,RAM/ffffE000,USER/FFFFE160,SCI/FFFF81B0

とりあえず、赤字の部分を修正。
これは7144用の設定で、ROM領域、RAM領域の指定を行い。Htermとの通信速度は「57600bps」で設定を行っている。計算方法はデータシートに載っているが、CQ7144の場合は周辺クロックが24MHzなので、24000000/32/57600-1 = 12 = 0x0C となる。

さらに「monitor.c」の修正箇所は通信用ピンの設定と、外部空間へのアクセスの設定である。
/************************************************************************/
/* SH7600 Monitor Program Ver. 2.0A */
/* Copyright (C) 2003 Renesas Technology Corp. */
/************************************************************************/
#include "7144s.h" /* */
/************************************************************************/
/* User Initialize Module */
/* Input PR <-- Return Address */ /* Output Nothing */ /* Used Stack Area --> 0(0) Byte */
/************************************************************************/
#pragma noregsave(INITIALIZE) /* Non Register Save */
void INITIALIZE(void) /* */
{ /* */
/*SCIで使用する端子の設定を行う */
PFC.PACRL2.BIT.PA4MD = 1; /* PA4 is TxD1 */
PFC.PACRL2.BIT.PA3MD = 1; /* PA3 is RxD1 */
/* */
/*BSCのBCRでCS1空間を有効にする */
PFC.PBCR2.BIT.PB6MD = 2; /*A18を有効にする */
PFC.PBCR2.BIT.PB1MD = 1; /*A17を有効にする */
PFC.PBCR2.BIT.PB0MD = 1; /*A16を有効にする */
PFC.PCCR.WORD = 0xffff; /*A0からA15を有効にする */
/* */
BSC.BCR1.BIT.A1SZ = 1; /*CS1は16bit空間 */
BSC.BCR2.BIT.IW1 = 0; /*CS1空間後のアイドルサイクル無し*/
BSC.BCR2.BIT.CW1 = 0; /*CS1空間連続アクセスアイドルサイクル無し*/
BSC.BCR2.BIT.SW1 = 0; /*CSアサート拡張有り */
BSC.WCR1.BIT.W1 = 1; /*1wait */
PFC.PDCRL1.WORD = 0xffff; /*D0からD15までを有効にする*/
PFC.PACRL1.BIT.PA14MD = 1; /*RDを有効にする */
PFC.PACRL1.BIT.PA13MD = 1; /*WRHを有効にする */
PFC.PACRL1.BIT.PA12MD = 1; /*WRLを有効にする */
PFC.PACRL1.BIT.PA11MD = 1; /*CS1 出力PIN */
/* */
} /* Goto Monitor Program */
これで、モニタデバッガが起動した時に通信と外部RAMへのアクセスが可能となる。

ここでプロジェクトに「lower.c」を追加し、ビルドを行う。ちなみにprintf、scanfを使わない場合は必要ない。書き込み用の「MONITOR.MOT」ファイルが生成されるので「FDT」等でマイコンに書き込む。

2008年12月12日金曜日

ここで、おさらい。

今の実験環境をもう一度まとめてみる。

CPU : SH-2 7144 :lower right
Display : SLX-5015 :upper right
CPLD : XC9572 :lower left
Sensor : KXM52-1050 :upper left

システムのブロック図は以下の通りである。
加速度センサは3軸で「XYZ」の出力を持つ。これをA/D変換し、その情報から図形を描写する。ここで、ディスプレイモジュールは5Vで駆動している。一方、7144Fは3.3Vである。よって、CPLDによって「3.3V→5V」へのレベル変換回路を形成している。適当なロジックIC、例えば「74VHC541F」でも十分だろう。けど、将来拡張のためにCPLDを付けている。何を拡張するのか、、、(笑)

複雑な計算を行なうので、7144Fには外付けのSRAMが付いている。さらに、色々と基板には修正がある。この付録基板の設計ミス?に悩まされることもあるが、安いので文句は言わない(言ってるけど)。
ここで、開発に使っているモニタデバッガを修正し、再度ROMに書き込む必要がある。それなりに設定も修正する。特に、メモリの配置はかなり重要である。詳しくはまた今度。


ディスプレイは使いやすいが制御にはちょっと工夫がいる。表示の為のドライバー回路はすでに「SLX-5015」に組み込まれているが、表示情報の転送がややこしい。行の情報はパラレルアドレスで、列はシリアルデータとして転送する。コネクタも2.54mmピッチとはいかない、、、(涙)。これも詳しくはまた今度。



2008年12月11日木曜日

もう、何がなんだか

ここまで来たら、正三角形と円を表示させてみる。なかなか面白いけど、もうどこをどう動かせばどうなるかは分からない(爆)

video

SHの演算処理がそれなりに早いので、結構スムーズな気がする。もっと処理が早いマイコンでも探してみるか、、、、。

動く三角形!?

とりあえず、線分を書く事によって、三角形を描いてみた。ただ書くだけでは面白くないので、加速度センサを使って、位置と大きさを変えてみる。パラメータは適当なので、どこをどう動かせばどんな三角形になるのか、さっぱり分からない(汗)。

video

正三角形を維持するには、傾きが60度ごとにずれているということ、あと一点で交わらない条件を決めてしまえば、あとは本当に簡単。

2008年12月10日水曜日

正三角形を描く

三つの直線が必ず「正三角形」を描くような式を考えてみる。傾きが必ず60度ずつ異なり、かつ一点で交わらないような直線。

video

ちょっと、複雑そうな描写でも、式は簡単!。しかし、これは三角形に見えないなあ(汗)。

2008年12月9日火曜日

三角形を作るには

ここで、ちょっと数学を思い出してみる。直線を書くのは簡単だった。そこで、三角形を書いてみようと思い、とりあえず、適当に直線を3つ書くとこんな感じになる。
確かに、三角形は出来てるみたいだけど、さて、ここからどうするか、、、、。

2008年12月8日月曜日

傾きに応じて、位置と大きさが変化する円

24bit×24bitのLEDディスプレイの情報を送信するには多少の時間がかかる。モジュールとは中途半端なシリアル通信をしている。というのもアドレスはパラレルで、点灯情報はシリアルだから。
video
さらに、円を表示させるにはfloatで無意味に複雑な計算を行なっているので、反応が遅れてしまう。もっと高速化するにはどうすべきか?

2008年12月7日日曜日

方針決定!?

この前から、悪戦苦闘しているLEDドットマトリクスモジュールがある。
物はSLX-5015でSANYO社製である。非常に便利だが、さすがに消費電力が、、、、。

それはともかくとして、SH-2 7144Fと組み合わせて面白い物を作ろうとしている。とりあえず、使用している主な部品である

CPU : SH-2 7144
Display : SLX-5015
CPLD : XC9572
Sensor : KXM52-1050

どれも秋月とか若松で購入可能だ。CPLDは今のところレベル変換だけの為に使っている。LEDモジュールは5V系でSHは3.3V系だから、XC9500シリーズはIOに3.3を供給すれば簡単にレベル変換ICとして使える。使い方あってるのかな??(笑)。

何はともあれ、円を表示させてみた。加速度センサによって表示位置を変えている。
video

次に、SHの限界に挑戦!

先日から何となく作り続けている「?」、名前は決めていない。

AVRでは計算能力、メモリ容量の限界に近づいてきた。ここで、32bitマイコンであるSH-2 7144Fを使う。「Interface 2006年 6月号」の付録基板であるCQ7144を発掘した。なんと、裏にはSRAMも張り付いている。これだけの容量があれば、サクサク開発できるかな?
とりあえず、モニタデバッガを使って開発する事にする。なんと言っても512kbyteのRAMメモリは使いたい放題!!。スタックやピープ領域は内蔵RAMに配置するとして、プログラムとデータはすべて外部RAMに配置する。これで、外部メモリのすべてを自由に使える!!


2008年12月6日土曜日

調子に乗りすぎて

AVRの計算能力の限界に近づいた、、、(笑)
video
加速度センサとドットマトリクスディスプレイを使用した「水準器?」を作ってみた。内部では禁断のfloat演算を行なっているので、非常に動作が遅い「AVR MEGA168」を使っているが、8kbyteのメモリの3分の2を占有している。この辺りが限界か、、、、(泣)

でも、反応が遅いが出来は十分!!

2008年12月5日金曜日

調子に乗って

青色発光ダイオードでナイトライダーを作った。しかも24個のLEDを使って、マイコンはAVRでスタティック制御で表示させている。
video

2008年12月3日水曜日

ついに、DSO!!


調子に乗って、DSOを買ってしまった。でも一番安いやつ、造りはおもちゃっぽいけど、性能に期待しよう(笑)。

ちょっと昔なら、中古のアナログオシロスコープも良い値段をしたのに、今や個人でも十分手がでる値段になっている。これで一家に一台、オシロスコープの時代が来るかも(爆)。