Für dieses Forum muß Javascript im Browser aktiviert werden!
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.