gaje ニュース
2009年4月29日
あるイベントが起きたら、フラグを最後のイベントから一定時間だけ(たとえば8秒)立てておきたいとき、下のようなコードだとちょっとだめです
----------
volatile uint8_t flag;
ISR(TIMER0_OVF_vect) // 割り込みは8秒おき
{
flag = 0;
}
int main()
{
while (1) {
if (check_event()) {
flag = 1;
}
}
}
----------
これだと、割り込みハンドラでクリアするフラグが、8秒前に立ったものか1秒前に立ったものか区別つかないからです。
Read more…
Posted by Gan at 4:57 pm |
comments(6) |
マイコン
2009年4月27日
複数走っているマイコンを使ったプロジェクト
やっとこさひとつがひと段落つきました。まだ細かい改良が残っていますが、もう大暴れはしないでしょう。
マイコンでプログラミングしてみて、普段やっている UNIX プログラミングが、いかにリソースを気兼ねなく使っているのかよくわかりました。
ATTiny2313 のプログラミングで覚えた、マイコンで不幸にならないコツ
- でかい配列は使わない
- 割り込みは極力避ける(普段だって、例外が恒常的に飛ぶような設計はしないでしょ?)
- 関数コールを嫌がらずに、普段と同じように関数を細かく切ってしまってよし。
関数を切ったからといってそれが関数コールにコンパイルされるとは限らない。最適化はコンパイラに任せよう。
あれこれあるかと思ったけど、せいぜいこんなものですね。
組み込みプログラミングでも、リソースの使いすぎやトリッキーな割り込みの使用を避ければ、あとはいつものプログラミングと同じスタイルで良さそうだということがわかったのは収穫でした。オブジェクト指向プログラミングも問題なくできます。あ、もちろん継承なんてやらないし、動的なオブジェクトは必要なかったので、構造体は使わず命名規約だけで組みましたが。
Posted by Gan at 9:44 pm |
comment(0) |
雑談
2009年4月18日
かなり簡単なプログラムを組んでいるのに、各所でデータ破壊が起きておおあばれ
ああもうああもう、わけがわからん。中はどうなっているんじゃ~
覗くには JTAGICE なるものが必要らしい。
要るかな、要るかな
デバッガのない今、一から組みなおしたほうが早くないかこのじゃじゃ馬プログラム?
普段の UNIX プログラミングがどれぐらい手厚く OS に守られているかよくわかりました。
Posted by Gan at 2:01 pm |
comments(11) |
雑談
2009年4月15日
何故かここしばらくマイコンを使った作業がたてこんでいます。
何故かAVR ISP mkII が不調なため、いまさらですが死蔵していたSTK500を出してきて、内臓のISPを使いました。
いや、STK500、便利です。電源は内蔵しているし、ISPは常備しているし、強制書き込みモードにもすぐ切り替わるし、全ピンへのアクセスが確保されているし、外部クロックも常備だし、毎度ブレッドボードで試作回路を組むよりずっと楽ですね。こんどからは、可能な限り動作確認レベルの試作はSTK500上でやろうと思いました。
それにしても、ISP mkII、どうしちゃったのかしら...
ほとんどの基板でマイコンを認識しません。STK500に挿してもだめでした。中には認識するものもあるのがまたヤな感じです。
デジものは、ほんにトラブルが起きると面倒で時間食いです。
Posted by Gan at 9:10 am |
comments(2) |
雑談
2009年4月14日

いろんなことが並行で走っていてなにがなにやらわからなくなっている日常ですが
その一つ、試作中の基板(抜粋)です。パタン引きが終わったところです。久々に隙間 1/100 インチのベタパタンを使います。焼きとエッチングをうまくやらないとブリッジが発生しまくってえらいことになります。気合をいれてかからないと。
ちなみに、Analog 2.0 でのベタパタンは、だいたい隙間 1/50 インチぐらい。これぐらいあると手作り基板でも楽々です。
Posted by Gan at 5:52 pm |
comment(0) |
未分類
2009年4月10日
ここまでは順調だったのですが Serial MIDI でつまづき
Serial MIDI は、レガシー MIDI の規格と違うのですね。不勉強でした。レガシー MIDI にしないとつなぐ機器がありません。
解決法を思案しています。今のところ思いついているのは2つ:
- USB MIDI -> レガシー MIDI 変換をするデバイスを作る
- Serial MIDI -> レガシー MIDI 変換をするデバイスを作る
もあさんの PepperMIDI をベースにできるならば 1. の方法のほうが良さそうです。
Read more…
Posted by Gan at 12:23 pm |
comments(2) |
MIDI,
nanokey
2009年4月5日
進行中プロジェクト「ナノキーのスタンダロン化」
nanoKEY の信号をシリアルポートに出力させるところまでできました。
一日60分程度しか時間を割いていない(さけない)亀プロジェクト...ですが、なんとかじわじわと前進...
今のところ、プログラミングなしでできています。遅延の問題がなければ、このままスクリプト作成ぐらいで済ませても良い気もしてきました。問題は、小型化したときにディスプレイなしでどうやって起動確認するかですね。電気的にシリアルの TxD 信号をモニタするのが良いかもしれません。信号を検知したら LED を光らせる回路をくっつけておくのはどうかしら。
http://gaje.jp/projects/labo/usb_midi_host/#section5
Posted by Gan at 12:27 am |
comments(4) |
MIDI,
nanokey
2009年4月4日

PSoC で LED ぴかぴか。
こいつは実に面白い。
が、先は長いのう...
Posted by Gan at 1:22 am |
comment(0) |
雑談
2009年4月2日
PCB CAD は Eagle を使っているわけですが、現在のライセンスでは、ほんの小さな基板しかレイアウトできません。
この制限に引っかかる頻度が近頃どんどん増えてきて、いよいよ、ライセンス購入も検討しないとならないかもしれないのですが、その前に代替手段をあさってみましょう。
ということで、kicad
チュートリアルをなぞり中です。めずらしいオープンソースの統合 CAD なので、試してみようと思いますが...
Read more…
Posted by Gan at 11:07 pm |
comment(1) |
周辺ツール
2009年4月1日
新プロジェクトを立ち上げました。
相変わらずシンセばっかですが、今回は蒸気式です。とはいえ、コントロール入力は MIDI なのですが。
ブロック図はこんなです。

ボイラーからの蒸気をふた系統に分けて、片側はオシレータの制御蒸気に、もう片側はフィルタとミュートの制御蒸気として利用します。まあ、古典的な方法ですね。
フィルタは、パスカルの考案したトランペット・ラダー方式を使います。蒸気式ならまずはこれでしょう。近頃では、ディジタル・スチーム・シンセを使っても、オリジナルと聞き分けつかない、わざわざ手間をかけて蒸気式で作る必要はない、という人もいますが、そんなことはないと思うのです。やはりトランペット・ラダーは蒸気式に限ると思うのです。
オシレータは、下図の、Doepfer 型の圧力 – 回転数変換方式で制御します。シンプルだけどいい音。Steam Controlled Oscillator といったら、やはりまずはこれです。

今年のサミットには間に合うかしら。いつかはこれぐらいの規模のものも作ってみたいです。

Posted by Gan at 2:18 pm |
comments(3) |
冗談