mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik MSP430 Pin abfragen


Autor: Tobias W. (wib)
Datum:

Bewertung
0 lesenswert
nicht 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 ;)

Autor: Jörg S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das geht, ja.

Autor: Tobias W. (wib)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke :)

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

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

Autor: Tobias W. (wib)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jo, so meinte ich das auch

Autor: Dennis A. (dennis999)
Datum:

Bewertung
0 lesenswert
nicht 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.

#include <msp430xG43x.h>

//Vcc 3,34 V
//MSP430FG439

void main(void)
{
  WDTCTL = WDTPW + WDTHOLD;           // Stop Watch Dog Timer

  P1DIR |= BIT0;                      // P1.0 output direction red LED
  P5DIR |= BIT1;                      // P5.1 output direction yellow LED

  P3DIR &=~ BIT7;                     // P3.7 input direction

  P1OUT &=~ BIT0;                     // P1.0 off red LED
  P5OUT &=~ BIT1;                     // P5.1 off yellow LED

  if( (P3IN & BIT7) == 0x00){         // 0,26 V ohne Sensor
    P1OUT |= BIT0;                    // P1.0 on red LED
  }
  if( (P3IN & BIT7) == 0x01){         // 3,34 V wenn Sensor angeschlossen
    P5OUT |= BIT1;                    // P5.1 on yellow LED
  }
}

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.

Autor: Stefan (Gast)
Datum:

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


Einfach
if (P3IN & BIT7)
abfragen

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oder halt
if( (P3IN & BIT7) == BIT7)...

Autor: Dennis A. (dennis999)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Super. Hab's kapiert.

Danke für die schnellen Antworten.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.