MoinMoin, nachdem ich nun endlich mit dem STM32F429Disco zurechtkomme, bin ich auf ein kleines Problem gestoßen. Ich bin grad dabei, ein kleines Spiel zu programmieren, in dem man sich aus 2 Burgen beschießt, quasi ein Ballistiksimulator, ganz einfachst. Nun wollte ich eine Zufallsvariable für den Wind haben. Dafür habe ich mir die UB_RNG_Lib runtergeladen, eingebunden und watt man nich so damit macht gemacht. Funktioniert an und für sich auch soweit, jedoch gibt mir die Zufallsfunktion nach einem Durchlauf immer 4.2949673E9 zurück. Die UB_RNG_Lib greift auf die StandardLib von ST zu, um die RNG-Unit anzusprechen. In der UB kann man obere und untere Schranke für die Zufallszahlen mitgeben, und die lässt die ST_RNG_Lib dann solange Zufallszahlen raussuchen, bis ein Ergebnis innerhalb der Schranken vorliegt. Das Ergebnis wird dann per return zurückgegeben. Beim ersten Durchlauf klappt das alles wie gesagt problemlos. Beim zweiten aber ist die Variable die zurückgegeben wird, bis zum return auf einem "richtigen" Wert (also innerhalb der Schranken), aber meine Variable die die RNG-Funktion aufgerufen hat, nimmt nicht den zurückgegeben Wert an, sondern die oben erwähnten 4.2949673E9. In der main (siehe Anhanng) initialisiere ich in Zeile 115 den RNG und in Zeile 518 ist dann der Aufruf der Funktion. Falls noch weitere #includes fehlen, um mir helfen zu können, sagt einfach Bescheid =) MfG Chaos P.S. manchmal schafft er auch zwei oder selten sogar drei Durchläufe, bevor er die 4undnochwasMilliarden "zurückgibt", aber nachdem er sie zurückgegeben hat, bleibt er hängen
> Wind = UB_Rng_makeZufall(0, 200) - 100;
Mal so zum nachdenken:
Wenn UB_Rng_makeZufall(0, 200) einen Wert von 99
zurückgibt und du dann 100 abziehst bekommst du einen
uint32_t Überlauf. Der Wert ist dann 0xFFFFFFFE was deine
4 Milliarden erklärt;)
Mach es so:
Wind = (float)UB_Rng_makeZufall(0, 200) - 100.0;
Ohja klar, jetzt wo du es sagst, fällts mir wie Schuppen von den Augen! Geändert, und nun klappt es. =) Klar, irgendwie bin ich wohl von nem Int statt nem uint ausgegangen
P.S. Nun hab ich mich vorhin so gefreut das es geht, das ich total vergaß, mich zu bedanken ;-), also vielen Dank, das hat mir sehr geholfen, nun gehts weiter!
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.