Re: Erhöhung der Pulse-Rate durch Tastendruck? Kategorie: CC2-Unit & Appl.Board / CC2-Station (von Olaf - 4.03.2006 19:24) | ||
Als Antwort auf Re: Erhöhung der Pulse-Rate durch Tastendruck? von krassos - 28.02.2006 18:42 | ||
| ||
> > Hallo zusammen, > > > > ich habe ein kleines Program geschrieben welches zwei Threads enhält. In einem Thread wir ein Schrittmotor > > permanent (durch ports.pulse) um einen Schritt weiter gedreht (L297/L298 Schaltung) und der andere Thread erhöht > > auf Tastendruck die Pause nach dem ports.pulse. Dadurch wird die Drehgeschwindigkeit erhöht oder verkleinert. > > > > Mein Problem ist nun das bei jedem Tastendruck, der Motor einen merklichen Geschwindigkeitsschub erfährt. > > Selbst wenn ich die Pause auf 1 ms stelle, was ja eigentlich die maximale Geschwindikeit sein sollte, legt der > > Schrittmotor einen Zahn zu. > > Dieses Verhalten wird auch am Oszilloskope sichtbar, durch schneller aufeinander folgende pulse. > > > > Hat jemand von euch eine Idee wieso dies so ist ??? Oder wie ich das unterbinden kann? > > > > > > �ber einen Hinweis würde ich mich sehr freuen. > > > > Vielen Dank > > > > > Hallo, > > ohne einige Codeschnipsel zu dem Thema wäre das nur in den blauen Dunst geschossen. > > Gru� krassos Hallo, entschuldigung für die späte Antwort. Anbei mein Program: const enable = 8; //P1H0 const cw = 9; //P1H2 const clock = 10; //P1H4 int delay; function key () returns int { int u1, u2, key; while (ports.adc(7)>900); u1= ports.adc(7); u2= ports.adc(7); if (math.abs(u1-u2))< 4 { if u1<901 key=3; //Taste 3 if u1<825 key=6; //Taste 6 if u1<755 key=9; //Taste 9 if u1<690 key=12; //Taste # if u1<620 key=2; //Taste 2 if u1<550 key=5; //Taste 5 if u1<480 key=8; //Taste 8 if u1<410 key=0; //Taste 0 if u1<335 key=1; //Taste 1 if u1<270 key=4; //Taste 4 if u1<190 key=7; //Taste 7 if u1<110 key=11; //Taste * if u1>1000 key=-1; //Keine Taste gedrückt } return key; } //------------------------------------------ //------------------------------------------ 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; } } //--------------------- 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. | ||
Antwort schreiben Antworten: Re: Erhöhung der Pulse-Rate durch Tastendruck? (von krassos - 5.03.2006 10:25) Re: Erhöhung der Pulse-Rate durch Tastendruck? (von krassos - 5.03.2006 16:14) Re: Erhöhung der Pulse-Rate durch Tastendruck? (von Olaf - 5.03.2006 23:59) Re: Erhöhung der Pulse-Rate durch Tastendruck? (von Olaf - 5.03.2006 20:31) Re: Erhöhung der Pulse-Rate durch Tastendruck? (von krassos - 6.03.2006 15:52) Re: Erhöhung der Pulse-Rate durch Tastendruck? (von Olaf - 6.03.2006 19:44) 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) |