posted by
rerofumi
2011/11/28 月曜日 0:01:11
ヒューマンデータ の PLCC68 PLD シリーズというのがある。PLD(FPGA/CPLD) を小型モジュール化して PLCC 68 ピンサイズにしたものだ。
DIP(2.54mm) の PLCC ソケットが使えるのでユニバーサル基板とかで工作しやすいというもの。今のところピンも合わせてあるので PLCC シリーズを載せ替えて使う事もできるっぽい。
面白いなーと思って一個買ってあった。IO は少ないけれども、扱いやすいしちょこっと遊んだり実験したりするには十分じゃないかと思ったので。
しかし、これは単なるモジュールなので何かするには基板を起こす必要がある。当たり前と言えば当たり前のお話。
ユニバーサル基板でもなんでも乗せない事には JTAG ケーブルも繋がらない。
なので、これまた実験としていじり倒したい PSoC3 とセットのテストボードをこさえてみようというのが今回のお題。
PSoC3 は以前作成した変換基板ベースで、これまた DIP サイズにしてあるもの。
写真のは CY8C3246 だけれども CY8C3866 も買ってあるので載せ替えられるように。
回路図。
全ピンを引き出しているわけじゃないけれども、そこは無理しても面倒なだけだからそこそこの数引いてあれば良しとするお気楽設計。
CNCで作成、片面ジャンパ3本。
実装や設計のチェックはこれから。本日は基板を作ったところまでに。
まあ、この段階でちょっと設計手直ししたいところが既にあるので、後日また作り直す予定ですが。
posted by
rerofumi
2011/9/10 土曜日 14:17:17
Gynostemma Ver.1.50.0 (20110910) をリリースした。
お待たせしましたというか、ようやくというか、特殊なパターンで内側にゴミが残るバグを修正することができた版となる。
通常私が使っている分には出会わない現象だったので確認が遅れたのだけれども、
時たま上の画のようにパターン内側にひげゴミが残る事があった。
出る状況も限られていたのでなかなかわかりにくかったのだが、乱数で任意のパターン線を数本引いて問題ないかを評価するユニットテストで回数ぶんまわすことでようやく不具合が生じる単純パターンを見つけ出すことができた。
わかってしまえばどうと言うことも無い簡単なバグであった。
その不具合を修正することでようやくゴミ残りバグを根絶することができた。
まあ、それが無くなったからといって完璧では無いことは作った本人が理解しているのだけれども、ひとつよろしくお願いいたします。
posted by
rerofumi
2011/8/7 日曜日 20:07:57
Gynostemma の不具合を修正した Ver.1.40.0(20110807版)をリリース した。
これまで時たま線が消えるとかいう不具合があって自分で使ってても気がついていたのだけれども「運用で回避(基板CADでパターンを変えて出にくくする)」していた問題をちょっとまじめに修正。まだ完全じゃ無いあたりが残念だけれどもこれでまた使っていこうと思う。
過去の記事を見返すとGynostemmaの元となる基礎研究を8月に始めているのでちょうど一年。CNCフライスを購入したのは昨年7月なのでそっからみてもだいたい一年。先日の記事にあるように0.5mmピッチのプリント基板を作るのが目的だったのでこの一年の積み重ねでようやく到達することができた次第。ゴールじゃないよ、ようやくスタート地点に立ったのだよ。
CNCフライスだけじゃなくて3Dプリンターも全部つながっているので色々と振り返ってみる記事。
Read the rest of this entry »
posted by
rerofumi
2011/7/31 日曜日 17:32:21
以前から書いている様に CNCフライスを使ったプリント基板作成で一つの目標が 0.5mm ピッチのフラットパッケージ部品を使えることにある。
QFP で言うとだいたい 48Pin から 144Pin あたりがそのあたりのピッチ幅なのだが、この 0.5mm ピッチが自作できると一気に工作の幅が広がる。幅というより夢かもしれない、実際は配線しきれないだろうし。
0.5mm ピッチパッケージの手習いとして安いチップから挑んでいこうと STM32F100 の 48Pin QFP を購入した。1個あたり 310円の Cortex-M3(ARM)マイコン。USBとか気の利いた周辺機器はついていないけれども、ROM64kb/RAM8kb のARMマイコンがこの値段で買えるのは魅力。
ちょっとしたマイコン工作にこれが使えるとおいしいんじゃないかと思っていた次第。
意のままに実装するために、0.5mmピッチ基板の作成は必須なのですよ。
まずはテストボードでも作ってみるべと適当に回路図引き。
基板設計。
前回試しで導入した2枚基板貼り合わせによる簡易二層配線を本格的に実装するため最初から二層で設計していく。さすがに二層でないと配線できないわ。
何度も何度もトライしたり設計を手直ししたりして一組の基板が完成。
流石に 0.5mm ピッチともなると精度が必要で CNCフライスの操作やメンテナンスといったエンジニアリングスキルも必要になってくるあたり。
ずっと基板を作り続けてきたおかげでずいぶんとスキルも上がり精度も向上した。ここに来てようやく 0.5mm ピッチに挑めるようになったという感じ。昔の基板を見返すと精度が違うわというのがわかる。
直角配線もそろそろやめたいのだけれども、CNCフライスで加工する分には斜めを含めない方がやりやすかったりするのよね。
0.5mm ピッチを作るという目標としては大成功。無事 STM32 を実装できた。
スルーピンによる二層配線も特に問題なさそう。
これくらいの規模なら作れるという自信が持てた。
Download: stm32F100_test1.zip
今回の回路図とK2CADファイルとgerverファイルの詰め合わせ。
基板ができたぞバンザーイなのはいいけれども、実はまだ動作確認をしていない。
適当に幅のあるサイズで作ったらブレッドボードにもうまくのらなくてどうしようとかそんなあたりも。ブレッドボード2枚で隙間開けつつテストボードでブリッジさせるしかないかな。
気が向いたらJTAGの動作確認したり、テストコード書いたりしたいのだけれどもなんせ目的が「基板を作る」ことなのでこの時点で満足してしまっていたり。
絶対改修なしでは動きださないよなあと思いつつ。
posted by
rerofumi
2011/7/16 土曜日 18:38:40
前回の 3LED、3ボタンのプロトタイプに続いて 8LEDボタンのコンソールを作成。
動作しているところが写真で説明しにくいので動画にしておいた。
【ニコニコ動画】I2C制御のLEDキーモジュールをつくってみた
Youtubeじゃないと、ってかたはこちら http://youtu.be/sRLdotBFUX0
Read the rest of this entry »
posted by
rerofumi
2011/6/29 水曜日 23:11:56
さて、前回(といってもかなり前ですが!) I2C接続で表示できるLCDモジュール を作製した。
これのシリーズとして今度は I2C 経由で読み取れるボタンと、LEDチカチカテストができるコンソールパネルを作製したいと思う。
以前なんとなくLEDとタクトスイッチが対になったモジュールを作ったらこれが便利だった物で。
ちょっとしたテストとか評価とかの時にLCDモジュールとセットで使うと、もうそれだけで簡易アプリになったりするのだ。
ただ、LCDモジュールもスイッチもベタで使うとGPIOを沢山消費してしまう。他のテスト用の足がなくなってしまったりするのだ。
そこでこういったテストコンソールは全部 I2C 等のシリアルインターフェースでぶら下げてしまえばよいのではないかと考えるにいたった。
I2C であればアドレスを持つので、適当にハブかなんかを使って繋いでいけば 127個まで繋いでも 2線しか消費しないで済む。
というわけで、LCDモジュールに続き 8個の LED と 8個のボタンスイッチを持つテストコンソールを作製する。
LED内蔵スイッチを使って、チカチカとスイッチ入力の両方を行うのが目標だ。
Read the rest of this entry »
posted by
rerofumi
2011/6/26 日曜日 19:51:04
CNCフライスで生基板とかアクリル板とかを加工する際は、テーブルに両面テープで固定してやる。
この際弱い両面テープだと切削加工中に剥がれてしまい無残にも加工失敗となるし、強すぎるとこんどはテーブルから剥がす事ができなくて無理して素材を割ったり曲げたりといった事にもなってしまう。その案配が難しい。
色々な両面テープを試してみたけれども、現在の所は「セルタック」一択である。
セルタックは他の両面テープと違って基材がセロテープと同じ素材となっている。他の両面テープは厚手の物を覗くとほとんどが紙が基材となっている。
この基材が紙だと剥がすときビリビリと容易に破損してしまい大変剥がしにくい。ところがセルタックだとその破損がほとんど無いので剥がしやすいのだ。
粘着力は強くもなく弱くもなく。正直フライス加工にはぎりぎりの粘着強度だとおもうけれども、今のところ困るような所はない。
問題はこのセルタック入手性が悪いのよね。
東急ハンズぐらいでしかみかけなかったし、Amazon でも在庫がすぐになくなるくらいの品。なので通販で見かけたらまとめ買いしておくのが吉っぽい。
posted by
rerofumi
19:17:33
できあがった PSoC3 の簡易テストボードが動作することを確認するために簡単なLEDチカチカコードを作った。
開発に使う PSoC Creater も 1.0SP3 となっており昔とは若干勝手が異なっているため、その辺を手探りしながらの作製。
まずはトップレベルデザイン。
今回は 5つの LED を順番に光らせていくテストをしたいので、1bit の出力pinを 5つ用意する。それぞれに LED1-5 と名前をつけ、1bit幅であることを指定し、「ハードウェアに接続」をしないで CPU から操作できるようにしておく。
リソースの Pins タブで出力先となるピンアサインを設定。先ほどは LED1 といった抽象化されたポート名だったが、それを実際のピンに紐づけていく。
チカチカのタイミングを得るためにデジタルハードウェアブロックのタイマーを1つ置く。
PSoC3 は専用のタイマーも持っているが 8/16bit 幅なので UDB ブロックを使って 24bit timer としている。
PSoC1 の時は割り込みは各モジュール毎に割り込み設定があった感じだけれども、PSoC Creater では「割り込みポート」なるものがあって、そこにモジュールからのシグナルを繋いでやることで割り込みが利用できる。
つまり割り込みもモジュールとして扱うということですな。
リソースの Interrupts タブでは割り込みモジュールの優先度順位が設定できる。
ソフトウェア上で割り込みを実装するにはどうやるかというと、これは変なところで PSoC1 の流儀そのままだったりする。
つまり、割り込みモジュールが生成したライブラリコードの中に記述するのですな。
ユーザーが追加したコードはライブラリコード再生成の時に消してしまわない様 IDE が便宜を計ってくれる。
今回 irt_timer1 という割り込みモジュール名にしたので、ライブラリソースは irt_timer1.c|h という名前で生成されている。
irt_timer1.c を開くと CY_ISR(irt_timer1_Interrupt) という関数があるので、この中を割り込み処理としてユーザーが記述するらしい。
CY_ISR(irt_timer1_Interrupt)
{
/* Place your Interrupt code here. */
/* `#START irt_timer1_Interrupt` */
my_isr_timer1();
/* `#END` */
/* PSoC3 ES1, ES2 RTC ISR PATCH */
#if(CYDEV_CHIP_FAMILY_USED == CYDEV_CHIP_FAMILY_PSOC3)
#if((CYDEV_CHIP_REVISION_USED < = CYDEV_CHIP_REVISION_3A_ES2) && (irt_timer1__ES2_PATCH ))
irt_timer1_ISR_PATCH();
#endif
#endif
}
こんな感じで #START と #END の間に記述する。
M8C では割り込みからCの関数を呼べなかったが今回は大丈夫な模様。
ポートはピンのどこに割り当てたかをモジュールライブラリが吸収してくれるので、ビットシフトとかを考えなくて良い。
LED2 というモジュールを 1bit で生成したら ON するコードは
LED2_Write(1);
と書くだけで良い。実際に P2-4 に出力するための
staticBits | ((value < < LED1_SHIFT) & LED1_MASK)
はライブラリの中でやってくれる。
わかりやすいかどうかはともかく、従って置いた方が色々面倒がなくてよさそうだ。
Download: PSoC3_TEST_LED.zip (343kb)
PSoC Creator1.0 のプロジェクト一式。
posted by
rerofumi
2011/6/16 木曜日 0:27:15
PSoC3 のテストボードを作ったよ、といっても一発で完成したわけでなく前回の基板は Rev.B となる。
最初に作った基板は一発では動作しなかった。
PSoC Programmer の JTAG chain で見えたり見えなかったりしているのだけれども、Erase とかがまったくできない状態。
初めて使うデバイスは流石に勝手がわからないものだねー。
こんなこともあろうかと作っておいた変換基板を使って書き込みのテストをすることにした。
小さい基板は JTAG ピンの breakout board。こういう細かいのはさくっと作れて楽しい。
でかい変換基板もなんか満足度が高くて嬉しくなる一品。
ブレッドボード上であーでもないこーでもないと試行錯誤を繰り返しながら書き込み試験。
いじり倒して結果わかったことは、
JTAG の RST は nTRST ではなく XRES につなぐ
電源周りを一通りケアしないと失敗する
JTAGなりSWDなりのラインはプルアップしておいたほうが安定する
power cycle 書き込みがなんだか動かない
といったあたり。
結局基板が失敗したのは XRES につないでなかったからで、これはパッチしたら動き出した。なので Rev.B はRST ラインを修正したものとなる。 JTAG の場合は nTRST かと思いこんでいて失敗した。しかし、XRES の方に繋いだままソースコードデバッグもできたので、nTRST は何につかうのかわかんなくなった。
PSoC1 は適当ぶっこいて MiniProg からの ISSP をダイレクトに足に繋いだだけでも書き込めたので楽ちんだったが、PSoC3 は流石に一通り電源配線して、10uF の安定用キャパシタとかを挟まないと power cycle とかで失敗するみたい。
アナログVdd とかいらないだろとか思っていたけれども、このへんも配線した方が安定するとかそんな風味で。
5線の JTAG はそうでもないんだけれども、2線+XRES で書き込むSWDはこのへんの安定性をもろに食らうご様子。電源配線のうえ、プルアップしないとほとんど成功しなかった感じ。
しかしまあ、作ったテスト基板のほうではプルアップ無しで、SWD 書き込みとデバッグができていたのでさほど神経質になるようなほどでもないか。
で、最後の power cycle だけれども、これは本来 XRES でリセットしなくても電源投入直後のタイミングでほにゃららすると書き込みモードになるはず。なのだけれども、このときでも XRES が無いと書き込めなかった。
この件に関しては HirakuTOIDA さんの記事にそのものが記されていた。PSoC3の書き込み / PSoC3の書き込み(解決編)
うむむ、販売版の PSoC3 と最新版の PSoC Programmer + MiniProg3 でも駄目だったということは、MiniProg3 の Revision に因るのか。まあうちのは一番最初のロットだからなあ。
48pin だと XRES を GPIO としても使えるのだけれども、それをやってしまうと二度と書き込めなくなりそうである。100pinの奴は XRES が独立しているので問題なし。
まあ、XRES が使えるようにしておけばそれで良いので気をつけて使う方向で済まそう。
posted by
rerofumi
2011/6/12 日曜日 23:31:36
PSoC3 が Digikey で在庫あり商品となり購入することができるようになってきた。
ITショップ「えとせとら」 さんでは、これをうけて早速 PSoC3(CY8C3866)のテスト基板を作って販売している。この基板、プレーンなテスト&チップ評価基板としてそれなりに良くできているため利用させて貰うのも手なのだが、やはり自分の手で設計/作製してみたいところなので Digikey からチップを購入することにした。
上の写真はSSOP48のほうが CY8C3246-PVI、LQFP100 のほうが CY8C3665-AXI。グレードの違いはメモリ&ROM容量より主にアナログブロックのモジュールがあるかないかが大きいのだけれども、一番低いグレードの奴でもデジタル部分はフルに載っているので十分に遊べる。
チップを買うときに Digikey で一緒に買っておきたいのが Cypress の評価基板や MiniProg3 のJTAGケーブルで使われている 1.27mm ピッチのピンヘッダ。これは秋葉原で眺めてもなかなか置いてなかった。
Cypress オススメの奴は 300円/個 もする高いうえに在庫がないのだけれども、Digikey内を探すと上記の様なピンヘッダのみの奴がそれなりなお値段で見つかる。
上の奴は 25個注文時単価 57円だったので 25個ほどまとめて購入した。1個からだと 110円くらい。
これを使って簡単なテストボードを作ってみた。いつも通り CNCフライスでの基板作製でチップを載せられることが分かっているからというのもある。
流石に片面基板だと全部のピンを引き出せないのでそこはざっくり諦めてできるだけで作る方針。
それでも 15本の I/O があるので遊ぶ分には十分でしょ。
最初に電源と USB周りを設計で作って配線し、そのあと引き出せそうなピンを選んで出力していった。回路図と基板設計を行ったり来たり。
4ピンだけ出ているのは主に電源込みで I2C を引き出すためのもの。先日の I2C LCDモジュールに始まって色々なテストモジュールを I2C に統一してみようという企みの一環。
やっぱり自分の手で作ってみると色々と分かることも多い。
PSoC3 になって電源周りの配線引き回しが面倒になった。これは、いままでオプションだったアナログブロックの電源が完全に分かれたこととか、I/O端子電圧がついたことなので沢山引き回さないといけなくなったというのが原因。
I/O端子電圧は PLD などではおなじみだけれども、これ PSoC3/5 の目玉なんじゃないですかね。GPIO は大体 4つのブロックに属していてそのブロック毎に I/O電圧が変えられるという仕組み。 5V と 3.3V と 2.5V が混在した回路でもレベルコンバーター無しで真ん中に PSoC3/5 を置くだけで良いというのは楽ちんっぽい。
コアの電圧はどうなっているのかというと、内部でLDOを使って作り出しているらしくそいつのために外付けでキャパシタをつけてやるというのが Vccd らしい。(自信なし?)
今回作った基板。
毎度のことで、回路図と K2CAD とガーバーをまとめて置いておく。
Download: psoc3_eztest_board01.zip