MINO-o'-2016 12. 基板チェック,FW(4)
基板のチェック項目漏れがありました。クロックとMIDI送信です。
クロックの方は外部クロックに切替えればチェックできます。7セグのテストがよいでしょう。
MIDIの方は今手元にすぐに使える機器が無いので省略。
さて、チェック用ではなく実際のファームに入ります。
大雑把な構成としてはこんな感じでしょうか
- 初期化。
- 一定時間毎に割り込みで
- 7セグLEDの表示を更新する。
- ADCの結果を取り出し、次のADCを開始する。
- 送信待ち行列が空でなくて送信可能なら次を送信。
- キーのチェックを行う。
- キー状態が変化したら、待ちコマンドリストに積む
- その合間に
- 待ちコマンドがあればその処理をする。必要なら送信待ち行列にデータを追加。
受け付けるキーはC(下)からC(上)の13個と、オクターブ上げ/下げの2個、合わせて15個に最初はしておきます。
それぞれの処理は
- メイン13個、押す:現在のオクターブ値をキー毎の領域に記録。この値と現在のADC値でNOTE ONを送信待ち行列に追加
- メイン13個、離す:記録してあったオクターブ値でNOTE OFFを送信待ち行列に追加
- オクターブ上下、押す:現在のオクターブ値を変更する
- オクターブ上下、離す:なにもなし
になります。
オクターブ値を記録するのは、発音中にオクターブ変更してもOKにするためです。
例えば現在オクターブ値=4でE押下、オクターブ上げ押下、E開放としたときに押下E4で開放E5だと音が鳴りやまなくなってしまうので、これを避けるために必要なのですね。
7セグは"Ocnn"とでも表示させておきましょう。nnは-1から8でです。