問題タブ [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 に答える
1613 参照

microcontroller - PIC18の割り込みは1回だけ発生します

PIC18F2550のTimer1を取得して、カウントダウンのために毎秒割り込みを発生させようとしています。これまでのところ、割り込み優先度やその他の設定を正しく確立できましたが、ISRは1回しか起動しません。カウントダウンの残り秒数をLCDに出力するようにプログラムを設定したので、何回の割り込みが経過したかがユーザーにわかります。ISRで適切な割り込みフラグをクリアするようにしました。これが、Googleで同じ問題を抱えている大多数の人々にとって問題の原因であったためですが、これでは修正されませんでした。私のプログラムに関する他のすべては、これまでのところうまく機能しています。

(正しい優先順位が実行されたかどうかをテストするために、低いカウントはダウンではなくアップします)

これがコードスニペットです

最終的には「31」が付いたLCDを見つめています。正しく設定されていない単一のフラグが正しく機能しない可能性がありますが、すべてが有効になっていて正しくクリアされていることを確認した限りです。私は何が間違っているのですか?助けていただければ幸いです。これは非常に苛立たしいことです。

また、すべてのブレークポイントをクリアしたので、どこでも停止せず、コンパイル時に最新バージョンをプログラムします。そのため、古いバストバージョンのコードを実行することを除外しました。

編集:明確にするために、このコードは機能のためだけのものです。毎秒発砲するのではなく、はるかに速く発砲します。動作するようになったら、オーバーフローカウントを再生して1秒にします。

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

c - extern struct を使用する場合の XC8 での競合する宣言

.c ファイルで定義された構造体である変数があります。

他のファイルで利用できるようにするために、次の.hファイルがあります。

これは、Microchip C18 コンパイラで機能しました。XC8 コンパイラは次のエラーを返します。

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

c - PIC18F に乱数生成用のタイマーを実装

ここに何も投稿しないでしばらく経ちました。今日、私は PIC18F マイクロコントローラにタイマーを実装するための助けを求めてここに来ました。このタイマーを srand() 関数のシードとして使用するために使用したいのですが、ここでたくさん検索した後、この問題を解決する方法が見つかりませんでした。

助けてください。

新人さんありがとうございます。

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

assembly - PIC18F452を使用してデュアル7セグLEDディスプレイに2桁の数字を表示する (Assembly)

PIC18Fxx2のデータシート

私が使っている7セグ関連のデータシートはこちらから入手できます

編集(2013/15/4): 以下のコードは PORTD の命令語です

コードが最初に実行されるときの TRISB、TRISD、PORTB、および PORTD の命令語

アセンブリを使用して、2 つの 7 セグ LED ディスプレイに異なる 2 つの数字を表示させたいと考えています。以下にリストされているコードを試してみましたが、うまくいきません。注: rdig = 右パネル、ldig = 左パネル、disp1 は 1 など。

出力は 81 (7 セグメント ディスプレイ上) であるはずですが、数字は何も表示されません。各パネルには、ある種の薄暗い光だけが現れます。ただし、コードは、7 セグメント ディスプレイの両側に 1 つの数字のみを表示しようとしている場合に機能します。

編集: 以下のように、TMR0N (b'00000000' 命令語、tmrL = FF、tmrH = FB) を使用して小さな遅延 (2 マイクロ秒) を各数値表示要求に追加しようとしましたが、右側のパネルに数値 1 のみが表示されます。

TMR0Nの命令設定

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

serial-port - MPlab での RS232 通信

MPlab を使用して pic マイクロ コントローラーからデータを読み取ります。pic18F87J11を使用しています。読み取りたいデータは RS232 の DB9 のピン 3 にあり、私の RS232 は pic マイクロ コントローラに接続されています。誰でも私を助けたり、それを行うための簡単なサンプルコードを教えてもらえますか??

ありがとうございました、

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

c - PIC 18 / RS232 受信

RS232 接続からデータを受信しようとしています (9600 kbps - "s" を送信しながら (1) (ハイパーターミナルでテスト))

私は p18F8722 を使用しており、プロセッサ上で次のように c で記述しています。

LCD に印刷すると、間違った文字が表示されます。ほとんどの場合、"p" "q" x (バー)...

どんな種類の助けにも本当に感謝しています。

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

c - MPLAB で複数のソース ファイルを使用して C プロジェクトをセットアップする

PIC18 デバイスの C プロジェクトに MPLAB IDE と XC8 コンパイラを使用しています。複数のソース ファイルを使用してプロジェクトをビルドしていますが、構造を作成する方法がわかりません。

プロジェクトでは、次のものがあります。

  • メイン コードが配置されているファイル main.c。ここから、いくつかのファイルが含まれます。
    • xc.h: チップ固有の変数などを定義する
    • stdlib.h、stdio.h、plib.h、delays.h: コンパイラの関数用
    • enc28j60.h: 定義とプロトタイプを含む自作ファイル
  • enc28j60.h のプロトタイプの関数が入るファイル enc28j60.c

enc28j60.c は main.c の定義に依存しているため、スタンドアロン ファイルとしてコンパイルできません。

このプロジェクトのセットアップ方法についていくつか質問があります。

  1. MPLAB プロジェクトのソース ファイルに enc28j60.c を追加する必要がありますか? これを行うと、MPLAB はファイルをコンパイルしようとしますが、失敗します。これを行わないと、リンカーは enc28j60.c で定義され、enc28j60.h でプロトタイプ化されたシンボルを見つけることができません。
  2. #includeenc28j60.c をどこかから取得する必要がありますか? そうでない場合、MPLAB はどのようにしてファイルの入手先を知るのでしょうか?
  3. MPLAB プロジェクトのヘッダー ファイルに enc28j60.h を追加する必要がありますか?
  4. #includeenc28j60.h をどこかから取得する必要がありますか? 現在、これを main.c で実行します。enc28j60.h を実行する (および s をスローしない) ために必要な定義の#errorに行います。
0 投票する
1 に答える
2504 参照

c - printf に 2 文字を使用させる

XC8 コンパイラを搭載した PIC18 デバイスでこのコードを使用しています。

some_valueが 未満の場合0xf0、たとえばc値 12 の場合は 1 桁のみが出力されます。 より大きい値の場合、たとえば値 66 の場合0x0fは 2 桁が出力されます。42

printf()以下の値でも、2文字を強制的に出力する方法はあります0xf0か?