*このパートはH8/300/TinyにMidiを導入するためのノウハウを蓄積するための場所です*
|
|||||||||
関連項目: H8/3664 AKI-H8 PallarellPort増設 VHDL coding 前の頁 次の頁 |
|||||||||
今回は、TxD のルーティンを紹介しよう。 ここでは、レジスタ6を受信データのポインタとして使用している。 2005年7月18日現在、ようやく送信系の実装に成功した。以下、実装に際しての注意点を解説する。なおその際、他の項目と重複してしまうがシリアルインターフェイスの初期設定に関してもここで言及しておく。 ,@ssr の TDRE フラッグを確認する。btst は、指定されたビットの状態を反転し、結果をCCRのゼロフラッグに反映する。CCR とは、コンディション・コード・レジスタ の略で、演算結果の状態を記憶するレジスタだ。bne は CCR の ゼロフラッグ を参照し、Z=0、すなわち、ゼロでない状態=一致しない場合に分岐する。この辺りの概念が直感的とはとても言えないところが、このマイコンの泣き所といえるだろう。 さて、分岐先では送信データを格納してあるバッファー、tx_fifo にアクセスし、データを tdr に転送する。H8シリーズでは本来ここで、ssr のフラッグをリセットしていたが、Tinyシリーズではこの作業は自動的に行われる事に注意しよう。 |
|||||||||
|
|||||||||
|
|||||||||
Tinyシリーズの特徴は、その小ささだけではなく、各命令体系がよりインテリジェント化されている点にある。赤字で示した点がSCIに関するH8との相違点で、Tinyを使用する上で、この部分は必要がない。下は、バッファーにデータを格納するサブルーチンである。センシングを行うパートで状態の変化が感知されると、条件に合わせて選択されたデータがこの部分に送り込まれてくる。混乱を避けるためにデータ送信用のレジスタは全ルーチン共通で r0l に固定している。 次に、SCIの初期設定の違いについて説明する。SCIの構造は簡略化されていて、扱いは単純であるが、その反面、データの取りこぼしには対応しきれないらしい。が、楽器用途で人命に関わる事はまず無いとおもわれるので、深くは考えないことにする。 |
|||||||||
|
|||||||||
ご覧のように、酷くスッキリとしている。ダミーリードが必要ない点もH8シリーズとは異なる部分だ。TXD端子は pmr1 レジスタの2ndBitで設定することに注意 。 必ず、SCIが稼働状態になる前に、設定を完了しよう。 |
|||||||||
つづく→ | |||||||||