Darkside(リンクエラー修正しました)

2018年6月26日(火) 22:16

パラドックス

 良く考えると、ピンアサインを本に合わせる必要は無い。なぜなら、本に準拠したサンプルプログラムは入手できないからだ。
 本は10年ぐらい前の記事であり、10年前にマイクロチップ社が公開していたプログラムを使っている。それは、もはや公開されていない。
 コンパイルに成功したのは、現在マイクロチップ社が公開しているプログラムだ。そのプログラムが前提としているピンアサインを解析し、ハードをそれに合わせて製作するのがベターだろう。製作前のハードを変えるのは、簡単だ。

 本は別に無駄にならない。実装の具体例として非常に役に立つ。要は、サンプルハードウェアだ。

 ここで大問題となったのが、FICD である。プログラムの書き込みには MCLR と VSS と VDD 以外に2本のピンが必要である。その2本をどの2本にするかという選択は3通りが可能であり、逆に言えば3通りのどれであるかを設定しなければどの2本を使用するかが決まらない。
 ところが、公式サンプルプログラムには、設定用の FCID に関する記述が存在しない。
 設定しない場合、デフォルトでどれが使用されるとかあるのか?データーシートからは、読み取れない。これが明確にならなければ、プログラムを書き込むことはできず当然動作しない。

 いや、そうじゃないこれはパラドックスだ。
 FICD の設定をしなければ書き込めない。でも、書き込まなければ FICD を設定できない。3通りあるうちのどの2本の組み合わせてプログラムを書き込むのか・・・を設定する前にプログラムを書き込まねばならないというパラドックス。どうなってんの?
 訳が分からないが、本では11番ピンと12番ピンを使っているのだからその前提で製作しよう。

 p33FJ12MC202.h に前後のレジスターは記述があるので、それに倣って自分で書き加える。

/* Register FICD (0xf8000e) */

#define _FICD(x) __attribute__((section("__FICD.sec,code"))) int _FICD = (x);

/*
** The following constants can be used to set FICD.
** Multiple options may be combined, as shown:
**
** _FICD( OPT1_ON & OPT2_OFF )
**
** PWM Mode Select:
** JTAGEN_OFF JTAG disabled
** JTAGEN_ON JTAG enabled
**
** ICD Communication Channel Select bits:
** FICD_PGE1 Communicate on PGEC1 and PGED1
** FICD_PGE2 Communicate on PGEC1 and PGED2
** FICD_PGE3 Communicate on PGEC1 and PGED3
** FICD_NONE Reserved, do not use
**
*/

#define JTAGEN_OFF 0xFFDF
#define JTAGEN_ON 0xFFFF

#define FICD_PGE1 0xFFFF
#define FICD_PGE2 0xFFFE
#define FICD_PGE3 0xFFFD
#define FICD_NONE 0xFFFC

 そして、SinusoidalBLDC v2.0.c の先頭にコンフィグ設定を追加。

_FICD(JTAGEN_OFF & FICD_PGE3);

written by higashino [ドリル戦車] [この記事のURL] [コメントを書く] [コメント(0)] [TB(0)]

この記事へのトラックバックPingURL

Comments

TrackBacks

Darkside(リンクエラー修正しました)

Generated by MySketch GE 1.4.1

Remodelling origin is MySketch 2.7.4