Forum: Mikrocontroller und Digitale Elektronik MSP430FR5594 Launchpad Frage


von Rene F. (rene_fried)


Lesenswert?

Hallo Zusammen,

ich arbeite seit kurzem mit einem MSP430FR5994 Launchpad Rev.1.2,
nun zu meinem Problem. Ich möchte eine LED1 P1.0 über den Taster S1 P.6 
auf Tastendruck leuchten lassen.
Ich habe es als Neuling zwar geschafft dies zu programmieren aber beim 
einlesen des Ports ist mir aufgefallen, dass ich das BIT6 benutzen muss.
Ich war der Meinung P5.6 entspricht BIT5.
Kann mir jemand das erläutern?

Hier mein Quelltext:
1
#include <msp430.h>
2
#include<msp430FR5994.h>
3
4
/**
5
 * main.c
6
 */
7
void main(void)
8
{
9
  WDTCTL = WDTPW + WDTHOLD;     // Stoppe watchdog timer (sonst startet Programm nicht)
10
  PM5CTL0 &= ~LOCKLPM5;         // Disable the GPIO power-on default high-impedance mode
11
12
  P1DIR = BIT0;         // P1.0 LED Ausgang
13
  P5DIR = BIT6;         // P5.6 S1 Taster Eingang
14
15
16
while(1)
17
{
18
    if(!(P5IN & BIT6)) {        // Wenn Taster auf ”Low”
19
          P1OUT  =  BIT0;      // Setze den Ausgang (LED an)
20
    }
21
    else{
22
    P1OUT=P1OUT&~BIT0;
23
    }
24
    }
25
}

von hl. Stephanus (Gast)


Lesenswert?

MSPs zählen die 0 mit, deshalb:

P5.0 = BIT0
P5.1 = BIT1
...
P5.5 = BIT5

Im User Guide sind 2 Buttons drin, einer an P5.5 und einer P5.6
Welchen davon willst du den verwenden?

von Ralph S. (jjflash)


Lesenswert?

hl. Stephanus schrieb:
> MSPs zählen die 0 mit, deshalb:

... das machen doch alle anderen auch, oder ?

von hl. Stephanus (Gast)


Lesenswert?

Ralph S. schrieb:
> hl. Stephanus schrieb:
>> MSPs zählen die 0 mit, deshalb:
>
> ... das machen doch alle anderen auch, oder ?

Vermutlich ja, aber da ich nicht alle kenne wäre dies eine Annahme.

...Mir wurde mal gesagt, ich darf keine Annahmen machen.

von Bernd B. (microwave-designer)


Lesenswert?

Rene F. schrieb:
> Ich war der Meinung P5.6 entspricht BIT5.

Hallo Rene, bitte gewöhne Dir an mit den "richtigen" Bezeichnungen zu 
arbeiten, sprich Bit-Null, ... Bit-15.

Ich bekomme immer eine Krise wenn andere Jungs von Oberwellen sprechen. 
Die sollten dann auch von Harmonischen reden - n = Null entspr. DC, n = 
1 die Grundfrequenz, ...

Sie meinen dann mit "erste Oberwelle" einfach nur n = 2.

Beispiel klar?

Gruß

Bernd

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Rene F. schrieb:
> Ich war der Meinung P5.6 entspricht BIT5.

Da es auch P5.0 gibt (wie Du mit einem anderen Port, nämlich P1 sogar in 
Deinem Beispielcode siehst), sollte sich die Frage komplett von selbst 
erklären.
1
  P1DIR = BIT0;         // P1.0 LED Ausgang
2
  P5DIR = BIT6;         // P5.6 S1 Taster Eingang

Na, was passiert hier in der erstern Zeile?

Eben.



Bernd B. schrieb:
> bitte gewöhne Dir an mit den "richtigen" Bezeichnungen zu arbeiten,
> sprich Bit-Null, ... Bit-15.

Wer legt das fest, daß das die "richtigen" Bezeichnungen sein sollen? 
Hast Du Dir dazu eine Norm ausgesucht?

von Bernd B. (microwave-designer)


Lesenswert?

