質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

解決済

3回答

2402閲覧

PIC18F14K50でPGC,PGDピンからUART通信はできますか?

inatsuki65

総合スコア11

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

0グッド

0クリップ

投稿2019/06/23 13:05

編集2019/06/24 08:12

前提・実現したいこと

私はPIC初心者のため至らない点もあると思いますがどうかご了承ください。

荷重によって周波数が変化するセンサの出力を無線で飛ばしたいのですが,現状では,周波数カウンタではPIC18F14K50を使ってUSBでパソコンにデータを送信しています.

これをRN-42やxbee,ESP-WROOM-02などの無線モジュール使って,無線でパソコンと通信したいです.
そこで,周波数カウンタと無線モジュールの通信はUARTを使うので,すでに基盤が出来ている周波数カウンタのPIC18F14K50UART通信ができるようにしたいです.

PIC18F14K50_QFNでは,第7ピンがRB7/TX/CK,第9ピンがRB5/AN11/RX/DTとなっており,このRXとTXからUART通信ができるのだと思いますしかし,すでに完成している基盤では第9ピンから線が取り出せなくなっています.

usb通信はできるので,D+とD-のピンは外部との端子を持っているので,このピンを使ってUART通信ができればいいと思ってます.このピンは第16ピンRA0/D+/PGDと第15ピンRA1/D-/PGCです.

D+とD-はUSB通信をするためのものなので,UART通信はできないと思っています.

またRA0とRA1もデータシートを見ると,inputだけでoutputの機能がありません.なのでUART通信はできないと思っています.

PGDとPGCは下の文献の8ページをみるとPGD,PGCピンでUART通信をしているので,もしかしたらできるかもと思っていますが実際はどうなのでしょうか?
http://freeplanets.ship.jp/Electric/SouzouKougaku/H27/Day3/H27%E5%89%B5%E9%80%A0%E5%B7%A5%E5%AD%A6(%E7%AC%AC3%E5%9B%9E).ver.1.pdf

じっさいにはまだ試してたわけではないので,すみません.
新しく回路基板を作る必要があるのか,既存の基盤でできるのか,アドバイスが欲しいです.

そしてもし、PGD PGC でできるなら、どうやってPGD PGC ピンをUARTのピンとして設定するのか教えてくれると助かります。

周波数カウンタの回路
__スミマセン上からのダメ出しのため回路図は削除しました。

試したこと

RA0,RA1を出力にしてLチカさせようとしたが,できなかった.

補足情報(FW/ツールのバージョンなど)

ーーーーー

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y_waiwai

2019/06/23 13:26

なぜわざわざ不自由なCPUを2つ使う回路構成にしてるんでしょう
inatsuki65

2019/06/23 14:09

回路の設計者は別人なので、あとで問い合わせてみます。 おそらくセンサを取り付けてないときは、カウントアップの基盤になるので、ひとつだとタイマー?が足りなかったためだと思います。カウントアップを左のpicで処理して、右のpicに割り込みをかけるだった気がします。明日また確認してきます!
shinami

2019/06/23 14:16

あと、9ピンは空いてる気が・・・。 7ピンが塞がっているのではないでしょうか? 私の勘違い?
inatsuki65

2019/06/23 14:28

そうですね。実際の基盤だと第9ピンがとても小さくて、半だ付けが難しいと判断したので塞がっていると表現させていただきました。7ピンは抵抗またはledをペンチかなにかで取り外せば、リード線を取り付けられると思ってます。でもそうですね。もし、7,9ピンが使えたら通信できるとおもうので、明日、実際の回路の写真を貼ってアドバイスを頂けたらと思います。
guest

回答3

0

ベストアンサー

PGD・PGCはプログラム(書き込み)時のデータ・クロックとしての機能ですね。プログラム(紛らわしい…)から扱える機能ではありません。

下の文献の8ページをみるとPGD,PGCピン

別の機種ですね。D+/D-ではないようですし、このPICでは普通のI/Oとして使えるのではないでしょうか。参考にはなりません。

RA0・RA1にoutputの機能が無いのであれば、普通のプログラムではできることはありません。

投稿2019/06/23 17:01

ikadzuchi

総合スコア3047

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

inatsuki65

2019/06/24 08:10

回答ありがとうございます! さらに質問ですが、他のinputやoutputができるRA2~5,RB0~7のピンならどれでもuart通信ができるんでしょうか? それとも、RX,TXに指定されたピンだけがuart通信できるんでしょうか?
ikadzuchi

2019/06/24 14:13

