PICに内蔵されているEUSART1とEUSART2がRS232の回路なんでしょう、きっと.
それを使って、PCに文字を送信してみます.
その前に、CCSライブラリを調べます.
RS232 I/Oが目的のライブラリ関数です.
UARTパラメータの設定
UARTパラメータを設定する関数をcallするのかと思っていましたが、そうではないようです.
一種のdefine文で設定するらしいです.
#use delay(clock=16M)
UARTがボーレートを作るための源発振clock周波数をこの記述で決めます.これを記述しないとcompiler errorになります.
clock周波数設定でcallした関数の引数と同じ周波数にします. setup_oscillator( OSC_16MHZ );
#use rs232 (options)
UARTパラメータ設定をこれで記述します.
こんなふうに使います.
#use rs232(UART1,BAUD=115200,PARITY=N,BITS=8,STOP=1)
引数はたくさんありますが、めぼしいところはこの4つでいいと思います.
BAUD=x bpsを設定.最大で115200なのらしい.
PARITY=X parityの有無を設定.NかEかOのどれか.
BITS =X 5~9bitだが、5とかって何のために使うんだろう?
STOP=X stop bitの設定.defaultで1
set_uart_speed(9600);
この関数で動的にボーレートを変更できます.引数は100-115200の範囲です.
文字を出力するには?
こんなのが使えます.
putc('A');
puts( "hirasaka" );
printf("%2u %X %4X\n\r",x,y,z);
標準出力はdefaultでUART1になっているんだろうと想像しますけど、どうやってUART2に切り替えるのかはわかりません.
ポートはどこだ?
PIC18F65K80のピンアサイン図から、TX,RXのピン番号はつぎであることがわかります.
ハードウエアの準備
PICの12ピンにEUSART1のTXが出力されますが、ここにはFT232RLのシリアルUSB変換回路をつけてUSBケーブルでPCと接続しました.
PCのterminal softの準備
いわゆるterminal softをつかいます.古いwindowsではHiperTerminaalなど.
わたしはTeraTermを使いました.
設定は、9600bps,stopbit=1,8bit,parity=none です.
buildと実機動作
いままでの知見から、次のコードをmain.cに記述し、buildして焼きまして、terminal softでhelloがたくさん表示されることを確認しました.
#include "18F65K80.h"
#use delay(clock=16M)
#use rs232(UART1,BAUD=9600,PARITY=N,BITS=8,STOP=1)
void main(void){
setup_oscillator( OSC_16MHZ );
while(1){
output_high(PIN_G4);
printf("hello\n\r");
output_low(PIN_G4);
}
}