問題タブ [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.
c - PIC18 用のタイマーをどのように作成しますか?
私の人生では、PIC18または正確にはPIC18f87j11のタイマーを作成できません。私がやりたいのは、1秒ごとにインクリメントするカウンターを持つことだけです。PIC18 が実行されている時間を秒単位で監視したいだけです。
そこにあるチュートリアルのほとんどは PIC16 用であり、アセンブリにあります。Cプログラミングを使用してこれを実行しようとしています。初心者は例を見たほうがよくわかるので、例がないと上達しません。
誰かが私に例を見せてください、ありがとう!
c - TCP/IP スタックを使用して PIC18 でブートローダを単体テストする方法は?
Microchip 社のMPLAB X 1.60でXC8 Cコンパイラ1.12を使用してブートローダを開発しています。対象チップはPIC18F87J60です。私のブートローダは、ブートローダが通常行わないいくつかの追加のことを行います。アプリ イメージをダウンロードしてサーバーからフラッシュし、MD5ハッシュサムを計算してその整合性を検証します。また、このプロジェクトに固有のサーバーで認証テストに合格する必要があります。これらすべてを機能させるために、私は Microchip の TCP/IP スタックv5.42を使用しています。
今やりたいことは、ブートローダーを徹底的にテストすることですが、正しい方法とツールを選択するのに苦労しています. Pickit 3 ICDにはアクセスできますが、ロジック アナライザーなどの他の専用ハードウェアにはアクセスできません (オシロスコープを除く)。ブートローダは階層的なFSMとして実装されているため、さらに複雑になる場合があります (またはそうでない場合もあります)。
少なくとも、ブートローダーのすべての異なる部分の単体テスト/モジュール テストを考え、FSM のすべての状態を個別の機能と見なしていました。インターネット上にはいくつかの単体テスト フレームワークがあり、そのうちのいくつかは、私のような組み込み環境や制限付き環境で使用できると主張しています。
それらの問題は、ほとんどが何らかのCライブラリとして実装され、プログラムの残りの部分と一緒にコンパイルされることですが、それらはすべて、コンパイラが何らかの標準に従うことを期待しています。XC8コンパイラは実際にはC90標準に準拠していますが、完全には拡張されていません(ドキュメントの「ANSI C標準からの逸脱」の章から明らかです) 。これは、フレームワークのコンパイルで問題を引き起こしています。
すべてのハードウェアとレジスタ アクセスをモックアップし、Windows 7 開発マシンでテストすることでこの問題を回避できるかもしれませんが、ブートローダーが大きく依存している TCP/IP ライブラリを使用しているため、それは膨大な作業になります。もう 1 つの欠点は、C コードがインテル i7とは異なる動作を PIC チップ上で行う可能性があるため、最終的にはチップ上でテストしたいということです。
ブートローダーを適切に行う方法について誰かアイデアがありunit-/moduletest
ますか? そのようなプラットフォームでそのようなプログラムを単体テストすることは良い考えですか? 他に使用できるテスト方法はありますか?
要件/前提条件/メモ:
- ホワイトボックステストの方法について話しています。現時点では、ブラックボックス テストは苦痛ではありません。さらに、機能的にブートローダーはコンパイルされておらず、すべての機能要件は測定可能です。
- テストを可能な限り自動化し、「コンパイル」を押したときにテストを自動的にトリガーしたいと考えています。
- 厳密なパフォーマンス要件はなく、予備の ROM メモリもいくつかあるので、多くのプローブを配置するようなコード計測は大きな問題にはなりません。
- 私はテストの達人ではありません。上記で使用した派手な言葉は、ほんの数時間の調査から得たものですが、実際のテスト経験はありません.
ご意見やご提案をお寄せいただきありがとうございます。
ビットジャンキー、
c - PIC18 用の C18 ライブラリの遅延関数を使用した長い遅延
Fosc = 10MHz の PIC18 を使用しています。したがって、Delay10KTCYx(250) を使用すると、10,000 x 250 x 4 x (1/10e6) = 1 秒になります。
C18 の遅延機能を非常に長い遅延 (たとえば 20 秒) に使用するにはどうすればよいですか? 私は Delay10KTCYx(250) の 20 行だけを使用することを考えていました。もっと効率的でエレガントな方法はありますか?
前もって感謝します!
output - pic18f14k50 が出力されない
pic 18f14k50 を使用していて、簡単なテストを試みています。LEDを点滅させるだけです。問題は、既に ANSEL、ANSELH、ADCON1 などをすべて 0 に設定し、すべての PORTS を出力として設定したことです。まだ私は見ていないし、LED が点滅しています。
ここにコードがあります(私はMicroCを使用しています)
助けてくれてありがとう!
embedded - タイマーは PIC18F でスリープ モードをカウントしていませんか?
MPLAB C18 を搭載した PIC18F87J11 があります。デバイスを強制的にスリープ状態にすることで、デバイスによるバッテリーの消費を制限しようとしています。スリープモードに入ると、timer0 が目覚めるまでそれ以上カウントアップを停止することに気付きました。また、MRF89XAトランシーバーを使用しているため、デバイスをウェイクアップする唯一の方法は、別のノードからメッセージを受信したときです。
デバイスをスリープ状態にするには、コンパイラ ヘッダー ファイルで定義されているこの関数を呼び出すだけです。
Q1: ノードからメッセージを受信する以外に、デバイスをウェイクアップするにはどうすればよいですか? データシートでは、割り込みによる終了またはリセットによる終了と書かれていますが、タイマーがない場合はどうすればよいでしょうか?
DataSheetを読むと、時間を監視するには Timer1 を使用する必要があると記載されていますが、それは本当ですか?
私が本当に望んでいるのは、バッテリーの使用量を可能な限り減らし、タイマーをスリープモードで動作させ続けることだけです.
ありがとう!
c - 0 ~ 5v のアナログをロータリー エンコーダの等価物に変換する
私は現在、インターンとしてロボットに取り組んでおり、モーターの代替ドライバーを選択する必要があります。軸の位置情報はアナログポットで与えられます。私はテクノソフトのドライバーを 3 つ持っていますが、これらのドライバーは調整作業を行うためにロータリー エンコーダー (直角位相) 情報を必要とします。このアナログ信号を適切な直交信号に変換して機能させることを考えていました。
私が設計した方法は、150hz でポット値をサンプリングする pic18 であり、現在の値から前の値を減算して、速度のアイデア (一種の導出) を取得します。速度の絶対値と方向信号を生成し、直交エンコーダの 4 つの状態でステート マシンの変化率を調整します。これらの信号を最終的に 2 つの出力に送信します。
私の質問は次のとおりです。
それは実現可能ですか?または、そうする賢い方法はありますか?それとも、仕事をすることができる専用チップでさえありますか? 私はウェブを検索して、すでに似たようなことをした人を見つけましたが、何も見つかりませんでした.
私は最後の 2 日間をこのソリューションのコーディングとデバッグに費やしましたが、成功しませんでした...スコープでは、直交信号は存在しますが、実際のロジックでは動作しません。ポットを動かしても動かさなくても、本当に速くもゆっくりも変化します。
これが私のコードです
コードのコメントの一部はフランス語ですが、重要なものを翻訳しました。明らかな間違いや間違ったコーディング方法はありますか。「どこで検索するか」または何を見るかについて何かアドバイスはありますか?
よろしくお願いいたします。
ニコラス
assembly - プッシュボタンでLEDを点滅させる方法 - pic18f
LED を点滅させる簡単な回路を作成しましたが、コードはプロテウス シミュレーションで動作しません。以下のコードとシミュレーションを参照してください。
誰かが問題の解決策を持っていますか? どうもありがとうございました。