Re: Incrementalgeber und solch komische Sachen Kategorie: Programmierung (von krassos - 12.04.2006 20:57) | ||
Als Antwort auf Re: DA-Wandler und anderen komischen Sachen :o) von Sascha - 12.04.2006 19:37 | ||
| ||
> Danke für die Erklärung, > > das mit Capture funktioniert perfekt (wenn man es wei� :o)) > > ich will keinen neuen Thread anfangen, deswegen mein nächstes Problem gleich hier :o) > > bevor ich poste probiere ich übrigens immer mindestens 2 Tage selber, das Problem > zu lösen.... > > Ich komme hier nicht mehr mit break heraus....entweder funktioniert der Geber, oder die > Tastatur....wo ist den mein Denkfehler ??? Auch meine Wertbegrenzung funktioniert nicht, nach 255 > fängt der Geber wieder bei 0 an.....ich hätte gerne, das nach 255 nicht´s mehr passiert, unter Null > auch nicht... Hallo Sascha, 1. Wo willst Du denn mit break hin? Du befindest Dich in einem Thread in einer loop. break beendet die loop. Der thread ist auch eine loop, also geht es sofort wieder vorne los. 2. wert ist byte -- ein vergleich auf >255 oder < 0 ist unsinnig 3. wert ist byte. Du addierst/subtrahierst jeweils 2. Beim ersten start ist wert 0. 0-2=254 Du unterläufst also Deine wertbegrenzung. Gru� krassos > > > > byte wert; > int PushButton; > > thread Geber_dim1 // Inkremental Geber über 3 Ports > > { > int SpurA, SpurB, SpurAA; > //if wert >=255 wert=255; > //if wert <=0 wert = 0; > int Key; > Key=pcfkeyb.getchar(0); > > > > loop > { > PushButton = !(ports.get(12)); > SpurA = !(ports.get(14)); > SpurB = !(ports.get(13)); > > > if SpurA < SpurAA //positive Flanke > { > if SpurB == -1 wert = wert + 2; > if SpurB == 0 wert = wert - 2; > SpurAA = SpurA; //Zustand am Port merken, für Flankenerkennung > // if wert >= 255 wert=255; > //if wert <= 0 wert = 0; > } > > if SpurA > SpurAA //negative Flanke > { > if SpurB == -1 wert = wert - 2; > if SpurB == 0 wert = wert + 2; > SpurAA = SpurA;//Zustand am Port merken, für Flankenerkennung > //if wert >=255 wert=255; > //if wert <=0 wert = 0; > } > > > > if PushButton == -1 wert = 0; > > > > if Key==key_F1 pcflcd.setLight(1); // Displaybeleuchtung an > if Key==key_F2 pcflcd.setLight(0); // Displaybeleuchtung aus > if Key==key_prev {del(); break;} // Back > > > } > } > | ||
Antwort schreiben Antworten: |