MIDI

Hogyan programozzak AVR chipet? Programozók beállításai...
Bascom nyelvű programok...
Válasz küldése
Avatar
magic
DrótVégénSzéndarab
Hozzászólások: 29
Csatlakozott: 2005. december 10. szombat, 7:00

MIDI

Hozzászólás Szerző: magic »

Haliho!

Az lenne a feladat, hogy elkapjam a "program change" uzeneteket.
Az elso byte a "control change" parancs, ahol nnnn (0-16) MIDIcsatorna sorszama.
A masodik byte a program sorszama.
Mar az elejen nem stimmel vmi:

' Kiirja az LCD-re, a MIDI adatokat
' A belso 4MHz-es orajelrol mukodik.
$regfile = "Attiny2313.dat"
$crystal = 4000000
$baud = 31250

' LCD konfiguracio
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , E = Portb.1 , Rs = Portb.2

' Parancs byte
Dim Parancs As Byte
' Adat byte
Dim Adat As Byte

Adat = 0
Parancs = 0

Cls

Do
Parancs = Waitkey()
Adat = Waitkey()
Lcd Parancs ; " - " ; Adat ; " "
Loop

End

Ha jon egy parancs, mindig "252 - 0"-t ir ki.
Ami jo, tenyleg 2 byte-ot kap
Ami rossz, nem ezt a ket byte-ot.
A parancs kodja 192 es 207 kozott kell legyen, tehat 252 kizart.
A program pedig 0 es 128 kozott lehet, de ez sem jo mert a 2-est kapja.
Szoval mit rontok el?
Az RS232 illesztes igy nez ki:
http://www.avrfreaks.net/index.php?modu ... lay&mid=94
Kicsit modositani kellett, mert a 280 ohmmal naon pici jelet adott (nem vett semmit). Most egy 3.4k van ott.
Asszem holnap beruhazok egy MAX232-be, hogy a HW hibat biztosan kizarhassam.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

Felesleges a MAX232. Hacsak nem +- 12Vs a jelszint. Optikai levalaszto eleg.

A 280 ohm telleg meredek a rajzon:), nalam alt 1k5...4k7 szokott a felhuzo lenni es onnan megy a TX/RX labra.

Amit beraknek:
- Buffert a sorospoprthoz.

Probald meg a nullkabelt. Azzal lehet tesztelni.
A MIDIN optikai levalasztasnak kell lennie.
Optocsatolonak mit hasznalsz? az is torzithat....
Avatar
magic
DrótVégénSzéndarab
Hozzászólások: 29
Csatlakozott: 2005. december 10. szombat, 7:00

Hozzászólás Szerző: magic »

Kiprobaltam max232-t kotottem a demopanel soros portjara.
Az eredmeny kiabrandito. Nem valtozott semmi.

A buffer nem segitett.
Optocsatolo a 4n25 lett. (ez volt keznel)
---
Gondoltam legyen egy kis sikerelmenyem megprobalok midi parancsot kiadni. Hat ez se jott ossze.

