問題タブ [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.
c - データ バンク サイズを 256 バイト以上にする方法 [リンカ ファイル - MPLAB]
私は PIC18F87J11 FAMILY を所有しており、MPLAB C18 コンパイラを使用しています。次の変数に指定できる最大バイト数は何ですか。
リンカー ファイルを変更して 256 バイト以上にする必要があることはわかっています。
これは私のきれいなリンカファイルです。
これは、CONNECTION_TABLE に 256 バイトを超えるように変更したリンカー ファイルです。
ご覧のとおり、私のCONNECTION_TABLEは から始まり、0x100
で終わり0x999
ます。さらに多くのバイト数を指定したい場合、指定できる最大バイト数は?
よく見ると、次のコードがあることに気付くでしょう。
それはCONNECTION_TABLEが を超えて取得できないということ0xFFF
ですか?
CONNECTION_TABLEのバイト数を2倍にしたいのですが、どうすればいいですか?
現在は で始まり で0x100
終わるようにしています0x999
が、末尾を に変更でき0x1332
ますか? それとも、境界を越えてしまうのでうまくいきません0xFFF
か?
ありがとう!
c - unsigned int と unsigned char の比較
のような unsigned char 配列がありData[2]
ます。unsigned int を返す関数の出力と比較するために必要でした。
Data[2]
を unsigned int に、またはその逆にキャストしようとしました。うまくいきませんでした。
私がやろうとしていることは次のとおりです。
ReadFlash2
は unsigned int を返す関数ですData[2]
が、 は unsigned char です。
それぞれキャストしようとしましたが、うまくいきませんでした。
私が間違っていることはありますか?どれをキャストし、何にキャストすればよいですか?
ありがとう。
編集: Readflash 関数のコード:
c - SPI の DMA 割り込み
dsPIC33FJ128GP802 マイクロコントローラ用の SD カード (FatFS を使用) に書き込むプロジェクトを再作成しようとしています。
現在、SPI から日付を収集するために、512 回ループして SPI バッファーにダミー値を書き込む do/while を使用し、SPI フラグを待ってから、次のように SPI 値を読み取ります。
DMA 割り込みを使用してこれを再現しようとしていますが、期待どおりに動作しません。私は 1 つの DMA チャネルを使用しています。SPI は当面 8 ビット モードであるため、DMA はバイト モードであり、「ヌル書き込み」モードでもあり、ピンポンなしで連続します。私のバッファーは 1 つのメンバー配列のみであり、DMA は一致しています。
null書き込みモードから私が理解していることから、DMAは読み取りが実行されるたびにnull値を書き込みます。ただし、CPU による最初の書き込みが実行されるまで DMA は開始されないため、手動/強制の方法で DMA を開始しました。
割り込みが開始され、エラーなしで実行されます。ただし、コードは後でコレクションが正しくないことを示しています。
私の割り込みは、収集したデータ (上記で割り当てられた DMA バッファーに配置されていると想定) を、プログラム全体で使用されるポインターに配置するだけであるという点で単純です。
割り込みが 512 回実行されたら、DMA を停止してフラグをスローします。
私は何が欠けていますか?これは非 DMA 方式とどのように同じではないのですか? SPIの送信完了を待つwhileループ(while(!_SPIRBF);)が無いのが原因でしょうか。残念ながら、null 書き込みモードでは SPI データを自動的に送受信するため、手動で待機することはできません。
また、2 つの DMA チャネル (1 つは書き込み用、もう 1 つは読み取り用) を使用してみましたが、これも機能しませんでした (さらに、後で SD カードに適切に書き込むときに、そのチャネルが必要になります)。
どんな助けでも素晴らしいでしょう!
c - 4 byes を unsigned long 変数に変換するには?
4 バイトを 1 つの unsigned long 変数に正しく変換するにはどうすればよいですか?
MPLAB C18 で PIC18 をプログラミングしています。これが私のコードです。
これは私が取得し続ける出力です。 秒:255
ありがとう!
c - 出力ポートの設定 High Low C
MPLAB を使用して、CCS コンパイラを使用して C でプログラムをコンパイルしています。
定義されたポートを使用して、出力ポートを高または低に設定したいと考えています。
portOut1
だから、私は自分の高値または安値を設定したい.
私はそれを行うために3つの方法を使用しましたが、機能したのは1つだけでした。しかし、私はそれだけでは満足していません。
1: (動かない、なぜ?)
2: (動かない、なぜ?)
3: (明らかに動作します)
1 番目と 2 番目の方法が機能しない理由がわかりません。
コメントしない限り、このピンが何をするかわからないので、3 番目のピンは使用したくありません。
誰でもそれを行う方法を知っていますか? または、私が間違っていることは何ですか?
linux - Linux 上の MPLABX & Microchip ライブラリ ファイル名のスペース
これは、一連の「ヘルパー」または「ライブラリ」ファイルを Windows の世界から Unix/Linux の世界に持ち込むことに問題があると思います。MPLABX プロジェクトを Windows マシンでコンパイルでき、Linux マシンではコンパイルできないという問題が発生した人はいますか? Microchip によって作成および配布された C コードの奥深くにあるファイル名のスペースが、Linux マシンで正しく処理されていないように見え始めています。つまり、一部のツールは、Microchip が使用することを選択したファイル名のスペースでおそらく「問題ありません」であり、他のツールはファイルが見つからないと言っています。
Windows と Linux の両方が同じ「デュエル ブート」マシンで実行されています。プロジェクト ファイルは、同じ SVN リポジトリから新たにチェックアウトされます。そして、MPLABX の両方のコピーが最新であると信じています。他の違いを排除する他の方法を想像するのは難しいでしょう. つまり、MPLABX がファイルを処理する方法は、残りの数少ない違いの 1 つです。
-ありがとう