2010年5月30日日曜日

mbed NXP LPC1768

ぼちぼち触り始めています。


まずは割り込みなしの単純なものから行きましょうかね。
http://mbed.org/users/shintamainjp/

CoCreate Modeling Personal Edition

筺体設計に欠かせない3次元CADですが、個人ではなかなか手を出せない価格だったりします。

そんなとき嬉しいのがCoCreate Modeling Personal Edition

http://www.ptc.com/offers/tryout/pe2.htm

ですが、今日現在Windows7上では動かないようです。
ライセンス関係のプログラムに互換性の問題があるようです。
XP互換モードでも同様。

ARM Cortex-M3

ARMはしばらくCortex-M3を中心に触っていく予定です。
http://www.jp.arm.com/products/processors/arm_cortexm3.html

気づいたら変な(失礼!)ポータルサイトまであります。
http://www.mcuportal.com/

Amontec JTAGkey2P

ということで購入しました。
送料含めて155.65ユーロ。
たらたら送られてくるので到着は半月後くらいでしょうか。
それまでに今ある環境で色々試せると思います。

OpenOCD

JTAGを使ったデバッグのためにJTAGデバッガの購入を検討しています。

http://www.olimex.com/dev/arm-usb-ocd.html

http://www.amontec.com/jtagkey2p.shtml

なかなか決断できないのは既に今月たくさんの設備投資をしているため。
無駄に買い物に走っているわけではないのですが、ついつい自制モードです。

時間の無駄?

まぁ、作れば良いじゃんっていうのもあってそれも決断を鈍らせる要因。
FT2232Hとレベル変換さえあれば良いんだから・・・。
作るモードになると美しく作りたいので基板設計する勢いです。
こういうのって車輪の再開発・・・。と反省したりします。
こだわらなければいいのに・・・。

という具合で永久ループです。
が、時間がもったいないのでそろそろ結論を出します。

ちなみに今月の(無駄な?)設備投資は・・・。
* Arduino (いらないだろ!)
* mbed NXP LPC1768 (これは目標にあってる!)
* 60th LED Luminous CLOCK (前から欲しかった!)
* その他
と約2万円近く。

2010年5月26日水曜日

今年末までの計画

FPGAを使った開発に着手します。
写真はSPARTAN-3 starter kit。
MPUでは成し得ない領域の開発を可能にします。

ARM Cortex-M3を使った開発に着手します。
写真はSTM32 Primer2ですが、mbedを使用する予定です。
パワフルな32ビットプロセッサを使えるようにすることで、FPGAと組み合わせて強力なシステムを実現できるようにします。

XBeeを使った開発に着手します。
近距離無線通信を使ったシステムを実現します。
システムのリモートコントローラなどに活用できるようにします。

あえてずーと触れていなかったArduinoに一応触れておきます。
Processingとの組み合わせは興味深いです。
mbedの関係もありArduinoのエコシステムは参考になるでしょう。

上記はいずれも現状は独立していますが、いずれ融合するでしょう。
融合させるための基礎実験といったところでしょうか。

2010年5月20日木曜日

mtm05 (Make: Tokyo Meeting 05)いよいよ今週末

mtm05いよいよ今週末です。
CuBeatSystemsの出展内容をお知らせします。

 

B028 : LEDMTX 100は超コンパクトなLED電光掲示板ボード。販売もあります。
基本的にお遊び用マイコンボードなので開発環境(ISP)が必要になりますが、電光掲示板が欲しいという方のためのカスタマイズも今さら検討中です。遅い!(笑)


B037 : LEDMTX CLOCKはネットワーク経由からも制御可能な電光掲示板時計。
当日はiPodからの制御(インチキ)もお見せします。


B041 : A tiny SD card moduleはその名もずばりSDカードのI/Oモジュール。販売もあります。
当日はmicroSDカードに納められたWAVファイルを再生するデモをお見せします。


B046 : uMP3 playerは液晶表示のついた小さなMP3プレイヤー。
当日はmp3ファイルの再生デモをお見せします。


B051 : WAV MODULEはWAVファイルを再生したり、リズムマシンを作ったりできるモジュール。販売もあります。
当日はチープリズムマシンのデモをお見せします。


ご質問等ございましたらお気軽にお問い合わせ下さい。

2010年5月16日日曜日

