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

assembly - 4x4 スイッチ パネルの検出

MPLAB で PIC16f877 をプログラミングしています (アセンブリを使用)。私は4x4のスイッチパネルを持っています。入力を受け取ることはできますが、それがどのスイッチから来たのかを検出できません。portb を使って、最初の RB4 から RB7 を入力し、RB0 から RB3 を出力にしていますが、たとえば SW0、SW4、SW8、SW12 は同じように機能しますか? どうすれば厳密に判断できますか??

ここに私のコードの関連部分があります

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

c# - Pic Port をフローティングにする

私は写真18f87j50を持っています。私のデジタル I/O の 1 つで、たとえば RH7 としましょう。これを使用して 0 ~ 3.3 V の信号を送りたいと考えています。私はそれを出力として構成し、PWM を生成するので、オシロスコープで 2V を読み取ります。次に、ポートを「解放」して、この 2V レベルでフローティングさせようとします。「解放」するときは、ポートを入力として作成し、インターンプルアップが無効になっていることを確認します。

しかし、私はこれで本当に成功していません。プルアップがまだ有効になっているため、3.3V に非常に速く戻るようです。ポートに負荷がかかりません。

次のステップは、そこに OP アンプを配置して 0 ~ 10V の信号を作成することです。

私はこれを正しく行っていますか?-> ポート出力、pwm 信号を希望のレベルに、内部プルアップを無効にし、ポート入力をフローティング開始できるようにします。

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

c - C での高度なプリプロセッサ トークン化

PIC 用のCマクロの作成に問題があります。他の C ベースのシステムでも同じなので、PIC 以外のCの専門家も大歓迎です。

LED_1 ピンを定義したと仮定しましょう:

したがって、LED を点灯させたい場合は、次のように記述します。

LED_1 定義を使用して実行したい場合は、さらに 2 つのマクロを追加する必要があります。

そしてそれを使用するには:

そして、それは魅力のように機能します。しかし、問題は、上記の定義で私が持っていることです

PORT Aビット.##var

では、PORTB の値を変更したい場合はどうすればよいでしょうか? ポート A とポート B に対して別々のマクロを作成する必要があります。しかし、それは堅牢なソリューションにはほど遠いものです。そして、理由はわかりませんが、うまくいかないアイデアを思いつきました。

そして、これを実行しようとすると:

コンパイラは__##var___A1に変更しますが、__ A1Aに変更しないため、このマクロは想定どおりに機能しません。

私はそれを修正するのに多くの時間を費やしたので、助けていただければ幸いです:)


編集::


問題の解決策を見つけたかもしれません:
(LAT は別のレジスタ名ですが、PORT と同じように機能するため、この名前の変更は関係ありません)

しかし、コンパイルエラーが発生します:

100: PORTAbits.RA0 = 1;
^ (374) 基本型がありません。int と見なされます (警告)
^ (983) ストレージ クラスが再宣言されました
^ (984) タイプが再宣言
されました ^ (239) 識別子 "PORTAbits" が再定義されました (3900 行目から)
^ (314) ";" 期待される

いいえ、正しく置き換えられませんが、理解できないPORTAbitsを再定義することを知らせるコンパイラ警告が表示されます。プリプロセッサでPORTchange(var)PORTxbits.Rvar ( x は A または B) に変更したかったのですが、代わりに何かを再宣言しているようです。

理解できません。

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

serial-port - bitbanging メソッドを使用して「A」文字を送信する

bitbanging メソッドを使用して「A」文字を送信しようとしています。send_serial() 関数でこのコードを書くのを手伝ってくれる人はいますか

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

debugging - pic32 マイクロコントローラをデバッグできない、または構成ビットを更新できない

私は PIC32MX460L512 マイクロコントローラー (Digilent の Cerebot MX4 ボード) を持っていますが、いくつかのプロジェクトを行った後、もうプログラムできません。

これは、ボードの乗算器と除算器をテストして、#pragma pll を使用してボードがどのように機能するかを確認した後に発生しました ....

