カテゴリー「PIC」の4件の記事

【PIC】2021/4/14 デバッガが起動しない

MPLAB X(ver.5.40)+ICD3でデバッガが起動しない現象も起きました。

良くみてみたら、「Output」の中の「Debugger Console」に以下のようなエラーが出ていました。


Launching
Programming target
An error occurred in the debugger. Terminating the debug session.
com.microchip.mplab.mdbcore.debugger.DebugException
User program finished


 
自動で「Debugger Console」に切り替わらないので見落としがちなんですね。

解決法は、本日の先のエントリで設定した「Packs」を新しいものに切り替えること。

1.0.36を、1.1.51に切り替えたところ、デバッグできるようになりました。

【PIC】2021/4/14 他人のPICプロジェクトをビルド出来ない

辞めた人のPICプロジェクトをMPLAB Xで動かそうとしたら、ビルドエラーがおきました。

...... not present in chipinfo file "C:\Program Files (x86)\Microchip\xc8\v1.xx\dat\picc.ini"

xc8コンパイラの古いバージョンを使っていたようです。

それを、ここからダウンロードしてもいいんだけど(そうすべき)、面倒くさいので別の手で。

①MPLAB Xの「Projects」ペインで、プロジェクト名を右クリックして「Properties」へ。

②「Conf:[default]」の「Compiler Toolchain」でコンパイラを切り替え..ようとしたらApplyが押せない。

③ Packsの現在選ばれているところに「Solved」とか何とか押せるようになってるので、押す。

④ 再び、「Compiler Toolchain」で、グレイになっていないverのコンパイラを選び、「Apply」。

 

無事ビルド出来ましたー

【PIC備忘ログ】 2017/07/05(水) PIC18+xc8ビルド環境の変更

microchipのPIC開発環境が変わっていたようです。

以前の記事で紹介した方法で作成したプロジェクトは、v1.35以降のxc8を使うとビルド出来ません。
リリースノートの和訳はこちらのブログで解説されています。
xc8にPLIB(Peripheral Library)が同梱されなくなった為です。
PLIBはこちらから単体でダウンロードが出来ますが、それのみではビルドは通りませんでした。
素直に旧版のxc8を使用した方がよいでしょう。
v1.31では同梱されている事を確認しています。

【PIC備忘ログ】 2014/05/05(月) PIC18+xc8のライブラリ

PICマイコンは入門用とかよく聞きます。

とんでもないです
一貫性の無い設計と、不安定で癖のある開発ツールは、あなたの時間を奪いまくります。

ツール開発も迷走していて、ソースの互換性が突如なくなるなど日常茶飯事。
PICのメリットは開発環境が安く整う。これのみです。
NECの78kなどはアーキテクチャがひどいのでそれよりはマシですが・・

Microchip純正のフリーコンパイラがxc8です。
一応、「plib」というライブラリもありますが、これが使いにくいのなんの。以下、使い方です。

1.xc8の共通ヘッダのインクルード

xc8の共通ヘッダファイルをインクルードします。

#include <xc8.h>

2.使用ペリフェラルヘッダのインクルード

使用するペリフェラルのヘッダファイルをインクルードします。ADCを使うなら

#incluide <plib/adc.h>

plibにパスを通している場合は

#include <adc.h>

でOK。

3.呼ぶべきライブラリ関数の型を調べる

ペリフェラルヘッダで定義しているライブラリ関数のソースは

C:\Program Files (x86)\Microchip\xc8\v1.31\sources

以下にあります(xc8 ver1.31の場合)。

例えば、PIC18シリーズのADCの場合は以下になります。

C:\Program Files (x86)\Microchip\xc8\v1.31\sources\pic18\plib\ADC

4.使用するPICに対応するライブラリ関数を調べる

例えば、ADCを使用開始する際は「OpenADC」という関数を呼ぶ必要があるのですが、関数名は同じでも、PICのタイプによって引数の型や種類が違っています(C言語なのでC++のような多態性などありません。適切なプロトタイプの関数のみリンクさせる必要があります)。

使用予定のPICには、どの型のものを使えばいいかを調べるには

C:\Program Files (x86)\Microchip\xc8\v1.31\sources\pic18\plib\

にあるpconfig.hの中身を調べる必要があります。

例えば、PIC18C252を選択(MPLAB XのNew Projectを作成時に選ぶ)した場合は

#ifdef   __18C252
/*############################################################*/
/*          Configuration for device =  'PIC18C252'           */
/*############################################################*/
/* ADC */
#define ADC_V1

とあるので、PIC18C252のADCライブラリは、「ADC_V1」で囲まれた部分にあるものだと分かります。

5.ライブラリ関数の引数に使うためのdefineがクセモノ

このplib、ADCならレジスタビットのCHやACQTなどを指定すれば良いようなパラメータになっておらず、結局はライブラリのソースを読む必要があります(レジスタの各ビットを一度OFFしてからONしなくてもいいようになってる)。

plib関数のパラメータの多くは、ヘッダに定義がありますが、レジスタ名やビット名でdefineされていないので、結局は読み解く必要があります。

レジスタの設定順序などを参考にしつつ、関数を自作した方が早いです(半分本気。実際そうしました)。