Forum: Mikrocontroller und Digitale Elektronik viele Eingänge als Taster abfragen ohne Pollen


von Jens Plappert (Gast)


Lesenswert?

Hey Leuts, wenn man so um die 20 Taster überwachen muss, auch für eine 
Flüssige Bedienbarkeit des Gerätes, aber nicht unbedingt Resourcen zum 
endlosen Pollen übrig hat, wie würdet ihr da vorgehen?

Mir kam nun die Idee eben mit jedem Taster ausser einem Portpin noch den 
externen Interupt-Pin mit anzusteuern.

Oder meint ihr es würde mehr Sinn machen eine Matrixtastatur über einen 
Timer abzufragen und den Timer/ADC-Interrupt zu benutzen?

Da Ich mit PIC im DIP-Gehäuse Arbeite und das Projekt recht viel 
Resourcen braucht, muss ich eh einen "Dicken" PIC benutzen, der also 
sowieso viele Pins hat. (Viel flash gibts da eben auch nur mit viel 
Pins, was ja auch meistens Sinn macht).

Was haltet ihr da für die geschicktere Variante?

Greets, Jens

von ARM-Fan (Gast)


Lesenswert?

Ich würde da ganz klassisch vorgehen.

Sprich, Pollen (und Entprellen) über Timerinterrupt oder Task
falls RTOS benutzt wird. Die Abfrage von den paar Tasten in Abständen
in der Größenordnung von 10ms tun keinem Controller der Welt und keinem
Programm weh.

Keine Angst. Die Ports nutzen sich beim Pollen auch nicht ab ;-)

von Tommy B. (tommy1960)


Lesenswert?

Taster mit OR verknüpfen und an INT0 etc. anschließen...

von Markus B. (Firma: Embedit Mikrocontrollertechnik) (_mb_)


Lesenswert?

Controller mit PCINT nehmen, also zb Mega644 o.ä.
Da löst jeder Tastendruck einen Interrupt aus. Pollen braucht man da 
nicht

von crazy horse (Gast)


Lesenswert?

man muss sowieso was gegen das Prellen tun.
Timer alle 10 0der 20ms, (der läuft sowieso immer für irgendwas), Ports 
einlesen, mit altem Stand vergleich, Flags setzen, wenn was passiert 
ist. Kostet dich 0,xx Prozessorzeit. Was das immer alles soll...

von AVRFan (Gast)


Lesenswert?

>aber nicht unbedingt Resourcen zum
>endlosen Pollen übrig hat, wie würdet ihr da vorgehen?

Ich würde mir überlegen, dass es reicht, die Taster z. B. alle 10 oder 
20 ms abzufragen, anschließend die zu erwartende zusätzliche 
Prozessorlast durch eine entsprechende Rechnung abschätzen, mir das 
Ergebnis ansehen, feststellen, dass die Last so minimal ist, dass man 
sie praktisch vernachlässigen kann, mich dafür entscheiden, die 
Tastenabfrage so wie oben genannt zu implementieren, und das Problem für 
erledigt betrachten.

von Jens Plappert (Gast)


Lesenswert?

Allright. Danke für eure Meinungen!

von Falk B. (falk)


Lesenswert?

@ Jens Plappert (Gast)

>Hey Leuts, wenn man so um die 20 Taster überwachen muss, auch für eine
>Flüssige Bedienbarkeit des Gerätes, aber nicht unbedingt Resourcen zum
>endlosen Pollen übrig hat, wie würdet ihr da vorgehen?

Was bitte verbraucht beim Pollen von popeligen 20 Tasten nennenswert 
Resourcen? 0,1% CPU Last? Egal ob per Schieberegister oder Tastenmatrix, 
der Aufwand, die Tasten im 10..20mS Raster zu pollen geht gegen Null. 
Mach es also so.

MFG
Falk

von Jens Plappert (Gast)


Lesenswert?

KK, thx.

von Jens Plappert (Gast)


Lesenswert?

Problem liegt darin dass ich immernoch in dem Bereich ein Anfänger bin, 
und Pollen gleich mit ner Endlosschleife verbinde. Aber ich glaube ich 
sollte mir so langsam doch mal die Timer anguggen. Hab die ehrlich 
gesagt bisher noch nie benutzt oder gebraucht. Aber tut not.

von David (Gast)


Lesenswert?

Jens Plappert
Naja es muss ja je nach applikation überhaupt nicht schlecht sein, das 
ganze in einer endlosschlauffe zu lösen. Wenn die zeitkritischen 
aufgaben über interrupts höherer priorität gehen, ist dies nicht 
wirklich problematisch (ich schmeiss vielfach die zeitunkritschen sachen 
alle zusammen in eine endlosschlaufe...), zumal man (naja zumindest ich) 
grundsätzlich zu wenig timer hat... Nachteil, ist natürlich der höhere 
stromverbrauch... da man den controller nicht einfach in den IDLE setzen 
kan, aber der ist meist nicht wirklich relevant...

von Bensch (Gast)


Lesenswert?

Man könnte natürlich auch 3 Schieberegister 74HC165 nehmen, dann spart 
man viele Leitungen und Ports. Dafür ist der SPI eigentlich da. 
Handhabung wie schon beschrieben (alle 10ms einlesen usw.).

von Jens Plappert (Gast)


Lesenswert?

Hmm, mit den Registern wärs natürlich auch noch ne idee. Stromverbrauch 
selbst ist eigentlich total wurschd. Da hängen noch 7-Segmenter, 16 
Relais, Pro Relais eine LED und dann noch n kleines LCD dran. Wird auch 
nur Live auf der Bühne laufen, also kommts aufn paar uA vom Controller 
her echt nich mehr an ;-)

Danke auf jeden Fall für eure Beteiligung!

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

>Stromverbrauch selbst ist eigentlich total wurschd.

>Wird auch nur Live auf der Bühne laufen,...

Das ist auch ´ne Einstellung... Hut ab!

von Falk B. (falk)


Lesenswert?

@ Jens Plappert (Gast)

>Hmm, mit den Registern wärs natürlich auch noch ne idee. Stromverbrauch
>selbst ist eigentlich total wurschd.

Hast du ein Vorstellung, wieviel so ein Schieberegister in CMOS 
Technologie verbraucht? Praktisch gar nichts! Mikrowatt und weniger.

MFG
Falk

von Jens Plappert (Gast)


Lesenswert?

Es ging mir jetzt ja auch nicht um den Stromverbrauch der Register, 
sondern um die weiter vorne beschriebene "Problematik" des 
Energieverbrauchs beim Pollen.

Bei Netzbetrieb sind die paar mA ja eh sowas von wurschd.

Das ein CMOS-Register selbst einen Strom gegen Null braucht wusst ich 
aber ;-)

von Falk B. (falk)


Lesenswert?

@ Jens Plappert (Gast)

>Es ging mir jetzt ja auch nicht um den Stromverbrauch der Register,
>sondern um die weiter vorne beschriebene "Problematik" des
>Energieverbrauchs beim Pollen.

???
Was glaubst du, wie lange die CPU arbeiten muss, um die paar Taster (wie 
auch immer) zu pollen? 1ms, eher weniger. Und vor allem, egal was sie 
sonst macht den Strom verbraucht sie so oder so, auch in Warteschleifen 
etc.

Sleep Mode

Nur damit kann real Strom gespart werden (oder duch langsameres Takten).

MFG
Falk

von Jens Plappert (Gast)


Lesenswert?

Travelrec

>Stromverbrauch selbst ist eigentlich total wurschd.

>Wird auch nur Live auf der Bühne laufen,...

Das ist auch ´ne Einstellung... Hut ab!



Ganz ehrlich: Soll ich mir bei ner Heavy-Metal Live-Produktion mit allem 
was an Pyro- Licht- und Soundshow dazugehört gedanken über mA machen?

