www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Zufallszahlen für PIC in ASM?


Autor: Johannes (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
wie kann ich mit einem PIC 16F630 (Pseudo-) Zufallszahlen erzeugen? Am 
besten ohne äussere Beschltung also nur durch Zuhilfenahme von Assembler 
code?
Ich habe schon gesucht aber nichts gefunden.

...warscheilich weil es unmöglich ist?
Oder?

Autor: Axel H. (axelh)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

> wie kann ich mit einem PIC 16F630 (Pseudo-) Zufallszahlen erzeugen? Am
> besten ohne äussere Beschltung also nur durch Zuhilfenahme von Assembler
> code? Ich habe schon gesucht aber nichts gefunden.
> ...warscheilich weil es unmöglich ist?
> Oder?

Eher weil du nicht Suchen kannst. Du willst doch nicht ernstaft 
behaupten, dass Goolge unter "Pseudozufallszahlen" nichts findet, was 
sich verwerten lässt, oder? :)

Du wird halt immer das Problem mit dem Startwert des PRNG haben, der 
muss irgendwo her kommen und sollte immer ander sein - sonst komme immer 
die gleichen Zahlen raus.

Axel

Autor: Johannes (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke schon mal Axel. Wie man Zufallszahlen generell erzeugt ist mir 
schon klar. Auf PCs unter C ist es ja auch gar kein Problem. Aber 
soetwas für PICs zu machen in Assembler wobei man nur 35 verschiedene 
Befehle zur Verfügung hat...

"
Du wird halt immer das Problem mit dem Startwert des PRNG haben, der
muss irgendwo her kommen und sollte immer ander sein - sonst komme immer
die gleichen Zahlen raus.
"

Das war ja gerade meine Frage. Wobei du auch nicht so toll den Plan 
hast, oder? Wenn man schon immer andere (zufällige) Startwerte hat, dann 
hat man ja sein Ziel schon erreicht. Aus einer zufälligen Zahl eine neue 
Zufällige Zahl zu generieren ist meines erachtens nach sinnlos. Es sei 
den man generiert eine ganze Reihe.

Also die Frage ist immernoch: wie bekommt man einen zufälligen Startwert 
hin?

Autor: Axel H. (axelh)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Das war ja gerade meine Frage. Wobei du auch nicht so toll den Plan
> hast, oder? Wenn man schon immer andere (zufällige) Startwerte hat, dann
> hat man ja sein Ziel schon erreicht. Aus einer zufälligen Zahl eine neue
> Zufällige Zahl zu generieren ist meines erachtens nach sinnlos. Es sei
> den man generiert eine ganze Reihe.

Aus einer zufälligen Zahl eine neue zufällige Zahl zu generieren ist gar 
nicht so trivial, wie das erscheint. Daran sind schon viele gescheitert, 
denn am Ende waren die Zahlen dann bei weitem nicht so zufällig, wie sie 
sein sollten.

> Also die Frage ist immernoch: wie bekommt man einen zufälligen Startwert
> hin?

Mal anders geftagt: was willst du denn eigentlich machen. Letztlich 
kommt es sehr drauf an, wie gut die Zufallszahlen werden sollen und was 
schlimmstenfalls passiert, wenn jemand tatsächlich drauf kommt, welche 
Zahl als nächstes erzeugt wird.

Wenn du einen guten PRNG-Algorithmus hast, dann kann der Startwert pro 
Benutzung auch einfach um eins hochgezählt werden, ohne dass das den 
Zufallszahlen gross schadet. Setzt halt voraus, dass man ein 
EEPROM/FLASH oder so hat, wo man den Wert immer wieder Ablegen kann. 
Dann muss das ganze nur ein einziges einmal initialisiert werden (und 
ggf eine Runden laufen, damit keinr mehr weiss, bei welchem Wert man 
jetzt ist) und ab da wird das Ding bis zum Lebensende Zufallszahlen 
erzeugen können.

Ohne EEPROM/FLASH könntest du z.B ab dem Start einen Zähler laufen 
lassen, der dann als Startwert verwendet wird, wenn ein gewisses 
Ereignis eintritt. Kann man z.B gut machen, wenn man auf "Knopfdruck" 
eine Zufallszahl brauchst.

Also, sag mal, was du eigentlich machen willst....

Autor: Johannes (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Axel,
danke für deinen Beitrag. Das mit dem PRNG-Algorithmus klingt schon 
interessant. Ich werde mal danach suchen. Die Frage ist wie kompliziert 
dieser denn ist. So viel Rechenleistung und Speicher hat der PIC nicht. 
EEROM ist aber vonhanden.
Der Grund des ganzen ist wie immer meine Neugier.

Autor: Axel H. (axelh)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

Viele PRGNs basieren letztlich auf einem rückgekoppelten 
Schieberegister. Und das bekommst jeder einfacher uC problemlos hin. 
Wenn du natürlich den sichereren ANSI-DES-RNG nehmen willst, dann wird 
es auswendiger...

Autor: Ralf Moshage (ego)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Frank L. (hermastersvoice)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
bei http://mondo-technology.com/ ist unter den Tipps auch ein Beispiel 
zu finden.

bye

Frank

Autor: Tcf Kat (tcfkat)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Yo, entweder einen Random-Seed nehmen (Zähler, RTC), oder den letzten 
Wert irgendwo onchip in einem NV-Bereich schreiben (maximale Anzahl 
Schreibzyklen beachten).
Wie Axel schon schreibt, der Aufwand hängt mit dem Anspruch zusammen...

Autor: Johannes (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke an euch alle. Ich denke ich mache es wie in den links beschrieben!

Ciao

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.