MSP430 PxIN funzt net

Gast #2993907
Hallo zusammen.

Ich benutze den MSP430F2013.

Ich hab an einen von den Pins (1.3) einen Bewegungsmelder angeschlossen.
Wird ne Bewegung detektiert, springt der Sensorausgang von 3V auf 0V.

Ich hab nen einfaches Testprogrammle geschrieben:
(BIT1:  LED angeschlossen)

while (1)
{
  if (P1IN ^ BIT2)
    P1OUT |= BIT1;
  else
    P1OUT &= ~BIT1;

}

Da passiert aber gar nix. Led bleibt, ob Detektion oder nicht, immer 
aus.

Danach hab ich mal den SD16 ADC vorgeschalten, mit der Abfrage:
    if (SD16MEM0 < SD16_2V)
      ...
Nun funktioniert alles einwandfrei...


Hier meine Frage:  wieso kann ich nicht einfach über P1IN den 
Sensoroutput abfragen?


Vielen Dank für alle Hilfe!
Gast
hmmm....   bin ich nu betriebsblind?


Sobald der Sensor was detektiert, ist der P1In pin auf 0.
Damit ergibt sich doch (0 ^ 1) = 1  und die LED wird sollte leuchten.

Oder nicht?
Gast
Ja. Schande über mich.
1
P1IN & BIT2
ist für dich angewöhnte schreibweise.

P1DIR richtig gesetzt, oder wird überschrieben, versehentlich oder 
alternative versehentlich Port-Funktion?
Gast
//set LED
  P1DIR |= LED;

  //configure motion detector
  P1DIR &= ~MOTION_DETECTOR;   //direction
  P1REN &= ~MOTION_DETECTOR;   //disable resistor
  P1OUT &= ~MOTION_DETECTOR;   //set resistor to pulldown
//  P1IE  |= MOTION_DETECTOR;    //enable interrupt
  P1IES |= MOTION_DETECTOR;   //interrupt with high/low rising edge
  P1IFG &= ~MOTION_DETECTOR;   //clear interrupt flag
  __enable_interrupt();        //disable port1 mask


Sollte soweit alles richtig sein. Mit dem SD16 funktionerts ja.
Gast
programmierst du mit CCS, dort kannst du ja mal debuggen und dir genau 
deie Register, eben auch die Pins alle ansehen, wenn du dort mim Oszi 3 
V misst sollte auch PxIN am entsprechenden Pin 1 gesetzt sein, ansonsten 
sind deien Einstellungen irgendwo falsch.

PxDIR = 0 passt als Eingang, danach würde ich nen pull down einschalten 
intern, man weiss ja nie ob nicht mal ungebremst 3 V anliegen, das gäb 
dann einen zu hohen Strom, Gefhr dass der Pin abraucht.

Deine Logikverknüpfung ist mir zu komplex :) ich habs lieber so einfach 
wie möglich, würd den auch einfach verunden dann sieht auch jeder beim 
ersten Blick was gemeint ist, und du kannst das in 1 Jahr auch noch 
nachvollziehen...

Das Debuggen sollte aber schon helfen.
Grüße
Gast
BL schrieb:
> Hat niemand eine Idee? :)

Wie immer steckt der Fehler in dem Teil, der nicht gezeigt wird.

Also zeige das vollständige Programm und alle eigenen include Dateien. 
Dann wird dir sicherlich geholfen.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 13 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.