タグ付けされた質問 「pic」

PICは、マイクロチップ社が製造した8、16、32ビットRISCマイクロコントローラーのブランドです。「PIC」は、もともとは「Peripheral Interface Controller」の頭字語でした。

3
CANバス上のネットワーク層の選択
産業オートメーションアプリケーションでCANバスを使用することを計画していますが、ネットワークレイヤーの実装方法を決定するのに苦労しています。メッセージIDの割り当て方法とデータパケットのフォーマット方法のガイドラインを提供する、CANを介して使用する上位層プロトコルの推奨事項はありますか?独自のネットワークレイヤーを開発するか、CANopenなどの既存の標準を実装する必要がありますか?

5
PIC回路のバッテリー寿命モニター
私は、PIC18F14F50マイクロコントローラーチップを使用した小さな回路を持っています。このチップは、i2cインターフェイスを介して外部のEEPROMチップにデータを記録しています(後でUSBインターフェイスを介して読み取ることができます)。15分ごとに1つのサンプルが記録され、特に正確にタイミングを合わせる必要はありません。 電池の交換中にサンプルを見逃したり、タイミングを間違えたりしても問題はありませんが、電池が切れて誰かが気付くまで数日間データが記録されない場合は問題ありません。 そのため、十分な時間をおいてバッテリーが少なくなると、ユーザーが交換できるようにユーザーに警告します。平均電流は2mA未満であり、3つの単3アルカリ電池を直列で使用して4.5ボルトを供給しているので、かなりの数日続くと思います。 しかし、バッテリーの残量が少ないことをどのように検出するのでしょうか。電池が寿命に近づくと電圧が下がると思います。このPICには1.024vの基準電圧があるので、電源電圧を分割してアナログ入力に供給でき、分割された電圧がその電圧を下回ると警告がトリガーされます。 しかし、これがどれほどうまく機能するかを知るのに十分なほどバッテリーについて知りません。そして、おそらく10〜20%のバッテリー寿命が残っていることを示す、どの電圧を選択すればよいかわかりません。それでもまったく機能しますか?より良いアプローチはありますか? これはまったく正確である必要はありません。私は、人々にまだ寿命が残っているバッテリーを廃棄させずに、十分な時間内に適切な警告を出したいだけです。 私の現在の使用量はかなり一定しているので、バッテリーが平均してどれくらい持続するかを計算し、警告を出す前にその時間の85%を選択できる場合、単純なタイマーは妥当でしょうか?それとも、バッテリー寿命はそれ以上に異なりますか? どんな考えでも歓迎します。
10 pic  batteries 

4
最高のPICプログラマー?
私のプロジェクトでPICの使用を開始したいと思い、どのプログラマーを取得する必要があるのか​​と思っていました。マイクロコントローラー(68k、avr)の使用経験は豊富ですが、電子機器の経験も豊富です(プログラマーの構築が可能です)。 MPLAB、icsp、およびインサーキットデバッグ機能を使用できるようにしたいと思います。USBも便利ですが、必須ではありません。あなたの答えでは、あなたの推薦の賛否両論の比較をお願いします。

3
マグストライプを複製する?
マグストライプを、PICを介して格納されているデータを変更できるが、マグストライプリーダーで読み取ることができる別のアイテムに置き換えることができるプロジェクトに取り組みたいです。これは、PICが別の値を磁気ストライプの異なるトラックに「書き込み」、異なるカードを複製できることを意味します。それで、これを行うにはどのような方法を使用できますか?磁気ストライプを使用しますか?
10 pic  magstripe 

3
控えめなPICマイクロコントローラーではできないdsPICの機能
私はまだDSPチップを使用していません。私が知っているのは、それらのアーキテクチャが通常はクロックサイクル内で非常に高速に計算を実行できるような構造であり、命令セットに乗累算命令があり、DMAがあるため、CPUがデータを移動する貴重な時間を無駄にする必要がないことです。周り。まだまだあると思いますが、基本的なポイントはいくつかあります。 MicrochipにはDSPチップラインであるdsPICがあることがわかります。乗算器も内蔵しているPIC18またはPIC32だけを使用してDSPを実行することはできませんか?dsPICは通常のPICとどう違うのですか? 私の主な質問はこれです。なぜ、DSPチップと呼ばれる別個の異なるものを用意し、すべてのマイクロコントローラーに高精度の浮動小数点演算機能を統合する必要がないのですか?確かに私たちが現在持っているプロセス技術では、これは多くのスペースを取るべきではありません。 また、通常のマイクロコントローラーではなく、プロジェクトでDSPチップを使用する必要があることをどのようにして知ることができますか>
10 pic  dsp 

3
PIC24 RTCCの32.768kHzクリスタルをどのように校正しますか
PIC24 RTCCクリスタルキャリブレーションの最適な方法を見つけようとしています。彼らのアプリケーションノートには、ルックアップテーブルを使用する方法とリファレンスシステムクロックを使用する方法の2つが記載されています。 彼らによれば、リファレンスシステムクロック方式が最適ですが、16.777MHzなどのRTCC水晶発振器の倍数であるシステム発振器を推奨しています。 PIC24に対してこのRTCCクリスタルキャリブレーションプロセスを実際に試した人はいますか?私はいくつかの実用的なガイドラインをいただければ幸いです。PIC24FJ128GA006を使用しています。
10 pic  crystal  rtc  calibration 

6
PICマイクロコントローラーで-2 V〜+2 Vのアナログ信号をサンプリングするにはどうすればよいですか?
300ビット未満の周波数のアナログ信号から読み取り値を取得するために、10ビットADCを備えたPICマイクロを使用しています。ただし、そのアナログ信号の範囲は-2 Vから+2 Vです。信号を調整して使用可能な範囲にするにはどうすればよいですか(ADCへの入力が正である必要があると想定しています)。負の電源。

7
PICでのmallocの使用
PICでどのように使用malloc()およびfree()機能できますか?stdlib.hヘッダーを確認しましたが、言及されていません。MCC18を使用しています。 誰かがそれらを使用する必要がありましたか? ライブラリをWindows XPからPICに移植しているので、それらが必要です。移植ガイドによると オペレーティングシステムの特定の機能をPICの機能に適合させる しかし、malloc()とfree()関数を「変換」する方法がわかりません。
10 pic  memory 

5
PIC32対dsPIC対ARM対AVR、とにかくC言語でプログラミングする場合、アーキテクチャは重要ですか?[閉まっている]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 2年前休業。 現在32ビットPIC32マイクロコントローラーを使用しています。それは私たちのニーズに対してはうまく機能していますが、私たちをよりよく適合させることができる他のマイクロコントローラーも模索しています+ MCUを選択している他のプロジェクトがあります。その目的のために、32ビットと同じであるがARMベースのPIC DAマイクロコントローラーであるARMベースを選択しました(PIC32よりも人気があり、業界的にも優れています)。 PIC32ではMPLABを使用しますが、ARM cortex-M0ではAtmel Studioを使用します。両方のプラットフォームでC言語を使用します。私の懸念事項は、2つの32ビットマイクロコントローラー(同じ会社から)を使用するが、アーキテクチャが異なることです。これには、2つの異なるデバイスを学習する必要があり、「学習曲線」+配信時間が増加します。しかし、その一方で、どちらの場合もC言語を使用するので、ARMの学習曲線はそれほど聞こえないはずであり、そのプロセッサを探索する価値もあります。 私の主な質問は、C-Languageでプログラミングしているときに、アーキテクチャーがマイクロコントローラーの内部の抽象化を提供するため、アーキテクチャーがどれほど大きな違いをもたらすかです。また、C言語プログラミングを考えると、MPLAPとAtmel Studioの主な違いは何ですか。

