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

2
外部RAMから実行するコードのコンパイル
PIC18F85J5ベースのミニマリストゲームシステムの設計を検討しています。私の設計の一部は、チップを再プログラミングしたり、プログラムメモリをフラッシュしたりせずに、SDカードからゲームをロードできることです。このチップを選択したのは、外部SRAMからコードを実行できる外部メモリインターフェイスを備えているためです。 基本的な考え方は、内部プログラムメモリにsdカードを参照するためのインターフェイスが含まれ、ユーザーがプログラムを選択すると、sdカードから外部ramに16進ファイルがコピーされ、実行が外部ramスペースにジャンプするというものです。 。 内部プログラムメモリには、グラフィックス、コントローラ入力、およびその他のさまざまなユーティリティ用のさまざまなライブラリもあります。 内部ファームウェアパーツを正常に動作させる方法を知っていると確信しています。問題は、外部RAMから実行するプログラムを作成することです。通常の写真をターゲットにするのと同じようには感じず、内部メモリで使用可能なライブラリ関数を認識している必要がありますが、再コンパイルはせず、それらにリンクするだけです。また、ゼロではなく、32kの内部フラッシュの直後にアドレスの使用を開始する必要があります。これらのタイプの制約を使用してプログラムをコンパイルする良い方法はありますか? MPLab IDEを使用していますが、MPLab IDE、またはこの種のカスタマイズ方法についてはあまり詳しくありません。
13 pic  compiler  mplab 

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
通常の数分の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に変更されます。)しかし、それで問題が修正されたとしても、何が起こっているのかわからないので、私はまだ満足していません。誰かがこの問題について何か洞察を持っていますか?

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

3
L3G4200Dランダムスパイク
L3G4200Dジャイロスコープに関してこのフォーラムを少し検索しましたが、この問題について言及したことはありませんが、他のフォーラムで他の人がそれについて話すのを見てきました。ジャイロスコープが静止していると、出力に奇妙な大きな値が表示されます。残念ながら、これがなぜだか誰も答えることができなかったようです。 したがって、私はi2cを使用して400kHz(高速モード)でジャイロからデータを収集し、マルチバイト読み取り(一度に6バイト)を使用してジャイロスコープデータを収集しています。100Hzでのサンプリング(上位800Hzも試した)、また、異なる値でのフィルタリングのオンとオフを試してみました。割り込みピンは使用していませんが、GYRCTRLREG4の「ブロックデータ更新」属性を使用しているため、LSBとMSBの両方が読み取られるまでデータは出力されません。フル2000dps、FIFOで何もしていません。正確であれば、正確なレジスタ値を投稿できますが、データシートが手元にない場合がほとんどです。 下の画像は私の問題を示しています。出力されているデータは適切であり、(私の知る限り)正しく計算されており、一般的なノイズは非常に許容範囲です。しかし、デバイスが静止しているときに、これらの迷惑な「ブリップ」がランダムに表示されることに気付きました。数秒間そのままにしておくと、これらのスパイクの1つが得られ、常に約250〜255になります(つまり、((output * 70)/ 1000 'を使用して変換すると〜18)。私が言うように、スパイクはランダムであり、任意の平面に表示できます(下の画像では、X平面の最初のスパイク、Yの2番目のスパイクを見ることができます)。 3つが同時に発生する可能性があります。大きな値は単一のサンプルの場合のみであり、通常に戻ります。 別のスレッドで、前述のように、GYRCTRLREG4のブロックデータ待機関数を使用する必要があることを確認しましたが、変更はありませんでした。私は、MSBがゼロ以上、つまり正の数である場合に問題を絞り込んだ後、MSBとLSBを組み合わせると、これらの大きな数が得られます。たとえば、X平面に必要な2バイトを取得します。LSBで-6を取得し、MSBで0を取得します。これらを組み合わせると250になり、変換すると(250 * 70)/ 1000 = 17.5 dps(つまり、静止/不正確には大きすぎます)。同じサンプルで、Yプレーンの2バイトは-3 LSBと-1 MSNで、これらを組み合わせると-3になり、変換すると-0.21になります(つまり、期待値/正しい)。 私はこの問題に何日も取り組んでいますが、磁力計でこれらのランダムなスパイクが少し表示されているので、(i2cを介して)デバイスを誤って読み取っているのだと思いますか? 提案や試してみたいことは本当に大歓迎です!
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.