Unfortunately my Arduino experiments hit a brick wall. The read function, as always, works perfectly; it correctly detects the CCM poll message and reacts to it accordingly. But the transmit is not working. I built a circuit according to the diagram featured here, though I did have to use three 2N3906 transistors since I didn't have an extra 2N2906 layout around; don't think that's actually important but maybe I'm wrong. Anyway, using this circuit the receive works perfectly fine, but the transmission never reaches the ALDL. I know this because I've wired the Arduino directly into pins 1, 3 and 29 of the Blue connector on the PCM harness and kept my laptop plugged into the ALDL port monitoring idle traffic. There is never any response on the ALDL from my Arduino even though it's clearly seeing the CCM poll and running through its transmission routine. So for now, I'm stumped. I'll try finding a 2N2906 and see if that actually makes a difference.
Also, as a note, my '94 has FX3. Both my '94 and '95, as you surmised, have C68.
EDIT: I did a bunch of debugging for my Arduino. The problem must be hardware-related. Since I'm using a Mega 2560 I have several other hardware UARTs to mess with, so I looped TX1 into RX3 and outputted the contents of RX3's buffer to the Arduino IDE Serial Monitor. When plugged into the ALDL, the serial monitor output is exactly the same as the output for the TX part of my code. So my code is correctly identifying the CCM's poll request, and is correctly responding to that request by dumping the 21 bytes of data out the TX pin. Yet for some reason, that transmission is not actually making it onto the ALDL bus.
Looking again at that website I linked above, his schematic lists 2 2N3906 transistors and 1 2N2906 transistor. Yet his photograph of the system in operation shows 4 2N3906 transistors. A 2N2906 is TO-18, not TO-92 like the 2N3906 transistors (and all 4 transistors in his photograph). So his schematic appears to be incorrect if the photograph he has is indeed a functioning system reading from 8192 ALDL. Great. So back to digging around to see if there's a "correct" way to hook an AVR up to a half-duplex one-wire UART like this.
Bookmarks