PIC16F1455でシリアル通信のテストをします。
回路は、PIC16F1455開発ボードを使います。回路図です。
projectを作成し、MCCの設定をします。
System Moduleの設定をします。
クロックは16MHzにしました。
EUSARTモジュールを導入します。
自動的にRC5がRX(input)に、RC4がTX(output)に設定されます。
設定はデフォルトのままにして、Baud Rateは9600bpsです。
これでGenerateして、次の簡単なエコーバックプログラムをコンパイル書き込みをしてテストします。
-----------------------------------------------------------------
#include "mcc_generated_files/mcc.h"
void main(void)
{
// initialize the device
SYSTEM_Initialize();
uint8_t data;
while (1)
{
data = EUSART_Read();
EUSART_Write(data);
}
}
-----------------------------------------------------------------
FT-234をパソコンに接続し、通信ソフトTera Termを立ち上げて、送った文字が返ってくるかどうか確認します。
キーボードで打ったとおりの文字が返ってきました。OKです。
送受信できることが確認できましたので、次に文字列をPICからTeraTermに送ってみます。
プログラムです。
------------------------------------------------------------------
#include "mcc_generated_files/mcc.h"
//文字列の送信
void Send_str(char *str)
{
while(*str)
{
EUSART_Write(*str++);
}
}
void main(void)
{
// initialize the device
SYSTEM_Initialize();
char msg[]="PIC16F1455 TEST\r\n";
while (1)
{
Send_str(msg);
__delay_ms(1000);
}
}
------------------------------------------------------------------
1秒ごとに「PIC16F1455 TEST」がTeraTermに表示されます。
\r\nはエスケープシーケンスで、\rがキャリジリターン、\nがニューラインです。
さらに文字列や数値を簡単に文字として送信するために、printf()を使えるようにすると、次のようなプログラムになります。
2行目に#include <stdio.h>を追加します。
1文字出力関数 putch()を定義します。
--------------------------------------------------------------
#include "mcc_generated_files/mcc.h"
#include <stdio.h>
//1文字送信
void putch(char ch)
{
EUSART_Write(ch);
}
void main(void)
{
// initialize the device
SYSTEM_Initialize();
uint8_t count=0;
while (1)
{
printf("count = ");
printf("%3d\r\n",count);
count++;
__delay_ms(1000);
}
}
--------------------------------------------------------------
このプログラムで下のようにTeraTermに1秒ごとにcountの値がアカウントアップされて表示されます。
※コメント投稿者のブログIDはブログ作成者のみに通知されます