Forum: Mikrocontroller und Digitale Elektronik Der Interrupt, die Hauptschleife und der ganze Rest


von Joachim .. (joachim_01)


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?

von Peter D. (peda)


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

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.