B051 : WAV MODULEのデバッグ - 2

再生音がノイズだらけ

ファームウェア側の処理の問題と思っていましたが違いました。

真の原因は
  • DACとAMP間にDC成分を取り除くキャパシタが直列に入っていない。よってDC成分も含めてAMPが増幅する結果、電源電圧でクリッピングが生じる。
  • ゲインを調整する機構(可変抵抗)が無い。このため、クリッピングに対して対処できない。
でした。

出力波形を見ながら電気図面を見て呆然。
でもこの瞬間にすっきりしましたが。

以下はDACの出力。正弦波がきれいに出ています。

アンプの出力段はというと、歪過ぎです。

真の原因は判明しています。
ですから、DACとAMPの間に以下の回路を入れて確認します。

当然ながらアンプの出力もきれいな正弦波となりました。

困った事にこの対応はお世辞にも美しい改造にはなりません。
そこで以下のようにしました。
  • AMPとその周辺受動素子を未実装とする。
  • AMP周辺受動素子のうち負荷に直列に入るCのみ残す。
  • AMPの基板パット間を短絡する。(AMP入力パット-AMP出力パット)

1倍のアンプを搭載することで基板に直接スピーカを接続できるようにする予定でしたが、これを諦めてDACの出力を外部に供給するという算段です。少し残念ですが仕方ありません。

B051 : WAV MODULEのデバッグ - 1

音が出ると液晶のバックライトがちらつく


消費電力計算でのマージン設定が完全に誤りでした。
以下は5.0[V]から三端子レギュレータで降圧した直後の3.3[V]の波形。
問題ないですね。

LCD直近で5.0[V]を測定すると、音が出る度に電圧がドロップしています。
これでは当然バックライトはチカチカします。

AC-DCアダプタから電力の供給を受けた後、ポリスイッチを入れているのですが、そこでも5.0[V]が同様の波形になっています。

* 電力は5.0[V]と3.3[V]の2系統である。* 5.0[V]はポリスイッチの直近で電圧がドロップしている。
* 3.3[V]は問題ない。

よくよく見返すと設計時点でのポリスイッチ容量は100m[A]です。
LCDのバックライトはティピカルで60m[A]で最大120m[A]となっています。
この最大値は電流制限抵抗の値によって決まるものですので設計者が制御可能なわけですが、データシート上で最大120m[A]となっている時点でポリスイッチの容量100m[A]は良い値とは言えません。
LEDのVfによっても電流値は変わりますので、その点も考慮が必要です。

全体の電力を再計算してポリスイッチの値は再選定ということになりました。
基板パターンが小さい容量向けになっているので、ちょっと格好の悪い実装になるかもしれません。

2010年5月10日月曜日

B051 : WAV MODULEのSPIが動作しない件

B051 : WAV MODULEのSPIが動作しない件を調査しました。
冷静になってシミュレーションをしてみるとおかしな点を発見。


SPDR(SPI Data Register)に値をセットした時にSPSR(SPI Status Register)のWCOL(Write Collision Flag)がセットされています。


WCOLビットはデータ転送中にSPDRに書き込みを行った時にセットされます。
データはシフトレジスタによって1ビットずつ転送されていくのです。
言わば途中でデータが変更されたことを検出するためのビットです。

ですが、今回は最初の1バイト目の転送でこのような状態になっていました。
最初の1バイト目なので先に書き込んだデータがあるはずありません。

コリジョンが発生しているために転送が開始されず、転送しているつもりになっているコードはいつまで経ってもSPDRのSPIFビットが立つのを待っているというのが今回の現象です。

悶々としながらデータシートを見直していると気になる記述を発見。


「マスタSPIとして使用する場合、SSピンのデータディレクションはDDB2によって制御されます。」
「SPIによって入力ポートとして設定される場合、PORTB2ビットによるプルアップも有効です。」

そして、


「マスタはシフトするためのデータをSPDRに書き込むか、SSラインをプルアップしてパケットの終了を通知します。」

つまり、少なくともAVRのSPIペリフェラルはコリジョンの判定をSSラインの状態でも行っていそうだというところに行きあたりました。

確認してみるとB051はSSをスイッチの入力に割り当てています。


肝心のSDカードのCSは・・・


GPIOに接続しています。

