Forum: Mikrocontroller und Digitale Elektronik Mehrere Befehle gleichzeitig ausführen


von J. S. (snert)


Lesenswert?

Hallo zusammen,

ich bin grade dabei das AVR Assembler Tutorial zu machen. Bin beim 
Kapittel "Verglaiche". Ich wollte jetzt ein paar LED's blinken lassen. 
Blinken lassen kann ich Sie schon, aber ich will folgendes machen.
Wenn ich den Taster 1 drücke, sollen die ersten 2 LED's, in einem vorher 
bestimmten Muster, blinken. (Stellt ein Blaulicht dar)
Wenn ich den Taster 2 drücke, soll die 4 LED blinken. (Stellt einen 
Blinker dar)
Wenn ich den Taster 3 drücke, sollen beide befehle ausgeführt werden.

Natürlich kann ich jetzt 3 methoden schreiben, eine für Blaulicht, eine 
für blinke und eine die beides verreint. Aber wenn man jetzt immer mehr 
Ausgänge mit solchen Mustern belegt wird es ja irgendwann unmöglich alle 
Möglichkeiten von Verknüpfungen zu erstellen.
Gibt es hier einen Trick oder ähnliches um meine Idee zu realisieren? 
Oder muss ich tatsächlich alle Möglichkeiten selber erstellen?

Ich hoffe man versteht meine Frage und verzeihe mir wenn sie vll. eine 
wirkliche Anfägerfrage ist.

Mit freundlichen Grüßen
Snert
von (unknown) (Gast)


Lesenswert?

Skizziere dir eine Zeitschiene und mach 1-2 Spuren für das Blaulicht und 
1-4 Spuren für das Blinklicht.

Dann schau dir die Tutorials über den Timer und Interrupts an und 
überlege wie du den Timer so benutzt, dass der jedesmal zum Zug kommt, 
wenn eine Aktion auf den Spuren durchzuführen wäre.

Die Taster entscheiden dann nur über globale Variablen/Flags, ob die 
Aktion auch tatsächlich durchgeführt wird.

Bsp:
1
ZEIT [ms] 0  10  20  30  40  50  60  70  80  90
2
----------+---+---+---+---+---+---+---+---+---+-->
3
BLAU1     00000000111111110000000011111111000000...
4
BLAU2     111111110000000011111111000000... 
5
BLINKVR   00000000000011110000000000001111...
6
BLINKVL   00000000000011110000000000001111...
7
BLINKHR   00001111000000000000111100000000...
8
BLINKHL   00001111000000000000111100000000...

In diesem Beispiel wäre ein Timer nötig, der alle 10ms aktiv wird.
von Falk B. (falk)


Lesenswert?

@  J. S. (snert)

>Gibt es hier einen Trick oder ähnliches um meine Idee zu realisieren?

Das Zauberwort heißt Multitasking und ist gar nicht so schwer wie es 
klingt.

MFG
Falk
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.