Sehr gut geeignet als Seed ist bei AVR uninitialisierter SRAM-Inhalt, und dazu gehören auch die 32 Register![]()
Also haste doch ne Taste zur verfügung.Mh genau so habe ich es ja im Grunde. Er mist die Schleifendurchgänge in bis eine Taste gedrückt wird und den wert nimmt er dann für __rseed.
Ja dann Timer starten und laufen lassen.
Wenn die Taste gedrückt wird mit dem Timerwert den Rseed füttern.
Danach RND(irgendwas) und schon haste deinen Zufallswert.
Hier mal ein Codebeispiel wie man es zuhauf im Web findet.
Code:$regfile = "2313def.dat" $crystal = 4000000 Config Portb = Output Portb.5 = 0 Config Pind.1 = Input Dim Z As Byte Dim ___rseed As Word Config Timer0 = Timer , Prescale = 1 Enable Timer0 Start Timer0 Do Debounce Pind.1 , 1 , Generator , Sub Loop Generator: 'Blink-Blink... Portb = 0 ___rseed = Timer0 Z = Rnd(100) ***Hier machste dann was aus dem Wert****** Return
Gruß
Ratber
Sehr gut geeignet als Seed ist bei AVR uninitialisierter SRAM-Inhalt, und dazu gehören auch die 32 Register![]()
Disclaimer: none. Sue me.
Hi,
habe das Programm jetzt mal so übernommen wie du es da stehen hast. bis auf meine Board spezifischen Änderungen(Ports, Frequenz, ...)
Aber trotzdem habe ich JEDESMAL das exakt gleiche Muster!!!
Ich habe es ja schonmal geschrieben das egal welchen Wert ich für __Rseed nun eintrage das Ergebnis von RND() das Gleiche war.
Woran liegt das...?!!?! ich bin echt ratlos..
MfG
Mit wem redest du ?
Dirk oder Meinereiner ?
Gruß
Ratber
Hallo Isator,
Obwohl es ja nur Pseudo-Zufallszahlen sind, dürftest du ein "Muster" beim Aufleuchten deiner LEDs nicht erkennen können. So gut sind sie immerhin, dass sich die Sequenz nicht so schnell wiederholt, dass du das erkennen könntest.Aber trotzdem habe ich JEDESMAL das exakt gleiche Muster!!!
Da muss was anderes sein, was dir die Suppe versalzt.
Stell mal das ganze Prog rein!
Gruss Dirk
Hi Dirk,
ich muss sofort zum Training, habe deshalb nicht so viel Zeit. Ich stell das Programm morgen rein.
Also er erzeugt bei mir ja 6 Zahlen. Diese Zahlen entsprechen halt den Lampen und das Muster erkenne ich schon sehr deutlich. Ich kopier morgen auch nochmal die Zahlen die er generiert. Ich lasse sie nämlich immer auf den PC übertragen.
MfG
Anscheinend redet er nicht mit jedem![]()
Gruß
Ratber
Hi,
@ Ratber: Sry ^^ Eigentlich spreche ich nie jemanden direkt an. Schließlich möchte ich die Community erreichen. Ich hoffe du bist nicht zu sehr gekränkt
So hiermal das Programm:
Die anderen Subs habe ich mal rausgelassen.Do
Taste = Tastenabfrage()
If Taste <> 0 Then
Select Case Taste
Case 1
Call Licht
Case 2
Call Musik
Case 3
__rseed = Zeit
Call Zufall
Case 4
__rseed = Zeit
Call Motor
Case 5
Call Test
End Select
End If
Zeit = Zeit + 1
Loop
[...]
Sub Zufall
Config Portc = Output
Do
X = Rnd(6)
Portc.6 = 1
Portc.7 = 1
Portc.x = 0
Waitms 500
Portc.x = 1
Zeit = Zeit + 1
Print X
Loop
End Sub
MfG
Nö,ich bin nicht gekränkt aber die Art zu diskutieren ist sehr irritierend.@ Ratber: Sry ^^ Eigentlich spreche ich nie jemanden direkt an. Schließlich möchte ich die Community erreichen. Ich hoffe du bist nicht zu sehr gekränkt
Wie du oben siehst weiß man schnell nicht mehr welches Programm du getestet hast.
Zum Programm:
Du nutzt immernoch Statische Werte (Zeit) und hast deswegen die gleichen Werte beim Zufallsgenerator.
Nutz doch mal den Timer wie vorgeschlagen
Da die Zeit bis zum Tastendruck nicht definiert ist bekommmst du so deinen Zufallswert.
Gruß
Ratber
Hallo Isator,
dein Prog scheint ja so ganz o.k.
Allerdings:
Du must ___rseed mit dem Timer laden (wie Ratber geschrieben hat).
Ich würde das dann nicht jedesmal neu machen, wenn in deinem Menue die Taste gedrückt wird, sondern am Anfang des Progs (nur nach dem 1. Tastendruck).
Gruß Dirk
Lesezeichen