mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik MSP430 Programmierproblem :-(


Autor: Tzonfistikis Tzonfistikis (tzonfistikis)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guten Tag Leute ich brauche eure Hilfe denn ich bin am verzweifeln und
weiß nicht weiter.
(Ich Programmiere seit ca.1,5 Wochen bin halt noch ein noob)

Benutze Rowley Crossworks 1.4
MSP430F169
Olimex Evalution Board.

Also das einzige was ich bis gemacht habe und es hat funktioniert war
ein Lauflicht :-) mit 8 LEDS.
und einen Zähler.

Hier das Progr.

#include  <msp430x16x.h>

void pause(unsigned int mswert);

void main(void)
{

{
  WDTCTL = WDTPW + WDTHOLD;   // Stop WDT.
  BCSCTL1 &= ~XT2OFF;         // XT2= HF XTAL.
  P5DIR=0b11111111;


  P5SEL=0b00000000;


  for(;;)
  {


  P5OUT=0b00000001;
  pause(500);
  P5OUT=0b00000010;
  pause(500);
  P5OUT=0b00000100;
  pause(500);
  P5OUT=0b00001000;
  pause(500);
  P5OUT=0b00010000;
  pause(500);
  P5OUT=0b00100000;
  pause(500);
  P5OUT=0b01000000;
  pause(500);
  P5OUT=0b10000000;
  pause(500);
  }
}
}


void pause(unsigned int mswert)
{
unsigned int iZaehler;


    for (iZaehler=0; iZaehler<(26*mswert);iZaehler++)
    {
    }
}
______________________________________________________________


Habe folgendes Problem.
Ich habe versucht als nächstes mit einem Taster eine LED oder
verschiedene LEDS ein und auszuschalten.

Bei diesem Beispiel will ich das alle 8 LEDS AN und AUS geschaltet
werden.

Die LEDS sind alle an P5 (5.0 bis 5.7) angeschlossen.
der Taster an P4 (4.3)

ich habe folgendes Programm geschrieben.

#include  <msp430x16x.h>


void main(void)


{

  WDTCTL = WDTPW + WDTHOLD;   // Stop WDT.
  BCSCTL1 &= ~XT2OFF;         // XT2= HF XTAL.
  P5DIR=0b11111111;
  P5SEL=0b00000000;
  P4DIR=0b00000000;
  P4SEL=0b00000000;


   {

  for(;;)
{
  P5OUT=P4IN;
  }

}
   }


Problem es geht nur die 4LED an und aus!!!!!
Warscheinlich weil der Taster nur an 4.3 angschlossen ist??????
Wenn ich die übrigen Pins 4.0 bis 4.7 berühre gehen die anderen LEDs
auch an.
Was kann ich denn machen????

Danke für eure Hilfe schon im Voraus und wie gesagt bin halt noch n Noob
nehmt n bisschen Rücksicht.

:-D

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Was kann ich denn machen????
Statt
  P5OUT=P4IN;
schreibst du
  if (P4IN&0x8)  // P4.3
     P5OUT = 0xff;
  else
     P5OUT = 0;

Und kauf dir das Buch "Programmieren in C" von K&R   ;-)

Autor: Tzonfistikis Tzonfistikis (tzonfistikis)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lothar ich danke dir!!!!


es funktioniert :-)))
___________________________________


Erklärung
if (P4IN&0x8)   =====  Wenn P4IN und 0x8?   // 0x8 für die 8 Ausgänge??? 
Kannst du mir das Bitte genauer erklären was du hier gemacht hast??

P5OUT //Alle AN

else

P5OUT = 0 //Alle Aus

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Wenn P4IN und 0x8?
Port-Bit Nr 76543210
0x8 = binär 00001000

Ich habe also nur den Port 4 mit 00001000 verundet und wenn der P4.3 
gesetzt ist, bleibt 00001000 übrig. Wenn der Port 4.3 nicht gesetzt 
ist, bleibt 00000000 übrig.

Und die if-Abfrage in C sagt:
wenn der Wert in der if-Klammer ungleich Null ist, dann mache was.

Alles weitere steht im angesprochenen Buch ;-)

Autor: MaXXX (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hier noch ein paar wichtige tips zum tasten programmieren.

1) gucke dir im datenblatt was die register PxREN (x steht für den port 
1 oder 2 oder...) machen. Hier ist die erklärung warum die LEDs schon 
bei berührung der PINs angegangen sind.

2) schlagwort "Tastenentprellung" (dafür gibt es ein Code von peter 
hier, was sehr gut ist)

MFG

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.