MSP430: P2 will nicht gehen

Gast #2163917
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.
Gast #2163974
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)
Gast #2164022
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.
Gast #2164027
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?
Gast #2164449
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
Gast #2164472
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!
Gast #2164516
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.

Antwort schreiben

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.

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.