The datasheet for the ADIS16505 specifies that the DEC_RATE register requires up to 30us after writing changes to indicate the updated value during readback.
I have implemented the appropriate 30us delay in my code between writing the value and reading it back to verify the transaction was successful, however the readback value is incorrect. Even doubling the delay to 60us is not sufficient.
I know for sure the write was successful because if I repeat the register read some time later, the value is correct. This behaviour can be observed in the scope capture below.
I first write the value 0x0004 to register 0x64 (MOSI = 0xE404, 0xE500) followed by a 60us delay. Then I read back register 0x64 (MOSI = 0x6400) expecting MISO = 0x0004 however instead I get MISO = 0x0000. Over 100us later I repeat the readback of register 0x64 and this time MISO matches the expected 0x0004.
What is the proper sequence and timing to perform a write-verify operation?