I have my project configured to use an external WCO instead of the internal 32 kHz ILO. I am using a 32.768 kHz 10 ppm crystal with a load capacitance of 9 pF. I used the 2 to 1 cap recommendation. My capacitors are 27 pF and 13.5 pF (stacked a 12 pF and a 1.5 pF to get them in parallel). All traces are short and equal in length.
I have the same project running on 2 boards and have my EXT_int pins tied together with a pull down. I power up both boards at the same time and then pull the EXT_int pin high to sync up the one second outputs I am generating with the watchdog interrupts. I am looking at the onesecpulse output from both boards on my scope. After I bring the EXT_int line high both of the onesecpulse output rising edges are aligned. After 10 mins they are drifting 50 ms from each other. This would give 300 ms in an hour and in a few hours they would be off by a second and in a month 216 s.
I started with what I thought was a 32.768 kHz 5 ppm crystal with a load capacitance of 12.5 pF. My capacitors were 36 pF and 18 pF. I was getting 14.8 ms in 10 mins and 44 ms of drift in 30 minutes with it. Which was still more than I was expecting. Digikey and the datasheet had the part listed as 5 ppm but when I went to the ECS website and searched for the part it was listed as 20 ppm but in the datasheet I downloaded from them it was listed as 5 ppm. So, I had a 10 ppm crystal available to try and figured it would be better than the results I was getting with this one but instead it was 3-4 times worse.
From a 20 ppm crystal I was expecting approximately 52 s of drift in a month, 1.2 ms in a minute, 12 ms in 10 mins, and 36 ms in 30 mins. At room temp.
This is a pretty basic project with just the WCO, watchdog, and some I/O. Am I missing something in the config for the WCO?