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でです。