問題タブ [xc8]

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 に答える
727 参照

c - XC16 コンパイラがアセンブリ ステートメントを倍増させる

インライン アセンブリ ステートメントに C を入力すると、XC8 コンパイラはそれをコードに 2 回挿入します。例えば

結果は

コードで。

編集:NOPだけではありません。すべてのステートメントが 2 倍になります

結果は

最適化はオフです。コードは PIC16F1934 マイクロプロセッサ用です。MPLAB X を使用しています。

どうすればそれを防ぐことができますか?

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

microcontroller - PIC16F1455 で RA5 を XC8 コンパイラのデジタル出力として使用する

RA5 をデジタル出力として取得しようとしています。しかし、うまくいかないようです。データシートを調べたところ、RA0、RA1、RA3 は入力のみであることがわかりました。つまり、RA5は入力と出力の両方をサポートしているということですか? RA5 でデジタル 1 を出力できないのはなぜですか?

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

preprocessor - XC8 警告: (107) 不正な # ディレクティブ "foo"

さまざまなビルド システム (CCS、Visual C、Embarcadero CBuilder、Microchip XCn など) でコンパイルするためにかなりの量のコードを記述しています。インライン ルーチンや割り込みルーチンなどを定義する方法はコンパイラによって異なるため、#if/#elif/#else コンストラクトを使用して要件を満たします。GCC プリプロセッサのドキュメントでは、これを #if などの適切な使用法として提案しています。

私のマイクロプロセッサ ビルド ツールの場合、コンパイラの CCS ファミリと XC16 (gcc ベース) はこれを問題なく処理しますが、XC8 は非アクティブな #if ブロックの内部を調べて警告を生成することを主張します。

たとえば、コード

警告を生成します

これらの警告が何百も生成されるため、正当な警告やエラーを確認するのが難しくなります。

XC8 が解析すべきではないことについて、XC8 を黙らせる方法について提案がある人はいますか? この警告をオフにするフラグが見つかりません。

0 投票する
2 に答える
2144 参照

microchip - PICkit 3 がコンピュータに認識されない

まったく新しい PICkit 3、MacBook Pro 上の MPLAB X、および PIC16F1827 を手に入れました。xc8 コンパイラを使用して新しいプロジェクトをセットアップし、私の知る限り、すべてを正しくセットアップしました。次に、PICkit を接続すると、新しいファームウェアのダウンロードとフラッシュが開始されると思いました。

代わりに、ステータス LED が赤く点滅するだけで、何も起こりませんでした。PICkit の電源を入れ、接続がアクティブになっています。

デバッグ セッションを開始しようとすると、次のようになります。ここに画像の説明を入力

MPLAB X を再インストールして、USB ケーブルが故障した場合に備えて交換してみました。助言がありますか?

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

microcontroller - Pic18F2520 リセット

I2C プロトコルを介して BMP180 を制御しようとしています。問題は、Pic が常にリセットされることです。写真を変えましたが同じです。

構成コードは次のとおりです。

そしてメインコード:

シリアル経由でデータをArduinoに送信すると、コンピューターに印刷されます。ほとんどの場合、印刷しようとすると「2」しか印刷されません。また、BMP180 を含むモジュールからのデータを書いて印刷することもあります。しかし、ほとんどの場合、Arduino は次のように表示します: 22222222... MCLR = OFF に設定してテストしましたが、それでも同じです。

レーン SDA と SCL の抵抗は 4.7k ~ 3.5V です。モジュールは 3.5V で給電されますが、写真は 5V です。このモジュールでは問題が高すぎるとは思いません。私は何かを忘れているのでしょうか?

写真に触れると(ワイヤーなどを交換しようとすると)、自動的にリセットされるのは不思議です。

どうもありがとうございました。

マヌエル。

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

microcontroller - 連続読み取り後に EEPROM が応答を停止する

PIC18F4550 マイクロコントローラーと xc8 i2c ライブラリ関数を備えた 24C256 eeprom を使用しています。任意のアドレスをランダムに読み取ることができますが、順次読み取りを行おうとすると、アドレス 0x0000 と 0x0031 の間でしか機能しません。

0x0032 から 0x003F までのシーケンシャル読み取りを行おうとすると、読み取り終了後に eeprom が応答を停止し、マイクロコントローラーが他の読み取り操作を行おうとするとハングします。私が使用している順次読み取り関数のコードは次のとおりです