Für dieses Forum muß Javascript im Browser aktiviert werden!
Kommentar: Einfügen von HTML im Kommentar: Link einfügen: <a href="LINKURL" target="_blank">LINKTITEL</a> Bild einfügen: <img src="BILDURL"> Text formatieren: <b>fetter Text</b> <i>kursiver Text</i> <u>unterstrichener Text</u> Kombinationen sind auch möglich z.B.: <b><i>fetter & kursiver Text</i></b> C2 Quellcode formatieren: <code>Quellcode</code> ASM Quellcode formatieren: <asm>Quellcode</asm> (Innerhalb eines Quellcodeabschnitts ist kein html möglich.) Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst ! > > Hallo, > > > > ich hätte eine kurze Frage zum Anschluss am Digitalport P1H0. > > Ich möchte die Drehzahl eines Fahrradreifens messen. Ich benutze hierfür den Sensor des Fahrradcomputers. > > Immer wenn ein Magnet (an den Speichen besfestigt) an dem Sensor vorbei geht schaltet dieser durch. > > Ich schließe am Sensor die 5 V Festspannung der C-Control II an (mit R = 10k in Reihe) immer wenn der > > Sensor durchschaltet entseht ein Rechteckimpuls. Diesen Impuls möchte ich mit dem Digiport auswerten > > (Impulszähler). Ich weis aber nicht, wie ich den Digiport anschließen muss. einfach parallel dem 5 V Kreis? > > > <code> > thread geschwindigkeit > { > run 32; //es muss ein main-thread vorhanden sein, in dem steht: run geschwindigkeit > // diese zeile ist überflüssig. > long drehzahl, zeit; > float d_reifen; > > drehzahl = 0; > zeit = 0; > > d_reifen = 0.5; > > string s,e; > lcdext.init(); > > zeit = system.timer(); > loop > { > // // Überlauf abfangen > // if zeit < 0 > // zeit = system.timer() + (2147483647 - zeit); > > if zeit<0 //Überlauf abfangen > {ports.getcount(0);zeit=zeit = system.timer();} > else > { > > > if(system.timer()- zeit)>=1000 > { > drehzahl = (ports.getcount(0) * 1000)/(system.timer() - zeit); > > s = ""; > str.putlong(s,drehzahl); > lcdext.clear(); > lcdext.cursorpos(1,0); > e= "1/s"; > s = s+e; > lcdext.print(s); > sleep 100; > zeit = system.timer(); //diese zeile sollte unmittelbar nach getcount folgen, durch das sleep > //fügst du sonst eine messungenauigkeit von 1/10 s ein > } > } > }} > </code> > > > Hallo, > > der Code kann wohl so funktionieren, bitte beachte die Sache mit dem Main-Thread. > Der Forenbetreiber hat übrigens code-tags bereitgestellt, um code übersichtlich darzustellen > und Formatierungen nicht zu verlieren. Bitte benutze diese auch. > > Das von Dir auskommentierte weist auf einen richtigen Gedankengang hin. > Irgendwann nach genau 2147483647 Millisekunden läuft der Zähler über nach > -2147483648. Eine Differenzbildung in diesem Bereich bringt natürlich ungültige Ergebnisse und > muß abgefangen werden. Ich würde einfach im Fall zeit<0 keine Berechnung durchführen und auf > die nächste gültige Messung warten. > > Gruß krassos