問題タブ [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.
pi - Microchip XC16 dsp.h は PI の間違った値を定義していますか?
XC16 コンパイラの DSP ルーチン ヘッダー (dsp.h) には、次の行があります。
しかし、PI の値は実際には (同じ小数点以下の桁数まで) 次のとおりです。
dsp.h で定義された値は、小数点第 16 位から発散し始めます。二重浮動小数点演算の場合、これは重要な境界線です。Q15 表現の場合、これは重要ではありません。sin(pi/4) の値も小数点以下 16 位で正しい値から外れています。
Microchip 社が間違った値を使用しているのはなぜですか? 三角関数値の計算に関連する難解な理由がありますか、それとも単に間違いですか? それとも関係ないのでしょうか?
struct - この typedef が予想よりも大きい sizeof() 値を与えるのはなぜですか?
この形式の typedef を使用して、マイクロプロセッサ レジスタとその中のビット フィールドへのアクセスを簡素化します。
残念ながら、sizeof(REG_8)
予想される 1 ではなく 2 を返します。REG_16 と REG_32 の同様の定義は、予想どおり 2 と 4 のサイズを返します。sizeof(uint8_t)
期待どおり、1をsizeof(int8_t)
返します。
タイプは期待どおりに機能します。例えば、
は値 1を与えるa.b2
ため、アラインメントの問題はありません。
を削除するstruct
とsizeof
値が 1 になるため、パディングの問題があるように見えますが、もしそうなら、なぜですか?
誰でもこれを説明できますか?16 ビット プロセッサを対象とする Microchip XC16 コンパイラ (GCC ベース) を使用しています。
uart - PIC24FJ128GA010 UART が動作しない
Explorer 16ボードで上記のpicコントローラーを使用しています。UART を構成しようとしていますが、機能していません。コードは次のようになります。
上記のコードは機能しません。メイン ファイルの構成ビットと Uart init 関数のみを初期化します。助けを求めています。
よろしくサンケット
c - MPLAB XC16: C とアセンブリの混合
私はいくつかの C 言語とアセンブリ言語を混ぜようとしていますが、時間がかかります。私はCの経験があり、アセンブリの経験も多少ありますが、同じプロジェクトでそれらを使用したことはありません。
現時点では、Q1.15 の固定小数点乗算である最も単純なプロジェクトをコンパイルしようとしています。私は実際にはコード出力を気にしません。何かをコンパイルして、それから構築できるようにする必要がありました。
myq15.h:
myq15.c
myq15.s:
私の「メイン」ファイルは、単純に q15_add() および q15_mul() インスタンスを呼び出します。
コンパイル時に、リンカーは次のように述べています。
繰り返しになりますが、他の目的でアセンブリと C ファイルを混在させる方法を見つけようとしていますが、この単純なプログラムを機能させることができなければ、絶望的です!
ありがとう、
gcc - コード内から XC16/gcc ターゲット フラグにアクセスすることは可能ですか?
Microchip 社の XC16 コンパイラを使用して、Microchip 社の dspic33 シリーズ プロセッサ用のコードをコンパイルしています。
いくつかのアプリケーションで使用されるコードがあります (つまり、コード ライブラリにあります)。特定のモジュールについては、理想的にはプリプロセッサを使用して、コンパイル中に特定のコンパイラ フラグが設定されるようにしたいと考えています。特に、-mauxflash および -code-in-auxflash ターゲット フラグのテストに関心があります。
コンパイル中にコンパイラ オプションをテストする方法はありますか?
xc16-gcc -dM -E - < /dev/null を使用してすべての #defines をダンプしようとしましたが、何も変わらないようです。auxflash に関連する 3 つの定義 ( AUXFLASH_LENGTH、__AUXFLASH_BASE、および __HAS_AUXFLASH ) がありますが、ターゲット フラグに関連する定義はありません。
c - マクロ名エラーの後にこの空白が欠落している原因は何ですか?
MPLAB X v3.35 で PIC24F のプロジェクトに取り組んでいます。過去数週間のある時点で、コンパイラはコンパイルのすべての行に対して次の警告を出し始めました。コンパイラ行の何が原因でしょうか? 列番号は意味のあるものを指していないようで、MPLAB によって生成されていない唯一のものは-DGIT_VERSION="v1.0-1-g14e8d84-d
、他の多くのプロジェクトで同様のバージョンを使用したフラグです。
pic - Microchip XC16 での malloc() は、ワード アラインされたアドレスを生成することが保証されていますか?
dsPic30/33 および 18E/F パーツは、奇数アドレスのメモリに 16 ビット アクセスが行われると、メモリ フォールトを生成します。malloc() を使用してヒープ メモリを割り当てる場合、リターン アドレスはワード アラインされることが保証されますか? (つまり偶数)
malloc は、単語ではなくバイト単位で引数を取ることを思い出してください。
私が見つけたドキュメント (16 ビット言語ツール ライブラリ リファレンス マニュアル 50001456J.pdf) は、この問題については沈黙しています。
==== 編集: 私は malloc() から偶数 (ワードアラインされた) アドレスしか受け取ったことがないので、これまでのところすべてうまく機能していることを付け加えておきます。それにもかかわらず、奇妙なアドレスを取得すると、私のコードはトラップを引き起こします (私は のようなことを実行するため((uint16_t *)foo)[3] = 20000;
)。したがって、malloc() によって常にアドレスも返されるようにしたいと考えています。
microchip - コード xc16 の割り当て方法
MPLAB X IDE と XC16 コンパイラを使用して、dsPIC33EV256GM104 プロセッサ用の 2 つのプログラムを開発しました。ここで、プログラムを 1 つに「マージ」する必要があります (1 つの HEX ファイルのみをエクスポートする必要があります) が、最初のプログラムはアドレス 0x000000 から開始し、2 番目のプログラムは 0x005000 から開始するように割り当てる必要があります。
問題を解決するのを手伝ってくれませんか? 何卒ご理解とご協力を賜りますようお願い申し上げます
よろしく