問題タブ [lpc]
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 - LPC1788 マイクロコントローラで CAN 経由でメッセージを受信できない
私は NXP LPC1788 マイクロコントローラーを使用してプログラミングしています。このマイクロコントローラーには、2 つの CAN コントローラーが搭載されています。マイクロコントローラーに単一のメッセージを送信させ、それをそれ自体から受信させようとしました (ローカルセルフテスト)。
送信は正常に行われていると思います (同僚がプローブを使用してこれを確認しました)。メッセージを送信すると、割り込みが生成され、そのハンドルが呼び出されます。ただし、CAN ステータス レジスタ (CAN1GSR [グローバル ステータス レジスタ、現時点ではコード内でコメント化されています] + CAN1SR [ローカル ステータス レジスタ]) は、メッセージが受信されたことを報告しません (メッセージ受信バッファは空です)。
コード(混乱して申し訳ありません):
ターミナル I/O からの出力:
コードはhttp://pastebin.com/8kEmbvtaにもリストされています
EDIT:スレッドは死んでおり、再び表示される可能性は低いですが、行を置き換えました
と
ホンキートンクに感謝。私のコードには何の影響もないように見えましたが、これらのピンは CAN コントローラー 2 (私は CAN コントローラー 1 を使用しています) に指定されていると思います。
c - LPC1788マイクロコントローラーで使用するのに適したRTOSは何ですか?
他の人がNXPLPC1788マイクロコントローラーでうまく機能することを発見した無料/安価なRTOSを見つけようとしています。私はもともとFreeRTOSの使用を計画していましたが、その特定のプロセッサをサポートしていないようです。サポートされている最も近いコアはLPC1768です。ThreadXはLPC1788で動作しますが、そのライセンスには数千ポンドの費用がかかります。提案?
編集1:言及するのを忘れました。IAREmbeddedWorkbenchを使用しています。
編集2:RTOSを使用することは言うまでもなく、私は組み込みプログラミングにかなり慣れていないことも指摘する必要があると思います。FreeRTOSとThreadXはどちらも非常に似ているようで、どちらもかなり直感的なAPIを備えています。別のRTOSのAPIがこれらの種類のAPIと一致するほど、私はより良いと思います。
編集3:私はembOSと呼ばれる1つのRTOSを調べてきました。見た目はプロフェッショナルで、APIは見栄えがよく、プロセッサとIDEの組み合わせ(私のものを含む)の数はかなり多く、サンプルプロジェクトはすでに正常に機能しています。これは無料ではなく、ライセンスの費用は約2500ユーロですが、それでもthreadXライセンスの約3倍の費用がかかります。提案してくれてありがとう、受け入れられた答えを選ぶことができないのはちょっと残念です。
device - RS-485 を介して通信する 2 つの LPC1765 デバイス
RS-485 を使用して 2 つの LPC1765 デバイス間の簡単な通信を実装しようとしています。メニューシステムに追加されたこの例を使用しています (これは LPC17xx の基本的な例です):
したがって、両方のデバイスは RS485Init() を使用して適切に初期化されます。最初のバイトとしてスレーブ アドレスを使用して RS485Send を使用してデータを送信すると、結果は次のようになります。
(1) デバイスが切断された場合、送信機は自身の通信を受信します (UARTBuffer の内容が更新されます)。
(2) デバイスが接続されている場合、何も起こりません -- 送信されたバッファがどこかで失われます (UARTBuffer は変化しません)
これでハードウェアが適切に接続されたはずなので、参照用にリストします。RS485_TXD/RXD には U59 SN65HVD1781D ドライバーがあり、RS485_OF、RS485_MASTER_PWR、RS485_MASTER_MFAS、および電圧レギュレーターがあります。RS485 スレーブ検出回路と UP/DOWN 接続があります。各デバイスは 4 つの接点で接続されており、それらは (私が思うに) RS485_UP、RS485_A+、RS485_B-、および RS485_DOWN です。上部と下部の両方に 4 ピン コネクタがあり、デバイスを順番に接続します。すべてが機能する場合、一番上のデバイスがすべての下部デバイスのマスターのステータスを想定します。
c - RTOSデータロガーの例
Cortex M0(LPC11U14)でデータロガーを開発しようとしていますが、FreeRTOSなどのリアルタイムOSを使用して、データをSDに書き込む優先度の低いタスクを1つ、またはそれ以上にすることを考えていました。 -センサーデータをフェッチする優先タイマー。
リファレンスデザインとして役立つコード例を知っている人はいますか?タスク/タイマーを作成する方法は知っていますが、タイマーから書き込みタスクにデータを渡す効率的な方法に興味があります。そして、コードベースとして機能する優れたデータロガープロジェクトがすでに存在する場合、私は車輪の再発明をためらっていますか?
assembly - レジスターの内容を別のレジスターに移動する
これが私の定義です:
コード:
LPC2148用にプログラミングしていて、P0.7の内容をP0.20に移動するためのARMアセンブラコードを書き込もうとしています。私はアセンブリ構文にまったく精通していないので、このコードを修正しようとすると、あらゆる種類のコンパイルエラーが発生します。P0.7のビットを(アセンブラコードで)P0.20に簡単に移動するにはどうすればよいですか?
これをCコードで試しました:
しかし、どちらも機能しませんでした。P0.20で出力が得られませんでした。
CコードでPWMをシミュレートしてみました:
P0.20の値を無条件に設定してみました。
c - CのUARTで未定義サイズのメッセージを受信
私は LPC2148 用の独自のドライバーを書いていますが、疑問が頭に浮かびました。サイズが指定されていないメッセージを UART で受信するにはどうすればよいですか?
頭に浮かぶのは次の 2 つだけです。1 - ウォッチドッグを構成し、時間切れになったら受信を終了します。2-メッセージが送信されるたびに、メッセージの終わりの文字が必要になるようにします。
私の意見では、最初の選択肢の方が優れているように思えますが、誰かがより良い答えを持っているかどうか知りたいです。
どうもありがとうございました
gcc - LPC1850: システムスティック割り込み後にプログラム実行が 0xFFFFFFFE にジャンプするのはなぜですか?
割り込みを有効にし、各システムスティック割り込みがいくつかの関数を呼び出す LPC1857 用の作業プログラムを作成しました。LPC1857で完璧に動作します。LPC1850 で同じプログラムを実行しようとすると、プログラムの実行が 0xFFFFFFFE にジャンプし、割り込みが発生するたびに停止します。SysstickHandler で呼び出される関数は呼び出されません。プログラムがハンドラーの間違ったアドレスを取得しているように見えますが、それがどのようになるのかわかりません。その場合、LR は 0xFFFFFFF9 を指します。どちらのアドレスも予約済みです。
LPC1850 のリンカ ファイル (いくつかの無関係なポートの初期化以外の LPC1857 プロジェクトとの唯一の違い) を変更すると、次のようになります。
私が何を見逃しているか分かりますか?追加情報が必要な場合は、お知らせください。前もって感謝します!!
cortex-m3 - lpc1769コンテキストスイッチング
lpc 1769(cortex m3)でコンテキストスイッチを実行しようとしています。数値の指数を計算し、それをユーザーモードでサブルーチンとして実行するルーチンを作成しようとしていますが、SVC呼び出しと割り込みハンドラーを使用して、SVCプロセスに端末との対話を要求します。印刷する値は、レジスタ引数としてSVCに渡す必要があります。
ユーザーモードからメインモードにモードを切り替える場合、ユーザーモードのスタックに保存されている値をメインモードにするにはどうすればよいですか?
誰かが上記のクエリのための小さなプログラムを書いてくれませんか?
前もって感謝します。
serial-communication - CANバスプロトコルの実装
CANBUSプロトコルを学び、実装したい。ソフトウェアでMSP430Launchpadを使用して、UART、SPI、I2C、およびOneWireBusプロトコルを実装しました。ここで、CANバスプロトコルについて学びたいと思います。私はmBedLPC1768CortexM3開発ボードを持っています。mBedにはCanBusLibraryがありますが、他の通信プロトコルの場合と同じように、詳細に学習できるように独自のライブラリを作成したいと思います。
そもそも適切な資料が見つからず、ネット上に散らばっているようです。利用可能な開発ボードを使用してCANバスプロトコルを作成および実装する方法を誰かがガイドできますか?
ありがとう
arm - LPC 1769(cortex m3) Code Red IDE --- g_pfnVectors() at0x0 のソースがありません
スタック PSP を使用してユーザー モードから SVC を呼び出そうとしています。LPC 1769 (cortex m3) でコードをデバッグすると、次のエラーが表示されます------- "g_pfnVectors() at 0x0" のソースがありません 使用している IDE は、LPC 1769 を搭載した CODE RED LPC Xpresso です。アーティスト。
ここにアセンブリコードがあります
SVC 内で、スタック チェックを行い、対応する関数を呼び出してコンソールに出力します。SVC コードは次のとおりです。
printhex/printcaharaacter/printdecimal は、それぞれの値をコンソールに出力するための関数です。
シングル ステップ モードのデバッグ中、SVC 命令の後に、 No source available for "g_pfnVectors() at 0x0" というエラーが発生します。
エラーの原因と到着はまったく予想外です。gdb デバッガーに問題がありますか、それともコードの解釈方法が間違っていますか?