LoginSignup
0
1

More than 1 year has passed since last update.

PICマイコンでシリアル出力

Posted at

PICマイコンでのシリアル出力をPCへ

PICマイコンでデバッグをするにあたり、PCへシリアル出力するのに苦労した記録。

環境

初めてのPICマイコンで用いたPIC18F57Q43 Curiosity Nanoボードおよびソフトウェア開発環境MPLAB X IDE

ソースコード

シリアル経由でPCにprintf()の出力を行う単純なもの。

#include "mcc_generated_files/mcc.h"

void main(void)
{
  int count = 0; // Add

    SYSTEM_Initialize();

    while (1)
    {
        // Add your application code
        printf("count=%d\r\n", count++);
        __delay_ms(2000);
    }
}

なお、記事「PICのDelayの使い方について」によると、__delay_ms()の引数に、変数を指定できないらしい。

MPLAB X IDE

UART

シリアルを使うためには、MCC(MPLAB code configurator)のDevice Resourcesにて、UART1を選択する。選択前は下記。

選択後は下記となる。
UART1選択後.png
ここで、「Redirect STDIO to UART」にチェックを付ける必要がある。
UART1設定のコピー.png

ピンアサイン

UART1を選択した初期状態では、Pin Modeにおいて、下記のようにRX(本ボードへの受信)しかアサインされていない。(このあたりは不親切なような感覚あり。)
BeforePinAssignment.png
本ボードのデータシートのよると、
ConnectionToPC.png
PCと接続するには、DebuggerのCDCを用いる必要がある。今回の場合、PCへの出力となるので、「CDC RX(UART TX)」にピンアサインが必要。同じくデータシートによると、
CDC-TXRX.png
「CDC RX」は「RF0」にアサインされているので、その設定を行う("Port F"の'0'の鍵マークをクリック)。結果として、下記のようになる。
AfterPinAssignmentのコピー.png

クロックの調整(for __delay_ms())

上記のままBuildして動作させたところ、シリアル出力されるようにはなったが、設定したシリアル速度9600bpsでは正しく表示されず、PC側のターミナルソフトウェアで、4倍か4分の1の速度を設定すると、表示されていた。デフォルトでは下記のようなクロック設定であったが、
最初のClock指定.png
これを、下記のように、Oscillator SelectにHFINTOSCを選択すると、PC側の9600bps設定にて正しく表示された。
正しいクロックのコピー.png
理由は調べておらず、、、であるが、HFINTOSCについては、「はじめてのPIC-2」などに説明がある。

結果

Teratermでの表示。
Teraterm.png

おまけ

MPLAB X IDEにて複数プロジェクトがあるときに、Buildなどの対象となるメインプロジェクトを選択するには、「Production」→「Set Main Project」→「対象とするプロジェクト」をクリックする。
SetMainProject.png

終わりに

次こそ、デバッガを試す。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1