問題タブ [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.
compiler-construction - MicrochipXC16の関数の絶対アドレス
デバイス:dsPIC33FJ128GP802
私は次のようにいくつかの*.sファイルを持っています
私は*.hで同じことを宣言しました
今、私はD1をテーブル読み取り関数に渡しています
私の問題は、D1のアドレスが0x8000を超える場合、ルーチンが正しくないことです。大小のコードモデルを試しましたが、結果は同じです。これは、ポインタの16ビット制限によるものだと思います。コードから直接D1の絶対アドレスにアクセスする方法はありますか?組み込み関数やマクロのようなものかもしれません。
コンパイラのマニュアルには次のように書かれていることに注意してください。
MPLAB XC16 Cコンパイラは、関数へのポインタを完全にサポートしているため、関数を間接的に呼び出すことができます。関数ポインタは常に16ビット幅です。
私は同じ質問をに投稿しました
c - dsPIC33F で PWM を初期化できない
おそらく、これらのレジスタの 1 つを使用して、木を見て森を見ることができない瞬間を過ごしているだけかもしれませんが、dsPIC33FJ32MC102マイクロコントローラで PWM を動作させることができません (警告: 大きな PDF) I' m で遊んでいます。データシートと詳細なアプリケーション ノート(警告: 別の PDF)、さらにはコード サンプルの両方に従っていますが、何が間違っているのかわかりませんが、テストベンチでは高出力で Vcc を取得し、接地をオンにしています。低出力。障害ピンを両方とも Vcc に接続し、レジスタ キーコードを無効にしたので、変更が何らかの効果を示すはずです。私は何を間違っていますか?
c - 自分自身を引数としてポインター関数に渡す c 構造体
関数の呼び出しを簡素化するために、構造自体を引数としてネストされた関数に渡す、ネストされた関数を含む構造を作成しようとしています。コードは、xc16 コンパイラを使用して Pic 24f シリーズ MCU で実行されます。また、 count 関数が冗長であることは知っていますが、それは私の主張を示していると思います。例えば:
構造:
機能:
主要:
microchip - dspic33FJ128MC802 で ADC の読み取りが頻繁に行われ、安定した読み取りが得られない、mplab8.92、xc16 コンパイラ
こんばんは、
dspic33FJ128MC802 に単純な 1 チャネル ADC リーダーを実装しようとしています。これは、データのサンプリングを手動で開始し、サンプリングが完了すると自動的に変換し、データを読み取って保存します。
これは、通常の ADC が実装されていないように見えるこのマイクロコントローラーを除いて、私にとっては決して問題ではありませんでした。
ADC のデータシート セクションを何度か読み、できる限り構成しましたが、ラボの電源を入力に直接接続すると、ADC1BUF0 の値が 0 から 4096 の間で一貫性がなくなります。 ADCのピン。
私が見ているのは、ADC1BUF0 の値が入力電圧 (0 ~ 3.3 V) にほぼ対応しているように見えることです。デバッガーを一時停止すると、範囲 +-100 (4096 のうち悪くない)。次に、電圧を同じにして実行と一時停止を続けると、バッファに保存されている値が突然 +-500 にジャンプし始め、4095 (すべて 1) と 0 が表示されることさえあります。
次に、ラボの PSU を別の電圧に変更すると、いくつかの正しい値が表示されるプロセスが繰り返され、その後、再びジャンプし始めます。
したがって、本質的に、デバッガーを一時停止する時間の約 1/2 で正しい値が表示されます。
何が原因なのかはわかりません。電圧を変更した後にデバッガを実行してバッファをクリアできるようにする必要があることはわかっていますが、このマイクロコントローラに関する何かが明らかに間違っているようです。
これを修正するために何ができるか教えてください。
コンパイラは XC16、IDE は Mplab 8.92
ありがとう、
以下は私の構成です:
[コード]
[/コード]
c - メモリ マップは、謎の変数 _powers_ および _npowers_ に割り当てられたスペースを示しています
コード (c で記述され、XC16 コンパイラでコンパイル) のメモリ マップを調べたところ、.data セグメントのpowers、npowers、および dpowers にかなりのスペースが割り当てられていることがわかりました。
この割り当てが何に使用されているか知っている人はいますか?
私のコードは浮動小数点ライブラリと printf/scanf を使用しています - これはこれらの関数の作業スペースでしょうか?
マップ ファイルの 2 つのスニペットを次に示します。
...と...
c - mplab xc8/16 builtin_constant_p
mplab コンパイラ ユーザー ガイドでこれを探していましたが、何も見つかりませんでした。私は盲目などではないことを確認するためにここに尋ねています:
GCC コンパイラは、__builtin_constant_p(x) などの非常に興味深い便利な組み込み関数を提供します。マイクロチップコンパイラでそのようなものを見つけたことはありませんし、存在しないと思います.
質問: Microchip XCxx コンパイラは、デバイス固有のもの (特定のレジスタ アドレスで変数を宣言する、または割り込み関数を宣言するなど) とは別に、非標準の組み込み関数を提供しますか?
編集:さらに明確にするために:私は主にコンパイラから情報を取得することに興味があります。良い例は builtin_constant のようなものです。これは、通常は使用できない情報をプログラムで利用できるようにするためです。しかし、私はこの質問を定数式のみを見つけることに限定しません。