Gast
#231117
So,
ich bin wirklich nicht der geborene Programmierer. Ich möchte mit den
beiden Tastern den Motor rauf bzw. runter fahren, und wenn beide
gleichzeitig gedrückt werden, aus der Schleife raus.
Habe alles mögliche ausprobiert, aber egal was ich mache, es greift
immer noch einer der Einzeltastenprüfungen, so daß der Motor noch
angeschaltet wird. Das muß ausgeschlossen werden.
Natürlich könnte man den dann einfach wieder ausschalten, aber erstens
erwarte ich Probleme mit dem verfügbaren Programmspeicher, und zweitens
bin ich mir sicher, daß es eine gute Lösung gibt.
system.beat kommt alle 20ms, die Entprellung wird durch Peters
'bulletproof' Routine mit Takt alle 1,6ms vorgenommen.
while(1) { // forever true
if( system.beat ) {
system.beat=0;
system.prescaler++;
tempB=switch_closed(1<<BUTTON_GREEN | 1<<BUTTON_RED);
if ( temp==system.prescaler ) { // every ms
temp=temp+20;
if( tempB == (1<<BUTTON_RED | 1<<BUTTON_GREEN) ) {
led_red=5;
break;
}
else if(tempB == 1<<BUTTON_GREEN ) {
stepper.dir=DOWN;
stepper.speed=120;
stepper.power=1;
PORT_LED_GREEN |= 1 << LED_GREEN;
}
else if( tempB == 1<<BUTTON_RED) {
stepper.dir=UP;
stepper.speed=120;
stepper.power=1;
PORT_LED_RED |= 1 << LED_RED;
}
}
}
if(switch_opened(1<<BUTTON_GREEN)) {
stepper.power=0;
PORT_LED_GREEN &= ~(1 << LED_GREEN);
}
if(switch_opened(1<<BUTTON_RED)) {
stepper.power=0;
PORT_LED_RED &= ~(1<<LED_RED);
}
} // while(1)
Hier erfolgt also nach spätestens 400ms die Erkennung, vielleicht
sollte ich die Verzögerung auch noch erhöhen.
Ich würde mich wirklich über ein wenig Hilfestellung freuen, so ein
bescheuertes Brett vor dem Kopf kann einem die ganze Lust verderben!
Danke!