MIDI kominukace na PIC přes UART

Problémy s návrhem, konstrukcí, zapojením, realizací elektronických zařízení

Moderátor: Moderátoři

Odpovědět
Zpráva
Autor
StoMik

MIDI kominukace na PIC přes UART

#1 Příspěvek od StoMik »

Zdravím,
snažím se přes PIC 16f877a posílat data (sériový přenos MIDI) na zvukovou kartu, konkrétněji na gameport kde býva MIDI vyvedeno v TTL logice. Krystal je 4Mhz. Myslím, že mám problém spíše v zapojení mezi PICem a konektorem na PC něž v programu, ale pro úplnost ho sem radši dám. SPBRG mám nastaveno na 0x01 a TXSTA na 0x22. RCSTA,CREN a RCSTA,SPEN jsou na 1.
Tato rutina posílá data:

Kód: Vybrat vše

SER_TX       btfss      PIR1,TXIF
       goto       $-1           
       movwf      TXREG
       return

V simulátoru mi data z PICu normálně odcházejí, ale když odchytávám vstup na MIDI (pres MIDI OX) tak mi nepřichází nic nebo úplné nesmysly. Jak by měl být propojen PIC s gameportem? Na internetu jsem našel mnoho schémat, ale žádné nezpůsobilo, že by data chodily jak mají.

Předem moc díky za pomoc
StoMik
Uživatelský avatar
kelley
Příspěvky: 192
Registrován: 04 led 2008, 00:00
Bydliště: Brno

Re: MIDI kominukace na PIC přes UART

#2 Příspěvek od kelley »

Spíš jen tak obecně o hardwaru (nejsem zas tak zběhlý v programování):
a) Máš zjištěno a zajištěno, že rychlost sériových dat je 31250Hz ?
b) když posíláš data přímo z PICu, nemusíš se zabývat optickým oddělením a můžeš to připojit "natvrdo" do gameportu. Možná bych tam pro klid duše dal nějaké oddělovací hradlo (2*7404, 7414 apod...).
EDIT: ale když to půjde jen v úrovních TTL, musí být ten spoj mezi PC a PICem co nejkratší (tak do půl metru).
c) máš dobře zapojený vstup a výstup ? Pokud ti jde jen o přenos dat z PICu do game portu, pak vstup dat je na pinu 15. Z game portu do PICu to bude pin 12. Nezapomeň propojit zem na obou stranách (piny 4, 5).
d) MIDI protokol není zas až taková legrace - máš tam smysluplná kompletní MIDI data ve správném formátu ? Viz třeba http://www.root.cz/clanky/rozhrani-midi-na-osobnich-pocitacich nebo http://www.midi.org/techspecs/index.php
EDIT2:
e) Používáš napájecí napětí 5V ? 3V je v tomto případě pro komunikaci s PC málo.
Návštěvník

#3 Příspěvek od Návštěvník »

Rychlost by podle datasheetu měla být správně. Ovlivňují ji právě registry SPBRG a TXSTA.
Mezi PIC a gameport jsem zkoušel dát invertor (74hct04), jelikož sem se dočetl, že na gameportu je signál obráceně (v klidovém stavu je log 1). Nicméně nefunguje mi to s ani bez invertoru. Propojené to mám asi na 25cm.
4 a 5 pin jsem propojený neměl, nicméně ani jejich spojení nedonutilo komunikaci fungovat.
MIDI protokol je doufám správně (posílám MTC), takže vždy pošlu jeden bajt 0xF1 a pak jeden datový bite podle specifikace (jednotky a šestnáctky v časovém kódu se posílají zvlášť).

nenapadá tě, prosím, ještě něco co by to mohlo způsobovat? Bude to asi nějaká prkotina, protože téměř všechny schémata na internetu prostě propojí TX a zem na konektor a už to jede :)

Dík
StoMik
Uživatelský avatar
kelley
Příspěvky: 192
Registrován: 04 led 2008, 00:00
Bydliště: Brno

#4 Příspěvek od kelley »

Tak to už mě nenapadá nic :(
P.S: taky se chystám na nějaký blbnutí s mikrokontroléry a MIDI, zatím jsem se nimral spíš v hardwaru (např. jsem vyrobil funkční kopii Yamahy MU-15 ze zvukové karty, resp. waveblaster modulu DB50XG...), ale ještě jsem se k tomu nedostal.
Odpovědět

Zpět na „Řešení problémů s různými konstrukcemi“