Für dieses Forum muß Javascript im Browser aktiviert werden!
Kommentar: Einfügen von HTML im Kommentar: Link einfügen: <a href="LINKURL" target="_blank">LINKTITEL</a> Bild einfügen: <img src="BILDURL"> Text formatieren: <b>fetter Text</b> <i>kursiver Text</i> <u>unterstrichener Text</u> Kombinationen sind auch möglich z.B.: <b><i>fetter & kursiver Text</i></b> C2 Quellcode formatieren: <code>Quellcode</code> ASM Quellcode formatieren: <asm>Quellcode</asm> (Innerhalb eines Quellcodeabschnitts ist kein html möglich.) Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst ! > > Hallo Michael, > > > > Ein Stören der hwcom.receive()-Funktion des Main-Threads in rbports.c2 kann > > ich definitiv ausschließen. > > Es gibt keinerlei gemeinsam Ressourcen, die genutzt werden. > > Gemeinsame Ressource = CPU-Zeit? Könnte es sein, dass der der FIFO des UART oder was auch immer die > Schnittstelle bedient, einfach überläuft, während die CPU gerade einen anderen Thread bedient? > > Ich glaube auch, dass es nicht der eine Thread von rbports ist, sondern irgendein Thread. Der rbports.main tut keine > besonders aufwändigen Dinge, und ich habe noch einen zweiten Thread (der die Tastatur abfragt). Doch das Anhalten > des rbports.main hat die Sache viel stabiler gemacht, und das ist schlicht eine Beobachtung. Übrigens läuft noch immer > ein Anwendungsthread im Hintergrund, und das erklärt auch, warum es einmal noch zu einem fehlenden Byte kam, > trotz der Deaktivierung von rbports.main. > > Worauf ich aufmerksam machen wollte, ist, dass man sich mit dem Einbinden eines Moduls einen aktiven Thread > "einhandelt", von dem man zunächst gar nichts weiß. Das sollte man beim Debugging beachten. > > > Das Problem ist sicher ein anderes. > > Sendest Du größere Datenrahmen in einem Stück, und das mit höherer Baudrate (57.600Bd)? > > Nein, ich nutze 9600 bps und sende einmal etwa 1KiB und dann nochmal 2KiB, beides mit hwcom.receive > entgegengenommen. Vorher kommt jeweils ein Längenwort und ein CRC. > > > Das geht mit Hilfe von <code>hwcom.inbuffercnt()</code>. > > Erst wenn die erwartete Menge an Daten eingetroffen ist, sollte man mit hwcom.receive() > > die Daten einlesen. > > Ich werde die Receive-Funktion in hwcom.c2 dahingehend ändern. > > Gut, das ist ein anderer Weg. Geht sicher auch. > > Ich hab' im Übrigen einen CRC16 geschrieben und zu spüren bekommen, warum man so etwas tabellenbasiert und nicht > bitbasiert tun sollte. Wenn du daran Interesse hast, melde dich. > > Michael