Gast
#147959
Hallooo .... Ich arbeite derzeit an einem Projekt mit einem ATMega64 bei dem soweit auch alles prima funktioniert, nur bereitet mir das UserInterface - also die Steuerung des Projektes - ein wenig Kopfzerbrechen! Kurzerklärung um was es geht: Ein Gerät, das - wenn es eingeschalten ist - in 2 verschiedenen Modi arbeiten kann, und zwischen diesen will ich während des Betriebes jederzeit umschalten können (natürlich soll der derzeit laufende Zyklus des Modus noch fertig durchlaufen werden). Weiters soll das Gerät in den StandBy geschickt werden können, wo es nicht all zu viel Strom verbrauchen sollte (es läuft eh nur der µC). Aus dem StandBy Mode soll es allerdings auch wieder eingeschalten werden können, wobei es danach zuerst abfragen soll in welchem Mode es arbeiten soll. Dazu hätte ich mich folgende Steuerung überlegt: 2 Schalter (Druckschalter, die ihre Stellung auch beibehalten, um nicht Impulse eines prellenden Tasters zählen zu müssen). Einer um den Mode umzustellen und einen um das Gerät in den StandBy zu schicken. Mit dem Konzept an sich bin ich eigentlich eh recht zufrieden, nur weiß ich nicht wirklich wie ich das am besten umsetze - und wäre deswegen über Tipps von euch sehr erfreut ;) Bis jetzt hab ich mir gedacht, ich werd es so (in etwa) lösen: Während des Betriebes werden die Taster gepollt, also durch einen Timer (der sowieso auch andere Aufgaben erfüllen muss) alle 10ms (reicht das?) abgefragt. Falls ein Taster gedrückt wurde wird ein Flag gesetzt, dass in der Endlos-Schleife in der Main-Fkt. die gewünschte Funktionen ausführt. Falls beide Taster gedrückt sind, hat der StandBy-Schalter natürlich die höhere Priorität. Falls das Gerät in den StandBy geschickt wird, werden zuerst alle andere Verbraucher abgeschaltet, ein Ext.Interrupt (an den entsprechenden Pin ist der Schalter für den StandBy angeschlossen) aktiviert und der µC in den SleepModus (welchen am besten??) geschickt wo er darauf wartet durch den Ext.Int wieder geweckt zu werden. Nach dem Wecken würde ich am liebsten einen Software-Reset durchführen (wie mach ich das am besten?) und danach gibt es ein Zeitfenster von etwa 3 Sekunden in dem man den Mode-Taster drücken kann. Falls dies nicht geschieht geht das Gerät in den Mode der vermutlich öfter verwendet wird, falls er gedrückt wurde in den anderen. Was haltet ihr von dieser Idee? Irgendwelche Verbesserungsvorschläge? Komplett andere Idee? Und natürlich würde ich mich freuen, die im Text gestellten Fragen beantwortet zu bekommen ;) mit freundlichen Grüßen, Alexander Höller