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

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

3
dsPICのEEPROM読み取り/書き込みエラー
Microchip dsPIC30F6012aを実行しています。私はいくつかのPCBにこのチップを搭載しており、すべて同じソフトウェアを実行しており、それらすべてに同じ問題が見られます。これは、1回限りの運用上の問題ではなく、システム上の問題を意味します。問題は再現可能でもあります。つまり、どこを見るかわかっていれば、問題を解決できるはずです。しかし、アプリケーションのデバッグはまだ驚くほど困難です。 テスト中のボードは24Vを受け入れ、V7805を介して5Vに降圧されます。チップは、内部発振器と16x PLLで動作し、約29.5 MIPSの動作速度を提供します。このボードの関連コードは基本的に非常にシンプルです。ウェイクアップし、EEPROMからデータを読み取り、無限ループに入ります。ミリ秒ごとに割り込み、環境データを観察し、更新された値をEEPROMに書き込みます。他にも状況はありますが、無関係なコードがコメント化されていても問題が発生するので、当面の問題に関連していないことは間違いありません。 一般的な使用では、95%の時間は、ボードがメモリ内の正しい値で起動し、そのビジネスについて続行します。ただし、残りの5%の時間は、不正な値で起動します。具体的には、持っているはずのデータのビット反転バージョンで起動します。私が見ているのは4バイトの符号なしlongであり、longの上位ワードまたは下位ワードのいずれかが反転する可能性があります。たとえば、10は2 ^ 16-10になり、後で2 ^ 32-10になります。手動で数十回電源を入れ直すことでグリッチを再現できますが、これはあまり一貫しておらず、スイッチフィンガーがすり減っています。 問題を制御された方法で再現するために、テスト中のボードに24V電源を駆動する2つ目のボードを作成しました。(別のdsPICがダーリントンオプトカプラーを駆動します。)テスターボードは24Vを1.5秒間オフにし(5Vレールが実質的に0に下がり、そこに1秒間留まるのに十分な長さ)、その後、構成可能な時間だけ24Vをオンにします。 。約520 mSのオンタイムで、毎回5回の電源サイクルでこのEEPROMグリッチを再現できます。 5Vレールは適切に動作しています。スコープを信頼できると仮定すると、ターンオンから1 mS以内に5Vで安定し、おそらく.4Vのオーバーシュートになります。ターンオフ時に指数関数的に0Vまで減衰し、50ミリ秒以内に1Vに達します。私は関連があると思われるビルド警告はなく、ファイルの最後にある未使用の変数と改行がありません。 私はいくつかのことを試しました: MCLRの有効化/無効化 WDTの有効化/無効化 コード保護の有効化/無効化 電圧低下検出電圧の有効化/無効化/変更 パワーオンタイマーの有効化/無効化/変更 メイン内部発振器のさまざまなPLL設定 PICkit 3プログラマの接続/切断 5Vレールに470 uFの容量を追加 MCLRピンの4.7kプルアップで.1 uFを追加/削除する コード内のすべての割り込みを無効にし、メインループにEEPROM更新のみを残す EEPROMの読み取りを開始する前に、スタートアップルーチンに1.5秒の遅延を追加する また、値を変更せずにEEPROMに継続的に値を書き込んでから読み取るだけの別のテストコードも作成しました。数万回の反復でエラーは発生しませんでした。私が結論づけることができるのは、EEPROMの読み取りまたは書き込み、特に電源投入/電源切断で問題が発生したことです。 2007年以来、同じEEPROMライブラリを使用しています。時々不具合が発生しましたが、再現性はありません。関連するコードはここにあります:http: //srange.net/code/eeprom.c http://srange.net/code/readEEByte.s http://srange.net/code/eraseEEWord.s http:/ /srange.net/code/writeEEWord.s 他のアプリケーションで以前にEEPROMエラーを見たことがありますが、常に1回限りのグリッチであり、再現性や一貫性はありません。 誰かが何が起こっているのか考えていますか?試してみることが不足しています。

