
|
INFO - FAQ - CC2-Forum - CCPro-Forum |
|
||
|
na.. an sich is diese methode zur zeitmessung ja schon richtig. man muss nur aufpassen, dass man sich keinen stolperstein bastelt. ich mach das immer so: define timerini word .... timerini = timer ... if abs (timer - timerini) >= 500 then tue irgedwas also vorm start der zeitkritischen operation den timer in einen puffer schaffen, anschließend kann gemacht werden, was bemessen werden soll und dann die abfrage if abs (timer - timerini) 0 => 500 then tue irgedwas. hierbei kann es mit "=>" bzw ">=" keine probleme geben, denn du schaffst damit die gewähr, dass auch, wenn die zeitkritische operation länger als 20 ms benötigt hat, nach spätestens 10 sekunden schluss ist (beispiel). wenn du eine solche abfrage mit einem steifen "=" machst, musst du dir totsicher sein, dass der timer innerhalb 10 ms auch garantiert einmal abgefragt wird. das kann man - glaub' ich - nich immer so genau ;) 10 ms deshalb, weil du ja auch nie sicher sein kannst, wann im verlauf der 20 ms eines timer-digits du diesen ausgelesen hast und wann du ihn wieder abfragst. es ist nur ein vorschlag, mit dem ich immer recht gut gefahren bin, weil er immer ein exact positives ergebnis liefert und man beim programmieren nicht mehr weiter um die ecke denken muss (überlaufproblematik). was nicht OK ist, ist der gebrauch der bool'schen funktionen als befehle: > if schaltkontakt and timer = (w1 + 100) or (w1+101) then schaltkontakt = off was ist denn das??? or sollte nur zwei eingangszustände kennen: true und/oder false , ja und/oder nein oder auf CControlisch: -1 / 0. or ist kein programmbefhel, sondern eine logische funktion. also raus da!!!! die anderen ausdrücke hast du schon berichtigt: if port[x] then... bzw if not port[x] then .... (was übrigens auch für alle variablen so nutzbar ist) |
| Antwort schreiben |