問題タブ [mplab]
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.
loading - マイクロチップ:MPLABXに複数のHEXファイルをロードする方法
私はMPLABX(MPLAB 8の場合もあります)を使用していて、プロジェクトを完了させています。私はこれらのHEXファイルを持っています:
- bootloader.hex
- magic_flag.hex
ブートローダーはアドレス0x0から0x7FFにロードされます。マジックフラグの位置はアドレス0x40(ブートローダー領域)にあります。
そして今、すべてをロードするためにMPLAB Xでプロジェクトをセットアップする必要があります(bootloader + magicFlag + app)。ブートローダーをロードし、次にmagicFlagをロードしてから、保存されたフラッシュメモリをセットアップし、アプリケーションで作業して、アプリケーション領域(0x800から0xFFFF)のみをロードすることは可能ですが、私にとってはあまり快適ではありません。たとえば、iSYSTEMのWinIDEA IDEでFreescaleを使用した場合、多くのSXファイルをロードするように設定することができ、非常にシンプルで迅速に機能していました。しかし、MPLAB XIで試してみると、常にエラーが発生します。
(944)appl.hexとbootloader.hexの間のアドレス0hでのデータの競合。
私が試したこと:
- プロジェクトプロパティにロードするためのセットアップファイル(セクションロード)
- プロジェクトプロパティでメモリ範囲を設定する(セクションICD 3)
しかし、ICD3のロードには問題がないことを私は思います。MPLABXがユニファイド16進ファイルを作成しているときにエラーが発生したためです。
そして想像してみてください、これはリンカーの私の部分です:
これは私のプロジェクトだけではなく、magicFlagを備えたブートローダーがあり、applからのソースコードしかないことを思い出してください。もちろん、1つのプロジェクトにapplを含むブートローダーソースコードを含める方がよいでしょう。
だから、MPLABXは私を殺している、助けてください:-)
c - PIC18F2480からPIC18F2680マイクロコントローラーへのコードの移行
18F2480プロセッサ用にMPLABで記述されたブートローダーコードがあります。現在のプロジェクトでは、マイクロコントローラーを18F2680にアップグレードする必要があります。
(2つのチップの主な違いは、2480には16Kのプログラムメモリ/ 768BRAM / 256B EEPROMがあり、2680チップには64Kのプログラムメモリ/ 3KのRAMと1KのEEPROMがあることです。)
選択したデバイスを「PIC18f2680」に変更し、18f2680.hファイルの2480ヘッダーファイルを置き換えました。2480ファームウェアを更新するために通常使用するプログラムを使用して2680と通信する際に問題が発生しています。(このソフトウェアは独自のものであるため、詳細を提供することはできません。)
2480から2680へのコードの移行に伴う既知の問題/複雑さがあるかどうかを知りたかっただけです。
そしてFWIW、私は2480を32Kのプログラムメモリ、1536 RAMバイト、および256BのEEPROMを備えた2580に正常に置き換えました。コードは正常に機能し、ヘッダーファイルを置き換えてMPLABで別のデバイスを選択するだけで済みました。24/2580と2680のEEPROMのサイズが異なることに関係しているのでしょうか。
pic - C30 PIC コンパイラがコンパイルできない (MPLAB-X IDE)
非常に単純なプログラムをコンパイルしようとしていますが、コンパイルできない理由がわかりません。これが私のプログラムです:
.h および .c ファイルがプロジェクトに追加されます。
そして .c ファイル:
C30 コンパイラで MPLAB-X IDE を使用していますが、次のエラーが表示されます。
関数を Main.c 内に配置し、 #include "RunLengthAlgorithm.h" を含めない場合、機能しますが、ファイルを含めて機能させることができません。
microchip - PmodOLEDをJBからJAヘッダーに移動-32MX4(MPLAB X IDE)
私はマイクロコントローラーのプログラミングに不慣れで、最初のタスクはPmodWiFiアドオンを使用してWiFi接続を受け入れることです。WiFiチップのデフォルトのピン/ポートは32MX4のJBヘッダーであると読みました。問題は、現在JBヘッダーにPmodOLEDアドオンがインストールされているため、それをJAヘッダーに移動したいということです。(PmodOLED.h
ライブラリにインポートした)では、JBヘッダーではなくJAヘッダーのポートに対応するように次の行を変更しました。
ただし、JAヘッダーにPModOLEDアタッチメントを挿入してコードを実行すると、応答せず、画面が空白になります。PmodOLEDアドオンをJAヘッダーにインストールできるようにコードを変更する方法を教えていただければ幸いです。
よろしくお願いします、Guvvy
microcontroller - MRF24WB0MA WiFi と 32MX4 初心者向けチュートリアル
私はマイクロチップ プログラミングの初心者で、WiFi に接続できるロボットを設計したいと考えています。Cerebot 32MX4 マイクロコントローラ (PIC32MX460F512L) と PmodWiFi カード (MRF24WB0MA) を持っています。どこから始めればよいかまったくわかりません。TCP/IP スタックやその他のサンプル コードを含むさまざまなコードをインターネットからダウンロードしようとしましたが、コンパイル エラーが発生するか、ロボットに影響しません。この 2 つの製品を選んだのは、比較的人気があり、かなり簡単なプロセスになると予想していたからです。これをセットアップする方法を示すステップバイステップのチュートリアルへのリンク、または 32MX4 の動作するサンプル コードを送信していただけますか。現在、JBヘッダーを介してWiFiカードに接続された機能的な32MX4ボードがあります。バカみたいに聞こえたらごめんなさい
助けてくれてありがとう、Guvvy
c - なぜこの行が必要なのですか、私が見る限り冗長です
以下は、トークンの解析に使用するコードのセクションです。
>>>>
一番下に で示されている不要になった行がありますが、コメントアウトするとcmd_parse_value_lookup()
関数が失敗します。そのままにしておくと、コードは正しく実行されます。誰かが理由を教えて、何が起こっているのか説明してもらえますか?
編集:これは完全なコードです:
debugging - PIC24HJ256GP610/610A の違いによる RTCC での I2C 読み取り/書き込みの問題?
PIC24HJ256GP610A の I2C モジュールに問題があります。私のコード (以下のスニペットを参照) は、PIC24HJ256GP610 [注: 610A ではありません] で完全に正常に動作します。DS1374 RTCC との通信に I2C バスを使用しています。しかし、610A では、I2C を使用して RTCC に値を書き込もうとして ACKSTAT ビットをポーリングするとスタックします。また、ほとんどの場合、I2C 経由で値を読み取るときに RTCC 値が増加しません (必要に応じて増加する場合もあります)。何か案は?I2C モジュールを扱う 610 と 610A の間でコンフィグ ビット/モード/設定の違いはありますか? RTCC チップを交換して、プロセッサを交換してみました。したがって、ここでの唯一の違いは、I2C 通信が 610 では機能し、610A では機能しないことです。
610 と 610A の違いは何ですか? 610 はもはや製造されていない旧式の部品ですか、それとも製造され続ける予定ですか?
実験、信号の調査、デバッガーのステップ実行中に気付いたことがいくつかあります。
1)。I2C クロックは、20 番目の送信ビットで無期限に高くなり、デバッガーを一時停止すると ACKSTAT ビットのポーリングで停止します。最初のビットがスタート ビットのように見え、次にさらに 9 ビット、別のスタート/ストップ ビット、さらに 9 ビットが続き、クロック ラインが High になります。
2)。クロック ラインがスタックし、ウォッチ ウィンドウを使用している場合、I2C1STATbits レジスタの値は 0x8008 であり、これはスレーブ デバイスから NACK を受信したこと、およびスタート (またはリピート スタート) ビットが最後に検出されたことを意味します。
3)。610 と 610A の両方で、常にスレーブ デバイス (RTCC) から読み取ることができます。ただし、610A では値が増加せず、整数値のままになることがあります。すべての電源を切り、すべてを再プログラムすると、RTCC の値が変わると思います。値を読み取るときに一定のままである場合もあれば、値を読み取るときに実際に変化するのは 25% 程度です。
4)。610A を使用して、I2C 経由で RTCC に何も書き込むことができません。プロセッサは ACKSTAT ビットのポーリングでスタックします (RTCC から NACK を受信したためだと思います)。610 は完璧に動作します。
ツール: MPLAB v8.86、C30 v3.31、ICD3
ありがとう、ブラッド
c - XC8コンパイラエラー「宣言に識別子がありません」
私は最近、仕事でいくつかのCとファームウェアの責任を引き継ぎました。基本的な問題のように見えますが、答えが見つからない問題に問題があります。私はCの経験はあまりありませんが、高級言語で長年の経験があります。
ファームウェアはPIC18F4865用に作成されており、正しくコンパイルおよびプログラムできません。もともとはHI-TECHPICC18コンパイラを使用してMPLABIDE8で作成されていましたが、MPLAB X IDEに移行して、問題が発生しました。
まず、同じHI-TECH PICC18コンパイラを使用していて、正常にプログラムされているように見えましたが、デバイスが正しく読み取れていませんでした。次に、XC8コンパイラに切り替えて、コンパイル中に回避できないエラーメッセージが表示されるようになりました。
eeprom.hファイルは
オンラインで調べたところ、このエラーは以前に含まれていたファイルで発生する可能性があることがわかりました。そのファイルを確認したところ、すべて問題ないようでした。インクルードの順序を並べ替えても、その場合はエラーメッセージが変わると思いますが、それでもこの行についてエラーが表示されます。
次に、どのパラメーターにも名前が付けられていないため、関数宣言が無効である可能性があると考えたため、10行目を次のように変更しました。
これは何も変わりませんでした。しかし、私が掃除して再構築したとき、それはeeprom.hを再コンパイルしていなかったという奇妙な感覚がありました。それが発生するかどうか、または強制的に再コンパイルする方法はわかりません。
これを修正することで、現在発生しているファームウェアの問題が修正されるのか、MPLAB IDE 8に戻る必要があるのかはわかりませんが、それでも修正したいと思います。
mplab - MPLAB トレース レジスタ
PIC mplab と PIC は初めてです。シミュレーターで実行するプログラムを開発しましたが、期待どおりに動作しているようです。ここで、プログラムがポート C で行っていることを記録したいと思います。スティミュラスを適用するテキスト スクリプトがあります。作業が開始したら、そのスクリプトから切り離し、LATC のトレース レジスタ エントリをトリガー Demand と Trace Filename と共に追加します。しかし、ファイルには何も書き込まれません。
ヒントをいただければ幸いです。
simulator - Microchip MPLABX ADCシミュレーションの問題:ADC-W101:選択したチャネルがデジタルIOとして構成されている
MPLAB Xシミュレータで次のプログラムをシミュレートしようとしていますが、ADCが機能していないようです。「0303」値の刺激ファイルをADRESLレジスタに添付しましたが、読み取りがなく、シミュレータコンソールに「ADC-W101:選択されたチャネルがデジタルIOとして構成されています。選択されたチャネル:0」という警告が表示されます。さらに、一度設定されると、ADIFがトリガーされても、ADCON0GOビットはクリアされません。写真は16f88です。MPLAB Xシミュレータの問題ですか?16f88でMPLABXsimの制限を確認しましたが、ADCについては何もありません。