問題タブ [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.
c - XC16 コンパイラがアセンブリ ステートメントを倍増させる
インライン アセンブリ ステートメントに C を入力すると、XC8 コンパイラはそれをコードに 2 回挿入します。例えば
結果は
コードで。
編集:NOPだけではありません。すべてのステートメントが 2 倍になります
結果は
最適化はオフです。コードは PIC16F1934 マイクロプロセッサ用です。MPLAB X を使用しています。
どうすればそれを防ぐことができますか?
microcontroller - PIC16F1455 で RA5 を XC8 コンパイラのデジタル出力として使用する
RA5 をデジタル出力として取得しようとしています。しかし、うまくいかないようです。データシートを調べたところ、RA0、RA1、RA3 は入力のみであることがわかりました。つまり、RA5は入力と出力の両方をサポートしているということですか? RA5 でデジタル 1 を出力できないのはなぜですか?
preprocessor - XC8 警告: (107) 不正な # ディレクティブ "foo"
さまざまなビルド システム (CCS、Visual C、Embarcadero CBuilder、Microchip XCn など) でコンパイルするためにかなりの量のコードを記述しています。インライン ルーチンや割り込みルーチンなどを定義する方法はコンパイラによって異なるため、#if/#elif/#else コンストラクトを使用して要件を満たします。GCC プリプロセッサのドキュメントでは、これを #if などの適切な使用法として提案しています。
私のマイクロプロセッサ ビルド ツールの場合、コンパイラの CCS ファミリと XC16 (gcc ベース) はこれを問題なく処理しますが、XC8 は非アクティブな #if ブロックの内部を調べて警告を生成することを主張します。
たとえば、コード
警告を生成します
これらの警告が何百も生成されるため、正当な警告やエラーを確認するのが難しくなります。
XC8 が解析すべきではないことについて、XC8 を黙らせる方法について提案がある人はいますか? この警告をオフにするフラグが見つかりません。
microchip - PICkit 3 がコンピュータに認識されない
まったく新しい PICkit 3、MacBook Pro 上の MPLAB X、および PIC16F1827 を手に入れました。xc8 コンパイラを使用して新しいプロジェクトをセットアップし、私の知る限り、すべてを正しくセットアップしました。次に、PICkit を接続すると、新しいファームウェアのダウンロードとフラッシュが開始されると思いました。
代わりに、ステータス LED が赤く点滅するだけで、何も起こりませんでした。PICkit の電源を入れ、接続がアクティブになっています。
デバッグ セッションを開始しようとすると、次のようになります。
MPLAB X を再インストールして、USB ケーブルが故障した場合に備えて交換してみました。助言がありますか?
microcontroller - Pic18F2520 リセット
I2C プロトコルを介して BMP180 を制御しようとしています。問題は、Pic が常にリセットされることです。写真を変えましたが同じです。
構成コードは次のとおりです。
そしてメインコード:
シリアル経由でデータをArduinoに送信すると、コンピューターに印刷されます。ほとんどの場合、印刷しようとすると「2」しか印刷されません。また、BMP180 を含むモジュールからのデータを書いて印刷することもあります。しかし、ほとんどの場合、Arduino は次のように表示します: 22222222... MCLR = OFF に設定してテストしましたが、それでも同じです。
レーン SDA と SCL の抵抗は 4.7k ~ 3.5V です。モジュールは 3.5V で給電されますが、写真は 5V です。このモジュールでは問題が高すぎるとは思いません。私は何かを忘れているのでしょうか?
写真に触れると(ワイヤーなどを交換しようとすると)、自動的にリセットされるのは不思議です。
どうもありがとうございました。
マヌエル。
microcontroller - 連続読み取り後に EEPROM が応答を停止する
PIC18F4550 マイクロコントローラーと xc8 i2c ライブラリ関数を備えた 24C256 eeprom を使用しています。任意のアドレスをランダムに読み取ることができますが、順次読み取りを行おうとすると、アドレス 0x0000 と 0x0031 の間でしか機能しません。
0x0032 から 0x003F までのシーケンシャル読み取りを行おうとすると、読み取り終了後に eeprom が応答を停止し、マイクロコントローラーが他の読み取り操作を行おうとするとハングします。私が使用している順次読み取り関数のコードは次のとおりです