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 Erich, > > > danke für die Antworten und Entschuldigung dafür, dass ich mich etwas schwer tue. Ich bin ein > > Einsteiger in die Mikrocontrollerei (auch wenn CC2 nicht dafür geeignet sein soll) und habe eine > > Konzentrationsstörung, auf die ich nicht näher eingehen möchte. Für mich ist hardwarenahe-Program- > > mierung keine Selbstverfreilichkeit, da ich bisher zwar sowohl in C(++), als auch in Pascal programmiert > > habe, aber da auch nur für Windows und maximal mit Datenbankzugriffen per SQL. > > Für mich ist das alles ein bisserl schwierig und diese und jene Funktion zu implementieren und zu > > nutzen, scheint mir oft überflüssig (warum soll ich auf einen interrupt mit "getcount" statt mit "+ 1" > > reagieren?). Dann kommt die Sache mit der PLM: da kann ich bevor ichs messe auch nur annehmen, > > dass die Ports sich selbst "loopen" - sicher weiß ichs nicht von vorneherein. Mir fehlt da einfach die > > Erfahrung. > > Krassos hat es zwar eigentlich schon gesagt, jedoch nochmal: Keep ist simple. > > Du mußt, wenn Du nur Ereignisse zählen willst, nicht auf Interrupts reagieren, > da das OS dies bereits unabhängig an vier Ports machen kann. (P1H.0 - P1H.3) > Ich möchte Dir daher wenigstens die Kaptiel 3.3.8 "Sonderfunktionen der Digitalports", > sowie 3.3.8.1 "Zähler und Interruptports" des Handbuchs empfehlen. (Das ist nichteinmal eine DIN A5 Seite) > Dazu noch Kapitel 7.9.5 "Pulszählung". (7 Zeilen) > > Wenn Dir in einem Programm die Zeile > <code>wert=wert+ports.getcount(0);</code> > zu aufwendig ist, gibt es noch die Möglichkeit die Zähler ohne Löschen abzufragen. > Denn das OS hat feste "Register" mit denen die Ereignisse gezählt werden, welche > dann von <code>ports.getcount()</code> abgefragt und auf 0 gesetzt werden. > MCU-interner RAM Adresse 0xF7A6 bis 0xF7BC, je 4 Byte. > Das braucht man allerdings garnicht wissen. Denn das OS hat bereits VM-Codes, um diese > Counter-Variablen ohne Löschen auslesen zu können. > dazu müssen nur ein paar Inline-Funktionen ergänzt werden: > <code>//------------------------------------- > inline function cnt_0 () returns long > //------------------------------------- > {// Counter P1H.0 > inline vmcodes.VM_LOAD_SYSVAR_LONG | (vmcodes.LSYSVAR_CNT_1 << 8); > } > //------------------------------------- > inline function cnt_1 () returns long > //------------------------------------- > {// Counter P1H.1 > inline vmcodes.VM_LOAD_SYSVAR_LONG | (vmcodes.LSYSVAR_CNT_2 << 8); > } > //------------------------------------- > inline function cnt_2 () returns long > //------------------------------------- > {// Counter P1H.2 > inline vmcodes.VM_LOAD_SYSVAR_LONG | (vmcodes.LSYSVAR_CNT_3 << 8); > } > //------------------------------------- > inline function cnt_3 () returns long > //------------------------------------- > {// Counter P1H.3 > inline vmcodes.VM_LOAD_SYSVAR_LONG | (vmcodes.LSYSVAR_CNT_4 << 8); > }</code> > > Nun kann man statt > <code>wert=wert+ports.getcount(0);</code> > auch problemlos folgendes schreiben: > <code>wert=cnt_0();</code> > Wenn man dann noch die Counter zurücksetzen will, fragt man diesen einfach > mit <code>ports.getcount()</code> ab. > Alternativ könnte man das auch direkt mit einer inline-Funktione machen und > den Countern einen anderen Startwert zuweisen. > > MfG André H.
Dateianhang: (.gif, .png., .jpg, .zip, .rar)
max. 256kB
max. 256kB