電子工作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
|