Gast
#1563487
Hallo, ich muss folgende Aufgabe in C bewältigen und bräuchte eure Hilfe: Und zwar möchte ich einen Reaktionszeitmesser bauen. Zu Beginn, wird ein Taster betätigt. Dadurch wird ein Timer aktiviert der eine bestimmte Zeitspanne durchläuft (zufällig 1-6 Sekunden warten). Nach der abgelaufenen Zeit beginnen die LEDs zu leuchten und ein zweiter Timer läuft an. Durch erneute Betätigung des Tasters wird der Timer wieder angehalten und die gemessene Reaktionszeit kann ausgegeben werden. Zuerst beschäftige ich mich mit dem Zufallsgenerator. Ich habe mir gedacht, ich nutze einen Timer, der bis zu einem gewissen Wert (CCR0) zählt. Jetzt muss ich aber zuerst überlegen wie lange der Timer zum zählen braucht, also mit welcher Frequenz er arbeitet, oder? Da die SMCLK mit 5MHz arbeitet, ist die zu schnell, somit hab ich BCSCTL gewählt, die im low-mode mit 32kHz arbeitet. Ist das bis dahin richtig/eine gute Lösung? Jetzt teile ich die Frequenz noch und rechne aus, dass der Timer innerhalb einer Sekunde bis 8192 zählt. Wenn ich jetzt dem CCR0-Wert noch eine Zufallszahl in dem Bereich 0-48000 anhänge, müsste der doch zufällig von 1-6 Sekunden zählen, oder? Kann man das so machen? Evtl. bessere Idee, Verbesserungen? Vielen Dank, viele Grüße Phil So sieht mein bisherhiger Programmcode aus: WDTCTL = WDTPW + WDTHOLD; P1DIR = 0xFF; BCSCTL1 = DIVA_2; // XTS; BCSCTL3 = LFXT1S0; TACTL = TASSEL_1 + TAIE; // SMCLK, Interrupt Enable CCTL0 = CCIE; // CCR0 = 8192; TACTL |= MC_1; // Timer im Up Mode // wenn CCR0 erreicht wird #pragma vector=TIMERA0_VECTOR __interrupt void Timer_A0 (void) { P1OUT = 0x00; // LED an CCTL0 &= ~CCIFG; TACTL &= ~TAIFG; }