RX,TXのピンはPICの周辺機能としてのU(S)ARTブロックにつながっていますので、CPUの演算力を使わずにUART通信ができます。 他のピンではCPUの演算力を使ってソフトウェア的にUART通信が実現できます。
inatsuki65

2019/06/25 08:14 編集

お返事ありがとうございます!ソフトウェア的にというのは、uart通信のプログラムまたはソースファイル(uart.c uart.h)などを用意する必要があるということでしょうか? おそらく、前者(rx,tx)を使った方が簡単だと思いますが、後者の難易度はどうなんでしょうか?ちなみに私はpicでLチカくらいしかやったことがありません。h8なら簡単なosを作ったことがありますが
ikadzuchi

2019/06/25 16:52

PICでC言語を使ったことはほとんど無いので想像ですが、恐らくはそのようなライブラリは用意されていると思います。 用意されていればライブラリを使う上でハードウェアのUARTとソフトウェアのUARTはほぼ同様の使い方で使えるでしょう。 問題は、特にいつでも受信できるようにしておくためにはCPUの演算力を食うことです。 他に何か高速に応答しなければならないような処理があったり、CPUの演算力を100%近く使うような用途であれば、ソフトウェアUARTはやめたほうがよいです。
inatsuki65

2019/06/26 03:30

なるほど!ありがとうございます!
guest

0

いずれにしても今ある基盤を改造(PICのピンから線引っ張って無線と繋ぐ)なら
7番ピンとR2を絶縁してR2と10番ピンなど(適当な空)へ繋ぐとか?
プリント基板のパターンを絶縁するのが難しければ、
R2の抵抗がどのような物か分かりませんが足の片方外したりして
そのあたりで絶縁できませんか?チップだったら難しいですが。

まぁ、出来るのであればPGDとPGCでやってみる方の方が良いでしょうね。

投稿2019/06/23 14:08

編集2019/06/23 14:43
shinami

総合スコア334

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

inatsuki65

2019/06/23 14:37 編集

回答ありがとうございます! 9番ピンではなく、4番ピンというのはどこから出てきたのでしょうか? このledは通信ができているかどうかの確認のためなので、無くても大丈夫ですよ。 4番ピンは左のpicの割り込みで使っているのでいじることはないと思ってます。 PGD PGC で通信する場合どうやって通信用のピンを設定すればいいですか?
shinami

2019/06/23 14:49

すいません、4番ではなかったです。 私の方が間違ってましたね。 いずれにしても9番がそういう意味で塞がってるなら難しいですね。 後は、他に別にPICがあればPGDとPGCで通信ができるかどうか ユニバーサル基盤で試してからと言うのも良いかもしれません。
shinami

2019/06/23 14:55

> PGD PGC で通信する場合どうやって通信用のピンを設定すればいいですか? それについてはやった事ないので分かりません。 ※「出来るのであれば」と上記に付け加えました。
inatsuki65

2019/06/24 08:05

ありがとうございます。PGD PGC で試そうにもどうやっていいかわからないのです。 PGC PGD ではできないとの回答があったので、新しい基盤を作るか、既存の基盤を改造するかの方向で行きたいと思います。回答ありがとうございました!
guest

0

すでに基板ができているなら実際にやってみればどうでしょう
基板ができる前なら、ユニバーサル基板で試作してみよう、というところですが

投稿2019/06/23 13:41

y_waiwai

総合スコア87719

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

inatsuki65

2019/06/23 14:15

そうですね。pic初心者のため、確実に出来ることから始めたいと思っていまして、できれば無駄なことはしたくないと思っていましたが、それが一番手っ取り早いのかもしれません。その場合、PGDとPGCをUARTのピンとして設定する必要があると思うのですが、どうやるのでしょうか?
inatsuki65

2019/06/23 14:19

申し遅れましたが、回答ありがとうございます!
y_waiwai

2019/06/23 14:55

使用意図がわからん回路図ですが、他にもっとピン数の多いUARTも複数乗ってるようなCPUを使って作り直せばどうですか?
inatsuki65

2019/06/24 08:01

もちろん、既存の基盤でできなければそうします。 新しい基盤を作るコストを押さえようと思って、今、既存の基盤でできるか質問しています。
y_waiwai

2019/06/24 08:12

まあ、GPIOでシリアルの送信ならともかく受信はなかなか難しいのでとにかくやってみることでしょう。 できるのか?と言われれば、できないことはないでしょうけど、私はやりたくないですねー
inatsuki65

2019/06/26 03:31

アドバイスありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問