Messu

Clona Morningstar MC-6

Recommended Posts

Incerc sa fac o clona dupa un controller MIDI - Morningstar MC 6.

https://www.morningstarfx.com/product-page/morningstar-mc6-midi-controller

Schema electronica e mai mult decat supersimpla, practic un microcontroller (Teensy LC)
la care sint legate un display LCD 20x2 si 6 butoane.

Ideea este in felul urmator:
am scris hex-ul in uC (hex-ul original, bineinteles, luat de pe site-ul producatorului), dupa care uC este vazut de
calculator, in device manager, ca Morningstar MC6, este vazut si de softuri ca si controller MIDI, comunica 
cu software-ul MC6 pentru editarea patch-urilor (pana la un punct, intra in Edit Mode si atat), dar atat. 
Pe display-ul LCD, nu afiseaza nimic, si nu se intampla nimic la apasarea butoanelor.
Poate sa-mi spuna cineva, cu experienta la chestii digitale, ce gresesc, ce-mi scapa, pentru ca chiar m-am incurcat
si nu mai stiu ce sa fac ? Merge...si nu merge...

mc6_1.jpg

mc6_2.png

mc6_3.png

mc6_4.png

Share this post


Link to post
Share on other sites

Asta ar fi montajul. Bine, la cum arata schema...nu prea se poate mai mult :)

LCD-ul nu l-am legat in varianta asta. Am facut proba cu LCD numai pe breadboard. Dar nu afiseaza nimic.

Acum dupa ce am facut cablaj, am conectat un analizor logic in locul LCD-ului. Dar n-am avut succes. Nu apare niciun fel de activitate :(

Ideea este ca uC-ul se conecteaza la PC, intra in Editor Mode, dupa care la inchiderea oricarui contact(pedala) ar trebui ca in fereastra softului sa se deschida automat Patch-ul care se doreste a fi editat. Cel putin asa face cel original. Dar nu se mai deschide nimic...

Nativ, el ar trebui sa plece pe canalul 1 (MIDI)

IMG_20171206_181049.jpg

IMG_20171206_181058.jpg

IMG_20171206_181107.jpg

IMG_20171206_181131.jpg

Edited by Messu

Share this post


Link to post
Share on other sites

"Miroase" a software . Este important de stiut daca binary scris in uC contine si parametrii de configurare (Teensy LC sau Teensy LC 3.2  ? ) si nu numai rutinele in sine .

Edited by ggg

Share this post


Link to post
Share on other sites

Hmmm, da, inteleg...oarecum...

Totusi, ma gandesc, software-ul este oferit pe site, gratuit, sub forma de update, oricarui utilizator de MC6. Orice utilizator il descarca si il pune, pur si simplu, via USB, in MC6, asa cum l-am pus si eu, ma gandesc.... E drept ca eu n-am folosit utilitarul lor, ci un Uploader dedicat pentru Teensy LC. Nu sint oferite alte detalii pentru Update, deci ma gandesc ca functioneaza  "din prima" fara alte configurari.

Desi recunosc ca nu ma pricep mi se pare cam...curios... Si e si ciudat (pentru mine), faptul ca reuseste sa comunice cu PC-ul...cel putin pana la un moment dat...

Se comporta ca si cum softul care este scris in uC functioneaza ...partial, ceea ce ma ameteste complet...

Softul/softurile se gasesc aici: https://github.com/Morningstar-Engineering/MC6-Midi-Controller/releases

Ba sint acolo si niste fisiere sursa. Nu stiu daca chiar contin codul sursa (ma cam indoiesc...) pe care insa nu le-am deschis pentru ca oricum nu stiu programare.

Si, DA, microcontrolerul este Teensy LC.

 

 

Share this post


Link to post
Share on other sites

Pai ... nu cred ca o sa iti mearga in veci - vecilor amin ... acum am vazut (poti pune te rog si valorile pieselor ... nu de alta dar ... imi este lene sa caut).

De ce folosesti alimentare de 3V ? Si de ce folosesti alimentarea pusa la dispozitie de TNSY ?! 
Alimenteaza totul la 5V pentru ca daca folosesti 6N138 ... nu prea se comporta bine la 3V 
Editorul foloseste mesaje MIDI pentru editare?!
24L256 iarasi nu prea se comporta bine la 2.5V (mai ales daca valoarea scade sub 3V) pentru ca intra in protectie partea de controller.

 

Cu respect,

Gabriel Tudoran

 

PS: Ia un multimetru si verifica tensiunile - MIDI este active LOW deci fara activitate pe bus trebe sa vezi logic 1

PS: functioneaza ok pana la un moment dat pentru simplu motiv ca atunci cand intra in paine tensiunea este ok... cand intra si incepe sa rontzaie poate sa iti pice alimentarea pe motiv de consum mai mare.... esti sigur ca asa este schema originala? Ca eu nu prea cred... daca este asa este o greseala de proiectare majora ... IMHO

Share this post


Link to post
Share on other sites

Pai de ce sa nu mearga in vecii vecilor ? Numai din cauza tensiunilor ?

Nu mai dau eu priceput, dar cred ca aici te inseli. Asa e conceput produsul original. Pe cuvant ! Eu n-am facut decat sa copiez schema !

Restul pieselor au valori "clasice" pe care n-am nicio indoiala ca le cunosti, eventual cu mici varitiuni.

Rezistentele de pe intrarea si iesirea MIDI au 220 ohmi, dioda de pe intrarea MIDI este 1N914,. Optocuplorul este 6N138 si are intre pinii 5 si 7 o rezsitenta de 10K si intre pinii 6 si 8, cred ca 1K (cred...).

Revenind, eu n-am probat controllerul conectat la MIDI via mufe DIN. Ci doar MIDI over USB. Aparatul original are si posibilitatea de alimentare externa, dar functioneaza perfect cu alimentare de pe portul USB.

Atat optocuplorul cat si memoria externa sint alimentate la 3.3 V, cat ofera Teensy. Asa e proiectat... Memoria externa, dealtfel, nu cred ca e folosita decat pentru salvare setari generale si patch-uri... Si nu cred sa scada tensiunea pana la 2.5v...

Editorul MIDI, recunosc ca nu stiu ce fel de semnale foloseste pentru editare.

Incerc in weekend sa fac niste masuratori la tensiuni si consum, insa parca nu-mi vine sa cred ca d-acolo e buba. Eu, in ultima varianta probata, a fost doar uC conectat la PC, fara LCD (deci cu consum minim) si in loc de pedale am facut contact cu niste jumperi. Mai putina incarcare de atat nu cred ca se poate :)

