Guten Morgen !

ich habe für meinen ROV namens ROUVus (www.hardegser-sv.de/rov) versucht, ein Protokoll für den RS485-Bus zu schaffen. Ich will zum Verständnis der Frage kurz beschreiben wie es funktioniert:
| ! | Adresse | Data1 | Data2 | Data3 | Data4 | Data5 | ist der Aufbau eines Packets. Nun habe ich den Empfangsinterrupt soweit, dass er in ein Array of Char (char buffer[6]) dann Adresse + Datenbytes speichert wenn die adresse seine ist. das scheint auch einwandfrei zu funktionieren..
nun muss ich das angekommene Kommando noch weiter verarbeiten..
also setzt der interrupt bei vollständigem empfang eine variable auf eins..
im hauptprogramm läuft eine schleife, die diese variable prüft..
bei wert == 1 tritt sie in aktion.. und zwar einfach den ganzen buffer zurückzusenden...
fürs senden habe ich mir zwei funktionen geschrieben, die einzelne chars und ganze "strings" senden kann..
wenn ich der stringfunktionen den buffer übergebe, kommt der auch im terminalprogramm (HTerm) an...
problem: da kommt noch viel mehr danach an.. statt der 6 bytes die er empfangen hat kommen ungefähr 20 bytes an und nur am anfang stehen die richtigen... danach kommt kauderwelsch..
übergebe ich der stringsende funktion einen string direkt, kommt dieser vollständig und ausschließlich an..
um das problem weiter einzugrenzen habe ich versucht den buffer in einer schleife als char zu senden:
UDR = buffer[i]; in etwa.. das hat dazu geführt, dass er nichts gesendet hat (nur die standards die drumherum gelegt werden von der sende funktion (| ! | Adresse |). kann man mit buffer[i] auf einzelne zeichen zugreifen oder nicht ? und die nächste frage wo kommen diese ominösen zeichen her..
wenn ich nur ein zeichen sende und das direkt im interrupt verarbeite, gibt es keine probleme, was für mich bedeutet, das die schnittstelle nicht noch nachfolgende signale sendet, da im testprogramm in allen fällen außer "a" die led ausgeschaltet wird. wenn ich ein "a" senden, die LED auch angeht und an bleibt.

Ich hoffe , ihr versteht was ich meine und könnt mir ein wenig unter die arme greifen..

MfG
ngb

P.S.: quellcode poste ich heute nachmittag... vielleicht gibt es ja eine nicht software-bedingte lösung