Das Open-Control-Projekt - Die Alternative zur C-Control-I


Das Forum zur C-Control-1
Welche C-Control-Varianten existieren?
Übersicht - Suchen - Neueste 50 Beiträge - Neuer Beitrag - Login - Registrieren
INFO - FAQ - CC2-Forum - CCPro-Forum 

 Re: Bitte um Hilfe - Zieleinlauf 4 Bahnen Kategorie: C-Control I V1.1 (von Dietmar, Homepage - 20.06.2005 23:53)
 Als Antwort auf Re: Bitte um Hilfe - Zieleinlauf 4 Bahnen von Reiner - 20.06.2005 21:08
Dietmar nutzt:  CC1-M-Unit V1.1, Advanced CC1-Unit, Open-Micro, Open-Mini

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

Bisherige Antworten:

Re: Bitte um Hilfe - Zieleinlauf 4 Bahnen (von Reiner - 22.06.2005 7:20)
    Re: Bitte um Hilfe - Zieleinlauf 4 Bahnen (von Dietmar - 22.06.2005 9:50)
        Re: Bitte um Hilfe - Zieleinlauf 4 Bahnen (von Reiner - 22.06.2005 17:16)
            Re: Bitte um Hilfe - Zieleinlauf 4 Bahnen (von Dietmar - 22.06.2005 23:40)
                Re: Bitte um Hilfe - Zieleinlauf 4 Bahnen (von Reiner - 23.06.2005 7:24)
                    Re: Bitte um Hilfe - Zieleinlauf 4 Bahnen (von Dietmar - 23.06.2005 8:40)