iNSTITUTEM@STER

iNSTITUTEM@STER

2011年4月27日水曜日

シナモンブレードのPICプログラムをHITECH-Cでコンパイルしたが…

 前作シナモンライト・シナモンブレードで使われているPICに書き込まれているプログラムをコンパイルするために、MPLAB IDEとHI-TECH C コンパイラ9.81をインストールしました。
 前回あれだけAVRを使う、と言っていたのにまたPICに戻るのか!?とか言われるかもしれませんが、前回のプログラムを使用するために、両方試してみる必要が出てきました。

 前回使ったのがIDE側が8.53、コンパイラが9.71a、今回使うのがIDE8.66とコンパイラ9.81です。たった0.1しか違わないはずなのですが、そのままコンパイルできませんでした…
 とまあ、最近はこんな「…できませんでした」の連続です。もっとも、こういう経験があって大きなものができるのが世の常です。

 待っていてもらちが明かないので、手掛かりを見つけるためにヘッダーファイルを確認します。9.71aと9.81を比較します。


全然違っとるがね(名古屋風に)

わずか0.1違うだけで、まるで1から作り直したかのように違います。悩んでみ仕方ない、ということで、この通りにそれぞれのコマンドを打ち直します。

 と、まあC言語でPICのプログラムを組む時は、必ずヘッダーファイルを確認してください。大雑把に言うと、この表に従ってC言語からアセンブラ言語に翻訳して、さらにバイナリファイルに変換する、というイメージです。
 PICのベースはアセンブラなので仕方ないのかもしれませんが…アセンブラが十分に使えればいいのですが…。

 実は、PICど再導入した理由のもう一つは、新製品のPIC12F1822がある、ということです。前回と同じPIC12F675と比べて、容量も大きく高速で多機能で、しかも安いという非の打ちどころが無い代物ですが…中の構造がまるで違うようで、結局かなりの部分を修正する必要がありそうです。

 無事にPIC12F1822が採用できれば、プログラムの容量にかなり余裕が出る予定なので、新作シナモンブレード・ライトに追加したい機能がありましたら、どんな細かいこと、無理だろう、ということでも、どしどしアイディアをお寄せください。

 「みんなと作る」シナモンブレード、シナモンライト完成のために。

2 件のコメント:

  1. HI-TECH C the PIC10/12/16 v9.81で、PIC16F系が殆どCONFIG関係でシンボル未定義のコンパイルエラー
    、PIC12F683ではI/Oポートシンボルの未定義コンパイルエラーとなってしまいます。

    ところが、最新機種のPIC16F1823では全く問題が起きません。

    実は、HI-TECH C the PIC10/12/16 v9.81から、ヘッダーやインクルードの形式が大幅に変更となり、従来プロジェクトで作成したものが使えなくなってしまったのです。

    その対処方法が、エアーバリアブルさんのワンポイントアドバイスで詳しく説明されています。(下記参照)

    http://www.ne.jp/asahi/air/variable/picmel/other_info/index.htm
    HI-TECH C for the PIC10/12/16 v9.81で旧プロジェクトを使用する場合の互換設定

    この解決方法は、Project -> Build Option ->Projectを選択後、CompilerタブのDefine macrosで_LEGACY_HEADERSを入れてAdd..をクリックする事で9.80以前のプロジェクトファイルをv9.81でコンパイルエラーを出さずにビルドできる様になります。

    返信削除
  2. とんちゃんさん

    詳しい解決方法をありがとうございます!
    _LEGACY_HEADERSをすれば簡単にできるのですね…
    知りませんでした。

    結局新たにプロジェクトを作成して、プログラムも書き直して解決させました。

    古いプログラムもいくつか残っているので、試してみます!これで一から書き直さずに済みそうです…

    返信削除