Häppchenweise, nicht alles auf einmal.
Die Blinkfunktion ist das wichtigste, da es die einzige Funktion ist die eine ständige Überwachung und Akrion (PIN Toggle) des µC's erfordert.
Die Funktion muß als erstes sauber implementiert werden.
Der Rest regiert ja nur bei Tastendruck.
Da wäre dann die IRQ Auswertung eines Eingangs sinnvoll.
In der ISR wird dann nur eine Zählervariable immer um 1 hochgezählt.
In der normalen Programmschleife wird dann bei Zählerstand = 1 eine Variable fürs Blinken gesetzt.
Bei Zählerstand = 2 eine Variable für die Beleuchtung
Und bei Zählerstand = 3 wird der Zählerstand auf 0 gesetzt und beide Variablen gelöscht.
Danach wird einmal geprüft ob die Variable für die Beleuchtung = 1 oder = 0 ist und dementsprechend der PIN für die Beleuchtung von 0 auf 1 oder von 1 auf 0 umgeschaltet.
Beim Blinken wird das "toggle = 1;" in eine weitere Abfrage gepackt und dort geprüft, ob die Variable fürs Blinken = 1 ist.
Somit lauft die Mimik fürs Blinken nach Zeit, ständig durch.
Aber ob Die LED's wirklich leuchten hängt vom Zustand der Blinkvariable ab.
Das ist so wie wenn Du das Rechtecksignal mit einem astabilen Multivibrator erzeugst und dann einen Transistor als Schalter hast, der das nur weiterleitet wenn an er durchgeschaltet ist.
Bei einem Hardwaraufbau würde man auch genau das machen.
Den Schalter/Taster als Takt für einen binären Zähler bis 3 nehmen (0-2). und dann per logischer Verknüpfung der Ausgangbits für den Zustand 1 und den Zustand 2 die jeweiligen Transistoren durchschalten die einmal die Versorgung der Beleuchtung und einmal das Rechtecksignal des Blinkens weiterleiten.
Aus dem Kopf raus müsste man da mit 2 Flipflops und einem Exklusiv-Oder hinkommen.
Wäre vermutlich auch eine interesannte Prä-Computer Lösungsvariante der Aufgabenstellung.
Lesezeichen