Hi,
After writing 64 bits to the time offset register (0x920), the high 32 bits of the time register (via 0x910) are corrupted such that the high 32 of 0x910 is set to the corresponding high 32 bits of the write. The same writes applied to an ET1100 (Beckhoff EK1814) result in the expected preservation of the high 32 bits of the local counter.
Using the command line tools of the Igh master:
++ ethercat reg_read -p 0 -t int64 0x910 <-- ET1100
0x00055ee9ec4c30e5 1511733668360421
++ ethercat reg_write -p 0 -t int64 0x920 0
++ ethercat reg_read -p 0 -t int64 0x910
0x00055ee9ed9b6a0a 1511733690329610
++ ethercat reg_read -p 1 -t int64 0x910 <-- AM3359
0x000000620ca0f40f 421118669839
++ ethercat reg_write -p 1 -t int64 0x920 0
++ ethercat reg_read -p 1 -t int64 0x910
0x000000000e2e8ee0 237932256
See attached pcap indexes 3152, 3172, 3204.
Whatever appears in the upper 32 bits of the FPWR 0x920 then appears in the upper 32 of 0x910, even if the upper 32 bits of 0x910 were permitted to overflow (wait more than 5 seconds from reset).
Since the value programmed to the offset register depends on the local time register increasing monotonically, this results in a DC sync failure.
Also, writing 32 bits to 0x914 appears to stick, which is perhaps contrary to ET1100 datasheet 3.48.2 (PP II-59).
And:
ethercat reg_write -p 1 -t int8 0x920 0 -- affects 0x914:917
ethercat reg_write -p 1 -t int8 0x921 0 -- affects 0x914:917
ethercat reg_write -p 1 -t int8 0x922 0 -- affects 0x914:917
ethercat reg_write -p 1 -t int8 0x923 0 -- affects 0x914:917
ethercat reg_write -p 1 -t int8 0x924 0 -- DOES NOT affect 0x914:917
------------------------------------
TI Versions:
TI Industrial SDK Version : 1.0.0.7
Device name : AM3358
Chip Revision : AM335x ES1.0 [PG1]
ARM Clock rate : 600
Device Type : EtherCAT Device
TI EtherCAT Demo Application Build - 2.4.0 - running on ICE
SYNC0 task started