mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik MSP430 Programmierproblem :-(


Autor: John Fistikis (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guten Tag leudz beschäftige mich seit n Paar Wochen mit dem MSP430.
habe folgendes Problem ich habe an den OUTPOUT PORTS 8 Leds 
angeschlossen habe also 0...255 möglichkeiten die Anzusteuer.

Ich will nun mit meinem Taster den ich an Pin4.3 angeschlossen habe 
immer einen anderen Zustand abrufen wenn ich meine Taste drücke.

zB
Taster 1 drücken Zustand 0b00000001 (Erste Led an)
Taster 2mal drücken Zustand 0b00000010 (2 Led an )

usw.....

Kriege es aber irgendwie nicht hin........

Mein Prog schat so aus

Bei einmal drücken der Taste laufen alle Zustände
wie kann ich nun das so machen wie vorhin beschrieben.

Danke für die Hilfe.


#include  <msp430x16x.h>

void pause(unsigned int mswert);
unsigned char cAusgabe;

void main(void)
{


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


  for(;;)
  {
  if ((P4IN&0b00001000)==0)
    {
    for (cAusgabe=0;cAusgabe<255;cAusgabe++)
      {
      P5OUT=cAusgabe;
      pause(75);
      }
    }
  else P5OUT =0b00000000;
  }
}
void pause (unsigned int mswert)
{
  unsigned int iZaehler;

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

Autor: pcb (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mit wieviel MHz läuft dein MSP430 nochmal genau?
1.Ich denke deine Pause(); Funktion ist net OK.
Ich kann mir nicht vorstellen, dass dein MSP 26 leere 
Forschleifendurchgänge in einer ms erledigt.

2. Die gesamte Forschleife wird mit Sicherheit wegoptimiert sein.
Die gibt es also überhaupt nicht.

3. Versuch mal extrem kurz die Taste zu betätigen. Was Siehst du dann?

Autor: Tobias Korrmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Andere Vorschlag.
Kannst du den Taster nicht an den Port 1 oder 2 anschliesen.
Dann könnstest du nählich einen Interrupt nutzen um den Zusand am Port 8 
hochzuzählen.
und im gleichen Zug würde ich den Taster entprellen (Hardware nicht 
Software)

Autor: Tobias Korrmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ach nochwas ich würde mir an deiner Stelle ganz schnell abgewöhnen die 
Konfigurationswerte in Binärer Form dort hinzu schreiben.
TI hat dort ganz gute define Tabellen dafür. Da sieht doch niemand 
durch.
:-)

Autor: Jörg S. (joerg-s)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>TI hat dort ganz gute define Tabellen dafür. Da sieht doch niemand
>durch.
Na ja, bei der Port I/Os ist binär gar nicht mal so ne schlechte Idee. 
Ich nutze dafür allerdings auch die "BIT0-7" defines

Autor: Tobias Korrmann (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe angefangen mir für den MSP Bitfelder anzulegen wie es für Die 
DSPs von TI schon lange der Fall ist.
Bin allerdings noch nicht mit fertig

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.