Rufus Τ. F. schrieb:
> Wer legt das fest, daß das die "richtigen" Bezeichnungen sein sollen?
> Hast Du Dir dazu eine Norm ausgesucht?

Hallo Rufus, gut dass Du darauf hinweist! Es geht im RICHTIGEN Leben 
nicht immer nur um richtig und falsch.

Aus Mathe weiß ich noch, dass das Vorhandensein eines Teiles die EINS 
ist. Ist dieses Teil doppelt vorhanden, hat man die ZWEI. Nimmt man bei 
einem Teil das Teil wieder weg, hat man KEINS oder NULL. Also wäre nach 
dieser Logik die kleinste Nummerierung die NULL, also die erste Nennung.

... ach bleiben wir doch bei der Gewohnheit ... oder bei Zwei hoch Null, 
der Eins. Genau, die Bits werden nach der Potenz nummeriert.

Gruß

Bernd

: Bearbeitet durch User
von Rene F. (rene_fried)


Lesenswert?

Rufus Τ. F. schrieb:
> Rene F. schrieb:
>> Ich war der Meinung P5.6 entspricht BIT5.
>
> Da es auch P5.0 gibt (wie Du mit einem anderen Port, nämlich P1 sogar in
> Deinem Beispielcode siehst), sollte sich die Frage komplett von selbst
> erklären.
>
>
1
>   P1DIR = BIT0;         // P1.0 LED Ausgang
2
>   P5DIR = BIT6;         // P5.6 S1 Taster Eingang
3
>
>
> Na, was passiert hier in der erstern Zeile?
>
Hallo Rufus,

ich danke Dir, manchmal sieht man den Wald vor lauter Bäumen nicht!

Vielen Dank!

: Bearbeitet durch User
von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Bernd B. schrieb:
> Aus Mathe weiß ich noch,

Ah, Du zielst nur auf den Konflikt Pascal-Programmierer/C-Programmierer. 
Erstere fangen bei 1 an zu zählen, letztere bei 0.

von Bernd B. (microwave-designer)


Lesenswert?

Hallo Rufus,

ich weiß nicht, was interessiert mich mein Geschwätz von heute morgen?

Schönes Wochenende!

Bernd

PS: Mir ist zwischenzeitlich eingefallen, dass in den Deklarationen zum 
IAR Assembler (wahrscheinlich auch beim C-Compiler) Inkonsistenzen 
vorhanden sind. Die zählen manchmal auch um EINS geschoben. Vielleicht 
waren da mehrere Dokumentatoren am Zug. Seit mir das aufgefallen ist, 
versuche ich immer sorgfältig die Zählweise zu beachten.

... das nur, falls jemand bis hier hin liest, aber dann muss er auch 
ganz tief in die Deklarations- / Defintions-Dateien reinlesen B.

Beitrag #5564498 wurde von einem Moderator gelöscht.
von Beobachter (Gast)


Lesenswert?

sollte der Code nicht so geändert werden:

Rene F. schrieb:
> #include <msp430.h>
> #include<msp430FR5994.h> // <--- Remove
// Der chip include ist im CCS8 Schon definiert.
>
> /**
>  * main.c
>  */
> void main(void)
> {
>   WDTCTL = WDTPW + WDTHOLD;     // Stoppe watchdog timer (sonst startet
> Programm nicht)
>   PM5CTL0 &= ~LOCKLPM5;         // Disable the GPIO power-on default
> high-impedance mode
>
>   P1DIR = BIT0;         // P1.0 LED Ausgang
>   P5DIR = BIT6;         // P5.6 S1 Taster Eingang // ist falsch
// Der P5.6 Pin ist falsch konfiguriert und müßte als Eingang
// so konfiguriert werden:

    P5DIR &= ~BIT6 // setze Bit 6 als Eingang(0=Input, 1=Output
    P5OUT |= BIT6  // 1=Pull-up, 0=Pull-down

>
> while(1)
> {
>     if(!(P5IN & BIT6)) {        // Wenn Taster auf ”Low”
>           P1OUT  =  BIT0;      // Setze den Ausgang (LED an)
>     }
>     else{
>     P1OUT=P1OUT&~BIT0;
>     }
>     }
> }

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.