Hallo zusammen, ich möchte eine Art Mischpult basteln: mit Drehencodern und Tastern für die Eingabe. Konkret komme ich auf ca. 8 encoder und 50 Taster. Mein Plan sieht vor, das alles einfach per Entprell-RC-Glieder an In-Schieberegister anzuschließen, beispielsweise 74HC165, um so die Daten in meinen uC zu bekommen (irgendein 8bit avr; Im Moment atmega 162; 8MHz osc intern). Jetzt stellt sich die Frage: Sollen die Inputs ständig per Polling abgefragt werden? Man bräuchte ja eine geringe Zykluszeit, um wirklich auch kurze Tastimpulse abdecken zu können. Was wär da sinnvoll... Alternativ könnte man auch zusätzlich alle bits verXodern (74HC86) und das herauskommende Signal an einen Interrupt-Eingang hängen. Dann werden die Schieberegister nur abgefragt, wenn sich auch wirklich was geändert hat. Für die Drehencoder steht zwar was zu einer INT-Methode im wiki. Aber so wie ich das verstanden habe, ist das etwas Anderes als ich vorschlage. Ich möchte ja jedes bit verodern und immer dann Abfragen, wenn sich etwas ändert. Im Wiki geht ein bit an den INT das andere wird dann abgefragt... Entscheidungskriterium kann auch sein, dass das Routing mit den XORs deutlich schwieriger werden könnte. Meinungen?
Armin schrieb: > Sollen die Inputs ständig per Polling abgefragt werden? Man bräuchte ja > eine geringe Zykluszeit, um wirklich auch kurze Tastimpulse abdecken zu > können. Das kürzeste, was du mit einem Taster und sehr viel Training zustande bringen kannst sind ein paar Hunderstel Sekunden. Für dich ist das kurz. Für deinen µC ist das eine halbe Ewigkeit. > Was wär da sinnvoll... > Alternativ könnte man auch zusätzlich alle bits verXodern (74HC86) und > das herauskommende Signal an einen Interrupt-Eingang hängen. Dann werden > die Schieberegister nur abgefragt, wenn sich auch wirklich was geändert > hat. Macht nur dann Sinn, wenn du den µC schlafen legen willst und er mit einem Tastendruck aus dem Tiefschlaf aufwachen soll. > Meinungen? Polling ist mehr als genug. Alle 5 oder 10 Millisekunden mal ein Blick auf die Tasten. Das reicht dicke und belastet den µC mit weniger als 1%
Das dürfte mit Polling überhaupt kein Problem darstellen. Der Controller ist um einiges schneller als du. Selbst wenn er hunderte Signale prüfen muss.
Vergiss deine RC-Glieder, die machen das nur schlimmer wenn der Schaltkreis keinen Schmitt-Trigger-Eingang hat. Entprellen machst du per Software. Siehe http://www.dse-faq.elektronik-kompendium.de/dse-faq.htm#F.29.1 Ein Mischpult soll schnell reagieren, dennoch halte ich Interrupts hier nicht für notwendig, denn auch 64 Inputs abzufragen und mit ihrem vorherigen Zustand zu vergleichen kostet keine 64us, verzögert also auch nicht mehr als 64us, da ist selbst die Prellzeit der Taster länger. Die Frage ist, was der uC noch zusätzlich macht. Den Interrupt könnte man für DMX aufheben. Zum Theme Drehencoder und Interrupt: Man fragt Drehencoder nicht nach Flanken ab, sondern in festen Zeitintervallen, z.B. 1msec, entsprechend der schnellsten Drehung und längsten Prellzeit. Wenn man aber nicht dauernd abfrat, bekommt man keine Info, ab wann man abfragen müsste. Man könnte also jeden Signalwechsel an den beiden Leitungen verodert zu einem Interrupt führen lassen, ab dann läuft die zyklische Abfrage bis man meinst der Drehencoder würde wieder stehen. Aber wenn man offenbar sowieso die Rechenleistung hat, dauernd abzufragen, wozu dann den Interrupt ? Es macht keinen Sinn, höchstens wenn der uC im sleep Strom sparen soll und bei Beginn des Drehens enizelne Pulse fehlen dürften.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.