問題タブ [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.
assembly - 4x4 スイッチ パネルの検出
MPLAB で PIC16f877 をプログラミングしています (アセンブリを使用)。私は4x4のスイッチパネルを持っています。入力を受け取ることはできますが、それがどのスイッチから来たのかを検出できません。portb を使って、最初の RB4 から RB7 を入力し、RB0 から RB3 を出力にしていますが、たとえば SW0、SW4、SW8、SW12 は同じように機能しますか? どうすれば厳密に判断できますか??
ここに私のコードの関連部分があります
c# - Pic Port をフローティングにする
私は写真18f87j50を持っています。私のデジタル I/O の 1 つで、たとえば RH7 としましょう。これを使用して 0 ~ 3.3 V の信号を送りたいと考えています。私はそれを出力として構成し、PWM を生成するので、オシロスコープで 2V を読み取ります。次に、ポートを「解放」して、この 2V レベルでフローティングさせようとします。「解放」するときは、ポートを入力として作成し、インターンプルアップが無効になっていることを確認します。
しかし、私はこれで本当に成功していません。プルアップがまだ有効になっているため、3.3V に非常に速く戻るようです。ポートに負荷がかかりません。
次のステップは、そこに OP アンプを配置して 0 ~ 10V の信号を作成することです。
私はこれを正しく行っていますか?-> ポート出力、pwm 信号を希望のレベルに、内部プルアップを無効にし、ポート入力をフローティング開始できるようにします。
c - C での高度なプリプロセッサ トークン化
PIC 用のCマクロの作成に問題があります。他の C ベースのシステムでも同じなので、PIC 以外のCの専門家も大歓迎です。
LED_1 ピンを定義したと仮定しましょう:
したがって、LED を点灯させたい場合は、次のように記述します。
LED_1 定義を使用して実行したい場合は、さらに 2 つのマクロを追加する必要があります。
そしてそれを使用するには:
そして、それは魅力のように機能します。しかし、問題は、上記の定義で私が持っていることです
PORT Aビット.##var
では、PORTB の値を変更したい場合はどうすればよいでしょうか? ポート A とポート B に対して別々のマクロを作成する必要があります。しかし、それは堅牢なソリューションにはほど遠いものです。そして、理由はわかりませんが、うまくいかないアイデアを思いつきました。
そして、これを実行しようとすると:
コンパイラは__##varを___A1に変更しますが、__ A1をAに変更しないため、このマクロは想定どおりに機能しません。
私はそれを修正するのに多くの時間を費やしたので、助けていただければ幸いです:)
編集::
問題の解決策を見つけたかもしれません:
(LAT は別のレジスタ名ですが、PORT と同じように機能するため、この名前の変更は関係ありません)
しかし、コンパイルエラーが発生します:
100: PORTAbits.RA0 = 1;
^ (374) 基本型がありません。int と見なされます (警告)
^ (983) ストレージ クラスが再宣言されました
^ (984) タイプが再宣言
されました ^ (239) 識別子 "PORTAbits" が再定義されました (3900 行目から)
^ (314) ";" 期待される
いいえ、正しく置き換えられませんが、理解できないPORTAbitsを再定義することを知らせるコンパイラ警告が表示されます。プリプロセッサでPORTchange(var)をPORTxbits.Rvar ( x は A または B) に変更したかったのですが、代わりに何かを再宣言しているようです。
理解できません。
serial-port - bitbanging メソッドを使用して「A」文字を送信する
bitbanging メソッドを使用して「A」文字を送信しようとしています。send_serial() 関数でこのコードを書くのを手伝ってくれる人はいますか
debugging - pic32 マイクロコントローラをデバッグできない、または構成ビットを更新できない
私は PIC32MX460L512 マイクロコントローラー (Digilent の Cerebot MX4 ボード) を持っていますが、いくつかのプロジェクトを行った後、もうプログラムできません。
これは、ボードの乗算器と除算器をテストして、#pragma pll を使用してボードがどのように機能するかを確認した後に発生しました ....
新しい 16 進数を書き込んだり、構成ビットを変更したりできず、次のエラーが表示されます
- PIC32 スターター キットのハードウェア初期化エラー。エラー = -1004、詳細 = 0x80004005、(LID:29) または 2 番目のエラー
- デバイスのリセットに失敗しました/構成ビットが正しいことを確認してください。
Windowsがデバイスとプリンターでそれを見ることができるので、ボードはまだ機能していると思います。
どうすればいいですか?一部のビットからメモリをリセットできますか? 私はまだマイクロコントローラーの初心者です。
前もって感謝します
c - ifステートメントをforループに変換しますか?
4x4キーパッドで押されたキーをスキャンする関数をmikroCで作成しました
このアルゴリズムをループに変換する方法はありますか?
c - pic 18f4550 でビット値に基づいて色を発音します
更新 2
私は自分の pic 18f4550 でサウンド (赤、緑、青と言うことができます) を再生できるプログラムを作りたいです picdem に接続されたスピーカーがあり、その部分は正常に動作します。コンパイラ。
赤と言うと、.wav ファイルのビット値を取得する必要があります (これにはビット パターンがあります)。私の正しい質問は、.wav ファイルのビット値を取得する方法です。
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]
。
これらの配列をクリアするにはどうすればよいですか?
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 に表示します。
=====================
これが私のコードです:(すみません、ちょっと長いですが、この問題を解決するのを手伝ってください)
c - Linux を介した回路のシミュレーションとマイクロコントローラーのプログラミング
ロボット アームを制御するマイクロ コントローラー プロジェクトを実行しようとしています。私の問題は、@ MS Windows には MikroElectronica (IDE: MicroC) があり、.c を 16 進数にコンパイルし、Proteus に 16 進数を入れてシミュレートすることです。次に、CD 付きの特別な (PCB) キット (Windows ソフトウェアを搭載) を使用して、マイクロチップを配置し、hex ファイルなどをインストールします。
まず、Msへの敬意ですが、私はそれが嫌いです!私はUbuntu / Linuxとオープンソースが大好きで、「手順」で前述のLinuxでの複雑さを最小限に抑える方法を専門家から教えてもらう必要があります。
私と一緒にいる電気機械エンジニアは、Ms は簡単だといつも自慢しています。コンピューター サイエンスの専門家がオープンソース テクノロジをどのように使用しているか、またその強力さと信頼性を示したいと思います。
助けてください !