1
電圧基準としてツェナーダイオードを使用する
PIC18F2550の電圧リファレンスとして、ツェナーダイオードをアナログV +リファレンスとして使用したいのですが。使うつもりですこのツェナーダイオードが、その計算方法がわかりません。Vcc->抵抗器->ツェナー-> GNDのような単純な回路を使用するだけで、4.7Vの電圧リファレンスを作成することを計画しています(逆ツェナーを使用して、そのツェナー電圧を取得します)。 ツェナーのデータシートを見ると、その上にツェナー曲線を見ることができません。正の順方向電圧グラフだけです...なぜですか?そして、私は5mA電流の値だけの表しか見ることができません。10Kの抵抗を使用する予定でしたが、一部のシミュレーションでは4.7Vが得られません。これはおそらく5mAを与えていないためですが、これをどのように計算できますか?10K抵抗で出力される電圧を知るにはどうすればよいですか?

1
通常の数分の1の速度で動作するdsPICチップ
2つのPCBがあります。1つはdsPIC30F6012a、もう1つはdsPIC30F6015です。どちらもPICkit 3を使用して、MPLAB Xの独立したスタンドアロンHEXプロジェクトからプログラムされています。どちらのファームウェアも、この時点までに数十のユニットに問題なく適用されています。現在、ファームウェアは1つを除くすべてのPCからプログラムされたときに正しく動作しています。その1台のPCでは、昨日から、両方のファームウェアは明らかなエラーなしにプログラムされますが、通常の速度の約1/20で実行されます。昨日まで、そのPCはこれらのボードも問題なくプログラミングしていました。 スプラッシュスクリーンは5秒ではなく2分かかり、ライトは非常にゆっくり点滅しますが、これに加えてすべてが正しく動作します。発振器の構成ビットが変更されたかのように見えますが、スタンドアロンプ​​ロジェクトで実行できるMPLAB Xのどこにも気づいていません。 したがって、2つの異なるチップ上の2つの異なるファームウェア、同じPCBデザインの複数のインスタンス、それらをプログラムするために使用されているPCのみに依存して異なる速度で実行されます。「良い」PCで遅いボードを再プログラミングすると、問題が修正されます。「不良」PC上の同じボードを再プログラミングすると、元の状態に戻ります。私が理解できるのは、その1台のPCで誰か​​が[ゆっくり実行する]ボタンを押したということだけですが、そのラベルが付いたものは見つかりません。(ただし、私たちの技術はかなり独創的です。)現在、MPLAB Xをアンインストールし、ユーザー設定を消去し、より新しいバージョンを再インストールしています。(1.3から1.6に変更されます。)しかし、それで問題が修正されたとしても、何が起こっているのかわからないので、私はまだ満足していません。誰かがこの問題について何か洞察を持っていますか?

3
PICで複数の外部割り込みを使用する
いくつかのプロジェクトでPIC16F877(データシート)を使用しました。単一の外部ピン変更割り込みの場合、PORTB0割り込みを使用できます。しかし、今度は1つの回路で8つの独立した外部ピン変更割り込みをサポートする必要があります。 データシートには、に15の割り込みがあるとありますがPIC16F877、タイマーのオーバーフロー割り込みなどを含めてカウントされていると思います。この場合は役に立ちません。 これはデータシートがINTCONレジスターについて述べていることです。 bit0を使用して4つの独立した割り込みを持つことはできますRBIFか?それはの変化を表していPB7:PB4ます。どのピンが変更されたかをどのように識別できますか、それは割り込みルーチンでポート値を読み取ることによってですか? 上記に対して肯定的な回答を得ても、8つの割り込みが必要ですか?もちろん、私はまだINTE、PORTB0変更のために使用できます。その後4 + 1 = 5、しかし、どのような他の約3?(ただし、8つの割り込みイベントはすべて同じタイプ4 + 1 + 3 = 8なので、醜いように見えますね。) 8ピンを監視すること以外に、マイクロコントローラから期待される他の重いタスクはありません。(他のタスクについては、一連の個別のカウンター変数を維持し、頻繁に約4バイトをPCにシリアルに送信する必要があります) どんな提案でも大歓迎です。それがマイクロコントローラーをより適したものに変更することについてであってもです(しかし、ええと。sから離れるように言わないでくださいPIC)。

