PIC解説

PICでUSARTに四苦八苦

投稿日:2020-04-02 更新日:

今回はパソコンとのシリアル通信に挑戦しましたがなかなか苦労しました。最初に結論だけ言うと、

マイコンのTXは相手のRXに、RXはTXに!
逆に接続するよ!

ってことでした。それでは本文↓

 

使用するマイコンはPIC16F18326で、秋月電子で販売しているこちらの超小型USBシリアル変換モジュールを使いました。

まずはPIC16F18326のデータシートでEUSARTの割り当てられているピンを確認してみると…

(※画像はデータシートを切り貼りしています)

このうち使用するのは受信のRXと送信のTXの2つですが、TXはデフォルトではどこにも割り当てられていないのね…割り付け必須ですな。

というわけで割り付け設定してレジスタの設定をして送受信の関数を作ってさあ実験だ!(ソースコードは最後に載せます)

PCはwindows10でTera Termを使いました。

 

USBシリアル変換モジュールをPCに接続するとデバイスのインストールが始まり、それが完了するとこのように通信ポートが選択できるようになり、どうやら正常に認識されたようです。まずは一安心。

 

続いて1秒ごとに'w'を送信してみる。

キタ!(思いのほか上手くいってテンション高め)

 

この調子で受信したデータをLCDに表示させてみる。

・・・あれーおかしいぞー^^

ここから苦労の道が始まります。

 

まずはLCDに文字を表示させるテスト。問題なし。

受信は割り込みを使っていたため、main関数内で割り込みフラグをずっと監視してみる。やっぱりダメ。

しばらくうーんと考えてプログラムや配線を眺める。

ここでピンの割り付け設定が間違っていることに気付く。あれ、なんで設定間違ってるのに送信は出来たんだ?と思いつつ設定を直す。送信すら出来なくなった。

他のピンに割り付けてみる。やっぱりダメ。

ちなみにこの時点で2日が経過。

諦めかけていたそのとき、このサイトで気になる記述を発見。

※AE-FT234XのTXDはRaspberry PiのRXD、RXDはTXDと、逆になることに注意しましょう。私はこれにハマって数時間を無駄にしました。

…!。そういえばシリアル通信では送信と受信はクロスして接続するって聞いたことがあったような…



あああああ!というわけで早速RXとTXを逆にしてみる。送信できた!受信できた!以上!

どうやら最初に送信だけできたのはピンの割り付けと配線の両方間違っていて、たまたま送信だけ噛み合ってしまったということみたいです。送信できて舞い上がっていたのがアホらしいです。

それでは最後に受信したデータをLCDに表示するソースコードでも載せておきますね。

▼I2Cライブラリ

▼LCDライブラリ

LCDについてはこちらの記事を参照してください。https://rikeden.net/?p=81それではまた次回。

-PIC解説

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


関連記事

【PIC】ぷちFatFsでmicroSDカードと通信する

今回はPICでmicroSDカードを使用する方法を紹介します。なお、microSDじゃなくて普通のSDカードでも同様にできるはずです。 以下microSDカードも含めてSDカードと呼ぶことにします。S …

【PIC】LCD 1602の使い方

今回はパラレル接続のキャラクタLCDの使い方を紹介します。 タイトルに1602とついていますが、キャラクタLCDの制御ICは大抵同じものなので、文字数の違うものだったり、メーカーの違うものであっても同 …

【PIC】I2C通信のやり方

マイコンでLチカが出来たら次はLCDに文字を表示したり、色々なセンサーを扱いたいですよね。今回はマイコンと周辺機器の通信によく使われるI2C通信のやり方をちょっとだけ詳しく解説していきます。 目次1 …

【PIC】SPI通信のやり方

多くのPICに搭載されているMSSPモジュールを使うとI2CとSPIの2つのシリアル通信を行うことができます。 今回はSPI通信のやり方(マスター)を紹介します。I2Cについてはこちらを参照してくださ …

【PIC】I2CでLCDに文字を表示する

前回の記事でI2C通信を制御するライブラリを作成したので、今回はそれを使ってLCDに文字を表示させてみたいと思います。 前回の記事はこちら↓ 【PIC】I2C通信のやり方 目次1 LCD2 接続方法3 …