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 Volker, > > > Wenn die Ports als Counter laufen, kann ich den Zustand der Ports nach dem Pegelwechesel noch > > abfragen? > > Beispiel: > > > > <code> > > if ports.getcount(0) > > { > > if ports.get(0) == -1 > > { > > tue etwas > > } > > else > > { > > tue etwas anderes > > } > > } > > </code> > > Ja, das geht. > Allerdings macht das nicht viel Sinn. > Denn, wenn Du auf eine Flanke reagierst, ist der Portzustand danach meist immer gleich. > D.h. bei einer low-high-Flanke liegt am Port immer ein High-Pegel an. > Bei Reaktion auf high-low-Flanken entsprecht ein Low-Pegel. > Außer der Impuls war so kurz, daß dieser bis zur Abfrage nicht mehr anliegt. > > In Deinem Code hast Du aber einen kleinen Fehler. > Die Counter Ports sind die Ports P1H.0 bis P1H.3 (=Ports 8 bis 11) > Bei ports.getcount() entsprechen diese auch den Indizies 0 bis 3. > Bei direkten Portzugriffen mit ports.get() und ports.set() sind das aber die Indizies 8 bis 11. > > Übrigens solltest Du bei If-Abfragen, bei denen Du nur auf True oder False prüfen willst, > nicht auf "== -1" prüfen. > Schreibe einfach folgendes: > <code> if ports.get(8) { tuedies(); } else { tuedas(); } </code> > Denn dann sparst Du Dir zwei VM-Instruktionen, was die Ausführung beschleunigt > und noch 4 Byte Speicher spart. > > > > Außerdem brauche ich noch einen Timerinterrupt. Also ein Programmteil der zyklisch so jede Sekunde > > aufgerufen und ausgeführt wird. Das könnte man ntürlich mit dem freilaufenden Timer machen (Timerwert > > abspeichern und ständig vergleichen, ob eine Sekunde abgelaufen ist). > > Oder aber einem eigenen Thread? Wie sind da Eure Erfahrungen? > > Nein, einen Timerinterrupt brauchts Du hier nicht. > Wenn ein Teil des Programms unabhängig von anderen Aufgaben jede Sekunde abgearbeitet > werden soll, ist ein eigener Thread durchaus sinnvoll. > Am einfachsten ist folgende Methode: > <code>thread jedesekunde > {byte second; > wait second!=system.second(); > second=system.second(); > //ab hier der Code, der jede Sekunde ausgeführt werden soll. > // .. > } </code> > Lediglich beim ersten Durchlauf wird die Pause etwas kürzer als eine Sekunde sein. > Aber das kann man noch mit einem initilisieren der second-Variable und einer Schleife > innerhalb des Threads lösen. > > MfG André H
Dateianhang: (.gif, .png., .jpg, .zip, .rar)
max. 256kB
max. 256kB