E cam greu sa facem astfel de debugging via forum, stiu asta. Normal e cu aparatul in fata, dar am zis sa intreb totusi, in ideea ca fac eu ceva flagrant gresit si mi-a intunecat Dumenezeu mintile...

In sfarsit, masor si revin...

Share this post


Link to post
Share on other sites
5 hours ago, Messu said:

Totusi, ma gandesc, software-ul este oferit pe site, gratuit, sub forma de update, oricarui utilizator de MC6. Orice utilizator il descarca si il pune, pur si simplu, via USB, in MC6, asa cum l-am

 

Ok.Cred ca ar trebui  sa stii exact ce tip de Teensy este recomandat pt fiecare release . Sunt cateva versiuni de Teensy devel boards care nu prea seamana intre ele, nici ca si clock si nici ca porturi (prin CPU-urile care sunt instalate). In aplicatia originala este folosit tot Teensy ? Poate nu ar fi rau sa probezi si release-uri mai vechi .

 

Edited by ggg

Share this post


Link to post
Share on other sites

OK, am sa incerc si asta. Pana acum am avut in mana doua astfel de controlere MIDI. Unul produs in in aprilie 2016, altul in Iulie 2017. Ambele aveau Teensy LC pe ele. Cel din 2016 rula v2.4.2, cel din 2017 rula v2.5.0.

In rest circuitele semana in proportie de 98%. Cel din 2017, avea in plus fata de cel din 2016, cate  o rezistenta de 1k inseriata cu fiecare switch. Atata tot. Dar asta nu poate fi un motiv de nefunctionare ! 

Share this post


Link to post
Share on other sites

Am facut masuratorile. 

Tensiunea pe EEPROM este de 3.20 V , deci e OK judecand dupa datele de catalog. Consumul general al montajului, practic al Teensy LC, (fara display, desigur) este de 12,80 mA, ceea ce mi se pare nesemnificativ.

