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
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 ;-)
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...
>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.
@ 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
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.
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...
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.).
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!
@ 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
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 ;-)
@ 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
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.
>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.
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.
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?
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
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.
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
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.
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üß
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 ;-)
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....
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!
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)
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.
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?
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
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.
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)
Äää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