A2I2C - I2C bus for Atari

Moderator: bbiernat

Post Reply
User avatar
Posts: 43
Joined: 18 September 2013, 23:02 - Wed
Location: SILESIA

A2I2C - I2C bus for Atari

Post by pancio »

This article is clue of my topic on Atari.area Forum. Nowadays IoTs are everywhere so why not to use those with Atari? I decided to make interface which can communicate with I2C bus and might be connected with 8 bit parallel 6502 bus.

I found IC which will be very helpfully, his name is PCF8584. This IC might work with two different modes, IMC 6800(0) which should be default and 80XX for others processors. Unfortunately 65C02 is working with little bit difficult time frames so the default mode doesn't work with Atari computer. I decided to build additional decoder for /OE and /WE signals and finally to use the 80XX mode.

It was good decision... it's doesn't matter which method you used. The important is that it's working! :-)

I designed two separately PCB, one for external connection using CART/ECI, second as adapter between CPU and PCF8584. The PCB are very easy to assemble, both are available on http://seeedstudio.com and http://dirtypcbs.com/store/order/204600 ... 6ae6053af1 so if you are interested in to run your own interface please use my project.

Of course I shared the EAGLE files and source code below.

If you have any question, don't be hesitate :-) Just ask.

version 1.1 PCB:
a2i2cv11.png (46.65 KiB) Viewed 7248 times
version 1.1 PCBpoly:

version 2.1 (PCB mounted on CPU):
Quick User Guide for version 1.1:
The PCB is prepared with full description so assembly process should be very easy. Just iron required elements on PCB.
a2i2c11sch.png (33.05 KiB) Viewed 7211 times
Then you must build IDC plugs on strips (one plug per strip) and connect cables to required signals. Most signals you may find directlu on CPU socket on the bottom PCB side.
Socket X1:
1 - A0
2 - A4
3 - A5
4 - A6
5 - A7
6 - /D5XX (from cartridge socket or memory decoder)
7 - /RTS
8 - /IRQ
9 - R/W
10 - O2
X1.png (19.16 KiB) Viewed 7203 times
Socket X2:
1 - D0
2 - D1
3 - D2
4 - D3
5 - D4
6 - D5
7 - D6
8 - D7
9 - VCC
10 - GND
X2.png (18.47 KiB) Viewed 7203 times
JP2 - address selector (1 jumper!)

Socket I2C:
1,3,5,7 - SDA
2,4,6,8 - SCL

JP2 is determining ADDRESS as provided below:
a2i2c11truetable.png (29.12 KiB) Viewed 7211 times
One important note, decoder which I build is not fully decoding, It's mean that you should to expect shadow register. (e.g. $D580, $D582...$D58E are using to address the same PCF register),

If you were avoid any errors you may connect I2C device directly to I2C socket :-)

Update for version 1::

If you are planed to mount any I2C device outside the Atari I would to recommend use little bit modified PCB which contain separately socket in order to power I2c devices:
A2I2C v1.2 schematic
A2I2C v1.2 schematic
a2i2c12sch.png (35.48 KiB) Viewed 7199 times
A2I2C v1.2 PCB
A2I2C v1.2 PCB

Quick User Guide for version 2.1:

All required signals are available on CPU sockets so only one signal (/D5XX) you should wire from CART socket or memory decoder IC.
Please select address by using 1 jumper (truth table is the same as for version 1.1).

One important note!
There is no possibility to use version 2.1 and close cover for 800XL. If you plan to have closed Atari 800XL - you should to consider to use version 1.1.
I didn't test the interface with XE series, so maybe it's possible for that :-).

That's all, have fun!
(8.26 KiB) Downloaded 406 times
(49.61 KiB) Downloaded 396 times
(46.03 KiB) Downloaded 400 times

Post Reply