mikrocontroller.net

Forum: Compiler & IDEs MSP430F149: Kommandos einlesen


Autor: KoF (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
meiner einer schon wieder!!!

so, jetzt hab ich mal wieder ein prob. bei dem ich so nicht weiter
komme.

ich versuche commands ( ala kommandozeilenparameter der guten alten
textbasierenden os`s ;-) ) an den msp via uart0 zu schicken.
einzelne zeichen kann ich ja auch ein und auslesen, auch kann ich ganze
strings ausgeben, doch beim einlesen ganzer strings hapert es noch.
naja, es geht garnich (zumindest bin ich schon ziemlich down und will
das zeug bald in die ecke werfen!!!!)

hier in etwa meine funktion (achtung kein code, sondern ein
brainstorming!!!!)



010 array: char command[20]
020 TXBUF0 löschen
030 for( i = 0;i<=20;i++)
040 {
050 wenn( TXBUF0 != leer )       // weil ja gelöscht!!!!
060 {
070  dann command[i] = TXBUF0
080 }
090 sonst warte bis TXBUF0 != leer
100 {
110  dann gehe zu 070:
120 }
130 wenn ( TXBUF0 == ENTER )
140 {
150  dann ende der funktion
160  array übergeben
170 }



auch wenn es so aussieht, ich bin kein basic'er (schien mir so aber am
einfachsten mein prog/funktion zu verdeutlichen), sondern ein reiner
c-mensch (mspgcc)und auch meine schöne sprungmarke sollte nicht
unbeding rein ;-)

hat da jemand schonmal soetwas gemacht, und wenn ja, kann ich den code
vielleicht einsehen??
oder kann man mir zumindest mal einen großen denkanstoß geben?? mein
prob ist im eigentlichen, das ich nicht weiß, wie ich feststellen kann,
das sich TXBUF0 geänder hat/bzw ich nicht weiß, ob man ihn löschen
kann...

mfg KoF

Autor: OldBug (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo KoF!

Hier mal meine routine, nicht ganz optimal, aber ich brauchs im moment
nicht komfortabler ;)

Gruß,
Patrick...

Autor: KoF (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
vielleicht interessiert es ja jemanden, oder hat noch einige
verbesserungen, aber im grunde ist mit dem folgendem ( dank an oldbug )
nun einige riesen schritte weiter gekommen!!!


struct Command
{
  char zeichen;
  char kette[20];
  unsigned int count;
}cmd;

run()
{
  writec(cmd.zeichen);
  cmd.kette[cmd.count] = cmd.zeichen;
}

ausgabe()
{
  int i;
  writes("\r");
  for( i = 0; i<= 19;i++)
  {
    writec(cmd.kette[i]);
  }
}

main()
{
  int i;
  uart0();
  cmd.count = 0;
  _EINT();                              // interrupt

  for (;;)
  {
    _BIS_SR(CPUOFF);                    // Enter LPM0
    _NOP();                             // Required only for C-spy

  }
}

interrupt(UART0RX_VECTOR) isr_usart0rx()
{
  char ch;
  ch = U0RXBUF;
  switch(ch)
  {
    case 0x0D:
      writec(0x0D);
      writec(0x0A);
      break;
    case 0x08:
      writec(0x08);
      writes(" ");
      writec(0x08);
      break;
    default:
      writes("geht :-)");
      cmd.zeichen = ch;
      if(cmd.count <=19)
      {
        run();
        cmd.count++;
      }
      if(cmd.count >= 19)
      {
        writes("\rstack ist voll");
        ausgabe();
        cmd.count = 0;
        writes("\rstack wurde zurueckgesetzt und wird ab jetzt
ueberschrieben!!!\r");
      }
      break;
  }
}


ich hab kein problem mit kritik an dem prog, den kritik verbessert und
macht auf fehler aufmerksam!! ;-)

mfg KoF

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.