PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Midi Ansteuerung



Marlic
08.09.2006, 11:26
Hallo ich bin neu hier und möchte doch so gleich mal das Forum hier testn.
Habe natürlich auch schon ein Problem mitgebracht. Ich möchte mit meinem AVR (Mega8515) per Midi mein Keyboard ansteuern. Habe dieses erstmal in Bascom versucht:

$crystal = 8000000
$baud = 31250

Print &H90 (9: note on / 0: kanal 1)
Print &H3C (3C: entspricht c mittlerer lage)
Print &H7F (7F: anschlag = 127)

ich bekomme nur drei merkwürdige töne zu hören und denke ich sollte die serielle ausgabe lieber in asm schreiben. das protokoll hab ich richtig gelesen denke ich .. es müssen drei bytes ausgegeben werden mit einem startbit und 1 stopbit.

http://www.serasidis.gr/circuits/MidiGenerator/MidiGenerator.htm

vllt kann mir jemand helfen wie ich hier fortsetzen kann!?

Dim B1 as Byte
Dim B2 as Byte
Dim B3 as Byte

B1=&H90
B1=&H3C
B1=&H7F

$asm

...

$end asm

PicNick
08.09.2006, 12:24
Strichpunkte ! sonst hängt er CRLF an (Zeilenvorschub)
Print &H90;&H3C;&H7F;

(muss nicht assembler sein )

Marlic
08.09.2006, 12:31
das hilft nichts .. das keyboard gibt immer noch drei töne von sich ...

allein print &h90 gibt einen ton das dürfte garnicht sein
auf die betriebsnachricht hF7 kommt auch ein ton.

der fehler muss woanders liegen ...

Marlic
08.09.2006, 12:33
mein code bis jetzt:

$crystal = 8000000
$baud = 31250

Config Portd = Output

Main:

Waitms 100
Print &H90 ; &H3C ; &H7F;
Waitms 100

End

PicNick
08.09.2006, 12:42
Könnte das ein Baudratenfehler sein ? ---> d.h. der µC arbeitet mir dem internen Quartz statt mit deinen 8 MHZ ? ---> (fuses)

Marlic
08.09.2006, 13:08
ja scheint mir auch so .. funktioniert sowas mit dem internen quartz nicht?
hab die fuses mal auf 8 / 4 / 1 Mhz gestellt und dazu die angabe $crystal = .. angepasst

Marlic
08.09.2006, 13:09
hab zu dem versucht die baudrate um 50 - 100 höher und niedriger zu setzen aber se ergibt sich immer der gleiche effekt. bei änderum um 1000 reagiert das keyboard garnicht.

PicNick
08.09.2006, 13:39
also wichtig ist nur, das "CRYSTAL=" stimmt, egal ob intern oder extern.

Versuch: dreh am DIN-stecker mal 4 u. 5 um

Marlic
08.09.2006, 13:52
hm die crystal angabe war eindeutig richtig .. okay ich werd mal 4 und 5 vertauschen ..

ist der interne denn ganz genau bei 8000000?

Marlic
08.09.2006, 13:55
okay habe vertauscht .. hat nichts gebracht .. keine reaktion .. die polung war schon richtig denke ich!

PicNick
08.09.2006, 16:15
mmmmmh. Tja.
Sicher ist eins: die Printsequenz stimmt so. also geht's um die Hardware und die Baudrate.

Marlic
08.09.2006, 16:24
kann die baudrate bis um 100 ändern und immer noch die selben komischen töne ... deswegen hatte ich die idee mit dem asm damit die bit's auf jedenfall richtig gesendet werden. ich mach mal fotos von der hardware gibt aber nicht viel zu sehen!

Marlic
08.09.2006, 16:31
http://home.arcor.de/marcel.licence/2006-09-08-17-27-01.jpg

PicNick
08.09.2006, 18:02
AU weia, bitte nicht schlagen :oops:
Das heisst:

Print chr(&H90) ; chr(&H3C) ; chr(&H7F);


*schande*

Marlic
08.09.2006, 19:03
könnt dich küssen ^^ naja dankeschön ich freue mich ja jetzt derbst .. komische sache, das der sonst kein byte sendet dass muss ich mir noch erklären lassen ;)

PicNick
08.09.2006, 19:14
Die Schweinebacke schickt
"&H90"
weg, in ASCII, so wie's da steht, also 4 Zeichen.
Logo fängt das Keyboard dann zu brummen an.

Marlic
08.09.2006, 21:17
ich habs schon selber kapiert ^^ also print wandelt die integer automatisch in einen string um kein wunder, das immer gleich schon ein ton kam