MSP430FR5594 Launchpad Frage

OP #5562957
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
}
#5562971
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
Persönliche Seite #5562997
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?
#5563008
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
OP #5563012
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!
#5563339
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.
Gast #5580469
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;
>     }
>     }
> }

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.