問題タブ [pic18]

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

c - プログラムメモリ内のHitechCデータバッファ

C18コンパイラは、ROM修飾子を使用してプログラムメモリ内の変数を許可しますが、Hi-Tech Cは、ハーバードアーキテクチャを最大限に活用することにかなり消極的であるようです。したがって、Hi-Tech Cコンパイラを使用してプログラムメモリにデータバッファを作成する方法はあります(アクセス速度を妥協する準備ができています)。

psectで可能性の兆候を見てきましたが、実用的な実装はありません。

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

microcontroller - MPLAB で C18 を含む複数のソース ファイルを作成する方法は?

C++ などの多くの言語では、多くの異なるソース ファイルを使用するのが普通ですが、PIC マイクロコントローラー プログラムではそうではないように思われます。少なくとも、私が読んだチュートリアルや本ではそうではありません。 .

main.c ファイルで使用できる一連のルーチン、グローバル変数、および定義を含むソース (.c) ファイルを作成する方法を考えています。これは可能ですか?

アドバイスありがとうございます!

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

timer - Timer1 RD16ビットはPIC18マイクロコントローラーで何をしますか?

私は本当に混乱しています。マニュアルには次のように書かれています。

ただし、実際には1つの16ビット演算でR/Wを実行する方法はないようです。データシートが後で述べていることから、そして私がオンラインで読んだことから、16ビット値はまだ次のように読まなければなりません:

そして、次のように書かれています:

表示されていない場合を除いて、RD16はTimer1のブロック図に表示されておらず、何の影響も及ぼさないようです。

しかし、それは真実ではないことを私は知っているので、ここで私は尋ねています:Timer1 RD16ビットはPIC18マイクロコントローラーで何をしますか?

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

tcp - マイクロチップTCP/IPスタックPIC18Fの無効なパケットシーケンス/ACK番号

親愛なる仲間のStackOverflowers、

Microchip社のTCP/IPスタックを使用して、カスタム(およびテスト済み)ボードのPIC18F87J60に何かを実装するプロジェクトに取り組んでいます。テストとして、接続をセットアップし、それをx秒間維持してから、正常に閉じるためのコードを作成しました。私はそれを有限状態マシンとして実装しました。送受信データはまだ追加していません。

しかし、私のプログラムは接続のセットアップに失敗します。Wiresharkを使用して、デバイスがDHCP経由でIPアドレスを正常に受信し、ARP解決が適切に行われていることに気付きました。これもうまくいかないので、今のところDNSを省略しましたが、後で解決します。また、最初のSYNパケットがデバイスによって送信され、サーバーによって適切に応答されることもわかりましたが、3ウェイハンドシェイクの3eステップが失敗します。確認応答番号は単なる乱数であるため、サーバーは混乱し、RSTパケットで接続をリセットします。次に、私のデバイスは別のランダムなシーケンス番号を持つACKパケットでリセットを確認し、サーバーはどういうわけかこのパケットを受け入れます。次に、サーバーはSYNパケットを使用して接続を再設定しようとしますが、私のコードは着信接続をリッスンしないため、接続は終了します。

これが私のコードです:

これがWiresharkログのスクリーンショットです。

よろしくお願いします、BitJunky

編集:これがwiresharkのdumpfileです。MACアドレスでフィルタリングしたため、DHCPプロセスの一部がこのダンプに表示されません。

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

c - PIC18F2550 メモリ ゲーム PIC C18 プログラミング LED オフ

MPLAB C18 コンパイラを使用して、メモリ ゲームを制御する PIC18F2550 の C コードを記述しています。ユーザーは、対応するボタンを押して、一連の LED の点滅を繰り返す必要があります。古いサイモンのゲームに少し似ていますが、シーケンスが 1 回だけ発生します。

私はこれまで苦労しており、いくつかの LED をオンにすることしかできませんでしたが、ボタンは LED を一瞬だけオフにし、その後再びオンにします。

これまでの私のコードは次のとおりです。

どんな助けでも大歓迎です!!

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

pic18 - PIC マイクロ コンピューター - タイマー 3 を非同期カウンターとして使用 - プルアップ

PIC18(L)F1XK22 を使用しています。タイマー 3 を同期カウンターとして使用しようとしています。

PIC は内部発振器を使用して動作しています。

これにより、ピン RA5 の外部オシレータとしての使用がオフになります。

