Guest cyan Posted January 4, 2003 Report Share Posted January 4, 2003 (achtung: langer thread *g*)Erst einmal ein frohes Neues im Nachhinein :). So, nun zu meinem Problem. Ich hoffe dass ich hier richtig bin, da es sich schließlich um ein "Midiprojekt" handelt und ich mir ein folgendes "Gerät" (Midizentrale) zusammenbauen möchte. Zunächst sei gesagt, dass ich Gitarrist bin und in meinem Rack verschiedene Teile (Effekte/Preamps) über eine Midifußleiste ansteuere. Diese Midifußleiste sendet einfache Prg.-Change Msg. (01-99) zu meinem Rack, wo sich meine Gerätschaften entsprechend umschalten bzw. mir die Möglichkeit für 99 verschiedene Sounds bietet). Nun habe ich allerdings das Problem, dass ich es hasse immer darauf zu achten, den richtigen Fußschalter an meiner Leiste zu treffen wie oft kommt es doch vor, dass man leicht verrutscht und deshalb einen verkehrten Sound auswählt.Nun dachte ich darüber nach wie ich dieses Problem lösen könnte. Ein Gerät, in welches man die Sounds (bzw. Prg-Change-Msg.) in Reihe programmieren kann, welche sich mit nur noch 2 (und nicht mehr 10 *g*) einfachen Fußschaltern abrufen lassen (vor/zurück).Zunächst müsste eine solche "Midizentrale" die Möglichkeit für 3 Modis bieten:-    Song modus-    Setlist modus-    Live modusIm Song-Modus, wähle ich zunächst ein Lied aus dem internen RAM des Gerätes an (Nr.001-999). Anschließend programmiere ich für diesen Song (bspw. 027), die Prg.-Change Msg 03, 01, 03, 01, 04, 03 hintereinander und speichere das ganze ab. Dies mache ich mit all meinen Liedern.Im Setlist-Modus, programmiere ich nun die im RAM abgespeicherten einzelnen Lieder (siehe Song-Modus) für einen Auftritt hintereinander. Bspw:1.    Lied Nr. 027 (03-01-03-01-04-03) 2.    Lied Nr. 002 (03-01-03)3.    Lied Nr. 112 (01-04-02-01)4.    Lied Nr. 073 (04-06-01-06)Im Live-Modus startet nun das Gerät mit Lied 027 und sendet durch MIDI-OUT die Prg.-Change Msg 03. Wenn ich nun auf mein Pedal vorwärts drücke, anschließend 01, 03,01, usw., so dass alle Sounds nun so hintereinander programmiert sind, wie ich sie für meinen Auftritt benötige, und nur noch mit 1 Pedal für vorwärts und 1 Pedal für rückwärts aufrufen kann.Das ganze sollte am besten auf einem Display dargestellt sein Bspw:Setlistposition/SongNr/Sound. über Details könnte man sich noch streiten, ABER, nun die große Frage:ich hoffe ich konnte erläutern um was es sich bei dem Gerät handeln soll; ist so was "realtiv" leicht realisierbar und wie geht man dabei am besten vor. (soll jetzt keine Bau-Erklärungs-Anleitung-bitte sein *g*). Ich wäre nur für ein paar kleine Tipps dankbar (evtl. welche platine benötigt, woher ich die Bauteile bekommen könnte, etc.)Vielen Dank im Vorraus! Quote Link to comment Share on other sites More sharing options...
TK. Posted January 5, 2003 Report Share Posted January 5, 2003 Hallo Cyan,realisieren laesst sich dieses Geraet mit dem MBHP Core Modul, einem LC-Display und Tastern/Schaltern, die man direkt an das Core-Modul anschliesst. Die Bauteile kann man am guenstigsten bei Reichelt beziehen, die Kosten liegen schaetzungsweise bei ca. 35 EUR. Fehlt dann nur noch die Firmware, und hier wird es dann auch schon etwas aufwaendiger - dein Wunschcontroller erfordert naemlich ein User-Interface, das bisher von den MIDIboxen noch nicht unterstuetzt wird. Du musst also eine Menge selbst programmieren, und das erfordert Mikrocontroller-Kenntnisse... hierzu koennte ich Dir ein paar Tips geben, aber die meiste Arbeit wird bei Dir bleiben. Am besten schaust Du Dir mal die Beispielsourcen unter Concepts->MBHP->Test Programs an, um abzuschaetzen, was da auf Dich zukommt. Auf den ersten Blick mag der Assemblercode vielleicht kompliziert aussehen, aber das gibt sich, sobald man damit "herumspielt" und die Moeglichkeiten erfasst hat. Die juengste Success-story schrieb mir jemand aus Suedafrika, der - ohne Vorkenntnisse - auf Basis der Beispiele eine luxerioese Mikrocontrollersteuerung fuer eine Kirchenorgel realisiert hat :)Gruss,Thorsten. Quote Link to comment Share on other sites More sharing options...
Guest cyan Posted January 6, 2003 Report Share Posted January 6, 2003 Hallo Thorsten,zunächst einmal vielen Dank für Deine Antwort. Leider muss ich sagen bin ich in dieser Materie (noch) nicht so vertraut, denke aber, dass nichts unmöglich ist - man muss sich nur genug damit beschäftigen, also auf in den Kampf :)1. Das MBHP Core Modul fungiert, soweit ich richtig verstanden habe, als "MIDI-kern", welches für die Verarbeitung von Midisignalen gedacht ist (bzw. welches mit MidiIN/MidiOUT/... Buchsen versehen werden kann --> LTC Module=?!). Fungiert dieses auch als I/O Port, wo ich später meine Taster (ca. 10) anschließen kann, oder benötige ich diesbezgl. noch ein I/O Board --> DIN Modul=!?).2. Inwieweit, nun die Frage, läßt sich dieses mit RAM erweitern (natürlich reichen ein paar kb), so dass ich recht vieler solcher Signalketten als Bibliothek auf dem späteren Gerät dort abspeichern kann.3. Kann man jedes beliebiges Display an dieses anschießen bzw. passend machen?! Nach meinen Vorstellungen sollte es später einmal ein schön großes, rotes LED (ca. 15 Stellen) haben, so dass man auch auf Entfernung im "dunkleren" Licht es noch gut erkennen kann.Beste GrüßeBenjamin Quote Link to comment Share on other sites More sharing options...
TK. Posted January 7, 2003 Report Share Posted January 7, 2003 Hallo Benjamin,Zu 1) ja, das Core Modul ist das Herz jeder MIDIbox, die restlichen Module sind Interfaces. Das LTC bietet keinen zusaetzlichen MIDI In/Out-Port so wie man es z.B von einer PC-Steckkarte erwarten wuerde, sondern bietet lediglich die Moeglichkeit, das Rx/Tx-Signal mit LEDs sichtbar zu machen, die Signale verstaerkt auf zusaetzliche MIDI-Buchsen zu geben und/oder die MIDI-Daten von einem RS232 Port zu beziehen.Das DIN-Modul ist der Standardweg um digitale Eingangssignale zu verarbeiten. Es gibt aber auch andere Moeglichkeiten, so koenntest Du beispielsweise die Taster aehnlich wie bei der MIDIbox Plus anschliessen (nach dem Multiplex-Verfahren). An welchen Pins Du die Tasten anschliesst, liegt an Dir, es waere z.B problemlos moeglich, die freien Analogen Pins (AN0-AN7) dafuer zu verwenden, per Multiplexing koennten so 16 Tasten abgefragt werden.Zu 2) Du moechtest die Daten nicht wirklich im RAM abspeichern, dort gehen sie naemlich nach dem Ausschalten verloren. Ich wuerde sie entweder im internen EEPROM abspeichern (hier stehen 256 bytes zur Verfuegung) oder im internen Flash (8192*14 bit, beim PIC18F452 16384*16 bit - der Flashspeicher kann "nur" ca. 100000 mal ueberschrieben werden, aber das sollte hier nicht weiter stoeren) ablegen. Oder gleich in einem externen EEPROM (also in einem "BankStick), was fuer Deine Anwendung die perfekte Loesung waere, weil Du auf diese Weise z.B fuer jede Performance einen eigenen Stick vorbereiten koenntest, und den Stick sogar extern gegen Ueberschreiben schuetzen koenntest, sodass die Daten nicht ungewollt geloescht werden.Btw. gleich noch ein weiterer Hinweis: nimm unbedingt einen PIC18F452. Ich habe fuer diesen Chip zwar noch keine Beispiele vorbereitet, aber er laesst sich wesentlich einfacher programmieren, weil der Speicher nicht mehr fragmentiert ist. Ausserdem kostet er nicht viel mehr als ein PIC16F877 (ca. 10 Euro). Und noch ein Geheimtip: bei Microchip kann man sich kostenlose Samples bestellen, die direkt ab Taiwan per Fedex-Versand verschickt werden und zwei Tage spaeter eintreffen. Auf diese Weise koenntest Du Dir auf die Schnelle 3 18F452 und 3 24LC256 beschaffen ;-)Zu 3) theoretisch ja, praktisch musst Du fuer speziellere Displays auch einen eigenen Treiber schreiben, moeglicherweise muesstest Du sogar fuer ein grosses LED-Display die gesamte Ansteuerung selbst uebernehmen (so wie beim MTC-Beispiel): das erfordert zusaetzlichen Hardware-Aufwand (DOUT Modul)Gruss,Thorsten. Quote Link to comment Share on other sites More sharing options...
Guest cyan Posted January 7, 2003 Report Share Posted January 7, 2003 Ok, der grobe Aufbau wäre dann wie folgt:http://home.arcor.de/cy/cyan_0660/midizentrale.jpgDies wäre sozusagen die einfachste Möglichkeit. - Würde ich ein anderes LCD anschließen, müßte ich demnach noch ein DOUT Modul zwischen den Core und dem LCD hängen. In dem anderen Fall mit dem "standartdisplay" von deiner Seite benötige ich dies also nicht!- Aus Erfahrung deinerseits: ich möchte das später in einem leeren 19" Gehäuse unterbringen. Welche Taster für die Eingaben welche vorne am Gehäuse angebracht werden sollen könntest du dafür empfehlen?- natürlich das JDM Module nicht vergessen!- Ansonsten die benötigten Teile nun bestellen und mit der Bastelei beginnen...?!Vielen Dank nochmals für deine nette Hilfe!PS: Das mit dem BankStick ist eine klasse Idee! Quote Link to comment Share on other sites More sharing options...
TK. Posted January 8, 2003 Report Share Posted January 8, 2003 Ja, sieht soweit in Ordnung aus. Die Buttons kannst Du wie gesagt auch direkt an die freien Pins (mindestens 10) anschliessen.Tip zum Bestellen bei Reichelt: 10k und 220 Ohm Widerstaende am besten im 100ter Pack bestellen, dann gibt es Rabat. Ausserdem kann man gerade in der Digitaltechnik diese Widerstaende immer mal gebrauchen (z.B als Pull-Up oder Serienwiderstand)Taster: ich wuerde den Typ "DT_6" nehmen, den muesstest Du aber auf einer Lochrasterplatine aufloeten und diese dann intern ueber einen Winkel befestigen. Deshalb: am besten auch gleich 1-2 Lochrasterplatinen mitbestellen (H25PR200)Gruss, Thorsten. Quote Link to comment Share on other sites More sharing options...
Guest cyan Posted January 14, 2003 Report Share Posted January 14, 2003 Ersteinmal nochmals vielen Dank für Deine freundlich Hilfe - hätte da noch eine kleine Frage offen: wenn ich nun nicht die 2x16, 2x20 LCD benutzen möchte, sondern je 4 mal 3 LEDs (für die Darstellung 4 zahlenpaare 000-999) wird die Sache dann "deutlich" komplexer zu programmieren bzgl. eines eigenen "treibers" - ähnlich MTC?! Die Frage beruht sich darauf, dass es sicherlich am einfachsten wäre, das "standart" LCD zu benutzen, aber ich auf der Bühne auch auf entfernung noch die einstellungen sehen müßte (über "schöne große rote" LED bspw. - nur Zahlen/kein text nötig). ...ich meine nur, dass warscheinlich das "standart" LCD zu klein wäre Quote Link to comment Share on other sites More sharing options...
TK. Posted January 14, 2003 Report Share Posted January 14, 2003 Unter diesen Umstaenden wuerde ich auf LED-Digits nicht verzichten. Dazu benoetigst Du keine einzelnen LEDs, es gibt die Digits auch fix und fertig bei Reichelt zu kaufen: SA_08-11_rtDas MTC-Beispiel unter Concept->Test Programs mag zwar kompliziert aussehen, im Grunde laesst es sich aber Plug-and-Play maessig integrieren. Mit dem PIC18F wird wie gesagt alles einfacher und kompakter; fuer diese Plattform werde ich Beispiele bereitstellen, die auf dem "MIOS" basieren (ein selbstgebasteltes Betriebssystem, das die grundsaetzlichen Verwaltungsaufgaben fuer MIDI-Anwendungen uebernimmt). Uebrig bleibt dann im Grunde nur noch die Codierungstabelle fuer die LEDs unter contab_l.inc. Die Digits koennen dann jederzeit mit einfachen Registerzugriffen beschrieben werden: movlw 0x01 movwf LED_DIGIT0 movlw 0x02 movwf LED_DIGIT1 movlw 0x03 movwf LED_DIGIT2 movlw 0x04 movwf LED_DIGIT3 den Rest uebernimmt das Betriebsystem. Einfacher geht es dann glaube ich nicht mehr. ;-)Gruss, Thorsten. Quote Link to comment Share on other sites More sharing options...
Guest cyan Posted January 15, 2003 Report Share Posted January 15, 2003 mal wieder 2 Fragen :):- Läßt sich der PIC18F452 genau wir der "alte" mit den standart PIC-Burner für die 16F87x Serie programmieren? UPDATE: geklärt - JDM Module seit der neuen Version JA- auch wenn ich mich hiermit als totaler Anfänger oute - sorry: Die ganzen Teile für den CORE, JDM, DOUT, DIN werden ja aus seperate Plainen gelötet. Jetzt überflog ich für den CORE den Soldering Guide und fragte mich: woher bekomme ich eigentlich eine sole Platine (auf der schon die Leiterbahnen vorgefertigt sind....UPDATE: geklärt - bei mikes elektronik seite lieferbar Quote Link to comment Share on other sites More sharing options...
Guest cyan Posted January 17, 2003 Report Share Posted January 17, 2003 ...der PIC18 läuft ja im Gegensatz zum PIC16 mit 40 MHZ. Kann ich nun für den Core exakt die gleichen Bauteile benutzen, oder benötige ich evtl. einen 40MHZ Quarz o.ä.? Quote Link to comment Share on other sites More sharing options...
TK. Posted January 17, 2003 Report Share Posted January 17, 2003 Nein, Du benoetigst einen 10 MHz Quarz. Um sicherzusterzustellen, dass Du diesen seltsamen Wert nicht fuer einen Schreibfehler haelst, schreibe ich ihn gerne nochmal aus: zehn Megahertz... ;-)Der Grund: der interne Oszillator kann nur bis 25 MHz schwingen, im PIC18F ist jedoch auch eine PLL integriert, die die Frequenz vervierfacht. Leider ist dieser Faktor fest eingestellt, deshalb muss der Quarz ausgetauscht werden.Ansonsten sind alle Bauteile identisch mit der PIC16F Version.Gruss, Thorsten. Quote Link to comment Share on other sites More sharing options...
Guest cyan Posted January 22, 2003 Report Share Posted January 22, 2003 - Benötige ich von der www.microchip.com seite das MPLAB IDE oder MPLAB C18 Entwicklungskit?- welche tools/docs könntest sollte ich mir diesbezüglich noch besorgen (wie gesagt - muss mich damit noch sehr vertraut machen *g*)grüße, Benjamin Quote Link to comment Share on other sites More sharing options...
TK. Posted January 22, 2003 Report Share Posted January 22, 2003 Du benoetigst das MPLAB ICE. MPLAB C18 habe ich noch nicht ausprobiert, aber dahinter versteckt sich soviel ich weiss sowieso nur eine Demo-Version des (teuren) C-Compilers.Ansonsten solltest Du Dir mal das Datasheet und das Manual herunterladen: Products->Microcontrollers with analog capability->28-40/44 pin 2k-16k word (3.6k-32k bytes)->PIC18F452->PIC18Fxx2 datasheet sowie Engineers Toolbox->Reference Manuals->PIC18C MCU Family Reference ManualGruss, Thorsten. Quote Link to comment Share on other sites More sharing options...
Guest cyan Posted January 22, 2003 Report Share Posted January 22, 2003 Super, vielen Dank! Hab ich mir nun besorgt. Inzwischen sind auch meine "samples" aus thailand eingetroffen, war echt guter Tipp. Dabei handelt es sich um:- 2 x 24LC256 (MemoryStick)- 2 x PIC18F452-I/P (CoreModule/für was steht eigentlich I/P?)ich gehe mal davon aus, dass dies die "grundlegenden" richtigen Teile sind.GrußBenjaminPS: folgendes Problem: beim CORE Modul sind seltsamerweise bei mir die Füße des RECTRIFIER(B80C800RUND - bestellt bei Reichelt) zu d ick, dass sie nicht durch die Platine passen ?! Quote Link to comment Share on other sites More sharing options...
TK. Posted January 24, 2003 Report Share Posted January 24, 2003 Ja, Du hast die richtigen Teile erwischt. :)I/P steht fuer den Package-Typ und den erlaubten Temperaturbereich, die genaue Codierung ist im Datasheet zu finden. Doch solange Du keinen Controller fuer automotive oder militaerische planst, musst Du das nicht weiter beachten. ;-)PS: folgendes Problem: beim CORE Modul sind seltsamerweise bei mir die Füße des RECTRIFIER(B80C800RUND - bestellt bei Reichelt) zu d ick, dass sie nicht durch die Platine passen ?!Evtl. hat Michael vergessen, die Loecher fuer den Gleichrichter breit genug zu bohren... am besten drehst Du nochmal einen kleinen Schraubenzieher durch, so geht das am schnellstenGruss, Thorsten. Quote Link to comment Share on other sites More sharing options...
ilmenator Posted January 25, 2003 Report Share Posted January 25, 2003 Hallo,über die zu kleinen Löcher für den Gleichrichter hab ich mich auch schon geärgert - ich dachte aber, dass sei nur bei meinen beiden Platinen passiert. Scheint aber doch eher ein systematischer Fehler zu sein!Grüße, ilmenator Quote Link to comment Share on other sites More sharing options...
Guest cyan Posted January 27, 2003 Report Share Posted January 27, 2003 Das mit der Vergrößerung der Löcher für den Gleichrichter hat wunderbar funktioniert :)Nun mal was neues: nachdem jetzt nun alles "fertig" gelötet ist und es nun langsam zur Programmierung geht folgende Frage: woher bekomm ich am besten Informationen wie ich meine LEDs ansteuern kann UND wie ich diese mit dem DOUT verbinde - wie gesagt, ich habe bis vor 2 Wochen noch nie mit soetwas o.ä. zu tun gehabt *hüstel* ;) - blutiger Anfänger - sorrybeste GrüßeBenjamin Quote Link to comment Share on other sites More sharing options...
TK. Posted January 27, 2003 Report Share Posted January 27, 2003 Hallo Benjamin,damit Du bis zur MIOS Release beschaeftigt bist, habe ich mal schnell das MTC Beispiel auf den PIC18F452 umgesetzt ;-)Es befindet sich unter:http://www.ucapps.de/mbhp/prg/dout_mtc_pic18f_v1.zipUnd der Schaltplan fuer das MTC-Display unterhttp://www.ucapps.de/mbhp/mbhp_doutx4_mtc.pdfAm besten baust Du erstmal das 8-digit-Display nach --- wenn Du moechtest, kannst Du auch schon 10 Digits fuer Dein zukuenftiges Design vorsehen, wie das dann anzusteuern ist, kann ich Dir spaeter zeigen [1]. Momentan lohnt es sich nicht, das Beispielprogramm noch mehr aufzubohren, weil es sich spaeter auf zwei Files minimieren laesst... Ausserdem kann man spaeter den eigenen Programmcode via MIDI uploaden, was dann wesentlich schneller geht als mit dem JDM programmer --- aber wie ich bereits schrieb: das kann noch 1-2 Wochen dauern...Die beiden wesentlichen programmteile:sr_mtc.inc: diese Routine wird von irq.inc alle 2.5 ms aufgerufen. Mit jedem "tick" wird eine Countervariable hochgezaehlt, die dafuer sorgt, dass eines von 4 Digit-Paerchen bis zum naechsten Tick (in 2.5 ms...) sichtbar wird. Die Zeichen, die von den Digits angezeigt werden, sind in den Registern SRMTC_DIGIT_0 bis SRMTC_DIGIT_7 hinterlegt. Dieses Zeichen wird vorher noch in ein LED-Muster umkodiert, den entsprechenden Code findest Du unter SRMTC_GetCodeDiese Routine ist quasi der Display-Driver der staendig im Hintergrund laeuft. Er muss nie mehr anfasst werden, es sei denn, neue LED-Muster (z.B Buchstaben) sollen hinzugefuegt werden.mainloop.inc: Hier laeuft das Hauptprogramm in einer Endlosschleife. Das Beispiel ist schon etwas komplexer, es zaehlt von 00000000 bis 99999999...Du kannst den Code einfach loeschen - lediglich der "clrwdt" Befehl sollte stehen bleiben, der sorgt dafuer, dass der sogenannte Watchdog immer schoen gefuettert wird, damit er den Chip nicht irgendwann resetet [2]Auf diese Weise kannst Du z.B "12345678" auf dem Display erscheinen lassen: MainLoop ; ---[ feed the watchdog ]--- clrwdt ; ---[ print 12345678 ]--- movlw 0x01 movwf SRMTC_DIGIT_7 movlw 0x02 movwf SRMTC_DIGIT_6 movlw 0x03 movwf SRMTC_DIGIT_5 movlw 0x04 movwf SRMTC_DIGIT_4 movlw 0x05 movwf SRMTC_DIGIT_3 movlw 0x06 movwf SRMTC_DIGIT_2 movlw 0x07 movwf SRMTC_DIGIT_1 movlw 0x08 movwf SRMTC_DIGIT_0 goto MainLoop Ich denke mal, dass das eine gute Ausgangsbasis fuer weitere Experimente ist... :)Gruss, Thorsten.[1] Die beiden notwendigen Pins muessen entweder an einem vierten Shift Register oder direkt an zwei PIC-Pins angeschlossen werden --- hier liegt es an Dir, welche Loesung Du favorisierst[2] Einen Watchdog-Timer setzt man ein, um auf Programmfehler (Endlosschleifen, Spruenge ins Leere) oder physikalische Probleme (Stichwort: Failsave) zu reagieren. Quote Link to comment Share on other sites More sharing options...
Guest cyan Posted January 28, 2003 Report Share Posted January 28, 2003 Das hört sich doch schonmal sehr interessant an :) Die Module habe inzwischen durchgecheckt (wie auf der Homepage beschrieben) - allerdings bekomme ich beim Überprüfen des JDM-Moduls beim "Enable Clock" (IC-Prog) etwa 3,5V anstatt 5V - der Rest passt?!Gibt es eigentlich eine Möglichkeit meinen Bankstick auch ohne LCD-Modul auf funktionstüchtigkeit zu überprüfen?Wenn ich das der "Anleitung" richtig entnommen habe, kann ich ja durch das Entfernen der 5 Jumper auf dem CORE das JDM Modul direkt anschließen und den PIC für die Programmierung belassen. Ich denke nur darüber nach, dass ich somit den "seriellen" Anschluss zum JDM einfach auf die Rückseite des fertigen Gerätes legen könnte und somit die Firmware des Gerätes ohne Probleme jederzeit updaten könnte?! Quote Link to comment Share on other sites More sharing options...
TK. Posted January 29, 2003 Report Share Posted January 29, 2003 Die Clock-Spannung faellt mit der Zeit auf < 4V - das ist normal.Nein, den BankStick kann man erstmal nicht ohne LCD ueberpruefen, es sei denn, Du baust mal schnell eine MIDIbox SID nach, die gibt naemlich einen Sound aus, wenn man den BankStick ein/aussteckt ;-)Aber warte einfach auf das MIOS, dort werden wie gesagt alle allgemeinen Funktionen verfuegbar sein, so dass Du Dich ueber solche Internas wirklich nicht kuemmern brauchst. :) WIe ich bereits schrieb: mit diesem Betriebsystem mache ich mir selbst "das Leben" einfacher, deshalb moechte ich eigentlich nichts mehr herausgeben, was in wenigen Tagen obsolet sein wird.Ja, Du kannst den Programmierport auch einfach nach aussen legen.Gruss, Thorsten. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.