Back from a little break (dedicated, among other things, to
[ Show youtube player ], which provided me with some relaxing distraction from this matter).
I looked again and at a bit further into the log...
Code:
SCL SDA operation cycle
-----------------------------------------------------------------------------
* INITIALIZE
28-077 [98 062-111]: Direction write: 00->c0 o o
28-077 [98 062-111]: Data write: c0->c0 (c0) 1 1
* START
28-077 [98 108-111]: I2C START
28-077 [98 108-111]: Data write: c0->80 (80) 1 0 start
* ADDRESS MEMORY (for write)
28-077 [98 167-111]: Data write: 80->00 (00) 0 0 1v
28-077 [98 221-111]: Data write: 00->40 (40) 0 1
28-077 [98 041-112]: Data write: 40->c0 (c0) 1 1 send 1 1^
28-077 [98 074-112]: Data write: c0->40 (40) 0 1
28-077 [98 104-112]: Data write: 40->00 (00) 0 0
28-077 [98 134-112]: Data write: 00->80 (80) 1 0 send 0 2^
28-077 [98 154-112]: Data write: 80->00 (00) 0 0
28-077 [98 188-112]: Data write: 00->40 (40) 0 1
28-077 [98 219-112]: Data write: 40->c0 (c0) 1 1 send 1 3^
28-077 [98 012-113]: Data write: c0->40 (40) 0 1
28-077 [98 046-113]: Data write: 40->00 (00) 0 0
28-077 [98 073-113]: Data write: 00->80 (80) 1 0 send 0 4^
28-077 [98 102-113]: Data write: 80->00 (00) 0 0
28-077 [98 132-113]: Data write: 00->00 (00) 0 0
28-077 [98 162-113]: Data write: 00->80 (80) 1 0 send 0 5^
28-077 [98 187-113]: Data write: 80->00 (00) 0 0
28-077 [98 217-113]: Data write: 00->00 (00) 0 0
28-077 [98 020-114]: Data write: 00->80 (80) 1 0 send 0 6^
28-077 [98 040-114]: Data write: 80->00 (00) 0 0
28-077 [98 074-114]: Data write: 00->00 (00) 0 0
28-077 [98 101-114]: Data write: 00->80 (80) 1 0 send 0 7^
28-077 [98 130-114]: Data write: 80->00 (00) 0 0
28-077 [98 160-114]: Data write: 00->00 (00) 0 0
28-077 [98 190-114]: Data write: 00->80 (80) 1 0 send 0 8^
* GET ACK
28-077 [98 218-114]: Direction write: c0->80 o i
28-077 [98 218-114]: Data write: 80->00 (40) 0 * 9v
28-077 [98 041-115]: I2C device address 0xa0
28-077 [98 041-115]: Data write: 40->80 (c0) 1 * 9^
28-077 [98 074-115]: Direction read: 80 o i
28-077 [98 074-115]: Data read: 00 * 0 get ACK
* ???
28-077 [98 082-115]: Data write: c0->00 (40) 0 * ? 10v
28-077 [98 093-115]: Data write: 40->00 (40) 0 * ?
* ADDRESS OFFSET
28-077 [98 128-115]: Direction write: 80->c0 o o
28-077 [98 128-115]: Data write: 40->00 (00) 0 0
28-077 [98 165-115]: Data write: 00->80 (80) 1 0 10^
28-077 [98 198-115]: Data write: 80->00 (00) 0 0
28-078 [98 005-116]: Data write: 00->00 (00) 0 0
28-078 [98 032-116]: Data write: 00->80 (80) 1 0 11
28-078 [98 061-116]: Data write: 80->00 (00) 0 0
28-078 [98 091-116]: Data write: 00->00 (00) 0 0
28-078 [98 121-116]: Data write: 00->80 (80) 1 0 12
28-078 [98 146-116]: Data write: 80->00 (00) 0 0
28-078 [98 176-116]: Data write: 00->00 (00) 0 0
28-078 [98 206-116]: Data write: 00->80 (80) 1 0 13
28-078 [98 226-116]: Data write: 80->00 (00) 0 0
28-078 [98 033-117]: Data write: 00->00 (00) 0 0
28-078 [98 060-117]: Data write: 00->80 (80) 1 0 14
28-078 [98 089-117]: Data write: 80->00 (00) 0 0
28-078 [98 119-117]: Data write: 00->00 (00) 0 0
28-078 [98 149-117]: Data write: 00->80 (80) 1 0 15
28-078 [98 174-117]: Data write: 80->00 (00) 0 0
28-078 [98 204-117]: Data write: 00->00 (00) 0 0
28-078 [98 007-118]: Data write: 00->80 (80) 1 0 16
28-078 [98 027-118]: Data write: 80->00 (00) 0 0
28-078 [98 061-118]: Data write: 00->00 (00) 0 0
28-078 [98 088-118]: Data write: 00->80 (80) 1 0 17
28-078 [98 170-118]: I2C device address 0x00 (Address 0000)
* GET ACK
28-078 [98 119-118]: Direction write: c0->80 o i
28-078 [98 119-118]: Data write: 80->00 (40) 0 0
28-078 [98 170-118]: Data write: 40->80 (c0) 1 0 18
28-078 [98 207-118]: Direction read: 80
28-078 [98 207-118]: Data read: 00 0 0 get ACK
* RESTART
28-078 [98 211-118]: Data write: c0->00 (40) 0 * 19v
28-078 [98 001-119]: Direction write: 80->c0 o o
28-078 [98 001-119]: Data write: 40->c0 (c0) 1 1 19^ extra cycle
28-078 [98 047-119]: Data write: c0->80 (80) 1 0
28-078 [98 047-119]: I2C START
* ADDRESS MEMORY (for read)
28-078 [98 101-119]: Data write: 80->00 (00) 0 0 20v
28-078 [98 135-119]: Data write: 00->40 (40) 0 1
28-078 [98 182-119]: Data write: 40->c0 (c0) 1 1 20^
28-078 [98 215-119]: Data write: c0->40 (40) 0 1 21v
28-078 [98 018-120]: Data write: 40->00 (00) 0 0
28-078 [98 048-120]: Data write: 00->80 (80) 1 0 21^
28-078 [98 068-120]: Data write: 80->00 (00) 0 0 22v
28-079 [98 102-120]: Data write: 00->40 (40) 0 1
28-079 [98 133-120]: Data write: 40->c0 (c0) 1 1 22^
28-079 [98 153-120]: Data write: c0->40 (40) 0 1 23v
28-079 [98 187-120]: Data write: 40->00 (00) 0 0
28-079 [98 214-120]: Data write: 00->80 (80) 1 0 23^
28-079 [98 016-121]: Data write: 80->00 (00) 0 0 24v
28-079 [98 046-121]: Data write: 00->00 (00) 0 0
28-079 [98 076-121]: Data write: 00->80 (80) 1 0 24^
28-079 [98 101-121]: Data write: 80->00 (00) 0 0 25v
28-079 [98 131-121]: Data write: 00->00 (00) 0 0
28-079 [98 161-121]: Data write: 00->80 (80) 1 0 25^
28-079 [98 181-121]: Data write: 80->00 (00) 0 0 26v
28-079 [98 215-121]: Data write: 00->00 (00) 0 0
28-079 [98 015-122]: Data write: 00->80 (80) 1 0 26^
28-079 [98 044-122]: Data write: 80->00 (00) 0 0 27v
28-079 [98 078-122]: Data write: 00->40 (40) 0 1
28-079 [98 105-122]: Data write: 40->c0 (c0) 1 1 27^
* GET ACK
28-079 [98 137-122]: Direction write: c0->80 o i
28-079 [98 137-122]: Data write: c0->40 (40) 0 * 28v
28-079 [98 188-122]: Data write: 40->c0 (c0) 1 * 28^
28-079 [98 224-122]: Direction read: 80
28-079 [98 224-122]: Data read: 00 0 0 get ACK
* ???
28-079 [98 001-123]: Data write: c0->00 (40) 0 * 29v
28-079 [98 019-123]: Data write: 40->00 (40) 0 *
28-079 [98 021-123]: Data write: 40->00 (40) 0 *
* READ BYTE 0
28-079 [98 059-123]: I2C RX byte 0000 0x00
28-079 [98 059-123]: Data write: 40->80 (c0) 1 * 29^
28-079 [98 092-123]: Direction read: 80
28-079 [98 092-123]: Data read: 00
28-079 [98 099-123]: Data write: c0->00 (40)
28-079 [98 122-123]: Data write: 40->80 (c0) 31^
28-079 [98 143-123]: Direction read: 80
28-079 [98 143-123]: Data read: 00
28-079 [98 147-123]: Data write: c0->00 (40)
28-079 [98 172-123]: Data write: 40->80 (c0) 32^
28-079 [98 192-123]: Direction read: 80
28-079 [98 192-123]: Data read: 00
28-079 [98 196-123]: Data write: c0->00 (40)
28-079 [98 217-123]: Data write: 40->80 (c0) 33^
28-079 [98 011-124]: Direction read: 80
28-079 [98 011-124]: Data read: 00
28-079 [98 015-124]: Data write: c0->00 (40)
28-079 [98 040-124]: Data write: 40->80 (c0) 34^
28-080 [98 060-124]: Direction read: 80
28-080 [98 060-124]: Data read: 00
28-080 [98 064-124]: Data write: c0->00 (40)
28-080 [98 085-124]: Data write: 40->80 (c0) 35^
28-080 [98 106-124]: Direction read: 80
28-080 [98 106-124]: Data read: 00
28-080 [98 110-124]: Data write: c0->00 (40)
28-080 [98 135-124]: Data write: 40->80 (c0) 36^
28-080 [98 155-124]: Direction read: 80
28-080 [98 155-124]: Data read: 00
28-080 [98 159-124]: Data write: c0->00 (40)
28-080 [98 180-124]: Data write: 40->80 (c0) 37^
28-080 [98 201-124]: Direction read: 80
28-080 [98 201-124]: Data read: 00
* SEND ACK
28-080 [98 208-124]: Data write: c0->00 (40) 0 * 38v
28-080 [98 048-125]: Direction write: 80->c0 o o
28-080 [98 048-125]: Data write: 40->00 (00) 0 0
28-080 [98 085-125]: I2C ACKED
28-080 [98 085-125]: Data write: 00->80 (80) 1 0 38^
* ???
28-080 [98 124-125]: Data write: 80->00 (00) 0 0 39v
28-080 [98 135-125]: Direction write: c0->80 o i
28-080 [98 135-125]: Data write: 00->00 (40) 0 *
28-080 [98 135-125]: Data write: 40->00 (40) 0 *
* READ BYTE 1
28-080 [98 163-125]: I2C RX byte 0001 0x56
28-080 [98 163-125]: Data write: 40->80 (c0) 1 * 39^
28-080 [98 184-125]: Direction read: 80
28-080 [98 184-125]: Data read: 00
28-080 [98 188-125]: Data write: c0->00 (40)
28-080 [98 213-125]: Data write: 40->80 (c0)
28-080 [98 006-126]: Direction read: 80
28-080 [98 006-126]: Data read: c0
28-080 [98 010-126]: Data write: c0->00 (40)
28-080 [98 032-126]: Data write: 40->80 (c0)
28-080 [98 057-126]: Direction read: 80
28-080 [98 057-126]: Data read: 00
28-080 [98 065-126]: Data write: c0->00 (40)
28-080 [98 086-126]: Data write: 40->80 (c0)
28-080 [98 107-126]: Direction read: 80
28-080 [98 107-126]: Data read: c0
28-080 [98 111-126]: Data write: c0->00 (40)
28-080 [98 136-126]: Data write: 40->80 (c0)
28-080 [98 157-126]: Direction read: 80
28-080 [98 157-126]: Data read: 00
28-080 [98 161-126]: Data write: c0->00 (40)
28-080 [98 186-126]: Data write: 40->80 (c0)
28-080 [98 206-126]: Direction read: 80
28-080 [98 206-126]: Data read: c0
28-080 [98 210-126]: Data write: c0->00 (40)
28-080 [98 005-127]: Data write: 40->80 (c0)
28-080 [98 030-127]: Direction read: 80
28-080 [98 030-127]: Data read: c0
28-081 [98 038-127]: Data write: c0->00 (40)
28-081 [98 059-127]: Data write: 40->80 (c0)
28-081 [98 080-127]: Direction read: 80
28-081 [98 080-127]: Data read: 00
28-081 [98 084-127]: Data write: c0->00 (40)
28-081 [98 147-127]: Direction write: 80->c0
28-081 [98 147-127]: Data write: 40->00 (00)
28-081 [98 175-127]: I2C ACKED
... and noticed again that after the ACKs some extra-protocol writes are performed (not always in the same way), that the RESTART condition is performed by means of the extra cycle, that sometimes data is set/cleared together with setting the input/output, and that the flood of direction read/writes reported by Toni (and filtered out by the log settings) is due to the fact that all operations are performed as longwords spanning both the data and the direction registers.
(Continued in the next post.)