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

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

新規登録して質問してみよう
ただいま回答率
85.48%
マイコン

マイクロコンピュータの略で、CPUにマイクロプロセッサを用いたコンピュータのこと。家電製品、電磁機器などの制御に用いられています。単体でコンピュータとしての機能を一通り備えています。 現代のパーソナルコンピュータに近く、同時期のメインフレームやミニコンピュータと比べ、小さいことが特徴です。

Q&A

2回答

1943閲覧

dsPIC33FJ16GS502でシリアル通信(エコーバック)をしたい

PRMD

総合スコア11

マイコン

マイクロコンピュータの略で、CPUにマイクロプロセッサを用いたコンピュータのこと。家電製品、電磁機器などの制御に用いられています。単体でコンピュータとしての機能を一通り備えています。 現代のパーソナルコンピュータに近く、同時期のメインフレームやミニコンピュータと比べ、小さいことが特徴です。

0グッド

0クリップ

投稿2017/07/11 05:04

編集2017/07/11 05:20

###前提・実現したいこと
dsPIC33FJ16GS502でシリアル通信(エコーバック)をしたい。
コンパイラはC30を使用しています。

###発生している問題・エラーメッセージ
下記のプログラムをMPLABでClean & Buildすると、「BUILD FAILED (exit value 2, total time: 2s)」とエラーが出てしまいます。

while文の中身をコメントアウトするとエラーが出なくなるため、問題の箇所はここだと思うのですが、どのようにプログラムを記述すればいいのかわかりません。

わかる方いらっしゃいましたらご回答よろしくお願いします。

###該当のソースコード

#include <p33fj16gs502.h> #include<uart.h> unsigned int UMODEValue = UART_EN & UART_IDLE_CON & UART_DIS_WAKE & UART_DIS_LOOPBACK & UART_DIS_ABAUD & UART_NO_PAR_8BIT & UART_1STOPBIT ; unsigned int USTAValue = UART_INT_TX_BUF_EMPTY & UART_TX_ENABLE & UART_INT_RX_CHAR & UART_ADR_DETECT_DIS & UART_RX_OVERRUN_CLEAR; unsigned int Baud = 103; int main(void){ unsigned int cmnd; char RcvData; CLKDIV = 0; TRISB = 0b0000000000001000; // ポートB RB3:RXは入力に 、その他RB5:SDA、RB6:SCL等は出力に設定 //UARTピン割り当て RPINR18bits.U1RXR = 3; // UART1 RX to RP3 RPOR1bits.RP2R = 3; // UART1 TX to RP2 void OpenUART1(UMODEValue, USTAValue, Baud); while(1){ RcvData = getcUART1(); putcUART1(RcvData); } }

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

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

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

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

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

guest

回答2

0

uart.h 定義では

#define getcUART1 ReadUART1 #define putcUART1 WriteUART1 void WriteUART1(unsigned int data) __attribute__ ((section (".libperi"))); unsigned int ReadUART1(void) __attribute__ ((section (".libperi")));

引数は、unsigned int です

また受信には、char DataRdyUART1(void) のチェックも必要です

参考
http://www.picfun.com/c30lib/c30lib03.html

投稿2019/01/23 11:40

編集2019/02/03 07:33
koujikuu

総合スコア401

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

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

0

void OpenUART1(UMODEValue, USTAValue, Baud);
をmainの外に書いてください

投稿2018/08/28 14:47

hillacken

総合スコア359

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問