Sahara's WebLog

日記のような、備忘録のような、うらみつらみのような、自慢のような…。

PIC24FJ64GB002 UARTを2つ使ってTera Termと通信してみる

参考にさせていただいたのはここ
PIC24FJ64GA002、C30の環境で、外付けのクロックで動作させている。
これを、PIC24FJ64GB002、XC16、内蔵オシレータでの動作に変更し、UARTを2つにして、USBシリアル変換アダプター2つで、PC上の2つのTera Termと通信させる。

まず、内蔵オシレータでの動作には以下の設定だ。
#pragma config FNOSC = FRCPLL // Initial Oscillator Select (Fast RC Oscillator with Postscaler and PLL module (FRCPLL))
#pragma config PLLDIV = DIV2 // USB 96 MHz PLL Prescaler Select (Oscillator input divided by 2 (8 MHz input))
OSCCONbits.COSC = 0b001;//Fast RC Oscillator with Postscaler and PLL module (FRCPLL)
CLKDIVbits.RCDIV = 0b000;//FRC Postscaler Select bits 8 MHz
この辺については、「PIC24FJ64GB002 __delay_ms();を使う」でゴニョゴニョやっている。
もう忘れかけているが。
とにかく、32MHzで駆動させるのだという点だけは以下で使うので気にしておく。

ボーレートの設定は「PIC24FJ64GB002 + Generic FatFs も試してみる。」でやっているが、こちらも、やったことは記憶にあっても内容は忘れている。
U1BRG = 103;
//9600baud at 32MHz
//U1BRG = (Fosc(Hz)/2/16/baud(baudrate) – 1
//= 32000000/2/16/9600 – 1 = 103.2
9600baudの設定にした。

続いて接続するピンの設定をする。
Peripheral Pin Select (PPS)という機能がある。
便利だが、慣れていないのでちょっと戸惑う。
Receiveから設定する。
RXだ。
データシートの表を見てUARTのReceiveを探すと、以下のようにRPINR18のU1RXRを設定すればいいことが分かるので、
RPINR18bits.U1RXR = 3;
とする。
pic24fj64gb002_2uart_2teraterm_04
この = 3 が、RP3の3を意味し、実際には7ピンをUART1のReceiveとして使うことになる。
TXの方は、また設定の仕方が違う。
まずは、Output Function Numberを押さえておかなければならない。
pic24fj64gb002_2uart_2teraterm_05
3だ。
ここではRP2を割り当てたいので、RPOR1のRP2Rを3に設定する。
RPOR1bits.RP2R = 3;
以上、要するに、インプットの場合は機能を示すレジスタ(U1RXR)に使うピンを決める値(=3)を設定し、アウトプットの場合はピンを表すレジスタ(RP2R)に機能を決める値(=3)を設定するということ。
pic24fj64gb002_2uart_2teraterm_06
UARTを2組使うので、UART2の方は10、11ピンに割り当てた。
RPINR19bits.U2RXR = 11;
RPOR5bits.RP10R = 5;
pic24fj64gb002_2uart_2teraterm_03
pic24fj64gb002_2uart_2teraterm_01
下のTera Termから文字を送って、PICで受けて2文字追加した後、上のTera Termに表示しているところ。
pic24fj64gb002_2uart_2teraterm_02
追記
どうせなら双方向のチェックが出来た方がいいのでプログラムを少し書き直した。
pic24fj64gb002_2uart_2teraterm_07
上のTera TermはUART1につながっていて、こちらをアクティブにしてキーを打つと Get from UART1、下はUART2につながっているので、こちらでキーを打つと Get from UART2 と表示されてから入力した文字とその隣の2文字が表示される。
プログラムは、こういう非常に単純なもの。

このエントリーをはてなブックマークに追加

Posted under: PIC24FJ64GB002


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Time limit is exhausted. Please reload CAPTCHA.