2010年5月3日月曜日

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で設計している基板は「作って楽しい」、「触れて楽しい」、「遊んで楽しい」とかなり基板に近いところにありますから設計者の視点に近いところの使い勝手は重要です。

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

2010年4月27日火曜日

Make: Tokyo Meeting 05の出展内容を決定


Make: Tokyo Meeting 05での出展内容を決定しました。
最新の設計品からガラクタボックスで眠っていたものまでを取り揃えて出展します。

概要

CuBeatSystemsはMake: Tokyo Meeting 05に出展します。
入場は無料です。お気軽にお越しください。

 

日時

2010年5月22日(土)、23日(日)

 

場所

東京工業大学 大岡山キャンパス(東京都目黒区大岡山2-12-1)キャンパス情報

 

出展内容

  • B028 : LEDMTX 100 (展示と販売)
  • B037 : LEDMTX CLOCK (参考出展)
  • B041 : A tiny SD card module (展示と販売)
  • B046 : uMP3 player (参考出展)
  • B051 : WAV MODULE (展示と販売 *基板が間に合えば)

主催

共催
  • 東京工業大学
  • 多摩美術大学 情報デザイン学科

2010年4月25日日曜日

B041 : Tiny SD card moduleにブートローダを載せる(AVR109対応)

随分前に対応しようと思い立っていたAVR109にようやく対応させた。
以前やった時にうまく書けなかったのはボードのクロック精度が原因。

ここ数日モニタを実装していて、思った以上にRC内蔵クロックの精度が悪いことが分かった。
エコーバックのテストでやたらと文字が化ける。

データシートを見返してみると確かに。
あらら。


実験用途とは言え、オシレータは載せておきたかったところではある。
デモアプリケーション起動時に100[us]で割り込みを発生させるようにしてオシロスコープで観察し、モニタコマンドでOSCCALを調整できるようにした。
この状態でエコーバックテストをすると当然問題ない。

ブートローダの問題もきっとこれだろうと気付き早速試す。


ブートローダには2[KB]を割り当てた。
ワード先頭アドレスは0x0C00でmakefileで.textのベースアドレスを指定する時には0x1800となる。
AVRISP mkIIでブートローダを書き込む。

次にやるのはブートローダ経由で書き込むアプリケーション。

現在実装しているデモアプリケーションは既にフラッシュの大部分を使い切っている。今回はブートローダの動作を確認するだけなので、機能をザクザク削って6[KB]に収めたバージョンを作った。

後はavrdudeの書き込み機器指定をavr109としてポートにシリアルポートを指定するだけ。

#!/bin/sh

AVRDUDE=avrdude
MCU=atmega8
PORT=/dev/ttyUSB0
PROGRAMMER=avr109
TARGET=sdcmod

FLAGS="-p $MCU -P $PORT -c $PROGRAMMER"
WRITE_FLASH="-U flash:w:$TARGET.hex"

$AVRDUDE $FLAGS $WRITE_FLASH $WRITE_EEPROM

これで書き込みを実行。
べリファイまでの動作を確認した。

B041の場合FATの実装が入るのでブートローダの搭載はあまり現実的ではないかもしれない。
書き込んだアプリケーションはFATの実装+エコーバックの実装だが、6[KB]ギリギリ。

2010年4月17日土曜日

B051 : WAV MODULEの基板発注

今回はOlimexに発注。
同様の設計ルールでPCBCARTに頼んだ事があるが、正直8年くらい前のOlimexの品質に近かった。
Olimexは以前に比べて格段に品質が向上している。
製造環境や使用部材を更新しているのかもしれない。

今回は少し急いで出荷はFedExを指定。

2010年4月14日水曜日

B051 : WAV MODULEの電気図面の振り返りレビュー

ざっと引いた図面には大抵の場合「何かの穴」があります。
それらを見つけて修正する機会を与えるのが振り返りレビューです。
電気図面を引いた後に数日寝かせてこれを自分で行います。
印刷した電気図面に思いつく突っ込みをどんどん書いていきます。
通常であればこの時点でいくつもの疑問が出てきます。
基板を製造した後で見つかるバグの大部分はこういった地味な取り組みで取り除くことができます。

ポイントをまとめてみました。

ポイント
  • バラバラに集められたデータシートがあれば一カ所に集約しておく。
  • 振り返りは必ず日付を跨いで行う。(天気や場所などが違えばなお良い。気持ちが切り替わる。) 
  • 振り返りは複数回やると効果的。
  • 参照して良い技術文書はデータシートのみとする。
他にも色々あるかもしれませんが、今朝思いついたのはこのくらい。

2010年4月12日月曜日

B051 : WAV MODULEの設計

WAVファイルをチープな音で再生するためのモジュールとして設計。

外出先で3時間かけて配線したのが下記ボード。
家に帰って原寸大で印刷してみたらイマイチ盛り上がりに欠ける。
何か中途半端さを感じてしまう。
 そこでやるんだったらということで液晶表示機を追加する仕様に急きょ変更。
結局配線も初めからやり直しです。