Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

SWCOM OS Bug? Kategorie: Progr. Assembler, TaskingTools, OS (von Newbie - 19.09.2011 9:53)
Ich nutze:
C-Control II Station, OSOPT V3.1
Ich beziehe mich auf meinen Post

http://www.cc2net.de/Foren/CC2Net_Forum/lesen.php?eintrag=16231

Ich vermute stark, das ein Bezug zu folgendem Post besteht. Langsam vermute ich einen Fehler
weiter unten im "System" - darum jetzt ein Post hier.:

http://www.cc2net.de/Foren/CC2Net_Forum/lesen.php?eintrag=15567

Ausgangslage: Ich verwende SWCOM mit Pegelwandler. Die Routine funktioniert einwandfrei mit HWCOM,
jedoch nicht mit SWCOM.

Hier der aktuelle Code. Es ist das einzige Modul und thread im Projekt.


thread main
{
 stports.init();
 stports.alloff();
 lcdext.init();
 swcom.init();
 swcom.setspeed(5);

 byte buffer[32];            //2ter serieller Buffer
 byte length;
 int Wert1;
 int Wert2;
 int Wert3;
 byte Flag1;
 byte Flag2;
 byte Flag3;

 mem.fill(buffer,32,0x00);   //Löschen

 loop
 {
wait swcom.ready();
wait swcom.rxd();

swcom.receive(buffer,9,500);  

            Wert1=mem.getint(buffer,0);
            Wert2=mem.getint(buffer,2);
            Wert3=mem.getint(buffer,4);
            Flag1=buffer[6];
            Flag2=buffer[7];
            Flag3=buffer[8];

wait swcom.ready();
swcom.send(buffer,9);  //Echo

            lcdext.clear();lcdext.home();
            lcdext.zahl3p(Wert1);lcdext.zahl3p(Wert2);lcdext.zahl3p(Wert3);
            lcdext.line(2); lcdext.zahl3p(Flag1);lcdext.zahl3p(Flag2);lcdext.zahl3p(Flag3);

 }
}


Wenn ich 9 Zeichen schicke, werden 18 geantwortet. Dabei gibt es immer 8 0x00 nach dem ersten Zeichen,
dass sich einschiebt. z.B. "ABCDEFGI" wird zwar wiedergegeben, aber mit 8x 0x00 nach dem A

Bei Zahlen, zb. 0x01 0xF4 0x00 0xF0 0x01 0x2C 0x01 0x01 0x01 dasselbe

Jetzt kommt das Verrückte: Wenn ich am Anfang noch ein Zeichen mehr anhänge

0x01 0x01 0xF4 0x00 0xF0 0x01 0x2C 0x01 0x01 0x01

wird korrekt geparst! D.h. das erste Zeichen scheint fĂĽr mem.getint verloren gegangen zu sein, ist jedoch
da, wie man am Echo des Ports feststellen kann! Das selbe ist reproduzierbar mit Text.

Irgendwie kommt es zu einem selektiven Shift nach links. Dies erfolgt ab dem ersten Loop. Lässt sich
auch ganz einfach mit einem String testen. Z.b. indem man ihn im LCD anzeigen lässt:

         lcdext.home();
         lcdext.printlength(buffer,9);

Das erste Zeichen wird verschluckt und der ganze String nach links geschoben. Beim Echo treten
8 Zeichen nach dem ersten - das offenbar doch da war - auf, welche dort nicht hingehören.

Ich habe zwei verschiedene CC2 benutzt mit zwei verschiedenen Pegelwandlern. Eine Brandneu. Beide
Aktuell.

Hat jemand eine Idee? Workaround?



    Antwort schreiben


Antworten:

Re: SWCOM OS Bug? (von Newbie - 19.09.2011 10:36)