Guten Abend! Ich hab auch mal wieder eine Frage. Und zwar... Ich versuche gerade eine ordentliche Zufallszahl zu erstellen. Verwendeter Controller ist ein Atmega48, AVR Studio, GCC, Pollin-Board. Ich wollte eigentlich einen offenen Pin des ADC einlesen, und das unterste Bit benutzen, um die Zufallszahl zu erstellen. Als Referenzspannung hatte ich die internen 1,1V gewählt, um auch "leiseres" Rauschen mitzukriegen. Jetzt kommt aber das, was ich nicht verstehe: in dem Register des ADC steht immer 0x3FF (1023)! Ich schnappte mir also mein Scope und messte (?) die Spannung am ADC-Pin nach. Beim Berühren des Tastkopfes ging der Wert des ADC dann auf 0x00 runter, beim Lösen des Tastkopfes ging der Wert dann wieder auf 1023 hoch. Ich versteh aber nicht warum! Das find ih wirklich seltsam... Würde mich darum freuen, wenn mich jemand da aufklären könnte. Ich dachte immer, daß das so eine gängige Methode wäre, um an Zufallszahlen zu kommen... Danke schonmal, Gruß
Hallo, hänge mal den Pin an 2 hochohmige Widerstände (250k) dann bekommst du bestimmt auch ein rauschen. Das immer ein Wert anliegt, liegt an den Leckströmen der Transistoren. die P-Kanal teile sind meistens "undichter".
>Ich dachte immer, daß das so eine gängige Methode wäre, um an Zufallszahlen >zu kommen... Das ist eine Schwachsinnsmethode um an Zufallszahlen zu kommen. Bei hochohmigen Eingängen fängt man sich meistens zuerst einmal 50Hz oder 100Hz periodische Signale vom Netz ein. Damit lässt sich kaum ein Zufallsgenerator bauen. Bau dir einen Rauschgenerator mit Transistor oder Z-Diode und OP dahinter. Das dürfte wesentlich bessere Ergebnisse bringen.
Hi und danke erstmal für die Antwort. @kein Gast Mit "2 Widerständen" meinst du dann wahrscheinlich einen Spannungsteiler, nech? Die Idee hatte ich auch schon, aber noch keine passenden Widerstände gefunden (meine Ordnung...). Kannst du mir das mit den Transistoren mal näher erklären oder die Stelle nennen, wo ich das nachlesen kann? Ich Datenblatt hatte ich die Seite mit dem "Analog Input Circuitry" schon vor mir. Schon die Dinger, wo IiH und IiL dran steht diese Transistoren? Und warum ging die Spannung dann runter, als mein Scope dadran war? Ich hatte gedacht, daß die Eingänge da mit 1MOhm hochohmig genug wären... Gruß
holger schrieb: > Das ist eine Schwachsinnsmethode um an Zufallszahlen zu kommen. jaja, locker bleiben. Wenn du mir mit nicht-zyklischer Abfrage des untersten Bits 50 Hz rekonstruieren kannst verneig ich mich. Ich werde mal ein paar tausend Werte aufnehmen und mir die Verteilung anzeigen lassen. Wenn sich da wirklich ein erkennbares Muster ergibt, was die Anwendung in der Lampe eines Kinderzimmers ausschließt, frag ich nochmal nach ;) Dennoch danke für die Idee mit der Z-Diode! Gruß
holger schrieb: > Bei hochohmigen Eingängen fängt man sich meistens zuerst einmal > 50Hz oder 100Hz periodische Signale vom Netz ein. Ist doch super, da kann ich den Phasen jitter von Clock und Netzspannung nutzen ;)
>jaja, locker bleiben. Ich hab immer ne Schraube locker;) >Wenn du mir mit nicht-zyklischer Abfrage des >untersten Bits 50 Hz rekonstruieren kannst verneig ich mich. Ich werde >mal ein paar tausend Werte aufnehmen und mir die Verteilung anzeigen >lassen. Jo, mach mal. GCC kennt übrigends auch eine rand() Funktion. Für einfache Sachen reicht die auch.
holger schrieb: > GCC kennt übrigends auch eine rand() Funktion. Das nutzt ich übrigens auch meistens (oderTT800). Bei Start nutzt ich einen Wert vom EEPROM der dann mit der neu generierten zahl überschrieben wird. So ist auch nach einem Spannungsausfall die Folge zufällig (zumindest für einen Menschen).
holger schrieb: > GCC kennt übrigends auch eine rand() Funktion. > > Für einfache Sachen reicht die auch. Genau. Die bringt nur nach dem Reset zufällig immer dieselbe Zahl. Wenn man diese Funktion aber unbestimmt häufig aufruft, erhält man eine richtige Zufallszahl. So z.B.: while (!Usart0Connect()) { rand(); } Die Schaltung hängt per USB am PC und wartet darauf, daß ein Programm gestartet wird und einen Connect zum AVR macht. Und solange wird rand() ausgeführt. Das ergibt immer eine andere Zufallszahl. Sinngemäß kann man das auch mit einer Taste machen. Oder einem Kondensator am Komparator. mfg.
Jo, die rand()-Funktion kenn ich auch. Ich wollt aber gern einfach mal etwas anderes probieren. Und sei es nur des Lerneffektes wegen :) . @kein Gast jetzt hast du mir die Sache aus deinem obigen Post aber immer noch nicht näher erklärt :) . Ich habe jetzt mal einen Spannungsteiler aus 2x470k gebaut. Jetzt messe ich sehr zuverlässig Vref/2. Wenn das so deine Idee war, dann bin ich glaub ich glaub ich zu doof :) .
Joachim B. schrieb: > Jetzt messe > > ich sehr zuverlässig Vref/2. Das war auch nicht anders zu erwarten. Wenn ich einen offenen Eingang messe, der wirklich in der Luft hängt, dödelt der ADC-Wert auch immer nur um +- 5 hin und her. mfg.
Joachim B. schrieb: > Jetzt messe > ich sehr zuverlässig Vref/2. Wenn das so deine Idee war, dann bin ich > glaub ich glaub ich zu doof :) . Das war nur so eine Schätzung, nimm doch mal 2MOhm. Aber bitte nicht hauen wenn es nicht geht. Ist nur eine Idee... wie gesagt nutzte ich auch meist rand()
Thomas Eckmann schrieb: > Das war auch nicht anders zu erwarten. Nee, stimmt. Ich bin ja auch nur einem Vorschlag gefolgt, der grundsätzlich ja gar nicht so unplausibel war. Ein sehr hochohmiger Spannungsteiler ist ja ähnlich wie ein offener Pin... > enn ich einen offenen Eingang messe, der wirklich in der Luft hängt, > dödelt der ADC-Wert auch immer nur um +- 5 hin und her. Hast du's gut :) . Eben das war/ist ja mein Problem. Wenn ich den Pin wirklich komplett offen lasse zieht er sich immer auf Vref hoch grübel
>Eben das war/ist ja mein Problem. Wenn ich den Pin >wirklich komplett offen lasse zieht er sich immer auf Vref hoch grübel Vieleicht hast du ja Dreck auf der Platine. Reste vom Flussmittel z.B. Der ADC beim AVR hat meine ich so 100M Ohm Eingangswiderstand. Wenn du dir Störungen auf dem ADC einfangen möchtest häng doch einfach mal ein 2m Kabel an den Eingang.
Ach das ist doch alles Mist :) . Ich ess mein Penne Gorgonzola und dann überleg ich mir was neues... Danke euch und gute N8!
Was noch helfen kann ist den ADC clk hoch drehen. Aber ob man mit diesen dreckigen Tipps auch ein wirklich dreckiges Rauschen zu bekommt wage ich zu bezweifeln.
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.