•  Back 
  •  DIMM EEPROM 
  •  Index 
  •  Tree View 
  •  Cross references 
  •  Help 
  •  Show info about hypertext 
  •  View a new file 
Topic       : Documentation of the CT60
Author      : Didier MEQUIGNON
Version     : Version 2.00 (December 11, 2010)
Subject     : Documentation
Nodes       : 135
Index Size  : 3664
HCP-Version : 3
Compiled on : Atari
@charset    : atarist
@lang       : 
@default    : 
@help       : 
@options    : -i
@width      : 75
View Ref-File10.6.3  RANDOM READ PROTOCOL & SOFTWARE                           CT60


index=108
The slave address is 1010000. The eight bit is the R/W bit. Random read operations allow the master to access any memory location in a random manner. Before issuing the slave address with the R/W bit set to one (Read), the master must first perform a dummy write operation. The master issues the start condition, slave address and then the word address it is to read. After the word address ACK, the master immediately re-issues the start condition and the slave address with the R/W bit set to one. This will be followed by an ACK from the slave and then by the eight bit word. The master will not ACK the transfer but will issue a stop and the slave stops transmission and goes into standby. The device that controls the transfer is referred to as the master (SDR60 chip) and the device that receives the data (EEPROM) is referred to as the slave device. The master will always start a data transfer (SDA line) and will provide the serial clock (SCL line) for synchronization. The 060 CPU must drive the SCL and SDA lines. These lines are connected to 2 pins of the logic chip. The address $F00xxxxx is used for SCL and $F08xxxxx is used for SDA signal. SCL (Clock) LONG WRITE at $F0000000 WRITE 0 to SCL Falling edge of SCL LONG WRITE at $F0400000 WRITE 1 to SCL Rising edge of SCL LONG READ at $F0000000 READ from SCL Value is available on D1 of the CPU data bus. SDA (Data) LONG WRITE at $F0800000 WRITE 0 to SDA LONG WRITE at $F0C00000 WRITE 1 to SDA LONG READ at $F0000000 READ from SDA Value is available on D0 of the CPU data bus. EXAMPLE If you want to read the Byte #3 from the EEPROM : START condition LONG WRITE at $F0800000 WRITE 0 to SDA LONG WRITE at $F0000000 WRITE 0 to SCL Falling edge of SCL SLAVE ADDRESS (Write at 1010000) Write 1 LONG WRITE at $F0C00000 WRITE 1 to SDA LONG WRITE at $F0400000 WRITE 1 to SCL Rising edge of SCL LONG WRITE at $F0000000 WRITE 0 to SCL Falling edge of SCL Write 0 LONG WRITE at $F0800000 WRITE 0 to SDA LONG WRITE at $F0400000 WRITE 1 to SCL Rising edge of SCL LONG WRITE at $F0000000 WRITE 0 to SCL Falling edge of SCL ... Repeat for the values 10000 (the last 0 is for write) ACK condition LONG WRITE at $F0400000 WRITE 1 to SCL Rising edge of SCL LONG READ at $F0000000 READ from SDA If =0, its an ACK LONG WRITE at $F0000000 WRITE 0 to SCL Falling edge of SCL WORD ADDRESS DATA (# 3 in this example) Write 0 LONG WRITE at $F0800000 WRITE 0 to SDA LONG WRITE at $F0400000 WRITE 1 to SCL Rising edge of SCL LONG WRITE at $F0000000 WRITE 0 to SCL Falling edge of SCL ... Repeat 5 times Write 1 LONG WRITE at $F0C00000 WRITE 1 to SDA LONG WRITE at $F0400000 WRITE 1 to SCL Rising edge of SCL LONG WRITE at $F0000000 WRITE 0 to SCL Falling edge of SCL ... Repeat 1 time ACK condition LONG WRITE at $F0400000 WRITE 1 to SCL Rising edge of SCL LONG READ at $F0000000 READ from SDA If =0, its an ACK LONG WRITE at $F0000000 WRITE 0 to SCL Falling edge of SCL START condition immediately after ACK LONG WRITE at $F0C00000 WRITE 1 to SDA LONG WRITE at $F0400000 WRITE 1 to SCL Rising edge of SCL LONG WRITE at $F0800000 WRITE 0 to SDA LONG WRITE at $F0000000 WRITE 0 to SCL Falling edge of SCL SLAVE ADDRESS (Read at 1010000) Write 1 LONG WRITE at $F0C00000 WRITE 1 to SDA LONG WRITE at $F0400000 WRITE 1 to SCL Rising edge of SCL LONG WRITE at $F0000000 WRITE 0 to SCL Falling edge of SCL Write 0 LONG WRITE at $F0800000 WRITE 0 to SDA LONG WRITE at $F0400000 WRITE 1 to SCL Rising edge of SCL LONG WRITE at $F0000000 WRITE 0 to SCL Falling edge of SCL ... Repeat same procedure for the values 10001 (the last 1 is for read) ACK condition LONG WRITE at $F0400000 WRITE 1 to SCL Rising edge of SCL LONG READ at $F0000000 READ from SDA If =0, its an ACK LONG WRITE at $F0000000 WRITE 0 to SCL Falling edge of SCL READ WORD DATA Bit#7 LONG WRITE at $F0400000 WRITE 1 to SCL Rising edge of SCL LONG READ at $F0000000 READ from SDA DATA Bit#7 LONG WRITE at $F0000000 WRITE 0 to SCL Falling edge of SCL Bit#6 LONG WRITE at $F0400000 WRITE 1 to SCL Rising edge of SCL LONG READ at $F0000000 READ from SDA DATA Bit#6 LONG WRITE at $F0000000 WRITE 0 to SCL Falling edge of SCL ... Repeat 6 times Clock cycle (NO ACK) LONG WRITE at $F0400000 WRITE 1 to SCL Rising edge of SCL LONG WRITE at $F0000000 WRITE 0 to SCL Falling edge of SCL STOP condition LONG WRITE at $F0800000 WRITE 0 to SDA LONG WRITE at $F0400000 WRITE 1 to SCL Rising edge of SCL LONG WRITE at $F0C00000 WRITE 1 to SDA