LPC1768ぼちぼち触り始めています。割り込みなしの単純なものから行きましょうかね。Edition筺体設計に欠かせない3次元CADですが、個人ではなかなか手を出せない価格だったりします。Editionhttp://www.ptc.com/offers/tryout/pe2.htmですが、今日現在Windows7上では動かないようです。ライセンス関係のプログラムに互換性の問題があるようです。XP互換モードでも同様。Cortex-M3ARMはしばらくCortex-M3を中心に触っていく予定です。http://www.jp.arm.com/products/processors/arm_cortexm3.html気づいたら変な(失礼!)ポータルサイトまであります。JTAGkey2Pということで購入しました。送料含めて155.65ユーロ。送られてくるので到着は半月後くらいでしょうか。それまでに今ある環境で色々試せると思います。ARMOpenOCDJTAGを使ったデバッグのためにJTAGデバッガの購入を検討しています。http://www.olimex.com/dev/arm-usb-ocd.htmlhttp://www.amontec.com/jtagkey2p.shtmlなかなか決断できないのは既に今月たくさんの設備投資をしているため。無駄に買い物に走っているわけではないのですが、ついつい自制モードです。時間の無駄?まぁ、作れば良いじゃんっていうのもあってそれも決断を鈍らせる要因。FT2232Hとレベル変換さえあれば良いんだから・・・。作るモードになると美しく作りたいので基板設計する勢いです。いうのって車輪の再開発・・・。こだわらなければいいのに・・・。いう具合で永久ループです。時間がもったいないのでそろそろ結論を出します。ちなみに今月の(無駄な?)設備投資は・・・。その他と約2万円近く。今年末までの計画FPGAを使った開発に着手します。MPUでは成し得ない領域の開発を可能にします。Cortex-M3を使った開発に着手します。Primer2ですが、mbedを使用する予定です。パワフルな32ビットプロセッサを使えるようにすることで、FPGAと組み合わせて強力なシステムを実現できるようにします。XBeeを使った開発に着手します。近距離無線通信を使ったシステムを実現します。システムのリモートコントローラなどに活用できるようにします。触れていなかったArduinoに一応触れておきます。Processingとの組み合わせは興味深いです。mbedの関係もありArduinoのエコシステムは参考になるでしょう。上記はいずれも現状は独立していますが、いずれ融合するでしょう。融合させるための基礎実験といったところでしょうか。05)いよいよ今週末mtm05いよいよ今週末です。CuBeatSystemsの出展内容をお知らせします。100は超コンパクトなLED電光掲示板ボード。基本的にお遊び用マイコンボードなので開発環境(ISP)が必要になりますが、電光掲示板が欲しいという方のためのカスタマイズも今さら検討中です。iPodからの制御(インチキ)もお見せします。moduleはその名もずばりSDカードのI/Oモジュール。当日はmicroSDカードに納められたWAVファイルを再生するデモをお見せします。playerは液晶表示のついた小さなMP3プレイヤー。当日はmp3ファイルの再生デモをお見せします。MODULEはWAVファイルを再生したり、リズムマシンを作ったりできるモジュール。当日はチープリズムマシンのデモをお見せします。ご質問等ございましたらお気軽にお問い合わせ下さい。2再生音がノイズだらけファームウェア側の処理の問題と思っていましたが違いました。真の原因はDACとAMP間にDC成分を取り除くキャパシタが直列に入っていない。よってDC成分も含めてAMPが増幅する結果、電源電圧でクリッピングが生じる。ゲインを調整する機構(可変抵抗)が無い。このため、クリッピングに対して対処できない。出力波形を見ながら電気図面を見て呆然。この瞬間にすっきりしましたが。正弦波がきれいに出ています。アンプの出力段はというと、歪過ぎです。真の原因は判明しています。DACとAMPの間に以下の回路を入れて確認します。当然ながらアンプの出力もきれいな正弦波となりました。困った事にこの対応はお世辞にも美しい改造にはなりません。そこで以下のようにしました。AMPとその周辺受動素子を未実装とする。AMP周辺受動素子のうち負荷に直列に入るCのみ残す。AMPの基板パット間を短絡する。(AMP入力パット-AMP出力パット)1倍のアンプを搭載することで基板に直接スピーカを接続できるようにする予定でしたが、これを諦めてDACの出力を外部に供給するという算段です。残念ですが仕方ありません。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によっても電流値は変わりますので、その点も考慮が必要です。全体の電力を再計算してポリスイッチの値は再選定ということになりました。基板パターンが小さい容量向けになっているので、ちょっと格好の悪い実装になるかもしれません。MODULEのSPIが動作しない件を調査しました。冷静になってシミュレーションをしてみるとおかしな点を発見。Flag)がセットされています。WCOLビットはデータ転送中にSPDRに書き込みを行った時にセットされます。データはシフトレジスタによって1ビットずつ転送されていくのです。途中でデータが変更されたことを検出するためのビットです。今回は最初の1バイト目の転送でこのような状態になっていました。最初の1バイト目なので先に書き込んだデータがあるはずありません。コリジョンが発生しているために転送が開始されず、転送しているつもりになっているコードはいつまで経ってもSPDRのSPIFビットが立つのを待っているというのが今回の現象です。悶々としながらデータシートを見直していると気になる記述を発見。「マスタSPIとして使用する場合、SSピンのデータディレクションはDDB2によって制御されます。「SPIによって入力ポートとして設定される場合、PORTB2ビットによるプルアップも有効です。「マスタはシフトするためのデータをSPDRに書き込むか、SSラインをプルアップしてパケットの終了を通知します。」つまり、少なくともAVRのSPIペリフェラルはコリジョンの判定をSSラインの状態でも行っていそうだというところに行きあたりました。確認してみるとB051はSSをスイッチの入力に割り当てています。肝心のSDカードのCSは・・・GPIOに接続しています。Select)に使用していました。今回のような現象には遭遇しません。CSはGPIOで正しく制御しているので、本来のSS側が何かまずそうです。テストコードを確かめるとSSのプルアップは指定していません。これを試しにプルアップして動作させてみました。コリジョンが発生することもなく期待通りの動作をします。誤:「SPIをマスタに設定した時にはSSは自分で制御する。正:「SPIをマスタに設定した時にはSSは自分で制御する。」データシートを斜め読みしていると「マスターの時はSSはユーザ設定だなぁ。「だけ」というのが今回のポイント。Overrides」と。本格的にデバッグ開始ということで全ての部品を実装。組み立てると上の写真のようになる代物です。中身はのようになっています。今日はオーディオ周辺とSDカード周辺を確認。オーディオ回路は大雑把に確認。電気的には問題なさそうだ。3つのプロジェクトで使っていて何の問題もなかったのに何かにはまっています。回路もコードもほとんど流用なんだけどなぁ。個体の問題も疑ってかなり慎重に見たのですが、今日はあえなく撃沈です。MODULEその時入手できた部品で作れば良い。今まで「どうしようこの部品無くなったら。」なんて躊躇して作れないことがあった。そんなの気にしなくて良い。前に進めないよりよっぽど良い。教訓CAD上でのギリギリ(機械系と電気系の違い)機械系:CAD上でギリギリは現実にはアウト。電気系:CAD上でギリギリは現実にもギリギリ。MODULEの基板が到着しました。発注から到着までざっと3週間といったところでしょうか。今回は余裕を持ちたいので「発送はフェデックスで」とオーダーしていたはずなのですが、そういえば注文書の時点でエアメールになっていました。README読んでくれないのね・・・。数年前に両面シルクで頼んだ時も片面だったね・・・。この時の注文書はきちんと両面になってたけど・・・。問題なし!毎回嬉しいのです。可愛くて仕方ない基板達。して自分はマニアなんじゃないだろうか・・・。両面の仕上がりをチェック。ファームウェア設計実装のための一台を製造します。今回は後戻りする余裕がないので慎重に一歩一歩作戦。プロセッサ周辺のみを実装。徐々にデバッグを進めて現在LCDまでを確認。一ヶ所だけ実装に問題がありそうな気配。LCD用のマウント支柱とチップ抵抗があたりそう。今日は元気に一日を終えたいのでこれには触れないでおこう。8x2文字の可愛いLCDを搭載。明日はオーディオ周辺を確認予定。これもがんばって良い形でMTM05に出展したいなぁ。再来週に迫ったMTM05ですが、初出展にも関わらず暢気なものです。心を込めて半田付けしました。悲しいかな工業製品ってこういうのは伝わりにくい。通りかかった人が「おっ。」と思って欲しいので1台1台きちんと梱包。袋の感じはスイッチサイエンスさんのパクリです。スイッチサイエンスさんはたまに利用するのですが、対応が親切で気持ち良いです。今回お会いする人達に気持ち良くなって頂ければと願うばかりです。本格的にRTOSを入れて遊んでみることにした。Communityから開発ツール(CD_STM32-Primer_BN28.zip)をダウンロード。Ride7/Setup.exeを実行する。購入時に試した時よりも良くなっている。IDといわれる時にはProcessorNameを確認する。らアップデータを入手して、Raisonance\Ride\lib\ARM\CircleOSにコピーする。ここでRestore_Primer2_Circle_Factory.batを実行して工場出荷状態に戻しておくと良い。STM322010年5月5日水曜日LTspice過渡解析をしたくてSpiceをセットアップ。今まではPSpiceのLiteエディションなるものを使っていたのだが、気になって他のSpiceを探す。リニアテクノロジー社が提供しているLTspiceがなんだか好印象。登録なしでもダウンロードさせてくれるところも嬉しい。余談だがこの手のツールの普及はこういった敷居の低さとも関係があるように思う。http://www.linear-tech.co.jp/designtools/software/ltspice.jsp簡単なRCローパスフィルタを作って解析ステップを確認。何の戸惑いもなく使うことができた。セットアップは楽だしこれは良いかも。AVRTOPPERS/ASPのポート済みデバイスにAVRが入っていないのは気に入らないということで移植を検討中なのですが、FreeRTOSを見た後にTOPPERS/ASPを見ると「複雑なのね」と感じてしまいます。それぞれ理由があってそうなっているのはよくわかりますが、日本人の苦手な割り切り具合が露呈しているようにも思います。矛盾するのですが魅力も感じます。魅力はどこから来るかと言うと、技術的好奇心から来るものでしょう。05関連で、5つの異なる基板を相手にファームウェアを書いています。これら5つの基板は異なる時期に異なる目的で設計したものです。中にはデバッグしづらいものがあります。今まで自分の設計した複数の基板を同時に観察したことがありませんでしたが、良い機会です。デバッグも楽でユーザも嬉しい基板にするにはどうしたら良いのかを整理してみましょう。ハードウェアシリアルポート。最近はUSBに変換してくれる便利なデバイスが主流。