Hallo, ich hab ein Problem mit dem seriellen Datenempfang. Ich empfange serielle Kommndos und muss diese im uC entsprechend auswerten. Beipsiele: <SET+X:043> --> Speichern eines Parameters ins EEPROM <EIN> --> Der ADC Wandler soll eingeschaltet werden und sendet seine Werte über die RS232 an den PC Vorgehensweise: Wenn ich das Zeichen "<" empfange erzeuge ich einen Interrupt und setzte eine Variable auf null. In dieser Variable werden ab diesem Moment alle empfangenen Zeichen gespeichert und später mit einem vorgebenen String verglichen. Nun kann es sein, dass der uC nicht mehr auf die Kommandos reagiert. Vielen Dank schon mal im voraus.
Hallo Tester, ich habe Dein Programm nicht ganz durchschaut, insbesondere da Du nur einen Teil des Programms angehängt hast. Ich könnte mir aber vorstellen, dass Dein Vorgehen mit dem Interrupt beim "<"-Zeichen zu Problemen führt. Du modifizierst "Empfangene_daten" im Interrupt "Serial0charmatch:" sowie in der Sub "Serieller_datenempfang()". Was passiert, wenn ein Interrupt auftritt während das Programm in der Sub ist? Das könnte Ärger machen. Gruß Gerd
Warum empfängst du nicht einfach solange die Daten (und schreibst sie in einen Puffer), bis du ">" empfängst? Danach könnte man den Befehl dann auswerten. Ich würde einen Rinpuffer verwenden und beim Empfang von ">" ein Flag setzen. Daraufhin würde ich den String seit des letzten ">"-Empfangs auswerten. Sobald der Lesezeiger beim ">" angekommen ist und der Befehl abgearbeitet wurde, wird auf den nächsten gewartet.
Danke für die Antworten. Ich hab mir schon so etwas wie mit dem Interrupt gedacht. Denn das Problem tritt nur auf, wenn ich innerhal kürzester Zeit mehrere Kommandos sende. Die Lösung mit dem Rinpuffer finde ich gut. Ich werde sie auf alle Fälle mal ausprobieren. Denn hier bin ich mir sicher, dass das komplette Kommando gesendet sein müsste. Ich muss dann halt nur von hinten das Kommando asuwerten. Gruß
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.