In my last update I experienced problems with the i2c interface on my HD9800 video conversion board. I thought I’d fixed it. Sadly, nothing is quite that simple…
I soldered the pull-up resistor onto the board yesterday and did some more extensive testing:
I think the board’s still not quite well. Without the Arduino connected, I get menus and a display some of the time, but not all the time.
With the Arduino, my logging indicates that it’s occasionally failing to read i2c registers, and a test display from the Amstrad sometimes works, and sometimes doesn’t.
Putting a multimeter on the the SDA line shows 1.8-2v most of the time, which still isn’t right (it should alternate between 0 and 3.3v).
So it sounds like I’ve improved the SDA line, but not totally fixed it.
I might try a bit more debugging of it sometime, but I decided to buy another HD9800 just to be sure. £12.87 shipped from China in 20-40 days (likely to actually be under 2 weeks from my recent experience).
Whilst I hate walking away from problems, sometimes life’s too short!
Today I did a little more experimentation. I’ve got no clear idea what’s going on, but here’s more debugging info, I’m putting it here for my future reference as much as anything!
- With no video input connected, I get reliable i2c communication (but the SDA line is only ever pulled up to about 2v, not 3.3v).
- When the video input is connected, I suddenly get read/write errors on i2c, although the SDA line is now correctly pulled up to 3.3v.
- This means I can get it working by unplugged the video input, booting up the Arduino, then plugging the video input in again. Not ideal, but a workaround.
- I should theoretically be able to remove the 5v<->3.3v bidirectional level shifter from the circuit. This is because my software only ever grounds the serial pins or leaves them floating. But removing it causes all serial comms to “succeed” but only read zeros (with the video input disconnected).
I’m not sure what all this means, other than something strange being not right. But maybe these symptoms will make more sense in the future.
New board is on its way, we’ll see if that fixes anything!