pl. a print chr(193);chr(2) hatasara nem tortenik semmi :(
At kellene kapcsolnia a 2.programra.
A kutyu jelzi, hogy kap midi jelet(midi lampa felvillan), de nemtortenik semmi.

Vmit nagyonelszurok, de azt modszeresen.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

Igen. A 4N25-t.....

9600 bps-t tudtam stabilan atvinni vele csak:(
A LED/tranyó nem zárt le eléggé, és a tranzisztor nyitbamaradozgatott....
Avatar
magic
DrótVégénSzéndarab
Hozzászólások: 29
Csatlakozott: 2005. december 10. szombat, 7:00

Hozzászólás Szerző: magic »

Amikor a MAX232-t bekotottem, mar nem hasznaltam az optocsatolot.

Milyen - a sarki fuszeresnel is kaphato? - tipussal dolgozol "nagy"sebessegen?
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

Semmilyennel. A projekt egyenlőre halasztás alatt van....

A Max232-vel vigyázz! A kimenete (T1, T2) 12V-os! A midicsatornát agyonvágja azt leshetsz....

De tipp:
FET alapon megfogni? ott a leválasztás megvan. Kapacitív a jel....
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

Kis összefoglaló, hátha valaki belefut:

A soros kommunikáció 31250 bps-l megy, ehhez a 7.3728MHz-s kristállyal csak nagy hibával lehet ráfutni. Így a belső oszcillátor (4MHz) merült fel elsőnek. ekkor 0% hibával megy. DE: a belső RC tagot kalibrálni kell a OSCCAL taggal (ld. biztosítékbitek+adatlap). viszont ha ennek sebességét növeljül a belső műveletek megzakkanhatnak (pl. EEPROM írása).
Így marad a külső kvarc cseréje 4 MHzre.

A kommunikáció során ha print chr(X) utasítást adjuk ki akkor a soros kimeneten X kód megy ki, ahol X=0....255, valamint utána a 10 és a 13 kód is! Ez a soremelés(CR)+kocsivissza(LF) kód!

Hogy ne így legyen a következő a teendő:
A print chr(X) helyett a print chr(X); uatsítás kell. Itt a pontosvessző a lényeg! Ekkor nincs soemelés+kocsivissza.


Remélem sikerült segíteni, hátha valaki ráfut erre... Ismét. :P
Avatar
magic
DrótVégénSzéndarab
Hozzászólások: 29
Csatlakozott: 2005. december 10. szombat, 7:00

Hozzászólás Szerző: magic »

En is megakartam irni a megoldast, de megeloztel :)

Annyit pontosiranek, hogya CR a kocsivissza (carriage return), az LF pedig a soremeles (line feed).
Avatar
Ubul
DrótVégénSzéndarab
Hozzászólások: 48
Csatlakozott: 2006. január 6. péntek, 7:00

Hozzászólás Szerző: Ubul »

Sziasztok!

Én is szeretnék midi in/outot.
Fizikailag hogy értétek el?

Kép

Ha az AVR RxD és TxD lábaira simán rá aplikálom a képen
látható kapcsolást, gondolom rendben van a dolog.

Üdv: Peti
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

Jónak tűnik....
lajostoth

Hozzászólás Szerző: lajostoth »

Avatar
Qwertz76
Újonc
Újonc
Hozzászólások: 3
Csatlakozott: 2007. augusztus 15. szerda, 6:00

Esetleg hasznos lehet számotokra...

Hozzászólás Szerző: Qwertz76 »

'Midi Tack Drums
'Készítette: Albert Sándor


'------ M I D I DOB-----------

'(MIDI Drum Sound MIDI Drum Sound
Note # Note #
35 Acoustic Bass Drum 59 Ride Cymbal 2
36 Bass Drum 1
37 Side Stick
38 Acoustic Snare
39 Hand Clap
40 Electric Snare
41 Low Floor Tom
42 Closed Hi -hat
43 High Floor Tom
44 Pedal Hi -hat
45 Low Tom 69 Cabasa
46 Open Hi -hat
47 Low -mid Tom
48 Hi -mid Tom
49 Crash Cymbal 1
50 High Tom
51 Ride Cymbal 1
52 Chinese Cymbal
53 Ride Bell
54 Tambourine
55 Splash Cymbal
56 Cowbell
57 Crash Cymbal 2
58 Vibraslap ')
')
'(
60 Hi Bongo
61 Low Bongo
62 Mute Hi Conga
63 Open Hi Conga
64 Low Conga
65 High Timbale
66 Low Timbale
67 High Agogo
68 Low Agogo
70 Maracas
71 Short Whistle
72 Long Whistle
73 Short Guiro
74 Long Guiro
75 Claves
76 Hi Wood Block
77 Low Wood Block
78 Mute Cuica
79 Open Cuica
80 Mute Triangle
81 Open Triangle

Minta : Print Chr(153) ; Chr(38) ; Chr(x); !!!!!!!!!!!!!!!!!!!!!!!!!!!

Chr(153) = 10 Midi Csatorna (DOB csatorna GM midi kiosztása szerint.)
(A csatorna hexadecimális értékének a decimális értéke)


Itt nem kell hexa-ban gondolkodni. Élből dec-ban kell megadni.
Chr(38) = A Kiválasztott Hang Megszólaltatása
Chr(x) = Hangerő(0 - 127)
')
Válasz küldése