Zeitmessung Kategorie: Programmierung (von ChristianK - 12.03.2004 22:04) | ||
| ||
Hallo zusammen, ich habe Probleme eine einigermassen genaue Zeitmessung hinzukriegen. auf 100msec genau würde reichen. Hier die Messfunktion: function strom_messen(string richtung) returns int { halt write_timedate; long summe; messungen = 1; summe = 0; messzeit = messpause; // Vorlauf von Vorprogramm strom_maxwert = 0; string_out(3,2,richtung); strom = ports.adc(div.messport) - div.strom_offset; if strom > (strom_grenzwert+ 150) return 999;// Abbruch, Kurzschluss ?? rblcd.clear(); strom_out(2, 10, strom_grenzwert); string_out(3, 2, richtung); loop { strom = ports.adc(div.messport) - div.strom_offset; // Strommessung if strom > strom_maxwert strom_maxwert = strom; // rblcd.delline(2); //strom_out(2, 0, strom); // Stromwert anzeigen //strom_out(2, 10, strom_grenzwert); //rblcd.goto(4,0); //rblcd.bargraph(strom/2, 100); messungen = messungen + 1; summe = summe + strom; if math.abs(messzeit - time_wait) < 220 // ZwischenTest, schaltet Switch ? { if endschalter_status()==1 // { div.fehlercode = 1; // Falsche Richtung ?? break;// } } if messzeit - time_wait >320 // Messzeit > Wartezeit - 200 msec and endschalter_status()==1 break;//Break wenn Endschalter ein sleep messpause; messzeit = messzeit + messpause; } messzeit = messzeit + 2*messpause; resume write_timedate; return summe/messungen; //Mittelwert zurückgeben } Ich habe schon verschiedenes ausprobiert, die auskommentierten Zeilen LCD-Anzeigen brachten eine gute Sekunde. Priorität des threads hochsetzen hat auch nicht viel gebracht. Eine externer thread mit Zeitmessung brachte auch nicht viel. Ich liege immer noch etwa 1 Sekunde unter dem tatsächlichen Wert. Hat jemand eine Idee wie ich das genauer hinkriegen kann ?? Danke für jeden Tip. MfG ChristianK | ||
Antwort schreiben Antworten: Re: Zeitmessung (von André H. - 13.03.2004 12:51) Re: Zeitmessung (von ChristianK - 13.03.2004 21:49) |