Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

Re: Erhöhung der Pulse-Rate durch Tastendruck? Kategorie: CC2-Unit & Appl.Board / CC2-Station (von Olaf - 6.03.2006 19:44)
Als Antwort auf Re: Erhöhung der Pulse-Rate durch Tastendruck? von krassos - 6.03.2006 15:52
Ich nutze:
C-Control II Unit, CC2-Application-Board, OSOPT V3.0
> > > > >
> > > > > Hallo,
> > > > >
> > > > > entschuldigung für die späte Antwort. Anbei mein Program:
> > > >
> > > > Hallo,
> > > >
> > > > Ist kein Problem, ich warte nicht Hauptberuflich darauf *gg* .
> > > >
> > >  
> > > > > //------------------------------------------
> > > > > //------------------------------------------
> > > > >    thread keyboard
> > > > > //------------------------------------------
> > > > > //------------------------------------------
> > > > > {
> > > > >  int key_press;
> > > > >  loop
> > > > >  {
> > > > >   key_press = key();
> > > > >
> > > > >   if key_press == 11 {if delay - 1 < 0 delay = 0;
> > > > >    else delay = delay - 1;}
> > > > >   if key_press == 12 {if delay + 1 > 1000 delay = 1000;
> > > > >    else delay = delay + 1};
> > > > >
> > > > >   sleep 200;
> > > > >  }
> > > > > }
> > >

> > >
> > > > Bei einer schnellen Durchsicht sehe ich hier ein Problem. Schau Dir doch noch mal Deine IF-ELSE
> > > > Konstruktion an. Da gehören jeweils geschweifte Klammern rein, da Du zwei Anweisungen innerhalb
> > > > der jeweils ersten If- Anweisung hast.
> > > >
> > > > GruÃ? krassos
> > >
> > > Hallo,
> > >
> > > ich hatte jetzt etwas Zeit und habe mal das ganze nochmal durchdacht und die Klammern
> > > entsprechend eingefügt.
> > >
> > > GruÃ? krassos
> > >  
> > > >
> > >
> > >
> > > > > //---------------------
> > > > >    thread stepper
> > > > > //---------------------
> > > > > {
> > > > >  ports.set(enable,1);
> > > > >  ports.set(cw,0);
> > > > >  ports.set(clock,0);
> > > > >  loop
> > > > >  {
> > > > >   ports.pulse(clock);
> > > > >   sleep delay;
> > > > >  }
> > > > > }
> > > > >
> > > > > //---------------------
> > > > >    thread main
> > > > > //---------------------
> > > > > {
> > > > > run keyboard;
> > > > > run stepper;
> > > > > }
> > > > >

> > > > >
> > > > > Wenn die Taste "*" gedrückt wird, dreht sich mein Motor schneller. Leider sehe ich keinen "Fehler"....
> > > > >
> > > > > Ich hoffe das du, krassos etwas mehr siehst als ich :-)
> > > > >
> > > > > Vielen Dank für Deine/Eure Hilfe
> > > > >
> > > > > Olaf
> > > > >
> > > > > P.S Inzwischen sind es drei Threads geworden, allerdings das gleiche verhalten.
> >
> >
> > Hallo krassos,
> >
> > vielen Dank für deinen Hinweis mit den Klammern. Ich habe die Klammern sofort eingefügt.
> >
> > Leider Besteht mein Problem noch immer ... hast Du da vielleicht auch noch einen Rat ???
> > Weisst du ob P1H und Keyboard etwas mit einander zu tun haben , natürlich rein elektronisch :-)
> >
> > Vielen Dank.
> >
>
>
> Hallo Olaf,
>
> wenn Du so willst: P1H und Keyboard (bei DIR ad(7)) sind ports an an der gleichen MCU.
> Sonst besteht kein direkter Zusammenhang.
>
> Nochmal zu Deinem Problem:
> Wenn Du die Klammern eingefügt hast, wäre nochmals hilfreich, wenn Du Dir den Rückgabewert der Key-
> Funktion ausgeben lä�t (lcd oder hwcom).
> Dann wäre es leichter verständlich.
>
> CUT:
>
> Nochmal von vorne. Mir scheint, ich habe Dich MiÃ?verstanden.
> Bei Stern und Raute macht der Motor was er soll. Richtig? Also er wird schneller bzw. langsamer.
> Wenn Du irgendeine Taste drückst erfährt der Motor für ca 200ms einen Geschwindigkeitsschub
> und geht dann aber wieder auf die Geschwindigkeit gemä� delay?
>
> Wenn das so ist-- das wäre bei dem Programm ein normales Verhalten.
> Ohne irgendwelche Verrenkungen: Wenn das so ist, empfehle ich Dir für die Ansteuerung die PLM-Ports.
>
> GruÃ? krassos
>

Hallo krassos,

die 200 ms geben die Zeit zwischen zwei Pulsen an. Für jeden Puls macht der Schrittmotor einen Schritt.
Wenn ich Stern oder Raute drücke wird der Wert dieser Pause um 1 erhöht oder erniedrigt . Soll der Motor
schneller drehen wird die Wartezeit verkürzt und umgekehrt.
Nun das Problem: Drücke ich die Stern Taste um die Wartezeit um 1 ms zu erhöhen (ein Beispiel) wird der
Motor für die Zeit des Tastendrucks schneller als das Maximum was mit einer Wartezeit von 0 möglich ist.
Lasse ich die Taste los, dreht sich der Motor "normal" weiter mit einer Wartezeit um 1 ms erhöht. Ich kann
auch eine beliebige andere Taste auf der Folientastatur drücken, die ich nicht abfrage und der Motor wird
schneller.

Nun meine Erkenntnis:

Die while Schleife ist aktiv -> Wartezeit beträgt 0 -> der Motor dreht mit 5 U/min (fiktiver Wert)
Die while Schleife ist auskommentiert -> Wartezeit ist 0 -> der Motor dreht mit 10 U/min U/min (fiktiver Wert)
Die while Schleife ist aktiv -> Wartezeit beträgt 0 -> Taste wird gedrückt gehalten
   -> der Motor dreht mit 10 U/min (fiktiver Wert)

Ich hoffe jetzt habe ich es besser erklärt. Falls nicht, beschreibe ich es gerne auch nochmal anders :-)

Danke schön.

Olaf


    Antwort schreiben


Antworten:

Re: Erhöhung der Pulse-Rate durch Tastendruck? (von krassos - 6.03.2006 21:18)
    Re: Erhöhung der Pulse-Rate durch Tastendruck? (von Olaf - 6.03.2006 21:46)
        Re: Erhöhung der Pulse-Rate durch Tastendruck? (von krassos - 6.03.2006 22:06)
            Re: Erhöhung der Pulse-Rate durch Tastendruck? (von Olaf - 8.03.2006 8:24)
                Re: Erhöhung der Pulse-Rate durch Tastendruck? (von Olaf - 21.03.2006 14:29)