問題タブ [pic]

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

pic - PICkit2 点滅 LED ボタン付き

16f690 チップを搭載した PICkit2 ロー ピン カウント デモ ボードを使用しています。LED のオンとオフを切り替える簡単なコードを作成できましたが、プッシュ ボタンを使用して LED の状態を変更しようとすると、できませんでした。私のコードは、デバイスの回路図へのリンクとともに以下にあります。

デモ ボード ユーザー ガイド

0 投票する
3 に答える
5137 参照

assembly - picマイクロコントローラでメモリロケーションをクリアする

私は asm と組み込みシステムの初心者です。「インダイレクション」レジスタを使用してメモリの場所をクリアするためのコードを見ていました(またはそのようなもの-よくわかりません)。コードは次のようになります。

私はその部分を理解していませんincf FSR, F。この命令incfは 2 つのオペランドを取ります。最初の場所で値をインクリメントし、2 番目の場所に結果を格納します。この場合F、インクリメントされた値があるのに、なぜテストを行うのFSRでしょうか?

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

c - Microchip C18でRAMとROMの両方のポインタを受け入れる関数を作成できますか?

受け入れる関数を宣言しconst char*、文字列リテラルを渡すと、

警告:[2066]割り当てにおける型修飾子の不一致

文字列リテラルはrom const char*。逆も同じです。

PICはハーバードアーキテクチャですが、メモリは1つの連続したアドレス空間にマップされるため、理論的には、RAMポインタとROMポインタの両方を同じ方法でサポートできるはずです。おそらく、RAMポインタは16ビットであるのに対し、ROMポインタは24ビットであるため、ROMポインタを使用する必要があります。

ただし、aconst char*をaにキャストするだけでconst rom char*は機能しません。

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

arm - マイクロコントローラ用ソフトデバッガ

GDBのようなマイクロコントローラー(PIC24など)用のソフトデバッガーはありますか。私のプラットフォームは Linux を実行していないため、GDB を使用できません。デバッガー以上に、CCP のようにデータをログに記録する必要があります。

私は PICKit2 を持っていますが、ランタイム ウォッチ ウィンドウの更新をサポートしておらず、ウォッチ変数が更新されるブレークポイントでのみサポートされています。

実行時のデータ ロギングに MODBUS RTU を使用しようとした人はいますか?

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

button - pic18f4520 with picos18- 割り込みの問題

I am programming PIC18F4520, and using picos18 for multitasking. I need to control buttons with PORTB. I am using interrupts, but I am facing a problem.

Out of nowhere (while I am not pressing buttons), my interrupt handler executes. My pic handles many interrupts.

What could be the reason??

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

c - ここで uint16_t が違いを生むのはなぜですか?

Linux で gcc を使用してコードをコンパイルするとr7.
同じコードを Microchip C18 でコンパイルするとr0.
なんで?

それを次のように変更すると:

r7もC18になります。

C18 のマニュアルに整数昇格に関するセクションがありますが、私の質問とは関係ないと思います。とにかく、ここにあります:

ISO は、すべての演算を int 精度以上で実行することを義務付けています。デフォルトでは、MPLAB C18 は両方のオペランドが int より小さい場合でも、最大のオペランドのサイズで演算を実行します。ISO で義務付けられている動作は、-Oi コマンドライン オプションを使用して設定できます。

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

inline-assembly - 構文エラー写真18:RCNTEQU0x20およびMYREGEQU0x21

microchipv8.63のCコンパイラでpic18F4550を使用しています。「PICマイクロコントローラーとアセンブリを使用した組み込みシステムとpic18のc」という本の次のコードを使用しています。

次のラインコードで、構文エラーが発生します:RCNTEQU0x20およびMYREGEQU0x21。

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

c - Doug Lea アロケーターでの malloc の奇妙な動作

ヒープが 16kb しかなく、mmap も swap もない非常に小さなシステムを使用しています。Doug Lea アロケータftp://g.oswego.edu/pub/misc/malloc-2.8.5.cの最新バージョン 2.8.5 を使用しています。

更新 理解しやすく、何が問題なのかを確認するための小さなテストケースを作成しました

8kb を割り当て、解放し、12kb を割り当てると、それは機能し (i != NULL)、12kb を割り当てることができます。

表示:

最初に大きすぎるバッファー (30kb) を割り当て、次に 8kb を割り当て、それを解放し、12kb を割り当てた場合、それは機能しています (i == NULL)、12kb を割り当てることができません:

表示:

常に 1 つの割り当てのみが行われ、別のブロックを割り当てる前に解放されるため、メモリが断片化されることはありません。

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

audio - .wav ファイルのデータを pic18F4550 のフラッシュ メモリに入れる

ハードウェア プログラミングは初めてです。マイクロチップ バージョン 8.63 の C コンパイラを使用して pic18F4550 を使用しています。私の質問は: pic18F4550 のフラッシュ メモリに .wav ファイル (バイナリ データ) を書き込むためのサンプル コードはありますか?

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

c - 元の .wav ファイルの他のサウンド

マイクロチップ v8.63 の pic18F4550 を使用しています: picdem には C プログラム言語を使用しました: 次のプログラムを作成しました: 8 ビット 8000Hz に変換された .wav ファイルのバイナリ データを取得します (音は: 誰かが「 red")、picdem の 'rom' にデータを書き込みます。各値はポートに書き込まれます => 接続されているボックスがあります。

問題:私はここでは、元の音(誰かが言う:「赤」)ではなく、大きな他の音(ノイズやパチパチ音はありません)が聞こえますが、大きな他の音は聞こえません。

それがコードです: