mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Benutzereingaben: polling vs. int


Autor: Armin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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%

Autor: Samuel C. (dragonsam)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: MaWin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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-fa...

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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.