問題タブ [xc16]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
86 参照

c - 構造体ポインタの要素が C の別のアドレスを指している

モーター制御アプリケーション用の C の構造体があり、その構造体には PID の要素があります。その構造を持つ 2 つの変数と、それらの変数を指す 2 つのポインターを作成しました。私のアプリケーションはマイクロコントローラ上にあるため、PID が機能するために非常に重要な別のレジスタ、つまりエンコーダ カウントがあります。したがって、それぞれの PID 変数を指すポインターを持ちたいのですが、マイクロコントローラーのエンコーダーレジスタを指す要素「エンコーダー」を持ちたいと思います。そのため、ポインターにアクセスすると、エンコーダーの位置を直接取得できます。

上記のコードは試していません。100% 思い通りに動作しないからです。要素 Encoder を逆参照し、エンコーダ位置レジスタのアドレスを割り当てると、アドレス番号が Encoder 要素に入れられます。私が達成したいことを少しだけ示すためにそこにあるだけです。しかし、私はそれを行う方法がわかりません。

関数自体に Encoder カウントを含める必要なく関数を呼び出せるようにしたい後。

今、私はこのようなことをします:

この関数を呼び出すときは、常に現在のエンコーダ カウント (マイクロコントローラのエンコーダ カウント レジスタの値) を StartPosition に入れます。

私はこのようなことをしたいと思います:

すべてが PID1 または PID2 変数を指していますが、エレメント Encoder はマイクロコントローラのエンコーダ カウント レジスタを指しています。

どうすればこのようなことができるでしょうか?ありがとうございました。

編集:XC16コンパイラでマイクロチップマイクロコントローラを使用しています。
私は通常の変数のように POS1CNTL を使用します。次
のように読み取ることができます。
または、次のように値を書き込むこともできます。POS1CNTL = 30;

POS1CNTL は次のように定義されます。
#define POS1CNTL POS1CNTL
extern volatile uint16_t POS1CNTL attribute (( sfr ));

0 投票する
0 に答える
89 参照

c - 組み込みの atoi 関数を使用するマイクロチップ xc16 コンパイラでの予期しない動作

関数の予期しない動作atoi()。コードの一部で動作し、他の部分で 0 を返しています。アプリケーションのさまざまな部分で次のコードを使用してバグを見つけています。

MPLAB X IDE V5.4、XC16 v1.61

0 投票する
1 に答える
73 参照

c - XC16 コンパイラのローカル変数の割り当てが機能しない

コンパイラ XC16 で PIC30F4011 を使用しています。ローカル変数の割り当てが機能しないことに気付きましたが、変数をグローバルに宣言すると機能します。

次の関数では、代入文: の後addr = b_flashStart;addrが であるはずですが0x1600、そうではありません0

ファイル全体は次のとおりです。