Allein mein Röhrentopteil verbraucht in ner Minute so viel Heizstrom 
dass wohl zig Batteriegeräte Jahrelang davon leben könnten.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

>Ganz ehrlich: Soll ich mir bei ner Heavy-Metal Live-Produktion mit allem
>was an Pyro- Licht- und Soundshow dazugehört gedanken über mA machen?

Nein, nicht um die mA mache ich mir Sorgen, sondern um die saloppe Art, 
mit der Du an das Design von "Bühnentechnik" herangehst. Nicht, daß Du´s 
nicht hinbekommen würdest, aber es hört sich alles so nach Gewurstel an: 
"Hauptsache geht irgendwie", und soetwas hat auf einer Bühne eigentlich 
nichts zu suchen, es sei denn, Du bist gut versichert, was den Anderen 
aber nichts nützt.

von Jens Plappert (Gast)


Lesenswert?

Na, ich hab schon n paar Gerätle gebaut die aushc schon ne Zeitlang ihnr 
Kragen tun. Ich bezweifle mal dass mir so schnell eine Dummheit 
unterkommt in der eine Looper-Schaltung euer fängt. Nur weil ich mir 
jetzt nicht über jedes mA im Digitalteil gedanken mache (was hier auch 
völlig unnötig ist) heisst das ja noch lange nicht dass ich keine 
Betriebssicheren Schaltungen aufbauen kann.

Dein Rückschluss klingt eher, also ob eine Schaltung nur dann sicher 
wäre, wenn man wirklich alles in der kleinsten Einheit durchgerechnet 
hat

Mein Röhrenamp ist auch selbstgebaut und tut seit n paar Jahren ohne 
größeren Ausfall.

Wie gesacht, is ja ned bös gemeitn, aber wie du auf die Schlussfolgerung 
kommst ist mir unklar.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Du sprichst von Dir als Anfänger in der Profgrammiertechnik. Als ei 
solcher solltest Du Dir ernste Gedanken um die Betriebssicherheit Deines 
Programms und der um den Controller gestreuten Hardware machen. Das hört 
sich für mich nicht ganz so an. Nichts für ungut, aber was kann ein 
spinnendes Programm oder eine wild prellende Taste an Deinem Projekt 
anrichten? Was kommt hinten dran an Deine Relais?

von juppi (Gast)


Lesenswert?

hallo Jens Plappert

>Travel Rec
>Was kommt hinten dran an Deine Relais?

der mann hatt recht das ist das wichtigste!

Ich kenne deine Szene und bin darin heute noch aktiv.
die gesetzestreue ist mir bekannt.
Früher Rockmusik und technik (auch auf größeren veranstaltungen)
Wir hatten auch nicht immer VDE abgenommene geräte.
private Einzelgeräteabnahme ist für die Musikbranche
auch nicht teuer
Wenn du eine Kontrolle bei einer Veranstaltung mitgemacht hast wirst du 
mich verstehen.
das ende sind immer industriegeräte.
eigene arbeit nieschenprodukte (nur ansteuerung,keine Leistungsteile)
Jetz zurm fach.
Bei relais ausgabe kannst du pollen wie du willst.
die relais sind bestimmt größer und haben bestimmt 20-70 ms
anzugzeit noch höher abfallzeit.

Mache aber weiter.
wer ein hobby hat, macht nicht andere dummheiten

von Jens Plappert (Gast)


Lesenswert?

Es geht bei dem Abfragen nicht ums direkte Relais schalten, sondern ums 
erstellen von Presets.

Der Looper schaltet ausschliesslich NF-Signale, also weder Leistungs- 
noch Pyrotechnik. Das schlimmste was mir bei einem Spinnenden Gerät 
passieren kann ist, dass ich mein Kabel von Funke und Looper wegnehm und 
Trocken in den Amp gehe.

Von daher halte ich das für recht irrelevant.

Vielleicht auch noch zur info: Ich bin zwar ein ziemlicher Anfänger was 
Hardwarenahes Programmieren angeht, aber traue mir als ausgebildeter 
Elektroniker doch wenigstens zu "eine Kiste zu bauen die nicht alles um 
sich rum zerlegt".

Ne kleine VDE-Prüfung kann ich hier in nem lokalen Betrieb zum 
freundschaftspreis bekommen, und werde das auch machen, sobald die 
gesamte Anlage fertig ist.

von Uwe B. (Firma: TU Darmstadt) (uwebonnes)


Lesenswert?

Manche I2C Portextender koennen einen Interrupt setzen, wenn sich eine 
Leitung aendert.

von Jens Plappert (Gast)


Lesenswert?

Ja, daran hatte ich auch schonmal gedacht, aber ein richtiger extender 
wird mir dann dafür im endeffekt zu teuer/aufwändig/schwer beschaffbar. 
Die Lösung wäre sicherlich eine der elegantesten, aber wie ich finde, 
für den all Overkill

von Bernd R. (Firma: Promaxx.net) (bigwumpus)


Lesenswert?

Ich habe die restlichen Antworten nicht gelesen, aber meine Realisation:

Habe ich vor Jahrzehnten mal gelesen, hier wird die Taste schnell 
identifziert, weil die Matrix einfach schnell umgedreht wird.

Der PIC hat auf PortB.4-7 den Interrupt on Change.
Da schließe ich 4 Leitungen zu je 5 Tasten an (Zeilen).
Die 5 Spalten der 20 Tasten lege ich dann auf 5 Port-Pins.
Pull-Up auf PortB einschalten, PortB.4-7 auf Eingang schalten, die 5 
anderen Port-Pins auf Ausgang schalten und mit einem Pull-Down versehen 
und auf "0" schalten. PortB einlesen (Dummy-Read) und den Interrupt 
aktivieren.

Wird jetzt eine Taste gedrückt, wird der Interrupt ausgelöst.
Ich würde dann einen 50ms Timer starten, der den nächsten Int auslöst.
Nachsehen, welcher Port.B-Pin auf Masse geschaltet wurde, mehr oder 
weniger als einer - Exit.
Die 5 Ports auf Eingang umschalten und PortB auf Ausgang. Port B4.7 alle 
low, nur der gedrückte Zeile auf high, die 5 Ports einlesen und die eine 
gedrückte Spalte (=high) suchen. Fertig.

Beim Loslassen eigentlich das gleiche, jeweils ca. 50ms zum Entprellen.
Hier gibt es kein N-Key-Rollover, ist nur Ein-Tasten-Eingabe.
Ich setze dann ein Flag, daß eine Taste neu gedrückt wurde und speichere 
die Taste ab, soll sich die Hauptroutine um den Rest kümmern.

Beim Pollen kann man sich eher mal beim Timing die Karten legen, wenn 
man aber die Ints und Timer geschickt einsetzt, geht es fast von selbst.

von juppi (Gast)


Lesenswert?

hallo Jens Plappert

nicht gegen dich .
leider ist mir bekannt das die schutzmßnahmen,gerade in deiner 
Musikrichtung sehr ungenau befolgt werden.
Ich hatte immer einen zusätzlichen FI im system,nur um mich sicherer zu
fühlen.
Leider ist es nicht so das im Fall der Fälle die ordendliche ausführung 
gilt,sondern die VDE-prüfung.
Ich kenne sehr viel Industriegeräte welche VDE mäßig zweifelhaft sind ,#
aber sie haben eine serienprüfung.
damit wir uns nicht falsch verstehen

die 60 ziger waren meine jugendjahre
denke daran Pyrotechnik--spezielle anforderungen
oder nur Tischfeuerwerk
nachsatz
bist du "nur" techniker oder auch musiker

tschüß

von juppi (Gast)


Lesenswert?

hallo Bernd Rüter

damit kann eim programmieranfänger nichts anfangen

