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

Wichtig: Bevor Du wegen einem Problem mit der CC2 postest, stelle sicher, daß Du
die neueste OS-Version, die neuseste Compiler-DLL und die neuesten Modulversionen benutzt!
Beachte, daß sich auf der CD zur CC2-Unit/Station auch jetzt noch die ältesten Dateien befinden!
Es gelten folgende Anleitung und Regeln: Regeln CC2Net.de-Forum
Zurück zum Artikel  (Blaue Felder sind Pflichtfelder)


Name:   UserID: 
 E-Mail:
Kategorie
Betreff
Homepage:
Link-Titel:
Link-URL:
Cookie für Name, UserID, E-Mail, Homepage-URL setzen
(Erspart die Neueingabe bei Beiträgen und Antworten)
(Zum Löschen des Cookies hier klicken)
Ich nutze:
C-Control II Unit
C164CI-Controllerboard
C-Control II Station
CCRP5 mit CC2-Unit (Conrad Roboter)
CC2-Application-Board
CC2-StarterBoard
CC2-ReglerBoard
eigenes Board
original OS     OSOPT_V2     OSOPT V3.0 OSOPT V3.1

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 Günni, > > > wobei wir gerade bei mem-Modul sind: > > für die nächsten Revisision hätte ich für getlong und geting (put...) einen Verbesserrungsvorschlag. > > Und zwar das man angeben kann ob die Daten MSB oder LSB abgelegt sind. > > Das erleichtert die Kommunikation mit anderen Systemen die nicht zufällig MSB-Standard haben und > > spart einem läßtige "Umbauarbeiten". > > Hier kann ich nichts ändern, ohne das OS selbst anzupassen. > Denn alle Funktionen, die in mem.c2 nur aus einer inline-Zeile bestehen, > sind eigene VM-Codes des OS. > > Hier bleibt dann nichts anderes übrig, als folgendes Konstrukt, wenn man "LSB first" benötigt: > <code> > function getlongLSBfirst(byte src[]) returns long > {long x; > x=(src[3] shl 8) or src[2]; > return (x shl 16) or (src[1] shl 8) or src[0]; > } > > function getintLSBfirst(byte src[]) returns int > { > return (src[1] shl 8) or src[0]; > }</code> > > Gut, man könnte hier auch eine Mini-ASM-Routine, wie für die ROL/ROR-Geschichte verwenden: > In Assembler sieht das dann so aus: > <asm> > getint proc far > CALLS OSsegment,POP_R4 ;source > EXTS #8,#2 > MOVB RL5, [R4+] > MOVB RH5, [R4] > MOV R12, R5 > CALLS OSsegment,PUSH_R12 > POP R1 > POP R1 > RETS > getint endp > > getlong proc far > CALLS OSsegment,POP_R4 ;source > EXTS #8,#4 > MOVB RL5, [R4+] > MOVB RH5, [R4+] > MOVB RL6, [R4+] > MOVB RH6, [R4] > MOV R12, R5 > MOV R13, R3 > CALLS OSsegment,PUSH_LONG > POP R1 > POP R1 > RETS > getlong endp</asm> > > Ob sich der Aufwand aber lohnt, bezweifle ich fast. > Zumindest bei der Verwendung von Integer wird es zeitlich kaum einen Gewinn geben. > Bei Long wird die Ausführung etwas schneller sein. > Besser wäre es dann den kompletten Datenrahmen, den man erhält, mit ASM zu > zerlegen, um wirklich Zeit zu sparen. > Aber man muß hier immer abwägen, wie zeitkritisch etwas ist. > > MfG André H.
Dateianhang: (.gif, .png., .jpg, .zip, .rar)
max. 256kB
max. 256kB