3
起動遅延が長いか、バスアナライザーが接続されていない場合、CANトランシーバーがメッセージを受信しないのはなぜですか?
CANベースのアプリケーションを作成するために、16ビットMCU PIC24HJ64GP504を使用しています。基本的に、ボードと1つのノード間の通信であり、CANを使用して1 Mbit / sでボードにデータを送信し続けます。1 Mbpsで動作するようにPIC24のECANモジュールを構成しています。最初の10ミリ秒の間、ECANモジュールが反対側から着信するすべてのメッセージを受け入れるようにコードを記述しました。その後、メッセージID 0x13のメッセージのみを受け入れるようにECANモジュールを再構成しました。 ここで問題が発生します。他のノードとボードの電源が同時に投入されます。もう1つのノードは、電源投入後40ミリ秒後にメッセージの送信を開始します。しかし、ボードからメッセージを受け取ることができません。ここで、最初にボードの電源を入れたら、新しいフィルターでECANモジュールを再構成し、落ち着いてから他のノードの電源を入れて、すべてが完全に機能するようにします。 ここで最も奇妙な部分です。ボードと他のノードの間にCANバスアナライザーが接続されていて、両方のノードに同時に電源を投入しても、すべてが正常に機能します。最初にボードの電源を投入する必要はありません。異なるメーカーの3つの異なるバスアナライザーでこれを試してみましたが、同じ結果が得られました。 ECANモジュールの再構成中は、落ち着くまでに少し時間がかかるようです。そして、バスにバスアナライザーが導入されたことで、今回は何とかしてすべてが完全に機能するように短縮されました。しかし、問題が正確に何であるかはわかりません。 私は過去7日間この問題に取り組んできました。 PS:今日、私はスコープで確認しましたが、電源投入後170 ms後に他のノードが送信を開始すると、すべてが正常に機能することがわかりました。それ以前は、バスアナライザーが接続されていないと、デバイスからメッセージが受信されません。最悪なのは、他のノードの送信を遅らせることができないことです。そのノードのファームウェアは独自のものです。 また、今日のフォーラムで、CANが機能するためにはノードに120Ωの抵抗が必要であることを読みました(ノードに抵抗がなく、ノードが正常に機能する場合でも、再構成後に落ち着くまでの時間を考えると)。バスアナライザーの導入により、ネットワークの電気的パラメーターが何らかの形で変化し、再構成後にノードが安定するまでの時間が短縮されると思われます。しかし、私はわかりません.. :(

3
#if 0の機能
今日、私はPICのプログラミングにMPLAB Xを使用し始め、コードを入力するための複数のファイルとスポットを含むコードテンプレートを見つけました。私のコードが含まれている単一のファイルがある前に。このテンプレートでは、構成ビットを配置することになっていますが、次のテキストがあります。 /* TODO Fill in your config bits here. Remove #if 0 to embed config words. */ #if 0 /* General syntax for configuration word 1 - Check your device .h file for an up to date listing of available macros.*/ __CONFIG(FOSC_INTOSC & WDTE_OFF & PWRTE_OFF & MCLRE_OFF & …

5
HEXファイルの編集可能なPICシリアル番号
現在、使用しているデザインのシリアル番号がファームウェアにハードコードされています。ファームウェアはシリアル番号を読み取って報告できます。それは私が必要とするもののためにうまく働きます。問題は、新しいシリアル番号ごとにコードを変更して再コンパイルする必要があることです。これは、構築するユニットが多数ある場合に扱いにくく、エラーが発生する可能性があり、万能の悪い習慣です。シリアル番号が私に与えられ、ハードウェア設計がしっかりと決められているので、ハードウェアに機能を追加してユニットをシリアル化することはできません(EEPROM /シリコンIDチップ/プルアップ)。私がやりたいことは、シリアル番号を固定アドレスに配置し、コードを1回コンパイルしてから、コンパイルされたHEXファイルで新しいシリアル番号ごとにそのアドレスを編集することです。番号はいくつかの場所で参照されているので、理想的には、一度定義して特定したいのですが、次に、コード内の他の場所でその「変数」を参照します。C18コンパイラを使用して、選択した特定のアドレス指定可能なメモリ位置に定数データを配置する方法を知っている人はいますか?誰もが提案できるより良い方法はありますか?

4
SPIはビットバンギングよりも大幅に高速ですか?
写真18f4550に基づくプロジェクトがあります。'595シフトレジスタに書き込むために、通常のioピンよりもspiを使用することには明確な利点がありますか?spiの方が速いと聞きましたが、どうだかわかりません。それはチップの他の部分とは異なる、より速いクロックを使用していますか、それとも単により効率的ですか?かなり少ない数の命令で、通常のioピンを介してバイトをビットバンギングできます。spiはより少ない処理能力を使用しますか?かなり激しい計算中にかなり頻繁にシフトアウトするので、できるだけ多くのサイクルを自分のプロセスに割り当て、シフトアウトしないようにします。 spiを使用したくない主な理由は、現在のレイアウトでは必要なピンへのアクセスが少し難しくなるためです。既にいくつかのピンを他のものに使用しており、それらをシャッフルする必要があるためです。物事を解体して移動する前に、どんなメリットがあるのか​​を知りたいと思いました。
8 pic  spi 

3
CDトレイが開いている場合、どの外部センサーが検出できますか?
デスクトップのCDトレイが開いているかどうかを検出するために使用できるセンサーは何ですか? Digikeyカタログには、非常に多くのセンサーから選択できます。 機械部品を使用する必要がありますか? 光ビーム干渉成分? 情報がPIC MCUに送られるようにCDトレイが開いているかどうかを検出できるのはどれですか。 私はこの種の質問に対してシステムコールを実行できることを知っていますが、私はある種の外部センサーを好むでしょう。

3
アナログゲージプロバイダー[終了]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 電気工学スタック交換のトピックになるように質問を更新します。 5年前休業。 picマイクロコントローラーとフリースケール圧力センサーに基づいて高度計を設計しています。 アナログゲージを使用して写真から高度を出力したいのですが。ここで役立つ情報を見つけました。 私が知りたいのは、自分の体重計を置くことができるアナログゲージをどこで買うかです(私は基本的に生の電流計を探しています)
8 gauge  pic  analog 

3
組み込みシステムでのキーの安全な保管と使用
マイクロプロセッサを使用しています。PIC32MZ2048efm144MCUは、特定のキーで暗号化されたコマンドを受け取り、それらを復号化してコマンドを実行します。暗号化されたコマンドはオフラインで保存されるため、いつでもキーを変更することはできません。キーはFIXEDです。コマンドはサーバーによって暗号化され、電話によってダウンロードされます。電話は、暗号化されたコマンドを後で、オンラインでないときにMCUに送信します。コマンドは、電話機がMCUに通信する前に暗号化されるため、セッションキーは使用できません。 外部の暗号化/復号化モジュールをPICに接続することは許可されていますが、データは少なくとも1つの方向で復号化されて渡されます。 ここにもたらされたソリューション: 組み込みデバイスのメモリへの安全なキーの保存 ワンタイムキーを使用して暗号化しますが、1つの超秘密キーを保存する必要があります 私の雇用主が要求するのは、キーにアクセスできないようにすることです。そのため、セキュアメモリモジュールとMCUによって提供されるもの以外の物理的保護は考慮されていません。 軍用グレードの機器が使用されていないと仮定すると、皆さんが知っていて推奨できる既知のソリューションはありますか? 前もって感謝します!
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.