von Jens Plappert (Gast)


Lesenswert?

Da sich das ganze in einem Rack abspielt, ist natürlich auch ein FI mit 
an Board ;-)

VDE-Prüfung siehe oben.

Mehr angst macht mir da die selbstgebastelte Pyro-Anlage, aber mit der 
hab ich wenigstens nix am Hut ;-)

Ja, ich bin Musiker UND Techniker ;-) Geährliche Mischung wie man 
vermuten kann.

Bei den meisten Clubs dürte die Hausverdrahtung aber die größte 
Schweinerei darstellen ;-)

von Hannes L. (hannes)


Lesenswert?

Musizierst Du mit Dur und Moll oder mit Play und Stop?

...

von Jens Plappert (Gast)


Lesenswert?

mit DUR-MOLL-TOLL. Mit dem "Musikmachen für Arme" hab ich nix am hut.

Ich liebe diese selbsternannten cd-reinleger die sich ür Musiker halten 
so sehr....

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Ich musiziere sowohl mit Dur+Moll, als auch mit Play+Stop, was in der 
modernen Musik durchaus üblich ist und mit Zitat Jens: "Musikmachen für 
Arme" nichts zu tun hat, da jeder Ton, der später mit Play abgefahren 
wird, auch vorher eingespielt werden muß. Das nur nebenbei. Ich kann´s 
nicht leiden, wenn man, nur weil man mit Rechnerunterstützung arbeitet, 
gleich als Clown verrissen wird. Musik ist Kunst im Ohr des Konsumenten, 
wie diese entstanden ist, ist zweitrangig, solange nicht nur bloßes 
Kopieren stattgefunden hat. Vollplayback ist natürlich Quark!

von Jens Plappert (Gast)


Lesenswert?

habs jetzt auch weniger von sowas (wobei auch da etwas ragwürdig ist) 
sondern von reinen "cd-auflegern" und playbackern. Da is ja man echt 
nischd .

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Richtig. Da kann dann höchstens noch das Gezappel gewertet werden ;-)

von Jens Plappert (Gast)


Lesenswert?

Genau. Als Heavy-Metaller halte ich natürlich rein subjektiv von 
elektronischer Musik nicht besonders viel, sehe aber ein, dass auch das 
"Musik machen" im eigentlichen Sinne ist. Aber menschliche CD-Wechsler 
sind eben keine Musiker. Obwohl ich diese Art von Musik verabscheue, 
gestehe ich auch einem Kreativen DJ zu, dass der was macht (also die 
Jungs mit 4 Tellern und Vinyl)

von Jens Plappert (Gast)


Lesenswert?


von juppi (Gast)


Lesenswert?

hallo  Jens

habe mal reingehört und gesehen
dieses kenne ich gut.
Trotzdem "jedem das seine"

mache mal eine kleine Zeichnung über dein projekt
auch zeitverhalten?

so nebenbei  Kennst du eine Kneipe  "Bierräuber"
ist relativ gut bekannt in dieser  Szene.

von Jens P. (Gast)


Lesenswert?

Bierräuber sagt mir jetzt mal garnichts ;-)

Das Zeitverhalten ist relativ einach erklärt: Per MIDI werden Programm 
Change-Befehle empfangen, welche ein bestimmtes Preset aus dem EEPROM 
laden und auf den Ports (relais für NF) ausgeben. Soweit eigentlich kein 
allzugroßes Problem, da hab sogar ich schon einige gute Codeteile 
hinbekommmen. Das Problem mit den Tasten tut sich eigentlich nur im 
Edit-Modus oder im direkt-Modus (Tastendruck=relais an oder aus) auf.

Gehen wir mal von der Idee aus, alle 15ms zu pollen (egal jetzt ob 
direkt, per register, oder sonstwie):

Wie lange dauert denn ein "Genormter Menschlicher DIN-Tastendruck"?

Ist eine Zeit von 15 ms in einem Rahmen wo man scher gehen kann dass da 
alles erkannt wird? Oder kann da auch schon mal einer verloren gehen?

