これまでPICといえはPIC16FとかPIC12Fとかのように,XC8でコンパイルできるものしか扱ってきませんでした.しかし今回,この遠隔地放射線量測定システムでは,XBeeとエアカウンタそれぞれとシリアル通信をしなければならなかったため,UARTが2チャネル搭載したものを使う必要があります.そのため,今回はPIC24F08KL301を使うことにしました.

PIC24F08KL301で動作するプログラムをコンパイルするには,XC16が必要となります.このコンパイラを使うのは初めてですし,もちろんPIC24Fも初めてです.そのため,いろいろと格闘している最中です.今回,ハマったところを箇条書きで書いていきます.

1.セカンダリ発振器

今回使用しているマイコンには,セカンダリ発振器が備わっており,低速なクロックを取り扱うことができます.このクロックをマイコンの外部へ出力したり,マイコンの外部から供給する端子があります.具体的には,SOSCO,SOSCI端子です.この端子を汎用ピンとして使用するには,セカンダリ発振器を止めておく必要がありました.XC16でセカンダリ発振器を止めるには,下のように書きます.

_FOSCSEL(SOSCSRC_DIG)

これが分からなくって小一時間かかってしまいました.

 

2.アナログ端子兼用の端子をデジタル端子にする

これはXC8とかでも同じですが,アナログ端子と併用となっている端子をディジタル端子とするには,_ANS**=0とします.例えば,B0をデジタル端子にするには,_ANSB0 = 0;とします.

 

3.RX端子を入力端子とする

シリアル通信をするときRXおよびTX端子を使用します.このうち,RX端子については入力ピンとする必要があるようです.例えば,B0端子をRX端子として使用するには,_TRISB0 = 1;とします.

 

以上の問題が発生しましたが,現在,このマイコンを使って次のことができるようになりました.

  • エアカウンタの電源を入れることができます.(エアカウンタの主電源ボタンを押さずにマイコンから操作しています)
  • マイコンからXBeeへATコマンドを送信できます.
  • マイコンでXBeeからのコマンド(ATコマンドレスポンス,モデム状態)を受信できます.
  • XBeeをウェイクアップすることができます.

次に行うことは,マイコンからXBeeへ送信要求(TransmitRequest)をできるようにして,XBeeが接続されたパソコンへ情報を送れるようにする予定です.その後,パソコンからマイコンへ情報を送れるようにすべく,パケット受信(ReceivePacket)をできるようにします.