Forum: Mikrocontroller und Digitale Elektronik Zufallsgenerator in Assembler


von Patrick (Gast)


Lesenswert?

hi!
ich hoffe jemand kann mir weiter helfen?!?!

und zwar soll ich ein sensorspiel mit hilfe eines aduc boards
entwickeln! das sensor spiel soll folgendermaßen funktionieren: ich
habe 5 led's und 5 dazugehörige schalter bzw. taster! der
zufallsgenerator soll nun einen wert ausgeben und die dazu gehörige led
soll aufleuchten, dann bestätige ich den taster von der aufleuchtenden
led.....dann soll die led wieder erlischen! danach läuft der
zufallsgenerator wieder an....nun soll er die davor aufleuchtenede led
nochmals anzeigen und dazu soll noch eine weitere von den 5 leds
aufleuchten, die betätige ich nun auch wieder usw.!!  der ablauf soll
folgendermaßen sein:

1. der zufallsgenerator läuft und gibt dann einen wert aus
2. die zu dem wert gehörige led leuchtet auf
3. die led bestätige ich durch den dazugehörigen taster
4. der wert muss irgendwie gespeichert werden
5. led erlischt und zufallsgenerator läuft erneut an
6. zufallsgenerator stoppt und gibt den vorherigen wert nochmals aus
und dazu soll er noch einen weiteren wert anzeigen
7. dann muss man wieder beide aufleuchteneden leds durch die
dazugehörigen taster bestätigen
8. zufallsgenerator läuft erneut an
9. zufallsgenerator stoppt wieder und zeigt beide zuvor aufleuchtenden
leds wieder an und dazu noch eine weiter led
10. die 3 leds bestätigen usw.


nun stehe ich vor dem problem.....wie mache ich das??? ich hatte
vielleicht gedacht, das rauschen eines transistors mit einzubinden, nur
wie binde ich dann diesen transistor mit in das programm ein? oder gibt
es vielleicht noch andere möglichkeiten??


ich hoffe ihr könnt mir helfen!!


vielen dank schon einmal im voraus!!

gruß patrick

von uboot-Stocki (Gast)


Lesenswert?

Moin,

am Einfachsten ist es wahrscheinlich zu zählen wie oft eine Taste
prellt ... oder die Zeit die vergeht bis die Taste gedrückt wird ...

Gruß

UBoot-Stocki

von Schubi (Gast)


Angehängte Dateien:

Lesenswert?

Das gute alte Senso-Spiel von MB :-)
Ich hab das Spiel auch mal nachprogrammiert mit einem PIC.
Als besonderes Schmankerl kam dann auch noch eine Spielstufe mit zwei
LEDs gleichzeitig dazu.
Vielleicht interessiert jemand ja der Quelltext (wahrscheinlich sehr
unübersichtlich, eines meiner ersten Versuche in Assembler).
Foto ist auch dabei.
Bei Bedarf muss ich mal nach dem Schaltplan suchen (einzige
Besonderheit der Schaltung: deaktiviert sich nach einem einstellbaren
Zeitraum selbst, zwecks Stromsparens).

von Thomas Strauß (Gast)


Lesenswert?

Hallo Patrick,

ich würde einen pseudostochastischen Zufallsgenerator programmieren für
einen Prozessor/Mikrocontroller oder ein
Schieberegister+Exclusiv-Oder-Gatter einsetzen.

Ohne Prozessor: 65Bit-Schieberegister (zusammengesetzt aus 64Bit+1Bit
aus der Standard-HCMOS-Serie HC74HCXXXX)oder CMOS 4031

der Ausgang des 64bit-Schieberegisters liegt am Eingang des
1-Bit-Schieberegisters (nur 1 Flip-Flop, Baustein 4006 oder ähnlich)

der Ausgang des 1-Bit-Schieberegisters liegt am ersten Eingang eines
Exclusiv-Oder-Gatters, der Ausgang des 64bit - Schieberegisters liegt
am anderen Eingang des Exclusiv-Oder-Gatters

der Ausgang des Exclusiv-Oder-Gatters liegt am Eingang des
64bit-Schieberegisters

Es liegt also ein Ring-Schieberegister mit 65 Flip-Flop (eines kann 1
Bit speichern, d.h. insgesamt 65Bit)

die letzten beiden Bits werden Exclusiv-Oder verknüpft und der Ausgang
des letzten Flip-Flops ist mit dem Eingang des ersten verbunden

die Schaltung, die ich mal mit einem 4031 und einem 4006 (alte
CMOS-Serie) aufgebaut hatte, gab eine gute Rauschquelle ab, wenn die
Initialisierung der Bitkette gut war. Das ist etwas problematisch - bei
jedem pseudostochastischen Zufallgenerator!

Ich unterbrach die Rückkopplung zum ersten Flip-Flop und berührte den
Eingang mit einem Finger mehrmals. Dann schloß ich wieder die
Rückkopplung und hatte dann ein perfektes Rauschen (weißes Rauschen).

In deinem Fall müsste man die Schaltung derart abändern, daß innerhalb
der Bitkette ein 8bit-Seriell zu Parallel - Schieberegister einzubauen
wäre; nach Anlegen eines passenden Pegels an diesen Chip werden dann 8
Bits an 8 Ausgängen zum Ablesen bereit gestellt; an 5 von diesen können
z.B. LEDs angeschlossen werden...

Ein MCU-Programm macht im Prinzip dasselbe wie die Hardware-Variante:

eine Menge Bits werden im Kreise rotiert (über Akku + Carry-Bit +
Speicher) und zwei dieser Bits dieser Bitkette werden mit einem
Exclusiv-Oder-Befehl verknüpft; das Resultat wird wieder in den Anfang
der Bitkette geschoben; 5 Bits aus dieser Bitkette müssen dann an
Portpins ausgegeben werden. Am Anfang ist wieder das Problem - eine
Initialisierung der Bitkette muß so sein, das ein möglichst perfektes
Rauschen entsteht (Aktiv-Box an Portpin anschließen und testen)

Gruß Thomas

von nestandart (Gast)


Lesenswert?

http://www.tuhh.de/~setb0209/cpu/avrlfsr.html

http://www.dvanhorn.org/AvrSoftware/

und ich werde es tun:

einen zener diode -> verstärker -> bin-zähler -> PORTB

von nestandart (Gast)


Lesenswert?

ja, noch was...

IN R16,T0CNT

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
Noch kein Account? Hier anmelden.