過去に設計した基板は全てこのSSを何らかの形でCS(Chip Select)に使用していました。
ですから今回のような現象には遭遇しません。

CSはGPIOで正しく制御しているので、本来のSS側が何かまずそうです。

テストコードを確かめるとSSのプルアップは指定していません。
これを試しにプルアップして動作させてみました。

結果はビンゴ。
コリジョンが発生することもなく期待通りの動作をします。

勘違いはこうです。

誤:「SPIをマスタに設定した時にはSSは自分で制御する。だからどのポートでも良い。」
正:「SPIをマスタに設定した時にはSSは自分で制御する。だけどポートはSSを使う。」


データシートを斜め読みしていると「マスターの時はSSはユーザ設定だなぁ。」とだけ思います。
「だけ」というのが今回のポイント。
きちんと書いてあります。「SPI Pin Overrides」と。

2010年5月9日日曜日

B051 : WAV MODULEデバッグ開始

本格的にデバッグ開始ということで全ての部品を実装。


組み立てると上の写真のようになる代物です。
中身は


のようになっています。
今日はオーディオ周辺とSDカード周辺を確認。
オーディオ回路は大雑把に確認。電気的には問題なさそうだ。

問題はSDカード。
もう3つのプロジェクトで使っていて何の問題もなかったのに何かにはまっています。
おかしいなぁ。回路もコードもほとんど流用なんだけどなぁ。
個体の問題も疑ってかなり慎重に見たのですが、今日はあえなく撃沈です。

その時入手できた部品で作れば良い。

今まで「どうしようこの部品無くなったら。」なんて躊躇して作れないことがあった。
そんなの気にしなくて良い。
前に進めないよりよっぽど良い。

CAD上でのギリギリ(機械系と電気系の違い)

機械系:CAD上でギリギリは現実にはアウト。
電気系:CAD上でギリギリは現実にもギリギリ。

B051 : WAV MODULE基板到着

2010/04/17に発注したB051 : WAV MODULEの基板が到着しました。


発注から到着までざっと3週間といったところでしょうか。

今回は余裕を持ちたいので「発送はフェデックスで」とオーダーしていたはずなのですが、そういえば注文書の時点でエアメールになっていました。

やっぱりちゃんとREADME読んでくれないのね・・・。

数年前に両面シルクで頼んだ時も片面だったね・・・。
この時の注文書はきちんと両面になってたけど・・・。

でも、良いです。
問題なし!


毎回嬉しいのです。
可愛くて仕方ない基板達。
もしかして自分はマニアなんじゃないだろうか・・・。と思うこともある。


両面の仕上がりをチェック。
ファームウェア設計実装のための一台を製造します。


今回は後戻りする余裕がないので慎重に一歩一歩作戦。
まずはプロセッサ周辺のみを実装。


徐々にデバッグを進めて現在LCDまでを確認。


一ヶ所だけ実装に問題がありそうな気配。
LCD用のマウント支柱とチップ抵抗があたりそう。
今日は元気に一日を終えたいのでこれには触れないでおこう。


8x2文字の可愛いLCDを搭載。
明日はオーディオ周辺を確認予定。

これもがんばって良い形でMTM05に出展したいなぁ。

2010年5月8日土曜日

MTM05 (Make: Tokyo Meeting 05) の準備

既に再来週に迫ったMTM05ですが、初出展にも関わらず暢気なものです。
今日は目玉(のはず)のB041の製造を開始。


一台一台本当に心を込めて半田付けしました。
悲しいかな工業製品ってこういうのは伝わりにくい。
ほぼ自己満足の世界です。


通りかかった人が「おっ。買っても良いかな。」と思って欲しいので1台1台きちんと梱包。
袋の感じはスイッチサイエンスさんのパクリです。スイッチサイエンスさんはたまに利用するのですが、対応が親切で気持ち良いです。
今回お会いする人達に気持ち良くなって頂ければと願うばかりです。

2010年5月6日木曜日

the STM32 Primer Community

随分と前に購入して放置していたSTM32 Primer2。
本格的にRTOSを入れて遊んでみることにした。

the STM32 Primer Communityから開発ツール(CD_STM32-Primer_BN28.zip)をダウンロード。

Ride7/Setup.exeを実行する。


購入時に試した時よりも良くなっている。

