Forum: Mikrocontroller und Digitale Elektronik MSP430: P2 will nicht gehen


von Quacksalber (Gast)


Lesenswert?

Hallo,

ich nutze das MSP430 launchpad für einige Experimente. Das hat auch gut 
funktioniert, solange ich mich bei Input/Output auf PORT1 beschrenkt 
habe.
Die 8 PINS langen mir jetzt aber nicht mehr, weil 7 davon für eine 
segmentanzeige schon draufgehen. Kein Problem, hab ja noch 2 Pins an P2 
frei. Nun leider doch ein Problem: da tut sich nichts.

Hier mein Code:

#include <msp430g2231.h>

void main (void)
{
  WDTCTL = WDTPW | WDTHOLD;   //Watchdog stoppen
  P2SEL = 0;      //Funktionsauswahl P2: Input/Output
  P2DIR = 64;            //6tes Bit auf Output stellen
  P2OUT = 64;            //High-Signal am 6ten Bit von P2
  for(;;){}            //Endlosschleife, dass weiterläuft
}

Wie man sieht sehr simpel, es soll nur eine LED leuchten mehr will ich 
zu diesem Zeitpunkt nicht, aber es geht nicht :( Ich verstehe das nicht.

von ... (Gast)


Lesenswert?

1) Du schaltest die LED gegen Vcc oder gegen Gnd? Laut Code gegen Gnd.
2) Geht das wirklich, dass man für den Wert an Pinxy einen Dezimalwert 
angibt? Ich habe das immer mit Hex-oder Binärwerten gemacht?

von Quacksalber (Gast)


Lesenswert?

1) Ich denke mal gegen Vcc. P2 steht auf High, und die LED ist auch 
High-Aktiv.

2) Daran sollte es nicht scheitern. Habe das schon in mehreren 
Programmen so gemacht. Für den Compiler ist das ja ein und das selbe ob 
64 oder 0x40

Ich verwende übrigens Code Composer Studio (CCS)

von Dennis (Gast)


Lesenswert?

Quacksalber schrieb:
> Ich denke mal gegen Vcc. P2 steht auf High, und die LED ist auch
> High-Aktiv.

Wenn du gegen Vcc schaltest, dann kann die LED so natürlich NICHT 
leuchten.

Quacksalber schrieb:
> Daran sollte es nicht scheitern. Habe das schon in mehreren
> Programmen so gemacht. Für den Compiler ist das ja ein und das selbe ob
> 64 oder 0x40

Funktioniert, klar, aber ist der absolute Horror, wenn das einer lesen 
will. Stell dir mal vor, du schreibst ne 73 und musst dir dann daraus 
BIT0/3/6 basteln.

von ... (Gast)


Lesenswert?

Wenn Du aber gegen Vcc schaltest, dann muss Du den Pin auf low ziehen.
Gegen Vcc heißt bei mir, Anode an Vcc, Kathode an µC-Pin.

Schonmal gemessen, ob Du überhaupt Pegeländerungen an den Pins erzeugen 
kannst?

von moi (Gast)


Lesenswert?

2231 :-) hat aber keinen

von 2ter Gast (Gast)


Lesenswert?

moi schrieb:
> 2231 :-) hat aber keinen

Falsch. Auf p2.6 und p2.7 liegen xin und xout.

von Dennis (Gast)


Lesenswert?

2ter Gast schrieb:
> Auf p2.6 und p2.7 liegen xin und xout.

Kannste ja trotzdem als GPIO nutzen, sofern du nicht den Quarz da dran 
gelötet hast.

von 2ter Gast (Gast)


Lesenswert?

Dennis schrieb:
> Kannste ja trotzdem als GPIO nutzen, sofern du nicht den Quarz da dran
> gelötet hast.

Ja, ich habe auch nur gesagt, dass der uC DOCH den Port P2 besitzt :-).

von Das programm (Gast)


Lesenswert?

Die Grundlage das ist notwendig blättere hier ein bisschen im Forum dann 
wirst du merken 2 Schreibweisen:

P1DIR | = 64 ;
P1SEL | = 64 ;

Oder

P1DIR =Bit6 ;
P1SEL =Bit6 ;

 bei P1OUT genauso P1OUT & =~64 ;

oder im Hex-Format Bsp.: P1DIR | = 0x40 ;   usw...

bisschen Aufpassen.das ist Programmieren nicht schreiben

von Dennis (Gast)


Lesenswert?

Das programm schrieb:
> Die Grundlage das ist notwendig blättere hier ein bisschen im Forum dann
> wirst du merken 2 Schreibweisen:
>
> P1DIR | = 64 ;
> P1SEL | = 64 ;
>
> Oder
>
> P1DIR =Bit6 ;
> P1SEL =Bit6 ;
>
>  bei P1OUT genauso P1OUT & =~64 ;

Ist doch egal! Wenn er nur den einzelnen PortPin benutzt, dann ist das 
"=" völlig in Ordnung!

von Stefan (Gast)


Lesenswert?

Der Code aus dem ersten Beitrag funktioniert.
Wenn die LED nicht aufleuchtet ist sie kaputt oder falsch angeschlossen.
Am einfachsten mal mit einer der LEDs auf dem Launchpad testen: einen 
der Jumper bei den LEDs entfernen und den LED-seitigen Anschluss mit 
P2.6 verbinden.

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.