1

PM5CTL0 &= ~LOCKLPM5;MSP430 用の次のサンプル プログラムがあり、行が前に来るように並べ替えたいと思いP2SEL1 |= BIT0 | BIT1;ます。そんなことしたら何か問題あるの?私はe。ハイインピーダンスモードを無効にしたに GPIO ピンを設定すると問題が発生しますか?

私のアプリケーション/回路側には何の問題もありません。驚きをもたらす可能性のある過渡電流やその他の不安定性に興味がありますか? それとも、GPIO を構成した後に高インピーダンス モードを無効にするのは単なる儀式/慣例ですか?

#include "msp430.h"

int main(void)
{
  WDTCTL = WDTPW | WDTHOLD;                 // Stop Watchdog

  // Configure GPIO
  P2SEL1 |= BIT0 | BIT1;                    // USCI_A0 UART operation
  P2SEL0 &= ~(BIT0 | BIT1);

  // Disable the GPIO power-on default high-impedance mode to activate
  // previously configured port settings
  PM5CTL0 &= ~LOCKLPM5;

  // rest of program
}
4

2 に答える 2

2

このコードには 2 つのものが欠けています

  1. RX ピンは入力として構成されていません (および TX は出力として構成されています)。
  2. RXピンのプルアップが有効になっていません(外部プルアップがない場合)

MSP430 で従うこれらの「親指」ルールの 1 つ :) 他の場所で処理したことがあるかもしれません。

LOCKLPM5 については、ユーザー ガイドの説明をご覧ください。

LPMx.5 に入ると、PMM モジュールの PM5CTL0 にある LOCKLPM5 が自動的に設定されます。I/O ピンの状態は、LPMx.5 エントリの前の設定に基づいて保持およびロックされます。ピンの状態のみが保持されることに注意してください。PxDIR、PxREN、PxOUT、PxDS、PxIES、PxIE の内容など、その他すべてのポート構成レジスタ設定は失われます。

「儀式」の背後にはいくつかの論理があります!

ウェイクアップ イベントを処理していると仮定すると、LPMx.5 状態からのウェイクアップ後、周辺機器はデフォルトの状態になります。ペリフェラルを構成せずに LOCKLPM5 ビットをクリアすると、ピンはデフォルトの状態になります。つまり、プルアップがなく、すべて入力として構成されます。ドアが開いたままになり、予期しないグリッチが発生します。このような不確実性は避けたいので、最初にペリフェラルを設定してから LOCKLPM5 をクリアします。

一時的な「デフォルト」状態の影響は、次の質問への回答方法にも依存します ->

  • TXピンが入力の場合、回路は条件を処理しますか? (ほとんどの場合、そうです。それ以外の場合は、電源の問題に対処します)
  • RX ピンには内部プルアップがないため、RX ラインは「0」、つまり開始条件に低下しますか? それは回路のどこかで中断を引き起こしますか?
于 2014-07-24T16:07:41.283 に答える
1

ピンの再構成を行った後に高インピーダンスを無効にすることは、以前に行うよりも少し良いように思えます。これは、高インピーダンスであるため、接点が外部回路から切り離されているようであり、これにより、ノイズ、歪み、または短いピークの蛇行が跳ね返らないことが保証されます。

あなたの外部回路はおそらく反応しませんが、理論的には、そのような「信号」で動作を変更する回路が存在する可能性があります。跳ねる、弾む。

于 2014-07-27T11:04:21.153 に答える