問題タブ [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.
pic - PICkit2 点滅 LED ボタン付き
16f690 チップを搭載した PICkit2 ロー ピン カウント デモ ボードを使用しています。LED のオンとオフを切り替える簡単なコードを作成できましたが、プッシュ ボタンを使用して LED の状態を変更しようとすると、できませんでした。私のコードは、デバイスの回路図へのリンクとともに以下にあります。
assembly - picマイクロコントローラでメモリロケーションをクリアする
私は asm と組み込みシステムの初心者です。「インダイレクション」レジスタを使用してメモリの場所をクリアするためのコードを見ていました(またはそのようなもの-よくわかりません)。コードは次のようになります。
私はその部分を理解していませんincf FSR, F
。この命令incf
は 2 つのオペランドを取ります。最初の場所で値をインクリメントし、2 番目の場所に結果を格納します。この場合F
、インクリメントされた値があるのに、なぜテストを行うのFSR
でしょうか?
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*
は機能しません。
arm - マイクロコントローラ用ソフトデバッガ
GDBのようなマイクロコントローラー(PIC24など)用のソフトデバッガーはありますか。私のプラットフォームは Linux を実行していないため、GDB を使用できません。デバッガー以上に、CCP のようにデータをログに記録する必要があります。
私は PICKit2 を持っていますが、ランタイム ウォッチ ウィンドウの更新をサポートしておらず、ウォッチ変数が更新されるブレークポイントでのみサポートされています。
実行時のデータ ロギングに MODBUS RTU を使用しようとした人はいますか?
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??
c - ここで uint16_t が違いを生むのはなぜですか?
Linux で gcc を使用してコードをコンパイルするとr
、7
.
同じコードを Microchip C18 でコンパイルするとr
、0
.
なんで?
それを次のように変更すると:
r
7
もC18になります。
C18 のマニュアルに整数昇格に関するセクションがありますが、私の質問とは関係ないと思います。とにかく、ここにあります:
ISO は、すべての演算を int 精度以上で実行することを義務付けています。デフォルトでは、MPLAB C18 は両方のオペランドが int より小さい場合でも、最大のオペランドのサイズで演算を実行します。ISO で義務付けられている動作は、-Oi コマンドライン オプションを使用して設定できます。
inline-assembly - 構文エラー写真18:RCNTEQU0x20およびMYREGEQU0x21
microchipv8.63のCコンパイラでpic18F4550を使用しています。「PICマイクロコントローラーとアセンブリを使用した組み込みシステムとpic18のc」という本の次のコードを使用しています。
次のラインコードで、構文エラーが発生します:RCNTEQU0x20およびMYREGEQU0x21。
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 つの割り当てのみが行われ、別のブロックを割り当てる前に解放されるため、メモリが断片化されることはありません。
audio - .wav ファイルのデータを pic18F4550 のフラッシュ メモリに入れる
ハードウェア プログラミングは初めてです。マイクロチップ バージョン 8.63 の C コンパイラを使用して pic18F4550 を使用しています。私の質問は: pic18F4550 のフラッシュ メモリに .wav ファイル (バイナリ データ) を書き込むためのサンプル コードはありますか?
c - 元の .wav ファイルの他のサウンド
マイクロチップ v8.63 の pic18F4550 を使用しています: picdem には C プログラム言語を使用しました: 次のプログラムを作成しました: 8 ビット 8000Hz に変換された .wav ファイルのバイナリ データを取得します (音は: 誰かが「 red")、picdem の 'rom' にデータを書き込みます。各値はポートに書き込まれます => 接続されているボックスがあります。
問題:私はここでは、元の音(誰かが言う:「赤」)ではなく、大きな他の音(ノイズやパチパチ音はありません)が聞こえますが、大きな他の音は聞こえません。
それがコードです: