パララックスPropellerの使い方(その4):シリアル通信オブジェクトの利用法
30-March-'08 01:01
Age: 2 yrs



Category: PSoC



カウンタモジュール応用の色々なオブジェクトが使えるようになったら、次に欲しくなるのはシリアル通信用のオブジェクトではないでしょうか?Propeller教育編のオブジェクト指向プログラミング(サンプルと説明)にシリアル通信オブジェクトの使い方が解説されていました。マニュアル(PE-Kit-Objects-Lab-v1.0.pdf)の13ページからの説明です。PropellerがPCからのキー入力を読み込むために拡張版オブジェクト(FullDuplexSerialPlus.spin)を用いてます。Propellerのデモボードでは、PCとの接続用のUSBシリアル変換回路のTXDとRXDはPropellerのピン30と31に繋がっています。PC側のハイパーターミナルの起動と設定は16ページから解説されています。

ハードのセットアップが終わったら、シリアル通信用のプログラムは以下のようにします:

' --------------------------------------------------------------------------

CON  ' PropellerデモボードのRxピン番号は31、Txピン番号は30(右上の画像)
   
  _clkmode = xtal1 + pll16x                 '16x5MHz(=80MHz)
  _xinfreq = 5_000_000
   Rx_pin = 31                                     'Rx_pinはPCからのTxピンに
   Tx_pin = 30                                     'Tx_pinはPCからのRxピンに
   PS2_dpin = 26                                   'data pin on PS/2 jack
   PS2_cpin = 27                                   'clock pin on PS/2 jack
   TV_fpin = 12                                    'first pin on Video port
  

OBJ  ' オブジェクトFullDuplexSerialPlus.spinをインクルード、TVとKBはPropellerの入出力
   
  UART: "FullDuplexSerialPlus"
  TV :  "TV_terminal"
  KB:  "Keyboard" 
  
PUB Start | value

' 初期化で通信速度を57600ボーに設定する場合;デモボードの回路ではモード0
 
  UART.start(Rx_pin, Tx_pin, 0, 57600)
  TV.start(TV_fpin)
  KB.start(PS2_dpin, PS2_cpin)
  WaitCnt(160_000_000 + Cnt)              'Wait for 2 sec (2x80MHz)

' 以下はデモボードに繋がったキーボードからの入力キーに対応する10進と16進と2進の数字をPCのハイパーターミナルに表示するルーチンです

  repeat

     TV.out(0)
     TV.Str(String("Press any key: "))
     value := KB.newkey

     UART.Str(String(10, 10, 13, "You Entered", 10, 13, "--------------"))
     UART.Str(String(10, 13, "Decimal: "))
     UART.Dec(value)
     UART.Str(String(10, 13, "Hexadecimal: "))
     UART.Hex(value, 8)
     UART.Str(String(10, 13, "Binary: "))
     UART.Bin(value, 32)
     repeat 2
        UART.Str(String(10, 13))

' --------------------------------------------------------------------------

入力もハイパーターミナルからにする場合はPE-Kit-Objects-Lab-v1.0のサンプルEnterAndDisplayValues.spinのように

     UART.Str(String("Press any key: "))
     value := UART.getDec

とすれば良いだけです。








<- Back to: メイン ・セクション

サイト内のページ検索

Searchword:

Search in:


(上のページ検索は通常ページのみでブログ風ニュースの内容は検索できません)