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 についてはこちらの記事を参照してください。

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

それではまた次回。

-PIC解説

執筆者:


comment

メールアドレスが公開されることはありません。

関連記事

PIC超入門!ゼロからLチカまでの道【その4:プログラム書き込み~Lチカ】

前回プログラムが完成したので、あとはプログラムを書き込んで、回路を組み立ててついにLチカです! あともう少しでゴールなので頑張りましょう。 前回の記事はこちら PIC超入門!ゼロからLチカまでの道【そ …

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

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

PIC超入門!ゼロからLチカまでの道【その3:コンフィギュレーション~プログラミング】

前回プロジェクトを作成して設定まで終わったのでいよいよプログラミングに入ります。PIC の第一の関門であるコンフィギュレーションも順を追ってやっていけば簡単にできます。 前回の記事はこちら PIC超入 …

【PIC】LCD 1602の使い方

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

【PIC】SPI通信のやり方

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