
|
INFO - FAQ - CC2-Forum - CCPro-Forum |
|
||
|
Hallo Reiner, da Du bereits geschrieben hast, daß Du bei der Elektronik keine Probleme siehst, ist es sehr einfach möglich, diese Aufgabe mit der C-Control zu lösen. Du nutzt in diesem Fall die C-Control, um die Länge eines Impulses zu messen. Zunächst wartest Du, bis sich am Eingangsport für die Startpistole etwas tut, dann speicherst Du den TIMER-Zustand und schließlich wartest Du solange, bis sich das Signal der Lichtschranke verändert, fragst den TIMER erneut ab und subtrahierst. Sinngemäß bei einer Lichschranke ungefähr so: define startpistole port[1] define lichtschranke port[2] define starttimer word define endetimer word define led port[3] 'LED am PORT[3] einschalten led=on 'Ausgabe ueber Terminal, z.B. Hyperterminal '(oder waehrend der Simulation im Fenster 'C-Control-Ausgaben') print "Ich warte, bis PORT[1] high wird." 'Der WAIT-Befehl laesst das Programm solange auf der Stelle stehen, 'bis die angegebene Bedingung erfuellt ist, der Ergebniswert also 'ungleich Null ist. wait startpistole starttimer=timer 'LED am PORT[3] umschalten (hier: ausschalten) tog led print "Ich warte, bis PORT[2] high wird." wait lichtschranke endetimer=timer 'LED am PORT[3] umschalten (hier: einschalten) tog led print "Starttimer ist ";starttimer print "Endetimer ist ";endetimer print "Benoetigte Zeit: ";(endetimer-starttimer)*20;" ms" end Dieses Beispielprogramm kannst Du sehr gut in der C-Control/BASIC-Windows-Entwicklungsumgebung durchsimulieren lassen, um das Prinzip zu verdeutlichen. Die Eingangsports der C-Control können im Programm auf "high" (ON, -1) oder "low" (OFF, 0) abgefragt werden. Je nachdem, was für ein Signal an der C-Control anliegt, muß die Abfrage eventuell invertiert werden (siehe NOT in der Hilfe). Wichtig ist es auch, sich klarzumachen, daß hier Zustände abgefragt werden. Falls die Sensoren nur sehr kurze Impulse liefern, ist es natürlich gut möglich, daß die C-Control für diese einfache Lösung (sogenanntes "Polling") zu langsam ist. Mittels Hardware kann man Impulse aber z.B. verlängern. Beispielausgabe des Simulators: Ich warte, bis PORT[1] high wird. Ich warte, bis PORT[2] high wird. Starttimer ist 7661 Endetimer ist 7834 Benoetigte Zeit: 3460 ms Wenn Du unbedingt eine Auflösung von 1/100 Sekunde benötigst bietet es sich an, die C-Control mit einem 8-MHz-Quarz auszustatten. Dann wird der TIMER hundert Mal pro Sekunde inkrementiert. (Ansonsten: Siehe FAQ unter "Kann man das Zählen der TIMER-Variable, bzw. den 20-ms-Interrupt beschleunigen?". Das dort angegebene Assemblerlisting ist für den Anfänger aber vielleicht nicht allzu verständlich.) Dietmar Meine Homepage: http://ccintern.dharlos.de |
| Antwort schreiben |