問題タブ [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 投票する
2 に答える
747 参照

c - この単純な PWM が xc8 で機能しない理由

インターネットには多くの例があることは知っていますが、このコードが機能するために何が必要ですか?

周波数発振器 = 4mhz

周期 = 0.25us

義務_cicle = 250

プリスケール = 16

PR2 = 124

見たい :

PWM の周期 = 2ms

デューティサイクル = 1ms

敬具 NIN

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

c - 構造体を渡すときの XC8 コンパイラ エラー、499

私はコードをコンパイルしようとしています。私は XC8 コンパイラを初めて使用します。次のコードがあります。

main.c

bmp280.h

bmp280.c

このコードを実行した後、次のようなエラーが発生します

ご覧のとおり、タイプミスはありません。ネーミングは正しい。また、構造が正しく渡されることを願っています。

XC8 コンパイラで注意する必要がある新しいことはありますか?

これはpic16f1618マイクロコントローラ用です。

Makefile-impl.mk

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

pic - mplab と xc8 コンパイラを使用して pic16f688 へのアナログ入力を読み取る必要があります。

PIC16f688 を使用して、アナログ入力を読み取り、読み取った電圧に基づいてライトをオンまたはオフにしようとしています。このPICを使用して、オンとオフを使用してライトを点滅させることに成功しました。これが私がそのために使用したコードです。

さまざまなことを読んだ後、アナログ入力を読み取ろうとするこのコードになりました。

これを実行すると、入力がグランドに配線されている場合を含め、入力が何であれライトが点灯します。

MPLab で XC8 コンパイラを使用しています。

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

pic - WDTE の MPLAB xc8 pic16f688 プラグマは無視されます

#pragmaCONFIG = WDTE OFF
を使用すると、次のメッセージが表示されます。

WDTE が ON に設定されています。変更しますか?

はいと答えます。
私が懸念しているのは、他の構成ステートメントが無視されることですか? わかりません。新しい話題。PIC16F688でLEDを点滅させようとしています。

私はそれを機能させました。#pragma ステートメントが #include と #define の前にあることを確認しました。#pragma以下は、機能しなかったステートメントのブロックです。

ON と OFF の定義を避けるために 16 進数のアプローチに行きました。RUN ドロップダウンの下にある MPBLAB の「構成ビットの設定」を使用してビットを設定し、16 進数に変更しました。これでもWDTEエラーが発生し、エラーが消えて PWRTE CP エラーが発生しました。MCLRE を 1 に設定していたことを発見したので、それを 0 に設定しても構成エラー メッセージが表示されますが、プログラムは実行されました。
次に、ステートメントのみを使用しました#pragma config CONFIG 0xFF5。構成エラーは発生しませんでしたが、0xFF5 が自動的に切り捨てられるという警告が表示されました0xFFF
これですべて実行されますが、デバッグを実行できません。

今、その問題を抱えていますが、これは別のスレッドだと思います。ただし、構成ワードがどのように形成されるか、どのビットがワードの一部に寄与するかという疑問が生じます。いくつかのレジスタから推測しようとしましたが、どこにも行きませんでした。知っておくといいでしょう。また、0xFFF がワード内の各ビットを 1 に設定することに注意すると、すべての my#pragma config statements (bits) = 1が意味をなさないことを意味します。

他のトラブルシューティング方法を使用して、プログラムと回路を実行しました。将来的にはデバッグを使用したいと考えています。PGDPICkit 3ガイドを読みPGC、チップ上でクロックを実行することについて読み直しました。オスコープによると、稼働中の時計 (内部 4 MHZ) があるとのことです。PGDPIC16F688 ではおよびという用語は使用しませんPGCが、ピンにはそれぞれICSPDATおよびICSPCLKのラベルが付いています。デバッグが機能しないのはなぜですか?

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

c - マクロ定義 C typedef

ここでコピー/貼り付けの問題が少しあります。必要なビット数に基づいて型定義しているデータ型がいくつかあります。私は 8 ビット MCU を使用しているため、データが収まる最小の型を使用することが重要です。

コードは次のようになります。

私はこれらの行が好きではありません:

int16_t と MY_TYPE_T はコピペなので。また、これを複数の変数で使用しているため、MY_TYPE_2_T と MY_TYPE_3_t に対して同じコードを繰り返しているため、コピー/貼り付けの問題があります (注: プロジェクトで実際にこれらの「MY_TYPE」に名前を付けていません)。

ビット数に基づいて型を型定義し、型に関するメッセージを出力するか、型が大きくなりすぎた場合にエラーを発生させる方法を探しています。

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

xc8 - XC8 はトップ ROM からフォント テーブルを構築します

XC8 (1.37) でベアボーン プログラム テンプレートを作成しました。これを使用して、18F ファミリ用の新しい GLCD 機能を開発およびテストします。プログラミングは PICkit3 を介して行われます。コードを何度もすばやく再プログラムする必要があるため、プログラミングが可能な限り高速であることが非常に重要です。通常、コード サイズは約 2K で、プログラムに 10 秒もかかりません。

現在、わずか 400 バイトが追加されただけで、コンパイラはテーブルを ROM の最後に配置し、64K メモリのプログラミングには 1 分以上かかります。
これを回避する方法はありますか?

MPLABX オプションでメモリ範囲を手動で制限しようとしましたが、これは煩わしく、少し安全ではありません (コードの一部が切り詰められることがあります)。

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

compilation - マイクロチップ xc8 コンパイラ (908) 終了ステータス = 1

開発ボードで提供されるマイクロチップ ソース コードを使用して、16F1947 のダリ コードの開発に取り組んでいます。

私は会社のおかげでコンパイラのプロフェッショナル バージョンを持っているので、PRO モードを使用して以前のプロジェクトをビルドすることができ、ビルド ツールによって提供されるすべての最適化が行われました。

マイクロチップ サイトから dali プロジェクトをダウンロードし、[PRO モードで] xc8 を使用してコンパイルしようとすると、ビルドが失敗し、次のエラー メッセージが表示されます。

aspic は彼らのアセンブラーであり、XC8 のマイクロチップのユーザー マニュアルから、シグナル 11 が何を指しているのかは明確ではありません。さらにテストを行ったところ、ライセンス マネージャー xclm と関係があることがわかりました。これは、最適化を行わずにフリー モードでコードをビルドしようとすると、正常にビルドされるためです。今では誰もが知っているように、これにより、不要なループと変数が前後にコピーされる肥大化したコードが発生します。

私は愚かなことをしていますか?それとも、より多くのお金をフォークして、コンパイラの最新かつ最高のバージョンに支払う必要がありますか.

前もってありがとう、wb

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

performance - PIC 16f1827 ADC 変換が遅すぎる XC8

このチュートリアルに従い、マイクロコントローラー 16f1827 のコードを変更しました。コードの機能も変更しました。ADC 値が最大値の半分を超える場合、LED をオンにする必要があります。ADC 値の半分以下の場合は LED をオフにします。

コードは XC8 でエラーなしでコンパイルされます。問題は、PIC が検出する ADC の変化が遅すぎることです。入力ピンを正の基準値に接続すると、おそらく 2 秒の遅延で LED がオンになります。ADC 入力を 0v に変更すると、同じことが起こります。すべての変更は非常に遅く検出されます。ADC の動作が遅いのはなぜですか?