MSP430 PxIN funzt net

Gast #2993907
Lesenswert?

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 #2993938
Lesenswert?

//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 #2997269
Lesenswert?

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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren