Forum: Mikrocontroller und Digitale Elektronik MSP430 Pin abfragen


von Tobias W. (wib)


Lesenswert?

Hi,

kann ich so einen Pin abfragen der als Eingang genutzt wird?

if ((P2IN & 0x02) == FALSE)
        error = 1;


Ich möchte wissen ob der Pin2.1 H oder L ist ;)

von Jörg S. (Gast)


Lesenswert?

Das geht, ja.

von Tobias W. (wib)


Lesenswert?

Danke :)

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Was auch immer "FALSE" sein mag, im Prinzip geht das tatsächlich so.
(mal angenommen, daß FALSE = 0)
1
if (!(P2IN & 0x02))
2
  error = 1;

von Tobias W. (wib)


Lesenswert?

Jo, so meinte ich das auch

von Dennis A. (dennis999)


Lesenswert?

Hallo.

Habe ein ähnliches Problem. Möchte PIN 3.7 nach High oder Low abfragen. 
Je nach dem, ob ein Sensor angeschlossen ist oder nicht. Dementsprechend 
soll dann eine LED leuchten.

1
#include <msp430xG43x.h>
2
3
//Vcc 3,34 V
4
//MSP430FG439
5
6
void main(void)
7
{
8
  WDTCTL = WDTPW + WDTHOLD;           // Stop Watch Dog Timer
9
10
  P1DIR |= BIT0;                      // P1.0 output direction red LED
11
  P5DIR |= BIT1;                      // P5.1 output direction yellow LED
12
13
  P3DIR &=~ BIT7;                     // P3.7 input direction
14
15
  P1OUT &=~ BIT0;                     // P1.0 off red LED
16
  P5OUT &=~ BIT1;                     // P5.1 off yellow LED
17
18
  if( (P3IN & BIT7) == 0x00){         // 0,26 V ohne Sensor
19
    P1OUT |= BIT0;                    // P1.0 on red LED
20
  }
21
  if( (P3IN & BIT7) == 0x01){         // 3,34 V wenn Sensor angeschlossen
22
    P5OUT |= BIT1;                    // P5.1 on yellow LED
23
  }
24
}

Ohne Sensor mit der roten LED funktioniert's.
Mit Sensor leuchtet gelbe LED jedoch nicht.

Spannung von 3,34 V an wenn Sensor angeschlossen ist.

Würde gerne wissen, was an dem Code falsch ist.

p.s.: Mir ist klar, dass man einfach else schreiben könnte.

von Stefan (Gast)


Lesenswert?

1
  if( (P3IN & BIT7) == 0x01)
wird niemals 0x01 sein... höchstens 0x80 ;-)


Einfach
1
if (P3IN & BIT7)
abfragen

von Christian R. (supachris)


Lesenswert?

Oder halt
1
if( (P3IN & BIT7) == BIT7)...

von Dennis A. (dennis999)


Lesenswert?

Super. Hab's kapiert.

Danke für die schnellen Antworten.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.