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

Re: HWCOM bei 19200 fehlt sporadisch das letzte Byte Kategorie: Programmierung (von André H. - 5.11.2004 9:00)
Als Antwort auf Re: HWCOM bei 19200 fehlt sporadisch das letzte Byte von Detlef Bäthke - 1.11.2004 15:31
Ich nutze:
C-Control II Unit, C164CI-ControllerBoard, CC2-Application-Board, CC2-StarterBoard, CC2-ReglerBoard, OSOPT V3.0
Hallo Detlef,

Ich hab' leider noch keine Zeit gehabt, dies genau zu untersuchen.
Aber folgendes kann bei grö�eren Datenpaketen auf jeden Fall passieren:
Da die Baudraten nicht genau stimmen sondern hier und da etwas abweichen,
kann es sein, daÃ? ein Byte hin und wieder nicht komplett empfangen wird.
(z.B. das Stop-Bit wird nicht erkannt.)
Das merkt man z.B. bei 57600 Baud, wenn man z. 4kB als ein Paket übertragen will.
(Ohne Pause dazwischen)
Auch bei den kleineren Baudraten ist dies der Fall.
Erst bei 9600 Baud ist die Abweichung sehr gering.

Um bei Dir aber das nachfolgende Byte noch nachlesen zu können, ginge evtl.
folgender Trick:
//----------------------------------
  inline function IncInbuffercnt ()
//----------------------------------
{
 inline 0x144; // Load Immediate Bytevalue "1"
 inline vmcodes.VM_LOAD_ABSOLUTE_INT;
 inline 0xF962;
 inline 0x45;  // ADD
 inline vmcodes.VM_STORE_ABSOLUTE_INT;
 inline 0xF962;
}

Mit dieser keinen Function wird das Register, das die Anzahl der empfangenen Bytes enthält,
um eins erhöht.
Aber vorsicht ! Wird ein Byte empfangen, während die Funktion ausgeführt wird,
so kann es sein, da� das Register mit einem veraltetem Wert überschrieben wird.

Alternativ könnte man noch angeben, um wieviel der Wert erhöht werden soll:
//----------------------------------
  inline function IncInbuffercnt (byte value)
//----------------------------------
{
 inline vmcodes.VM_LOAD_ABSOLUTE_INT;
 inline 0xF962;
 inline 0x45;  // ADD
 inline vmcodes.VM_STORE_ABSOLUTE_INT;
 inline 0xF962;
}


MfG André H.


> >
> > Hmm. Ich kann dies bis jetzt noch nicht nachvollziehen, obwohl ich öfters mit grö�eren
> > Datenpaketen an HWCOM zu tun hab'.
> > Versuche einmal das "fehlende" Byte mit einem hwcom.get() nachzulesen.
> >
> > Ich werde mir die Routinen noch einmal genauer ansehen, wenn ich wieder ein biÃ?chen Zeit hab.
> >
> > MfG André H.
> >
> Die Funktion hcom.get() gibt im Fehlerfall immer 0 zurück und nicht den richtigen Wert.
>
> Gruss Detlef


Antworten bitte nur ins Forum!
Fragen per EMail auf Forum-Postings werden nicht beantwortet!

Das macht meine Heizung gerade


    Antwort schreiben


Antworten:

Re: HWCOM bei 19200 fehlt sporadisch das letzte Byte (von Detlef Bäthke - 5.11.2004 14:06)