I am currently working on a project that has given me a rough time.
I need to establish a serial connection to transmit from Arduino to and old Roland Juno-60 synthesizer. The problem is, that my serial data seems to match exactly the "DCB"-protocol specified by the synth manual (31250 baud, separate clock signal, 1 start bit, 8 data bits, LSB first, odd parity, 2 stop bits, logic HIGH=0v, LOW=5v), but it doesn't work. It is supposed to make the synth play some notes, but nothing is happening..
The sketch I've written is based on a timer interrupt to generate a 31250hz clock signal on dPin 3, and standard Serial.write() for the data transmission. The wierd thing is, that I have a previous sketch using a modified shiftOut()-function (to control the clock speed) that kinda works, even though the clock signal is quite unstable, oscillating between ~30k baud and 35k baud. This sketch actually triggers the synth, though the bytes recieved are by no means correct, and is quite impossible to control. However, it DOES trigger the synth, which I find a tad weird..
I've tried all sorts of workaraounds, but the only possible solution I can think of is, that the data signal from my tx-pin is perhaps not strong enough for TTL, when running it through a NOT-gate before it is send to the synth. In the "shiftOut"-sketch, the data signal is generated on dPins with digitalWrite() and is not inverted, and I figured that the solutions lies somewhere in this..
I'm not too bright in analogue electronics and the specifics of TTL, but could it be that the not gate (real basic made with two 10k resistors and an M2222 NPN) somehow make the data signal, voltage or current too weak?
By the way I have some LogicSniffer files and screendumps from both sketches, and from a readout from the synth (which shows the "real life" data stream, clock, etc.) that I could post if necessary..