RFlasher7上でWrong MCU DEVICE IDといわれる時にはProcessorNameを確認する。

後はhttp://www.stm32circle.com/resources/upgrade.php
か らアップデータを入手して、Raisonance\Ride\lib\ARM\CircleOSにコピーする。

ここでRestore_Primer2_Circle_Factory.batを実行して工場出荷状態に戻しておくと良い。
Cortex_pgm.exe に対してパスが通っていることが前提になっているので
..\..\..\bin\Cortex_pgm TSTM32F103VET6 E PPrimer2_Circle_Factory.hex S
などとする。

2010年5月5日水曜日

LTspice

過渡解析をしたくてSpiceをセットアップ。
今まではPSpiceのLiteエディションなるものを使っていたのだが、気になって他のSpiceを探す。

リニアテクノロジー社が提供しているLTspiceがなんだか好印象。

登録なしでもダウンロードさせてくれるところも嬉しい。
余談だがこの手のツールの普及はこういった敷居の低さとも関係があるように思う。


http://www.linear-tech.co.jp/designtools/software/ltspice.jsp


簡単なRCローパスフィルタを作って解析ステップを確認。
何の戸惑いもなく使うことができた。

セットアップは楽だしこれは良いかも。

2010年5月3日月曜日

TOPPERS/ASP on AVR

TOPPERS/ASPのポート済みデバイスにAVRが入っていないのは気に入らないということで移植を検討中なのですが、FreeRTOSを見た後にTOPPERS/ASPを見ると「複雑なのね」と感じてしまいます。
それぞれ理由があってそうなっているのはよくわかりますが、日本人の苦手な割り切り具合が露呈しているようにも思います。

矛盾するのですが魅力も感じます。
魅力はどこから来るかと言うと、技術的好奇心から来るものでしょう。

AVR244 Application Examples

I ported AVR244 application note to B037 LEDMTX CLOCK.

AVR244 provides practical console application for debugging and user use.
In this video demonstrate the application example.
And I'll show you my board.



The operating system is FreeRTOS.

2010年5月2日日曜日

マイコン基板に最低限欲しい要素

ここ最近Make: Tokyo Meeting 05関連で、5つの異なる基板を相手にファームウェアを書いています。
これら5つの基板は異なる時期に異なる目的で設計したものです。

中にはデバッグしづらいものがあります。
今まで自分の設計した複数の基板を同時に観察したことがありませんでしたが、良い機会です。
デバッグも楽でユーザも嬉しい基板にするにはどうしたら良いのかを整理してみましょう。

ハードウェア
  • シリアルポート。最近はUSBに変換してくれる便利なデバイスが主流。これで良いです。
  • 発振器。ブートローダ経由での書き込みやデバッグ時のインフラとしての信頼性が必要。
  • マイコンに直接つながったLED。ちょっとしたところで役立ちます。
  • リセットスイッチ。私はかなりの確率で付けない。(理由は後述。)
  • デバッグ用スイッチ。私はかなりの確率で付けない。(理由は後述。)

ファームウェア
  • デバッグ用ターミナル。自由に状態を制御できます。
  • ブートローダ。いちいちライタを持ち歩かなくて済みます。ユーザも楽です。

最低限欲しい要素としてはこのくらいでしょうか。
基板によって実現したいサイズは異なりますよね。
私の場合、リセットスイッチやデバッグスイッチを真っ先に取り除いてしまいます。

その代わりファームウェア側でターミナルを用意して、状態をターミナル経由で自由に制御できるようにします。リセットは関数ポインタで所定のアドレスに飛ばすだけですし、スイッチが無くてもコマンドを入力して内部状態を遷移させれば良いわけです。当然これには「きちんとブートすること」という前提があります。


設計では常に何らかのトレードオフがあるわけですが、制約条件にとらわれすぎて必要なものまで削ってしまうことがあります。5つの基板のうちいくつかはそんな状態になっています。良い悪いではなく、実際に少し使いづらいのが実際でした。

現状のところCuBeatSystemsで設計している基板は「作って楽しい」、「触れて楽しい」、「遊んで楽しい」とかなり基板に近いところにありますから設計者の視点に近いところの使い勝手は重要です。

この人の設計にはこういうインフラが整っているから何を買っても安心となれば嬉しいところです。
今後の設計に活かしたいと思います。