mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik MSP430 Programmsprung


Autor: Domi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Für ein Schulprojekt beschäftige ich mich seit einem halben Jahr mit dem 
MSP430. Nun hab ich eine Frage zur C-Programmierung:
Kurz zusammengefasst ist meine Software so aufgebaut, dass zuerst alle 
I/Os, der Timer und der ADC initialisiert, danach paar Motoren 
ausgerichtet werden. Wenn dies erfolgreich war, folgt eine 
Endlosschleife, in der das eigentliche Programm abgearbeitet wird und 
immer wieder wiederholt wird.
Nun möchte ich einen interruptfähigen Stopp-Taster integrieren, der bei 
Betätigung das Programm stoppt und wieder an den Anfang der 
Endlosschleife zurückkehren lässt. Es soll also kein Reset ausgeführt 
werden, sondern das Programm soll einfach an eine bestimmte Stelle 
springen.

Hat jemand eine Idee wie man das in C programmiert?

Danke für eure Mithilfe.

Gruss Domi, Würenlos (CH)

Autor: Tobias Korrmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ist nicht so schwierig
du packst deine Initialisierung in Funktionen.
Im Interrupt dienes Tasters setzt du ein Flag.
In deiner Hauptroutine fragst du dann diese Flag ab. Úngefähr so
void Ini(void)
{
  // Initialisierung diener Hardware
};

void Motor(void)
{
   // Motoransteuerung
};

.
.
main()
{
  Init()
  Motor()
  for(;;)
  {
     ...
     ...
     if(flag1 == true)
     {
       Init();
       Motor();
       flag1=false;
     }
   }
}

Interrupt Taster
{
  flag1=true;
}

Autor: Christian Z. (fiselgrulm)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn die Initialisierung aber nicht nochmal durchlaufen werden soll, 
würde ich in Tobias' Beispiel an der Stelle
if(flag1 == true)
     {
       Init();
       Motor();
       flag1=false;
     }

schreiben:
if(flag1 == true)
     {
       flag1=false;
       continue;
     }

Dann springt er direkt an den Anfang der Endlosschleife. Mal abgesehen 
davon, daß die Anweisung flag1=false; in jedem Fall im if-Block vor den 
anderen stehen muß - sonst wird sie nicht aufgerufen, da ja schon vorher 
rausgesprungen wird.

Autor: MSPProfi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aufgrund der Tatsache, dass Schalter prellen würde ich hier auf jeden 
Fall noch eine Tastenentprellung rein programmieren.

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.