Forum: Mikrocontroller und Digitale Elektronik Reaktionszeit ermitteln


von Chris (Gast)


Lesenswert?

Hi, ich hab noch nicht viel Ahnung von Assembler, muss aber einen 
Reaktionstester fürn Mikrocontroller programmiere. Man startet mit einer 
bestimmten Taste, dann muss nach ner zufälligen wartezeit eine LED 
leuchten. Sobald die LED leuchtet, muss die testperson den taster so 
schnell wie möglich drücken und die reaktionszeit muss ausgegeben 
werden. Mein Problem ist, dass ich nicht weiß wie ich einen Takt für die 
Ermittlung der Zeit erzeugen kann. Als vom Zeitpunkt an wo die LED 
aufleuchtet. Kann mir jemand eine einfache Lösung bieten? Die Zeit muss 
in 1/100 sec ausgegeben werden

von Jack B. (jackbraun)


Lesenswert?

>Hi, ich hab noch nicht viel Ahnung von Assembler, muss aber einen
>Reaktionstester fürn Mikrocontroller programmiere.

Wieso "muß"?

Hier kannst Du Dich informieren:

http://www.mikrocontroller.net/articles/AVR-Tutorial:_Uhr

von Löti (Gast)


Lesenswert?

Also theoretisch ganz einfach: gleichzeitig mit der LED startest Du 
einen Timer des AVR. Der Knopfdruck stoppt den Timer und dann rechnest 
Du anhand der Frequenz des Timers zurück. Wie Du mit dem Timer umgehen 
musst, steht hier:
http://www.mikrocontroller.net/articles/AVR-Tutorial

von Peter D. (peda)


Lesenswert?

Chris wrote:

> dann muss nach ner zufälligen wartezeit eine LED
> leuchten.

Das ist ein ernstes Problem, dessen Lösung sehr aufwendig sein kann, je 
nach geforderter Güte des Zufalls.


> Mein Problem ist, dass ich nicht weiß wie ich einen Takt für die
> Ermittlung der Zeit erzeugen kann.

Das ist kein ernstes Problem. Du hast Timer im MC, benutze einen davon 
(siehe Tutorial).


Peter


von Magnus Müller (Gast)


Lesenswert?

Peter Dannegger wrote:
> Chris wrote:
>
>> dann muss nach ner zufälligen wartezeit eine LED
>> leuchten.
>
> Das ist ein ernstes Problem, dessen Lösung sehr aufwendig sein kann, je
> nach geforderter Güte des Zufalls.

Man kann ja einfach die Dauer des Tastendrucks messen, die Reihenfolge 
der Bits dieses Messergebnisses umdrehen, und schon hat man eine 
"zufällige" Zahl zur Verfügung.

Gruß,
Magnetus

von Chris (Gast)


Lesenswert?

Ich bin noch nicht soweit das ich weiß was "out" das r vor rcall oder 
rjmp und ldi bedeutet.

von Peter D. (peda)


Lesenswert?

Chris wrote:
> Ich bin noch nicht soweit das ich weiß was "out" das r vor rcall oder
> rjmp und ldi bedeutet.

http://www.avr-asm-tutorial.net/avr_de/beginner/commands.html


Peter

P.S.:
Immerhin wissen wir jetzt wenigstens, daß Du einen AVR (welchen ?)
benutzen willst.

von Chris (Gast)


Lesenswert?

SRy, aber für was steht AVR? xD Ich hab halt nen Mikrocontroller vom 
Lehrere mitbekommen, welcher typ es ist muss ich nachschaun

von Chris (Gast)


Lesenswert?

es ist der 8051, wir haben eine Formkelsammlung mit SPrungbefehlen etc. 
ausgeteilt bekommen, da ist aber niergsn das Zeug ausm Tutorial 
beschrieben.

von Jack B. (jackbraun)


Lesenswert?

>es ist der 8051, wir haben eine Formkelsammlung mit SPrungbefehlen etc.
>ausgeteilt bekommen, da ist aber niergsn das Zeug ausm Tutorial
>beschrieben.

Das glaub ich gerne ;-)

Schau mal bei erikbuchmann nach, da gibts ein Tutorial für den 8051.

von Peter D. (peda)


Lesenswert?

Chris wrote:
> es ist der 8051, wir haben eine Formkelsammlung mit SPrungbefehlen etc.
> ausgeteilt bekommen, da ist aber niergsn das Zeug ausm Tutorial
> beschrieben.

Jau is kein Wunder, das Tutorial is AVR.

Deshalb auch mein Schluß aus RCALL, OUT, LDI, das sind nämlich 
AVR-Befehle.


Is aber kein Problem, nimmste eben 8051 Befehle, auch die kann man 
lernen:

http://www.erikbuchmann.de/


Peter

von Chris (Gast)


Lesenswert?

danke für die Tipps, hab halt bis jetzt nur gelernt wie man schleifen 
macht xD

von Ralph (Gast)


Lesenswert?

Ist in der Aufgabenstellung explizit Assembler verlangt ?

Wieviel Zeit hast du um das Programm zu erstellen ?

von Chris (Gast)


Lesenswert?

ja nur assembler, ich hatte um die 2-3 monate zeit hab jetzt aber nur 
noch 2 wochen xD

von Ralph (Gast)


Lesenswert?

Na dann nimm dir mal für die 2 Wochen nichts anderes mehr vor.

Hättest du C benutzen können, dann hättest du mit deinem Wissensstand 
durchaus noch eine gute Chance gehabt.

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
Noch kein Account? Hier anmelden.