Hey Leute Ich will folgendes realisieren: Ein Reaktionszeitmessung eines Startenden Athletens. Es wird eine Komplette startsequenz ablaufen ( lautsprecher + soundchip). Ich will mit hilfe eines ATMega16 die reaktionszeit seit dem schuss und dem abdrückens des Athletens vom startblock messen. Abdrücken wird durch einen Drucksensor realisiert. Mein problem ist folgendes die zeitauflösung solte möglichst tausendstel oder genauer sein. wenn ich nur 1 athletenmessen wollte wäre es keinproblem aber ich will 2 paralell messen ( meines wissens hat der ATmega16 aber nur 2 interrupts...) hat irgendjemand eine idee wie ich das realisieren könnte? Entwicklungsumgebeung: avrstudio 4.xxx Programierstprache: Bascom Reaktionsmesser Lastenheft: - 2 Zeiten messen - komplette Startsequenz (bereitsgeplant) - Ausgabe auf einem Display - Gehäuse mit Akku + Ladeschaltung (bereitsgeplant) - Bestzeiten Speicherung (bereitsgeplant) - Messung auf Tausendstel - Einstellungsmöglichkeit der Empfindlichkeit (bereitsgeplant) Würde mich freun wenn ihr helfen könntet und hoffe ich habs einigermasen hinbekommen zu erklären was ich gerne machen würde. hier oder unter : icq:310701744 bzw chris7474@gmail.com könnt ihr mich erreichen danke ;)
1 ms, da brauchst du für den Start-Stop keinen Interrupt, das ist ja unglaublich langsam. Mit 16MHz kann der uC (grob über den Daumen) 16000 Befehle pro ms ausführen, das dürfte reichen. Idee: Interrupt { // 1 ms zählt einen ms-Zähler (long TimeAkt) hoch. } Hauptschleife { sieht nach ob Start ausgegeben ist, Zeitstempel abspeichern (Start[athlet]=TimeAkt) sieht nach, ob Drucksensor von athlet anspricht, Zeitstempel abspeichern (Gestartet[ahtlet]=TimeAkt) berechnet Startdauer[athlet]=Gestartet[ahtlet]-Start[athlet]) wenn fertig: gibt das Zeug auf dem Display aus } Dazu braucht es also nur 1 Timer-Interrupt, der Rest geht per Polling. Und prinzipiell auch noch wesentlich schneller als 1 ms.
Hallo Chris, das sollte auch ohne Interrupt gehen. Tausendstel Auflösung entspricht 1ms. Wenn Du einen ATmega mit 8MHz laufen läßt kann dieser fast 8000 Befehle in dieser Millisekunde verarbeiten. Kritischer sehe ich da den Punkt der Genauigkeit. Standard Quarze haben eine recht hohe Streuung, sowie Temperaturdrift. Um dies genau hinzubekommen ist schon einiges an Aufwand notwendig (Quarzofen, o.ä. ). Ansonsten sollte der Rest kein Problem dartstellen, da der gesamte Vorgang sequentiell geschieht. Grüße Hans-Josef
Super schnelle antwort! Ja das mit den 8000 befehlen ist mir bekannt ich muss aber dann trozdem ienen interrupt für das hochzählen des Zählers mitnutzen? Das problem mit den quarzen is mit bekannt wobei ich auch die möklichkeit hätte an einen Temperaturgeregelten "ultra" genauen quarz zu kommen ;) also ohneweiteres ohne interrupts möglich? ganz normale if abfrage zur stop auslösung? Gruß
Auch dir danke lkmiller ( hab deinen post erst danach gesehn ). Also wenn das ohne weiterres rennt ;) Bedanke mich bei euch super tolles forum. Gruß
>Kritischer sehe ich da den Punkt der Genauigkeit. Standard Quarze haben >eine recht hohe Streuung, sowie Temperaturdrift. Sehe ich jetzt gar nicht so kritisch. Wenn ein Standard Quarzoszillator verwendet wird, habe ich einen Fehler von 50ppm. Also 0,05 Promille. Pro 20 Sekunden wird dann maximal ein Fehler von 1 ms auftreten. Das sollte doch hinnehmbar sein? Zudem betrifft dieser Fehler alle startenden Athleten (wie z.B. auch Gegenwind und bucklige Bahn), da soll dann bloß keiner jammern.
hehe ich selbst binn elektronik azubi werde sicher einen geheizeten quarz findne ^^auserdem faktoren wie gegenwind und unebende bahn silnd bei meiner messung nicht berücksichtigt. ( wird rein nur die reaktionszeit gemessen) und wie schon gesagt wurde es sinnd dann alle vom gleichen betroffen ^^ danke leute ;) werde mich mal melden wenns geklappt hat und ggf bilder so wie quellcoede uppen ;) falls jemand interresiert Gruß
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.