von juppi (Gast)


Lesenswert?

bierräuber ist auch nicht der nabel der welt

Tasten abfragen nach ca 15-20 ms nochmals nachfrage und mit dem
1.eingelesenen wert vergleiche.nicht gleich weiter im prog
ist= ok
die zeit dazwischen kannste noch andersweitig verwenden.
interupt ist natürlich besser.
trotzdem ist die erkennung der taste 15-20 ms
im direktmodus fragste nur "ist eine Taste betätigt" wenn nicht
weiter im program (vieleicht 0,05ms verzögerung oder weniger
wenn taste betätigt dan Tasten abfrage auswertung==>dann wass wird
geschaltet.

erst ein einfaches lauffähiges prog. später verbessern
 kommt "midi" vom PC  oder ext.gerät
diese möglichkeiten haben viele Industriegeräte
Parametereinstellung per midi

von Jens P. (Gast)


Lesenswert?

MIDI kommt vom Floorboard

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Interrupt an den Tasten ist nicht zu empfehlen, da Du Dir bei Prellern 
die ganze Kiste lahm legen kannst. Du willst ja einen Controller mit 
genügend Pins verwenden. Dann kannst Du, um in störintensivem 
Bühnenumfeld sicher zu sein, die Tasten erstmal per Hardware entprellen. 
Ansonsten könnte es nämlich sein, daß beim Aktivieren der Nebelmaschine 
der Controller meint, es wäre eine Taste gedrückt worden. Löte also 
parallel zu den Tastern einen Kondensator von 10...100nF. Die Taste 
schließt Du vom Controllerpin nach Masse an. Weiß nicht, ob Dein PIC 
interne PullUps hat, wenn ja, kannst Du diese einschalten, sonst machst 
Du 10k-Widerstände nach Vcc an jede Taste. In der Abfragereoutine guckst 
Du jede ms auf einen der Taster und erhöhst eine Zählvariable, dei die 
Nummer des abzufragenden Tasters enthält, somit hast Du ein 
Zeitintervall von 20ms pro Taster. Du trägst in ein Array den Wert des 
aktuellen Tastenstatus ein. Dieser Wert wird beim nächsten Durchlauf 
verglichen und der neue Wert überschreibt den alten. Ist alter Wert = 
neuer Wert, machst Du nichts. Ist alter Wert |= neuer Wert, guckst Du, 
ob die Taste niedergedrückt oder losgelassen wurde und löst das 
entsprechende Event aus. Die Tastenabfrage insgesamt packst Du in eine 
flaggesteuerte Routine, das Flag wird vom Timerinterrupt jede ms gesetzt 
und in der Routine wieder gelöscht.

von juppi (Gast)


Lesenswert?

hallo Jens Plappert

willst du nur die presets edidieren
oder auch die zu empfangenen Midibefehle
sowie 16 mal ein/aus

von Jens P. (Gast)


Lesenswert?

Zwischen Presets umschalten, vielleicht auch Preset-Namen Editieren, Die 
Presets selbst editieren und im Direkt-Modus eben direkt die Relais 
steuern (uc quasi als Flipflop)

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Wie weit bist Du denn jetzt? Gibt es Neuigkeiten?

von juppi (Gast)


Lesenswert?

inzwischen müßtes die ein einfaches funktionelles prog.
fertiggestellt haben.

von Jens P. (Gast)


Lesenswert?

Ääähm, dazu muss ich dann an späterer Stelle nochmal Meldung abgeben. 
Hatte das Projekt schonmal recht weit, jedoch mit absolut ungeschicktem 
Design, im Moment sitz ich noch an anderen Arbeiten. Wird also noch ne 
weile dauern bis ich mal wirklich dazu komm mich nochmal dranzusetzen.

Hatte jetzt nur mal n büschn Zeit mir über die ersten Detailfragen 
Gedanken zu machen.

greets, Jens

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.