T1CON の T1OSCEN は 0、T3CON の TMR3CS は 1 です。RA5 TRIS ビットをセットし、RA5 WPU ビットをクリアしました。

私の問題は、ピン RA5 (T13CLKI) がアクティブなプルアップを持っているか、何かによって駆動されているように見えることです。

RA5 の前に次の抵抗ネットワークがあります。

+5---10K------X-----24K----->RA5

ポイント X は、ホール効果センサーによって駆動されます。X が 0 ボルトの場合、RA5 は 2.2 ボルトです。24K 抵抗を 10K に減らすと、X が 1.1 ボルトに減少します。カウンターが機能する前に、抵抗を約 4K に減らす必要があります。

タイマーを設定するために使用したコードは次のとおりです...

最後の 2 行は、タイマーが開始された後にすべてのプルアップをオフにする無駄な試みで追加されました。

どんな助けやアイデアも大歓迎です。

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

stack - 代替 ZigBee スタック

Microchip ZigBee スタックの代わりになるスタックはありますか? PIC18F27J53 マイクロコントローラーと MRF24J40MB トランシーバーがあります。Microchip ZigBee Stack に含まれている例を読んで理解しようとしましたが、うまくいきません。私のような初心者には例が複雑すぎると思います。センサーノードとの間でデータを送受信するだけです。また、PIC18F27J53 は Zena 構成ツールのデバイス リストに含まれていません。

どんな助けでも大歓迎です。

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

c - PIC18F46J50EEPROMの読み取り/書き込み

私が取り組んでいるプロジェクトは以下の通りです。

ADuC7061のUSARTはPIC18F46j50EUSARTに接続されています。aduc7061は継続的に情報を送信し、pic18fはそのeusart0を介してその情報を受信します。

ここで問題となるのは、その情報をpic18のeepromに保存し、128x64のグラフィックディスプレイで操作した後にその情報を表示する必要があるということです。

0 投票する
0 に答える
1252 参照

c - PIC18F45K22 EUSART1 の受信とハイパー ターミナルでの表示

ハイパーターミナルで何も取得できません。コードに何かを追加または削除する必要がありますか?

助けていただければ幸いです。

乾杯

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

c - PIC のビットバン シリアルが C のネストされたループで動作しなくなる

Stackoverflow、あなたは以前私を助けてくれました。またあなたの助けが必要だと思います。PIC18F2550 で GPIO を使用して自分のシリアル出力をビットバンしようとしています。これはいくつかのシフト レジスタ (3x74LS595) に接続され、最後のシフト レジスタは標準の HD44780 LCD に接続されます。これまでのところ、クロッキングとラッチは正しく機能しており、長い戦いの後、データも正しく吐き出されています (バレルシフトがうまくいかず、範囲外のデータを喜んで吐き出しますが、余談)。

私の問題は、LCD を使用するには、イネーブル ピンをデータ クロックとしてトグルする必要があることです。そのため、コードを保存するために、2 回実行してイネーブル フラグをトグルする別のループを単純にネストし、それ以外の場合は同じバイトを吐き出します。これにより、理論的には吐き出されるバイト数が 12 から 24 の 2 倍になるはずです。何らかの理由で、このループが追加されると機能しません。2バイトを吐き出して終了します。それがなければ、12 バイトすべてを正常に吐き出します (ただし、有効化が存在しないため、LCD は適切にセットアップされません)。

ネストされた有効化ループなしで動作している画像を次に示します。

担当者がいないためリンクされました

D0 はデータで、その下の D1/2 はそれぞれクロック/ロードです。

そして、ここに for ループがあります:

担当者がいないためリンクされました

左端のエッジは、ラインの初期リセットです。意味のあるコードがすべて完了したことを示す小さなブザーが鳴るので、これらの 2 バイトの後に完了したことがわかります。

コードダンプは次のとおりです。

上記のコードでは、トグルを無効にして、すべてのバイトが吐き出されるかどうかを確認しました。ないと思います。私はこれをすべてアセンブリで行うことを真剣に考えています。なぜなら、C では一見単純なもので多くの問題を抱えていたからです。このことの背景で何が起こっているのか、私にはコントロールできないように感じます。私は Pickit 3 を使用していますが、実際に何が起こっているのかをよく知りたい場合は、ICD2 を掘り下げる必要があるかもしれません。