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 Egbert, > > > Die zeitkritischen Dinge des One-Wire Protokolls muss ich in ASM erstellen. > > Nur als Info: Du kannst auch den DS2482 (I²C-1-Wire Bridge) zusammen > mit dem Modul ds2482.c2 verwenden. > > > Seit mehreren Tagen durchforste ich das Forum hier und finde etliche Hinweise, jedoch > > habe ich das Gefühl, dass diese Hinweise immer in der Zeit des jeweiligen Standes des OS > > zu sehen sind. > > Parameterübergabe zu ASM-Routinen ist bei allen OS-Versionen gleich. > Hier hat sich allein schon aus Kompatibilitätsgründen nie etwas geändert. > Es waren nur in der Anfangszeit noch nicht alle Möglichkeiten bekannt. > > > Auf meiner Unit nutze ich osopt_v3-1b2.hex (aktuell letzte Version) und sys0002.hex ist > > auch geladen. > > Schau Dir die Module, die auf ASM-funktionen zugreifen, an, wie die > Parameterübergabe erfolgt. Für sys0001.hex und sys0002.hex ist der ASM-Code offen. > (siehe Assembler => Segment 3 Map) > > > > Ich bekomme immer eine Null als Rückgabewert im LCD angezeigt. > > Probiert habe ich auch schon mit anderen höheren Adressen, aber immer das gleiche: Null > > kommt zurück. > > ... > > function readFD02() returns int > > { > > inline vmcodes.VM_LOAD_ABSOLUTE_INT; > > inline 0xFD02; > > }; > > function writeFD02(int value) > > { > > inline vmcodes.VM_STORE_ABSOLUTE_INT; > > inline 0xFD02; > > }; > > Das Problem ist, daß Du normale Funktionen nutzt, und keine inline-Funktionen. > Also: <code>inline function() { }</code> > Denn der Unterschied ist in der Stackbehandlung. > Inline-Funktionen machen exakt nur das, was man innerhalb schreibt. > Normale Funktionen räumen u.a. den Stack auf. > Übergebene Parameter sind bei normalen Funktionen lokale Variablen. > Diese müssten für die Inline-Anweisung erst in den C-Stack geladen werden. > Bei Inline-Funktionen werden übergebene Parameter nur auf den C2-Stack geschoben. > > Wenn Du also folgendes schreibst, würde es funktionieren: > <code>inline function readFD02() returns int > { > inline vmcodes.VM_LOAD_ABSOLUTE_INT; > inline 0xFD02; > } > inline function writeFD02(int value) > { > inline vmcodes.VM_STORE_ABSOLUTE_INT; > inline 0xFD02; > } > </code> > > Mit Gebrauch als normale Funktion müsste writeFD02() so aussehen: > <code>inline function writeFD02(int value) > { > // Laden der lokalen Variable "value" in den C2-Stack > inline vmcodes.VM_LOAD_LOCAL_INT; > inline -6; > // Schreiben des Werts vom C2-Stack > inline vmcodes.VM_STORE_ABSOLUTE_INT; > inline 0xFD02; > } > </code> > Beim Arbeiten mit inline-Anweisung in normalen Funktionen muß man einiges beachten. > In system.setdate() kann man das gut sehen. > Aber inline-Anweisungen in normalen Funktionen nutzt man nur, wenn man > innerhalb der Funktion diese mit C2-Code mischen will. > > Grüße, > André > >
Dateianhang: (.gif, .png., .jpg, .zip, .rar)
max. 256kB
max. 256kB