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
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
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
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
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.
>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.
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
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.