Der Interrupt, die Hauptschleife und der ganze Rest

OP #2737916
Lesenswert?

Hab hiern 160x104 LCD dem ich per I2C Befehle von nem ATMega schicke. 
Nebenbei frage ich noch einen Resolver sowie dessen Drucktaster im 
Interrupt zur Eingabe ab (kurz/lang gedrückt -> Menüführung) und setze 
entsprechend unübersichtlich die jeweiligen Bits zur weiteren Abfrage in 
der Hauptschleife. Hin und wieder verschluckt die Schleife die Bits und 
mit der Menüführung ist's Essig. Ich habe schon überlegt Teile des 
Ablaufs in die ISR zu legen - diese wird dann aber schnell recht groß 
und vermutl. ziemlich ruckelig.
Wie macht man das am Besten? Ist die Vorgehensweise grundsätzlich ok?
#2737943
Lesenswert?

Joachim ... schrieb:
> Nebenbei frage ich noch einen Resolver sowie dessen Drucktaster im
> Interrupt zur Eingabe ab (kurz/lang gedrückt -> Menüführung) und setze
> entsprechend unübersichtlich die jeweiligen Bits

Dann mache es übersichtlich.

Ein Timerinterrupt fragt die Tasten ab, entprellt sie und setzt Bits für 
das (kurz/lang) Drück-Ereignis. Ebenso fragt er den Encoder ab, 
entprellt und zählt die Pulse seit der letzten Abfrage.

Die Menüführung im Main liest, sobald sie Zeit hat, die Drückbits und 
Zählwerte aus und setzt sie zurück.

Für den Encoder sollten 1ms reichen und für die Tasten sind 10ms 
optimal. Also ein 1ms Interrupt mit ner Zählvariable bis 10.


Peter

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren