Let's first stick to the procedure Lars described and see if we can figure out what he meant.

In principle, he is trying to create a better linearization for the ADC TIC input values.

I think that the first part of the procedure should be to set the tc to 4, the TIC_offset to 500 and wait until you have a lock. I think that the tc at 4 is important because it eliminates the filtering in the control loop. A tried a higher tc but that takes hours to settle.

Now set the TIC_offset to 1,000.

I think this means that the ADC will now be forced to work at the top of its 8-bit 1,024 max range, rather than in the middle (at 500).

The ns data will therefore jump from around 0 to -500, the inverse of the additional offset from +500.

The controlling loop will now try to get the ns numbers back to around 0 again.

Wait for the ns and filtx10 data to stabilize. With a tc at 4, this should not take more than a minute or so.

The ns values should on average be around 0 again, and the filtx10 should now be around 10,000. (1,000 x 10)

Save the data from a minute or so after the data stabilized and put it in a spreadsheet.

Lars writes that "

*With a TIC_offset of 1,000, the GPSDO will go between min and max if the max ADC is less than 1,000. The filtx10 values will give you the min and max.*"

I interpreted that as follows.

Record all numbers below 10,000 (the min) and all numbers above 10,000 (the max).

These numbers are at the highest range of the ADC, and so in the most linear region.

Obtain the average of the two sets.

In my case for the Trimble, the average number below 10,000 was 9,889, for my Bliley 9,878

The average of the numbers above 10,000 was 10,181 for the Trimble and 10,146 for the Bliley.

I calculated Mike's numbers to be 9895 and 10194.

So far so good I think.

The challenge is to convert these numbers to the valid min and max values.

The min values can only be between 1-500 to become 0.1 to 50.

The max values can only be between 800-1023.

I tried it several ways, but I can't figure it out how to massage the obtained numbers so I can put them in as min/max.

Because filtx10 is multiplied by ten when there is no lock, you could divide the numbers by 10. This would than be a true representation of the ADC input at an offset of 1,000. However, the min numbers will already be divided by 10.

The Trimble number for min would then become 988, but you can't input that.

The max number would become 1,018 and that would only just fit.

You could take 10,000 as the mid point, in which case the min numbers become 10,000 - 9889 = 122.

The max number would then be 10,146 - 10,000 = 146, but that number cannot be used.

Another thought (very far fetched!) I have is that Lars maybe meant to get the min value with a TIC-offset of 500. The lowest filtx10 value would then always be below 500, which is the valid min range. You should then only obtain the max value with a TIC_offset of 1,000, in which case the max will always be in the valid max range.

Anybody?