電音の工場ブログ

趣味の電子工作を中心としたブログです.音モノの工作が多いです.

当ブログは…

MIDI FX SW

パネルのボタンやロータリエンコーダなどを処理するテストプログラムを書いていて思ったこと。

以前作った 3-program 3-loop 1-manual のエフェクトループプログラマは、プログラム選択ボタンとマニュアル時のループon/off ボタンが兼用になっていて、それをマニュアルボタンでモードをもって切り替えていた。

それに対して今回の MIDI FX SW はプログラム選択はMIDIロータリエンコーダで行うわけで、フロントパネルのタクトスイッチのLEDは常にループの on/off 状況を示している。ということは、モードスイッチって要らないじゃん。じゃくい… _| ̄|○

まぁ、なにか別の使い方を考えることにしよう…

今日の作業 ― FX SW ソフト

この連休に出来たこと。

  • プログラムを動かして配線チェック
  • 7seg LED表示のサブルーチン (愚直にパラ-シリしてI/Oポート叩く)
  • ループon/off タクトSW のサブルーチン (timer0 で 約1msec 割込みでエッジ検出)
  • モード切替え タクトSW のサブルーチン (timer0 で 約1msec 割込みでエッジ検出)
  • ロータリエンコーダのサブルーチン (timer0 で 約1msec 割込みでエッジ検出)
  • 書込み タクトSW のサブルーチン (timer2 で 約1msec 割込みでエッジ検出、長押し検出)
  • ループon/off タクトSWのLED のサブルーチン (timer1 で 割込んでトグル)
  • キー、ロータリENC クリック音、長いアラーム音処理
  • 内蔵EEPROM 読み出し処理
  • ポーリングによるテストプログラムでの電源断検出 (→本番では割込みにする)

ここまでで、.text は約1K Byte *1AVR AT90S8535 のプログラム領域は 4K Byte(2K word)なので、どれだけ機能を盛り込めるか…

これ以外にフレームワークとして対応すること。

  • シリアルI/F サブルーチンの整備
  • ゼロからの立ち上がりなのか、sleepからの復帰なのかを判別できる機構の整備

*1avr-gcc の サイズ優先最適化済。