Deci, una peste alta, nu pare a fi o problema de alimentare !

Am incercat si cateva variante de soft mai vechi, respectiv 2.4 si 2.3, cu aceleasi rezultate - "se vede" in Device Manager, dar nu afiseaza nimic pe display...

Am incercat chiar flash-uirea Teensy cu utilitarul pus la dispozitie de catre Morningstar, in speranta ca o avea ala "ceva". Nimic, nicio schimbare ...

Edited by Messu

Share this post


Link to post
Share on other sites

Trebuie verificat ce setup exista  pt ARM -ul ala la un Teensy care si functioneaza (flags,DMA-uri,port setup,pullup voltage ,... etc)  my 2 cent.

Un alt lucru care ar mai trebui verificat este si versiunea de USB instalat in PC-ul cu care vrei sa comanzi.

 

 

 

Share this post


Link to post
Share on other sites

Controller-ul original nu-l mai am la dispozitie. Si nici modul de verificare al diverselor caracteristici nu cred ca-mi este la indemana, asa ca proiectul probabil ca incepe sa ma depaseasca...

E un produs destul de nou, asa ca am sa astept sa vad poate-i da cineva de cap in viitor... Sau poate nu...

In momentul asta pare ca m-am impotmolit.

Ca idee, totusi, intreb, microcontrollerul se poate sa spunem, pre-formata? Adica se pot scrie in el, din fabrica, ceva "setari" care sa ramana acolo chiar si in cazul schimbarii/updatarii softului ? Stiu de EEPROM, dar nu se sterge si ala cand fac update de soft ? Sau nu neaparat ? 

Daca da, probabil ca acolo e raspunsul si probabil ca intrebarea ar fi cum pot sa citesc acele setari.

Daca nu, chiar ca ai inteleg, pentru ca un utilizator normal (normal la cap :) ) cand fac update de firmware, face update de firmaware si atat, nu stie de DMA, de tensiuni de pullup, etc. Eu asa cred...

Edited by Messu

Share this post


Link to post
Share on other sites

Tocmai asta este problema , de obicei nu stii ce contine fisierul compilat. Dezvoltatorul are la dispozitie "tone" de variante in care poate furniza update-urile astea. De exemplu isi poate pune "signature" tocmai pt a functiona aceste update-uri numai cu device-urile livrate de el. 

