logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.
REKLAMA
  • #1 624596
    borel
    Poziom 11  
    Witam, planuję budowę syntezatora analogowego, w oparciu o schematy różnych rozwiązań publikowanych w latach 70/80 w Re. Ponieważ czasy się zmieniły, kości potaniały i stały się dostępne - chcę zapewnić mu sterowanie z 8051 przez wejście MIDI IN. MIDI OUT podpatrzyłem ;) w EP w opisie klawiatury sterującej, wykorzystującej 8051. Był potem opis (chyba) iluminofonii sterowanej przez MIDI IN i opisany program w asemblerze (ten język preferuję) ale, jak dla mnie, trochę mętny. Może ktoś z Was rozgryzał już taki problem? Chodzi mi o odebranie komunikatu MIDI i po przetworzeniu go wysłanie na podpięty do procesora układ 8255. Pozdrawiam :)
  • REKLAMA
  • #2 891364
    Paweł Es.
    VIP Zasłużony dla elektroda
    Dla zgodności ze standardem MIDI odbiornik musi mieć separację galwaniczną (poszukaj rozwiązań interfejsu do SBlastera tam jest dokładny schemat o ile pamiętam to rezystory 270 omów i 220 omów, transoptor 6N35 ale CNY17-2 też działa) elementy obliczone dla 5V i 5 mA prądu pętli.
    Za transoptorem dajesz bufor i wprowadzasz to na nóżkę rxd 8051.
    Transmisja ma szybkość 31250 bit/s z dokładnością 1%.
    1 bit startu, 8 bitów danych, 1 bit stopu (1 bajt trwa 320 us).
    Komunikat jest 2 lub 3 bajtowy. Decyduje pierwszy bajt ciągu: 4 najstarsze bity to rozkaz, 4 najmłodsze numer kanału (numeracja od 0 do 15).
    Bajt rozkazowy ma ustawiony najwyższy bit, bajty danych wyzerowany.
    Zwykle kodowanie idzie:

    rozkaz,dane

    lub

    rozkaz,dane,dane

    czasami jeżeli idzie ciąg tych samych poleceń to wysyłany jest tylko pierwszy bajt rozkazowy a potem dane (tzw. running status). Jeżeli następuje zmiana rozkazu to znów przesyłany jest bajt rozkazowy.

    Jeżeli dane nie są przesyłane (długie nuty, lub pauzy) to co ok. 300 ms
    wysyłane jest jednobajtowy komunikat ActiveSensing sygnalizujący, że łącze jest aktywne i nie ma przerw w kablach.

    Jeżeli idą komunikaty czasu rzeczywistego (Zegarm start, stop,itp) to ActiveSensing nie jest nadawany.

    Dokładny rozdział sygnałów wymaga analizy starszych czterech bitów i reagowanie zależnie od ich zawartości.
    Rozkazy nieobsługiwane (np.SystemExclusive) urządzenie pomija.

    Pozdrawiam.
  • REKLAMA
  • #3 926815
    Joachim Krukowski
    Poziom 17  
    Paweł Sujko napisał:
    Dla zgodności ze standardem MIDI odbiornik musi mieć separację galwaniczną (poszukaj rozwiązań interfejsu do SBlastera tam jest dokładny schemat o ile pamiętam to rezystory 270 omów i 220 omów, transoptor 6N35 ale CNY17-2 też działa) elementy obliczone dla 5V i 5 mA prądu pętli.[...]


    CNY17 jest za wolny, praktyka pokazuje, ze czesto nie dziala. Standardem dla MIDI jest SHARP PC900 i pochodne niemu parametrami.

    --
    J.
  • REKLAMA
  • #5 984786
    kaseihome
    Poziom 14  
    Tak jak zacząłem pisać (bo IE5.5 nawalił) zbudowałem na Atmelu cały odwarzacz MIDI. 8051 ma zarówno RxD jak TxD, więc używanie portu równoległego nie jest konieczne, chyba że posiadasz syntezator Dream'a z wejściem równoległym. Nie proponuję Ci stosowania CNY17(1,2,3) choć i takie rozwiązania istnieją, lecz są problemy w komunikacji z niektórymi instrumentami np. Yamaha QS300. Najlepszym rozwiązaniem jest zastosować PC900 Sharp'a lub 6N138. Ten ostatni jest w Atari ST z którego korzysta wielu wykonawców i studia nagraniowe. Pamiętaj że interface MIDI pracuje w pętli prądowej, więc CNY17 nie za bardzo się do tego nadaje. Dorzucam Ci zaprojektowane przeze mnie płytki do interfejsu MIDI na 6N138. Pliki w formacie PDF. Jeśli zasilanie twojego '51 jest niższe od 5V musisz zastosować konwerter. MIDI pracuje na 5V.
    Jeśli będziesz miał pytania ---> postuj.
REKLAMA