| 目次 | 目次 | 次へ |
| SCI3(シリアルコミュニケーションインタフェース)の初期化関数 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
ここでは、シリアル通信を用いて、 マイコンからパソコンへデータを送受信することを考えましょう。 AKI-H8/3664 QFP版では、 プログラムを書き込むためにシリアル通信を利用しているので、 特に付け加える回路はありません。 ここでは、BestTechnologyの、 GCC Developer Liteに付属する sci.c(Linux用,EUC,LFに変換したものを置いておきます。 GCC Developer Liteにはすでに用意されているので不要です。)の関数を利用することにしましょう。 新しいGCC Developer Liteでは、 ボーレート設定リストが3664.hの中で定義されていました。 また、新しくsci3.cというファイルに、 シリアル通信用関数が追加されていました。
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 列挙型 enum | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
SCI3の通信速度は、いくつか選択可能なのですが、 通信速度と設定する数値の対応は複雑で、 一目見ただけでは簡単には分かりません。 コメントを付けてわかるようにしておく方法もあるのですが、 いろいろと思考錯誤しているうちに、 コメントというのは嘘になっていくことが往々にしてあります。 このように、名前と定数を対応させておくのに便利なのが、列挙型です。 ここの例では、typedefを使ってBaudRateという型を新たに定義しています。
というふうに利用します。 ここでは、BaudRate型の変数aを定義し、 br9600を代入しています。 このとき、aの値は51になります。 BaudRate型の変数に代入できるのは、 型の宣言でおこなった br2400,br4800,br9600,br19200,br31250,br38400,br57600に限られます。 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| SCI3初期化関数 InitSCI3 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
IO.PMR1.BIT.TXD = 1 P22/TXD端子をTXD出力端子に設定します。 シリアルを用いてデータ送信を行うために必要です。 SCI3.SCR3.BYTE = 0 SCI3.SCR3.BYTE = SCI3.SMR.BYTE = 0は、 SCI3.SCR3.BYTE = 0とSCI3.SMR.BYTE = 0を一度に行ったものです。 SCI3.SCR3.BYTEはシリアルコントロールレジスタ3(SCR3)の設定を、 バイト単位でおこなったものです。 各ビットの意味は以下の通りです。
全ての送受信を禁止する設定になっています。 SCI3.SMR.BYTE = 0 これも、シリアルモードレジスタ(SMR)の設定を、 バイト単位でおこなったものです。 各ビットの意味は以下の通りです。
以上より、ここでは
SCI3.BRR = b 通信速度を設定しています。 bはInitSCI3を呼び出すときの引数として指定し、 (BaudRate b)という記述から、 BaudRate型であることが分かります。 通信速度とbに代入する値との関係は以下の通りです。
for (i = 0; i < 5; i++) 通信速度を設定したら、少なくとも「1ビット期間」待つのだそうです。 「1ビット期間」がどれだけの時間かわかりません(@@;)/ ここでは、何もしないループをまわして、 時間を稼いでいるようです。
シリアルコントロールレジスタ3(SCR3)のビットごとの役割は、 上述した通りです。 ここでは、コメントにある通り、
SCI3.SSR.BYTE &= 0x80 シリアルステータスレジスタ(SSR)を初期化しています。 各ビットの意味は以下の通りです。
今の場合には、送信用のレジスタの情報をそのまま残し、 その他をクリアしています。 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| SCI3初期化関数 InitSCI3の使い方 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
SCI3初期化関数 InitSCI3は、通信速度に対応する引数を与えて呼び出すだけです。 例(38400bit/sの場合) InitSCI3(br38400);
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| やってみよう | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 2003/05/23(Fri) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| AKI-H8/3664 QFP版のトップページへ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| トップページへ |
| 広告 | [PR] 花 転職支援 ヒートテック わけあり商品 | 無料レンタルサーバー ブログ blog | |