問題タブ [msp430]
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.
mono - 埋め込み用モノ
私は C# 開発者で、MSP430 などのチップの組み込み開発に興味があります。いくつかのツールとチュートリアルを提案してください。Mono フレームワークは非常に強力でカスタマイズ可能です。Mono 固有の例がより役立ちます。
c - C言語:#DEFINEd値は8ビット乗算を台無しにします。なんで?
私は次のCコードを持っています:
これをコンパイルすると(msp430プラットフォームコンパイラを使用して、contikiと呼ばれる小さな組み込みOSの場合)、結果は0になりますが、191を期待していました(uint8_tはunsigned charとしてtypedefされています)
次のように変更した場合:
正しく動作し、191を出力します。
Ubuntuボックスでgccを使用してこの「通常」の単純なバージョンをコンパイルすると、どちらの場合も正しい値が出力されます。
これがなぜなのか正確にはわかりません。事前にDEFINEd値を変数に割り当てることで回避できますが、そうはしません。
なぜこれなのか誰か知っていますか?おそらく、これに関するいくつかの詳細情報へのリンクがありますか?
embedded - msp430用の組み込みアプリケーションを作成していますか?
ハイエンドMSP430、おそらくMSP430F5438用の基本的なOSと基本的なファイルシステムを用意したいと思います。FreeRTOS、IAR PowerPac、Micriumなどを使用して、OSとファイルシステムのオプションの一部に名前を付けることができます。ただし、後で小さなアプレットやスレッドをロードして、理想的にはこの余分なコードをファイルシステムから削除できるようにしたいと思います。私の目標は、組み込みデバイスの機能を変更または実装するために、デバイス全体を再フラッシュする必要がないことです。この機能を実装するためにどこに向かうべきか、またはARMなどの別のプロセッサに切り替える必要があるかどうかがわかりません。
assembly - これらの指示は何をしますか
私はmsp430命令セットのシミュレーターに取り組んでいます。gnuアセンブラを使用すると、次のような命令をエンコードできます。
私の推測では、rrc&0x0200はアドレス0x0200からフェッチしてローテーションを実行し、答えをアドレス0x0200に書き戻します。しかし、rra#4は何をしますか?ソースはすぐに4になると思いますが、操作後の宛先はありますか?add#4、#2はあなたが期待するものにアセンブルされ(2b10、source = r2、ad = 1b0、dest = r3として)、binutils逆アセンブラーはその命令をどうするかを知りませんでした。
これらの有効な指示はありますか?
c - FreeRTOS configTICK_RATE_HZ
FreeRTOSのバージョン5.4でMSP430f5438を使用しています。
私は理解できない面白い問題を抱えています。
基本的に、configTICK_RATE_HZを別の値に設定すると、LEDの点滅が速くなったり遅くなったりします。同じレートを維持する必要があります。configTICK_RATE_HZを高く設定すると点滅が遅くなり、TICK_RATEを低く設定すると点滅が速くなります。
vTaskDelayUntil(&xLastFlashTime、xFlashRate); configTICK_RATE_HZが何であっても、LEDは1秒に1回だけ点滅するようになっています。xFlashRateをステップスルーしてチェックし、確認しました。その常に=configTICK_RATE_HZに。コード:
configtick_rate_hzを1000に設定すると、1秒を超える周期でLEDが点滅し、ティックレートを200未満に設定すると、1秒よりはるかに短い周期でLEDが点滅します。
configTICK_RATE_HZは、LEDの点滅時間に影響を与えないようにする必要があります。
より多くの情報が必要であり、役立つために必要なコードスニペットをすぐに提供できることを理解しています。
rtos - MSP430f5438の使用中のFreeRTOSスリープモードの危険性
ここに示すアイドルフックを作成しました
これにより、LEDがオフになり、何もすることがないときにMSP430がスリープ状態になります。いくつかのタスク中にLEDをオンにします。
また、MCUをウェイクアップする可能性のある割り込みの終了時にSRのスリープモードビットを変更するようにしました(portext.s43のスケジューラティックisrを除く。iarのマクロは
ただし、MCUをスリープ状態にすると、不規則な動作が発生するようです。LEDは常にオンのままですが、スコープを設定すると、割り込みの1つ(UART)を介してmcuをウェイクアップし、その後再びオンになるたびに、数命令サイクルの間オフになります。LPM3の指示をコメントアウトすると、計画どおりに進みます。LEDはほとんどの時間オフのままで、タスクが実行されているときにのみオンになります。
MSP4f305438を使用しています
何か案は?
c - cの「通常の」変数の前の配列の宣言?
現在、msp430 MCU 用のアプリケーションを開発しており、奇妙な問題が発生しています。「通常の」変数の宣言後にスコープ内で配列を宣言すると、未定義のように見える動作が発生することがあることがわかりました。このような:
foo には 2 番目の変数としてポインターが渡されますが、これはarr配列を指していないことがあります。プログラムを 1 ステップ実行してこれを確認し、メイン スコープの arr array-as-a-pointer 変数の値が foo スコープの b ポインター変数の値と同じではないことを確認します。いいえ、これは実際には再現可能ではありません。たまにこの動作を確認しただけです。
これは、foo 関数の 1 行が実行される前でも観察できます。渡されたポインター パラメーター (b) は単に arr のアドレスを指していません。
次のように、例を変更すると問題が解決するようです。
なぜ私たちがこの行動を経験するのかについて、誰かが何か意見やヒントを持っていますか? それとも似たような経験?MSP430 プログラミング ガイドでは、コードが ANSI C89 仕様に準拠する必要があることを指定しています。それで、配列は非配列変数の前に宣言する必要があると言っているのだろうかと思っていましたか?
これに関するご意見をいただければ幸いです。
アップデート
@Adam Shiemke と tomlogic:
宣言内の値を初期化するさまざまな方法について、C89が何を指定しているのか疑問に思っています。次のようなものを書くことは許されていますか?
もしそうなら、どうですか:
それは許されますか?以下は違法なC89に違いないと思います:
前もって感謝します。
更新 2 問題が解決しました。基本的に、関数 (foo) を呼び出す前と変数の宣言後に割り込みを無効にします。簡単な例で問題を再現することができました。解決策は、無効化割り込み呼び出しの後に _NOP() ステートメントを追加することです。
誰かが興味を持っている場合は、問題を再現する完全な例と修正を投稿できますか?
これに関するすべての入力に感謝します。
c - TI MSP430 割り込みソース
MSP430F2619 と TI の CCSv4 を使用する場合、次のようなコードで複数の割り込みを取得して、同じ割り込みハンドラーを使用できることを私は知っています。
私の質問は、私がその割り込みにいることに気付いたとき、これらの割り込みのどれが私をここに連れて行ったのかを把握する方法はありますか?
memory-address - アドレス空間を正しく計算する方法は?
以下は、コンピュータエンジニアリングコースの最後のテストで出された質問の例です。それぞれの開始/終了アドレスを取得する方法を私に説明してもらえますか?一番下に正解を記載しました...
MSP430F2410デバイスのアドレス空間は64KB(基本的なMSP430アーキテクチャ)です。次のことがわかっている場合は、以下の表に記入してください。アドレス空間の最初の16バイト(アドレス0x0000から開始)は特殊機能レジスタ(IE1、IE2、IFG1、IFG2など)用に予約され、次の240バイトは8ビット周辺機器用に予約されています。 256バイトは16ビット周辺機器用に予約されています。RAMメモリ容量は2Kバイトで、アドレス0x1100から始まります。アドレス空間の上部には、コードおよび割り込みベクタテーブル用に予約された56KBのフラッシュメモリがあります。