ロザンヌ開発の経緯(3)

前回に続いて書いていきます。今後も開発の節目節目の出来事について書いていく予定です。亀の歩みですし稚拙な文章ですが興味のある方はお付き合いいただければと思います。

duefuku-rosanne.hateblo.jp

前回↑では開発着手にあたりマイコン(PIC)の選定とプログラムの書き込み装置(PICkit3)など必要な機材の購入まででした。機材は一応それなりに揃ったので、次はPC上でのプラグラム開発環境です。

PC以外に必要なものが2つありまして、

が必要となります。IDEはMicrochip社のMPLAB IDEで決定。CコンパイラはHi-TECH CやCCSCなどいくつか選択肢があるようですが、当時そんなことすら理解してませんでした。

理解してない状態でMicrochipのサイトからIDEのバージョン8.92をダウンロードしてインストールするも、プログラム言語を選択する画面でC言語がなくアセンブラしか選択できない状態。当時よく分かってなかったのですがCコンパイラは別途インストールする必要があるらしい。ですがやり方がよく分からず少し古いバージョン8.84を導入したところCコンパイラのHi-TECH Cが同梱されていたので、とりあえずそれで進めることに。これでようやくC言語でプラグラムを書いてコンパイルできるようになりました。

で、プログラムを始める際の定番としてLEDを一定時間置きに点滅させるプログラム(いわゆるLチカ)をネットから拾ってきてコピペし、初めてコンパイルしてみましたがエラーとなりコンパイル失敗。原因をネットで調べて分かったのが、同じ内容を記述するにしてもコンパイラによって表現が違うとのこと。PICには基本的な設定としてConfigurationBitという設定があり、この表記がコンパイラによって異なるらしく、ネットから拾ってきたのは導入したHi-TECH CではなくCCSC用のものでした。そこでネットで調べてConfigurationBitの記述をHi-TECH Cの表現に修正。それが以下のものです。

#include <htc.h>
int at 0x2007 __config =
_HS_OSC & _WDT_OFF & _PWRTE_ON & _CP_OFF & _MCLR_OFF & _LVP_OFF & _BODEN_OFF;

void main(){
  unsigned int i;
  ANSEL = 0x00;  //アナログ不使用
  PORTA = 0x00;  //RAはlow
  PORTB = 0x00;  //RBはlow
  TRISA = 0x00;  //RAは出力
  TRISB = 0x00;  //RBは出力

  while(1){
    PORTA = 0x00;  //LED消灯
    for(i=0; i<30000; i++){}

    PORTA = 0xff;  //LED点灯
    for(i=0; i<30000; i++){}
  }
}


2行目の__config = 〜がConfigurationBitの設定で、ここを修正したら無事コンパイル成功!この時点では#include <htc.h>とかConfigurationBitの設定の意味すら分かってませんが、とにかくプログラムを書いてコンパイル出来たので非常にうれしかったです。最終的に機能を詰め込みまくったロザンヌですが、はじめの一歩はたったこれだけのプログラムでした。

今回の件で分かったのが、

  • PICは確かに老舗のマイコンなので作例などの情報がネット上に豊富にある
  • ただし開発環境の違いや古さが原因で使えない情報もある

ということです。2つ目については当たり前ではありますが身をもって体感しました。

今回はここまでということで。最後まで読んでいただきありがとうございました!