電子工作etc


■RS232C通信(パリティ対応)
  ★概要
    RS232C(USART)を使用して、パソコンとPIC間で通信を行う場合、事例の殆どが“パリティ無し”で行われ
    ています。つまり、スタート1ビット、データ8ビット、パリティー無し、ストップ1ビットの計10ビットで通信します

    しかし、PICが内蔵するUSARTモジュールには、パリティやアドレスに使用可能な“TX9D”や“RX9D”がある
    ので、これらを利用したパリティ対応についての実験を行ってみました。

    <USARTモジュールのブロックダイアグラム(送信部分)>
     

    <USARTモジュールのブロックダイアグラム(受信部分)>
     

    <USARTモジュールの送受信波形>
     

  ★実験内容
    mikroCが提供するUSARTライブラリには、パリティに関する機能が無いため、新たに自作関数を作成しまし
    た。指定できるパリティモードは、偶数、奇数、無しの3種類です。

    実際の確認は、PICとパソコンをRS232Cで接続して行います。

    <PIC側>
      ・起動時は、9600bps、パリティ無しです。
      ・パソコンからのデータを受信し、受信したデータをパソコンに送信します。(エコーバック)
      ・スイッチ(SW)を、押下する毎にパリティのモードが切り替わります。
         無し→偶数→奇数→無し。。。。。。。。。。

      ・関数の利用の流れ(例)
      :USARTモジュール初期化 → UART1_Init(9600);
      :パリティモード設定     → UART1_Set_Parity_Mode(EVEN_PARITY);
      :文字列送信         → UART1_Write_Text_Ex("JF3SFB\r\n");
      :受信データ有無確認     → UART1_Data_Ready();
      :データの受信        → UART1_Read_Ex();
      :データの送信        → UART1_Write_Ex('A');

    <パソコン側>
      ・ハイパーターミナルを、9600bpsで使用します。
      ・パリティの設定は、実験の内容によって変更します。

    <実験の流れ>
      @PIC側(パリティ無し)、パソコン側(パリティ無し)で、エコーバックが、正しく行われるかを確認します。
      APIC側(偶数)、パソコン側(偶数)で、エコーバックが、正しく行われるかを確認します。
      BPIC側(偶数)、パソコン側(奇数)で、エコーバックが、パリティエラーになるかを確認します。
      CPIC側(奇数)、パソコン側(奇数)で、エコーバックが、正しく行われるかを確認します。
      DPIC側(奇数)、パソコン側(偶数)で、エコーバックが、パリティエラーになるかを確認します。

    <mikroCが提供するUSARTライブラリ>
UARTx_Init ボーレートを指定して、USARTモジュールを初期化します。
UARTx_Data_Ready 受信データの有無をチェックします。
 受信データがあれば、1をなければ0を返します。
UARTx_Tx_Idle 送信データの有無をチェックします。
 送信データがあれば、1をなければ0を返します。
UARTx_Read データを受信します。
UARTx_Read_Text 文字列データを受信します。
UARTx_Write データを送信します。
UARTx_Write_Text 文字列データを送信します。
UART_Set_Active USARTモジュールが2個搭載されている場合に、
 どちらをアクティブにするかを設定します。

    <自作関数>
parity_check 引数で渡されたデータが偶数か奇数かを返します。
  ・偶数であれば<EVEN_PARITY>を返します。
  ・奇数であれば<ODD_PARITY>を返します。
UART1_Set_Parity_Mode パリティのモードを設定します。
  ・偶数<EVEN_PARITY>
  ・奇数<ODD_PARITY>
  ・無し<NON_PARITY>
UART1_Write_Ex パリティのモードに従って、データを送信します。
UART1_Write_Text_Ex パリティのモードに従って、文字列データを送信します。
UART1_Read_Ex パリティのモードに従って、データを受信します。
 パリティのエラーコードは、変数<UART1_error>にセットされます。
 正常時は(0)がセットされます。
  ・偶数モードの時
    (−1)受信データは偶数だが、パリティビットが1になっている。
    (−2)受信データは奇数だが、パリティビットが0になっている。
  ・奇数モードの時
    (−3)受信データは奇数だが、パリティビットが1になっている。
    (−4)受信データは偶数だが、パリティビットが0になっている。

  ★実験回路図
     

  ★プログラム
    ソースリストはここです。
    HEXリストはここです。

  ★実験結果
    パソコン側のハイパーターミナルで、適当な文字を入力し、エコーバックされるかを確認します。
    最初の文字列(“JF3SFB”)は、PIC側から起動時に送信されたものです。
     
    @PIC側(パリティ無し)、パソコン側(パリティ無し)で、エコーバックが、正しく行われるかを確認します。
     
    APIC側(偶数)、パソコン側(偶数)で、エコーバックが、正しく行われるかを確認します。
    BPIC側(偶数)、パソコン側(奇数)で、エコーバックが、パリティエラーになるかを確認します。
     
    CPIC側(奇数)、パソコン側(奇数)で、エコーバックが、正しく行われるかを確認します。
    DPIC側(奇数)、パソコン側(偶数)で、エコーバックが、パリティエラーになるかを確認します。
     


電子工作etc