Forum: Mikrocontroller und Digitale Elektronik STM32F4 Timer


von Julia S. (Firma: keine) (julia1010)


Lesenswert?

Hi,
ich arbeite wieder an meinen Hürdenlaufspiel und möchte nun eine 
Erweiterung machen. Es geht darum, dass mit LED´s signalisiert wird, 
dass eine Taste gedrückt werden soll. Es gibt mehrere Sequenzen (laufen, 
springen,...) und einen Timer, welcher mir die Endzeit abstoppt. Das 
Spiel läuft im IRQ vom Timer. Funtkioniert alles super. Nun möchte ich, 
dass 2 Leute gleichzeitig spielen können. Die Logik sagt mir, dass es 
nur nacheinander gespielt werden kann, da ja 2 Interupts, die nur 
nacheinander abgearbeitet werden können. Steh ich auf der Leitung und es 
gibt eine einfache Möglichkeit oder funtkioniert meine Logik noch, die 
sagt sie können nur nacheinander.
Weiß jemand einen Ausweg?

von M. N. (Gast)


Lesenswert?

Julia Scheidinger schrieb:
> Weiß jemand einen Ausweg?

Müssen denn Beide in die gleiche Richtung laufen?

von Julia S. (Firma: keine) (julia1010)


Lesenswert?

Sie laufen mit unterschiedlichen Tastenkombinationen, aber sie sollten 
gleichzeitig laufen.

von public (Gast)


Lesenswert?

Hallo Julia,

ich kenne dein Hürdenlaufspiel nicht, deshalb mal ganz ins Blaue 
geraten.
Du hast Tasten, die für laufen und springen stehen, und wertest diese im 
Timerinterrupt aus. Jetzt möchtest du Anzahl der Tasten verdoppeln und 
dafür wieder einen Timer benutzen?

Ich sehe da nur die Möglichkeit alle Taster an einen ADC/Port zu hängen 
und den Spannungsabfall zu messen. Dazu müsste der Spannungsabfall pro 
Taster eindeutig identifizierbar sein (Widerstandswert!).

Andere alternative du rechnest per Software den entstandenen 
Zeitversatz, zwischen den Interrupts, heraus, solltest dann aber immer 
mit etwas Jitter rechnen.

Dritte Möglichkeit, wenn der Controller das kann, bei Eintritt in die 
ISR erhält der entsprechende Interrupt die höchste Priorität (je nach 
Logik auch gern die niedrigere Prio). Dadurch wird der 
schnellere/langsamere bevorzugt...

Beste Grüße
public

von Julia S. (Firma: keine) (julia1010)


Lesenswert?

Ich hab 2 Timer rennen in deren Interrups sich die Spiele befinden. Pro 
Spiel habe ich 3 Tasten, die gedrückt werden müssen. Dann gibt es noch 
den Interrupt von der PS2 Tastatur (höchste Priorität), welcher die 
Tastendrucke erfasst. Die 2 Timer starten gleichzeitig, aber die 
Interrupts werden (natürlich) nur Nacheinander abgearbeitet.
Die Sache mit dem ADC Port verstehe ich nicht. Wo is der Unterschied ob 
ich eine Taste einlese oder den Spannungsabfall messe?

von public (Gast)


Lesenswert?

Sagt dir Spannungsteiler etwas? Klar sagt dir Spannungsteiler etwas... 
:-)

Du müsstest ALLE Tasten an einen Port hängen und den Spannungsteiler 
auslesen. Je nach Tastendruck wird ein Widerstand kurzgeschlossen und 
damit die anliegende Spannung am ADC verändert. Pro Taste musst du einen 
anderen Widerstand nehmen, so dass keine doppelten Zustände existieren.

von Julia S. (Firma: keine) (julia1010)


Lesenswert?

Ok, aber wo löst das die Problematik von von den 2 Interrups, die nur 
nacheinander abgearbeitet werden?

von public (Gast)


Lesenswert?

Du benötigst nur noch einen Interrupt!?

von Juergen G. (jup)


Lesenswert?

Julia Scheidinger schrieb:
> ich arbeite wieder an meinen Hürdenlaufspiel und möchte nun eine
> Erweiterung machen.

Gibts da einen einleitenden Thread dazu?
Wuerde ja gerne helfen, hab aber keine Vorstellung was da passieren 
soll.

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.