新しい 16 進数を書き込んだり、構成ビットを変更したりできず、次のエラーが表示されます

  1. PIC32 スターター キットのハードウェア初期化エラー。エラー = -1004、詳細 = 0x80004005、(LID:29) または 2 番目のエラー
  2. デバイスのリセットに失敗しました/構成ビットが正しいことを確認してください。

Windowsがデバイスとプリンターでそれを見ることができるので、ボードはまだ機能していると思います。

どうすればいいですか?一部のビットからメモリをリセットできますか? 私はまだマイクロコントローラーの初心者です。

前もって感謝します

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

c - ifステートメントをforループに変換しますか?

4x4キーパッドで押されたキーをスキャンする関数をmikroCで作成しました

このアルゴリズムをループに変換する方法はありますか?

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

c - pic 18f4550 でビット値に基づいて色を発音します

更新 2

私は自分の pic 18f4550 でサウンド (赤、緑、青と言うことができます) を再生できるプログラムを作りたいです picdem に接続されたスピーカーがあり、その部分は正常に動作します。コンパイラ。

赤と言うと、.wav ファイルのビット値を取得する必要があります (これにはビット パターンがあります)。私の正しい質問は、.wav ファイルのビット値を取得する方法です。

0 投票する
5 に答える
309 参照

c - C での char[] 操作

次のように定義するとします。

これに割り当てられるデフォルト値は何char[]ですか? のよう{'', '', '', ... , ''}ですか?

私のプログラム (電卓) では、operand[2][13](最初のオペランドはoperand[0]で、2 番目のオペランドはoperand[1]) があり、操作がありResult[15]、それらはすべてunsigned charです。最初に、ユーザーは Operand1 と Operand2 (一度に 1 文字) を入力し、それが に格納されoperand[2][13]、プログラムは結果を文字として に格納しResult[15]ます。今私が欲しいのは、次の反復で、ユーザーが次のオペランドを入力できるようにoperand[2][13]、操作をクリアResult[15]し、プログラムが次の操作を実行し、結果をに保存することですResult[15]

これらの配列をクリアするにはどうすればよいですか?

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

c - Cで奇数*偶数が正確な値を返さないのはなぜですか?

私のプロジェクト (キーパッド 4x4、LCD、および 4 つの LED を備えた PIC18 を使用した電卓) を終了した後、乗算操作で奇妙な問題に直面しました。

奇数 (> 1) * 偶数 (> 0) を乗算すると、結果は正確には正しくありません。たとえば、3 * 4 = 11.99999 です。

====================

ここで、状況を説明しようとします。

ユーザーがキーパッドのボタンを押すと、プログラムはキーパッドから char を取得し、それを char[] (一度に 1 つの文字) に格納するため、最終的に 2 つの char[] Operand[13] と Operand[13] が作成されます。Operand1 と Operand2 を入力した後、プログラムは atof() 関数を使用して浮動小数点数に変換し、演算 ('+'、'-'、'*' または '/') を適用し、結果を int Result に格納します。最後に、プログラムは FloatToStr() 関数を使用してこの int を char[] に変換し、LCD に表示します。

=====================

これが私のコードです:(すみません、ちょっと長いですが、この問題を解決するのを手伝ってください)

0 投票する
4 に答える
1076 参照

c - Linux を介した回路のシミュレーションとマイクロコントローラーのプログラミング

ロボット アームを制御するマイクロ コントローラー プロジェクトを実行しようとしています。私の問題は、@ MS Windows には MikroElectronica (IDE: MicroC) があり、.c を 16 進数にコンパイルし、Proteus に 16 進数を入れてシミュレートすることです。次に、CD 付きの特別な (PCB) キット (Windows ソフトウェアを搭載) を使用して、マイクロチップを配置し、hex ファイルなどをインストールします。

まず、Msへの敬意ですが、私はそれが嫌いです!私はUbuntu / Linuxとオープンソースが大好きで、「手順」で前述のLinuxでの複雑さを最小限に抑える方法を専門家から教え​​てもらう必要があります。

私と一緒にいる電気機械エンジニアは、Ms は簡単だといつも自慢しています。コンピューター サイエンスの専門家がオープンソース テクノロジをどのように使用しているか、またその強力さと信頼性を示したいと思います。

助けてください !