hallo Ich bin Anfänger in dem bereich Micro-Controller. Ich versuche einen reaktionstester mit dem MSP430 F449 zu programmieren,alle notwendigen Schritte sind mir klar und sie sind wie folgendes kurzgefasst beschrieben: 1) LED teilt den Anwender dass das gerät für Test zu verfügung steht 2) Anwender betätigt eine Taster ====> LED geht aus 3) LED wird dann automatisch ( ohne betätigung einr Taste) in unterschiedlichen Zeitabstände eingeschaltet . 4)Sobald LED an ist, soll gemessen werden, wie lange ( Zeit) braucht der Anwender zu reagieren ( Taster betätigen ====> dadurch geht die LED wieder aus). 5)........ verschiedene Funktionen werden von LCD ausgegeben : Zahl der Test, Note ........ Was ich nicht mit der Assembler-Sprache machen kann ist der Schritt 3) . Wie kann ich den timer dazu bringeen dass er in unterschiedlichen zufälligen Zeitabständen reagiert ? Mit der Programmiersprache C, man könnte vielleicht " Random " benutzen. Vielen dank im vorraus.
eine PseudoRandom Funktion kannst du auch in assembler programmieren, die funktion ist nicht schwierig, einfach googlen ...
Der Msp 430 geht nur mit 25 Assembler Befehler. Und so ein Befehl gibt es nicht.
Ja, wenn es für alle möglichen Probleme auf der Welt doch bereits implementierte Assemblerbefehle gäbe... Du musst Dir die Zufallsfunktion natürlich aus den vorhandenen 25 Befehlen selbst programmieren !!!
Kannst ja den DCO-Takt als Quelle für die Zufallszahlen nehmen, der geht so ungenau, das ist dann schon fast wirklicher Zufall. ;)
Was bitte ist am DCO-Takt ungenau, zumindest als Quelle für Zufallszahlen? Bei annähernd konstanter Temperatur und konstanter Versorgungsspannung ist die DCO-Drift sehr gering (typ -0,4%/°C und +/-5%/V)
Bei konstanten Bedingungen ja. Aber selbst bei "Zimmertemperatur" muss man den DCO dauernd neu abgleichen, wenn man den UART drüber laufen hat. Der läuft halt gerne weg. Aber das ist ja Off-Topic. Man könnte zur "Zufalls-Taktung" schon verschiedene Taktquellen nehmen, vielleicht sogar noch bissl mit den DCO-Einstellungen spielen. Nach jedem Durchlauf einen neuen DCO-Takt erzeugen, und das Programm selber mit einem Quarztakt laufen lassen. Dann siehts für den Anwender schon recht zufällig aus. Der Fantasie sind bei solchen Spielchen ja keine Grenzen gesetzt, zumal er ja eh ein zufälliges Zeitintervall haben will.
Einfach irgendeinen Timer/Zähler 1:1 mit dem Takt des MSP430 laufen lassen und dessen Wert beim loslassen der (entprellten) Taste als Zufallswert nehmen - sollte nicht so schwer sein... Steht aber mal wieder im Wiki: Zufallszahlen (Wenn der MSP430 das nicht kann nehme ich alles zurück ;) )
das hab ich mir auch seit paar Tagen gedacht, es dürfte keinen problem geben, werde es bald emulieren , mal schauen was es sich ergibt.
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.