問題タブ [microchip]
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.
pic - MPLABのLEDの点滅が機能していませんか?
MPLABを使用して新しいマイクロチップボードをプログラミングし、pickit3を使用してプログラミングしています
コード:
このコードは何もしませんでした。ハイテクCコンパイラで完全にコンパイルされましたが、期待どおりに動作しませんでした。問題は構成ビットにあるのでしょうか。これを解決する方法はありますか?
bluetooth - TI チップ CC2540 を Bluetooth を使用した携帯電話アクセスに使用できますか?
携帯電話との通信に Ti チップ cc2540 を使用したいと考えています。私はこの種のチップに慣れていません。"" 私が見つけたのは次のとおりです: http://cn.mouser.com/ticc2540/「Texas Instruments CC2540 2.4 GHz Bluetooth® SoC」「携帯電話アクセサリ」と表示されています。
このチップで何かをした人はいますか?
それができない場合、ブルートゥース経由で携帯電話と通信するために使用できるチップは他にありますか?
c - 割り込みフラグを設定する
以下の例のように、コードによって割り込みフラグを設定できますか、それともその行は単なる思考の誤りですか?これは単なる主な機能です。このコードスニペットの下には、それ自体の割り込みがありますが、コードの最後にある割り込みフラグをクリアすることは正しく、必須ですか?
割り込みコード->
c - 割り込みを無効にする必要がありますか?
Microchip C18で複数の割り込みを使用している場合、1つの内部で高い割り込みを無効にする必要がありますか?
以下のコードを検討してください。
以下のコードと同じアプローチに従う必要がありますか?(次に、関数内の適切な場所に無効化を配置します。)
assembly - スタックのコンテキストをdsPIC33に保存すると、次の原因になります。実装されていないフラッシュメモリアクセスによるトラップ
レジスタのコンテキストを保存し、アセンブリからC変数へのスタックポインタを格納しようとしていますが、動作しますが、returnステートメントに到達すると、多くのエラーがスローされ、クラッシュします。
コードは次のとおりです。
MPLABでコードをシミュレートする場合、C変数にはスタックポインタの値が割り当てられますが、RETURNに達すると、複数のエラーが発生します。
「CORE-E0004:未実装のフラッシュメモリアクセスによるトラップ、0xXXXXXXの命令から発生しました」エラー
スタックポインター(W15)にアクセスする方法と関係があるのではないかと思います。
誰かアドバイスはありますか?ありがとう
c - マクロ C の内部または外部で関数 (高割り込み) を定義する
手始めに、私のPICにC18コンパイラを使用しています。呼び出しなしで high_ISR のような関数を作成すると、コンパイラがそれにコードを追加します。このコードは、逆アセンブリ リスト ビューでしか見ることができません。これにより、私の high_ISR 関数のサイクル タイムは 160 サイクルになります (ただし、C コードを見ると空のように見えます)。
代わりに、マクロとして定義すると、「秘密の」コードが空になります。コンパイラが密かにそこに置いたコードを削除する原因となる他の関数に何らかの問題が発生しますか?それは他の方法でそれに対処しますか?
つまり、ISR を高速にしたいのです。関数をacファイルに書き込むときにISR関数を高速にする方法はありますか?どうにかして「秘密のコード」を抑制できますか?
以下のコード例を参照してください。
.c ファイルに high_ISR 関数を適切に作成するが、サイクル タイムが長い
マクロは、たとえばヘッダー ファイルに関数を作成しました (たとえば、16 サイクルのサイクル タイム)
明確にするために、マクロを使用する場合、次のように実装します。
最初の highISR 宣言はこれを生成します。
2番目の関数はこれのみを生成します->
関数自体が同じように記述されていることを示すためだけに、さらに明確にします。最初のルーチンの場合 ->
ヘッダーのマクロとしての 2 番目のもの ->
c - Fletcher チェックサムを 32 ビットから 8 にリメイク
この変換はオリジナルから正しいですか?
オリジナル:
len は 8 になります。
data には data[] (1 - 8) の入力が含まれます。
実際、次の行をどうすればよいかわかりません: unsigned tlen = len > 360 ? 360 : レン;
たぶん -> int8_t tlen = len > 255 ? 255: レン;
c - C で !default ケースを作成する方法
マイクロコントローラ プログラムでは、デフォルト以外のスイッチのすべてのケースで実行したい命令がいくつかあります。ただし、関数呼び出しを作成したり、すべての場合にマクロを使用したりする必要はありません。
これは 3 ~ 7Mhz で動作するマイクロコントローラー用であるため、速度とコードスペースが重要です。例えば:
c - レジスタに書き込むときに補数を選択する理由
たとえば、最初のステートメントと2番目のステートメントを書くことの利点は何ですか。
最初のステートメント:
2番目のステートメント:
私は、2番目の選択を私が行ったであろう明確な選択と見なしています。これは、最初の選択よりも簡単だからです。必要なものを書くのがとても簡単なのに、なぜ1の補数を使用するのですか。