問題タブ [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.
c - Pic18 micro に最適な C コンパイラは何ですか?
マイクロチップ PIC18F252 に基づく新しいプロジェクトを開始しています。使用するのに最適な 'c' コンパイラは何ですか?
embedded - CでPIC18をリセットする方法は?
HiTech Pic18 C コンパイラで C コードを使用して PIC18 をリセットする最良の方法は何ですか?
編集:
私は現在使用しています
しかし、もっと良い方法があるはずです
embedded - ボードをリセットせずに Microchip 社の TCP/IP スタックをリセットできますか?
私は、8 ビット マイクロコントローラで Microchip の無料の TCP/IP (バージョン 4.55) スタックを使用しています。
asm("RESET") を使用してボード全体をリセットせずに、スタックをリセットしようとしています。
このスタックを再起動する方法に関するアイデア。
アップデート
次の手順でスタックをリセットします
- リセット ピンを Microchip Ethernet チップに切り替えます
- StackInit(); を呼び出します。
- UDP アナウンス ステート マシンを手動でリセットする
これは、私が遭遇した致命的な SPI エラーから回復したようです。
embedded - マイクロチップリンカーの問題
MPLABでプロジェクトをビルドしようとすると、このビルドエラーメッセージが表示されます。
リンカーライブラリへのパスが正しいことを確認しました。ソースコードと関係があるのではないかと思います...どんな助けでも大歓迎です。
これが私のソースコードです 。http://cl1p.net/mplabc18
embedded - タイマーを使用して時間を維持すると、組み込みマイクロコントローラーが中断されます
この質問は、OSなしで小型マイクロコントローラをプログラミングすることについてです。特に今はPICに興味がありますが、質問は一般的です。
私は時間を保つために次のパターンを数回見ました:
タイマー割り込みコード(タイマーが毎秒起動するとします):
メインラインコード(割り込みなし):
メインラインコードが繰り返されたり、カウンターがさまざまな値(秒だけでなく)に設定されたりする場合があります。
sec_counter
メインラインコードのへの割り当てがアトミックでない場合、ここに競合状態があるように思われます。たとえば、PIC18では、割り当ては4つのASMステートメントに変換されます(一度に各バイトをロードし、その前にメモリバンクから適切なバイトを選択します)。割り込みコードがこの途中にある場合、最終的な値が破損している可能性があります。
不思議なことに、割り当てられた値が256未満の場合、割り当てはアトミックであるため、問題はありません。
私はこの問題について正しいですか?このような動作を正しく実装するためにどのパターンを使用しますか?いくつかのオプションがあります。
- sec_counterへの各割り当ての前に割り込みを無効にし、後で有効にします-これはきれいではありません
- 割り込みを使用しないでください。ただし、開始されてからポーリングされる別のタイマーを使用してください。これはクリーンですが、タイマー全体を使い果たします(前の場合、1秒の起動タイマーは他の目的にも使用できます)。
他のアイデアはありますか?
delphi - Delphi 2009 で Microchip PIC USB DLL を呼び出す方法
質問ではなく、Microchip PIC USB DLL を Unicode で適切に動作させるために何時間も費やす可能性のある人を助けるための声明です。
いくつかの文字列が必要です。これらは単純PAnsiChar
ですが、DLL 呼び出し規則の適切な組み合わせを取得するのに何年もかかりました。ネット上には、この DLL で Delphi (非 Unicode) を使用して殺人を免れている人がたくさんいます。
enums - C18 コンパイラの typedef 列挙型データ サイズ
PIC マイクロコントローラ用の Microchip の C18 コンパイラを使用してコンパイルするコードを移植しようとしています。コードには、大きな値が割り当てられた (>8 ビット) 列挙型が含まれています。たとえば、0x02 は 0x2002 と同じであることを示しています。
列挙値を強制的に 16 ビット値として参照するにはどうすればよいですか?
c - ASM を C に変換します (リバース エンジニアリングではありません)。
私がグーグルで検索したところ、そのような質問をした質問者を基本的に笑っている驚くべき量の軽薄な回答が見られます。
Microchip は、いくつかのソース コードを無料で提供しています (それがダメな場合に備えて、ここに投稿したくありません。基本的には、Google AN937 で最初のリンクをクリックすると、「ソース コード」とその圧縮ファイルへのリンクがあります)。それは ASM にあり、それを見ると斜視になり始めます。従うことができるように、それをacタイプの言語に似たものに変換したいと思います。次のような行のため:
おそらく非常に単純ですが、私には何の意味もありません。
自動化された ASM から C へのトランスレータがあるかもしれませんが、私が見つけることができるのは、それは不可能だと言っている人だけです。率直に言って、それが不可能であることは不可能です。どちらの言語にも構造があり、その構造は確実に翻訳できます。
c++ - C++ プログラムから ASM ファイルの関数にアクセスしますか?
ここで、ASM ファイルを C に変換する方法について尋ねましたが、その回答からは、それを行う合理的な方法がないように見えました。罰金。そのため、回答の1つは、関数をそのまま使用して、それで完了することを示唆していました。いいですね。
しかし、どのように?
なんてこった、考えられることはすべて試しました!私は Microchip ブランドの MCU (PIC18F4480) と Microchip ブランドの IDE (MPLAB IDE) を使用しており、ASM ファイルは Microchip が作成したものです。これまでのところ、まったく運がありません。
ASM(アセンブリ)については何も知りません。私は C++ でコーディングしていますが、率直に言って、それは変わりません。すべてのコードを新しい言語で書き直すことなく、Microchip ASM ファイルの関数にアクセスする方法が必要です。
ご覧になりたい方は、ASM ファイルとアプリケーション ノートをご覧ください。