M-am uitat de curiozitate sa vad ce contine flash file ver. 2.6.0 si am gasit mnemonice in format Intel Hex ( http://www.keil.com/support/docs/1584/  ). Am facut un pic de reverse engineer si a rezultat cod in C .  Dar bineinteles ca este fara bootstrap .

Tools for CORTEX ARM CPU : https://launchpad.net/gcc-arm-embedded

Pt debug si reverse engineering, IDA PRO are implementate si instructiunile pt arhitectura ARM

20170927.MC6_v2_6_0_beta.zip

Share this post


Link to post
Share on other sites

Eheeeee, pai acum parca incep sa ma lamureasc ! Multummesc @ggg !
Inteleg, cred, destul de bine, argumentatia (e drept, fara detaliile legate strict de programare, ca asta nu cunosc...) si inteleg si de ce ofera ei, cu atata marinimie si update-urile. Pentru ca nu sint suficiente pentru o clonare a controllerului.
Hehehe, m-am gandit eu repede ca s-a intalnit hotul cu prostul si cu un uC de 15 USD, plus inca un LCD si 6 butoane, adica piese de vreo 25 UDS inmi fac eu, repejor, un super MIDI controller care se vinde cu 250 de USD. Offf, mare...inginer am mai fost ! :D:D:D
Ca de obicei, cand pare prea frumos ca sa fie adevarat, se pare ca asa si este.
Nu m-am gandit nicio secunda la o situatie de genul asta !
E drept m-am lasat pacalit, prea usor, de schema, in care EEPROM-ul este legat in configuratie neprotejat la scriere, motiv pentru care m-am gandit ca e destinat numai stocarii de patch-uri. Acum ma gandesc ca poate este folosit SI pentru stocarea de patch-uri,  dar nu exclusiv. 
Poate fi asa ?


Ma gandesc acum ca "jocul" este pierdut (eu neavand abilitatile de a solutiona astfel de probleme), DAR, inainte de a abandona definitiv, cum cred ca ar sugera bunul simt, zic asa:


Ar fi oare util sa scot EEPROM-ul (24LC256) din controllerul original si functional, sa-i copiez continutul pe care ulterior sa-l pun in EEPROM-ul "meu" ?


Din cate vad, fara sa inteleg in detaliu, recunosc, Teensy LC are un EEPROM emulat (n-am gasit nicio cale/utilitarcu care sa pot sa-l citesc sau sa-l scriu) si ma gandesc ca eventuale "signature" pentru functionarea HEX-ului oferit pe site, ar trebui sa fie puse in 24LC256, in momentul fabricatiei.


Cat de corecta ar fi presupunerea mea ? Sau...bat campii ?
Ar merita facuta proba (DACA mai pot gasi/imprumuta controllerul original) ? 
 

Share this post


Link to post
Share on other sites
4 hours ago, Messu said:

E drept m-am lasat pacalit, prea usor, de schema, in care EEPROM-ul este legat in configuratie neprotejat la scriere, motiv pentru care m-am gandit ca e destinat numai stocarii de patch-uri. Acum ma gandesc ca poate este folosit SI pentru stocarea de patch-uri,  dar nu exclusiv. 
Poate fi asa ?

 

Da.  24LC256 este folosit pt a salva  configurari . Foarte convenabil, avand in vedere de cat curent are nevoie pt operatiile de citire/scriere. Rutinele decompilate pot fi inceputul unui alt software care se pot recompila si transforma in cod executabil pt CPU ARM CORTEX-0 cu care este dotat Teensy LC .  Dar trebuie inteles exact ce face iar pt asta trebuie luat absolut tot codul la verificat .

Daca ai avea controller-ul original te-ai putea lamurii  despre ce este vorba. Tools de folosit sunt :  Arduino IDE (  https://www.arduino.cc/en/Main/Software )cu plug-in de la Teensy LC (  https://www.pjrc.com/teensy/teensyduino.html ) . Se instaleaza pe orice PC si se poate accesa Teensy prin conexiune USB .

 

Share this post


Link to post
Share on other sites

Din pacate abilitatile mele in electronica digitala sint destul de limitate, iar in programare tind spre zero, asa ca investigarea, in adevaratul sens al cuvantului, a ce si cum se intampla, ar fi un demers mai degraba imposibil pentru mine. N-as scoate-o la capat fara ajutor serios...

Asa ca, ma gandesc la copierea continutului acelui EEPROM original. Se pare ca am sa obtin MC6 original (proprietarul inca il mai are), undeva in Ianuarie,  si am sa incerc "ingineria" asta cu copierea,  ca ultim pas care imi mai sta in putere. Ce va fi...va fi...

Revin 100 % cu vesti, dupa ce incerc ! Asa, ca sa se stie... :) 

Share this post


Link to post
Share on other sites

Revin, mult mai repede decat ma asteptam, cu noutati.
Am reusit si am obtinut controllerul original si functional ieri. Asa ca am trecut la copierea EEPROM-ului (24LC256)

Operatiunea s-a facut cu succes (era ocupat aproape integral-cateva adrese libere) insa, din pacate, la montarea in circuit
nu s-a produs schimbarea asteptata. Pe scurt - nu functioneaza :((

Probabil ca contine numai patch-uri, cum credeam initial...
Dezamagire mare, dar am zis: aia e ! N-am ce sa fac...

Intre timp, am mai studiat un pic EEPROM-ul intern (cel emulat) despre care citisem ceva si eram onvins ca este cumva "volatil" si isi pierde continutul la re-flash.
Surpriza: nu e volatil deloc. Nu stiu cum de nu e, dar nu e. SIGUR. AM facut probe cu Teensy-ul meu, am scris cateva adrese, aleator si dupa reflash repetat
cu diverse hex-uri, continutul EEPROM-ului era bine-merci la locul lui. Asa ca, se pare ca daca este ceva informatie necesara boot-ului, in acel EEPROM este.
Din informatiile pe are le-am mai gasit, este o practica, inteleg, destul de raspandita de pastrate a unor informatii/setari care raman importante si in cazul unui update de 
software.
Deci, concluzia directa ar fi sa-l copiez si pe acela. Da, DAR CUM ?
Nu reusec deloc sa gasesc un utilitar care sa ma ajute sa citesc continutul EEPROM-ului intern (Gen PICKIT). 
CE SA FAC ??

De citit si scris, treaba se face foarte usor, numai ca ar trebui sa sterg flash-ul din controller-ul original, si sa scriu in locul lui o mica aplicatie care, 
in momentul in care ruleaza, citeste adresele EEPROM-ului, la rand, si le afiseaza pe comunicatie seriala. Asa am facut cu Teensy-ul meu si merge brici.
Dupa care, ca sa readuc la viata controllerul original, ar trebui sa-i rescriu software-ul (hex_ul, cel de pe site). Asta in teorie cel putin. 
Gresesc ceva ? Imi scapa ceva ??
Intreb pentru ca daca, lucrurile nu decurg cum gred eu, inseamna ca o sa pot sa citesc EEPROM-ul, dar e indoielinic ca o sa mai readuc la viata controller-ul original.

Ce sa fac ?
Cum sa citesc EEPROM-ul fara sa ma ating de programul scris in Flash ?  

Share this post


Link to post
Share on other sites

Cred ca ar trebui sa verifici cu un MIDI monitor ce semnale MIDI transmite   si la ce semnale /cod raspunde cea  ce vrei sa comanzi

Windows: MIDI-OX

Poate este doar o incompatibilitate  in aceste coduri ..?

La controler-ele MIDI pot sa atribui diferite  comenzi CC  la diferite butoane  .

Trebuie sa verifici daca genereaza /transmite  codurile corecte .

Pe langa toate acestea si unele controlerele MIDI  comerciale ptr DAW fac figuri  de multe ori ..

Sa nu fie  careva  un MIDI " cod intern "  adica nestandard .. de  ex tobele din Zoom R24  sunt MIDI dar un au un  " cod intern " ce are nevvoie de un convertor ca sa-l poti utiliza  sau programa in DAW  cu MIDI Standard ..apoi sa convertesti la loc daca vrei sa utilizezi tobele interne din sequencerul lui  R24 .

Nu are  un ""Blog " sau un Forum acest proiect .?..cu comentarii si intrebari ? De obicei au asa ceva si acolo poti sa dai de rezolvare .Poate poti sa dai email proiectantului si i=ti raspunde cu o rezolvare .

 

Edited by karpi

Share this post


Link to post
Share on other sites

Poate, dar nu cred ca asta e problema, acum. Eu vreau doar sa copiez o schema functionala si pana in acest moment am copiat tot, mai putin continutul EEPROM-ului intern din uC.

Si aici m-am blocat, pentru ca mi-e cam frica sa sterg flash-ul ca sa ajung la EEPROM. M-ar ajuta un instrument cu care sa citesc direct EEPROM-ul.

Share this post


Link to post
Share on other sites
On 12/16/2017 at 16:48, Messu said:

Intre timp, am mai studiat un pic EEPROM-ul intern (cel emulat) despre care citisem ceva si eram onvins ca este cumva "volatil" si isi pierde continutul la re-flash.

Surpriza: nu e volatil deloc. Nu stiu cum de nu e, dar nu e. SIGUR. AM facut probe cu Teensy-ul meu, am scris cateva adrese, aleator si dupa reflash repetat
cu diverse hex-uri, continutul EEPROM-ului era bine-merci la locul lui. Asa ca, se pare ca daca este ceva informatie necesara boot-ului, in acel EEPROM este.

 

Din setari este protejat la scriere  .

Ai incercat sa-ti instalezi Teensyduino ? Cu utilitarul asta ar trebui sa poti copia , in binar ,  tot continutul din Teensy LC .

Programul controller-ului este in Teensy si nu in 24LC256 . Din 24LC256  ai copiat doar ceva preseturi si posibil alte valori constante care pot fi comparate in timp ce ruleaza aplicatia din Teensy.

 

 

Teensduino  https://www.pjrc.com/teensy/tutorial.html

Edited by ggg

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


  • Recently Browsing   0 members

    No registered users viewing this page.