mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik UART LPC


Autor: Lutz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mein Problem ist einfach beschrieben: innerhalb des Webservers von
FreeRTOS habe ich eine serielle Kommunikation eingebaut. Die sendet und
die Gegenstelle antwortet.  Das funktioniert auch wunderbar. Nur die
Auswertung: Na ja...
Da ich weiß wie viele Zeichen als Antwort kommen ruf ich folgende
Routine eben x mal auf wobei x die Anzahl der Zeichen sind.

void UART1Read_String(void)
{
     while ( (UART1_LSR & 0x01) == 0);
      {
        HART_Buffer_bin[Telegrammelement] = UART1_RBR;
        Telegrammelement++;
      }
   }
}

Da die ersten Zeichen nur zur synchronisation diesen überprüf ich deren
Anzahl(erstes Zeichen nach der Synchronisation 0x86):
x= 0;
                while (HART_Buffer_bin[x++] != 0x86);{}
                Header = x;

dannach schiebe ich eben um diese Anzahl verschoben:
  speicher1[y]=Buffer_bin[y + Header];

und schon habe ich nur noch den Teil mit Informationen.

Nun mein Problem:
Dieses lass ich regelmäßig durchlaufen und beim ersten mal geht es auch
gut. Die Informationen die für mich interessant sind lege ich in einem
neunen Vector ab um sie so dauerhaft zwischen zu speichern bis ein
neuer Messwert kommt um den dann zu überschreiben. Jedoch werden die
neunen Messwerte bei Durchläufen nicht mehr korrekt abgelegt sondern
dann einfach mit 0x00 gefüllt. Ds schieben funktioniert dann auch das
habe ich mit dem hyperterminal überprüft indem ich mir speicher1 aus
gegeben habe. Jedoch wenn ich mir Buffer_bin zum Terminal Programm
schicken lasse sind die erssten ZEichen schon nciht mehr die zu
synchronisation obwohl ich  Telegrammelement=0; setzt vor dem aufruf
der leseroutine.

Ich hoffe das war nicht zu viel und auch noch verständlich.
Ausserdem hoffe ich das ihr mir ein Tip geben könnt warum das einlesen
nicht so klappt wie es sollte.

Grüße an alle
lutz

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.