Hi!
I have many slaves based on EtherCAT PRU Rev: 2 Build: 4F0
They are connected as ring for redundancy.
My goal is to synchronize all of them. For validating synchronization I am looking at SYNC0 signals from several slaves on oscilloscope.
On slaves activation I am setting system time offset (0x0920) and system time delay (0x0928) according to run-time calculation in master, and I achieve a good synchronization.
On any topology change I recalculate propagation delays and set them for all slaves in register 0x0928. I write also to register 0x0930 per note in register 0x0928.
Any write to register 0x0928 works fine, I can read back the written value and it is correct.
However, only first written value affects SYNC0 position. Second write to 0x0928 with different value doesn't affect SYNC0 anymore.
If I power cycle some slave, I see that same value in 0x0928 causes SYNC0 of this slave to be in sync with other slaves.
Power cycle of slaves on topology change is not an option for me. I need to support topology changes (i.e., for a given configuration, disconnect/reconnect cable at any location, power off/on any slave) without losing sync of remaining slaves.
Other slaves that are based on ET1100 work fine.
TL;DR: register 0x0928 on PRU appears to be "affect System Time only once on first change".
Is there any workaround for this issue?
Thanks,
Michael