2
PICメモリマップを理解するのに助けが必要
いくつかの背景。さまざまなタイプの写真をプログラムするために、PicKit2でMPLABxを使用しています。現時点では16F887です。私はHi-Tech PICC Liteツールチェーンに固執しようとしていますが、いくつかのものがどのように組み立てられているかに不満が増しています。比較的高速でなければならない操作(8Mhzでの500nsの命令サイクルを考慮)は、完了するまでに最大20usかかります。それで、私はそれを処理するために自分のASMコードを挿入し始めました。 しかし、20ページのデータシートに記載されているメモリマップを理解するのが困難です。 プログラムメモリは0005hから始まります。ただし、23ページには、ポートAなどの特殊用途レジスタのファイルアドレスが表示されます。ポートAのアドレスは「05h」と表示されます。 0005hのメモリロケーションと05hにある専用レジスタを区別する方法がわかりません。専用レジスターを参照するにはどうすればよいですか? 私は古いHC11チップに対してかなり広範なアセンブラープログラミングを行ってきましたが、これはPIC asmコーディングへの私の最初の冒険です。ここでどんな助けもいただければ幸いです。

1
合成されたROMコアを使用した単純なテストベンチのシミュレーション
私はFPGAの世界にまったく新しいので、4ビットの7セグメントデコーダーという非常に単純なプロジェクトから始めようと思いました。私が純粋にVHDLで書いた最初のバージョン(それは基本的に単一の組み合わせselectであり、クロックは必要ありません)は機能しているようですが、ザイリンクスISEの「IPコア」の要素を試してみたいと思います。 今のところ、「ISE Project Explorer」GUIを使用しており、ROMコアを使用して新しいプロジェクトを作成しました。生成されるVHDLコードは次のとおりです。 LIBRARY ieee; USE ieee.std_logic_1164.ALL; -- synthesis translate_off LIBRARY XilinxCoreLib; -- synthesis translate_on ENTITY SSROM IS PORT ( clka : IN STD_LOGIC; addra : IN STD_LOGIC_VECTOR(3 DOWNTO 0); douta : OUT STD_LOGIC_VECTOR(6 DOWNTO 0) ); END SSROM; ARCHITECTURE SSROM_a OF SSROM IS -- synthesis translate_off COMPONENT wrapped_SSROM …

2
Bluetoothシンプルオシロスコープ
私は、少なくとも2MHzの信号を測定できるシンプルなオシロスコープを作ろうと考えていました。それで十分であり、PCまたはAndroidデバイスに接続されます。最初に、USBを使用して「オシロスコープ」をPCまたはAndroid USBホスト対応デバイスに接続し、転送速度が約12Mbpsになるはずですが、Bluetoothまたは別のRF方式で実行したいと考えています。Bluetooth-UARTモジュールの中には、2Mbpsの転送速度とWi-Fiモジュールが約300Kbpsにしか対応していないものがあります。12MSPS ADCからのサンプルをバッファリングするための512K RAMメモリがあるので、2Mbpsでは次の時間がかかります。 512000 K b yT E S2000000 M b p s / 8 b i t s= 2.048 、S 、E 、C 、O 、N Ds512000 Kbytes2000000 Mbps/8b私ts=2.048secoんds\frac{512000\ Kbytes}{2000000\ Mbps/8bits} = 2.048 seconds したがって、512KバッファをすべてBluetooth経由で送信するまで、2秒のサンプルが失われます。USB経由でそれは約330mSであり、それは多すぎると思います。これを回避する方法はありますか?USBオシロスコープはそれをどのように行うのですか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.