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 ;-)
Taster mit OR verknüpfen und an INT0 etc. anschließen...
Controller mit PCINT nehmen, also zb Mega644 o.ä. Da löst jeder Tastendruck einen Interrupt aus. Pollen braucht man da nicht
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!
>Stromverbrauch selbst ist eigentlich total wurschd. >Wird auch nur Live auf der Bühne laufen,... Das ist auch ´ne Einstellung... Hut ab!
@ 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.
Manche I2C Portextender koennen einen Interrupt setzen, wenn sich eine Leitung aendert.
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üß
hallo Bernd Rüter damit kann eim programmieranfänger nichts anfangen
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 ;-)
Musizierst Du mit Dur und Moll oder mit Play und Stop? ...
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!
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 .
Richtig. Da kann dann höchstens noch das Gezappel gewertet werden ;-)
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.
hallo Jens Plappert willst du nur die presets edidieren oder auch die zu empfangenen Midibefehle sowie 16 mal ein/aus
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)
Wie weit bist Du denn jetzt? Gibt es Neuigkeiten?
inzwischen müßtes die ein einfaches funktionelles prog. fertiggestellt haben.
Äää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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.